@aws/nx-plugin 1.0.0-rc.2 → 1.0.0-rc.21
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 +3552 -4179
- package/README.md +8 -8
- package/executors.json +9 -0
- package/generators.json +100 -1
- package/package.json +16 -12
- package/sdk/agentcore-gateway.d.ts +6 -0
- package/sdk/agentcore-gateway.js +11 -0
- package/sdk/agentcore-gateway.js.map +1 -0
- package/sdk/license.d.ts +8 -0
- package/sdk/license.js +14 -0
- package/sdk/license.js.map +1 -0
- package/sdk/py.d.ts +6 -6
- package/sdk/py.js +7 -7
- package/sdk/py.js.map +1 -1
- package/sdk/ts.d.ts +18 -14
- package/sdk/ts.js +38 -32
- package/sdk/ts.js.map +1 -1
- package/src/agentcore-gateway/attach-upstream.d.ts +33 -0
- package/src/agentcore-gateway/attach-upstream.js +41 -0
- package/src/agentcore-gateway/attach-upstream.js.map +1 -0
- package/src/agentcore-gateway/files/cedar/policies/README.md +52 -0
- package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +11 -0
- package/src/agentcore-gateway/files/project/serve-local.ts.template +134 -0
- package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
- package/src/agentcore-gateway/gateway-connection/generator.js +102 -0
- package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/gateway-connection/schema.d.ts +12 -0
- package/src/agentcore-gateway/gateway-connection/schema.json +26 -0
- package/src/agentcore-gateway/generator.d.ts +25 -0
- package/src/agentcore-gateway/generator.js +129 -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 +63 -0
- package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
- package/src/agentcore-gateway/mcp-connection/schema.d.ts +12 -0
- package/src/agentcore-gateway/mcp-connection/schema.json +26 -0
- package/src/agentcore-gateway/schema.d.ts +16 -0
- package/src/agentcore-gateway/schema.json +65 -0
- package/src/connection/agent-runtime-config.d.ts +1 -1
- package/src/connection/agent-runtime-config.js.map +1 -1
- package/src/connection/agent-serve-local.d.ts +2 -2
- package/src/connection/agent-serve-local.js +1 -1
- package/src/connection/agent-serve-local.js.map +1 -1
- package/src/connection/generator.d.ts +5 -5
- package/src/connection/generator.js +93 -37
- package/src/connection/generator.js.map +1 -1
- package/src/connection/serve-local.d.ts +1 -1
- package/src/connection/serve-local.js +1 -1
- package/src/connection/serve-local.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +47 -58
- package/src/infra/app/generator.d.ts +3 -3
- package/src/infra/app/generator.js +19 -17
- package/src/infra/app/generator.js.map +1 -1
- package/src/license/__snapshots__/config.spec.ts.snap +23 -0
- package/src/license/config-types.d.ts +18 -1
- package/src/license/config-types.js +4 -0
- package/src/license/config-types.js.map +1 -1
- package/src/license/config.d.ts +65 -7
- package/src/license/config.js +315 -7
- package/src/license/config.js.map +1 -1
- package/src/license/dependency-check/check.d.ts +16 -0
- package/src/license/dependency-check/check.js +111 -0
- package/src/license/dependency-check/check.js.map +1 -0
- package/src/license/dependency-check/collectors/collector.d.ts +21 -0
- package/src/license/dependency-check/collectors/collector.js +76 -0
- package/src/license/dependency-check/collectors/collector.js.map +1 -0
- package/src/license/dependency-check/collectors/npm-collector.d.ts +10 -0
- package/src/license/dependency-check/collectors/npm-collector.js +75 -0
- package/src/license/dependency-check/collectors/npm-collector.js.map +1 -0
- package/src/license/dependency-check/collectors/python-collector.d.ts +23 -0
- package/src/license/dependency-check/collectors/python-collector.js +121 -0
- package/src/license/dependency-check/collectors/python-collector.js.map +1 -0
- package/src/license/dependency-check/evaluator.d.ts +9 -0
- package/src/license/dependency-check/evaluator.js +122 -0
- package/src/license/dependency-check/evaluator.js.map +1 -0
- package/src/license/dependency-check/executor-schema.json +6 -0
- package/src/license/dependency-check/executor.d.ts +9 -0
- package/src/license/dependency-check/executor.js +43 -0
- package/src/license/dependency-check/executor.js.map +1 -0
- package/src/license/dependency-check/pre-approved.d.ts +6 -0
- package/src/license/dependency-check/pre-approved.js +1280 -0
- package/src/license/dependency-check/pre-approved.js.map +1 -0
- package/src/license/dependency-check/types.d.ts +45 -0
- package/src/license/dependency-check/types.js +7 -0
- package/src/license/dependency-check/types.js.map +1 -0
- package/src/license/generator.d.ts +3 -3
- package/src/license/generator.js +102 -14
- package/src/license/generator.js.map +1 -1
- package/src/license/index.d.ts +8 -0
- package/src/license/index.js +13 -0
- package/src/license/index.js.map +1 -0
- package/src/license/known-exceptions.d.ts +6 -0
- package/src/license/known-exceptions.js +26 -0
- package/src/license/known-exceptions.js.map +1 -0
- package/src/license/schema.d.ts +5 -0
- package/src/license/schema.json +6 -0
- package/src/license/sync/generator.d.ts +2 -2
- package/src/license/sync/generator.js +15 -15
- package/src/license/sync/generator.js.map +1 -1
- package/src/license/sync/project-file-sync.d.ts +3 -3
- package/src/license/sync/project-file-sync.js.map +1 -1
- package/src/mcp-server/generator-info.d.ts +5 -1
- package/src/mcp-server/generator-info.js +7 -7
- package/src/mcp-server/generator-info.js.map +1 -1
- package/src/mcp-server/guide-pipeline.d.ts +1 -1
- package/src/mcp-server/guide-pipeline.js +2 -2
- package/src/mcp-server/guide-pipeline.js.map +1 -1
- package/src/mcp-server/mdx-ast.js +4 -0
- package/src/mcp-server/mdx-ast.js.map +1 -1
- package/src/mcp-server/schema-registry.d.ts +9 -3
- package/src/mcp-server/schema-registry.js +22 -6
- package/src/mcp-server/schema-registry.js.map +1 -1
- package/src/mcp-server/server.js +3 -3
- package/src/mcp-server/server.js.map +1 -1
- package/src/mcp-server/tools/create-workspace-command.d.ts +1 -1
- package/src/mcp-server/tools/create-workspace-command.js +4 -4
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/mcp-server/tools/general-guidance.d.ts +2 -2
- package/src/mcp-server/tools/general-guidance.js +2 -2
- package/src/mcp-server/tools/general-guidance.js.map +1 -1
- package/src/mcp-server/tools/generator-guide.d.ts +2 -2
- package/src/mcp-server/tools/generator-guide.js.map +1 -1
- package/src/mcp-server/tools/list-generators.d.ts +2 -2
- package/src/mcp-server/tools/list-generators.js +1 -1
- package/src/mcp-server/tools/list-generators.js.map +1 -1
- package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +1 -1
- package/src/open-api/ts-client/generator.d.ts +3 -3
- package/src/open-api/ts-client/generator.js +2 -2
- package/src/open-api/ts-client/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.d.ts +3 -3
- package/src/open-api/ts-hooks/generator.js +2 -2
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.spec.tsx +14 -14
- package/src/open-api/ts-metadata/generator.d.ts +3 -3
- package/src/open-api/ts-metadata/generator.js +1 -1
- package/src/open-api/ts-metadata/generator.js.map +1 -1
- package/src/open-api/utils/codegen-data/languages.d.ts +5 -1
- package/src/open-api/utils/codegen-data/languages.js +4 -4
- package/src/open-api/utils/codegen-data/languages.js.map +1 -1
- package/src/open-api/utils/codegen-data.d.ts +6 -2
- package/src/open-api/utils/codegen-data.js +6 -6
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.d.ts +5 -1
- package/src/open-api/utils/normalise.js +5 -5
- package/src/open-api/utils/normalise.js.map +1 -1
- package/src/open-api/utils/parse.d.ts +2 -2
- package/src/open-api/utils/parse.js +4 -0
- package/src/open-api/utils/parse.js.map +1 -1
- package/src/open-api/utils/refs.d.ts +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +131 -13
- package/src/preset/generator.d.ts +4 -4
- package/src/preset/generator.js +21 -14
- package/src/preset/generator.js.map +1 -1
- package/src/preset/schema.d.ts +3 -1
- package/src/preset/schema.json +5 -0
- package/src/py/agent/__snapshots__/generator.spec.ts.snap +659 -21
- package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +201 -0
- package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +30 -0
- package/src/py/agent/a2a-connection/generator.d.ts +3 -3
- package/src/py/agent/a2a-connection/generator.js +11 -10
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/files/common/agent.py.template +2 -0
- package/src/py/agent/files/http/init.py.template +7 -25
- package/src/py/agent/files/http/main.py.template +2 -3
- package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +197 -0
- package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
- package/src/py/agent/gateway-connection/generator.d.ts +10 -0
- package/src/py/agent/gateway-connection/generator.js +106 -0
- package/src/py/agent/gateway-connection/generator.js.map +1 -0
- package/src/py/agent/gateway-connection/schema.d.ts +12 -0
- package/src/py/agent/gateway-connection/schema.json +26 -0
- package/src/py/agent/generator.d.ts +3 -3
- package/src/py/agent/generator.js +47 -38
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +167 -81
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +30 -0
- package/src/py/agent/mcp-connection/generator.d.ts +3 -3
- package/src/py/agent/mcp-connection/generator.js +11 -81
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +8 -17
- package/src/py/agent/react-connection/generator.d.ts +3 -3
- package/src/py/agent/react-connection/generator.js +4 -4
- package/src/py/agent/react-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/serve-local.d.ts +2 -2
- package/src/py/agent/react-connection/serve-local.js.map +1 -1
- package/src/py/api/generator.d.ts +3 -3
- package/src/py/api/generator.js.map +1 -1
- package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1486 -0
- package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/agent-connection/generator.js +39 -0
- package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
- package/src/py/dynamodb/agent-connection/schema.d.ts +14 -0
- package/src/py/dynamodb/agent-connection/schema.json +22 -0
- package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/fast-api-connection/generator.js +37 -0
- package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
- package/src/py/dynamodb/fast-api-connection/schema.d.ts +12 -0
- package/src/py/dynamodb/fast-api-connection/schema.json +18 -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 +10 -0
- package/src/py/dynamodb/generator.js +106 -0
- package/src/py/dynamodb/generator.js.map +1 -0
- package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js +39 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
- package/src/py/dynamodb/mcp-server-connection/schema.d.ts +14 -0
- package/src/py/dynamodb/mcp-server-connection/schema.json +22 -0
- package/src/py/dynamodb/schema.d.ts +15 -0
- package/src/py/dynamodb/schema.json +70 -0
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +167 -39
- 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 +3 -3
- package/src/py/fast-api/generator.js +23 -17
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/py/fast-api/react/generator.d.ts +3 -3
- package/src/py/fast-api/react/generator.js +2 -2
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.d.ts +1 -1
- package/src/py/fast-api/react/open-api.js +5 -2
- package/src/py/fast-api/react/open-api.js.map +1 -1
- package/src/py/lambda-function/generator.d.ts +3 -3
- package/src/py/lambda-function/generator.js +11 -11
- package/src/py/lambda-function/generator.js.map +1 -1
- package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +83 -13
- package/src/py/mcp-server/generator.d.ts +3 -3
- package/src/py/mcp-server/generator.js +33 -26
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/project/generator.d.ts +3 -3
- package/src/py/project/generator.js +96 -70
- package/src/py/project/generator.js.map +1 -1
- package/src/smithy/project/__snapshots__/generator.spec.ts.snap +19 -16
- package/src/smithy/project/files/build.Dockerfile.template +1 -0
- package/src/smithy/project/files/src/operations/echo.smithy.template +1 -0
- package/src/smithy/project/generator.d.ts +3 -3
- package/src/smithy/project/generator.js +30 -28
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/smithy/react-connection/generator.d.ts +3 -3
- package/src/smithy/react-connection/generator.js +3 -3
- package/src/smithy/react-connection/generator.js.map +1 -1
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +14 -34
- package/src/smithy/ts/api/generator.d.ts +3 -3
- package/src/smithy/ts/api/generator.js +18 -12
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/terraform/project/files/application/src/main.tf.template +6 -1
- package/src/terraform/project/generator.d.ts +3 -3
- package/src/terraform/project/generator.js +13 -8
- package/src/terraform/project/generator.js.map +1 -1
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +163 -18
- package/src/trpc/backend/files/src/procedures/echo.ts.template +1 -1
- package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
- package/src/trpc/backend/generator.d.ts +3 -3
- package/src/trpc/backend/generator.js +11 -10
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/backend/schema.d.ts +2 -2
- package/src/trpc/react/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
- package/src/trpc/react/generator.d.ts +3 -3
- package/src/trpc/react/generator.js +5 -5
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +652 -14
- package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +256 -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 +3 -3
- package/src/ts/agent/a2a-connection/generator.js +8 -8
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/files/common/agent.ts.template +6 -2
- package/src/ts/agent/files/http/router.ts.template +1 -1
- package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +220 -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 +10 -0
- package/src/ts/agent/gateway-connection/generator.js +106 -0
- package/src/ts/agent/gateway-connection/generator.js.map +1 -0
- package/src/ts/agent/gateway-connection/schema.d.ts +12 -0
- package/src/ts/agent/gateway-connection/schema.json +26 -0
- package/src/ts/agent/generator.d.ts +3 -3
- package/src/ts/agent/generator.js +44 -32
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +191 -110
- package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +22 -0
- package/src/ts/agent/mcp-connection/generator.d.ts +3 -3
- package/src/ts/agent/mcp-connection/generator.js +9 -21
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/generator.d.ts +3 -3
- package/src/ts/agent/react-connection/generator.js +9 -9
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/serve-local.d.ts +2 -2
- package/src/ts/api/generator.d.ts +3 -3
- package/src/ts/api/generator.js +4 -4
- package/src/ts/api/generator.js.map +1 -1
- package/src/ts/api/schema.d.ts +2 -1
- package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +7 -8
- package/src/ts/astro-docs/generator.d.ts +3 -3
- package/src/ts/astro-docs/generator.js +14 -11
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/docs/generator.d.ts +3 -3
- package/src/ts/docs/generator.js.map +1 -1
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +1352 -0
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/ts/dynamodb/agent-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/agent-connection/generator.js +32 -0
- package/src/ts/dynamodb/agent-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/agent-connection/schema.d.ts +14 -0
- package/src/ts/dynamodb/agent-connection/schema.json +22 -0
- package/src/ts/dynamodb/files/config.json.template +24 -0
- package/src/ts/dynamodb/files/src/client.ts.template +61 -0
- package/src/ts/dynamodb/files/src/entities/example.ts.template +47 -0
- package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -0
- package/src/ts/dynamodb/files/src/index.ts.template +2 -0
- package/src/ts/dynamodb/generator.d.ts +10 -0
- package/src/ts/dynamodb/generator.js +111 -0
- package/src/ts/dynamodb/generator.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js +32 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +14 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.json +22 -0
- package/src/ts/dynamodb/schema.d.ts +15 -0
- package/src/ts/dynamodb/schema.json +70 -0
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/ts/dynamodb/smithy-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/smithy-connection/generator.js +30 -0
- package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/smithy-connection/schema.d.ts +12 -0
- package/src/ts/dynamodb/smithy-connection/schema.json +18 -0
- package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/ts/dynamodb/trpc-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/trpc-connection/generator.js +30 -0
- package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/trpc-connection/schema.d.ts +12 -0
- package/src/ts/dynamodb/trpc-connection/schema.json +18 -0
- package/src/ts/lambda-function/generator.d.ts +3 -3
- package/src/ts/lambda-function/generator.js +8 -8
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lib/__snapshots__/generator.spec.ts.snap +32 -65
- package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +24 -0
- package/src/ts/lib/biome.d.ts +7 -0
- package/src/ts/lib/biome.js +58 -0
- package/src/ts/lib/biome.js.map +1 -0
- package/src/ts/lib/generator.d.ts +3 -3
- package/src/ts/lib/generator.js +27 -29
- 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/ts-project-utils.d.ts +12 -2
- package/src/ts/lib/ts-project-utils.js +30 -10
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/vitest.d.ts +2 -2
- package/src/ts/lib/vitest.js +1 -1
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +82 -12
- package/src/ts/mcp-server/generator.d.ts +3 -3
- package/src/ts/mcp-server/generator.js +34 -12
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +19 -14
- package/src/ts/nx-generator/generator.d.ts +2 -2
- package/src/ts/nx-generator/generator.js +52 -19
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-plugin/generator.d.ts +3 -3
- package/src/ts/nx-plugin/generator.js +10 -9
- package/src/ts/nx-plugin/generator.js.map +1 -1
- package/src/ts/nx-plugin/utils.d.ts +1 -1
- package/src/ts/nx-plugin/utils.js +10 -4
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +252 -388
- package/src/ts/rdb/agent-connection/generator.d.ts +3 -3
- package/src/ts/rdb/agent-connection/generator.js +4 -4
- package/src/ts/rdb/agent-connection/generator.js.map +1 -1
- package/src/ts/rdb/files/config.json.template +14 -0
- package/src/ts/rdb/files/prisma.config.ts.template +5 -4
- package/src/ts/rdb/files/src/index.ts.template +0 -1
- package/src/ts/rdb/files/src/prisma.ts.template +26 -21
- package/src/ts/rdb/generator.d.ts +3 -7
- package/src/ts/rdb/generator.js +52 -41
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/generator.d.ts +3 -3
- package/src/ts/rdb/mcp-server-connection/generator.js +4 -4
- package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/rdb/smithy-connection/generator.d.ts +3 -3
- package/src/ts/rdb/smithy-connection/generator.js +4 -4
- package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
- package/src/ts/rdb/trpc-connection/generator.d.ts +3 -3
- package/src/ts/rdb/trpc-connection/generator.js +3 -3
- package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
- package/src/ts/rdb/utils.d.ts +1 -1
- package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +1 -16
- package/src/ts/react-website/agui/generator.d.ts +1 -1
- package/src/ts/react-website/agui/generator.js +4 -5
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +530 -367
- package/src/ts/react-website/app/generator.d.ts +3 -3
- package/src/ts/react-website/app/generator.js +21 -17
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +1 -7
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +9 -3
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
- package/src/ts/react-website/cognito-auth/generator.d.ts +3 -3
- package/src/ts/react-website/cognito-auth/generator.js +10 -13
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +8 -6
- package/src/ts/react-website/cognito-auth/grit/cognito-auth-wrapper.grit +1 -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/utils.d.ts +1 -1
- package/src/ts/react-website/cognito-auth/utils.js +1 -1
- package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
- package/src/ts/react-website/runtime-config/generator.d.ts +3 -3
- package/src/ts/react-website/runtime-config/generator.js +4 -4
- package/src/ts/react-website/runtime-config/generator.js.map +1 -1
- package/src/ts/sync/generator.d.ts +3 -3
- package/src/ts/sync/generator.js +2 -2
- package/src/ts/sync/generator.js.map +1 -1
- package/src/ts/website/app/generator.d.ts +3 -3
- package/src/ts/website/app/generator.js +1 -1
- package/src/ts/website/app/generator.js.map +1 -1
- package/src/ts/website/auth/generator.d.ts +3 -3
- package/src/ts/website/auth/generator.js +1 -1
- package/src/ts/website/auth/generator.js.map +1 -1
- package/src/utils/agent-chat/agent-chat.d.ts +31 -0
- package/src/utils/agent-chat/agent-chat.js +30 -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 +67 -24
- package/src/utils/agent-connection/agent-connection.js +236 -44
- 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 +22 -32
- 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 +36 -0
- 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-mcp/agentcore_mcp_transport.py.template +34 -0
- package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +5 -18
- 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 +66 -0
- package/src/utils/agent-connection/files/py-core-strands/base/model_errors_strands.py.template +40 -0
- package/src/utils/agent-connection/files/py-core-strands/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 +11 -3
- package/src/utils/agent-core-constructs/agent-core-constructs.js +57 -12
- 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 +4 -0
- package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +40 -0
- package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +375 -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/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +335 -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/core/agent-core/runtime.tf.template +77 -9
- 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 +2 -2
- package/src/utils/api-constructs/api-constructs.js +1 -1
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +3 -0
- package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +9 -0
- package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +23 -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/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +3 -0
- package/src/utils/api-constructs/open-api-metadata.d.ts +2 -2
- package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
- package/src/utils/ast/website.d.ts +5 -1
- package/src/utils/ast/website.js +3 -3
- package/src/utils/ast/website.js.map +1 -1
- package/src/utils/ast.d.ts +33 -1
- package/src/utils/ast.js +89 -4
- package/src/utils/ast.js.map +1 -1
- package/src/utils/bundle/bundle.d.ts +1 -1
- package/src/utils/bundle/bundle.js +2 -2
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/config/index.d.ts +5 -5
- package/src/utils/config/utils.d.ts +13 -3
- package/src/utils/config/utils.js +37 -5
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +1 -1
- package/src/utils/connection/open-api/react.d.ts +1 -1
- package/src/utils/connection/open-api/react.js +4 -4
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/containers.d.ts +1 -1
- package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +18 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js +49 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -0
- package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +43 -0
- package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +105 -0
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +62 -0
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +155 -0
- package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +195 -0
- 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 +91 -0
- package/src/utils/files/common/scripts/src/rdb/pull-image.ts.template +16 -0
- package/src/utils/files/common/scripts/src/rdb/start-container.ts.template +102 -0
- package/src/utils/files/common/scripts/src/rdb/wait-for-db.ts.template +59 -0
- package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +9 -3
- package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +7 -2
- package/src/utils/format.d.ts +45 -2
- package/src/utils/format.js +167 -46
- package/src/utils/format.js.map +1 -1
- package/src/utils/fs.d.ts +1 -1
- package/src/utils/fs.js.map +1 -1
- package/src/utils/function-constructs/function-constructs.d.ts +2 -2
- package/src/utils/function-constructs/function-constructs.js +1 -1
- package/src/utils/function-constructs/function-constructs.js.map +1 -1
- package/src/utils/generators.d.ts +4 -0
- package/src/utils/generators.js +4 -4
- package/src/utils/generators.js.map +1 -1
- package/src/utils/git.d.ts +1 -1
- package/src/utils/git.js.map +1 -1
- package/src/utils/iac.d.ts +1 -1
- package/src/utils/iac.js.map +1 -1
- package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +1 -5
- package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +9 -3
- package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +2 -4
- package/src/utils/identity-constructs/identity-constructs.d.ts +2 -2
- package/src/utils/identity-constructs/identity-constructs.js +1 -1
- package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
- package/src/utils/js.d.ts +4 -0
- package/src/utils/js.js +4 -4
- package/src/utils/js.js.map +1 -1
- package/src/utils/mcp.d.ts +25 -0
- package/src/utils/mcp.js +81 -0
- package/src/utils/mcp.js.map +1 -0
- package/src/utils/metrics.d.ts +9 -3
- package/src/utils/metrics.js +58 -28
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/npm-scope.d.ts +1 -1
- package/src/utils/npm-scope.js.map +1 -1
- package/src/utils/nx.d.ts +7 -2
- package/src/utils/nx.js +46 -14
- package/src/utils/nx.js.map +1 -1
- package/src/utils/nxlv-python.d.ts +1 -1
- package/src/utils/paths.d.ts +1 -1
- package/src/utils/pnpm-workspace.d.ts +1 -1
- package/src/utils/pnpm-workspace.js.map +1 -1
- package/src/utils/port.d.ts +31 -3
- package/src/utils/port.js +74 -4
- package/src/utils/port.js.map +1 -1
- package/src/utils/py.d.ts +2 -2
- package/src/utils/py.js +13 -6
- package/src/utils/py.js.map +1 -1
- package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +12 -2
- package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +30 -1
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +38 -16
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +28 -13
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +5 -4
- package/src/utils/rdb-constructs/rdb-constructs.js +3 -11
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/shared-constructs-constants.d.ts +1 -0
- package/src/utils/shared-constructs-constants.js +2 -1
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +2 -2
- package/src/utils/shared-constructs.js +7 -7
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.d.ts +11 -0
- package/src/utils/shared-dynamodb-scripts.js +23 -0
- package/src/utils/shared-dynamodb-scripts.js.map +1 -0
- package/src/utils/shared-infra-config.d.ts +1 -1
- package/src/utils/shared-infra-config.js +1 -1
- package/src/utils/shared-infra-config.js.map +1 -1
- package/src/utils/shared-infra-scripts.d.ts +11 -0
- package/src/utils/shared-infra-scripts.js +35 -0
- package/src/utils/shared-infra-scripts.js.map +1 -0
- package/src/utils/shared-rdb-scripts.d.ts +11 -0
- package/src/utils/shared-rdb-scripts.js +20 -0
- package/src/utils/shared-rdb-scripts.js.map +1 -0
- package/src/utils/shared-scripts.d.ts +2 -5
- package/src/utils/shared-scripts.js +2 -23
- package/src/utils/shared-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.d.ts +1 -1
- package/src/utils/shared-shadcn.js +1 -13
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/test.d.ts +5 -1
- package/src/utils/test.js +9 -5
- package/src/utils/test.js.map +1 -1
- package/src/utils/toml.d.ts +1 -1
- package/src/utils/toml.js +4 -0
- package/src/utils/toml.js.map +1 -1
- package/src/utils/versions.d.ts +82 -83
- package/src/utils/versions.js +81 -82
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +72 -5
- package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +63 -15
- package/src/utils/website-constructs/website-constructs.d.ts +2 -2
- package/src/utils/website-constructs/website-constructs.js +1 -1
- package/src/utils/website-constructs/website-constructs.js.map +1 -1
- package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
- 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/scripts/http/chat.ts.template +0 -35
- package/src/ts/lib/eslint.d.ts +0 -14
- package/src/ts/lib/eslint.js +0 -90
- package/src/ts/lib/eslint.js.map +0 -1
- package/src/ts/lib/grit/eslint-dependency-checks-warn.grit +0 -1
- package/src/ts/rdb/files/scripts/docker-pull.ts.template +0 -15
- package/src/ts/rdb/files/scripts/docker-start.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/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +0 -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} +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/{infra-deploy.ts.template → infra/infra-deploy.ts.template} +0 -0
- /package/src/utils/files/common/scripts/src/{infra-destroy.ts.template → infra/infra-destroy.ts.template} +0 -0
- /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/cdk-command.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}/run.ts.template +0 -0
- /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
2
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
3
|
+
import {
|
|
4
|
+
mcpUrlFromArn,
|
|
5
|
+
regionFromArn,
|
|
6
|
+
} from './agentcore-endpoints.js';
|
|
7
|
+
import {
|
|
8
|
+
sigV4Transport,
|
|
9
|
+
jwtTransport,
|
|
10
|
+
noAuthTransport,
|
|
11
|
+
} from './agentcore-transport.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Options for an MCP transport with IAM authentication.
|
|
15
|
+
*/
|
|
16
|
+
export interface AgentCoreMcpTransportIamOptions {
|
|
17
|
+
/** The ARN of the Bedrock AgentCore Runtime to connect to. */
|
|
18
|
+
agentRuntimeArn: string;
|
|
19
|
+
/** AWS credential provider; defaults to the standard provider chain. */
|
|
20
|
+
credentialProvider?: ReturnType<typeof fromNodeProviderChain>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Options for an MCP transport with JWT authentication.
|
|
25
|
+
*/
|
|
26
|
+
export interface AgentCoreMcpTransportJwtOptions {
|
|
27
|
+
/** The ARN of the Bedrock AgentCore Runtime to connect to. */
|
|
28
|
+
agentRuntimeArn: string;
|
|
29
|
+
/** A function which returns the JWT access token used to authenticate. */
|
|
30
|
+
accessTokenProvider: () => Promise<string>;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Options for an MCP transport with no auth (local dev).
|
|
35
|
+
*/
|
|
36
|
+
export interface AgentCoreMcpTransportNoAuthOptions {
|
|
37
|
+
/** Full URL of the local MCP endpoint. */
|
|
38
|
+
url: string;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Factory for MCP transports that connect to a Bedrock AgentCore runtime. */
|
|
42
|
+
export class AgentCoreMcpTransport {
|
|
43
|
+
/** SigV4-authenticated transport for a Bedrock AgentCore runtime. */
|
|
44
|
+
static withIamAuth(
|
|
45
|
+
options: AgentCoreMcpTransportIamOptions,
|
|
46
|
+
): StreamableHTTPClientTransport {
|
|
47
|
+
return sigV4Transport({
|
|
48
|
+
region: regionFromArn(options.agentRuntimeArn),
|
|
49
|
+
url: mcpUrlFromArn(options.agentRuntimeArn),
|
|
50
|
+
credentialProvider: options.credentialProvider,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Bearer-authenticated transport for a Bedrock AgentCore runtime. */
|
|
55
|
+
static withJwtAuth(
|
|
56
|
+
options: AgentCoreMcpTransportJwtOptions,
|
|
57
|
+
): StreamableHTTPClientTransport {
|
|
58
|
+
return jwtTransport({
|
|
59
|
+
url: mcpUrlFromArn(options.agentRuntimeArn),
|
|
60
|
+
accessTokenProvider: options.accessTokenProvider,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** For local dev — plain HTTP, no auth. */
|
|
65
|
+
static withoutAuth(
|
|
66
|
+
options: AgentCoreMcpTransportNoAuthOptions,
|
|
67
|
+
): StreamableHTTPClientTransport {
|
|
68
|
+
return noAuthTransport({ url: options.url });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1,40 +1,30 @@
|
|
|
1
1
|
import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* CDK/Terraform construct for this project.
|
|
4
|
+
* Shape of this project's runtime configuration in AppConfig. Keys are the
|
|
5
|
+
* class names of connected target constructs (e.g. `MyAgent`, `MyGateway`).
|
|
7
6
|
*/
|
|
8
|
-
|
|
7
|
+
export interface AgentCoreRuntimeConfig {
|
|
9
8
|
agentRuntimes?: Record<string, string>;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (!application) {
|
|
13
|
-
throw new Error(
|
|
14
|
-
'RUNTIME_CONFIG_APP_ID is not set — cannot resolve connected agent ARNs from AppConfig.',
|
|
15
|
-
);
|
|
16
|
-
}
|
|
17
|
-
return (await getAppConfig('agentcore', {
|
|
18
|
-
application,
|
|
19
|
-
environment: 'default',
|
|
20
|
-
transform: 'json',
|
|
21
|
-
})) as { agentRuntimes?: Record<string, string> };
|
|
22
|
-
};
|
|
9
|
+
gateways?: Record<string, string>;
|
|
10
|
+
}
|
|
23
11
|
|
|
24
12
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
13
|
+
* Read the runtime-config `agentcore` namespace from AppConfig.
|
|
14
|
+
* `RUNTIME_CONFIG_APP_ID` is set on the AgentCore runtime by the generated
|
|
15
|
+
* CDK/Terraform construct for this project.
|
|
28
16
|
*/
|
|
29
|
-
export const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
17
|
+
export const getAgentCoreRuntimeConfig =
|
|
18
|
+
async (): Promise<AgentCoreRuntimeConfig> => {
|
|
19
|
+
const application = process.env.RUNTIME_CONFIG_APP_ID;
|
|
20
|
+
if (!application) {
|
|
21
|
+
throw new Error(
|
|
22
|
+
'RUNTIME_CONFIG_APP_ID is not set — cannot resolve connected agent ARNs from AppConfig.',
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
return (await getAppConfig('agentcore', {
|
|
26
|
+
application,
|
|
27
|
+
environment: 'default',
|
|
28
|
+
transform: 'json',
|
|
29
|
+
})) as AgentCoreRuntimeConfig;
|
|
30
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
2
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
3
|
+
import {
|
|
4
|
+
createSigV4Fetch,
|
|
5
|
+
createJwtFetch,
|
|
6
|
+
createPlainFetch,
|
|
7
|
+
} from './agentcore-fetch.js';
|
|
8
|
+
|
|
9
|
+
const build = (
|
|
10
|
+
url: string,
|
|
11
|
+
fetchFn: typeof fetch,
|
|
12
|
+
): StreamableHTTPClientTransport =>
|
|
13
|
+
new StreamableHTTPClientTransport(new URL(url), { fetch: fetchFn });
|
|
14
|
+
|
|
15
|
+
/** SigV4-signed transport for a resolved AgentCore endpoint. */
|
|
16
|
+
export const sigV4Transport = (options: {
|
|
17
|
+
region: string;
|
|
18
|
+
url: string;
|
|
19
|
+
credentialProvider?: ReturnType<typeof fromNodeProviderChain>;
|
|
20
|
+
}): StreamableHTTPClientTransport =>
|
|
21
|
+
build(
|
|
22
|
+
options.url,
|
|
23
|
+
createSigV4Fetch({
|
|
24
|
+
region: options.region,
|
|
25
|
+
credentialProvider: options.credentialProvider,
|
|
26
|
+
}),
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
/** Bearer-token transport for a resolved AgentCore endpoint. */
|
|
30
|
+
export const jwtTransport = (options: {
|
|
31
|
+
url: string;
|
|
32
|
+
accessTokenProvider: () => Promise<string>;
|
|
33
|
+
}): StreamableHTTPClientTransport =>
|
|
34
|
+
build(options.url, createJwtFetch(options.accessTokenProvider));
|
|
35
|
+
|
|
36
|
+
/** Plain-HTTP transport — for local dev. */
|
|
37
|
+
export const noAuthTransport = (options: {
|
|
38
|
+
url: string;
|
|
39
|
+
}): StreamableHTTPClientTransport => build(options.url, createPlainFetch());
|
package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { A2AAgent } from '@strands-agents/sdk/a2a';
|
|
2
|
+
import {
|
|
3
|
+
type A2aClientConfig,
|
|
4
|
+
AgentCoreA2aClientConfig,
|
|
5
|
+
type AgentCoreA2aClientConfigIamOptions,
|
|
6
|
+
type AgentCoreA2aClientConfigJwtOptions,
|
|
7
|
+
type AgentCoreA2aClientConfigNoAuthOptions,
|
|
8
|
+
} from './agentcore-a2a-client-config.js';
|
|
9
|
+
|
|
10
|
+
/** Optional friendly metadata for the remote agent. */
|
|
11
|
+
export interface StrandsA2aOptions {
|
|
12
|
+
/** Optional friendly name for the remote agent. */
|
|
13
|
+
name?: string;
|
|
14
|
+
/** Optional description for the remote agent. */
|
|
15
|
+
description?: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Strands A2A clients for a Bedrock AgentCore runtime. */
|
|
19
|
+
export class AgentCoreA2aClientStrands {
|
|
20
|
+
private static build(
|
|
21
|
+
{ url, clientFactory }: A2aClientConfig,
|
|
22
|
+
options: StrandsA2aOptions,
|
|
23
|
+
): A2AAgent {
|
|
24
|
+
return new A2AAgent({
|
|
25
|
+
url,
|
|
26
|
+
clientFactory,
|
|
27
|
+
...(options.name ? { name: options.name } : {}),
|
|
28
|
+
...(options.description ? { description: options.description } : {}),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** SigV4-authenticated client for a Bedrock AgentCore runtime. */
|
|
33
|
+
static withIamAuth(
|
|
34
|
+
options: AgentCoreA2aClientConfigIamOptions & StrandsA2aOptions,
|
|
35
|
+
): A2AAgent {
|
|
36
|
+
return AgentCoreA2aClientStrands.build(
|
|
37
|
+
AgentCoreA2aClientConfig.withIamAuth(options),
|
|
38
|
+
options,
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Bearer-authenticated client for a Bedrock AgentCore runtime. */
|
|
43
|
+
static withJwtAuth(
|
|
44
|
+
options: AgentCoreA2aClientConfigJwtOptions & StrandsA2aOptions,
|
|
45
|
+
): A2AAgent {
|
|
46
|
+
return AgentCoreA2aClientStrands.build(
|
|
47
|
+
AgentCoreA2aClientConfig.withJwtAuth(options),
|
|
48
|
+
options,
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** For local dev — plain HTTP, no auth. */
|
|
53
|
+
static withoutAuth(
|
|
54
|
+
options: AgentCoreA2aClientConfigNoAuthOptions & StrandsA2aOptions,
|
|
55
|
+
): A2AAgent {
|
|
56
|
+
return AgentCoreA2aClientStrands.build(
|
|
57
|
+
AgentCoreA2aClientConfig.withoutAuth(options),
|
|
58
|
+
options,
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AfterModelCallEvent, type LocalAgent } from '@strands-agents/sdk';
|
|
2
|
+
|
|
3
|
+
const NO_CREDENTIALS =
|
|
4
|
+
'Unable to invoke the model: no AWS credentials found. Configure credentials ' +
|
|
5
|
+
'(e.g. run `aws configure`, set AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / ' +
|
|
6
|
+
'AWS_SESSION_TOKEN, or assume a role) before running the agent.';
|
|
7
|
+
const ACCESS_DENIED =
|
|
8
|
+
'Unable to invoke the model: access denied. Grant your AWS principal permission ' +
|
|
9
|
+
'to call bedrock:InvokeModelWithResponseStream for your model.';
|
|
10
|
+
|
|
11
|
+
// AWS SDK v3 errors are identified by their `name` rather than `instanceof`,
|
|
12
|
+
// since the SDK may be loaded from more than one place. Strands wraps them in a
|
|
13
|
+
// ModelError, so we check the error and its `cause` chain.
|
|
14
|
+
const hasErrorNamed = (error: unknown, name: string): boolean => {
|
|
15
|
+
let current: unknown = error;
|
|
16
|
+
while (current instanceof Error) {
|
|
17
|
+
if (current.name === name) return true;
|
|
18
|
+
current = current.cause;
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/** Logs model invocation errors, calling out missing credentials or denied permissions. */
|
|
24
|
+
export const logModelErrors = (agent: LocalAgent): void => {
|
|
25
|
+
agent.addHook(AfterModelCallEvent, (event) => {
|
|
26
|
+
const error = event.error;
|
|
27
|
+
if (!error) return;
|
|
28
|
+
if (hasErrorNamed(error, 'CredentialsProviderError')) {
|
|
29
|
+
console.error(NO_CREDENTIALS);
|
|
30
|
+
} else if (hasErrorNamed(error, 'AccessDeniedException')) {
|
|
31
|
+
console.error(ACCESS_DENIED);
|
|
32
|
+
} else {
|
|
33
|
+
console.error(`Model invocation failed: ${error.message}`);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { McpClient } from '@strands-agents/sdk';
|
|
2
|
+
import {
|
|
3
|
+
AgentCoreGatewayMcpTransport,
|
|
4
|
+
type AgentCoreGatewayMcpTransportIamOptions,
|
|
5
|
+
} from './agentcore-gateway-mcp-transport.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Strands MCP clients that connect to an AgentCore Gateway.
|
|
9
|
+
*/
|
|
10
|
+
export class AgentCoreGatewayMcpClientStrands {
|
|
11
|
+
/** Create a gateway MCP client authenticated with IAM SigV4. */
|
|
12
|
+
static withIamAuth(
|
|
13
|
+
options: AgentCoreGatewayMcpTransportIamOptions,
|
|
14
|
+
): McpClient {
|
|
15
|
+
return new McpClient({
|
|
16
|
+
transport: AgentCoreGatewayMcpTransport.withIamAuth(options),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Plain-HTTP gateway client, for the local gateway started by serve-local. */
|
|
21
|
+
static withoutAuth(options: { gatewayUrl: string }): McpClient {
|
|
22
|
+
return new McpClient({
|
|
23
|
+
transport: AgentCoreGatewayMcpTransport.withoutAuth(options),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { McpClient } from '@strands-agents/sdk';
|
|
2
|
+
import {
|
|
3
|
+
AgentCoreMcpTransport,
|
|
4
|
+
type AgentCoreMcpTransportIamOptions,
|
|
5
|
+
type AgentCoreMcpTransportJwtOptions,
|
|
6
|
+
type AgentCoreMcpTransportNoAuthOptions,
|
|
7
|
+
} from './agentcore-mcp-transport.js';
|
|
8
|
+
|
|
9
|
+
/** Strands MCP clients for a Bedrock AgentCore runtime. */
|
|
10
|
+
export class AgentCoreMcpClientStrands {
|
|
11
|
+
/** SigV4-authenticated client for a Bedrock AgentCore runtime. */
|
|
12
|
+
static withIamAuth(options: AgentCoreMcpTransportIamOptions): McpClient {
|
|
13
|
+
return new McpClient({ transport: AgentCoreMcpTransport.withIamAuth(options) });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Bearer-authenticated client for a Bedrock AgentCore runtime. */
|
|
17
|
+
static withJwtAuth(options: AgentCoreMcpTransportJwtOptions): McpClient {
|
|
18
|
+
return new McpClient({ transport: AgentCoreMcpTransport.withJwtAuth(options) });
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** For local dev — plain HTTP, no auth. */
|
|
22
|
+
static withoutAuth(options: AgentCoreMcpTransportNoAuthOptions): McpClient {
|
|
23
|
+
return new McpClient({
|
|
24
|
+
transport: AgentCoreMcpTransport.withoutAuth(options),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
|
|
3
|
+
import boto3
|
|
4
|
+
import httpx
|
|
5
|
+
from a2a.client import ClientConfig
|
|
6
|
+
|
|
7
|
+
from .agentcore_endpoints import a2a_url_from_arn, region_from_arn
|
|
8
|
+
from .auth.session import jwt_auth, plain_auth, sigv4_auth
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _config(url: str, auth: httpx.Auth) -> tuple[str, ClientConfig]:
|
|
12
|
+
httpx_client = httpx.AsyncClient(auth=auth, timeout=120)
|
|
13
|
+
return url, ClientConfig(httpx_client=httpx_client, streaming=False)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class AgentCoreA2aClientConfig:
|
|
17
|
+
"""Factory for A2A client configs that connect to a Bedrock AgentCore
|
|
18
|
+
runtime. Each forwards the current async-context session via the AgentCore
|
|
19
|
+
session header. Framework-agnostic — wrap the result in a framework's
|
|
20
|
+
A2A client."""
|
|
21
|
+
|
|
22
|
+
@staticmethod
|
|
23
|
+
def with_iam_auth(agent_runtime_arn: str) -> tuple[str, ClientConfig]:
|
|
24
|
+
"""SigV4-authenticated A2A client config for a Bedrock AgentCore runtime."""
|
|
25
|
+
region = region_from_arn(agent_runtime_arn)
|
|
26
|
+
credentials = boto3.Session(region_name=region).get_credentials()
|
|
27
|
+
return _config(
|
|
28
|
+
a2a_url_from_arn(agent_runtime_arn), sigv4_auth(credentials, region)
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
@staticmethod
|
|
32
|
+
def with_jwt_auth(
|
|
33
|
+
agent_runtime_arn: str, access_token_provider: Callable[[], str]
|
|
34
|
+
) -> tuple[str, ClientConfig]:
|
|
35
|
+
"""Bearer-authenticated A2A client config for a Bedrock AgentCore runtime."""
|
|
36
|
+
return _config(
|
|
37
|
+
a2a_url_from_arn(agent_runtime_arn), jwt_auth(access_token_provider)
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
@staticmethod
|
|
41
|
+
def without_auth(url: str) -> tuple[str, ClientConfig]:
|
|
42
|
+
"""Plain-HTTP A2A client config — for local dev."""
|
|
43
|
+
return _config(url, plain_auth())
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""Resolve Bedrock AgentCore invocation endpoints from a runtime ARN.
|
|
2
|
+
|
|
3
|
+
Framework-agnostic — reusable by any framework's connection client.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import re
|
|
7
|
+
from urllib.parse import quote
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def region_from_arn(agent_runtime_arn: str) -> str:
|
|
11
|
+
"""Extract the AWS region from a Bedrock AgentCore runtime ARN.
|
|
12
|
+
|
|
13
|
+
ARN format: arn:partition:service:region:account-id:resource
|
|
14
|
+
"""
|
|
15
|
+
return agent_runtime_arn.split(":")[3]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def mcp_url_from_arn(agent_runtime_arn: str) -> str:
|
|
19
|
+
"""The MCP invocation URL for a runtime ARN."""
|
|
20
|
+
region = region_from_arn(agent_runtime_arn)
|
|
21
|
+
encoded_arn = quote(agent_runtime_arn, safe="")
|
|
22
|
+
return (
|
|
23
|
+
f"https://bedrock-agentcore.{region}.amazonaws.com/runtimes/"
|
|
24
|
+
f"{encoded_arn}/invocations?qualifier=DEFAULT"
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def a2a_url_from_arn(agent_runtime_arn: str) -> str:
|
|
29
|
+
"""The A2A invocation URL for a runtime ARN. A2A on AgentCore is mounted at
|
|
30
|
+
the `/invocations/` root (trailing slash matters)."""
|
|
31
|
+
region = region_from_arn(agent_runtime_arn)
|
|
32
|
+
encoded_arn = quote(agent_runtime_arn, safe="")
|
|
33
|
+
return (
|
|
34
|
+
f"https://bedrock-agentcore.{region}.amazonaws.com/runtimes/"
|
|
35
|
+
f"{encoded_arn}/invocations/"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def region_from_gateway_url(gateway_url: str) -> str:
|
|
40
|
+
"""Extract the AWS region from an AgentCore Gateway MCP URL."""
|
|
41
|
+
match = re.search(r"\.bedrock-agentcore\.([^.]+)\.amazonaws\.com", gateway_url)
|
|
42
|
+
if not match:
|
|
43
|
+
raise ValueError(
|
|
44
|
+
f"Cannot determine region from gateway URL '{gateway_url}'. "
|
|
45
|
+
"Pass region explicitly."
|
|
46
|
+
)
|
|
47
|
+
return match.group(1)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
|
|
3
|
+
import httpx
|
|
4
|
+
|
|
5
|
+
from ..session_context import get_current_session_id
|
|
6
|
+
from .sigv4 import SigV4HTTPXAuth
|
|
7
|
+
|
|
8
|
+
SESSION_HEADER = "X-Amzn-Bedrock-AgentCore-Runtime-Session-Id"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SessionHeaderAuth(httpx.Auth):
|
|
12
|
+
"""Stamps the AgentCore session header from the current async context,
|
|
13
|
+
then delegates to an optional inner auth (e.g. SigV4)."""
|
|
14
|
+
|
|
15
|
+
requires_request_body = True
|
|
16
|
+
requires_response_body = True
|
|
17
|
+
|
|
18
|
+
def __init__(self, inner: httpx.Auth | None = None):
|
|
19
|
+
self._inner = inner
|
|
20
|
+
|
|
21
|
+
def auth_flow(self, request: httpx.Request): # type: ignore[override]
|
|
22
|
+
sid = get_current_session_id()
|
|
23
|
+
if sid:
|
|
24
|
+
request.headers[SESSION_HEADER] = sid
|
|
25
|
+
if self._inner is None:
|
|
26
|
+
yield request
|
|
27
|
+
return
|
|
28
|
+
yield from self._inner.auth_flow(request)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def sigv4_auth(
|
|
32
|
+
credentials, region: str, service: str = "bedrock-agentcore"
|
|
33
|
+
) -> httpx.Auth:
|
|
34
|
+
"""Session-forwarding SigV4 auth (per-request, body-aware)."""
|
|
35
|
+
return SessionHeaderAuth(SigV4HTTPXAuth(credentials, service, region))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def jwt_auth(access_token_provider: Callable[[], str]) -> httpx.Auth:
|
|
39
|
+
"""Session-forwarding bearer-token auth."""
|
|
40
|
+
|
|
41
|
+
class _Bearer(httpx.Auth):
|
|
42
|
+
def auth_flow(self, request: httpx.Request):
|
|
43
|
+
request.headers["Authorization"] = f"Bearer {access_token_provider()}"
|
|
44
|
+
yield request
|
|
45
|
+
|
|
46
|
+
return SessionHeaderAuth(_Bearer())
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def plain_auth() -> httpx.Auth:
|
|
50
|
+
"""Session-forwarding plain auth — for local dev."""
|
|
51
|
+
return SessionHeaderAuth()
|
package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from .agentcore_endpoints import region_from_gateway_url
|
|
2
|
+
from .agentcore_transport import (
|
|
3
|
+
TransportFactory,
|
|
4
|
+
no_auth_transport,
|
|
5
|
+
sigv4_transport,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class AgentCoreGatewayMCPTransport:
|
|
10
|
+
"""Factory for MCP transport factories that connect to an AgentCore Gateway.
|
|
11
|
+
Forwards the current async-context session via the AgentCore session header,
|
|
12
|
+
which the gateway propagates to downstream MCP server targets.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
@staticmethod
|
|
16
|
+
def with_iam_auth(
|
|
17
|
+
gateway_url: str,
|
|
18
|
+
region: str | None = None,
|
|
19
|
+
) -> TransportFactory:
|
|
20
|
+
"""Create a gateway MCP transport authenticated with IAM SigV4."""
|
|
21
|
+
return sigv4_transport(
|
|
22
|
+
gateway_url, region or region_from_gateway_url(gateway_url)
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
@staticmethod
|
|
26
|
+
def without_auth(gateway_url: str) -> TransportFactory:
|
|
27
|
+
"""Plain-HTTP gateway transport, for the local gateway started by serve-local."""
|
|
28
|
+
return no_auth_transport(gateway_url)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
|
|
3
|
+
from .agentcore_endpoints import mcp_url_from_arn, region_from_arn
|
|
4
|
+
from .agentcore_transport import (
|
|
5
|
+
TransportFactory,
|
|
6
|
+
jwt_transport,
|
|
7
|
+
no_auth_transport,
|
|
8
|
+
sigv4_transport,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class AgentCoreMCPTransport:
|
|
13
|
+
"""Factory for MCP transport factories that connect to an AgentCore runtime."""
|
|
14
|
+
|
|
15
|
+
@staticmethod
|
|
16
|
+
def with_iam_auth(agent_runtime_arn: str) -> TransportFactory:
|
|
17
|
+
"""SigV4-authenticated transport for a Bedrock AgentCore runtime."""
|
|
18
|
+
return sigv4_transport(
|
|
19
|
+
mcp_url_from_arn(agent_runtime_arn), region_from_arn(agent_runtime_arn)
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
@staticmethod
|
|
23
|
+
def with_jwt_auth(
|
|
24
|
+
agent_runtime_arn: str, access_token_provider: Callable[[], str]
|
|
25
|
+
) -> TransportFactory:
|
|
26
|
+
"""Bearer-authenticated transport for a Bedrock AgentCore runtime."""
|
|
27
|
+
return jwt_transport(
|
|
28
|
+
mcp_url_from_arn(agent_runtime_arn), access_token_provider
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
@staticmethod
|
|
32
|
+
def without_auth(url: str) -> TransportFactory:
|
|
33
|
+
"""Plain-HTTP transport — for local dev."""
|
|
34
|
+
return no_auth_transport(url)
|
|
@@ -5,9 +5,13 @@ from aws_lambda_powertools.utilities import parameters
|
|
|
5
5
|
from botocore.config import Config
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
def
|
|
8
|
+
def get_agentcore_runtime_config() -> dict[str, Any]:
|
|
9
9
|
"""Read the runtime-config ``agentcore`` namespace from AppConfig.
|
|
10
10
|
|
|
11
|
+
Returns a dict of the shape ``{"agentRuntimes": {name: arn, ...},
|
|
12
|
+
"gateways": {name: url, ...}}``, where keys are the class names of
|
|
13
|
+
connected target constructs.
|
|
14
|
+
|
|
11
15
|
``RUNTIME_CONFIG_APP_ID`` is set on the AgentCore runtime by the generated
|
|
12
16
|
CDK/Terraform construct for this project.
|
|
13
17
|
"""
|
|
@@ -23,20 +27,3 @@ def _get_agentcore_runtime_config() -> dict[str, Any]:
|
|
|
23
27
|
config=Config(region_name=region) if region else None,
|
|
24
28
|
)
|
|
25
29
|
return cast(dict[str, Any], provider.get("agentcore", transform="json"))
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def get_connected_agent_runtime_arn(name: str) -> str:
|
|
29
|
-
"""Resolve the AgentCore runtime ARN for a connected agent or MCP server
|
|
30
|
-
from this project's runtime configuration.
|
|
31
|
-
|
|
32
|
-
``name`` must match the class name of the target construct
|
|
33
|
-
(e.g. ``MyAgent``, ``InventoryMcpServer``).
|
|
34
|
-
"""
|
|
35
|
-
config = _get_agentcore_runtime_config()
|
|
36
|
-
agent_runtimes = config.get("agentRuntimes", {}) if config else {}
|
|
37
|
-
arn = agent_runtimes.get(name)
|
|
38
|
-
if not arn:
|
|
39
|
-
raise RuntimeError(
|
|
40
|
-
f"No connected agent runtime named '{name}' found in runtime configuration."
|
|
41
|
-
)
|
|
42
|
-
return arn
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
import boto3
|
|
5
|
+
|
|
6
|
+
from mcp.client.streamable_http import streamablehttp_client
|
|
7
|
+
|
|
8
|
+
from .auth.session import jwt_auth, plain_auth, sigv4_auth
|
|
9
|
+
|
|
10
|
+
# Agent frameworks wrap a transport *factory* — a no-arg callable returning a
|
|
11
|
+
# streamable-HTTP transport context manager. Typed as ``Any`` so this layer
|
|
12
|
+
# stays free of any framework-specific transport type.
|
|
13
|
+
TransportFactory = Callable[[], Any]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _factory(url: str, auth) -> TransportFactory:
|
|
17
|
+
return lambda: streamablehttp_client(
|
|
18
|
+
url,
|
|
19
|
+
auth=auth,
|
|
20
|
+
timeout=120,
|
|
21
|
+
terminate_on_close=False,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def sigv4_transport(url: str, region: str) -> TransportFactory:
|
|
26
|
+
"""SigV4-signed transport factory for a resolved AgentCore endpoint."""
|
|
27
|
+
credentials = boto3.Session(region_name=region).get_credentials()
|
|
28
|
+
return _factory(url, sigv4_auth(credentials, region))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def jwt_transport(
|
|
32
|
+
url: str, access_token_provider: Callable[[], str]
|
|
33
|
+
) -> TransportFactory:
|
|
34
|
+
"""Bearer-token transport factory for a resolved AgentCore endpoint."""
|
|
35
|
+
return _factory(url, jwt_auth(access_token_provider))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def no_auth_transport(url: str) -> TransportFactory:
|
|
39
|
+
"""Plain-HTTP transport factory — for local dev."""
|
|
40
|
+
return _factory(url, plain_auth())
|