@aws/nx-plugin 1.0.0-rc.8 → 1.0.0-rc.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-THIRD-PARTY +6006 -4000
- package/README.md +16 -96
- package/generators.json +162 -10
- package/migrations.json +206 -0
- package/package.json +40 -21
- package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +295 -0
- package/src/agentcore-gateway/agent-connection/generator.d.ts +19 -0
- package/src/agentcore-gateway/agent-connection/generator.js +95 -0
- package/src/agentcore-gateway/agent-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/agent-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/agent-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/agent-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/agent-connection/schema.json +31 -0
- package/src/agentcore-gateway/attach-upstream.d.ts +49 -0
- package/src/agentcore-gateway/attach-upstream.js +59 -0
- package/src/agentcore-gateway/attach-upstream.js.map +1 -0
- package/src/agentcore-gateway/files/cedar/policies/README.md +61 -0
- package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +26 -0
- package/src/agentcore-gateway/files/project/http/local-dev.ts.template +77 -0
- package/src/agentcore-gateway/files/project/mcp/local-dev.ts.template +134 -0
- package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
- package/src/agentcore-gateway/gateway-connection/generator.js +103 -0
- package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/gateway-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/gateway-connection/schema.json +31 -0
- package/src/agentcore-gateway/generator.d.ts +89 -0
- package/src/agentcore-gateway/generator.js +212 -0
- package/src/agentcore-gateway/generator.js.map +1 -0
- package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
- package/src/agentcore-gateway/mcp-connection/generator.js +61 -0
- package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/mcp-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/mcp-connection/schema.json +31 -0
- package/src/agentcore-gateway/react-connection/__snapshots__/generator.spec.ts.snap +68 -0
- package/src/agentcore-gateway/react-connection/generator.d.ts +19 -0
- package/src/agentcore-gateway/react-connection/generator.js +119 -0
- package/src/agentcore-gateway/react-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/react-connection/schema.d.js +6 -0
- package/src/agentcore-gateway/react-connection/schema.d.js.map +1 -0
- package/src/agentcore-gateway/react-connection/schema.d.ts +13 -0
- package/src/agentcore-gateway/react-connection/schema.json +31 -0
- package/src/agentcore-gateway/schema.d.js +6 -0
- package/src/agentcore-gateway/schema.d.js.map +1 -0
- package/src/agentcore-gateway/schema.d.ts +17 -0
- package/src/agentcore-gateway/schema.json +72 -0
- package/src/agentcore-harness/__snapshots__/generator.spec.ts.snap +238 -0
- package/src/agentcore-harness/files/project/README.md.template +83 -0
- package/src/agentcore-harness/files/project/scripts/chat.ts.template +99 -0
- package/src/agentcore-harness/files/project/src/PROMPT.md.template +16 -0
- package/src/agentcore-harness/generator.d.ts +62 -0
- package/src/agentcore-harness/generator.js +158 -0
- package/src/agentcore-harness/generator.js.map +1 -0
- package/src/agentcore-harness/schema.d.js +8 -0
- package/src/agentcore-harness/schema.d.js.map +1 -0
- package/src/agentcore-harness/schema.d.ts +17 -0
- package/src/agentcore-harness/schema.json +53 -0
- package/src/connection/agent-local-dev.d.ts +49 -0
- package/src/connection/agent-local-dev.js +84 -0
- package/src/connection/agent-local-dev.js.map +1 -0
- package/src/connection/agent-runtime-config.js +9 -14
- package/src/connection/agent-runtime-config.js.map +1 -1
- package/src/connection/gateway-runtime-config.d.ts +19 -0
- package/src/connection/gateway-runtime-config.js +47 -0
- package/src/connection/gateway-runtime-config.js.map +1 -0
- package/src/connection/generator.d.ts +4 -11
- package/src/connection/generator.js +172 -194
- package/src/connection/generator.js.map +1 -1
- package/src/connection/{serve-local.d.ts → local-dev.d.ts} +3 -3
- package/src/connection/local-dev.js +37 -0
- package/src/connection/local-dev.js.map +1 -0
- package/src/connection/scaffold-catalog.d.ts +267 -0
- package/src/connection/scaffold-catalog.js +347 -0
- package/src/connection/scaffold-catalog.js.map +1 -0
- package/src/connection/schema-resolver.d.ts +5 -0
- package/src/connection/schema-resolver.js +27 -0
- package/src/connection/schema-resolver.js.map +1 -0
- package/src/connection/schema.d.js +6 -0
- package/src/connection/schema.d.js.map +1 -0
- package/src/connection/schema.d.ts +1 -0
- package/src/connection/schema.json +5 -0
- package/src/connection/supported-connections.d.ts +116 -0
- package/src/connection/supported-connections.js +163 -0
- package/src/connection/supported-connections.js.map +1 -0
- package/src/index.d.ts +1 -1
- package/src/index.js +2 -5
- package/src/index.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +119 -72
- package/src/infra/app/files/app/README.md.template +8 -4
- package/src/infra/app/files/app/src/main.ts.template +5 -1
- package/src/infra/app/files/app/src/stages/application-stage.ts.template +1 -1
- package/src/infra/app/generator.d.ts +44 -1
- package/src/infra/app/generator.js +195 -127
- package/src/infra/app/generator.js.map +1 -1
- package/src/infra/app/schema.d.js +6 -0
- package/src/infra/app/schema.d.js.map +1 -0
- package/src/infra/app/schema.d.ts +1 -1
- package/src/infra/app/schema.json +5 -0
- package/src/init/generator.d.ts +31 -0
- package/src/init/generator.js +46 -0
- package/src/init/generator.js.map +1 -0
- package/src/init/schema.d.js +6 -0
- package/src/init/schema.d.js.map +1 -0
- package/src/init/schema.d.ts +16 -0
- package/src/init/schema.json +35 -0
- package/src/internal/test-matrix/generator.d.ts +29 -0
- package/src/internal/test-matrix/generator.js +713 -0
- package/src/internal/test-matrix/generator.js.map +1 -0
- package/src/internal/test-matrix/schema.d.js +6 -0
- package/src/internal/test-matrix/schema.d.js.map +1 -0
- package/src/internal/test-matrix/schema.d.ts +12 -0
- package/src/internal/test-matrix/schema.json +21 -0
- package/src/license/config-types.d.ts +2 -2
- package/src/license/config-types.js +5 -3
- package/src/license/config-types.js.map +1 -1
- package/src/license/config.d.ts +12 -3
- package/src/license/config.js +295 -242
- package/src/license/config.js.map +1 -1
- package/src/license/dependency-check/check.d.ts +2 -2
- package/src/license/dependency-check/check.js +51 -46
- package/src/license/dependency-check/check.js.map +1 -1
- package/src/license/dependency-check/collectors/collector.js +41 -71
- package/src/license/dependency-check/collectors/collector.js.map +1 -1
- package/src/license/dependency-check/collectors/npm-collector.js +34 -41
- package/src/license/dependency-check/collectors/npm-collector.js.map +1 -1
- package/src/license/dependency-check/collectors/python-collector.js +61 -62
- package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
- package/src/license/dependency-check/evaluator.d.ts +1 -1
- package/src/license/dependency-check/evaluator.js +91 -74
- package/src/license/dependency-check/evaluator.js.map +1 -1
- package/src/license/dependency-check/executor.js +30 -22
- package/src/license/dependency-check/executor.js.map +1 -1
- package/src/license/dependency-check/pre-approved.d.ts +1 -1
- package/src/license/dependency-check/pre-approved.js +949 -336
- package/src/license/dependency-check/pre-approved.js.map +1 -1
- package/src/license/dependency-check/types.d.ts +1 -1
- package/src/license/dependency-check/types.js +2 -3
- package/src/license/dependency-check/types.js.map +1 -1
- package/src/license/generator.d.ts +1 -1
- package/src/license/generator.js +60 -77
- package/src/license/generator.js.map +1 -1
- package/src/license/index.d.ts +4 -4
- package/src/license/index.js +3 -9
- package/src/license/index.js.map +1 -1
- package/src/license/known-exceptions.d.ts +2 -3
- package/src/license/known-exceptions.js +12 -28
- package/src/license/known-exceptions.js.map +1 -1
- package/src/license/schema.d.js +6 -0
- package/src/license/schema.d.js.map +1 -0
- package/src/license/schema.d.ts +2 -0
- package/src/license/schema.json +5 -0
- package/src/license/sync/generator.js +94 -119
- package/src/license/sync/generator.js.map +1 -1
- package/src/license/sync/project-file-sync.d.ts +1 -1
- package/src/license/sync/project-file-sync.js +28 -35
- package/src/license/sync/project-file-sync.js.map +1 -1
- package/src/mcp-server/dev-server.d.ts +1 -0
- package/src/mcp-server/dev-server.js +18 -0
- package/src/mcp-server/dev-server.js.map +1 -0
- package/src/mcp-server/generator-info.d.ts +3 -3
- package/src/mcp-server/generator-info.js +149 -165
- package/src/mcp-server/generator-info.js.map +1 -1
- package/src/mcp-server/guide-pipeline.d.ts +1 -1
- package/src/mcp-server/guide-pipeline.js +199 -206
- package/src/mcp-server/guide-pipeline.js.map +1 -1
- package/src/mcp-server/guide-render.js +10 -25
- package/src/mcp-server/guide-render.js.map +1 -1
- package/src/mcp-server/index.js +6 -10
- package/src/mcp-server/index.js.map +1 -1
- package/src/mcp-server/mdx-ast.js +39 -57
- package/src/mcp-server/mdx-ast.js.map +1 -1
- package/src/mcp-server/option-filter.js +33 -47
- package/src/mcp-server/option-filter.js.map +1 -1
- package/src/mcp-server/schema-registry.d.ts +9 -3
- package/src/mcp-server/schema-registry.js +41 -38
- package/src/mcp-server/schema-registry.js.map +1 -1
- package/src/mcp-server/schema.d.ts +1 -1
- package/src/mcp-server/schema.js +9 -7
- package/src/mcp-server/schema.js.map +1 -1
- package/src/mcp-server/server.js +24 -24
- package/src/mcp-server/server.js.map +1 -1
- package/src/mcp-server/tools/add-to-existing-project.d.ts +12 -0
- package/src/mcp-server/tools/add-to-existing-project.js +36 -0
- package/src/mcp-server/tools/add-to-existing-project.js.map +1 -0
- package/src/mcp-server/tools/create-workspace-command.js +23 -24
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/mcp-server/tools/general-guidance.d.ts +2 -2
- package/src/mcp-server/tools/general-guidance.js +55 -32
- package/src/mcp-server/tools/general-guidance.js.map +1 -1
- package/src/mcp-server/tools/generator-guide.d.ts +1 -1
- package/src/mcp-server/tools/generator-guide.js +29 -37
- package/src/mcp-server/tools/generator-guide.js.map +1 -1
- package/src/mcp-server/tools/list-generators.d.ts +1 -1
- package/src/mcp-server/tools/list-generators.js +19 -25
- package/src/mcp-server/tools/list-generators.js.map +1 -1
- package/src/mcp-server/tools/upgrade-workspace.d.ts +11 -0
- package/src/mcp-server/tools/upgrade-workspace.js +32 -0
- package/src/mcp-server/tools/upgrade-workspace.js.map +1 -0
- package/src/migrations/latest/apt-security-updates-in-container-images/__snapshots__/migration.spec.ts.snap +90 -0
- package/src/migrations/latest/apt-security-updates-in-container-images/metadata.json +3 -0
- package/src/migrations/latest/apt-security-updates-in-container-images/migration.d.ts +6 -0
- package/src/migrations/latest/apt-security-updates-in-container-images/migration.js +90 -0
- package/src/migrations/latest/apt-security-updates-in-container-images/migration.js.map +1 -0
- package/src/migrations/latest/dynamodb-configurable-encryption/__snapshots__/migration.spec.ts.snap +429 -0
- package/src/migrations/latest/dynamodb-configurable-encryption/metadata.json +3 -0
- package/src/migrations/latest/dynamodb-configurable-encryption/migration.d.ts +6 -0
- package/src/migrations/latest/dynamodb-configurable-encryption/migration.js +325 -0
- package/src/migrations/latest/dynamodb-configurable-encryption/migration.js.map +1 -0
- package/src/migrations/latest/py-agent-ag-ui-hooks/metadata.json +3 -0
- package/src/migrations/latest/py-agent-ag-ui-hooks/migration.d.ts +6 -0
- package/src/migrations/latest/py-agent-ag-ui-hooks/migration.js +113 -0
- package/src/migrations/latest/py-agent-ag-ui-hooks/migration.js.map +1 -0
- package/src/migrations/latest/py-agent-session-id-middleware-extraction/metadata.json +3 -0
- package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.d.ts +2 -0
- package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js +118 -0
- package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js.map +1 -0
- package/src/migrations/latest/remove-mcp-inspector-license-exceptions/metadata.json +3 -0
- package/{sdk/utils/ast.d.ts → src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.d.ts} +2 -2
- package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js +38 -0
- package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js.map +1 -0
- package/src/migrations/latest/static-website-configurable-waf-encryption/metadata.json +3 -0
- package/src/migrations/latest/static-website-configurable-waf-encryption/migration.d.ts +6 -0
- package/src/migrations/latest/static-website-configurable-waf-encryption/migration.js +418 -0
- package/src/migrations/latest/static-website-configurable-waf-encryption/migration.js.map +1 -0
- package/src/migrations/latest/ts-agent-session-id-middleware-extraction/metadata.json +3 -0
- package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.d.ts +2 -0
- package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.js +136 -0
- package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.js.map +1 -0
- package/src/migrations/latest/user-identity-configurable-mfa/metadata.json +3 -0
- package/src/migrations/latest/user-identity-configurable-mfa/migration.d.ts +6 -0
- package/src/migrations/latest/user-identity-configurable-mfa/migration.js +362 -0
- package/src/migrations/latest/user-identity-configurable-mfa/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js +65 -0
- package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js +108 -0
- package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js +128 -0
- package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js +215 -0
- package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js +93 -0
- package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.d.ts +96 -0
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js +670 -0
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js +89 -0
- package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js +449 -0
- package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js +78 -0
- package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js.map +1 -0
- package/src/{smithy/project/files/build.Dockerfile.template → migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/rc57-service.Dockerfile.fixture} +1 -4
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/__snapshots__/migration.spec.ts.snap +223 -0
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js +217 -0
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/__snapshots__/migration.spec.ts.snap +149 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js +195 -0
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/__snapshots__/migration.spec.ts.snap +57 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js +77 -0
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/__snapshots__/migration.spec.ts.snap +48 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js +91 -0
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js +412 -0
- package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js +33 -0
- package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js +83 -0
- package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/legacy-service.Dockerfile.fixture +95 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js +154 -0
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js +71 -0
- package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js +57 -0
- package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js +123 -0
- package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/build-system-prompt.ts.fixture +23 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/build-user-prompt.ts.fixture +96 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/config-path.ts.fixture +1 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/file-to-translate.ts.fixture +10 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/get-files-to-translate.ts.fixture +96 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/header.ts.fixture +15 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/log.ts.fixture +18 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/main-call.ts.fixture +6 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/main.ts.fixture +79 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/project-root.ts.fixture +1 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/run-with-concurrency.ts.fixture +57 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/scripts-dir.ts.fixture +1 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/translate-file-for-language.ts.fixture +61 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/already-migrated.grit +1 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/build-system-prompt.grit +6 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/build-user-prompt.grit +6 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/config-path.grit +1 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/file-to-translate.grit +11 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/get-files-to-translate.grit +7 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/log.grit +3 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/main-call.grit +1 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/main.grit +8 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/project-root.grit +1 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/run-with-concurrency.grit +6 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/translate-file-for-language.grit +6 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.d.ts +2 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js +103 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/test-fixtures/released-script-first.ts.fixture +430 -0
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/test-fixtures/released-script.ts.fixture +431 -0
- package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js +246 -0
- package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.d.ts +6 -0
- package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js +329 -0
- package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js.map +1 -0
- package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/metadata.json +3 -0
- package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.d.ts +2 -0
- package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js +308 -0
- package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js.map +1 -0
- package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +147 -33
- package/src/open-api/ts-client/__snapshots__/generator.arrays.spec.ts.snap +308 -75
- package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +298 -74
- package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +748 -103
- package/src/open-api/ts-client/__snapshots__/generator.content-type.spec.ts.snap +230 -37
- package/src/open-api/ts-client/__snapshots__/generator.duplicate-types.spec.ts.snap +249 -52
- package/src/open-api/ts-client/__snapshots__/generator.edge-cases.spec.ts.snap +5535 -0
- package/src/open-api/ts-client/__snapshots__/generator.fast-api-gaps.spec.ts.snap +736 -0
- package/src/open-api/ts-client/__snapshots__/generator.fast-api.spec.ts.snap +305 -71
- package/src/open-api/ts-client/__snapshots__/generator.multipart.spec.ts.snap +298 -0
- package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +353 -82
- package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +176 -55
- package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +100 -24
- package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +147 -33
- package/src/open-api/ts-client/__snapshots__/generator.spec-compliance.spec.ts.snap +1883 -0
- package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +392 -88
- package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +200 -48
- package/src/open-api/ts-client/files/client.gen.ts.template +358 -24
- package/src/open-api/ts-client/files/types.gen.ts.template +6 -4
- package/src/open-api/ts-client/generator.d.ts +1 -1
- package/src/open-api/ts-client/generator.js +41 -26
- package/src/open-api/ts-client/generator.js.map +1 -1
- package/src/open-api/ts-client/schema.d.js +6 -0
- package/src/open-api/ts-client/schema.d.js.map +1 -0
- package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +7 -2
- package/src/open-api/ts-hooks/generator.d.ts +1 -1
- package/src/open-api/ts-hooks/generator.js +17 -21
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.spec.tsx +76 -6
- package/src/open-api/ts-hooks/schema.d.js +6 -0
- package/src/open-api/ts-hooks/schema.d.js.map +1 -0
- package/src/open-api/ts-metadata/generator.d.ts +1 -1
- package/src/open-api/ts-metadata/generator.js +12 -20
- package/src/open-api/ts-metadata/generator.js.map +1 -1
- package/src/open-api/ts-metadata/schema.d.js +6 -0
- package/src/open-api/ts-metadata/schema.d.js.map +1 -0
- package/src/open-api/utils/codegen-data/languages.d.ts +1 -7
- package/src/open-api/utils/codegen-data/languages.js +59 -66
- package/src/open-api/utils/codegen-data/languages.js.map +1 -1
- package/src/open-api/utils/codegen-data/types.d.ts +255 -10
- package/src/open-api/utils/codegen-data/types.js +54 -30
- package/src/open-api/utils/codegen-data/types.js.map +1 -1
- package/src/open-api/utils/codegen-data.d.ts +4 -4
- package/src/open-api/utils/codegen-data.js +494 -674
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.d.ts +1 -1
- package/src/open-api/utils/normalise.js +437 -246
- package/src/open-api/utils/normalise.js.map +1 -1
- package/src/open-api/utils/parse.d.ts +1 -1
- package/src/open-api/utils/parse.js +8 -14
- package/src/open-api/utils/parse.js.map +1 -1
- package/src/open-api/utils/parser.d.ts +55 -0
- package/src/open-api/utils/parser.js +787 -0
- package/src/open-api/utils/parser.js.map +1 -0
- package/src/open-api/utils/refs.d.ts +1 -1
- package/src/open-api/utils/refs.js +12 -22
- package/src/open-api/utils/refs.js.map +1 -1
- package/src/open-api/utils/types.d.ts +18 -0
- package/src/open-api/utils/types.js +5 -2
- package/src/open-api/utils/types.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +101 -20
- package/src/preset/generator.d.ts +15 -2
- package/src/preset/generator.js +76 -151
- package/src/preset/generator.js.map +1 -1
- package/src/preset/schema.d.js +6 -0
- package/src/preset/schema.d.js.map +1 -0
- package/src/preset/schema.d.ts +6 -3
- package/src/preset/schema.json +16 -5
- package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +931 -0
- package/src/py/agent/__snapshots__/generator.core.spec.ts.snap +186 -0
- package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +771 -0
- package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +1310 -0
- package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +231 -0
- package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +29 -0
- package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +29 -0
- package/src/py/agent/a2a-connection/generator.d.ts +25 -1
- package/src/py/agent/a2a-connection/generator.js +146 -95
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/a2a-connection/schema.d.js +8 -0
- package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
- package/src/py/agent/a2a-connection/schema.d.ts +2 -1
- package/src/py/agent/a2a-connection/schema.json +5 -0
- package/src/py/agent/files/deploy/Dockerfile.template +15 -1
- package/src/py/agent/files/langchain/a2a/main.py.template +83 -0
- package/src/py/agent/files/langchain/ag-ui/main.py.template +76 -0
- package/src/py/agent/files/langchain/common/agent.py.template +30 -0
- package/src/py/agent/files/langchain/common/middleware/__init__.py.template +0 -0
- package/src/py/agent/files/langchain/common/middleware/session_id_middleware.py.template +17 -0
- package/src/py/agent/files/langchain/common/session.py.template +61 -0
- package/src/py/agent/files/{http → langchain/http}/init.py.template +17 -25
- package/src/py/agent/files/langchain/http/main.py.template +69 -0
- package/src/py/agent/files/strands/a2a/main.py.template +61 -0
- package/src/py/agent/files/strands/ag-ui/main.py.template +86 -0
- package/src/py/agent/files/strands/common/__init__.py.template +0 -0
- package/src/py/agent/files/{common → strands/common}/agent.py.template +13 -0
- package/src/py/agent/files/strands/common/middleware/__init__.py.template +0 -0
- package/src/py/agent/files/strands/common/middleware/session_id_middleware.py.template +17 -0
- package/src/py/agent/files/strands/common/session.py.template +36 -0
- package/src/py/agent/files/strands/http/init.py.template +97 -0
- package/src/py/agent/files/{http → strands/http}/main.py.template +5 -29
- package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +184 -0
- package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
- package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +34 -0
- package/src/py/agent/gateway-connection/generator.d.ts +33 -0
- package/src/py/agent/gateway-connection/generator.js +153 -0
- package/src/py/agent/gateway-connection/generator.js.map +1 -0
- package/src/py/agent/gateway-connection/schema.d.js +6 -0
- package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
- package/src/py/agent/gateway-connection/schema.d.ts +13 -0
- package/src/py/agent/gateway-connection/schema.json +31 -0
- package/src/py/agent/generator.d.ts +165 -2
- package/src/py/agent/generator.js +446 -197
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +156 -89
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +31 -0
- package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +31 -0
- package/src/py/agent/mcp-connection/generator.d.ts +24 -1
- package/src/py/agent/mcp-connection/generator.js +103 -130
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/schema.d.js +8 -0
- package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
- package/src/py/agent/mcp-connection/schema.d.ts +2 -1
- package/src/py/agent/mcp-connection/schema.json +5 -0
- package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +17 -19
- package/src/py/agent/react-connection/generator.d.ts +152 -3
- package/src/py/agent/react-connection/generator.js +105 -65
- package/src/py/agent/react-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +5 -5
- package/src/py/agent/react-connection/local-dev.js +36 -0
- package/src/py/agent/react-connection/local-dev.js.map +1 -0
- package/src/py/agent/react-connection/schema.d.js +8 -0
- package/src/py/agent/react-connection/schema.d.js.map +1 -0
- package/src/py/agent/react-connection/schema.d.ts +2 -1
- package/src/py/agent/react-connection/schema.json +5 -0
- package/src/py/agent/schema.d.js +6 -0
- package/src/py/agent/schema.d.js.map +1 -0
- package/src/py/agent/schema.d.ts +6 -2
- package/src/py/agent/schema.json +15 -1
- package/src/py/api/generator.d.ts +1 -1
- package/src/py/api/generator.js +12 -11
- package/src/py/api/generator.js.map +1 -1
- package/src/py/api/schema.d.js +6 -0
- package/src/py/api/schema.d.js.map +1 -0
- package/src/py/api/schema.d.ts +2 -1
- package/src/py/api/schema.json +5 -0
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1601 -0
- package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +63 -0
- package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/agent-connection/generator.js +45 -0
- package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
- package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
- package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
- package/src/py/dynamodb/agent-connection/schema.d.ts +15 -0
- package/src/py/dynamodb/agent-connection/schema.json +27 -0
- package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +32 -0
- package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/fast-api-connection/generator.js +39 -0
- package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
- package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
- package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
- package/src/py/dynamodb/fast-api-connection/schema.d.ts +13 -0
- package/src/py/dynamodb/fast-api-connection/schema.json +23 -0
- package/src/py/dynamodb/files/__name__/__init__.py.template +6 -0
- package/src/py/dynamodb/files/__name__/client.py.template +39 -0
- package/src/py/dynamodb/files/__name__/entities/__init__.py.template +4 -0
- package/src/py/dynamodb/files/__name__/entities/base.py.template +63 -0
- package/src/py/dynamodb/files/__name__/entities/example.py.template +64 -0
- package/src/py/dynamodb/files/config.json.template +24 -0
- package/src/py/dynamodb/generator.d.ts +39 -0
- package/src/py/dynamodb/generator.js +130 -0
- package/src/py/dynamodb/generator.js.map +1 -0
- package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +63 -0
- package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js +45 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
- package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
- package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/py/dynamodb/mcp-server-connection/schema.d.ts +15 -0
- package/src/py/dynamodb/mcp-server-connection/schema.json +27 -0
- package/src/py/dynamodb/schema.d.js +6 -0
- package/src/py/dynamodb/schema.d.js.map +1 -0
- package/src/py/dynamodb/schema.d.ts +16 -0
- package/src/py/dynamodb/schema.json +76 -0
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +240 -4693
- package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +5409 -0
- package/src/py/fast-api/files/app/__name__/init.py.template +5 -22
- package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
- package/src/py/fast-api/generator.d.ts +73 -1
- package/src/py/fast-api/generator.js +134 -95
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +4 -3
- package/src/py/fast-api/react/generator.d.ts +17 -2
- package/src/py/fast-api/react/generator.js +38 -26
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.js +31 -29
- package/src/py/fast-api/react/open-api.js.map +1 -1
- package/src/py/fast-api/react/schema.d.js +6 -0
- package/src/py/fast-api/react/schema.d.js.map +1 -0
- package/src/py/fast-api/react/schema.d.ts +1 -0
- package/src/py/fast-api/react/schema.json +5 -0
- package/src/py/fast-api/schema.d.js +6 -0
- package/src/py/fast-api/schema.d.js.map +1 -0
- package/src/py/fast-api/schema.d.ts +2 -1
- package/src/py/fast-api/schema.json +6 -0
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/py/lambda-function/files/handler/__lambdaFunctionSnakeCase__.py.template +1 -1
- package/src/py/lambda-function/generator.d.ts +28 -1
- package/src/py/lambda-function/generator.js +88 -61
- package/src/py/lambda-function/generator.js.map +1 -1
- package/src/py/lambda-function/schema.d.js +6 -0
- package/src/py/lambda-function/schema.d.js.map +1 -0
- package/src/py/lambda-function/schema.d.ts +3 -2
- package/src/py/lambda-function/schema.json +6 -1
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +221 -21
- package/src/py/mcp-server/files/deploy/Dockerfile.template +15 -1
- package/src/py/mcp-server/generator.d.ts +69 -1
- package/src/py/mcp-server/generator.js +209 -145
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/mcp-server/schema.d.js +6 -0
- package/src/py/mcp-server/schema.d.js.map +1 -0
- package/src/py/mcp-server/schema.d.ts +2 -1
- package/src/py/mcp-server/schema.json +6 -0
- package/src/py/project/generator.d.ts +28 -2
- package/src/py/project/generator.js +248 -130
- package/src/py/project/generator.js.map +1 -1
- package/src/py/project/schema.d.js +6 -0
- package/src/py/project/schema.d.js.map +1 -0
- package/src/py/project/schema.d.ts +1 -0
- package/src/py/project/schema.json +6 -0
- package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2072 -0
- package/src/py/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +123 -0
- package/src/py/rdb/agent-connection/generator.d.ts +10 -0
- package/src/py/rdb/agent-connection/generator.js +52 -0
- package/src/py/rdb/agent-connection/generator.js.map +1 -0
- package/src/py/rdb/agent-connection/schema.d.js +8 -0
- package/src/py/rdb/agent-connection/schema.d.js.map +1 -0
- package/src/py/rdb/agent-connection/schema.d.ts +15 -0
- package/src/py/rdb/agent-connection/schema.json +27 -0
- package/src/py/rdb/fast-api-connection/__snapshots__/generator.spec.ts.snap +51 -0
- package/src/py/rdb/fast-api-connection/files/__apiModuleName__/dependencies/__rdbNameSnake__.py.template +14 -0
- package/src/py/rdb/fast-api-connection/generator.d.ts +10 -0
- package/src/py/rdb/fast-api-connection/generator.js +56 -0
- package/src/py/rdb/fast-api-connection/generator.js.map +1 -0
- package/src/py/rdb/fast-api-connection/schema.d.js +8 -0
- package/src/py/rdb/fast-api-connection/schema.d.js.map +1 -0
- package/src/py/rdb/fast-api-connection/schema.d.ts +13 -0
- package/src/py/rdb/fast-api-connection/schema.json +23 -0
- package/src/py/rdb/files/Dockerfile.create-db-user.template +14 -0
- package/src/py/rdb/files/Dockerfile.migration.template +14 -0
- package/src/py/rdb/files/__name__/connection.py.template +55 -0
- package/src/py/rdb/files/__name__/create_db_user_handler.py.template +97 -0
- package/src/py/rdb/files/__name__/migration_handler.py.template +36 -0
- package/src/py/rdb/files/__name__/models/__init__.py.template +3 -0
- package/src/py/rdb/files/__name__/models/example.py.template +8 -0
- package/src/py/rdb/files/__name__/utils.py.template +104 -0
- package/src/py/rdb/files/alembic.ini.template +38 -0
- package/src/py/rdb/files/migrations/env.py.template +80 -0
- package/src/py/rdb/files/migrations/script.py.mako.template +28 -0
- package/src/py/rdb/generator.d.ts +103 -0
- package/src/py/rdb/generator.js +362 -0
- package/src/py/rdb/generator.js.map +1 -0
- package/src/py/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +119 -0
- package/src/py/rdb/mcp-server-connection/generator.d.ts +10 -0
- package/src/py/rdb/mcp-server-connection/generator.js +52 -0
- package/src/py/rdb/mcp-server-connection/generator.js.map +1 -0
- package/src/py/rdb/mcp-server-connection/schema.d.js +8 -0
- package/src/py/rdb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/py/rdb/mcp-server-connection/schema.d.ts +15 -0
- package/src/py/rdb/mcp-server-connection/schema.json +27 -0
- package/src/py/rdb/schema.d.js +6 -0
- package/src/py/rdb/schema.d.js.map +1 -0
- package/src/py/rdb/schema.d.ts +16 -0
- package/src/py/rdb/schema.json +78 -0
- package/src/py/rdb/utils.d.ts +6 -0
- package/src/py/rdb/utils.js +16 -0
- package/src/py/rdb/utils.js.map +1 -0
- package/src/sdk/agentcore-gateway.d.ts +6 -0
- package/src/sdk/agentcore-gateway.js +7 -0
- package/src/sdk/agentcore-gateway.js.map +1 -0
- package/src/sdk/agentcore-harness.d.ts +6 -0
- package/src/sdk/agentcore-harness.js +7 -0
- package/src/sdk/agentcore-harness.js.map +1 -0
- package/src/sdk/connection.d.ts +6 -0
- package/src/sdk/connection.js +6 -0
- package/src/sdk/connection.js.map +1 -0
- package/src/sdk/license.d.ts +8 -0
- package/src/sdk/license.js +7 -0
- package/src/sdk/license.js.map +1 -0
- package/src/sdk/open-api.d.ts +10 -0
- package/src/sdk/open-api.js +8 -0
- package/src/sdk/open-api.js.map +1 -0
- package/src/sdk/py.d.ts +18 -0
- package/src/sdk/py.js +12 -0
- package/src/sdk/py.js.map +1 -0
- package/src/sdk/smithy.d.ts +6 -0
- package/src/sdk/smithy.js +7 -0
- package/src/sdk/smithy.js.map +1 -0
- package/src/sdk/terraform.d.ts +6 -0
- package/src/sdk/terraform.js +7 -0
- package/src/sdk/terraform.js.map +1 -0
- package/src/sdk/ts.d.ts +39 -0
- package/src/sdk/ts.js +41 -0
- package/src/sdk/ts.js.map +1 -0
- package/{sdk/utils/format.d.ts → src/sdk/utils/ast.d.ts} +1 -1
- package/src/sdk/utils/ast.js +6 -0
- package/src/sdk/utils/ast.js.map +1 -0
- package/src/sdk/utils/format.d.ts +5 -0
- package/src/sdk/utils/format.js +6 -0
- package/src/sdk/utils/format.js.map +1 -0
- package/{sdk → src/sdk}/utils/test.d.ts +1 -1
- package/src/sdk/utils/test.js +6 -0
- package/src/sdk/utils/test.js.map +1 -0
- package/src/smithy/project/__snapshots__/generator.spec.ts.snap +245 -242
- package/src/smithy/project/files/{smithy-build.json.template → service/smithy-build.json.template} +5 -5
- package/src/smithy/project/files/{src → service/src}/operations/echo.smithy.template +1 -0
- package/src/smithy/project/files/shapes/smithy-build.json.template +7 -0
- package/src/smithy/project/files/shapes/src/main.smithy.template +11 -0
- package/src/smithy/project/files/ssdk-bundle/ssdk.rolldown.config.mjs.template +52 -0
- package/src/smithy/project/generator.d.ts +91 -1
- package/src/smithy/project/generator.js +223 -56
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/project/schema.d.js +6 -0
- package/src/smithy/project/schema.d.js.map +1 -0
- package/src/smithy/project/schema.d.ts +2 -0
- package/src/smithy/project/schema.json +28 -1
- package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/smithy/react-connection/generator.d.ts +16 -1
- package/src/smithy/react-connection/generator.js +54 -48
- package/src/smithy/react-connection/generator.js.map +1 -1
- package/src/smithy/react-connection/schema.d.js +6 -0
- package/src/smithy/react-connection/schema.d.js.map +1 -0
- package/src/smithy/react-connection/schema.d.ts +1 -0
- package/src/smithy/react-connection/schema.json +5 -0
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +871 -109
- package/src/smithy/ts/api/files/handler.ts.template +3 -3
- package/src/smithy/ts/api/files/local-server.ts.template +3 -3
- package/src/smithy/ts/api/files/operations/echo.ts.template +2 -2
- package/src/smithy/ts/api/files/service.ts.template +3 -3
- package/src/smithy/ts/api/generator.d.ts +89 -1
- package/src/smithy/ts/api/generator.js +187 -114
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/smithy/ts/api/schema.d.js +6 -0
- package/src/smithy/ts/api/schema.d.js.map +1 -0
- package/src/smithy/ts/api/schema.d.ts +2 -1
- package/src/smithy/ts/api/schema.json +6 -0
- package/src/terraform/project/files/application/scripts/bootstrap.ts.template +40 -1
- package/src/terraform/project/files/application/src/main.tf.template +6 -1
- package/src/terraform/project/files/application/src/providers.tf.template +1 -1
- package/src/terraform/project/generator.d.ts +51 -1
- package/src/terraform/project/generator.js +212 -111
- package/src/terraform/project/generator.js.map +1 -1
- package/src/terraform/project/schema.d.js +9 -0
- package/src/terraform/project/schema.d.js.map +1 -0
- package/src/terraform/project/schema.d.ts +1 -0
- package/src/terraform/project/schema.json +5 -0
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +1182 -184
- package/src/trpc/backend/files/src/client/index.ts.template +1 -1
- package/src/trpc/backend/files/src/handler.ts.template +1 -1
- package/src/trpc/backend/files/src/index.ts.template +5 -5
- package/src/trpc/backend/files/src/init.ts.template +1 -1
- package/src/trpc/backend/files/src/local-server.ts.template +1 -1
- package/src/trpc/backend/files/src/middleware/index.ts.template +7 -7
- package/src/trpc/backend/files/src/procedures/echo.ts.template +3 -3
- package/src/trpc/backend/files/src/router.ts.template +2 -2
- package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
- package/src/trpc/backend/files/src/schema/index.ts.template +1 -1
- package/src/trpc/backend/generator.d.ts +91 -2
- package/src/trpc/backend/generator.js +177 -100
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/backend/schema.d.js +6 -0
- package/src/trpc/backend/schema.d.js.map +1 -0
- package/src/trpc/backend/schema.d.ts +2 -1
- package/src/trpc/backend/schema.json +6 -0
- package/src/trpc/react/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
- package/src/trpc/react/generator.d.ts +39 -2
- package/src/trpc/react/generator.js +105 -63
- package/src/trpc/react/generator.js.map +1 -1
- package/src/trpc/react/schema.d.js +6 -0
- package/src/trpc/react/schema.d.js.map +1 -0
- package/src/trpc/react/schema.d.ts +1 -0
- package/src/trpc/react/schema.json +5 -0
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +1483 -28
- package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +258 -0
- package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +23 -0
- package/src/ts/agent/a2a-connection/generator.d.ts +47 -1
- package/src/ts/agent/a2a-connection/generator.js +112 -63
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/a2a-connection/schema.d.js +8 -0
- package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
- package/src/ts/agent/a2a-connection/schema.d.ts +2 -1
- package/src/ts/agent/a2a-connection/schema.json +5 -0
- package/src/ts/agent/files/a2a/index.ts.template +5 -12
- package/src/ts/agent/files/ag-ui/index.ts.template +29 -14
- package/src/ts/agent/files/common/agent.ts.template +15 -2
- package/src/ts/agent/files/common/session.ts.template +43 -0
- package/src/ts/agent/files/common-express/middleware/session-id-middleware.ts.template +16 -0
- package/src/ts/agent/files/deploy/Dockerfile.template +20 -2
- package/src/ts/agent/files/http/client.ts.template +2 -2
- package/src/ts/agent/files/http/index.ts.template +2 -2
- package/src/ts/agent/files/http/router.ts.template +5 -5
- package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +222 -0
- package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +30 -0
- package/src/ts/agent/gateway-connection/generator.d.ts +47 -0
- package/src/ts/agent/gateway-connection/generator.js +144 -0
- package/src/ts/agent/gateway-connection/generator.js.map +1 -0
- package/src/ts/agent/gateway-connection/schema.d.js +6 -0
- package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
- package/src/ts/agent/gateway-connection/schema.d.ts +13 -0
- package/src/ts/agent/gateway-connection/schema.json +31 -0
- package/src/ts/agent/generator.d.ts +206 -1
- package/src/ts/agent/generator.js +347 -156
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +194 -113
- package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +23 -0
- package/src/ts/agent/mcp-connection/generator.d.ts +38 -1
- package/src/ts/agent/mcp-connection/generator.js +88 -65
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/schema.d.js +8 -0
- package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
- package/src/ts/agent/mcp-connection/schema.d.ts +2 -1
- package/src/ts/agent/mcp-connection/schema.json +5 -0
- package/src/ts/agent/react-connection/__snapshots__/generator.spec.ts.snap +8 -4
- package/src/ts/agent/react-connection/files/src/components/__agentNameClassName__AgentClientProvider.tsx.template +2 -1
- package/src/ts/agent/react-connection/generator.d.ts +204 -3
- package/src/ts/agent/react-connection/generator.js +158 -99
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/local-dev.d.ts +13 -0
- package/src/ts/agent/react-connection/local-dev.js +17 -0
- package/src/ts/agent/react-connection/local-dev.js.map +1 -0
- package/src/ts/agent/react-connection/schema.d.js +8 -0
- package/src/ts/agent/react-connection/schema.d.js.map +1 -0
- package/src/ts/agent/react-connection/schema.d.ts +2 -1
- package/src/ts/agent/react-connection/schema.json +5 -0
- package/src/ts/agent/schema.d.js +6 -0
- package/src/ts/agent/schema.d.js.map +1 -0
- package/src/ts/agent/schema.d.ts +5 -1
- package/src/ts/agent/schema.json +14 -0
- package/src/ts/api/generator.d.ts +1 -1
- package/src/ts/api/generator.js +16 -16
- package/src/ts/api/generator.js.map +1 -1
- package/src/ts/api/schema.d.js +6 -0
- package/src/ts/api/schema.d.js.map +1 -0
- package/src/ts/api/schema.d.ts +2 -1
- package/src/ts/api/schema.json +5 -0
- package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +28 -14
- package/src/ts/astro-docs/files/base/src/content/docs/en/index.mdx.template +2 -2
- package/src/ts/astro-docs/files/base/src/content.config.ts.template +4 -4
- package/src/ts/astro-docs/files/translation/scripts/translate.ts.template +272 -150
- package/src/ts/astro-docs/generator.d.ts +39 -1
- package/src/ts/astro-docs/generator.js +126 -61
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/astro-docs/schema.d.js +6 -0
- package/src/ts/astro-docs/schema.d.js.map +1 -0
- package/src/ts/astro-docs/schema.d.ts +2 -2
- package/src/ts/astro-docs/schema.json +3 -3
- package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +982 -0
- package/src/ts/dcr-proxy/generator.d.ts +34 -0
- package/src/ts/dcr-proxy/generator.js +115 -0
- package/src/ts/dcr-proxy/generator.js.map +1 -0
- package/src/ts/dcr-proxy/schema.d.js +6 -0
- package/src/ts/dcr-proxy/schema.d.js.map +1 -0
- package/src/ts/dcr-proxy/schema.d.ts +13 -0
- package/src/ts/dcr-proxy/schema.json +44 -0
- package/src/ts/docs/generator.d.ts +1 -1
- package/src/ts/docs/generator.js +10 -10
- package/src/ts/docs/generator.js.map +1 -1
- package/src/ts/docs/schema.d.js +6 -0
- package/src/ts/docs/schema.d.js.map +1 -0
- package/src/ts/docs/schema.d.ts +1 -4
- package/src/ts/docs/schema.json +3 -3
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +490 -527
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +23 -5
- package/src/ts/dynamodb/agent-connection/generator.d.ts +1 -1
- package/src/ts/dynamodb/agent-connection/generator.js +27 -23
- package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/agent-connection/schema.d.ts +2 -1
- package/src/ts/dynamodb/agent-connection/schema.json +5 -0
- package/src/ts/dynamodb/files/config.json.template +24 -0
- package/src/ts/dynamodb/files/src/client.ts.template +30 -11
- package/src/ts/dynamodb/files/src/entities/example.ts.template +1 -1
- package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -1
- package/src/ts/dynamodb/files/src/index.ts.template +2 -11
- package/src/ts/dynamodb/generator.d.ts +42 -1
- package/src/ts/dynamodb/generator.js +107 -64
- package/src/ts/dynamodb/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +23 -5
- package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +1 -1
- package/src/ts/dynamodb/mcp-server-connection/generator.js +27 -23
- package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +2 -1
- package/src/ts/dynamodb/mcp-server-connection/schema.json +5 -0
- package/src/ts/dynamodb/schema.d.js +6 -0
- package/src/ts/dynamodb/schema.d.js.map +1 -0
- package/src/ts/dynamodb/schema.d.ts +3 -1
- package/src/ts/dynamodb/schema.json +26 -2
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +12 -3
- package/src/ts/dynamodb/smithy-connection/generator.d.ts +1 -1
- package/src/ts/dynamodb/smithy-connection/generator.js +22 -22
- package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/smithy-connection/schema.d.ts +1 -0
- package/src/ts/dynamodb/smithy-connection/schema.json +5 -0
- package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
- package/src/ts/dynamodb/trpc-connection/generator.d.ts +1 -1
- package/src/ts/dynamodb/trpc-connection/generator.js +22 -22
- package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
- package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
- package/src/ts/dynamodb/trpc-connection/schema.d.ts +1 -0
- package/src/ts/dynamodb/trpc-connection/schema.json +5 -0
- package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +8 -6
- package/src/ts/lambda-function/files/handler/__lambdaFunctionKebabCase__.ts.template +2 -1
- package/src/ts/lambda-function/generator.d.ts +39 -1
- package/src/ts/lambda-function/generator.js +98 -65
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lambda-function/io.js +83 -52
- package/src/ts/lambda-function/io.js.map +1 -1
- package/src/ts/lambda-function/schema.d.js +6 -0
- package/src/ts/lambda-function/schema.d.js.map +1 -0
- package/src/ts/lambda-function/schema.d.ts +2 -1
- package/src/ts/lambda-function/schema.json +5 -0
- package/src/ts/lib/__snapshots__/generator.spec.ts.snap +83 -45
- package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +1 -1
- package/src/ts/lib/biome.d.ts +1 -1
- package/src/ts/lib/biome.js +71 -35
- package/src/ts/lib/biome.js.map +1 -1
- package/src/ts/lib/generator.d.ts +8 -1
- package/src/ts/lib/generator.js +115 -103
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
- package/src/ts/lib/schema.d.js +6 -0
- package/src/ts/lib/schema.d.js.map +1 -0
- package/src/ts/lib/schema.d.ts +1 -1
- package/src/ts/lib/schema.json +5 -0
- package/src/ts/lib/ts-project-utils.d.ts +14 -2
- package/src/ts/lib/ts-project-utils.js +96 -71
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/types.d.ts +6 -0
- package/src/ts/lib/types.js +5 -2
- package/src/ts/lib/types.js.map +1 -1
- package/src/ts/lib/vitest.d.ts +11 -2
- package/src/ts/lib/vitest.js +54 -26
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +221 -44
- package/src/ts/mcp-server/files/Dockerfile.template +20 -2
- package/src/ts/mcp-server/generator.d.ts +111 -1
- package/src/ts/mcp-server/generator.js +236 -162
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/mcp-server/schema.d.js +6 -0
- package/src/ts/mcp-server/schema.d.js.map +1 -0
- package/src/ts/mcp-server/schema.d.ts +2 -1
- package/src/ts/mcp-server/schema.json +6 -0
- package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +28 -13
- package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
- package/src/ts/nx-generator/files/common/schema.json.template +5 -0
- package/src/ts/nx-generator/files/local/generator.spec.ts.template +1 -1
- package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
- package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +6 -7
- package/src/ts/nx-generator/generator.d.ts +3 -0
- package/src/ts/nx-generator/generator.js +124 -72
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-generator/schema.d.js +6 -0
- package/src/ts/nx-generator/schema.d.js.map +1 -0
- package/src/ts/nx-generator/schema.d.ts +1 -0
- package/src/ts/nx-generator/schema.json +5 -0
- package/src/ts/nx-migration/files/migration.spec.ts.template +26 -0
- package/src/ts/nx-migration/files/migration.ts.template +65 -0
- package/src/ts/nx-migration/files/prompt.md.template +46 -0
- package/src/ts/nx-migration/generator.d.ts +27 -0
- package/src/ts/nx-migration/generator.js +147 -0
- package/src/ts/nx-migration/generator.js.map +1 -0
- package/src/ts/nx-migration/schema.d.js +6 -0
- package/src/ts/nx-migration/schema.d.js.map +1 -0
- package/src/ts/nx-migration/schema.d.ts +13 -0
- package/src/ts/nx-migration/schema.json +63 -0
- package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +36 -25
- package/src/ts/nx-plugin/files/mcp-server/resources/GENERAL_GUIDANCE.md.template +5 -6
- package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
- package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
- package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
- package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
- package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
- package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +4 -4
- package/src/ts/nx-plugin/generator.d.ts +4 -1
- package/src/ts/nx-plugin/generator.js +67 -50
- package/src/ts/nx-plugin/generator.js.map +1 -1
- package/src/ts/nx-plugin/schema.d.js +9 -0
- package/src/ts/nx-plugin/schema.d.js.map +1 -0
- package/src/ts/nx-plugin/schema.json +5 -0
- package/src/ts/nx-plugin/utils.d.ts +27 -2
- package/src/ts/nx-plugin/utils.js +66 -51
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +555 -644
- package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +16 -6
- package/src/ts/rdb/agent-connection/generator.d.ts +1 -1
- package/src/ts/rdb/agent-connection/generator.js +44 -39
- package/src/ts/rdb/agent-connection/generator.js.map +1 -1
- package/src/ts/rdb/agent-connection/schema.d.js +8 -0
- package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/agent-connection/schema.d.ts +2 -1
- package/src/ts/rdb/agent-connection/schema.json +5 -0
- package/src/ts/rdb/files/Dockerfile.template +19 -1
- package/src/ts/rdb/files/prisma.config.ts.template +6 -5
- package/src/ts/rdb/files/src/create-db-user-handler.ts.template +9 -11
- package/src/ts/rdb/files/src/migration-handler.ts.template +5 -30
- package/src/ts/rdb/files/src/prisma.ts.template +33 -25
- package/src/ts/rdb/files/src/utils.ts.template +3 -0
- package/src/ts/rdb/generator.d.ts +118 -5
- package/src/ts/rdb/generator.js +285 -138
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +16 -6
- package/src/ts/rdb/mcp-server-connection/generator.d.ts +1 -1
- package/src/ts/rdb/mcp-server-connection/generator.js +42 -37
- package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
- package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/mcp-server-connection/schema.d.ts +2 -1
- package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
- package/src/ts/rdb/schema.d.js +6 -0
- package/src/ts/rdb/schema.d.js.map +1 -0
- package/src/ts/rdb/schema.d.ts +2 -1
- package/src/ts/rdb/schema.json +7 -1
- package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +18 -9
- package/src/ts/rdb/smithy-connection/generator.d.ts +1 -1
- package/src/ts/rdb/smithy-connection/generator.js +48 -43
- package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
- package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
- package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/smithy-connection/schema.d.ts +1 -0
- package/src/ts/rdb/smithy-connection/schema.json +5 -0
- package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
- package/src/ts/rdb/trpc-connection/generator.d.ts +1 -1
- package/src/ts/rdb/trpc-connection/generator.js +37 -31
- package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
- package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
- package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
- package/src/ts/rdb/trpc-connection/schema.d.ts +1 -0
- package/src/ts/rdb/trpc-connection/schema.json +5 -0
- package/src/ts/rdb/utils.js +9 -11
- package/src/ts/rdb/utils.js.map +1 -1
- package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +17 -16
- package/src/ts/react-website/agui/generator.d.ts +97 -0
- package/src/ts/react-website/agui/generator.js +114 -67
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +1648 -690
- package/src/ts/react-website/app/files/app/common/README.md.template +1 -1
- package/src/ts/react-website/app/generator.d.ts +143 -3
- package/src/ts/react-website/app/generator.js +335 -209
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/app/schema.d.js +6 -0
- package/src/ts/react-website/app/schema.d.js.map +1 -0
- package/src/ts/react-website/app/schema.d.ts +3 -3
- package/src/ts/react-website/app/schema.json +12 -6
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +198 -33
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +74 -12
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
- package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
- package/src/ts/react-website/cognito-auth/generator.d.ts +26 -2
- package/src/ts/react-website/cognito-auth/generator.js +79 -64
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +3 -1
- package/src/ts/react-website/cognito-auth/grit/none-auth-menu.grit +1 -0
- package/src/ts/react-website/cognito-auth/grit/shadcn-auth-menu.grit +3 -1
- package/src/ts/react-website/cognito-auth/grit/shadcn-state-declarations.grit +3 -1
- package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
- package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
- package/src/ts/react-website/cognito-auth/schema.d.ts +2 -1
- package/src/ts/react-website/cognito-auth/schema.json +5 -0
- package/src/ts/react-website/cognito-auth/utils.js +34 -32
- package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
- package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
- package/src/ts/react-website/runtime-config/generator.d.ts +1 -1
- package/src/ts/react-website/runtime-config/generator.js +29 -31
- package/src/ts/react-website/runtime-config/generator.js.map +1 -1
- package/src/ts/react-website/runtime-config/schema.d.js +6 -0
- package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
- package/src/ts/react-website/runtime-config/schema.d.ts +1 -0
- package/src/ts/react-website/runtime-config/schema.json +5 -0
- package/src/ts/sync/generator.d.ts +1 -1
- package/src/ts/sync/generator.js +137 -60
- package/src/ts/sync/generator.js.map +1 -1
- package/src/ts/website/app/generator.d.ts +1 -1
- package/src/ts/website/app/generator.js +10 -10
- package/src/ts/website/app/generator.js.map +1 -1
- package/src/ts/website/app/schema.d.js +6 -0
- package/src/ts/website/app/schema.d.js.map +1 -0
- package/src/ts/website/app/schema.d.ts +3 -3
- package/src/ts/website/app/schema.json +11 -6
- package/src/ts/website/auth/generator.d.ts +2 -2
- package/src/ts/website/auth/generator.js +11 -10
- package/src/ts/website/auth/generator.js.map +1 -1
- package/src/ts/website/auth/schema.d.js +6 -0
- package/src/ts/website/auth/schema.d.js.map +1 -0
- package/src/ts/website/auth/schema.d.ts +2 -1
- package/src/ts/website/auth/schema.json +5 -0
- package/src/utils/__snapshots__/shared-constructs.spec.ts.snap +21 -0
- package/src/utils/add-dependencies.d.ts +38 -0
- package/src/utils/add-dependencies.js +83 -0
- package/src/utils/add-dependencies.js.map +1 -0
- package/src/utils/agent-chat/agent-chat.d.ts +31 -0
- package/src/utils/agent-chat/agent-chat.js +31 -0
- package/src/utils/agent-chat/agent-chat.js.map +1 -0
- package/src/utils/agent-chat/files/a2a/chat.ts.template +33 -0
- package/src/utils/agent-chat/files/ag-ui/chat.ts.template +17 -0
- package/src/utils/agent-chat/files/common/agentcore.ts.template +81 -0
- package/src/utils/agent-chat/files/http-py/chat.ts.template +43 -0
- package/src/utils/agent-chat/files/http-ts/chat.ts.template +54 -0
- package/src/utils/agent-connection/agent-connection.d.ts +149 -26
- package/src/utils/agent-connection/agent-connection.js +511 -103
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
- package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
- package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
- package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
- package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
- package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +35 -33
- package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
- package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
- package/src/utils/agent-connection/files/core-strands/base/model-errors-strands.ts.template +47 -0
- package/src/utils/agent-connection/files/core-strands/base/tool-errors-strands.ts.template +29 -0
- package/src/utils/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +1 -1
- package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
- package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
- package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
- package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
- package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
- package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
- package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +105 -0
- package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
- package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
- package/src/utils/agent-connection/files/py-core-langchain/s3/s3_checkpoint_saver_langchain.py.template +360 -0
- package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
- package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +4 -18
- package/src/utils/agent-connection/files/py-core-runtime-config/session_context.py.template +2 -2
- package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
- package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +111 -0
- package/src/utils/agent-connection/files/py-core-strands/base/model_errors_strands.py.template +40 -0
- package/src/utils/agent-connection/files/py-core-strands/base/tool_errors_strands.py.template +24 -0
- package/src/utils/agent-connection/files/{py-core-runtime-config/with_session_id.py.template → py-core-strands/base/with_session_id_strands.py.template} +2 -2
- package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
- package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +81 -2
- package/src/utils/agent-core-constructs/agent-core-constructs.js +212 -38
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +273 -9
- package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +87 -0
- package/src/utils/agent-core-constructs/files/cdk/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.ts.template +366 -0
- package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +624 -0
- package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
- package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +281 -1
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +521 -0
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.tf.template +282 -0
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +159 -13
- package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
- package/src/utils/api-constructs/api-constructs.d.ts +31 -3
- package/src/utils/api-constructs/api-constructs.js +82 -32
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +20 -15
- package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +24 -16
- package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +26 -9
- package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +70 -0
- package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
- package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +56 -17
- package/src/utils/api-constructs/files/cdk/core/api/trpc/trpc-utils.ts.template +1 -1
- package/src/utils/api-constructs/files/cdk/core/api/utils/utils.ts.template +61 -7
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +101 -12
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +194 -8
- package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
- package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
- package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
- package/src/utils/api-constructs/open-api-metadata.d.ts +1 -1
- package/src/utils/api-constructs/open-api-metadata.js +22 -22
- package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
- package/src/utils/ast/website.js +18 -20
- package/src/utils/ast/website.js.map +1 -1
- package/src/utils/ast.d.ts +38 -0
- package/src/utils/ast.js +162 -86
- package/src/utils/ast.js.map +1 -1
- package/src/utils/base-tsconfig.d.ts +30 -0
- package/src/utils/base-tsconfig.js +32 -0
- package/src/utils/base-tsconfig.js.map +1 -0
- package/src/utils/bundle/bundle.d.ts +6 -1
- package/src/utils/bundle/bundle.js +58 -48
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.d.ts +14 -3
- package/src/utils/commands.js +83 -28
- package/src/utils/commands.js.map +1 -1
- package/src/utils/config/index.d.ts +22 -6
- package/src/utils/config/index.js +5 -4
- package/src/utils/config/index.js.map +1 -1
- package/src/utils/config/utils.d.ts +9 -3
- package/src/utils/config/utils.js +56 -59
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +16 -3
- package/src/utils/connection/open-api/react.d.ts +31 -5
- package/src/utils/connection/open-api/react.js +106 -76
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/containers.js +22 -23
- package/src/utils/containers.js.map +1 -1
- package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.d.ts +38 -0
- package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js +93 -0
- package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js.map +1 -0
- package/src/utils/dcr-proxy-constructs/files/cdk/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.ts.template +227 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorization-server-metadata.ts.template +39 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorize.ts.template +26 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/mcp-proxy.ts.template +89 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/protected-resource-metadata.ts.template +13 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/register.ts.template +70 -0
- package/src/utils/dcr-proxy-constructs/files/project/src/handlers/token.ts.template +75 -0
- package/src/utils/dcr-proxy-constructs/files/terraform/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.tf.template +410 -0
- package/src/utils/declared-dependencies.d.ts +140 -0
- package/src/utils/declared-dependencies.js +64 -0
- package/src/utils/declared-dependencies.js.map +1 -0
- package/src/utils/dependencies.d.ts +18 -0
- package/src/utils/dependencies.js +206 -0
- package/src/utils/dependencies.js.map +1 -0
- package/src/utils/docker.d.ts +89 -0
- package/src/utils/docker.js +125 -0
- package/src/utils/docker.js.map +1 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +2 -2
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js +39 -41
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
- package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +18 -5
- package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +24 -4
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +51 -18
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +40 -6
- package/src/utils/files/common/constructs/src/core/cloudfront.ts.template +14 -0
- package/src/utils/files/common/constructs/src/core/index.ts.template +5 -4
- package/src/utils/files/common/constructs/src/index.ts.template +2 -2
- package/src/utils/files/common/infra-config/src/index.ts.template +3 -3
- package/src/utils/files/common/infra-config/src/resolve-stage.ts.template +2 -2
- package/src/utils/files/common/infra-config/src/stages.config.ts.template +1 -1
- package/src/{ts/dynamodb/files/scripts → utils/files/common/scripts/src/dynamodb}/create-local-table.ts.template +65 -31
- package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +13 -0
- package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +103 -0
- package/src/utils/files/common/scripts/src/infra/infra-deploy.ts.template +2 -0
- package/src/utils/files/common/scripts/src/infra/infra-destroy.ts.template +2 -0
- package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/cdk-command.ts.template +6 -3
- package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/run.ts.template +3 -3
- package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
- package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
- package/src/utils/files/common/scripts/src/rdb/shared/pull-image.ts.template +16 -0
- package/src/utils/files/common/scripts/src/rdb/shared/start-container.ts.template +115 -0
- package/src/utils/files/common/shadcn/readme/README.md.template +3 -3
- package/src/utils/files/common/shadcn/src/index.ts.template +2 -2
- package/src/utils/files/shadcn/components.json.template +1 -1
- package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +63 -72
- package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
- package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +12 -6
- package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
- package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +9 -4
- package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
- package/src/utils/format.d.ts +39 -4
- package/src/utils/format.js +318 -198
- package/src/utils/format.js.map +1 -1
- package/src/utils/fs.d.ts +24 -5
- package/src/utils/fs.js +40 -15
- package/src/utils/fs.js.map +1 -1
- package/src/utils/function-constructs/files/cdk/app/lambda-functions/__nameKebabCase__.ts.template +1 -1
- package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
- package/src/utils/function-constructs/function-constructs.d.ts +1 -1
- package/src/utils/function-constructs/function-constructs.js +22 -25
- package/src/utils/function-constructs/function-constructs.js.map +1 -1
- package/src/utils/generators.js +18 -20
- package/src/utils/generators.js.map +1 -1
- package/src/utils/git.js +19 -34
- package/src/utils/git.js.map +1 -1
- package/src/utils/iac-providers.js +5 -5
- package/src/utils/iac-providers.js.map +1 -1
- package/src/utils/iac.d.ts +2 -2
- package/src/utils/iac.js +12 -14
- package/src/utils/iac.js.map +1 -1
- package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +193 -30
- package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +28 -9
- package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +177 -25
- package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +33 -0
- package/src/utils/identity-constructs/identity-constructs.d.ts +11 -1
- package/src/utils/identity-constructs/identity-constructs.js +52 -31
- package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
- package/src/utils/init.d.ts +72 -0
- package/src/utils/init.js +300 -0
- package/src/utils/init.js.map +1 -0
- package/src/utils/install.d.ts +32 -0
- package/src/utils/install.js +58 -0
- package/src/utils/install.js.map +1 -0
- package/src/utils/js.js +27 -20
- package/src/utils/js.js.map +1 -1
- package/src/utils/mcp.d.ts +9 -0
- package/src/utils/mcp.js +42 -41
- package/src/utils/mcp.js.map +1 -1
- package/src/utils/metrics.d.ts +8 -2
- package/src/utils/metrics.js +61 -46
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/migration-manifest.d.ts +58 -0
- package/src/utils/migration-manifest.js +76 -0
- package/src/utils/migration-manifest.js.map +1 -0
- package/src/utils/migration-versions.d.ts +145 -0
- package/src/utils/migration-versions.js +250 -0
- package/src/utils/migration-versions.js.map +1 -0
- package/src/utils/mock-project-graph.js +8 -12
- package/src/utils/mock-project-graph.js.map +1 -1
- package/src/utils/module-format.d.ts +25 -0
- package/src/utils/module-format.js +45 -0
- package/src/utils/module-format.js.map +1 -0
- package/src/utils/names.d.ts +22 -0
- package/src/utils/names.js +44 -48
- package/src/utils/names.js.map +1 -1
- package/src/utils/npm-scope.d.ts +0 -4
- package/src/utils/npm-scope.js +7 -20
- package/src/utils/npm-scope.js.map +1 -1
- package/src/utils/nx.d.ts +77 -6
- package/src/utils/nx.js +196 -75
- package/src/utils/nx.js.map +1 -1
- package/src/utils/nxlv-python.js +27 -15
- package/src/utils/nxlv-python.js.map +1 -1
- package/src/utils/object.js +5 -11
- package/src/utils/object.js.map +1 -1
- package/src/utils/paths.js +11 -15
- package/src/utils/paths.js.map +1 -1
- package/src/utils/pkg-manager.d.ts +1 -1
- package/src/utils/pkg-manager.js +4 -9
- package/src/utils/pkg-manager.js.map +1 -1
- package/src/utils/pnpm-workspace.d.ts +1 -12
- package/src/utils/pnpm-workspace.js +16 -43
- package/src/utils/pnpm-workspace.js.map +1 -1
- package/src/utils/port.d.ts +28 -6
- package/src/utils/port.js +67 -28
- package/src/utils/port.js.map +1 -1
- package/src/utils/project-package-json.d.ts +39 -0
- package/src/utils/project-package-json.js +119 -0
- package/src/utils/project-package-json.js.map +1 -0
- package/src/utils/py.d.ts +18 -4
- package/src/utils/py.js +73 -48
- package/src/utils/py.js.map +1 -1
- package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +72 -18
- package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +112 -88
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +127 -53
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +60 -53
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +14 -3
- package/src/utils/rdb-constructs/rdb-constructs.js +38 -41
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/ruff.d.ts +59 -0
- package/src/utils/ruff.js +140 -0
- package/src/utils/ruff.js.map +1 -0
- package/src/utils/shared-constructs-constants.d.ts +46 -4
- package/src/utils/shared-constructs-constants.js +50 -15
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +5 -2
- package/src/utils/shared-constructs.js +62 -67
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.d.ts +18 -0
- package/src/utils/shared-dynamodb-scripts.js +35 -0
- package/src/utils/shared-dynamodb-scripts.js.map +1 -0
- package/src/utils/shared-infra-config.js +31 -30
- package/src/utils/shared-infra-config.js.map +1 -1
- package/src/utils/shared-infra-scripts.d.ts +26 -0
- package/src/utils/shared-infra-scripts.js +58 -0
- package/src/utils/shared-infra-scripts.js.map +1 -0
- package/src/utils/shared-rdb-scripts.d.ts +27 -0
- package/src/utils/shared-rdb-scripts.js +59 -0
- package/src/utils/shared-rdb-scripts.js.map +1 -0
- package/src/utils/shared-scripts.d.ts +1 -4
- package/src/utils/shared-scripts.js +12 -38
- package/src/utils/shared-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.d.ts +26 -1
- package/src/utils/shared-shadcn.js +93 -67
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/smithy.d.ts +59 -0
- package/src/utils/smithy.js +73 -0
- package/src/utils/smithy.js.map +1 -0
- package/src/utils/test-git.d.ts +39 -0
- package/src/utils/test-git.js +117 -0
- package/src/utils/test-git.js.map +1 -0
- package/src/utils/test.d.ts +10 -0
- package/src/utils/test.js +44 -25
- package/src/utils/test.js.map +1 -1
- package/src/utils/toml.d.ts +5 -0
- package/src/utils/toml.js +17 -15
- package/src/utils/toml.js.map +1 -1
- package/src/utils/version-upgrade-migration/migration.d.ts +14 -0
- package/src/utils/version-upgrade-migration/migration.js +16 -0
- package/src/utils/version-upgrade-migration/migration.js.map +1 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.d.ts +45 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.js +50 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +76 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.js +146 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -0
- package/src/utils/version-upgrade-migration/register.d.ts +29 -0
- package/src/utils/version-upgrade-migration/register.js +42 -0
- package/src/utils/version-upgrade-migration/register.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +26 -0
- package/src/utils/version-upgrade-migration/sync-embedded-versions.js +352 -0
- package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.d.ts +13 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.js +33 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.d.ts +10 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.js +518 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.d.ts +14 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.js +40 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.js.map +1 -0
- package/src/utils/versions.d.ts +243 -108
- package/src/utils/versions.js +268 -121
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/files/cdk/app/static-websites/__websiteNameKebabCase__.ts.template +12 -3
- package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +252 -49
- package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +56 -1
- package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +201 -107
- package/src/utils/website-constructs/website-constructs.d.ts +12 -1
- package/src/utils/website-constructs/website-constructs.js +49 -30
- package/src/utils/website-constructs/website-constructs.js.map +1 -1
- package/bin/aws-nx-mcp.d.ts +0 -2
- package/bin/aws-nx-mcp.js +0 -17
- package/bin/aws-nx-mcp.js.map +0 -1
- package/sdk/connection.d.ts +0 -6
- package/sdk/connection.js +0 -10
- package/sdk/connection.js.map +0 -1
- package/sdk/license.d.ts +0 -8
- package/sdk/license.js +0 -13
- package/sdk/license.js.map +0 -1
- package/sdk/open-api.d.ts +0 -10
- package/sdk/open-api.js +0 -15
- package/sdk/open-api.js.map +0 -1
- package/sdk/py.d.ts +0 -14
- package/sdk/py.js +0 -18
- package/sdk/py.js.map +0 -1
- package/sdk/terraform.d.ts +0 -6
- package/sdk/terraform.js +0 -11
- package/sdk/terraform.js.map +0 -1
- package/sdk/ts.d.ts +0 -29
- package/sdk/ts.js +0 -47
- package/sdk/ts.js.map +0 -1
- package/sdk/utils/ast.js +0 -12
- package/sdk/utils/ast.js.map +0 -1
- package/sdk/utils/format.js +0 -10
- package/sdk/utils/format.js.map +0 -1
- package/sdk/utils/test.js +0 -10
- package/sdk/utils/test.js.map +0 -1
- package/src/connection/agent-serve-local.d.ts +0 -33
- package/src/connection/agent-serve-local.js +0 -48
- package/src/connection/agent-serve-local.js.map +0 -1
- package/src/connection/serve-local.js +0 -41
- package/src/connection/serve-local.js.map +0 -1
- package/src/py/agent/__snapshots__/generator.spec.ts.snap +0 -769
- package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
- package/src/py/agent/files/a2a/main.py.template +0 -54
- package/src/py/agent/files/ag-ui/main.py.template +0 -37
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
- package/src/py/agent/react-connection/serve-local.js +0 -30
- package/src/py/agent/react-connection/serve-local.js.map +0 -1
- package/src/py/agent/scripts/http/chat.ts.template +0 -38
- package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +0 -19
- package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +0 -19
- package/src/ts/agent/react-connection/serve-local.d.ts +0 -13
- package/src/ts/agent/react-connection/serve-local.js +0 -19
- package/src/ts/agent/react-connection/serve-local.js.map +0 -1
- package/src/ts/agent/scripts/http/chat.ts.template +0 -35
- package/src/ts/dynamodb/files/scripts/pull-image.ts.template +0 -15
- package/src/ts/dynamodb/files/scripts/start-container.ts.template +0 -81
- package/src/ts/dynamodb/files/src/constants.ts.template +0 -9
- package/src/ts/dynamodb/files/src/gsi.ts.template +0 -14
- package/src/ts/rdb/files/scripts/pull-image.ts.template +0 -15
- package/src/ts/rdb/files/scripts/start-container.ts.template +0 -84
- package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
- package/src/ts/rdb/files/src/constants.ts.template +0 -8
- package/src/ts/rdb/files/src/index.ts.template +0 -2
- package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
- package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
- package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
- package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
- package/src/utils/files/common/scripts/src/infra-deploy.ts.template +0 -2
- package/src/utils/files/common/scripts/src/infra-destroy.ts.template +0 -2
- package/src/utils/files/terraform/scripts/reset-runtime-config.ts.template +0 -25
- /package/src/py/agent/files/{common → langchain/common}/__init__.py.template +0 -0
- /package/src/smithy/project/files/{src → service/src}/main.smithy.template +0 -0
- /package/src/utils/files/common/scripts/src/{index.ts.template → infra/index.ts.template} +0 -0
- /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/credentials.ts.template +0 -0
- /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
|
@@ -1,13 +1,670 @@
|
|
|
1
1
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
2
|
|
|
3
|
+
exports[`ts#agent generator > chat scripts for a2a protocol > should match snapshot for chat scripts with cognito auth > agentcore.ts (a2a, cognito) 1`] = `
|
|
4
|
+
"// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
|
|
5
|
+
import { randomUUID } from 'node:crypto';
|
|
6
|
+
import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
|
|
7
|
+
|
|
8
|
+
const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
|
|
9
|
+
|
|
10
|
+
// AgentCore session ids must be at least 33 characters.
|
|
11
|
+
export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
|
|
12
|
+
|
|
13
|
+
export interface RemoteAgent {
|
|
14
|
+
/** ARN of the deployed Bedrock AgentCore runtime. */
|
|
15
|
+
arn: string;
|
|
16
|
+
/** AWS region parsed from the runtime ARN. */
|
|
17
|
+
region: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
|
|
21
|
+
export const resolveRemoteAgent = async (): Promise<
|
|
22
|
+
RemoteAgent | undefined
|
|
23
|
+
> => {
|
|
24
|
+
const application = process.env.RUNTIME_CONFIG_APP_ID;
|
|
25
|
+
if (!application) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
const config = (await getAppConfig('agentcore', {
|
|
29
|
+
application,
|
|
30
|
+
environment: 'default',
|
|
31
|
+
transform: 'json',
|
|
32
|
+
})) as { agentRuntimes?: Record<string, { arn: string }> };
|
|
33
|
+
const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
|
|
34
|
+
if (!arn) {
|
|
35
|
+
throw new Error(
|
|
36
|
+
\`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
return { arn, region: arn.split(':')[3] };
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/** The Cognito access token used to authenticate with the deployed agent. */
|
|
43
|
+
export const getAccessToken = (): string => {
|
|
44
|
+
const accessToken = process.env.AGENT_ACCESS_TOKEN;
|
|
45
|
+
if (!accessToken) {
|
|
46
|
+
throw new Error(
|
|
47
|
+
'AGENT_ACCESS_TOKEN is not set. Provide a Cognito access token to chat with the deployed agent.',
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
return accessToken;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
|
|
54
|
+
export const createAgentCoreFetch = (): typeof fetch => {
|
|
55
|
+
const accessToken = getAccessToken();
|
|
56
|
+
return (input, init) => {
|
|
57
|
+
const headers = new Headers(init?.headers);
|
|
58
|
+
headers.set(SESSION_HEADER, SESSION_ID);
|
|
59
|
+
headers.set('Authorization', \`Bearer \${accessToken}\`);
|
|
60
|
+
return fetch(input, { ...init, headers });
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
"
|
|
64
|
+
`;
|
|
65
|
+
|
|
66
|
+
exports[`ts#agent generator > chat scripts for a2a protocol > should match snapshot for chat scripts with cognito auth > chat.ts (a2a, cognito) 1`] = `
|
|
67
|
+
"// Chat CLI for TestProjectAgent (A2A protocol). Connects to the local
|
|
68
|
+
// \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
|
|
69
|
+
import {
|
|
70
|
+
ClientFactory,
|
|
71
|
+
ClientFactoryOptions,
|
|
72
|
+
DefaultAgentCardResolver,
|
|
73
|
+
JsonRpcTransportFactory,
|
|
74
|
+
} from '@a2a-js/sdk/client';
|
|
75
|
+
import { A2AChatAdapter, chatLoop } from 'agent-chat-cli';
|
|
76
|
+
import { createAgentCoreFetch, resolveRemoteAgent } from './agentcore.js';
|
|
77
|
+
|
|
78
|
+
const remote = await resolveRemoteAgent();
|
|
79
|
+
|
|
80
|
+
const url = remote
|
|
81
|
+
? \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}/invocations/\`
|
|
82
|
+
: process.env.URL!;
|
|
83
|
+
|
|
84
|
+
// Remote requests are authenticated via a custom fetch; locally the default client talks plain HTTP.
|
|
85
|
+
const clientFactory = remote
|
|
86
|
+
? new ClientFactory({
|
|
87
|
+
...ClientFactoryOptions.default,
|
|
88
|
+
transports: [
|
|
89
|
+
new JsonRpcTransportFactory({
|
|
90
|
+
fetchImpl: createAgentCoreFetch(),
|
|
91
|
+
}),
|
|
92
|
+
],
|
|
93
|
+
cardResolver: new DefaultAgentCardResolver({
|
|
94
|
+
fetchImpl: createAgentCoreFetch(),
|
|
95
|
+
}),
|
|
96
|
+
})
|
|
97
|
+
: undefined;
|
|
98
|
+
|
|
99
|
+
await chatLoop(new A2AChatAdapter({ clientFactory }), url);
|
|
100
|
+
"
|
|
101
|
+
`;
|
|
102
|
+
|
|
103
|
+
exports[`ts#agent generator > chat scripts for a2a protocol > should match snapshot for chat scripts with iam auth > agentcore.ts (a2a, iam) 1`] = `
|
|
104
|
+
"// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
|
|
105
|
+
import { randomUUID } from 'node:crypto';
|
|
106
|
+
import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
|
|
107
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
108
|
+
import { AwsClient } from 'aws4fetch';
|
|
109
|
+
|
|
110
|
+
const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
|
|
111
|
+
|
|
112
|
+
// AgentCore session ids must be at least 33 characters.
|
|
113
|
+
export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
|
|
114
|
+
|
|
115
|
+
export interface RemoteAgent {
|
|
116
|
+
/** ARN of the deployed Bedrock AgentCore runtime. */
|
|
117
|
+
arn: string;
|
|
118
|
+
/** AWS region parsed from the runtime ARN. */
|
|
119
|
+
region: string;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
|
|
123
|
+
export const resolveRemoteAgent = async (): Promise<
|
|
124
|
+
RemoteAgent | undefined
|
|
125
|
+
> => {
|
|
126
|
+
const application = process.env.RUNTIME_CONFIG_APP_ID;
|
|
127
|
+
if (!application) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
const config = (await getAppConfig('agentcore', {
|
|
131
|
+
application,
|
|
132
|
+
environment: 'default',
|
|
133
|
+
transform: 'json',
|
|
134
|
+
})) as { agentRuntimes?: Record<string, { arn: string }> };
|
|
135
|
+
const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
|
|
136
|
+
if (!arn) {
|
|
137
|
+
throw new Error(
|
|
138
|
+
\`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
return { arn, region: arn.split(':')[3] };
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
|
|
145
|
+
export const createAgentCoreFetch = (region: string): typeof fetch => {
|
|
146
|
+
const credentialProvider = fromNodeProviderChain();
|
|
147
|
+
return async (input, init) => {
|
|
148
|
+
const headers = new Headers(init?.headers);
|
|
149
|
+
headers.set(SESSION_HEADER, SESSION_ID);
|
|
150
|
+
const client = new AwsClient({
|
|
151
|
+
...(await credentialProvider()),
|
|
152
|
+
service: 'bedrock-agentcore',
|
|
153
|
+
region,
|
|
154
|
+
});
|
|
155
|
+
return client.fetch(input, { ...init, headers });
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
"
|
|
159
|
+
`;
|
|
160
|
+
|
|
161
|
+
exports[`ts#agent generator > chat scripts for a2a protocol > should match snapshot for chat scripts with iam auth > chat.ts (a2a, iam) 1`] = `
|
|
162
|
+
"// Chat CLI for TestProjectAgent (A2A protocol). Connects to the local
|
|
163
|
+
// \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
|
|
164
|
+
import {
|
|
165
|
+
ClientFactory,
|
|
166
|
+
ClientFactoryOptions,
|
|
167
|
+
DefaultAgentCardResolver,
|
|
168
|
+
JsonRpcTransportFactory,
|
|
169
|
+
} from '@a2a-js/sdk/client';
|
|
170
|
+
import { A2AChatAdapter, chatLoop } from 'agent-chat-cli';
|
|
171
|
+
import { createAgentCoreFetch, resolveRemoteAgent } from './agentcore.js';
|
|
172
|
+
|
|
173
|
+
const remote = await resolveRemoteAgent();
|
|
174
|
+
|
|
175
|
+
const url = remote
|
|
176
|
+
? \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}/invocations/\`
|
|
177
|
+
: process.env.URL!;
|
|
178
|
+
|
|
179
|
+
// Remote requests are authenticated via a custom fetch; locally the default client talks plain HTTP.
|
|
180
|
+
const clientFactory = remote
|
|
181
|
+
? new ClientFactory({
|
|
182
|
+
...ClientFactoryOptions.default,
|
|
183
|
+
transports: [
|
|
184
|
+
new JsonRpcTransportFactory({
|
|
185
|
+
fetchImpl: createAgentCoreFetch(remote.region),
|
|
186
|
+
}),
|
|
187
|
+
],
|
|
188
|
+
cardResolver: new DefaultAgentCardResolver({
|
|
189
|
+
fetchImpl: createAgentCoreFetch(remote.region),
|
|
190
|
+
}),
|
|
191
|
+
})
|
|
192
|
+
: undefined;
|
|
193
|
+
|
|
194
|
+
await chatLoop(new A2AChatAdapter({ clientFactory }), url);
|
|
195
|
+
"
|
|
196
|
+
`;
|
|
197
|
+
|
|
198
|
+
exports[`ts#agent generator > chat scripts for ag-ui protocol > should match snapshot for chat scripts with cognito auth > agentcore.ts (ag-ui, cognito) 1`] = `
|
|
199
|
+
"// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
|
|
200
|
+
import { randomUUID } from 'node:crypto';
|
|
201
|
+
import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
|
|
202
|
+
|
|
203
|
+
const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
|
|
204
|
+
|
|
205
|
+
// AgentCore session ids must be at least 33 characters.
|
|
206
|
+
export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
|
|
207
|
+
|
|
208
|
+
export interface RemoteAgent {
|
|
209
|
+
/** ARN of the deployed Bedrock AgentCore runtime. */
|
|
210
|
+
arn: string;
|
|
211
|
+
/** AWS region parsed from the runtime ARN. */
|
|
212
|
+
region: string;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
|
|
216
|
+
export const resolveRemoteAgent = async (): Promise<
|
|
217
|
+
RemoteAgent | undefined
|
|
218
|
+
> => {
|
|
219
|
+
const application = process.env.RUNTIME_CONFIG_APP_ID;
|
|
220
|
+
if (!application) {
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
const config = (await getAppConfig('agentcore', {
|
|
224
|
+
application,
|
|
225
|
+
environment: 'default',
|
|
226
|
+
transform: 'json',
|
|
227
|
+
})) as { agentRuntimes?: Record<string, { arn: string }> };
|
|
228
|
+
const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
|
|
229
|
+
if (!arn) {
|
|
230
|
+
throw new Error(
|
|
231
|
+
\`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
return { arn, region: arn.split(':')[3] };
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
/** The Cognito access token used to authenticate with the deployed agent. */
|
|
238
|
+
export const getAccessToken = (): string => {
|
|
239
|
+
const accessToken = process.env.AGENT_ACCESS_TOKEN;
|
|
240
|
+
if (!accessToken) {
|
|
241
|
+
throw new Error(
|
|
242
|
+
'AGENT_ACCESS_TOKEN is not set. Provide a Cognito access token to chat with the deployed agent.',
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
return accessToken;
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
// A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
|
|
249
|
+
export const createAgentCoreFetch = (): typeof fetch => {
|
|
250
|
+
const accessToken = getAccessToken();
|
|
251
|
+
return (input, init) => {
|
|
252
|
+
const headers = new Headers(init?.headers);
|
|
253
|
+
headers.set(SESSION_HEADER, SESSION_ID);
|
|
254
|
+
headers.set('Authorization', \`Bearer \${accessToken}\`);
|
|
255
|
+
return fetch(input, { ...init, headers });
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
"
|
|
259
|
+
`;
|
|
260
|
+
|
|
261
|
+
exports[`ts#agent generator > chat scripts for ag-ui protocol > should match snapshot for chat scripts with cognito auth > chat.ts (ag-ui, cognito) 1`] = `
|
|
262
|
+
"// Chat CLI for TestProjectAgent (AG-UI protocol). Connects to the local
|
|
263
|
+
// \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
|
|
264
|
+
import { AGUIChatAdapter, chatLoop } from 'agent-chat-cli';
|
|
265
|
+
import { createAgentCoreFetch, resolveRemoteAgent } from './agentcore.js';
|
|
266
|
+
|
|
267
|
+
const remote = await resolveRemoteAgent();
|
|
268
|
+
|
|
269
|
+
const url = remote
|
|
270
|
+
? \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}/invocations?qualifier=DEFAULT\`
|
|
271
|
+
: process.env.URL!;
|
|
272
|
+
|
|
273
|
+
// Remote requests are authenticated via a custom fetch; locally the default agent talks plain HTTP.
|
|
274
|
+
const fetchImpl = remote ? createAgentCoreFetch() : undefined;
|
|
275
|
+
|
|
276
|
+
await chatLoop(new AGUIChatAdapter({ fetch: fetchImpl }), url);
|
|
277
|
+
"
|
|
278
|
+
`;
|
|
279
|
+
|
|
280
|
+
exports[`ts#agent generator > chat scripts for ag-ui protocol > should match snapshot for chat scripts with iam auth > agentcore.ts (ag-ui, iam) 1`] = `
|
|
281
|
+
"// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
|
|
282
|
+
import { randomUUID } from 'node:crypto';
|
|
283
|
+
import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
|
|
284
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
285
|
+
import { AwsClient } from 'aws4fetch';
|
|
286
|
+
|
|
287
|
+
const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
|
|
288
|
+
|
|
289
|
+
// AgentCore session ids must be at least 33 characters.
|
|
290
|
+
export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
|
|
291
|
+
|
|
292
|
+
export interface RemoteAgent {
|
|
293
|
+
/** ARN of the deployed Bedrock AgentCore runtime. */
|
|
294
|
+
arn: string;
|
|
295
|
+
/** AWS region parsed from the runtime ARN. */
|
|
296
|
+
region: string;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
|
|
300
|
+
export const resolveRemoteAgent = async (): Promise<
|
|
301
|
+
RemoteAgent | undefined
|
|
302
|
+
> => {
|
|
303
|
+
const application = process.env.RUNTIME_CONFIG_APP_ID;
|
|
304
|
+
if (!application) {
|
|
305
|
+
return undefined;
|
|
306
|
+
}
|
|
307
|
+
const config = (await getAppConfig('agentcore', {
|
|
308
|
+
application,
|
|
309
|
+
environment: 'default',
|
|
310
|
+
transform: 'json',
|
|
311
|
+
})) as { agentRuntimes?: Record<string, { arn: string }> };
|
|
312
|
+
const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
|
|
313
|
+
if (!arn) {
|
|
314
|
+
throw new Error(
|
|
315
|
+
\`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
return { arn, region: arn.split(':')[3] };
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
// A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
|
|
322
|
+
export const createAgentCoreFetch = (region: string): typeof fetch => {
|
|
323
|
+
const credentialProvider = fromNodeProviderChain();
|
|
324
|
+
return async (input, init) => {
|
|
325
|
+
const headers = new Headers(init?.headers);
|
|
326
|
+
headers.set(SESSION_HEADER, SESSION_ID);
|
|
327
|
+
const client = new AwsClient({
|
|
328
|
+
...(await credentialProvider()),
|
|
329
|
+
service: 'bedrock-agentcore',
|
|
330
|
+
region,
|
|
331
|
+
});
|
|
332
|
+
return client.fetch(input, { ...init, headers });
|
|
333
|
+
};
|
|
334
|
+
};
|
|
335
|
+
"
|
|
336
|
+
`;
|
|
337
|
+
|
|
338
|
+
exports[`ts#agent generator > chat scripts for ag-ui protocol > should match snapshot for chat scripts with iam auth > chat.ts (ag-ui, iam) 1`] = `
|
|
339
|
+
"// Chat CLI for TestProjectAgent (AG-UI protocol). Connects to the local
|
|
340
|
+
// \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
|
|
341
|
+
import { AGUIChatAdapter, chatLoop } from 'agent-chat-cli';
|
|
342
|
+
import { createAgentCoreFetch, resolveRemoteAgent } from './agentcore.js';
|
|
343
|
+
|
|
344
|
+
const remote = await resolveRemoteAgent();
|
|
345
|
+
|
|
346
|
+
const url = remote
|
|
347
|
+
? \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}/invocations?qualifier=DEFAULT\`
|
|
348
|
+
: process.env.URL!;
|
|
349
|
+
|
|
350
|
+
// Remote requests are authenticated via a custom fetch; locally the default agent talks plain HTTP.
|
|
351
|
+
const fetchImpl = remote ? createAgentCoreFetch(remote.region) : undefined;
|
|
352
|
+
|
|
353
|
+
await chatLoop(new AGUIChatAdapter({ fetch: fetchImpl }), url);
|
|
354
|
+
"
|
|
355
|
+
`;
|
|
356
|
+
|
|
357
|
+
exports[`ts#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with cognito auth > agentcore.ts (http, cognito) 1`] = `
|
|
358
|
+
"// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
|
|
359
|
+
import { randomUUID } from 'node:crypto';
|
|
360
|
+
import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
|
|
361
|
+
|
|
362
|
+
const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
|
|
363
|
+
|
|
364
|
+
// AgentCore session ids must be at least 33 characters.
|
|
365
|
+
export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
|
|
366
|
+
|
|
367
|
+
export interface RemoteAgent {
|
|
368
|
+
/** ARN of the deployed Bedrock AgentCore runtime. */
|
|
369
|
+
arn: string;
|
|
370
|
+
/** AWS region parsed from the runtime ARN. */
|
|
371
|
+
region: string;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
|
|
375
|
+
export const resolveRemoteAgent = async (): Promise<
|
|
376
|
+
RemoteAgent | undefined
|
|
377
|
+
> => {
|
|
378
|
+
const application = process.env.RUNTIME_CONFIG_APP_ID;
|
|
379
|
+
if (!application) {
|
|
380
|
+
return undefined;
|
|
381
|
+
}
|
|
382
|
+
const config = (await getAppConfig('agentcore', {
|
|
383
|
+
application,
|
|
384
|
+
environment: 'default',
|
|
385
|
+
transform: 'json',
|
|
386
|
+
})) as { agentRuntimes?: Record<string, { arn: string }> };
|
|
387
|
+
const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
|
|
388
|
+
if (!arn) {
|
|
389
|
+
throw new Error(
|
|
390
|
+
\`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
|
|
391
|
+
);
|
|
392
|
+
}
|
|
393
|
+
return { arn, region: arn.split(':')[3] };
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
/** The Cognito access token used to authenticate with the deployed agent. */
|
|
397
|
+
export const getAccessToken = (): string => {
|
|
398
|
+
const accessToken = process.env.AGENT_ACCESS_TOKEN;
|
|
399
|
+
if (!accessToken) {
|
|
400
|
+
throw new Error(
|
|
401
|
+
'AGENT_ACCESS_TOKEN is not set. Provide a Cognito access token to chat with the deployed agent.',
|
|
402
|
+
);
|
|
403
|
+
}
|
|
404
|
+
return accessToken;
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
// A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
|
|
408
|
+
export const createAgentCoreFetch = (): typeof fetch => {
|
|
409
|
+
const accessToken = getAccessToken();
|
|
410
|
+
return (input, init) => {
|
|
411
|
+
const headers = new Headers(init?.headers);
|
|
412
|
+
headers.set(SESSION_HEADER, SESSION_ID);
|
|
413
|
+
headers.set('Authorization', \`Bearer \${accessToken}\`);
|
|
414
|
+
return fetch(input, { ...init, headers });
|
|
415
|
+
};
|
|
416
|
+
};
|
|
417
|
+
"
|
|
418
|
+
`;
|
|
419
|
+
|
|
420
|
+
exports[`ts#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with cognito auth > chat.ts (http, cognito) 1`] = `
|
|
421
|
+
"// Chat CLI for TestProjectAgent (HTTP / tRPC WebSocket). Connects to the local
|
|
422
|
+
// \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
|
|
423
|
+
import { chatLoop, type ChatAdapter } from 'agent-chat-cli';
|
|
424
|
+
import { TestProjectAgentClient } from '../../src/agent/client.js';
|
|
425
|
+
import { resolveRemoteAgent, SESSION_ID, getAccessToken } from './agentcore.js';
|
|
426
|
+
|
|
427
|
+
const remote = await resolveRemoteAgent();
|
|
428
|
+
|
|
429
|
+
class TrpcWebSocketAdapter implements ChatAdapter {
|
|
430
|
+
private client!: ReturnType<typeof TestProjectAgentClient.local>;
|
|
431
|
+
|
|
432
|
+
async connect(url: string) {
|
|
433
|
+
this.client = remote
|
|
434
|
+
? TestProjectAgentClient.withJwtAuth({
|
|
435
|
+
agentRuntimeArn: remote.arn,
|
|
436
|
+
sessionId: SESSION_ID,
|
|
437
|
+
accessTokenProvider: async () => getAccessToken(),
|
|
438
|
+
})
|
|
439
|
+
: TestProjectAgentClient.local({ url, sessionId: SESSION_ID });
|
|
440
|
+
return { agentName: 'TestProjectAgent' };
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
async *sendMessage(text: string): AsyncIterable<string> {
|
|
444
|
+
const stream = new ReadableStream<string>({
|
|
445
|
+
start: (controller) => {
|
|
446
|
+
this.client.invoke.subscribe(
|
|
447
|
+
{ prompt: text },
|
|
448
|
+
{
|
|
449
|
+
onData: (chunk: string) => controller.enqueue(chunk),
|
|
450
|
+
onComplete: () => controller.close(),
|
|
451
|
+
onError: (err: unknown) => controller.error(err),
|
|
452
|
+
},
|
|
453
|
+
);
|
|
454
|
+
},
|
|
455
|
+
});
|
|
456
|
+
|
|
457
|
+
yield* stream as unknown as AsyncIterable<string>;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
await chatLoop(new TrpcWebSocketAdapter(), process.env.URL ?? '');
|
|
462
|
+
"
|
|
463
|
+
`;
|
|
464
|
+
|
|
465
|
+
exports[`ts#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with iam auth > agentcore.ts (http, iam) 1`] = `
|
|
466
|
+
"// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
|
|
467
|
+
import { randomUUID } from 'node:crypto';
|
|
468
|
+
import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
|
|
469
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
470
|
+
import { AwsClient } from 'aws4fetch';
|
|
471
|
+
|
|
472
|
+
const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
|
|
473
|
+
|
|
474
|
+
// AgentCore session ids must be at least 33 characters.
|
|
475
|
+
export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
|
|
476
|
+
|
|
477
|
+
export interface RemoteAgent {
|
|
478
|
+
/** ARN of the deployed Bedrock AgentCore runtime. */
|
|
479
|
+
arn: string;
|
|
480
|
+
/** AWS region parsed from the runtime ARN. */
|
|
481
|
+
region: string;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
|
|
485
|
+
export const resolveRemoteAgent = async (): Promise<
|
|
486
|
+
RemoteAgent | undefined
|
|
487
|
+
> => {
|
|
488
|
+
const application = process.env.RUNTIME_CONFIG_APP_ID;
|
|
489
|
+
if (!application) {
|
|
490
|
+
return undefined;
|
|
491
|
+
}
|
|
492
|
+
const config = (await getAppConfig('agentcore', {
|
|
493
|
+
application,
|
|
494
|
+
environment: 'default',
|
|
495
|
+
transform: 'json',
|
|
496
|
+
})) as { agentRuntimes?: Record<string, { arn: string }> };
|
|
497
|
+
const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
|
|
498
|
+
if (!arn) {
|
|
499
|
+
throw new Error(
|
|
500
|
+
\`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
|
|
501
|
+
);
|
|
502
|
+
}
|
|
503
|
+
return { arn, region: arn.split(':')[3] };
|
|
504
|
+
};
|
|
505
|
+
|
|
506
|
+
// A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
|
|
507
|
+
export const createAgentCoreFetch = (region: string): typeof fetch => {
|
|
508
|
+
const credentialProvider = fromNodeProviderChain();
|
|
509
|
+
return async (input, init) => {
|
|
510
|
+
const headers = new Headers(init?.headers);
|
|
511
|
+
headers.set(SESSION_HEADER, SESSION_ID);
|
|
512
|
+
const client = new AwsClient({
|
|
513
|
+
...(await credentialProvider()),
|
|
514
|
+
service: 'bedrock-agentcore',
|
|
515
|
+
region,
|
|
516
|
+
});
|
|
517
|
+
return client.fetch(input, { ...init, headers });
|
|
518
|
+
};
|
|
519
|
+
};
|
|
520
|
+
"
|
|
521
|
+
`;
|
|
522
|
+
|
|
523
|
+
exports[`ts#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with iam auth > chat.ts (http, iam) 1`] = `
|
|
524
|
+
"// Chat CLI for TestProjectAgent (HTTP / tRPC WebSocket). Connects to the local
|
|
525
|
+
// \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
|
|
526
|
+
import { chatLoop, type ChatAdapter } from 'agent-chat-cli';
|
|
527
|
+
import { TestProjectAgentClient } from '../../src/agent/client.js';
|
|
528
|
+
import { resolveRemoteAgent, SESSION_ID } from './agentcore.js';
|
|
529
|
+
|
|
530
|
+
const remote = await resolveRemoteAgent();
|
|
531
|
+
|
|
532
|
+
class TrpcWebSocketAdapter implements ChatAdapter {
|
|
533
|
+
private client!: ReturnType<typeof TestProjectAgentClient.local>;
|
|
534
|
+
|
|
535
|
+
async connect(url: string) {
|
|
536
|
+
this.client = remote
|
|
537
|
+
? TestProjectAgentClient.withIamAuth({
|
|
538
|
+
agentRuntimeArn: remote.arn,
|
|
539
|
+
sessionId: SESSION_ID,
|
|
540
|
+
})
|
|
541
|
+
: TestProjectAgentClient.local({ url, sessionId: SESSION_ID });
|
|
542
|
+
return { agentName: 'TestProjectAgent' };
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
async *sendMessage(text: string): AsyncIterable<string> {
|
|
546
|
+
const stream = new ReadableStream<string>({
|
|
547
|
+
start: (controller) => {
|
|
548
|
+
this.client.invoke.subscribe(
|
|
549
|
+
{ prompt: text },
|
|
550
|
+
{
|
|
551
|
+
onData: (chunk: string) => controller.enqueue(chunk),
|
|
552
|
+
onComplete: () => controller.close(),
|
|
553
|
+
onError: (err: unknown) => controller.error(err),
|
|
554
|
+
},
|
|
555
|
+
);
|
|
556
|
+
},
|
|
557
|
+
});
|
|
558
|
+
|
|
559
|
+
yield* stream as unknown as AsyncIterable<string>;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
await chatLoop(new TrpcWebSocketAdapter(), process.env.URL ?? '');
|
|
564
|
+
"
|
|
565
|
+
`;
|
|
566
|
+
|
|
567
|
+
exports[`ts#agent generator > should generate session.ts using S3 storage by default > session.ts (s3) 1`] = `
|
|
568
|
+
"import { SessionManager } from '@strands-agents/sdk';
|
|
569
|
+
import { LocalFileStorage, S3Storage } from '@strands-agents/sdk/storage';
|
|
570
|
+
import {
|
|
571
|
+
getCurrentSessionId,
|
|
572
|
+
getAgentCoreRuntimeConfig,
|
|
573
|
+
} from '@proj/agent-connection';
|
|
574
|
+
|
|
575
|
+
/**
|
|
576
|
+
* Returns a SessionManager for persisting conversation state across
|
|
577
|
+
* invocations. Local development always uses local file storage for
|
|
578
|
+
* convenience, regardless of the configured session option. Without a
|
|
579
|
+
* configured session option, conversation state is kept in memory only and
|
|
580
|
+
* does not survive process restarts.
|
|
581
|
+
*/
|
|
582
|
+
export const getSessionManager = async (): Promise<SessionManager> => {
|
|
583
|
+
const sessionId = getCurrentSessionId();
|
|
584
|
+
if (!sessionId) {
|
|
585
|
+
throw new Error(
|
|
586
|
+
'No current session id — cannot resolve a SessionManager outside of a request scope.',
|
|
587
|
+
);
|
|
588
|
+
}
|
|
589
|
+
if (process.env.LOCAL_DEV === 'true') {
|
|
590
|
+
return new SessionManager({
|
|
591
|
+
sessionId,
|
|
592
|
+
storage: new LocalFileStorage(
|
|
593
|
+
'../../tmp/agents/strands/test-project-agent',
|
|
594
|
+
),
|
|
595
|
+
});
|
|
596
|
+
}
|
|
597
|
+
const config = await getAgentCoreRuntimeConfig();
|
|
598
|
+
const bucketName =
|
|
599
|
+
config.agentRuntimes?.['TestProjectAgent']?.session?.bucketName;
|
|
600
|
+
if (!bucketName) {
|
|
601
|
+
throw new Error(
|
|
602
|
+
"No S3 bucket configured for this agent's session in runtime configuration.",
|
|
603
|
+
);
|
|
604
|
+
}
|
|
605
|
+
return new SessionManager({ sessionId, storage: new S3Storage(bucketName) });
|
|
606
|
+
};
|
|
607
|
+
"
|
|
608
|
+
`;
|
|
609
|
+
|
|
610
|
+
exports[`ts#agent generator > should generate session.ts using in-memory storage when session is in-memory > session.ts (in-memory) 1`] = `
|
|
611
|
+
"import { SessionManager } from '@strands-agents/sdk';
|
|
612
|
+
import { LocalFileStorage, InMemoryStorage } from '@strands-agents/sdk/storage';
|
|
613
|
+
import { getCurrentSessionId } from '@proj/agent-connection';
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* Returns a SessionManager for persisting conversation state across
|
|
617
|
+
* invocations. Local development always uses local file storage for
|
|
618
|
+
* convenience, regardless of the configured session option. Without a
|
|
619
|
+
* configured session option, conversation state is kept in memory only and
|
|
620
|
+
* does not survive process restarts.
|
|
621
|
+
*/
|
|
622
|
+
export const getSessionManager = async (): Promise<SessionManager> => {
|
|
623
|
+
const sessionId = getCurrentSessionId();
|
|
624
|
+
if (!sessionId) {
|
|
625
|
+
throw new Error(
|
|
626
|
+
'No current session id — cannot resolve a SessionManager outside of a request scope.',
|
|
627
|
+
);
|
|
628
|
+
}
|
|
629
|
+
if (process.env.LOCAL_DEV === 'true') {
|
|
630
|
+
return new SessionManager({
|
|
631
|
+
sessionId,
|
|
632
|
+
storage: new LocalFileStorage(
|
|
633
|
+
'../../tmp/agents/strands/test-project-agent',
|
|
634
|
+
),
|
|
635
|
+
});
|
|
636
|
+
}
|
|
637
|
+
return new SessionManager({ sessionId, storage: new InMemoryStorage() });
|
|
638
|
+
};
|
|
639
|
+
"
|
|
640
|
+
`;
|
|
641
|
+
|
|
3
642
|
exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > agent-Dockerfile 1`] = `
|
|
4
|
-
"FROM public.ecr.aws/docker/library/node:lts-
|
|
643
|
+
"FROM public.ecr.aws/docker/library/node:lts-slim
|
|
644
|
+
|
|
645
|
+
# Apply the distribution's security updates: base image tags lag behind the
|
|
646
|
+
# security suite, so its OS packages carry fixed HIGH/CRITICAL vulnerabilities
|
|
647
|
+
# flagged by the image scan.
|
|
648
|
+
RUN apt-get update && \\
|
|
649
|
+
apt-get upgrade -y --no-install-recommends && \\
|
|
650
|
+
rm -rf /var/lib/apt/lists/*
|
|
651
|
+
|
|
652
|
+
# Upgrade npm to a version free of known HIGH/CRITICAL vulnerabilities
|
|
653
|
+
RUN npm install -g npm@12.0.2
|
|
5
654
|
|
|
6
655
|
WORKDIR /app
|
|
7
656
|
|
|
8
657
|
# Add AWS Distro for OpenTelemetry for observability
|
|
9
658
|
# https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/observability-configure.html
|
|
10
|
-
|
|
659
|
+
# The overrides pin transitive dependencies with known HIGH/CRITICAL
|
|
660
|
+
# vulnerabilities to fixed versions. npm is removed once the install is done —
|
|
661
|
+
# the runtime only needs node, and npm's own bundled dependencies would
|
|
662
|
+
# otherwise carry vulnerabilities into the image.
|
|
663
|
+
RUN npm init -y \\
|
|
664
|
+
&& npm pkg set "overrides.@opentelemetry/propagator-jaeger=2.10.0" \\
|
|
665
|
+
&& npm pkg set "overrides.minimatch=10.2.6" \\
|
|
666
|
+
&& npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation@0.12.0 \\
|
|
667
|
+
&& npm uninstall -g npm
|
|
11
668
|
|
|
12
669
|
# Copy bundled agent
|
|
13
670
|
COPY index.js /app
|
|
@@ -21,9 +678,22 @@ CMD [ "node", "--require", "@aws/aws-distro-opentelemetry-node-autoinstrumentati
|
|
|
21
678
|
`;
|
|
22
679
|
|
|
23
680
|
exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > agent-construct.ts 1`] = `
|
|
24
|
-
"import { Lazy, Names } from 'aws-cdk-lib';
|
|
681
|
+
"import { Fn, Lazy, Names, RemovalPolicy, Stack } from 'aws-cdk-lib';
|
|
25
682
|
import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
|
|
26
683
|
import { Connections, IConnectable } from 'aws-cdk-lib/aws-ec2';
|
|
684
|
+
import {
|
|
685
|
+
BlockPublicAccess,
|
|
686
|
+
Bucket,
|
|
687
|
+
BucketEncryption,
|
|
688
|
+
} from 'aws-cdk-lib/aws-s3';
|
|
689
|
+
import { Key } from 'aws-cdk-lib/aws-kms';
|
|
690
|
+
import {
|
|
691
|
+
CfnDelivery,
|
|
692
|
+
CfnDeliveryDestination,
|
|
693
|
+
CfnDeliverySource,
|
|
694
|
+
LogGroup,
|
|
695
|
+
RetentionDays,
|
|
696
|
+
} from 'aws-cdk-lib/aws-logs';
|
|
27
697
|
import { Construct } from 'constructs';
|
|
28
698
|
import * as path from 'path';
|
|
29
699
|
import * as url from 'url';
|
|
@@ -35,10 +705,13 @@ import {
|
|
|
35
705
|
} from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
36
706
|
import {
|
|
37
707
|
PolicyStatement,
|
|
708
|
+
Effect,
|
|
709
|
+
ServicePrincipal,
|
|
38
710
|
IGrantable,
|
|
39
711
|
IPrincipal,
|
|
40
712
|
Grant,
|
|
41
713
|
} from 'aws-cdk-lib/aws-iam';
|
|
714
|
+
import { suppressRules } from '../../../core/checkov.js';
|
|
42
715
|
import { RuntimeConfig } from '../../../core/runtime-config.js';
|
|
43
716
|
import { findWorkspaceRoot } from '../../../core/workspace.js';
|
|
44
717
|
|
|
@@ -48,7 +721,16 @@ export type SnapshotBedrockAgentProps = Omit<
|
|
|
48
721
|
| 'protocolConfiguration'
|
|
49
722
|
| 'agentRuntimeArtifact'
|
|
50
723
|
| 'authorizerConfiguration'
|
|
51
|
-
|
|
724
|
+
> & {
|
|
725
|
+
/**
|
|
726
|
+
* Removal policy for the session bucket holding the agent's conversation
|
|
727
|
+
* history. Defaults to retaining it so a stack \`destroy\` doesn't silently
|
|
728
|
+
* delete session data — set to \`RemovalPolicy.DESTROY\` for sandbox/CI teardown.
|
|
729
|
+
*
|
|
730
|
+
* @default RemovalPolicy.RETAIN
|
|
731
|
+
*/
|
|
732
|
+
readonly sessionBucketRemovalPolicy?: RemovalPolicy;
|
|
733
|
+
};
|
|
52
734
|
|
|
53
735
|
export class SnapshotBedrockAgent
|
|
54
736
|
extends Construct
|
|
@@ -56,6 +738,10 @@ export class SnapshotBedrockAgent
|
|
|
56
738
|
{
|
|
57
739
|
public readonly dockerImage: AgentRuntimeArtifact;
|
|
58
740
|
public readonly agentCoreRuntime: Runtime;
|
|
741
|
+
/** Default Gateway target name for this agent. */
|
|
742
|
+
public readonly agentName = 'snapshot-bedrock-agent';
|
|
743
|
+
/** Inbound auth — a fronting Gateway uses this to pick its outbound credential. */
|
|
744
|
+
public readonly auth = 'iam';
|
|
59
745
|
|
|
60
746
|
constructor(scope: Construct, id: string, props?: SnapshotBedrockAgentProps) {
|
|
61
747
|
super(scope, id);
|
|
@@ -72,6 +758,114 @@ export class SnapshotBedrockAgent
|
|
|
72
758
|
platform: Platform.LINUX_ARM64,
|
|
73
759
|
});
|
|
74
760
|
|
|
761
|
+
const { sessionBucketRemovalPolicy = RemovalPolicy.RETAIN, ...restProps } =
|
|
762
|
+
props ?? {};
|
|
763
|
+
|
|
764
|
+
const sessionKey = new Key(this, 'SessionKey', {
|
|
765
|
+
enableKeyRotation: true,
|
|
766
|
+
});
|
|
767
|
+
|
|
768
|
+
// Allow CloudWatch Logs to use the session key for server access log delivery.
|
|
769
|
+
const stack = Stack.of(this);
|
|
770
|
+
sessionKey.addToResourcePolicy(
|
|
771
|
+
new PolicyStatement({
|
|
772
|
+
effect: Effect.ALLOW,
|
|
773
|
+
principals: [
|
|
774
|
+
new ServicePrincipal(\`logs.\${stack.region}.amazonaws.com\`),
|
|
775
|
+
],
|
|
776
|
+
actions: [
|
|
777
|
+
'kms:Encrypt',
|
|
778
|
+
'kms:Decrypt',
|
|
779
|
+
'kms:ReEncrypt*',
|
|
780
|
+
'kms:GenerateDataKey*',
|
|
781
|
+
'kms:DescribeKey',
|
|
782
|
+
],
|
|
783
|
+
resources: ['*'],
|
|
784
|
+
conditions: {
|
|
785
|
+
ArnLike: {
|
|
786
|
+
'kms:EncryptionContext:aws:logs:arn': \`arn:aws:logs:\${stack.region}:\${stack.account}:log-group:*\`,
|
|
787
|
+
},
|
|
788
|
+
},
|
|
789
|
+
}),
|
|
790
|
+
);
|
|
791
|
+
|
|
792
|
+
const sessionAccessLogs = new LogGroup(this, 'SessionAccessLogs', {
|
|
793
|
+
retention: RetentionDays.ONE_YEAR,
|
|
794
|
+
encryptionKey: sessionKey,
|
|
795
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
796
|
+
});
|
|
797
|
+
|
|
798
|
+
const sessionBucket = new Bucket(this, 'SessionBucket', {
|
|
799
|
+
enforceSSL: true,
|
|
800
|
+
removalPolicy: sessionBucketRemovalPolicy,
|
|
801
|
+
encryption: BucketEncryption.KMS,
|
|
802
|
+
encryptionKey: sessionKey,
|
|
803
|
+
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
804
|
+
});
|
|
805
|
+
suppressRules(
|
|
806
|
+
sessionBucket,
|
|
807
|
+
['CKV_AWS_21'],
|
|
808
|
+
'Session data does not need versioning enabled',
|
|
809
|
+
);
|
|
810
|
+
suppressRules(
|
|
811
|
+
sessionBucket,
|
|
812
|
+
['CKV2_AWS_61'],
|
|
813
|
+
'Lifecycle configuration not required for session data',
|
|
814
|
+
);
|
|
815
|
+
suppressRules(
|
|
816
|
+
sessionBucket,
|
|
817
|
+
['CKV_AWS_144'],
|
|
818
|
+
'Cross-region replication not required for session data',
|
|
819
|
+
);
|
|
820
|
+
suppressRules(
|
|
821
|
+
sessionBucket,
|
|
822
|
+
['CKV2_AWS_62'],
|
|
823
|
+
'Event notifications not required for session data',
|
|
824
|
+
);
|
|
825
|
+
suppressRules(
|
|
826
|
+
sessionBucket,
|
|
827
|
+
['CKV_AWS_18'],
|
|
828
|
+
'Server access logs are delivered to CloudWatch Logs',
|
|
829
|
+
);
|
|
830
|
+
|
|
831
|
+
const sessionAccessLogsSource: CfnDeliverySource = new CfnDeliverySource(
|
|
832
|
+
this,
|
|
833
|
+
'SessionAccessLogsSource',
|
|
834
|
+
{
|
|
835
|
+
name: Lazy.string({
|
|
836
|
+
produce: () =>
|
|
837
|
+
Names.uniqueResourceName(sessionAccessLogsSource, {
|
|
838
|
+
maxLength: 60,
|
|
839
|
+
}),
|
|
840
|
+
}),
|
|
841
|
+
logType: 'S3_SERVER_ACCESS_LOGS',
|
|
842
|
+
resourceArn: sessionBucket.bucketArn,
|
|
843
|
+
},
|
|
844
|
+
);
|
|
845
|
+
const sessionBucketPolicy = sessionBucket.policy;
|
|
846
|
+
if (sessionBucketPolicy) {
|
|
847
|
+
sessionAccessLogsSource.node.addDependency(sessionBucketPolicy);
|
|
848
|
+
}
|
|
849
|
+
const sessionAccessLogsDestination: CfnDeliveryDestination =
|
|
850
|
+
new CfnDeliveryDestination(this, 'SessionAccessLogsDestination', {
|
|
851
|
+
name: Lazy.string({
|
|
852
|
+
produce: () =>
|
|
853
|
+
Names.uniqueResourceName(sessionAccessLogsDestination, {
|
|
854
|
+
maxLength: 60,
|
|
855
|
+
}),
|
|
856
|
+
}),
|
|
857
|
+
destinationResourceArn: sessionAccessLogs.logGroupArn,
|
|
858
|
+
});
|
|
859
|
+
const sessionAccessLogsDelivery = new CfnDelivery(
|
|
860
|
+
this,
|
|
861
|
+
'SessionAccessLogsDelivery',
|
|
862
|
+
{
|
|
863
|
+
deliverySourceName: sessionAccessLogsSource.name,
|
|
864
|
+
deliveryDestinationArn: sessionAccessLogsDestination.attrArn,
|
|
865
|
+
},
|
|
866
|
+
);
|
|
867
|
+
sessionAccessLogsDelivery.addDependency(sessionAccessLogsSource);
|
|
868
|
+
|
|
75
869
|
this.agentCoreRuntime = new Runtime(this, 'SnapshotBedrockAgent', {
|
|
76
870
|
runtimeName: Lazy.string({
|
|
77
871
|
produce: () =>
|
|
@@ -79,10 +873,10 @@ export class SnapshotBedrockAgent
|
|
|
79
873
|
}),
|
|
80
874
|
protocolConfiguration: ProtocolType.HTTP,
|
|
81
875
|
agentRuntimeArtifact: this.dockerImage,
|
|
82
|
-
...
|
|
876
|
+
...restProps,
|
|
83
877
|
environmentVariables: {
|
|
84
878
|
RUNTIME_CONFIG_APP_ID: rc.appConfigApplicationId,
|
|
85
|
-
...
|
|
879
|
+
...restProps?.environmentVariables,
|
|
86
880
|
},
|
|
87
881
|
});
|
|
88
882
|
|
|
@@ -100,11 +894,18 @@ export class SnapshotBedrockAgent
|
|
|
100
894
|
}),
|
|
101
895
|
);
|
|
102
896
|
|
|
897
|
+
sessionBucket.grantReadWrite(this.agentCoreRuntime);
|
|
898
|
+
|
|
103
899
|
rc.grantReadAppConfig(this.agentCoreRuntime);
|
|
104
900
|
|
|
105
901
|
rc.set('agentcore', 'agentRuntimes', {
|
|
106
902
|
...rc.get('agentcore').agentRuntimes,
|
|
107
|
-
SnapshotBedrockAgent:
|
|
903
|
+
SnapshotBedrockAgent: {
|
|
904
|
+
arn: this.agentCoreRuntime.agentRuntimeArn,
|
|
905
|
+
session: {
|
|
906
|
+
bucketName: sessionBucket.bucketName,
|
|
907
|
+
},
|
|
908
|
+
},
|
|
108
909
|
});
|
|
109
910
|
}
|
|
110
911
|
|
|
@@ -122,6 +923,22 @@ export class SnapshotBedrockAgent
|
|
|
122
923
|
return this.agentCoreRuntime.connections;
|
|
123
924
|
}
|
|
124
925
|
|
|
926
|
+
/**
|
|
927
|
+
* The HTTPS invocation URL of the runtime.
|
|
928
|
+
*/
|
|
929
|
+
public get invocationUrl(): string {
|
|
930
|
+
// The URL must URL-encode the runtime ARN (':' -> '%3A', '/' -> '%2F').
|
|
931
|
+
// The ARN is a CDK token, so encode at deploy time via Fn.join/Fn.split.
|
|
932
|
+
const encodedArn = Fn.join(
|
|
933
|
+
'%2F',
|
|
934
|
+
Fn.split(
|
|
935
|
+
'/',
|
|
936
|
+
Fn.join('%3A', Fn.split(':', this.agentCoreRuntime.agentRuntimeArn)),
|
|
937
|
+
),
|
|
938
|
+
);
|
|
939
|
+
return \`https://bedrock-agentcore.\${Stack.of(this).region}.amazonaws.com/runtimes/\${encodedArn}/invocations?qualifier=DEFAULT\`;
|
|
940
|
+
}
|
|
941
|
+
|
|
125
942
|
/**
|
|
126
943
|
* Grants IAM permissions to invoke this agent runtime.
|
|
127
944
|
*
|
|
@@ -156,13 +973,23 @@ exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime
|
|
|
156
973
|
exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > core-index.ts 1`] = `
|
|
157
974
|
"export * from './app.js';
|
|
158
975
|
export * from './checkov.js';
|
|
976
|
+
export * from './cloudfront.js';
|
|
159
977
|
export * from './runtime-config.js';
|
|
160
978
|
export * from './workspace.js';
|
|
161
979
|
"
|
|
162
980
|
`;
|
|
163
981
|
|
|
164
982
|
exports[`ts#agent generator > should match snapshot for Terraform generated files > terraform-agent.tf 1`] = `
|
|
165
|
-
"
|
|
983
|
+
"terraform {
|
|
984
|
+
required_providers {
|
|
985
|
+
random = {
|
|
986
|
+
source = "hashicorp/random"
|
|
987
|
+
version = "3.9.0"
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
variable "env" {
|
|
166
993
|
description = "Environment variables to pass to the agent core runtime"
|
|
167
994
|
type = map(string)
|
|
168
995
|
default = {}
|
|
@@ -184,21 +1011,189 @@ variable "tags" {
|
|
|
184
1011
|
default = {}
|
|
185
1012
|
}
|
|
186
1013
|
|
|
1014
|
+
# VPC Configuration (optional)
|
|
1015
|
+
variable "enable_vpc" {
|
|
1016
|
+
description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
|
|
1017
|
+
type = bool
|
|
1018
|
+
default = false
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
variable "vpc_id" {
|
|
1022
|
+
description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
|
|
1023
|
+
type = string
|
|
1024
|
+
default = null
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
variable "subnet_ids" {
|
|
1028
|
+
description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
|
|
1029
|
+
type = list(string)
|
|
1030
|
+
default = null
|
|
1031
|
+
}
|
|
1032
|
+
|
|
187
1033
|
variable "appconfig_application_id" {
|
|
188
1034
|
description = "ID of the shared runtime-config AppConfig application (from \`core/runtime-config/appconfig.application_id\`). The agent reads its runtime configuration from this application."
|
|
189
1035
|
type = string
|
|
190
1036
|
}
|
|
191
1037
|
|
|
1038
|
+
variable "session_force_destroy" {
|
|
1039
|
+
description = "Whether to allow the session bucket to be destroyed even if it still contains objects."
|
|
1040
|
+
type = bool
|
|
1041
|
+
default = false
|
|
1042
|
+
}
|
|
1043
|
+
|
|
192
1044
|
variable "appconfig_application_arn" {
|
|
193
1045
|
description = "ARN of the shared runtime-config AppConfig application (from \`core/runtime-config/appconfig.application_arn\`). Used to scope the IAM read permission granted to the agent runtime."
|
|
194
1046
|
type = string
|
|
195
1047
|
}
|
|
196
1048
|
|
|
1049
|
+
data "aws_region" "current" {}
|
|
1050
|
+
data "aws_caller_identity" "current" {}
|
|
1051
|
+
|
|
1052
|
+
locals {
|
|
1053
|
+
# Delivery source/destination names have a 60 character maximum. Truncate
|
|
1054
|
+
# the agent name so these stay within the limit.
|
|
1055
|
+
session_access_logs_name_prefix = substr("terraform-snapshot-agent", 0, 30)
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
# Uniquifies resource names below so this construct can be deployed more than
|
|
1059
|
+
# once (e.g. across stages) within the same account/region.
|
|
1060
|
+
resource "random_id" "session_unique_suffix" {
|
|
1061
|
+
byte_length = 4
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
# KMS key encrypting the session bucket and its server access logs.
|
|
1065
|
+
resource "aws_kms_key" "session" {
|
|
1066
|
+
description = "KMS key for terraform-snapshot-agent agent session data"
|
|
1067
|
+
enable_key_rotation = true
|
|
1068
|
+
deletion_window_in_days = 7
|
|
1069
|
+
|
|
1070
|
+
policy = jsonencode({
|
|
1071
|
+
Version = "2012-10-17"
|
|
1072
|
+
Statement = [
|
|
1073
|
+
{
|
|
1074
|
+
Sid = "EnableIAMUserPermissions"
|
|
1075
|
+
Effect = "Allow"
|
|
1076
|
+
Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
|
|
1077
|
+
Action = "kms:*"
|
|
1078
|
+
Resource = "*"
|
|
1079
|
+
},
|
|
1080
|
+
{
|
|
1081
|
+
Sid = "AllowCloudWatchLogs"
|
|
1082
|
+
Effect = "Allow"
|
|
1083
|
+
Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
|
|
1084
|
+
Action = [
|
|
1085
|
+
"kms:Encrypt",
|
|
1086
|
+
"kms:Decrypt",
|
|
1087
|
+
"kms:ReEncrypt*",
|
|
1088
|
+
"kms:GenerateDataKey*",
|
|
1089
|
+
"kms:DescribeKey"
|
|
1090
|
+
]
|
|
1091
|
+
Resource = "*"
|
|
1092
|
+
Condition = {
|
|
1093
|
+
ArnLike = {
|
|
1094
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:*"
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
]
|
|
1099
|
+
})
|
|
1100
|
+
|
|
1101
|
+
tags = var.tags
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
# CloudWatch log group receiving the session bucket's server access logs.
|
|
1105
|
+
resource "aws_cloudwatch_log_group" "session_access_logs" {
|
|
1106
|
+
name = "/aws/s3/terraform-snapshot-agent-session-access-logs-\${random_id.session_unique_suffix.hex}"
|
|
1107
|
+
retention_in_days = 365
|
|
1108
|
+
kms_key_id = aws_kms_key.session.arn
|
|
1109
|
+
|
|
1110
|
+
tags = var.tags
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
# Bucket storing the agent's session data
|
|
1114
|
+
resource "aws_s3_bucket" "session" {
|
|
1115
|
+
bucket = "terraform-snapshot-agent-sessions-\${random_id.session_unique_suffix.hex}"
|
|
1116
|
+
#checkov:skip=CKV2_AWS_61:Lifecycle configuration not required for session data
|
|
1117
|
+
#checkov:skip=CKV_AWS_144:Cross-region replication not required for session data
|
|
1118
|
+
#checkov:skip=CKV2_AWS_62:Event notifications not required for session data
|
|
1119
|
+
#checkov:skip=CKV_AWS_18:Server access logs are delivered to CloudWatch Logs (see aws_cloudwatch_log_delivery.session)
|
|
1120
|
+
#checkov:skip=CKV_AWS_21:Session data does not need versioning enabled
|
|
1121
|
+
force_destroy = var.session_force_destroy
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
resource "aws_s3_bucket_server_side_encryption_configuration" "session" {
|
|
1125
|
+
bucket = aws_s3_bucket.session.id
|
|
1126
|
+
|
|
1127
|
+
rule {
|
|
1128
|
+
apply_server_side_encryption_by_default {
|
|
1129
|
+
kms_master_key_id = aws_kms_key.session.arn
|
|
1130
|
+
sse_algorithm = "aws:kms"
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
resource "aws_s3_bucket_public_access_block" "session" {
|
|
1136
|
+
bucket = aws_s3_bucket.session.id
|
|
1137
|
+
|
|
1138
|
+
block_public_acls = true
|
|
1139
|
+
block_public_policy = true
|
|
1140
|
+
ignore_public_acls = true
|
|
1141
|
+
restrict_public_buckets = true
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
resource "aws_s3_bucket_policy" "session" {
|
|
1145
|
+
bucket = aws_s3_bucket.session.id
|
|
1146
|
+
|
|
1147
|
+
policy = jsonencode({
|
|
1148
|
+
Version = "2012-10-17"
|
|
1149
|
+
Statement = [
|
|
1150
|
+
{
|
|
1151
|
+
Sid = "DenyInsecureConnections"
|
|
1152
|
+
Effect = "Deny"
|
|
1153
|
+
Principal = "*"
|
|
1154
|
+
Action = "s3:*"
|
|
1155
|
+
Resource = [
|
|
1156
|
+
aws_s3_bucket.session.arn,
|
|
1157
|
+
"\${aws_s3_bucket.session.arn}/*"
|
|
1158
|
+
]
|
|
1159
|
+
Condition = {
|
|
1160
|
+
Bool = {
|
|
1161
|
+
"aws:SecureTransport" = "false"
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
]
|
|
1166
|
+
})
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
# Deliver the session bucket's server access logs to CloudWatch Logs.
|
|
1170
|
+
resource "aws_cloudwatch_log_delivery_source" "session" {
|
|
1171
|
+
name = "\${local.session_access_logs_name_prefix}-access-logs-source-\${random_id.session_unique_suffix.hex}"
|
|
1172
|
+
log_type = "S3_SERVER_ACCESS_LOGS"
|
|
1173
|
+
resource_arn = aws_s3_bucket.session.arn
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
resource "aws_cloudwatch_log_delivery_destination" "session" {
|
|
1177
|
+
name = "\${local.session_access_logs_name_prefix}-access-logs-dest-\${random_id.session_unique_suffix.hex}"
|
|
1178
|
+
|
|
1179
|
+
delivery_destination_configuration {
|
|
1180
|
+
destination_resource_arn = aws_cloudwatch_log_group.session_access_logs.arn
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
resource "aws_cloudwatch_log_delivery" "session" {
|
|
1185
|
+
delivery_source_name = aws_cloudwatch_log_delivery_source.session.name
|
|
1186
|
+
delivery_destination_arn = aws_cloudwatch_log_delivery_destination.session.arn
|
|
1187
|
+
}
|
|
1188
|
+
|
|
197
1189
|
module "agent_core_runtime" {
|
|
198
1190
|
source = "../../../core/agent-core"
|
|
199
1191
|
agent_runtime_name = "TerraformSnapshotAgent"
|
|
200
1192
|
docker_image_tag = "proj-terraform-snapshot-agent:latest"
|
|
201
1193
|
server_protocol = "HTTP"
|
|
1194
|
+
enable_vpc = var.enable_vpc
|
|
1195
|
+
vpc_id = var.vpc_id
|
|
1196
|
+
subnet_ids = var.subnet_ids
|
|
202
1197
|
|
|
203
1198
|
env = merge({
|
|
204
1199
|
RUNTIME_CONFIG_APP_ID = var.appconfig_application_id
|
|
@@ -223,6 +1218,29 @@ module "agent_core_runtime" {
|
|
|
223
1218
|
"arn:aws:bedrock:*:*:foundation-model/*",
|
|
224
1219
|
"arn:aws:bedrock:*:*:inference-profile/*"
|
|
225
1220
|
]
|
|
1221
|
+
},
|
|
1222
|
+
# Grant access for the agent to read/write its session data
|
|
1223
|
+
{
|
|
1224
|
+
Effect = "Allow"
|
|
1225
|
+
Action = [
|
|
1226
|
+
"s3:GetObject",
|
|
1227
|
+
"s3:PutObject",
|
|
1228
|
+
"s3:DeleteObject",
|
|
1229
|
+
"s3:ListBucket"
|
|
1230
|
+
]
|
|
1231
|
+
Resource = [
|
|
1232
|
+
aws_s3_bucket.session.arn,
|
|
1233
|
+
"\${aws_s3_bucket.session.arn}/*"
|
|
1234
|
+
]
|
|
1235
|
+
},
|
|
1236
|
+
# Grant access for the agent to use the session bucket's KMS key
|
|
1237
|
+
{
|
|
1238
|
+
Effect = "Allow"
|
|
1239
|
+
Action = [
|
|
1240
|
+
"kms:Decrypt",
|
|
1241
|
+
"kms:GenerateDataKey*"
|
|
1242
|
+
]
|
|
1243
|
+
Resource = [aws_kms_key.session.arn]
|
|
226
1244
|
}
|
|
227
1245
|
], var.additional_iam_policy_statements)
|
|
228
1246
|
tags = var.tags
|
|
@@ -234,7 +1252,7 @@ module "add_agent_runtime_to_runtime_config" {
|
|
|
234
1252
|
|
|
235
1253
|
namespace = "agentcore"
|
|
236
1254
|
key = "agentRuntimes"
|
|
237
|
-
value = { "TerraformSnapshotAgent" = module.agent_core_runtime.agent_core_runtime_arn }
|
|
1255
|
+
value = { "TerraformSnapshotAgent" = { arn = module.agent_core_runtime.agent_core_runtime_arn, session = { bucketName = aws_s3_bucket.session.bucket } } }
|
|
238
1256
|
|
|
239
1257
|
depends_on = [module.agent_core_runtime]
|
|
240
1258
|
}
|
|
@@ -249,10 +1267,20 @@ output "agent_core_runtime_arn" {
|
|
|
249
1267
|
value = module.agent_core_runtime.agent_core_runtime_arn
|
|
250
1268
|
}
|
|
251
1269
|
|
|
1270
|
+
output "invocation_url" {
|
|
1271
|
+
description = "HTTPS invocation URL of the runtime"
|
|
1272
|
+
value = module.agent_core_runtime.invocation_url
|
|
1273
|
+
}
|
|
1274
|
+
|
|
252
1275
|
output "appconfig_application_id" {
|
|
253
1276
|
description = "AppConfig Application ID for runtime config (passthrough of the shared \`appconfig_application_id\` input)."
|
|
254
1277
|
value = var.appconfig_application_id
|
|
255
1278
|
}
|
|
1279
|
+
|
|
1280
|
+
output "security_group_id" {
|
|
1281
|
+
description = "Security group ID of the agent core runtime, for use in ingress rules on resources it must reach (e.g. a database). Null unless enable_vpc is true."
|
|
1282
|
+
value = module.agent_core_runtime.security_group_id
|
|
1283
|
+
}
|
|
256
1284
|
"
|
|
257
1285
|
`;
|
|
258
1286
|
|
|
@@ -263,15 +1291,15 @@ exports[`ts#agent generator > should match snapshot for Terraform generated file
|
|
|
263
1291
|
required_providers {
|
|
264
1292
|
aws = {
|
|
265
1293
|
source = "hashicorp/aws"
|
|
266
|
-
version = "
|
|
1294
|
+
version = "6.60.0"
|
|
267
1295
|
}
|
|
268
1296
|
null = {
|
|
269
1297
|
source = "hashicorp/null"
|
|
270
|
-
version = "
|
|
1298
|
+
version = "3.3.1"
|
|
271
1299
|
}
|
|
272
1300
|
random = {
|
|
273
1301
|
source = "hashicorp/random"
|
|
274
|
-
version = "
|
|
1302
|
+
version = "3.9.0"
|
|
275
1303
|
}
|
|
276
1304
|
}
|
|
277
1305
|
}
|
|
@@ -329,6 +1357,30 @@ variable "additional_iam_policy_statements" {
|
|
|
329
1357
|
default = []
|
|
330
1358
|
}
|
|
331
1359
|
|
|
1360
|
+
# VPC Configuration (optional)
|
|
1361
|
+
variable "enable_vpc" {
|
|
1362
|
+
description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
|
|
1363
|
+
type = bool
|
|
1364
|
+
default = false
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
variable "vpc_id" {
|
|
1368
|
+
description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
|
|
1369
|
+
type = string
|
|
1370
|
+
default = null
|
|
1371
|
+
|
|
1372
|
+
validation {
|
|
1373
|
+
condition = !var.enable_vpc || (var.vpc_id != null && var.subnet_ids != null)
|
|
1374
|
+
error_message = "vpc_id and subnet_ids must be set when enable_vpc is true."
|
|
1375
|
+
}
|
|
1376
|
+
}
|
|
1377
|
+
|
|
1378
|
+
variable "subnet_ids" {
|
|
1379
|
+
description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
|
|
1380
|
+
type = list(string)
|
|
1381
|
+
default = null
|
|
1382
|
+
}
|
|
1383
|
+
|
|
332
1384
|
variable "tags" {
|
|
333
1385
|
description = "Tags to apply to resources"
|
|
334
1386
|
type = map(string)
|
|
@@ -354,8 +1406,7 @@ resource "aws_ecr_repository" "agent_core_repository" {
|
|
|
354
1406
|
#checkov:skip=CKV_AWS_136:AES256 encryption is sufficient for ECR repositories
|
|
355
1407
|
name = "\${lower(var.agent_runtime_name)}_repository_\${random_id.unique_suffix.hex}"
|
|
356
1408
|
|
|
357
|
-
|
|
358
|
-
image_tag_mutability = "MUTABLE"
|
|
1409
|
+
image_tag_mutability = "IMMUTABLE"
|
|
359
1410
|
force_delete = true
|
|
360
1411
|
|
|
361
1412
|
image_scanning_configuration {
|
|
@@ -529,28 +1580,62 @@ data "external" "docker_digest" {
|
|
|
529
1580
|
program = ["sh", "-c", "echo '{\\"digest\\":\\"'$(docker inspect \${var.docker_image_tag} --format '{{.Id}}')'\\"}' "]
|
|
530
1581
|
}
|
|
531
1582
|
|
|
1583
|
+
locals {
|
|
1584
|
+
# Content-based, immutable image tag derived from the local image digest
|
|
1585
|
+
image_tag = replace(data.external.docker_digest.result.digest, "sha256:", "")
|
|
1586
|
+
}
|
|
1587
|
+
|
|
532
1588
|
# Null resource for container image publish
|
|
533
1589
|
resource "null_resource" "docker_publish" {
|
|
534
1590
|
triggers = {
|
|
535
1591
|
docker_digest = data.external.docker_digest.result.digest
|
|
536
1592
|
repository_url = aws_ecr_repository.agent_core_repository.repository_url
|
|
537
1593
|
docker_image_tag = var.docker_image_tag
|
|
1594
|
+
image_tag = local.image_tag
|
|
538
1595
|
}
|
|
539
1596
|
|
|
540
1597
|
provisioner "local-exec" {
|
|
541
1598
|
command = <<-EOT
|
|
542
1599
|
# Get ECR login token
|
|
543
|
-
aws ecr get-login-password --region
|
|
1600
|
+
aws ecr get-login-password --region "$AWS_REGION" | docker login --username AWS --password-stdin "$REPOSITORY_URL"
|
|
544
1601
|
|
|
545
|
-
# Tag the image
|
|
546
|
-
docker tag
|
|
1602
|
+
# Tag the image with the immutable content-based tag
|
|
1603
|
+
docker tag "$DOCKER_IMAGE_TAG" "$REPOSITORY_URL:$IMAGE_TAG"
|
|
547
1604
|
|
|
548
1605
|
# Push the image
|
|
549
|
-
docker push
|
|
1606
|
+
docker push "$REPOSITORY_URL:$IMAGE_TAG"
|
|
550
1607
|
EOT
|
|
1608
|
+
environment = {
|
|
1609
|
+
AWS_REGION = local.aws_region
|
|
1610
|
+
REPOSITORY_URL = self.triggers.repository_url
|
|
1611
|
+
DOCKER_IMAGE_TAG = self.triggers.docker_image_tag
|
|
1612
|
+
IMAGE_TAG = self.triggers.image_tag
|
|
1613
|
+
}
|
|
551
1614
|
}
|
|
552
1615
|
|
|
553
|
-
depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
|
|
1616
|
+
depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1619
|
+
# Security group for the agent core runtime, used when running inside a VPC
|
|
1620
|
+
resource "aws_security_group" "agent_core_runtime" {
|
|
1621
|
+
count = var.enable_vpc ? 1 : 0
|
|
1622
|
+
|
|
1623
|
+
#checkov:skip=CKV2_AWS_5:Attached to the runtime via network_configuration; Checkov cannot resolve this reference
|
|
1624
|
+
name_prefix = "\${var.agent_runtime_name}-runtime-"
|
|
1625
|
+
description = "Security group for the \${var.agent_runtime_name} agent core runtime"
|
|
1626
|
+
vpc_id = var.vpc_id
|
|
1627
|
+
tags = var.tags
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
resource "aws_vpc_security_group_egress_rule" "agent_core_runtime_https" {
|
|
1631
|
+
count = var.enable_vpc ? 1 : 0
|
|
1632
|
+
|
|
1633
|
+
security_group_id = aws_security_group.agent_core_runtime[0].id
|
|
1634
|
+
cidr_ipv4 = "0.0.0.0/0"
|
|
1635
|
+
from_port = 443
|
|
1636
|
+
to_port = 443
|
|
1637
|
+
ip_protocol = "tcp"
|
|
1638
|
+
description = "Allow outbound HTTPS to AWS service endpoints"
|
|
554
1639
|
}
|
|
555
1640
|
|
|
556
1641
|
# Bedrock AgentCore Agent Runtime
|
|
@@ -561,7 +1646,7 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
|
|
|
561
1646
|
|
|
562
1647
|
agent_runtime_artifact {
|
|
563
1648
|
container_configuration {
|
|
564
|
-
container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}
|
|
1649
|
+
container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}:\${local.image_tag}"
|
|
565
1650
|
}
|
|
566
1651
|
}
|
|
567
1652
|
|
|
@@ -578,8 +1663,24 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
|
|
|
578
1663
|
}
|
|
579
1664
|
}
|
|
580
1665
|
|
|
1666
|
+
# Receive the caller's Authorization header (validated by the JWT authorizer).
|
|
1667
|
+
dynamic "request_header_configuration" {
|
|
1668
|
+
for_each = var.authorizer_configuration != null && try(var.authorizer_configuration.custom_jwt_authorizer, null) != null ? [1] : []
|
|
1669
|
+
content {
|
|
1670
|
+
request_header_allowlist = ["Authorization"]
|
|
1671
|
+
}
|
|
1672
|
+
}
|
|
1673
|
+
|
|
581
1674
|
network_configuration {
|
|
582
|
-
network_mode = "PUBLIC"
|
|
1675
|
+
network_mode = var.enable_vpc ? "VPC" : "PUBLIC"
|
|
1676
|
+
|
|
1677
|
+
dynamic "network_mode_config" {
|
|
1678
|
+
for_each = var.enable_vpc ? [1] : []
|
|
1679
|
+
content {
|
|
1680
|
+
security_groups = [aws_security_group.agent_core_runtime[0].id]
|
|
1681
|
+
subnets = var.subnet_ids
|
|
1682
|
+
}
|
|
1683
|
+
}
|
|
583
1684
|
}
|
|
584
1685
|
|
|
585
1686
|
protocol_configuration {
|
|
@@ -594,7 +1695,70 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
|
|
|
594
1695
|
]
|
|
595
1696
|
}
|
|
596
1697
|
|
|
1698
|
+
# MCP consumers (e.g. gateway targets, which fetch tools at creation) can race
|
|
1699
|
+
# the runtime's first cold start, so probe it until it serves MCP. The ARN
|
|
1700
|
+
# output is routed through this resource so consumers wait for readiness.
|
|
1701
|
+
resource "null_resource" "runtime_ready" {
|
|
1702
|
+
count = var.server_protocol == "MCP" ? 1 : 0
|
|
1703
|
+
|
|
1704
|
+
triggers = {
|
|
1705
|
+
runtime_arn = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
provisioner "local-exec" {
|
|
1709
|
+
command = <<-EOT
|
|
1710
|
+
uv run --with boto3==1.43.72 python -c "
|
|
1711
|
+
import boto3
|
|
1712
|
+
import json
|
|
1713
|
+
import os
|
|
1714
|
+
import time
|
|
1715
|
+
import uuid
|
|
1716
|
+
|
|
1717
|
+
runtime_arn = os.environ['RUNTIME_ARN']
|
|
1718
|
+
client = boto3.client('bedrock-agentcore')
|
|
1719
|
+
initialize_request = json.dumps({
|
|
1720
|
+
'jsonrpc': '2.0',
|
|
1721
|
+
'id': 1,
|
|
1722
|
+
'method': 'initialize',
|
|
1723
|
+
'params': {
|
|
1724
|
+
'protocolVersion': '2025-03-26',
|
|
1725
|
+
'capabilities': {},
|
|
1726
|
+
'clientInfo': {'name': 'readiness-probe', 'version': '1.0'},
|
|
1727
|
+
},
|
|
1728
|
+
})
|
|
1729
|
+
|
|
1730
|
+
deadline = time.time() + 5 * 60
|
|
1731
|
+
while True:
|
|
1732
|
+
try:
|
|
1733
|
+
client.invoke_agent_runtime(
|
|
1734
|
+
agentRuntimeArn=runtime_arn,
|
|
1735
|
+
runtimeSessionId=f'readiness-probe-{uuid.uuid4()}',
|
|
1736
|
+
contentType='application/json',
|
|
1737
|
+
accept='application/json, text/event-stream',
|
|
1738
|
+
payload=initialize_request,
|
|
1739
|
+
)
|
|
1740
|
+
break
|
|
1741
|
+
except Exception:
|
|
1742
|
+
if time.time() >= deadline:
|
|
1743
|
+
raise
|
|
1744
|
+
time.sleep(5)
|
|
1745
|
+
|
|
1746
|
+
print(f'Runtime {runtime_arn} is serving MCP')
|
|
1747
|
+
"
|
|
1748
|
+
EOT
|
|
1749
|
+
environment = {
|
|
1750
|
+
RUNTIME_ARN = self.triggers.runtime_arn
|
|
1751
|
+
}
|
|
1752
|
+
}
|
|
1753
|
+
}
|
|
1754
|
+
|
|
597
1755
|
# Outputs
|
|
1756
|
+
locals {
|
|
1757
|
+
# For MCP runtimes the ARN flows through the readiness probe, so consumers
|
|
1758
|
+
# wait until the runtime serves MCP.
|
|
1759
|
+
ready_runtime_arn = var.server_protocol == "MCP" ? null_resource.runtime_ready[0].triggers.runtime_arn : aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
|
|
1760
|
+
}
|
|
1761
|
+
|
|
598
1762
|
output "agent_core_runtime_role_arn" {
|
|
599
1763
|
description = "ARN of the Agent Core Runtime IAM role"
|
|
600
1764
|
value = aws_iam_role.agent_core_runtime_role.arn
|
|
@@ -611,8 +1775,13 @@ output "agent_runtime_name" {
|
|
|
611
1775
|
}
|
|
612
1776
|
|
|
613
1777
|
output "agent_core_runtime_arn" {
|
|
614
|
-
description = "ARN of the Bedrock Agent Core runtime"
|
|
615
|
-
value =
|
|
1778
|
+
description = "ARN of the Bedrock Agent Core runtime. For MCP runtimes the value flows through the readiness probe, so consumers wait until the runtime serves MCP."
|
|
1779
|
+
value = local.ready_runtime_arn
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
output "invocation_url" {
|
|
1783
|
+
description = "HTTPS invocation URL of the runtime. MCP runtimes get the MCP endpoint (e.g. for use as a Gateway target endpoint), A2A runtimes the A2A endpoint (trailing slash required). For MCP runtimes the value flows through the readiness probe, so consumers wait until the runtime serves MCP."
|
|
1784
|
+
value = "https://bedrock-agentcore.\${local.aws_region}.amazonaws.com/runtimes/\${urlencode(local.ready_runtime_arn)}/invocations\${var.server_protocol == "A2A" ? "/" : "?qualifier=DEFAULT"}"
|
|
616
1785
|
}
|
|
617
1786
|
|
|
618
1787
|
output "agent_runtime_id" {
|
|
@@ -624,11 +1793,21 @@ output "agent_runtime_version" {
|
|
|
624
1793
|
description = "Version of the Bedrock Agent Core runtime"
|
|
625
1794
|
value = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_version
|
|
626
1795
|
}
|
|
1796
|
+
|
|
1797
|
+
output "security_group_id" {
|
|
1798
|
+
description = "Security group ID of the agent core runtime, for use in ingress rules on resources it must reach (e.g. a database). Null unless enable_vpc is true."
|
|
1799
|
+
value = var.enable_vpc ? aws_security_group.agent_core_runtime[0].id : null
|
|
1800
|
+
}
|
|
627
1801
|
"
|
|
628
1802
|
`;
|
|
629
1803
|
|
|
630
1804
|
exports[`ts#agent generator > should match snapshot for generated files > agent-agent.ts 1`] = `
|
|
631
1805
|
"import { Agent, tool } from '@strands-agents/sdk';
|
|
1806
|
+
import {
|
|
1807
|
+
ModelErrorLoggingPlugin,
|
|
1808
|
+
ToolErrorLoggingPlugin,
|
|
1809
|
+
} from '@proj/agent-connection';
|
|
1810
|
+
import { getSessionManager } from './session.js';
|
|
632
1811
|
import { z } from 'zod';
|
|
633
1812
|
|
|
634
1813
|
const multiply = tool({
|
|
@@ -641,13 +1820,17 @@ const multiply = tool({
|
|
|
641
1820
|
callback: ({ a, b }) => a * b,
|
|
642
1821
|
});
|
|
643
1822
|
|
|
644
|
-
export const getAgent = async () =>
|
|
645
|
-
new Agent({
|
|
1823
|
+
export const getAgent = async () => {
|
|
1824
|
+
const agent = new Agent({
|
|
646
1825
|
systemPrompt: \`You are a mathematical wizard.
|
|
647
1826
|
Use your tools for mathematical tasks.
|
|
648
1827
|
Refer to tools as your 'spellbook'.\`,
|
|
649
1828
|
tools: [multiply],
|
|
1829
|
+
sessionManager: await getSessionManager(),
|
|
1830
|
+
plugins: [new ModelErrorLoggingPlugin(), new ToolErrorLoggingPlugin()],
|
|
650
1831
|
});
|
|
1832
|
+
return agent;
|
|
1833
|
+
};
|
|
651
1834
|
"
|
|
652
1835
|
`;
|
|
653
1836
|
|
|
@@ -930,7 +2113,7 @@ exports[`ts#agent generator > should match snapshot for generated files > agent-
|
|
|
930
2113
|
"import { publicProcedure, t } from './init.js';
|
|
931
2114
|
import { z } from 'zod';
|
|
932
2115
|
import { zAsyncIterable } from './schema/z-async-iterable.js';
|
|
933
|
-
import { enterSessionContext, withSessionId } from '
|
|
2116
|
+
import { enterSessionContext, withSessionId } from '@proj/agent-connection';
|
|
934
2117
|
import { getAgent } from './agent.js';
|
|
935
2118
|
|
|
936
2119
|
export const router = t.router;
|
|
@@ -939,7 +2122,7 @@ const agent = withSessionId(getAgent);
|
|
|
939
2122
|
|
|
940
2123
|
export const appRouter = router({
|
|
941
2124
|
invoke: publicProcedure
|
|
942
|
-
.input(z.object({
|
|
2125
|
+
.input(z.object({ prompt: z.string().max(100000) }))
|
|
943
2126
|
.output(
|
|
944
2127
|
zAsyncIterable({
|
|
945
2128
|
yield: z.string(),
|
|
@@ -949,7 +2132,7 @@ export const appRouter = router({
|
|
|
949
2132
|
.subscription(async function* (opts) {
|
|
950
2133
|
// Bind the session ID for this subscription so downstream MCP / A2A clients forward it on outbound calls.
|
|
951
2134
|
enterSessionContext(opts.ctx.sessionId);
|
|
952
|
-
for await (const event of agent.stream(opts.input.
|
|
2135
|
+
for await (const event of agent.stream(opts.input.prompt)) {
|
|
953
2136
|
if (
|
|
954
2137
|
event.type === 'modelStreamUpdateEvent' &&
|
|
955
2138
|
event.event.type === 'modelContentBlockDeltaEvent' &&
|
|
@@ -1048,3 +2231,275 @@ export function zAsyncIterable<
|
|
|
1048
2231
|
}
|
|
1049
2232
|
"
|
|
1050
2233
|
`;
|
|
2234
|
+
|
|
2235
|
+
exports[`ts#agent generator > should not create session bucket infrastructure when session is in-memory (Terraform) > terraform-agent.tf (in-memory) 1`] = `
|
|
2236
|
+
"variable "env" {
|
|
2237
|
+
description = "Environment variables to pass to the agent core runtime"
|
|
2238
|
+
type = map(string)
|
|
2239
|
+
default = {}
|
|
2240
|
+
}
|
|
2241
|
+
|
|
2242
|
+
variable "additional_iam_policy_statements" {
|
|
2243
|
+
description = "Additional IAM policy statements to attach to the agent core runtime role"
|
|
2244
|
+
type = list(object({
|
|
2245
|
+
Effect = string
|
|
2246
|
+
Action = list(string)
|
|
2247
|
+
Resource = list(string)
|
|
2248
|
+
}))
|
|
2249
|
+
default = []
|
|
2250
|
+
}
|
|
2251
|
+
|
|
2252
|
+
variable "tags" {
|
|
2253
|
+
description = "Tags to apply to resources"
|
|
2254
|
+
type = map(string)
|
|
2255
|
+
default = {}
|
|
2256
|
+
}
|
|
2257
|
+
|
|
2258
|
+
# VPC Configuration (optional)
|
|
2259
|
+
variable "enable_vpc" {
|
|
2260
|
+
description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
|
|
2261
|
+
type = bool
|
|
2262
|
+
default = false
|
|
2263
|
+
}
|
|
2264
|
+
|
|
2265
|
+
variable "vpc_id" {
|
|
2266
|
+
description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
|
|
2267
|
+
type = string
|
|
2268
|
+
default = null
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2271
|
+
variable "subnet_ids" {
|
|
2272
|
+
description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
|
|
2273
|
+
type = list(string)
|
|
2274
|
+
default = null
|
|
2275
|
+
}
|
|
2276
|
+
|
|
2277
|
+
variable "appconfig_application_id" {
|
|
2278
|
+
description = "ID of the shared runtime-config AppConfig application (from \`core/runtime-config/appconfig.application_id\`). The agent reads its runtime configuration from this application."
|
|
2279
|
+
type = string
|
|
2280
|
+
}
|
|
2281
|
+
|
|
2282
|
+
variable "appconfig_application_arn" {
|
|
2283
|
+
description = "ARN of the shared runtime-config AppConfig application (from \`core/runtime-config/appconfig.application_arn\`). Used to scope the IAM read permission granted to the agent runtime."
|
|
2284
|
+
type = string
|
|
2285
|
+
}
|
|
2286
|
+
|
|
2287
|
+
module "agent_core_runtime" {
|
|
2288
|
+
source = "../../../core/agent-core"
|
|
2289
|
+
agent_runtime_name = "InMemoryTerraformAgent"
|
|
2290
|
+
docker_image_tag = "proj-in-memory-terraform-agent:latest"
|
|
2291
|
+
server_protocol = "HTTP"
|
|
2292
|
+
enable_vpc = var.enable_vpc
|
|
2293
|
+
vpc_id = var.vpc_id
|
|
2294
|
+
subnet_ids = var.subnet_ids
|
|
2295
|
+
|
|
2296
|
+
env = merge({
|
|
2297
|
+
RUNTIME_CONFIG_APP_ID = var.appconfig_application_id
|
|
2298
|
+
}, var.env)
|
|
2299
|
+
additional_iam_policy_statements = concat([
|
|
2300
|
+
{
|
|
2301
|
+
Effect = "Allow"
|
|
2302
|
+
Action = [
|
|
2303
|
+
"appconfig:StartConfigurationSession",
|
|
2304
|
+
"appconfig:GetLatestConfiguration"
|
|
2305
|
+
]
|
|
2306
|
+
Resource = ["\${var.appconfig_application_arn}/*"]
|
|
2307
|
+
},
|
|
2308
|
+
# Grant access for the agent to invoke bedrock models
|
|
2309
|
+
{
|
|
2310
|
+
Effect = "Allow"
|
|
2311
|
+
Action = [
|
|
2312
|
+
"bedrock:InvokeModel",
|
|
2313
|
+
"bedrock:InvokeModelWithResponseStream"
|
|
2314
|
+
]
|
|
2315
|
+
Resource = [
|
|
2316
|
+
"arn:aws:bedrock:*:*:foundation-model/*",
|
|
2317
|
+
"arn:aws:bedrock:*:*:inference-profile/*"
|
|
2318
|
+
]
|
|
2319
|
+
}
|
|
2320
|
+
], var.additional_iam_policy_statements)
|
|
2321
|
+
tags = var.tags
|
|
2322
|
+
}
|
|
2323
|
+
|
|
2324
|
+
# Add agent runtime ARN to runtime config
|
|
2325
|
+
module "add_agent_runtime_to_runtime_config" {
|
|
2326
|
+
source = "../../../core/runtime-config/entry"
|
|
2327
|
+
|
|
2328
|
+
namespace = "agentcore"
|
|
2329
|
+
key = "agentRuntimes"
|
|
2330
|
+
value = { "InMemoryTerraformAgent" = { arn = module.agent_core_runtime.agent_core_runtime_arn } }
|
|
2331
|
+
|
|
2332
|
+
depends_on = [module.agent_core_runtime]
|
|
2333
|
+
}
|
|
2334
|
+
|
|
2335
|
+
output "agent_core_runtime_role_arn" {
|
|
2336
|
+
description = "ARN of the agent core runtime role"
|
|
2337
|
+
value = module.agent_core_runtime.agent_core_runtime_role_arn
|
|
2338
|
+
}
|
|
2339
|
+
|
|
2340
|
+
output "agent_core_runtime_arn" {
|
|
2341
|
+
description = "ARN of the Bedrock Agent Core runtime"
|
|
2342
|
+
value = module.agent_core_runtime.agent_core_runtime_arn
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2345
|
+
output "invocation_url" {
|
|
2346
|
+
description = "HTTPS invocation URL of the runtime"
|
|
2347
|
+
value = module.agent_core_runtime.invocation_url
|
|
2348
|
+
}
|
|
2349
|
+
|
|
2350
|
+
output "appconfig_application_id" {
|
|
2351
|
+
description = "AppConfig Application ID for runtime config (passthrough of the shared \`appconfig_application_id\` input)."
|
|
2352
|
+
value = var.appconfig_application_id
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2355
|
+
output "security_group_id" {
|
|
2356
|
+
description = "Security group ID of the agent core runtime, for use in ingress rules on resources it must reach (e.g. a database). Null unless enable_vpc is true."
|
|
2357
|
+
value = module.agent_core_runtime.security_group_id
|
|
2358
|
+
}
|
|
2359
|
+
"
|
|
2360
|
+
`;
|
|
2361
|
+
|
|
2362
|
+
exports[`ts#agent generator > should not create session bucket infrastructure when session is in-memory > agent-construct.ts (in-memory) 1`] = `
|
|
2363
|
+
"import { Fn, Lazy, Names, Stack } from 'aws-cdk-lib';
|
|
2364
|
+
import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
|
|
2365
|
+
import { Connections, IConnectable } from 'aws-cdk-lib/aws-ec2';
|
|
2366
|
+
import { Construct } from 'constructs';
|
|
2367
|
+
import * as path from 'path';
|
|
2368
|
+
import * as url from 'url';
|
|
2369
|
+
import {
|
|
2370
|
+
AgentRuntimeArtifact,
|
|
2371
|
+
ProtocolType,
|
|
2372
|
+
Runtime,
|
|
2373
|
+
RuntimeProps,
|
|
2374
|
+
} from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
2375
|
+
import {
|
|
2376
|
+
PolicyStatement,
|
|
2377
|
+
IGrantable,
|
|
2378
|
+
IPrincipal,
|
|
2379
|
+
Grant,
|
|
2380
|
+
} from 'aws-cdk-lib/aws-iam';
|
|
2381
|
+
import { RuntimeConfig } from '../../../core/runtime-config.js';
|
|
2382
|
+
import { findWorkspaceRoot } from '../../../core/workspace.js';
|
|
2383
|
+
|
|
2384
|
+
export type InMemoryAgentProps = Omit<
|
|
2385
|
+
RuntimeProps,
|
|
2386
|
+
| 'runtimeName'
|
|
2387
|
+
| 'protocolConfiguration'
|
|
2388
|
+
| 'agentRuntimeArtifact'
|
|
2389
|
+
| 'authorizerConfiguration'
|
|
2390
|
+
>;
|
|
2391
|
+
|
|
2392
|
+
export class InMemoryAgent
|
|
2393
|
+
extends Construct
|
|
2394
|
+
implements IGrantable, IConnectable
|
|
2395
|
+
{
|
|
2396
|
+
public readonly dockerImage: AgentRuntimeArtifact;
|
|
2397
|
+
public readonly agentCoreRuntime: Runtime;
|
|
2398
|
+
/** Default Gateway target name for this agent. */
|
|
2399
|
+
public readonly agentName = 'in-memory-agent';
|
|
2400
|
+
/** Inbound auth — a fronting Gateway uses this to pick its outbound credential. */
|
|
2401
|
+
public readonly auth = 'iam';
|
|
2402
|
+
|
|
2403
|
+
constructor(scope: Construct, id: string, props?: InMemoryAgentProps) {
|
|
2404
|
+
super(scope, id);
|
|
2405
|
+
|
|
2406
|
+
const rc = RuntimeConfig.ensure(this);
|
|
2407
|
+
|
|
2408
|
+
// Resolve the bundle output directory containing the Dockerfile and built artifacts
|
|
2409
|
+
const bundleDir = path.join(
|
|
2410
|
+
findWorkspaceRoot(url.fileURLToPath(new URL(import.meta.url))),
|
|
2411
|
+
'dist/apps/test-project/bundle/agent/in-memory-agent',
|
|
2412
|
+
);
|
|
2413
|
+
|
|
2414
|
+
this.dockerImage = AgentRuntimeArtifact.fromAsset(bundleDir, {
|
|
2415
|
+
platform: Platform.LINUX_ARM64,
|
|
2416
|
+
});
|
|
2417
|
+
|
|
2418
|
+
this.agentCoreRuntime = new Runtime(this, 'InMemoryAgent', {
|
|
2419
|
+
runtimeName: Lazy.string({
|
|
2420
|
+
produce: () =>
|
|
2421
|
+
Names.uniqueResourceName(this.agentCoreRuntime, { maxLength: 40 }),
|
|
2422
|
+
}),
|
|
2423
|
+
protocolConfiguration: ProtocolType.HTTP,
|
|
2424
|
+
agentRuntimeArtifact: this.dockerImage,
|
|
2425
|
+
...props,
|
|
2426
|
+
environmentVariables: {
|
|
2427
|
+
RUNTIME_CONFIG_APP_ID: rc.appConfigApplicationId,
|
|
2428
|
+
...props?.environmentVariables,
|
|
2429
|
+
},
|
|
2430
|
+
});
|
|
2431
|
+
|
|
2432
|
+
// Grant access for the agent to invoke bedrock models
|
|
2433
|
+
this.agentCoreRuntime.addToRolePolicy(
|
|
2434
|
+
new PolicyStatement({
|
|
2435
|
+
actions: [
|
|
2436
|
+
'bedrock:InvokeModel',
|
|
2437
|
+
'bedrock:InvokeModelWithResponseStream',
|
|
2438
|
+
],
|
|
2439
|
+
resources: [
|
|
2440
|
+
'arn:aws:bedrock:*:*:foundation-model/*',
|
|
2441
|
+
'arn:aws:bedrock:*:*:inference-profile/*',
|
|
2442
|
+
],
|
|
2443
|
+
}),
|
|
2444
|
+
);
|
|
2445
|
+
|
|
2446
|
+
rc.grantReadAppConfig(this.agentCoreRuntime);
|
|
2447
|
+
|
|
2448
|
+
rc.set('agentcore', 'agentRuntimes', {
|
|
2449
|
+
...rc.get('agentcore').agentRuntimes,
|
|
2450
|
+
InMemoryAgent: {
|
|
2451
|
+
arn: this.agentCoreRuntime.agentRuntimeArn,
|
|
2452
|
+
},
|
|
2453
|
+
});
|
|
2454
|
+
}
|
|
2455
|
+
|
|
2456
|
+
/**
|
|
2457
|
+
* The principal to grant permissions to.
|
|
2458
|
+
*/
|
|
2459
|
+
public get grantPrincipal(): IPrincipal {
|
|
2460
|
+
return this.agentCoreRuntime.grantPrincipal;
|
|
2461
|
+
}
|
|
2462
|
+
|
|
2463
|
+
/**
|
|
2464
|
+
* Network connections for this agent runtime.
|
|
2465
|
+
*/
|
|
2466
|
+
public get connections(): Connections {
|
|
2467
|
+
return this.agentCoreRuntime.connections;
|
|
2468
|
+
}
|
|
2469
|
+
|
|
2470
|
+
/**
|
|
2471
|
+
* The HTTPS invocation URL of the runtime.
|
|
2472
|
+
*/
|
|
2473
|
+
public get invocationUrl(): string {
|
|
2474
|
+
// The URL must URL-encode the runtime ARN (':' -> '%3A', '/' -> '%2F').
|
|
2475
|
+
// The ARN is a CDK token, so encode at deploy time via Fn.join/Fn.split.
|
|
2476
|
+
const encodedArn = Fn.join(
|
|
2477
|
+
'%2F',
|
|
2478
|
+
Fn.split(
|
|
2479
|
+
'/',
|
|
2480
|
+
Fn.join('%3A', Fn.split(':', this.agentCoreRuntime.agentRuntimeArn)),
|
|
2481
|
+
),
|
|
2482
|
+
);
|
|
2483
|
+
return \`https://bedrock-agentcore.\${Stack.of(this).region}.amazonaws.com/runtimes/\${encodedArn}/invocations?qualifier=DEFAULT\`;
|
|
2484
|
+
}
|
|
2485
|
+
|
|
2486
|
+
/**
|
|
2487
|
+
* Grants IAM permissions to invoke this agent runtime.
|
|
2488
|
+
*
|
|
2489
|
+
* @param grantee - The IAM principal to grant permissions to
|
|
2490
|
+
*/
|
|
2491
|
+
public grantInvokeAccess(grantee: IGrantable) {
|
|
2492
|
+
this.agentCoreRuntime.grantInvoke(grantee);
|
|
2493
|
+
|
|
2494
|
+
Grant.addToPrincipal({
|
|
2495
|
+
grantee,
|
|
2496
|
+
actions: ['bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream'],
|
|
2497
|
+
resourceArns: [
|
|
2498
|
+
this.agentCoreRuntime.agentRuntimeArn,
|
|
2499
|
+
\`\${this.agentCoreRuntime.agentRuntimeArn}/*\`,
|
|
2500
|
+
],
|
|
2501
|
+
});
|
|
2502
|
+
}
|
|
2503
|
+
}
|
|
2504
|
+
"
|
|
2505
|
+
`;
|