feat(resource): add cloud infrastructure resources #669

Merged
freemo merged 1 commit from feature/m7-post-resource-cloud into master 2026-03-17 17:22:14 +00:00
Owner

Summary

  • Add cloud infrastructure resource types (aws, gcp, azure) with credential fields, region/tenant metadata, and stubbed sandbox strategies
  • Implement CloudResourceHandler with credential resolution from environment variables and profile names, with no secrets logged
  • Register cloud types in bootstrap_builtin_types() with sandbox_strategy = "none"

Key Changes

  • New: src/cleveragents/resource/handlers/cloud.py - CloudResourceHandler with aws/gcp/azure type definitions, credential resolution, and stubbed sandbox strategies
  • Modified: src/cleveragents/domain/models/core/resource_type.py - Add aws, gcp, azure to BUILTIN_NAMES
  • Modified: src/cleveragents/application/services/resource_registry_service.py - Register cloud types in _BUILTIN_TYPES
  • Modified: src/cleveragents/resource/handlers/__init__.py - Export CloudResourceHandler
  • New: features/cloud_resources.feature + step definitions - 29 BDD test scenarios
  • New: robot/cloud_resources.robot + helper - 9 Robot integration tests
  • New: benchmarks/cloud_resource_bench.py - ASV performance benchmarks
  • New: docs/reference/cloud_resources.md - Documentation

Testing

  • All 29 Behave BDD scenarios pass
  • All 9 Robot Framework integration tests pass
  • Full unit test suite (9757 scenarios) passes with 0 failures
  • Lint (ruff) and typecheck (pyright strict) pass with 0 errors

Closes #343

## Summary - Add cloud infrastructure resource types (aws, gcp, azure) with credential fields, region/tenant metadata, and stubbed sandbox strategies - Implement `CloudResourceHandler` with credential resolution from environment variables and profile names, with no secrets logged - Register cloud types in `bootstrap_builtin_types()` with `sandbox_strategy = "none"` ## Key Changes - **New**: `src/cleveragents/resource/handlers/cloud.py` - CloudResourceHandler with aws/gcp/azure type definitions, credential resolution, and stubbed sandbox strategies - **Modified**: `src/cleveragents/domain/models/core/resource_type.py` - Add aws, gcp, azure to BUILTIN_NAMES - **Modified**: `src/cleveragents/application/services/resource_registry_service.py` - Register cloud types in _BUILTIN_TYPES - **Modified**: `src/cleveragents/resource/handlers/__init__.py` - Export CloudResourceHandler - **New**: `features/cloud_resources.feature` + step definitions - 29 BDD test scenarios - **New**: `robot/cloud_resources.robot` + helper - 9 Robot integration tests - **New**: `benchmarks/cloud_resource_bench.py` - ASV performance benchmarks - **New**: `docs/reference/cloud_resources.md` - Documentation ## Testing - All 29 Behave BDD scenarios pass - All 9 Robot Framework integration tests pass - Full unit test suite (9757 scenarios) passes with 0 failures - Lint (ruff) and typecheck (pyright strict) pass with 0 errors Closes #343
freemo added this to the v3.6.0 milestone 2026-03-10 07:01:02 +00:00
freemo force-pushed feature/m7-post-resource-cloud from c061ebb16b
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 16s
CI / quality (pull_request) Successful in 22s
CI / security (pull_request) Successful in 34s
CI / typecheck (pull_request) Successful in 37s
CI / unit_tests (pull_request) Successful in 2m45s
CI / docker (pull_request) Successful in 39s
CI / integration_tests (pull_request) Successful in 3m26s
CI / coverage (pull_request) Successful in 5m55s
CI / benchmark-regression (pull_request) Successful in 31m57s
to 1c6ecd27f2
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 18s
CI / typecheck (pull_request) Successful in 37s
CI / security (pull_request) Successful in 39s
CI / unit_tests (pull_request) Successful in 2m49s
CI / integration_tests (pull_request) Failing after 3m26s
CI / docker (pull_request) Successful in 45s
CI / coverage (pull_request) Successful in 5m8s
CI / benchmark-regression (pull_request) Has been cancelled
2026-03-10 18:01:35 +00:00
Compare
freemo force-pushed feature/m7-post-resource-cloud from 1c6ecd27f2
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 18s
CI / typecheck (pull_request) Successful in 37s
CI / security (pull_request) Successful in 39s
CI / unit_tests (pull_request) Successful in 2m49s
CI / integration_tests (pull_request) Failing after 3m26s
CI / docker (pull_request) Successful in 45s
CI / coverage (pull_request) Successful in 5m8s
CI / benchmark-regression (pull_request) Has been cancelled
to 425bb774b7
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 16s
CI / security (pull_request) Successful in 33s
CI / typecheck (pull_request) Successful in 36s
CI / unit_tests (pull_request) Successful in 2m24s
CI / docker (pull_request) Successful in 39s
CI / integration_tests (pull_request) Successful in 3m18s
CI / coverage (pull_request) Successful in 5m0s
CI / benchmark-regression (pull_request) Successful in 31m30s
2026-03-10 18:27:57 +00:00
Compare
freemo self-assigned this 2026-03-11 05:46:44 +00:00
Author
Owner

