feat(resource): add devcontainer resource type and auto-discovery handler #520

Merged
freemo merged 1 commit from feature/m6-devcontainer-handler into master 2026-03-03 03:14:48 +00:00
Owner

Summary

  • Added container-instance, devcontainer-instance, and devcontainer-file built-in resource types to the resource registry
  • Implemented DevcontainerHandler with snapshot sandbox strategy and auto-discovery logic for .devcontainer/ directories
  • Wired handler into the resolver and added CLI support with --path and --image flags
  • Added Behave tests (22 scenarios), Robot tests (10 cases), ASV benchmarks, and reference documentation

Details

This PR implements the devcontainer resource integration described in ADR-043 and the resource type inheritance from ADR-042. The devcontainer-instance type inherits from container-instance and is auto-discovered when git-checkout or fs-directory resources contain .devcontainer/devcontainer.json or root .devcontainer.json files. JSON validation ensures invalid configs are skipped gracefully.

Files Created

  • src/cleveragents/resource/handlers/devcontainer.py — DevcontainerHandler
  • src/cleveragents/resource/handlers/discovery.py — Auto-discovery module
  • features/devcontainer_handler.feature — Behave scenarios
  • features/steps/devcontainer_handler_steps.py — Step definitions
  • robot/devcontainer_handler.robot — Robot integration tests
  • robot/helper_devcontainer_handler.py — Robot helper
  • benchmarks/devcontainer_handler_bench.py — ASV benchmarks
  • docs/reference/devcontainer_resources.md — Reference documentation

Files Modified

  • src/cleveragents/domain/models/core/resource_type.py — Added types to BUILTIN_NAMES
  • src/cleveragents/application/services/resource_registry_service.py — Added built-in type definitions
  • src/cleveragents/resource/handlers/__init__.py — Exported DevcontainerHandler
  • src/cleveragents/cli/commands/resource.py — Added --image flag
  • CHANGELOG.md — Added entry

Quality Gates

  • Lint: PASS
  • Typecheck: PASS (0 errors, Pyright strict)
  • Unit tests: PASS (22 new scenarios, all passing; pre-existing failures unchanged)
  • Integration tests: PASS (10 new test cases, all passing; pre-existing failures unchanged)
  • Coverage: 97%
  • Benchmarks: Validated

Closes #511

## Summary - Added `container-instance`, `devcontainer-instance`, and `devcontainer-file` built-in resource types to the resource registry - Implemented `DevcontainerHandler` with snapshot sandbox strategy and auto-discovery logic for `.devcontainer/` directories - Wired handler into the resolver and added CLI support with `--path` and `--image` flags - Added Behave tests (22 scenarios), Robot tests (10 cases), ASV benchmarks, and reference documentation ## Details This PR implements the devcontainer resource integration described in ADR-043 and the resource type inheritance from ADR-042. The `devcontainer-instance` type inherits from `container-instance` and is auto-discovered when `git-checkout` or `fs-directory` resources contain `.devcontainer/devcontainer.json` or root `.devcontainer.json` files. JSON validation ensures invalid configs are skipped gracefully. ### Files Created - `src/cleveragents/resource/handlers/devcontainer.py` — DevcontainerHandler - `src/cleveragents/resource/handlers/discovery.py` — Auto-discovery module - `features/devcontainer_handler.feature` — Behave scenarios - `features/steps/devcontainer_handler_steps.py` — Step definitions - `robot/devcontainer_handler.robot` — Robot integration tests - `robot/helper_devcontainer_handler.py` — Robot helper - `benchmarks/devcontainer_handler_bench.py` — ASV benchmarks - `docs/reference/devcontainer_resources.md` — Reference documentation ### Files Modified - `src/cleveragents/domain/models/core/resource_type.py` — Added types to BUILTIN_NAMES - `src/cleveragents/application/services/resource_registry_service.py` — Added built-in type definitions - `src/cleveragents/resource/handlers/__init__.py` — Exported DevcontainerHandler - `src/cleveragents/cli/commands/resource.py` — Added --image flag - `CHANGELOG.md` — Added entry ### Quality Gates - Lint: PASS - Typecheck: PASS (0 errors, Pyright strict) - Unit tests: PASS (22 new scenarios, all passing; pre-existing failures unchanged) - Integration tests: PASS (10 new test cases, all passing; pre-existing failures unchanged) - Coverage: 97% - Benchmarks: Validated Closes #511
freemo added this to the v3.5.0 milestone 2026-03-03 00:14:57 +00:00
freemo force-pushed feature/m6-devcontainer-handler from 76540f7793
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 18s
CI / build (pull_request) Successful in 21s
CI / typecheck (pull_request) Successful in 37s
CI / security (pull_request) Successful in 45s
CI / unit_tests (pull_request) Successful in 2m1s
CI / docker (pull_request) Successful in 42s
CI / integration_tests (pull_request) Successful in 2m58s
CI / coverage (pull_request) Successful in 4m15s
CI / benchmark-regression (pull_request) Successful in 23m35s
to 279c6112ae
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 17s
CI / quality (pull_request) Successful in 17s
CI / security (pull_request) Successful in 34s
CI / typecheck (pull_request) Successful in 34s
CI / unit_tests (pull_request) Successful in 1m48s
CI / docker (pull_request) Successful in 39s
CI / integration_tests (pull_request) Successful in 3m26s
CI / coverage (pull_request) Successful in 4m15s
CI / lint (push) Successful in 13s
CI / quality (push) Successful in 17s
CI / typecheck (push) Successful in 31s
CI / security (push) Successful in 31s
CI / benchmark-regression (push) Has been skipped
CI / build (push) Successful in 17s
CI / unit_tests (push) Successful in 3m1s
CI / integration_tests (push) Successful in 4m28s
CI / docker (push) Successful in 1m1s
CI / coverage (push) Successful in 4m33s
CI / benchmark-publish (push) Successful in 14m26s
CI / benchmark-regression (pull_request) Successful in 25m42s
2026-03-03 03:09:55 +00:00
Compare
freemo scheduled this pull request to auto merge when all checks succeed 2026-03-03 03:10:10 +00:00
freemo merged commit 279c6112ae into master 2026-03-03 03:14:48 +00:00
freemo deleted branch feature/m6-devcontainer-handler 2026-03-03 03:14:49 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core!520
No description provided.