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

Merged
freemo merged 1 commits 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 added the
Type
Feature
label 2026-03-03 00:50:25 +00:00
freemo force-pushed feature/m6-devcontainer-handler from 76540f7793 to 279c6112ae 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
freemo added the
State
Completed
label 2026-03-04 00:41:37 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cleveragents/cleveragents-core#520