@aws/nx-plugin 1.0.0-rc.7 → 1.0.0-rc.71
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 +7044 -6135
- package/README.md +9 -7
- package/generators.json +152 -10
- package/migrations.json +161 -0
- package/package.json +41 -22
- 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 +3 -10
- 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.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 +43 -0
- 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 +698 -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.js +5 -3
- package/src/license/config-types.js.map +1 -1
- package/src/license/config.d.ts +1 -1
- package/src/license/config.js +267 -242
- package/src/license/config.js.map +1 -1
- 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 +55 -62
- package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
- package/src/license/dependency-check/evaluator.js +40 -68
- 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.js +949 -336
- package/src/license/dependency-check/pre-approved.js.map +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.js +65 -68
- package/src/license/generator.js.map +1 -1
- package/src/license/index.js +3 -9
- package/src/license/index.js.map +1 -1
- package/src/license/known-exceptions.d.ts +1 -1
- package/src/license/known-exceptions.js +19 -13
- 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.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.js +149 -165
- package/src/mcp-server/generator-info.js.map +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 +1 -1
- 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.js +29 -37
- package/src/mcp-server/tools/generator-guide.js.map +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/py-agent-a2a-httpx-client-per-call/metadata.json +3 -0
- package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.d.ts +6 -0
- package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.js +329 -0
- package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.js.map +1 -0
- package/src/migrations/latest/py-agent-a2a-lifespan-construction/metadata.json +3 -0
- package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.d.ts +6 -0
- package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.js +234 -0
- package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.js.map +1 -0
- package/src/migrations/latest/smithy-server-package-rename/metadata.json +3 -0
- package/src/migrations/latest/smithy-server-package-rename/migration.d.ts +6 -0
- package/src/migrations/latest/smithy-server-package-rename/migration.js +123 -0
- package/src/migrations/latest/smithy-server-package-rename/migration.js.map +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/build-system-prompt.ts.fixture +23 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/build-user-prompt.ts.fixture +96 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/config-path.ts.fixture +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/file-to-translate.ts.fixture +10 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/get-files-to-translate.ts.fixture +96 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/header.ts.fixture +15 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/log.ts.fixture +18 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/main-call.ts.fixture +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/main.ts.fixture +79 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/project-root.ts.fixture +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/run-with-concurrency.ts.fixture +57 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/scripts-dir.ts.fixture +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/files/translate-file-for-language.ts.fixture +61 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/already-migrated.grit +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/build-system-prompt.grit +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/build-user-prompt.grit +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/config-path.grit +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/file-to-translate.grit +11 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/get-files-to-translate.grit +7 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/log.grit +3 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/main-call.grit +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/main.grit +8 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/project-root.grit +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/run-with-concurrency.grit +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/grit/translate-file-for-language.grit +6 -0
- package/src/migrations/latest/translate-script-whole-file-writes/metadata.json +3 -0
- package/src/migrations/latest/translate-script-whole-file-writes/migration.d.ts +2 -0
- package/src/migrations/latest/translate-script-whole-file-writes/migration.js +103 -0
- package/src/migrations/latest/translate-script-whole-file-writes/migration.js.map +1 -0
- package/src/migrations/latest/translate-script-whole-file-writes/test-fixtures/released-script-first.ts.fixture +430 -0
- package/src/migrations/latest/translate-script-whole-file-writes/test-fixtures/released-script.ts.fixture +431 -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/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.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.js +17 -21
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.spec.tsx +70 -0
- 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.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 +0 -6
- 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 +2 -2
- 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.js +437 -246
- package/src/open-api/utils/normalise.js.map +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.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 +14 -1
- 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 +4 -1
- package/src/preset/schema.json +16 -5
- package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +326 -0
- package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +738 -0
- package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.protocols.spec.ts.snap} +191 -315
- 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 +24 -0
- package/src/py/agent/a2a-connection/generator.js +145 -88
- 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 +1 -0
- package/src/py/agent/a2a-connection/schema.json +5 -0
- package/src/py/agent/files/deploy/Dockerfile.template +8 -1
- package/src/py/agent/files/langchain/a2a/main.py.template +94 -0
- package/src/py/agent/files/langchain/ag-ui/main.py.template +87 -0
- package/src/py/agent/files/langchain/common/agent.py.template +30 -0
- package/src/py/agent/files/{http → langchain/http}/init.py.template +17 -25
- package/src/py/agent/files/langchain/http/main.py.template +81 -0
- package/src/py/agent/files/{a2a → strands/a2a}/main.py.template +33 -15
- package/src/py/agent/files/strands/ag-ui/main.py.template +89 -0
- package/src/py/agent/files/{common → strands/common}/agent.py.template +2 -0
- package/src/py/agent/files/strands/http/init.py.template +97 -0
- package/src/py/agent/files/{http → strands/http}/main.py.template +4 -13
- 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 +154 -1
- package/src/py/agent/generator.js +396 -197
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +154 -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 +23 -0
- 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 +1 -0
- 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 +150 -1
- 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} +4 -4
- 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 +1 -0
- 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 +5 -1
- package/src/py/agent/schema.json +15 -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 +1 -0
- package/src/py/api/schema.json +5 -0
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1520 -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 +72 -0
- 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 +16 -1
- 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 +1 -0
- 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/generator.d.ts +21 -0
- package/src/py/lambda-function/generator.js +82 -62
- 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 +1 -0
- package/src/py/lambda-function/schema.json +5 -0
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +221 -21
- package/src/py/mcp-server/files/deploy/Dockerfile.template +8 -1
- package/src/py/mcp-server/generator.d.ts +68 -0
- package/src/py/mcp-server/generator.js +204 -131
- 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 +1 -0
- package/src/py/mcp-server/schema.json +6 -0
- package/src/py/project/generator.d.ts +27 -1
- 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 +5 -0
- package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2070 -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__/__init__.py.template +3 -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/config.json.template +14 -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 +328 -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/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/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/{sdk/utils/ast.d.ts → src/sdk/utils/format.d.ts} +1 -2
- 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 +90 -0
- 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 +15 -0
- 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 +88 -0
- 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 +1 -0
- 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 +50 -0
- 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 +90 -1
- 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 +1 -0
- 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 +38 -1
- 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 +1452 -25
- 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 +46 -0
- package/src/ts/agent/a2a-connection/generator.js +110 -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 +1 -0
- package/src/ts/agent/a2a-connection/schema.json +5 -0
- package/src/ts/agent/files/a2a/index.ts.template +1 -1
- package/src/ts/agent/files/ag-ui/index.ts.template +36 -11
- 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/deploy/Dockerfile.template +13 -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 +205 -0
- package/src/ts/agent/generator.js +339 -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 +37 -0
- 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 +1 -0
- 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 +202 -1
- 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/{serve-local.d.ts → local-dev.d.ts} +2 -2
- 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 +1 -0
- 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 +4 -0
- package/src/ts/agent/schema.json +14 -0
- 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 +1 -0
- 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 +38 -0
- 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.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 +400 -518
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +23 -5
- 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 +1 -0
- 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 +41 -0
- package/src/ts/dynamodb/generator.js +106 -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.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 +1 -0
- 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 +2 -0
- 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.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.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 +38 -0
- 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 +1 -0
- 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.js +71 -35
- package/src/ts/lib/biome.js.map +1 -1
- package/src/ts/lib/generator.d.ts +7 -0
- 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 +13 -1
- 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 +10 -1
- 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 +13 -2
- package/src/ts/mcp-server/generator.d.ts +110 -0
- package/src/ts/mcp-server/generator.js +231 -148
- 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 +1 -0
- 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 -73
- 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 +3 -0
- 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 +553 -644
- package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +16 -6
- 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 +1 -0
- package/src/ts/rdb/agent-connection/schema.json +5 -0
- package/src/ts/rdb/files/Dockerfile.template +19 -1
- package/src/ts/rdb/files/config.json.template +14 -0
- 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/index.ts.template +1 -2
- 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 +117 -4
- package/src/ts/rdb/generator.js +257 -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.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 +1 -0
- 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 +1 -0
- 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.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.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 +1391 -644
- package/src/ts/react-website/app/files/app/common/README.md.template +1 -1
- package/src/ts/react-website/app/generator.d.ts +142 -2
- package/src/ts/react-website/app/generator.js +333 -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 +1 -1
- package/src/ts/react-website/app/schema.json +12 -6
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +161 -26
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +48 -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 +25 -1
- 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 +1 -0
- 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.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.js +137 -60
- package/src/ts/sync/generator.js.map +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 +1 -1
- package/src/ts/website/app/schema.json +11 -6
- package/src/ts/website/auth/generator.d.ts +1 -1
- 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 +1 -0
- 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 +139 -26
- package/src/utils/agent-connection/agent-connection.js +500 -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 +33 -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-mcp/agentcore_mcp_transport.py.template +34 -0
- package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +6 -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-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 +79 -0
- 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 +170 -6
- 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 +212 -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 +30 -2
- 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.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 +9 -0
- package/src/utils/ast.js +125 -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 +18 -2
- package/src/utils/config/index.js +5 -4
- package/src/utils/config/index.js.map +1 -1
- package/src/utils/config/utils.d.ts +8 -2
- 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 +1 -1
- 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 +1 -1
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +24 -17
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +1 -1
- 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.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.js +12 -14
- package/src/utils/iac.js.map +1 -1
- package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +153 -24
- 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 +129 -12
- package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
- package/src/utils/identity-constructs/identity-constructs.d.ts +10 -0
- 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 +7 -1
- 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 +74 -3
- 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.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 +17 -3
- 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 +12 -1
- 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 +4 -1
- 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 +240 -108
- package/src/utils/versions.js +265 -121
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/files/cdk/app/static-websites/__websiteNameKebabCase__.ts.template +2 -2
- package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +207 -41
- package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +1 -1
- package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +145 -93
- package/src/utils/website-constructs/website-constructs.d.ts +11 -0
- 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/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
- 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.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/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 → strands/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,663 @@
|
|
|
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
|
+
# Upgrade npm to a version free of known HIGH/CRITICAL vulnerabilities
|
|
646
|
+
RUN npm install -g npm@12.0.2
|
|
5
647
|
|
|
6
648
|
WORKDIR /app
|
|
7
649
|
|
|
8
650
|
# Add AWS Distro for OpenTelemetry for observability
|
|
9
651
|
# https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/observability-configure.html
|
|
10
|
-
|
|
652
|
+
# The overrides pin transitive dependencies with known HIGH/CRITICAL
|
|
653
|
+
# vulnerabilities to fixed versions. npm is removed once the install is done —
|
|
654
|
+
# the runtime only needs node, and npm's own bundled dependencies would
|
|
655
|
+
# otherwise carry vulnerabilities into the image.
|
|
656
|
+
RUN npm init -y \\
|
|
657
|
+
&& npm pkg set "overrides.@opentelemetry/propagator-jaeger=2.10.0" \\
|
|
658
|
+
&& npm pkg set "overrides.minimatch=10.2.6" \\
|
|
659
|
+
&& npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation@0.12.0 \\
|
|
660
|
+
&& npm uninstall -g npm
|
|
11
661
|
|
|
12
662
|
# Copy bundled agent
|
|
13
663
|
COPY index.js /app
|
|
@@ -21,9 +671,22 @@ CMD [ "node", "--require", "@aws/aws-distro-opentelemetry-node-autoinstrumentati
|
|
|
21
671
|
`;
|
|
22
672
|
|
|
23
673
|
exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > agent-construct.ts 1`] = `
|
|
24
|
-
"import { Lazy, Names } from 'aws-cdk-lib';
|
|
674
|
+
"import { Fn, Lazy, Names, RemovalPolicy, Stack } from 'aws-cdk-lib';
|
|
25
675
|
import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
|
|
26
676
|
import { Connections, IConnectable } from 'aws-cdk-lib/aws-ec2';
|
|
677
|
+
import {
|
|
678
|
+
BlockPublicAccess,
|
|
679
|
+
Bucket,
|
|
680
|
+
BucketEncryption,
|
|
681
|
+
} from 'aws-cdk-lib/aws-s3';
|
|
682
|
+
import { Key } from 'aws-cdk-lib/aws-kms';
|
|
683
|
+
import {
|
|
684
|
+
CfnDelivery,
|
|
685
|
+
CfnDeliveryDestination,
|
|
686
|
+
CfnDeliverySource,
|
|
687
|
+
LogGroup,
|
|
688
|
+
RetentionDays,
|
|
689
|
+
} from 'aws-cdk-lib/aws-logs';
|
|
27
690
|
import { Construct } from 'constructs';
|
|
28
691
|
import * as path from 'path';
|
|
29
692
|
import * as url from 'url';
|
|
@@ -35,10 +698,13 @@ import {
|
|
|
35
698
|
} from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
36
699
|
import {
|
|
37
700
|
PolicyStatement,
|
|
701
|
+
Effect,
|
|
702
|
+
ServicePrincipal,
|
|
38
703
|
IGrantable,
|
|
39
704
|
IPrincipal,
|
|
40
705
|
Grant,
|
|
41
706
|
} from 'aws-cdk-lib/aws-iam';
|
|
707
|
+
import { suppressRules } from '../../../core/checkov.js';
|
|
42
708
|
import { RuntimeConfig } from '../../../core/runtime-config.js';
|
|
43
709
|
import { findWorkspaceRoot } from '../../../core/workspace.js';
|
|
44
710
|
|
|
@@ -56,6 +722,10 @@ export class SnapshotBedrockAgent
|
|
|
56
722
|
{
|
|
57
723
|
public readonly dockerImage: AgentRuntimeArtifact;
|
|
58
724
|
public readonly agentCoreRuntime: Runtime;
|
|
725
|
+
/** Default Gateway target name for this agent. */
|
|
726
|
+
public readonly agentName = 'snapshot-bedrock-agent';
|
|
727
|
+
/** Inbound auth — a fronting Gateway uses this to pick its outbound credential. */
|
|
728
|
+
public readonly auth = 'iam';
|
|
59
729
|
|
|
60
730
|
constructor(scope: Construct, id: string, props?: SnapshotBedrockAgentProps) {
|
|
61
731
|
super(scope, id);
|
|
@@ -72,6 +742,111 @@ export class SnapshotBedrockAgent
|
|
|
72
742
|
platform: Platform.LINUX_ARM64,
|
|
73
743
|
});
|
|
74
744
|
|
|
745
|
+
const sessionKey = new Key(this, 'SessionKey', {
|
|
746
|
+
enableKeyRotation: true,
|
|
747
|
+
});
|
|
748
|
+
|
|
749
|
+
// Allow CloudWatch Logs to use the session key for server access log delivery.
|
|
750
|
+
const stack = Stack.of(this);
|
|
751
|
+
sessionKey.addToResourcePolicy(
|
|
752
|
+
new PolicyStatement({
|
|
753
|
+
effect: Effect.ALLOW,
|
|
754
|
+
principals: [
|
|
755
|
+
new ServicePrincipal(\`logs.\${stack.region}.amazonaws.com\`),
|
|
756
|
+
],
|
|
757
|
+
actions: [
|
|
758
|
+
'kms:Encrypt',
|
|
759
|
+
'kms:Decrypt',
|
|
760
|
+
'kms:ReEncrypt*',
|
|
761
|
+
'kms:GenerateDataKey*',
|
|
762
|
+
'kms:DescribeKey',
|
|
763
|
+
],
|
|
764
|
+
resources: ['*'],
|
|
765
|
+
conditions: {
|
|
766
|
+
ArnLike: {
|
|
767
|
+
'kms:EncryptionContext:aws:logs:arn': \`arn:aws:logs:\${stack.region}:\${stack.account}:log-group:*\`,
|
|
768
|
+
},
|
|
769
|
+
},
|
|
770
|
+
}),
|
|
771
|
+
);
|
|
772
|
+
|
|
773
|
+
const sessionAccessLogs = new LogGroup(this, 'SessionAccessLogs', {
|
|
774
|
+
retention: RetentionDays.ONE_YEAR,
|
|
775
|
+
encryptionKey: sessionKey,
|
|
776
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
777
|
+
});
|
|
778
|
+
|
|
779
|
+
const sessionBucket = new Bucket(this, 'SessionBucket', {
|
|
780
|
+
enforceSSL: true,
|
|
781
|
+
removalPolicy: RemovalPolicy.RETAIN,
|
|
782
|
+
encryption: BucketEncryption.KMS,
|
|
783
|
+
encryptionKey: sessionKey,
|
|
784
|
+
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
|
|
785
|
+
});
|
|
786
|
+
suppressRules(
|
|
787
|
+
sessionBucket,
|
|
788
|
+
['CKV_AWS_21'],
|
|
789
|
+
'Session data does not need versioning enabled',
|
|
790
|
+
);
|
|
791
|
+
suppressRules(
|
|
792
|
+
sessionBucket,
|
|
793
|
+
['CKV2_AWS_61'],
|
|
794
|
+
'Lifecycle configuration not required for session data',
|
|
795
|
+
);
|
|
796
|
+
suppressRules(
|
|
797
|
+
sessionBucket,
|
|
798
|
+
['CKV_AWS_144'],
|
|
799
|
+
'Cross-region replication not required for session data',
|
|
800
|
+
);
|
|
801
|
+
suppressRules(
|
|
802
|
+
sessionBucket,
|
|
803
|
+
['CKV2_AWS_62'],
|
|
804
|
+
'Event notifications not required for session data',
|
|
805
|
+
);
|
|
806
|
+
suppressRules(
|
|
807
|
+
sessionBucket,
|
|
808
|
+
['CKV_AWS_18'],
|
|
809
|
+
'Server access logs are delivered to CloudWatch Logs',
|
|
810
|
+
);
|
|
811
|
+
|
|
812
|
+
const sessionAccessLogsSource: CfnDeliverySource = new CfnDeliverySource(
|
|
813
|
+
this,
|
|
814
|
+
'SessionAccessLogsSource',
|
|
815
|
+
{
|
|
816
|
+
name: Lazy.string({
|
|
817
|
+
produce: () =>
|
|
818
|
+
Names.uniqueResourceName(sessionAccessLogsSource, {
|
|
819
|
+
maxLength: 60,
|
|
820
|
+
}),
|
|
821
|
+
}),
|
|
822
|
+
logType: 'S3_SERVER_ACCESS_LOGS',
|
|
823
|
+
resourceArn: sessionBucket.bucketArn,
|
|
824
|
+
},
|
|
825
|
+
);
|
|
826
|
+
const sessionBucketPolicy = sessionBucket.policy;
|
|
827
|
+
if (sessionBucketPolicy) {
|
|
828
|
+
sessionAccessLogsSource.node.addDependency(sessionBucketPolicy);
|
|
829
|
+
}
|
|
830
|
+
const sessionAccessLogsDestination: CfnDeliveryDestination =
|
|
831
|
+
new CfnDeliveryDestination(this, 'SessionAccessLogsDestination', {
|
|
832
|
+
name: Lazy.string({
|
|
833
|
+
produce: () =>
|
|
834
|
+
Names.uniqueResourceName(sessionAccessLogsDestination, {
|
|
835
|
+
maxLength: 60,
|
|
836
|
+
}),
|
|
837
|
+
}),
|
|
838
|
+
destinationResourceArn: sessionAccessLogs.logGroupArn,
|
|
839
|
+
});
|
|
840
|
+
const sessionAccessLogsDelivery = new CfnDelivery(
|
|
841
|
+
this,
|
|
842
|
+
'SessionAccessLogsDelivery',
|
|
843
|
+
{
|
|
844
|
+
deliverySourceName: sessionAccessLogsSource.name,
|
|
845
|
+
deliveryDestinationArn: sessionAccessLogsDestination.attrArn,
|
|
846
|
+
},
|
|
847
|
+
);
|
|
848
|
+
sessionAccessLogsDelivery.addDependency(sessionAccessLogsSource);
|
|
849
|
+
|
|
75
850
|
this.agentCoreRuntime = new Runtime(this, 'SnapshotBedrockAgent', {
|
|
76
851
|
runtimeName: Lazy.string({
|
|
77
852
|
produce: () =>
|
|
@@ -100,11 +875,16 @@ export class SnapshotBedrockAgent
|
|
|
100
875
|
}),
|
|
101
876
|
);
|
|
102
877
|
|
|
878
|
+
sessionBucket.grantReadWrite(this.agentCoreRuntime);
|
|
879
|
+
|
|
103
880
|
rc.grantReadAppConfig(this.agentCoreRuntime);
|
|
104
881
|
|
|
105
882
|
rc.set('agentcore', 'agentRuntimes', {
|
|
106
883
|
...rc.get('agentcore').agentRuntimes,
|
|
107
|
-
SnapshotBedrockAgent:
|
|
884
|
+
SnapshotBedrockAgent: {
|
|
885
|
+
arn: this.agentCoreRuntime.agentRuntimeArn,
|
|
886
|
+
session: { bucketName: sessionBucket.bucketName },
|
|
887
|
+
},
|
|
108
888
|
});
|
|
109
889
|
}
|
|
110
890
|
|
|
@@ -122,6 +902,22 @@ export class SnapshotBedrockAgent
|
|
|
122
902
|
return this.agentCoreRuntime.connections;
|
|
123
903
|
}
|
|
124
904
|
|
|
905
|
+
/**
|
|
906
|
+
* The HTTPS invocation URL of the runtime.
|
|
907
|
+
*/
|
|
908
|
+
public get invocationUrl(): string {
|
|
909
|
+
// The URL must URL-encode the runtime ARN (':' -> '%3A', '/' -> '%2F').
|
|
910
|
+
// The ARN is a CDK token, so encode at deploy time via Fn.join/Fn.split.
|
|
911
|
+
const encodedArn = Fn.join(
|
|
912
|
+
'%2F',
|
|
913
|
+
Fn.split(
|
|
914
|
+
'/',
|
|
915
|
+
Fn.join('%3A', Fn.split(':', this.agentCoreRuntime.agentRuntimeArn)),
|
|
916
|
+
),
|
|
917
|
+
);
|
|
918
|
+
return \`https://bedrock-agentcore.\${Stack.of(this).region}.amazonaws.com/runtimes/\${encodedArn}/invocations?qualifier=DEFAULT\`;
|
|
919
|
+
}
|
|
920
|
+
|
|
125
921
|
/**
|
|
126
922
|
* Grants IAM permissions to invoke this agent runtime.
|
|
127
923
|
*
|
|
@@ -156,13 +952,23 @@ exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime
|
|
|
156
952
|
exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > core-index.ts 1`] = `
|
|
157
953
|
"export * from './app.js';
|
|
158
954
|
export * from './checkov.js';
|
|
955
|
+
export * from './cloudfront.js';
|
|
159
956
|
export * from './runtime-config.js';
|
|
160
957
|
export * from './workspace.js';
|
|
161
958
|
"
|
|
162
959
|
`;
|
|
163
960
|
|
|
164
961
|
exports[`ts#agent generator > should match snapshot for Terraform generated files > terraform-agent.tf 1`] = `
|
|
165
|
-
"
|
|
962
|
+
"terraform {
|
|
963
|
+
required_providers {
|
|
964
|
+
random = {
|
|
965
|
+
source = "hashicorp/random"
|
|
966
|
+
version = "3.9.0"
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
variable "env" {
|
|
166
972
|
description = "Environment variables to pass to the agent core runtime"
|
|
167
973
|
type = map(string)
|
|
168
974
|
default = {}
|
|
@@ -184,6 +990,25 @@ variable "tags" {
|
|
|
184
990
|
default = {}
|
|
185
991
|
}
|
|
186
992
|
|
|
993
|
+
# VPC Configuration (optional)
|
|
994
|
+
variable "enable_vpc" {
|
|
995
|
+
description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
|
|
996
|
+
type = bool
|
|
997
|
+
default = false
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
variable "vpc_id" {
|
|
1001
|
+
description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
|
|
1002
|
+
type = string
|
|
1003
|
+
default = null
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
variable "subnet_ids" {
|
|
1007
|
+
description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
|
|
1008
|
+
type = list(string)
|
|
1009
|
+
default = null
|
|
1010
|
+
}
|
|
1011
|
+
|
|
187
1012
|
variable "appconfig_application_id" {
|
|
188
1013
|
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
1014
|
type = string
|
|
@@ -194,11 +1019,153 @@ variable "appconfig_application_arn" {
|
|
|
194
1019
|
type = string
|
|
195
1020
|
}
|
|
196
1021
|
|
|
1022
|
+
data "aws_region" "current" {}
|
|
1023
|
+
data "aws_caller_identity" "current" {}
|
|
1024
|
+
|
|
1025
|
+
locals {
|
|
1026
|
+
# Delivery source/destination names have a 60 character maximum. Truncate
|
|
1027
|
+
# the agent name so these stay within the limit.
|
|
1028
|
+
session_access_logs_name_prefix = substr("terraform-snapshot-agent", 0, 30)
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
# Uniquifies resource names below so this construct can be deployed more than
|
|
1032
|
+
# once (e.g. across stages) within the same account/region.
|
|
1033
|
+
resource "random_id" "session_unique_suffix" {
|
|
1034
|
+
byte_length = 4
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
# KMS key encrypting the session bucket and its server access logs.
|
|
1038
|
+
resource "aws_kms_key" "session" {
|
|
1039
|
+
description = "KMS key for terraform-snapshot-agent agent session data"
|
|
1040
|
+
enable_key_rotation = true
|
|
1041
|
+
deletion_window_in_days = 7
|
|
1042
|
+
|
|
1043
|
+
policy = jsonencode({
|
|
1044
|
+
Version = "2012-10-17"
|
|
1045
|
+
Statement = [
|
|
1046
|
+
{
|
|
1047
|
+
Sid = "EnableIAMUserPermissions"
|
|
1048
|
+
Effect = "Allow"
|
|
1049
|
+
Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
|
|
1050
|
+
Action = "kms:*"
|
|
1051
|
+
Resource = "*"
|
|
1052
|
+
},
|
|
1053
|
+
{
|
|
1054
|
+
Sid = "AllowCloudWatchLogs"
|
|
1055
|
+
Effect = "Allow"
|
|
1056
|
+
Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
|
|
1057
|
+
Action = [
|
|
1058
|
+
"kms:Encrypt",
|
|
1059
|
+
"kms:Decrypt",
|
|
1060
|
+
"kms:ReEncrypt*",
|
|
1061
|
+
"kms:GenerateDataKey*",
|
|
1062
|
+
"kms:DescribeKey"
|
|
1063
|
+
]
|
|
1064
|
+
Resource = "*"
|
|
1065
|
+
Condition = {
|
|
1066
|
+
ArnLike = {
|
|
1067
|
+
"kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:*"
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
]
|
|
1072
|
+
})
|
|
1073
|
+
|
|
1074
|
+
tags = var.tags
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1077
|
+
# CloudWatch log group receiving the session bucket's server access logs.
|
|
1078
|
+
resource "aws_cloudwatch_log_group" "session_access_logs" {
|
|
1079
|
+
name = "/aws/s3/terraform-snapshot-agent-session-access-logs-\${random_id.session_unique_suffix.hex}"
|
|
1080
|
+
retention_in_days = 365
|
|
1081
|
+
kms_key_id = aws_kms_key.session.arn
|
|
1082
|
+
|
|
1083
|
+
tags = var.tags
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
# Bucket storing the agent's session data
|
|
1087
|
+
resource "aws_s3_bucket" "session" {
|
|
1088
|
+
#checkov:skip=CKV2_AWS_61:Lifecycle configuration not required for session data
|
|
1089
|
+
#checkov:skip=CKV_AWS_144:Cross-region replication not required for session data
|
|
1090
|
+
#checkov:skip=CKV2_AWS_62:Event notifications not required for session data
|
|
1091
|
+
#checkov:skip=CKV_AWS_18:Server access logs are delivered to CloudWatch Logs (see aws_cloudwatch_log_delivery.session)
|
|
1092
|
+
#checkov:skip=CKV_AWS_21:Session data does not need versioning enabled
|
|
1093
|
+
force_destroy = false
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
resource "aws_s3_bucket_server_side_encryption_configuration" "session" {
|
|
1097
|
+
bucket = aws_s3_bucket.session.id
|
|
1098
|
+
|
|
1099
|
+
rule {
|
|
1100
|
+
apply_server_side_encryption_by_default {
|
|
1101
|
+
kms_master_key_id = aws_kms_key.session.arn
|
|
1102
|
+
sse_algorithm = "aws:kms"
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
resource "aws_s3_bucket_public_access_block" "session" {
|
|
1108
|
+
bucket = aws_s3_bucket.session.id
|
|
1109
|
+
|
|
1110
|
+
block_public_acls = true
|
|
1111
|
+
block_public_policy = true
|
|
1112
|
+
ignore_public_acls = true
|
|
1113
|
+
restrict_public_buckets = true
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
resource "aws_s3_bucket_policy" "session" {
|
|
1117
|
+
bucket = aws_s3_bucket.session.id
|
|
1118
|
+
|
|
1119
|
+
policy = jsonencode({
|
|
1120
|
+
Version = "2012-10-17"
|
|
1121
|
+
Statement = [
|
|
1122
|
+
{
|
|
1123
|
+
Sid = "DenyInsecureConnections"
|
|
1124
|
+
Effect = "Deny"
|
|
1125
|
+
Principal = "*"
|
|
1126
|
+
Action = "s3:*"
|
|
1127
|
+
Resource = [
|
|
1128
|
+
aws_s3_bucket.session.arn,
|
|
1129
|
+
"\${aws_s3_bucket.session.arn}/*"
|
|
1130
|
+
]
|
|
1131
|
+
Condition = {
|
|
1132
|
+
Bool = {
|
|
1133
|
+
"aws:SecureTransport" = "false"
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
]
|
|
1138
|
+
})
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
# Deliver the session bucket's server access logs to CloudWatch Logs.
|
|
1142
|
+
resource "aws_cloudwatch_log_delivery_source" "session" {
|
|
1143
|
+
name = "\${local.session_access_logs_name_prefix}-access-logs-source-\${random_id.session_unique_suffix.hex}"
|
|
1144
|
+
log_type = "S3_SERVER_ACCESS_LOGS"
|
|
1145
|
+
resource_arn = aws_s3_bucket.session.arn
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
resource "aws_cloudwatch_log_delivery_destination" "session" {
|
|
1149
|
+
name = "\${local.session_access_logs_name_prefix}-access-logs-dest-\${random_id.session_unique_suffix.hex}"
|
|
1150
|
+
|
|
1151
|
+
delivery_destination_configuration {
|
|
1152
|
+
destination_resource_arn = aws_cloudwatch_log_group.session_access_logs.arn
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
resource "aws_cloudwatch_log_delivery" "session" {
|
|
1157
|
+
delivery_source_name = aws_cloudwatch_log_delivery_source.session.name
|
|
1158
|
+
delivery_destination_arn = aws_cloudwatch_log_delivery_destination.session.arn
|
|
1159
|
+
}
|
|
1160
|
+
|
|
197
1161
|
module "agent_core_runtime" {
|
|
198
1162
|
source = "../../../core/agent-core"
|
|
199
1163
|
agent_runtime_name = "TerraformSnapshotAgent"
|
|
200
1164
|
docker_image_tag = "proj-terraform-snapshot-agent:latest"
|
|
201
1165
|
server_protocol = "HTTP"
|
|
1166
|
+
enable_vpc = var.enable_vpc
|
|
1167
|
+
vpc_id = var.vpc_id
|
|
1168
|
+
subnet_ids = var.subnet_ids
|
|
202
1169
|
|
|
203
1170
|
env = merge({
|
|
204
1171
|
RUNTIME_CONFIG_APP_ID = var.appconfig_application_id
|
|
@@ -223,6 +1190,29 @@ module "agent_core_runtime" {
|
|
|
223
1190
|
"arn:aws:bedrock:*:*:foundation-model/*",
|
|
224
1191
|
"arn:aws:bedrock:*:*:inference-profile/*"
|
|
225
1192
|
]
|
|
1193
|
+
},
|
|
1194
|
+
# Grant access for the agent to read/write its session data
|
|
1195
|
+
{
|
|
1196
|
+
Effect = "Allow"
|
|
1197
|
+
Action = [
|
|
1198
|
+
"s3:GetObject",
|
|
1199
|
+
"s3:PutObject",
|
|
1200
|
+
"s3:DeleteObject",
|
|
1201
|
+
"s3:ListBucket"
|
|
1202
|
+
]
|
|
1203
|
+
Resource = [
|
|
1204
|
+
aws_s3_bucket.session.arn,
|
|
1205
|
+
"\${aws_s3_bucket.session.arn}/*"
|
|
1206
|
+
]
|
|
1207
|
+
},
|
|
1208
|
+
# Grant access for the agent to use the session bucket's KMS key
|
|
1209
|
+
{
|
|
1210
|
+
Effect = "Allow"
|
|
1211
|
+
Action = [
|
|
1212
|
+
"kms:Decrypt",
|
|
1213
|
+
"kms:GenerateDataKey*"
|
|
1214
|
+
]
|
|
1215
|
+
Resource = [aws_kms_key.session.arn]
|
|
226
1216
|
}
|
|
227
1217
|
], var.additional_iam_policy_statements)
|
|
228
1218
|
tags = var.tags
|
|
@@ -234,7 +1224,7 @@ module "add_agent_runtime_to_runtime_config" {
|
|
|
234
1224
|
|
|
235
1225
|
namespace = "agentcore"
|
|
236
1226
|
key = "agentRuntimes"
|
|
237
|
-
value = { "TerraformSnapshotAgent" = module.agent_core_runtime.agent_core_runtime_arn }
|
|
1227
|
+
value = { "TerraformSnapshotAgent" = { arn = module.agent_core_runtime.agent_core_runtime_arn, session = { bucketName = aws_s3_bucket.session.bucket } } }
|
|
238
1228
|
|
|
239
1229
|
depends_on = [module.agent_core_runtime]
|
|
240
1230
|
}
|
|
@@ -249,10 +1239,20 @@ output "agent_core_runtime_arn" {
|
|
|
249
1239
|
value = module.agent_core_runtime.agent_core_runtime_arn
|
|
250
1240
|
}
|
|
251
1241
|
|
|
1242
|
+
output "invocation_url" {
|
|
1243
|
+
description = "HTTPS invocation URL of the runtime"
|
|
1244
|
+
value = module.agent_core_runtime.invocation_url
|
|
1245
|
+
}
|
|
1246
|
+
|
|
252
1247
|
output "appconfig_application_id" {
|
|
253
1248
|
description = "AppConfig Application ID for runtime config (passthrough of the shared \`appconfig_application_id\` input)."
|
|
254
1249
|
value = var.appconfig_application_id
|
|
255
1250
|
}
|
|
1251
|
+
|
|
1252
|
+
output "security_group_id" {
|
|
1253
|
+
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."
|
|
1254
|
+
value = module.agent_core_runtime.security_group_id
|
|
1255
|
+
}
|
|
256
1256
|
"
|
|
257
1257
|
`;
|
|
258
1258
|
|
|
@@ -263,15 +1263,15 @@ exports[`ts#agent generator > should match snapshot for Terraform generated file
|
|
|
263
1263
|
required_providers {
|
|
264
1264
|
aws = {
|
|
265
1265
|
source = "hashicorp/aws"
|
|
266
|
-
version = "
|
|
1266
|
+
version = "6.60.0"
|
|
267
1267
|
}
|
|
268
1268
|
null = {
|
|
269
1269
|
source = "hashicorp/null"
|
|
270
|
-
version = "
|
|
1270
|
+
version = "3.3.0"
|
|
271
1271
|
}
|
|
272
1272
|
random = {
|
|
273
1273
|
source = "hashicorp/random"
|
|
274
|
-
version = "
|
|
1274
|
+
version = "3.9.0"
|
|
275
1275
|
}
|
|
276
1276
|
}
|
|
277
1277
|
}
|
|
@@ -329,6 +1329,30 @@ variable "additional_iam_policy_statements" {
|
|
|
329
1329
|
default = []
|
|
330
1330
|
}
|
|
331
1331
|
|
|
1332
|
+
# VPC Configuration (optional)
|
|
1333
|
+
variable "enable_vpc" {
|
|
1334
|
+
description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
|
|
1335
|
+
type = bool
|
|
1336
|
+
default = false
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
variable "vpc_id" {
|
|
1340
|
+
description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
|
|
1341
|
+
type = string
|
|
1342
|
+
default = null
|
|
1343
|
+
|
|
1344
|
+
validation {
|
|
1345
|
+
condition = !var.enable_vpc || (var.vpc_id != null && var.subnet_ids != null)
|
|
1346
|
+
error_message = "vpc_id and subnet_ids must be set when enable_vpc is true."
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
variable "subnet_ids" {
|
|
1351
|
+
description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
|
|
1352
|
+
type = list(string)
|
|
1353
|
+
default = null
|
|
1354
|
+
}
|
|
1355
|
+
|
|
332
1356
|
variable "tags" {
|
|
333
1357
|
description = "Tags to apply to resources"
|
|
334
1358
|
type = map(string)
|
|
@@ -354,8 +1378,7 @@ resource "aws_ecr_repository" "agent_core_repository" {
|
|
|
354
1378
|
#checkov:skip=CKV_AWS_136:AES256 encryption is sufficient for ECR repositories
|
|
355
1379
|
name = "\${lower(var.agent_runtime_name)}_repository_\${random_id.unique_suffix.hex}"
|
|
356
1380
|
|
|
357
|
-
|
|
358
|
-
image_tag_mutability = "MUTABLE"
|
|
1381
|
+
image_tag_mutability = "IMMUTABLE"
|
|
359
1382
|
force_delete = true
|
|
360
1383
|
|
|
361
1384
|
image_scanning_configuration {
|
|
@@ -529,28 +1552,62 @@ data "external" "docker_digest" {
|
|
|
529
1552
|
program = ["sh", "-c", "echo '{\\"digest\\":\\"'$(docker inspect \${var.docker_image_tag} --format '{{.Id}}')'\\"}' "]
|
|
530
1553
|
}
|
|
531
1554
|
|
|
1555
|
+
locals {
|
|
1556
|
+
# Content-based, immutable image tag derived from the local image digest
|
|
1557
|
+
image_tag = replace(data.external.docker_digest.result.digest, "sha256:", "")
|
|
1558
|
+
}
|
|
1559
|
+
|
|
532
1560
|
# Null resource for container image publish
|
|
533
1561
|
resource "null_resource" "docker_publish" {
|
|
534
1562
|
triggers = {
|
|
535
1563
|
docker_digest = data.external.docker_digest.result.digest
|
|
536
1564
|
repository_url = aws_ecr_repository.agent_core_repository.repository_url
|
|
537
1565
|
docker_image_tag = var.docker_image_tag
|
|
1566
|
+
image_tag = local.image_tag
|
|
538
1567
|
}
|
|
539
1568
|
|
|
540
1569
|
provisioner "local-exec" {
|
|
541
1570
|
command = <<-EOT
|
|
542
1571
|
# Get ECR login token
|
|
543
|
-
aws ecr get-login-password --region
|
|
1572
|
+
aws ecr get-login-password --region "$AWS_REGION" | docker login --username AWS --password-stdin "$REPOSITORY_URL"
|
|
544
1573
|
|
|
545
|
-
# Tag the image
|
|
546
|
-
docker tag
|
|
1574
|
+
# Tag the image with the immutable content-based tag
|
|
1575
|
+
docker tag "$DOCKER_IMAGE_TAG" "$REPOSITORY_URL:$IMAGE_TAG"
|
|
547
1576
|
|
|
548
1577
|
# Push the image
|
|
549
|
-
docker push
|
|
1578
|
+
docker push "$REPOSITORY_URL:$IMAGE_TAG"
|
|
550
1579
|
EOT
|
|
1580
|
+
environment = {
|
|
1581
|
+
AWS_REGION = local.aws_region
|
|
1582
|
+
REPOSITORY_URL = self.triggers.repository_url
|
|
1583
|
+
DOCKER_IMAGE_TAG = self.triggers.docker_image_tag
|
|
1584
|
+
IMAGE_TAG = self.triggers.image_tag
|
|
1585
|
+
}
|
|
551
1586
|
}
|
|
552
1587
|
|
|
553
|
-
depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
|
|
1588
|
+
depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
# Security group for the agent core runtime, used when running inside a VPC
|
|
1592
|
+
resource "aws_security_group" "agent_core_runtime" {
|
|
1593
|
+
count = var.enable_vpc ? 1 : 0
|
|
1594
|
+
|
|
1595
|
+
#checkov:skip=CKV2_AWS_5:Attached to the runtime via network_configuration; Checkov cannot resolve this reference
|
|
1596
|
+
name_prefix = "\${var.agent_runtime_name}-runtime-"
|
|
1597
|
+
description = "Security group for the \${var.agent_runtime_name} agent core runtime"
|
|
1598
|
+
vpc_id = var.vpc_id
|
|
1599
|
+
tags = var.tags
|
|
1600
|
+
}
|
|
1601
|
+
|
|
1602
|
+
resource "aws_vpc_security_group_egress_rule" "agent_core_runtime_https" {
|
|
1603
|
+
count = var.enable_vpc ? 1 : 0
|
|
1604
|
+
|
|
1605
|
+
security_group_id = aws_security_group.agent_core_runtime[0].id
|
|
1606
|
+
cidr_ipv4 = "0.0.0.0/0"
|
|
1607
|
+
from_port = 443
|
|
1608
|
+
to_port = 443
|
|
1609
|
+
ip_protocol = "tcp"
|
|
1610
|
+
description = "Allow outbound HTTPS to AWS service endpoints"
|
|
554
1611
|
}
|
|
555
1612
|
|
|
556
1613
|
# Bedrock AgentCore Agent Runtime
|
|
@@ -561,7 +1618,7 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
|
|
|
561
1618
|
|
|
562
1619
|
agent_runtime_artifact {
|
|
563
1620
|
container_configuration {
|
|
564
|
-
container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}
|
|
1621
|
+
container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}:\${local.image_tag}"
|
|
565
1622
|
}
|
|
566
1623
|
}
|
|
567
1624
|
|
|
@@ -578,8 +1635,24 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
|
|
|
578
1635
|
}
|
|
579
1636
|
}
|
|
580
1637
|
|
|
1638
|
+
# Receive the caller's Authorization header (validated by the JWT authorizer).
|
|
1639
|
+
dynamic "request_header_configuration" {
|
|
1640
|
+
for_each = var.authorizer_configuration != null && try(var.authorizer_configuration.custom_jwt_authorizer, null) != null ? [1] : []
|
|
1641
|
+
content {
|
|
1642
|
+
request_header_allowlist = ["Authorization"]
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1645
|
+
|
|
581
1646
|
network_configuration {
|
|
582
|
-
network_mode = "PUBLIC"
|
|
1647
|
+
network_mode = var.enable_vpc ? "VPC" : "PUBLIC"
|
|
1648
|
+
|
|
1649
|
+
dynamic "network_mode_config" {
|
|
1650
|
+
for_each = var.enable_vpc ? [1] : []
|
|
1651
|
+
content {
|
|
1652
|
+
security_groups = [aws_security_group.agent_core_runtime[0].id]
|
|
1653
|
+
subnets = var.subnet_ids
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
583
1656
|
}
|
|
584
1657
|
|
|
585
1658
|
protocol_configuration {
|
|
@@ -594,7 +1667,70 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
|
|
|
594
1667
|
]
|
|
595
1668
|
}
|
|
596
1669
|
|
|
1670
|
+
# MCP consumers (e.g. gateway targets, which fetch tools at creation) can race
|
|
1671
|
+
# the runtime's first cold start, so probe it until it serves MCP. The ARN
|
|
1672
|
+
# output is routed through this resource so consumers wait for readiness.
|
|
1673
|
+
resource "null_resource" "runtime_ready" {
|
|
1674
|
+
count = var.server_protocol == "MCP" ? 1 : 0
|
|
1675
|
+
|
|
1676
|
+
triggers = {
|
|
1677
|
+
runtime_arn = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
|
|
1678
|
+
}
|
|
1679
|
+
|
|
1680
|
+
provisioner "local-exec" {
|
|
1681
|
+
command = <<-EOT
|
|
1682
|
+
uv run --with boto3==1.43.67 python -c "
|
|
1683
|
+
import boto3
|
|
1684
|
+
import json
|
|
1685
|
+
import os
|
|
1686
|
+
import time
|
|
1687
|
+
import uuid
|
|
1688
|
+
|
|
1689
|
+
runtime_arn = os.environ['RUNTIME_ARN']
|
|
1690
|
+
client = boto3.client('bedrock-agentcore')
|
|
1691
|
+
initialize_request = json.dumps({
|
|
1692
|
+
'jsonrpc': '2.0',
|
|
1693
|
+
'id': 1,
|
|
1694
|
+
'method': 'initialize',
|
|
1695
|
+
'params': {
|
|
1696
|
+
'protocolVersion': '2025-03-26',
|
|
1697
|
+
'capabilities': {},
|
|
1698
|
+
'clientInfo': {'name': 'readiness-probe', 'version': '1.0'},
|
|
1699
|
+
},
|
|
1700
|
+
})
|
|
1701
|
+
|
|
1702
|
+
deadline = time.time() + 5 * 60
|
|
1703
|
+
while True:
|
|
1704
|
+
try:
|
|
1705
|
+
client.invoke_agent_runtime(
|
|
1706
|
+
agentRuntimeArn=runtime_arn,
|
|
1707
|
+
runtimeSessionId=f'readiness-probe-{uuid.uuid4()}',
|
|
1708
|
+
contentType='application/json',
|
|
1709
|
+
accept='application/json, text/event-stream',
|
|
1710
|
+
payload=initialize_request,
|
|
1711
|
+
)
|
|
1712
|
+
break
|
|
1713
|
+
except Exception:
|
|
1714
|
+
if time.time() >= deadline:
|
|
1715
|
+
raise
|
|
1716
|
+
time.sleep(5)
|
|
1717
|
+
|
|
1718
|
+
print(f'Runtime {runtime_arn} is serving MCP')
|
|
1719
|
+
"
|
|
1720
|
+
EOT
|
|
1721
|
+
environment = {
|
|
1722
|
+
RUNTIME_ARN = self.triggers.runtime_arn
|
|
1723
|
+
}
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1726
|
+
|
|
597
1727
|
# Outputs
|
|
1728
|
+
locals {
|
|
1729
|
+
# For MCP runtimes the ARN flows through the readiness probe, so consumers
|
|
1730
|
+
# wait until the runtime serves MCP.
|
|
1731
|
+
ready_runtime_arn = var.server_protocol == "MCP" ? null_resource.runtime_ready[0].triggers.runtime_arn : aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
|
|
1732
|
+
}
|
|
1733
|
+
|
|
598
1734
|
output "agent_core_runtime_role_arn" {
|
|
599
1735
|
description = "ARN of the Agent Core Runtime IAM role"
|
|
600
1736
|
value = aws_iam_role.agent_core_runtime_role.arn
|
|
@@ -611,8 +1747,13 @@ output "agent_runtime_name" {
|
|
|
611
1747
|
}
|
|
612
1748
|
|
|
613
1749
|
output "agent_core_runtime_arn" {
|
|
614
|
-
description = "ARN of the Bedrock Agent Core runtime"
|
|
615
|
-
value =
|
|
1750
|
+
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."
|
|
1751
|
+
value = local.ready_runtime_arn
|
|
1752
|
+
}
|
|
1753
|
+
|
|
1754
|
+
output "invocation_url" {
|
|
1755
|
+
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."
|
|
1756
|
+
value = "https://bedrock-agentcore.\${local.aws_region}.amazonaws.com/runtimes/\${urlencode(local.ready_runtime_arn)}/invocations\${var.server_protocol == "A2A" ? "/" : "?qualifier=DEFAULT"}"
|
|
616
1757
|
}
|
|
617
1758
|
|
|
618
1759
|
output "agent_runtime_id" {
|
|
@@ -624,11 +1765,21 @@ output "agent_runtime_version" {
|
|
|
624
1765
|
description = "Version of the Bedrock Agent Core runtime"
|
|
625
1766
|
value = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_version
|
|
626
1767
|
}
|
|
1768
|
+
|
|
1769
|
+
output "security_group_id" {
|
|
1770
|
+
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."
|
|
1771
|
+
value = var.enable_vpc ? aws_security_group.agent_core_runtime[0].id : null
|
|
1772
|
+
}
|
|
627
1773
|
"
|
|
628
1774
|
`;
|
|
629
1775
|
|
|
630
1776
|
exports[`ts#agent generator > should match snapshot for generated files > agent-agent.ts 1`] = `
|
|
631
1777
|
"import { Agent, tool } from '@strands-agents/sdk';
|
|
1778
|
+
import {
|
|
1779
|
+
ModelErrorLoggingPlugin,
|
|
1780
|
+
ToolErrorLoggingPlugin,
|
|
1781
|
+
} from '@proj/agent-connection';
|
|
1782
|
+
import { getSessionManager } from './session.js';
|
|
632
1783
|
import { z } from 'zod';
|
|
633
1784
|
|
|
634
1785
|
const multiply = tool({
|
|
@@ -641,13 +1792,17 @@ const multiply = tool({
|
|
|
641
1792
|
callback: ({ a, b }) => a * b,
|
|
642
1793
|
});
|
|
643
1794
|
|
|
644
|
-
export const getAgent = async () =>
|
|
645
|
-
new Agent({
|
|
1795
|
+
export const getAgent = async () => {
|
|
1796
|
+
const agent = new Agent({
|
|
646
1797
|
systemPrompt: \`You are a mathematical wizard.
|
|
647
1798
|
Use your tools for mathematical tasks.
|
|
648
1799
|
Refer to tools as your 'spellbook'.\`,
|
|
649
1800
|
tools: [multiply],
|
|
1801
|
+
sessionManager: await getSessionManager(),
|
|
1802
|
+
plugins: [new ModelErrorLoggingPlugin(), new ToolErrorLoggingPlugin()],
|
|
650
1803
|
});
|
|
1804
|
+
return agent;
|
|
1805
|
+
};
|
|
651
1806
|
"
|
|
652
1807
|
`;
|
|
653
1808
|
|
|
@@ -930,7 +2085,7 @@ exports[`ts#agent generator > should match snapshot for generated files > agent-
|
|
|
930
2085
|
"import { publicProcedure, t } from './init.js';
|
|
931
2086
|
import { z } from 'zod';
|
|
932
2087
|
import { zAsyncIterable } from './schema/z-async-iterable.js';
|
|
933
|
-
import { enterSessionContext, withSessionId } from '
|
|
2088
|
+
import { enterSessionContext, withSessionId } from '@proj/agent-connection';
|
|
934
2089
|
import { getAgent } from './agent.js';
|
|
935
2090
|
|
|
936
2091
|
export const router = t.router;
|
|
@@ -939,7 +2094,7 @@ const agent = withSessionId(getAgent);
|
|
|
939
2094
|
|
|
940
2095
|
export const appRouter = router({
|
|
941
2096
|
invoke: publicProcedure
|
|
942
|
-
.input(z.object({
|
|
2097
|
+
.input(z.object({ prompt: z.string().max(100000) }))
|
|
943
2098
|
.output(
|
|
944
2099
|
zAsyncIterable({
|
|
945
2100
|
yield: z.string(),
|
|
@@ -949,7 +2104,7 @@ export const appRouter = router({
|
|
|
949
2104
|
.subscription(async function* (opts) {
|
|
950
2105
|
// Bind the session ID for this subscription so downstream MCP / A2A clients forward it on outbound calls.
|
|
951
2106
|
enterSessionContext(opts.ctx.sessionId);
|
|
952
|
-
for await (const event of agent.stream(opts.input.
|
|
2107
|
+
for await (const event of agent.stream(opts.input.prompt)) {
|
|
953
2108
|
if (
|
|
954
2109
|
event.type === 'modelStreamUpdateEvent' &&
|
|
955
2110
|
event.event.type === 'modelContentBlockDeltaEvent' &&
|
|
@@ -1048,3 +2203,275 @@ export function zAsyncIterable<
|
|
|
1048
2203
|
}
|
|
1049
2204
|
"
|
|
1050
2205
|
`;
|
|
2206
|
+
|
|
2207
|
+
exports[`ts#agent generator > should not create session bucket infrastructure when session is in-memory (Terraform) > terraform-agent.tf (in-memory) 1`] = `
|
|
2208
|
+
"variable "env" {
|
|
2209
|
+
description = "Environment variables to pass to the agent core runtime"
|
|
2210
|
+
type = map(string)
|
|
2211
|
+
default = {}
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2214
|
+
variable "additional_iam_policy_statements" {
|
|
2215
|
+
description = "Additional IAM policy statements to attach to the agent core runtime role"
|
|
2216
|
+
type = list(object({
|
|
2217
|
+
Effect = string
|
|
2218
|
+
Action = list(string)
|
|
2219
|
+
Resource = list(string)
|
|
2220
|
+
}))
|
|
2221
|
+
default = []
|
|
2222
|
+
}
|
|
2223
|
+
|
|
2224
|
+
variable "tags" {
|
|
2225
|
+
description = "Tags to apply to resources"
|
|
2226
|
+
type = map(string)
|
|
2227
|
+
default = {}
|
|
2228
|
+
}
|
|
2229
|
+
|
|
2230
|
+
# VPC Configuration (optional)
|
|
2231
|
+
variable "enable_vpc" {
|
|
2232
|
+
description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
|
|
2233
|
+
type = bool
|
|
2234
|
+
default = false
|
|
2235
|
+
}
|
|
2236
|
+
|
|
2237
|
+
variable "vpc_id" {
|
|
2238
|
+
description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
|
|
2239
|
+
type = string
|
|
2240
|
+
default = null
|
|
2241
|
+
}
|
|
2242
|
+
|
|
2243
|
+
variable "subnet_ids" {
|
|
2244
|
+
description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
|
|
2245
|
+
type = list(string)
|
|
2246
|
+
default = null
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
variable "appconfig_application_id" {
|
|
2250
|
+
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."
|
|
2251
|
+
type = string
|
|
2252
|
+
}
|
|
2253
|
+
|
|
2254
|
+
variable "appconfig_application_arn" {
|
|
2255
|
+
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."
|
|
2256
|
+
type = string
|
|
2257
|
+
}
|
|
2258
|
+
|
|
2259
|
+
module "agent_core_runtime" {
|
|
2260
|
+
source = "../../../core/agent-core"
|
|
2261
|
+
agent_runtime_name = "InMemoryTerraformAgent"
|
|
2262
|
+
docker_image_tag = "proj-in-memory-terraform-agent:latest"
|
|
2263
|
+
server_protocol = "HTTP"
|
|
2264
|
+
enable_vpc = var.enable_vpc
|
|
2265
|
+
vpc_id = var.vpc_id
|
|
2266
|
+
subnet_ids = var.subnet_ids
|
|
2267
|
+
|
|
2268
|
+
env = merge({
|
|
2269
|
+
RUNTIME_CONFIG_APP_ID = var.appconfig_application_id
|
|
2270
|
+
}, var.env)
|
|
2271
|
+
additional_iam_policy_statements = concat([
|
|
2272
|
+
{
|
|
2273
|
+
Effect = "Allow"
|
|
2274
|
+
Action = [
|
|
2275
|
+
"appconfig:StartConfigurationSession",
|
|
2276
|
+
"appconfig:GetLatestConfiguration"
|
|
2277
|
+
]
|
|
2278
|
+
Resource = ["\${var.appconfig_application_arn}/*"]
|
|
2279
|
+
},
|
|
2280
|
+
# Grant access for the agent to invoke bedrock models
|
|
2281
|
+
{
|
|
2282
|
+
Effect = "Allow"
|
|
2283
|
+
Action = [
|
|
2284
|
+
"bedrock:InvokeModel",
|
|
2285
|
+
"bedrock:InvokeModelWithResponseStream"
|
|
2286
|
+
]
|
|
2287
|
+
Resource = [
|
|
2288
|
+
"arn:aws:bedrock:*:*:foundation-model/*",
|
|
2289
|
+
"arn:aws:bedrock:*:*:inference-profile/*"
|
|
2290
|
+
]
|
|
2291
|
+
}
|
|
2292
|
+
], var.additional_iam_policy_statements)
|
|
2293
|
+
tags = var.tags
|
|
2294
|
+
}
|
|
2295
|
+
|
|
2296
|
+
# Add agent runtime ARN to runtime config
|
|
2297
|
+
module "add_agent_runtime_to_runtime_config" {
|
|
2298
|
+
source = "../../../core/runtime-config/entry"
|
|
2299
|
+
|
|
2300
|
+
namespace = "agentcore"
|
|
2301
|
+
key = "agentRuntimes"
|
|
2302
|
+
value = { "InMemoryTerraformAgent" = { arn = module.agent_core_runtime.agent_core_runtime_arn } }
|
|
2303
|
+
|
|
2304
|
+
depends_on = [module.agent_core_runtime]
|
|
2305
|
+
}
|
|
2306
|
+
|
|
2307
|
+
output "agent_core_runtime_role_arn" {
|
|
2308
|
+
description = "ARN of the agent core runtime role"
|
|
2309
|
+
value = module.agent_core_runtime.agent_core_runtime_role_arn
|
|
2310
|
+
}
|
|
2311
|
+
|
|
2312
|
+
output "agent_core_runtime_arn" {
|
|
2313
|
+
description = "ARN of the Bedrock Agent Core runtime"
|
|
2314
|
+
value = module.agent_core_runtime.agent_core_runtime_arn
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2317
|
+
output "invocation_url" {
|
|
2318
|
+
description = "HTTPS invocation URL of the runtime"
|
|
2319
|
+
value = module.agent_core_runtime.invocation_url
|
|
2320
|
+
}
|
|
2321
|
+
|
|
2322
|
+
output "appconfig_application_id" {
|
|
2323
|
+
description = "AppConfig Application ID for runtime config (passthrough of the shared \`appconfig_application_id\` input)."
|
|
2324
|
+
value = var.appconfig_application_id
|
|
2325
|
+
}
|
|
2326
|
+
|
|
2327
|
+
output "security_group_id" {
|
|
2328
|
+
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."
|
|
2329
|
+
value = module.agent_core_runtime.security_group_id
|
|
2330
|
+
}
|
|
2331
|
+
"
|
|
2332
|
+
`;
|
|
2333
|
+
|
|
2334
|
+
exports[`ts#agent generator > should not create session bucket infrastructure when session is in-memory > agent-construct.ts (in-memory) 1`] = `
|
|
2335
|
+
"import { Fn, Lazy, Names, Stack } from 'aws-cdk-lib';
|
|
2336
|
+
import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
|
|
2337
|
+
import { Connections, IConnectable } from 'aws-cdk-lib/aws-ec2';
|
|
2338
|
+
import { Construct } from 'constructs';
|
|
2339
|
+
import * as path from 'path';
|
|
2340
|
+
import * as url from 'url';
|
|
2341
|
+
import {
|
|
2342
|
+
AgentRuntimeArtifact,
|
|
2343
|
+
ProtocolType,
|
|
2344
|
+
Runtime,
|
|
2345
|
+
RuntimeProps,
|
|
2346
|
+
} from 'aws-cdk-lib/aws-bedrockagentcore';
|
|
2347
|
+
import {
|
|
2348
|
+
PolicyStatement,
|
|
2349
|
+
IGrantable,
|
|
2350
|
+
IPrincipal,
|
|
2351
|
+
Grant,
|
|
2352
|
+
} from 'aws-cdk-lib/aws-iam';
|
|
2353
|
+
import { RuntimeConfig } from '../../../core/runtime-config.js';
|
|
2354
|
+
import { findWorkspaceRoot } from '../../../core/workspace.js';
|
|
2355
|
+
|
|
2356
|
+
export type InMemoryAgentProps = Omit<
|
|
2357
|
+
RuntimeProps,
|
|
2358
|
+
| 'runtimeName'
|
|
2359
|
+
| 'protocolConfiguration'
|
|
2360
|
+
| 'agentRuntimeArtifact'
|
|
2361
|
+
| 'authorizerConfiguration'
|
|
2362
|
+
>;
|
|
2363
|
+
|
|
2364
|
+
export class InMemoryAgent
|
|
2365
|
+
extends Construct
|
|
2366
|
+
implements IGrantable, IConnectable
|
|
2367
|
+
{
|
|
2368
|
+
public readonly dockerImage: AgentRuntimeArtifact;
|
|
2369
|
+
public readonly agentCoreRuntime: Runtime;
|
|
2370
|
+
/** Default Gateway target name for this agent. */
|
|
2371
|
+
public readonly agentName = 'in-memory-agent';
|
|
2372
|
+
/** Inbound auth — a fronting Gateway uses this to pick its outbound credential. */
|
|
2373
|
+
public readonly auth = 'iam';
|
|
2374
|
+
|
|
2375
|
+
constructor(scope: Construct, id: string, props?: InMemoryAgentProps) {
|
|
2376
|
+
super(scope, id);
|
|
2377
|
+
|
|
2378
|
+
const rc = RuntimeConfig.ensure(this);
|
|
2379
|
+
|
|
2380
|
+
// Resolve the bundle output directory containing the Dockerfile and built artifacts
|
|
2381
|
+
const bundleDir = path.join(
|
|
2382
|
+
findWorkspaceRoot(url.fileURLToPath(new URL(import.meta.url))),
|
|
2383
|
+
'dist/apps/test-project/bundle/agent/in-memory-agent',
|
|
2384
|
+
);
|
|
2385
|
+
|
|
2386
|
+
this.dockerImage = AgentRuntimeArtifact.fromAsset(bundleDir, {
|
|
2387
|
+
platform: Platform.LINUX_ARM64,
|
|
2388
|
+
});
|
|
2389
|
+
|
|
2390
|
+
this.agentCoreRuntime = new Runtime(this, 'InMemoryAgent', {
|
|
2391
|
+
runtimeName: Lazy.string({
|
|
2392
|
+
produce: () =>
|
|
2393
|
+
Names.uniqueResourceName(this.agentCoreRuntime, { maxLength: 40 }),
|
|
2394
|
+
}),
|
|
2395
|
+
protocolConfiguration: ProtocolType.HTTP,
|
|
2396
|
+
agentRuntimeArtifact: this.dockerImage,
|
|
2397
|
+
...props,
|
|
2398
|
+
environmentVariables: {
|
|
2399
|
+
RUNTIME_CONFIG_APP_ID: rc.appConfigApplicationId,
|
|
2400
|
+
...props?.environmentVariables,
|
|
2401
|
+
},
|
|
2402
|
+
});
|
|
2403
|
+
|
|
2404
|
+
// Grant access for the agent to invoke bedrock models
|
|
2405
|
+
this.agentCoreRuntime.addToRolePolicy(
|
|
2406
|
+
new PolicyStatement({
|
|
2407
|
+
actions: [
|
|
2408
|
+
'bedrock:InvokeModel',
|
|
2409
|
+
'bedrock:InvokeModelWithResponseStream',
|
|
2410
|
+
],
|
|
2411
|
+
resources: [
|
|
2412
|
+
'arn:aws:bedrock:*:*:foundation-model/*',
|
|
2413
|
+
'arn:aws:bedrock:*:*:inference-profile/*',
|
|
2414
|
+
],
|
|
2415
|
+
}),
|
|
2416
|
+
);
|
|
2417
|
+
|
|
2418
|
+
rc.grantReadAppConfig(this.agentCoreRuntime);
|
|
2419
|
+
|
|
2420
|
+
rc.set('agentcore', 'agentRuntimes', {
|
|
2421
|
+
...rc.get('agentcore').agentRuntimes,
|
|
2422
|
+
InMemoryAgent: {
|
|
2423
|
+
arn: this.agentCoreRuntime.agentRuntimeArn,
|
|
2424
|
+
},
|
|
2425
|
+
});
|
|
2426
|
+
}
|
|
2427
|
+
|
|
2428
|
+
/**
|
|
2429
|
+
* The principal to grant permissions to.
|
|
2430
|
+
*/
|
|
2431
|
+
public get grantPrincipal(): IPrincipal {
|
|
2432
|
+
return this.agentCoreRuntime.grantPrincipal;
|
|
2433
|
+
}
|
|
2434
|
+
|
|
2435
|
+
/**
|
|
2436
|
+
* Network connections for this agent runtime.
|
|
2437
|
+
*/
|
|
2438
|
+
public get connections(): Connections {
|
|
2439
|
+
return this.agentCoreRuntime.connections;
|
|
2440
|
+
}
|
|
2441
|
+
|
|
2442
|
+
/**
|
|
2443
|
+
* The HTTPS invocation URL of the runtime.
|
|
2444
|
+
*/
|
|
2445
|
+
public get invocationUrl(): string {
|
|
2446
|
+
// The URL must URL-encode the runtime ARN (':' -> '%3A', '/' -> '%2F').
|
|
2447
|
+
// The ARN is a CDK token, so encode at deploy time via Fn.join/Fn.split.
|
|
2448
|
+
const encodedArn = Fn.join(
|
|
2449
|
+
'%2F',
|
|
2450
|
+
Fn.split(
|
|
2451
|
+
'/',
|
|
2452
|
+
Fn.join('%3A', Fn.split(':', this.agentCoreRuntime.agentRuntimeArn)),
|
|
2453
|
+
),
|
|
2454
|
+
);
|
|
2455
|
+
return \`https://bedrock-agentcore.\${Stack.of(this).region}.amazonaws.com/runtimes/\${encodedArn}/invocations?qualifier=DEFAULT\`;
|
|
2456
|
+
}
|
|
2457
|
+
|
|
2458
|
+
/**
|
|
2459
|
+
* Grants IAM permissions to invoke this agent runtime.
|
|
2460
|
+
*
|
|
2461
|
+
* @param grantee - The IAM principal to grant permissions to
|
|
2462
|
+
*/
|
|
2463
|
+
public grantInvokeAccess(grantee: IGrantable) {
|
|
2464
|
+
this.agentCoreRuntime.grantInvoke(grantee);
|
|
2465
|
+
|
|
2466
|
+
Grant.addToPrincipal({
|
|
2467
|
+
grantee,
|
|
2468
|
+
actions: ['bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream'],
|
|
2469
|
+
resourceArns: [
|
|
2470
|
+
this.agentCoreRuntime.agentRuntimeArn,
|
|
2471
|
+
\`\${this.agentCoreRuntime.agentRuntimeArn}/*\`,
|
|
2472
|
+
],
|
|
2473
|
+
});
|
|
2474
|
+
}
|
|
2475
|
+
}
|
|
2476
|
+
"
|
|
2477
|
+
`;
|