PM Compliance Update (Day 31):

Fixed by PM:

  • Added Type/Feature label
  • Added assignee (@freemo)
  • Added closing keyword to PR body

Remaining issue: Merge conflict. Please rebase against current develop branch (17 PRs merged Days 30-31).

Priority: M6 work — continue at current pace.

**PM Compliance Update (Day 31)**: Fixed by PM: - Added `Type/Feature` label - Added assignee (@freemo) - Added closing keyword to PR body **Remaining issue**: Merge conflict. Please rebase against current `develop` branch (17 PRs merged Days 30-31). **Priority**: M6 work — continue at current pace.
Author
Owner

PM Status — Day 32

Status: CONFLICTED — needs rebase. Medium priority (M7).

PR: Cloud infrastructure resource types (AWS/GCP/Azure). M7 (v3.6.0), due Mar 28. Author: @freemo. 1 comment, 0 reviews.

Notes: Adds 3 cloud resource types with credential resolution from env vars. sandbox_strategy=none is appropriate for cloud resources. Security-sensitive area (credential handling) — needs careful code review.

Action Required: @freemo — Rebase when convenient. Labels have Priority/Medium, State/Unverified, Type/Feature. Missing MoSCoW (Should have), Points (8).

## PM Status — Day 32 **Status**: CONFLICTED — needs rebase. Medium priority (M7). **PR**: Cloud infrastructure resource types (AWS/GCP/Azure). M7 (v3.6.0), due Mar 28. Author: @freemo. 1 comment, 0 reviews. **Notes**: Adds 3 cloud resource types with credential resolution from env vars. `sandbox_strategy=none` is appropriate for cloud resources. Security-sensitive area (credential handling) — needs careful code review. **Action Required**: **@freemo** — Rebase when convenient. Labels have Priority/Medium, State/Unverified, Type/Feature. Missing MoSCoW (Should have), Points (8).
Author
Owner

Rebase Required

@freemo — This PR has merge conflicts with master. Please rebase onto the latest master and force-push. See also: #668, #703, #708, #713, #720, #722 (all need rebase).

## Rebase Required @freemo — This PR has merge conflicts with `master`. Please rebase onto the latest `master` and force-push. See also: #668, #703, #708, #713, #720, #722 (all need rebase).
freemo left a comment

PM Day 36: Cloud infrastructure resources. Closes #343. M7 scope. Merge conflict. @freemo rebase needed.

PM Day 36: Cloud infrastructure resources. Closes #343. M7 scope. Merge conflict. @freemo rebase needed.
freemo force-pushed feature/m7-post-resource-cloud from 425bb774b7
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 14s
CI / build (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 16s
CI / security (pull_request) Successful in 33s
CI / typecheck (pull_request) Successful in 36s
CI / unit_tests (pull_request) Successful in 2m24s
CI / docker (pull_request) Successful in 39s
CI / integration_tests (pull_request) Successful in 3m18s
CI / coverage (pull_request) Successful in 5m0s
CI / benchmark-regression (pull_request) Successful in 31m30s
to 17d2f7c76d
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Failing after 15s
CI / build (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 30s
CI / typecheck (pull_request) Successful in 46s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / security (pull_request) Successful in 56s
CI / e2e_tests (pull_request) Successful in 1m25s
CI / unit_tests (pull_request) Successful in 3m22s
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 3m53s
2026-03-16 22:49:56 +00:00
Compare
freemo force-pushed feature/m7-post-resource-cloud from 17d2f7c76d
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Failing after 15s
CI / build (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 30s
CI / typecheck (pull_request) Successful in 46s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / security (pull_request) Successful in 56s
CI / e2e_tests (pull_request) Successful in 1m25s
CI / unit_tests (pull_request) Successful in 3m22s
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 3m53s
to 5abf9fa52a
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 19s
CI / build (pull_request) Successful in 23s
CI / quality (pull_request) Successful in 38s
CI / typecheck (pull_request) Successful in 41s
CI / security (pull_request) Successful in 53s
CI / e2e_tests (pull_request) Successful in 1m24s
CI / unit_tests (pull_request) Successful in 3m10s
CI / integration_tests (pull_request) Successful in 3m31s
CI / docker (pull_request) Successful in 56s
CI / coverage (pull_request) Successful in 7m22s
CI / benchmark-regression (pull_request) Successful in 37m40s
2026-03-16 22:59:14 +00:00
Compare
freemo force-pushed feature/m7-post-resource-cloud from 5abf9fa52a
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 19s
CI / build (pull_request) Successful in 23s
CI / quality (pull_request) Successful in 38s
CI / typecheck (pull_request) Successful in 41s
CI / security (pull_request) Successful in 53s
CI / e2e_tests (pull_request) Successful in 1m24s
CI / unit_tests (pull_request) Successful in 3m10s
CI / integration_tests (pull_request) Successful in 3m31s
CI / docker (pull_request) Successful in 56s
CI / coverage (pull_request) Successful in 7m22s
CI / benchmark-regression (pull_request) Successful in 37m40s
to 2bd096c027
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 23s
CI / build (pull_request) Successful in 35s
CI / quality (pull_request) Successful in 41s
CI / security (pull_request) Successful in 41s
CI / typecheck (pull_request) Successful in 49s
CI / integration_tests (pull_request) Successful in 3m26s
CI / unit_tests (pull_request) Successful in 4m36s
CI / docker (pull_request) Successful in 1m5s
CI / coverage (pull_request) Successful in 5m4s
CI / benchmark-regression (pull_request) Successful in 32m37s
2026-03-17 04:18:34 +00:00
Compare
freemo force-pushed feature/m7-post-resource-cloud from 2bd096c027
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 23s
CI / build (pull_request) Successful in 35s
CI / quality (pull_request) Successful in 41s
CI / security (pull_request) Successful in 41s
CI / typecheck (pull_request) Successful in 49s
CI / integration_tests (pull_request) Successful in 3m26s
CI / unit_tests (pull_request) Successful in 4m36s
CI / docker (pull_request) Successful in 1m5s
CI / coverage (pull_request) Successful in 5m4s
CI / benchmark-regression (pull_request) Successful in 32m37s
to 7fcdd01953
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 21s
CI / lint (pull_request) Failing after 22s
CI / quality (pull_request) Successful in 31s
CI / security (pull_request) Successful in 45s
CI / typecheck (pull_request) Successful in 52s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / unit_tests (pull_request) Successful in 3m5s
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 3m33s
CI / e2e_tests (pull_request) Successful in 4m0s
2026-03-17 16:44:10 +00:00
Compare
freemo scheduled this pull request to auto merge when all checks succeed 2026-03-17 16:44:45 +00:00
freemo force-pushed feature/m7-post-resource-cloud from 7fcdd01953
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 21s
CI / lint (pull_request) Failing after 22s
CI / quality (pull_request) Successful in 31s
CI / security (pull_request) Successful in 45s
CI / typecheck (pull_request) Successful in 52s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / unit_tests (pull_request) Successful in 3m5s
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 3m33s
CI / e2e_tests (pull_request) Successful in 4m0s
to c65e8a5285
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 16s
CI / lint (pull_request) Successful in 17s
CI / quality (pull_request) Successful in 29s
CI / typecheck (pull_request) Successful in 59s
CI / security (pull_request) Successful in 59s
CI / unit_tests (pull_request) Successful in 3m9s
CI / integration_tests (pull_request) Successful in 3m34s
CI / e2e_tests (pull_request) Successful in 3m54s
CI / docker (pull_request) Successful in 55s
CI / coverage (pull_request) Successful in 6m1s
CI / build (push) Successful in 15s
CI / lint (push) Successful in 16s
CI / quality (push) Successful in 27s
CI / typecheck (push) Successful in 38s
CI / benchmark-regression (push) Has been skipped
CI / security (push) Successful in 48s
CI / unit_tests (push) Successful in 3m14s
CI / integration_tests (push) Successful in 3m30s
CI / docker (push) Successful in 56s
CI / e2e_tests (push) Successful in 4m43s
CI / coverage (push) Successful in 6m1s
CI / benchmark-publish (push) Successful in 19m50s
CI / benchmark-regression (pull_request) Successful in 37m17s
2026-03-17 17:15:10 +00:00
Compare
freemo merged commit c65e8a5285 into master 2026-03-17 17:22:14 +00:00
freemo deleted branch feature/m7-post-resource-cloud 2026-03-17 17:22:14 +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.

Blocks
Reference
cleveragents/cleveragents-core!669
No description provided.