@aws/nx-plugin 1.0.0-rc.22 → 1.0.0-rc.24
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 +2088 -971
- package/package.json +25 -10
- package/src/agentcore-gateway/attach-upstream.d.ts +7 -7
- package/src/agentcore-gateway/attach-upstream.js +19 -22
- package/src/agentcore-gateway/attach-upstream.js.map +1 -1
- package/src/agentcore-gateway/gateway-connection/generator.d.ts +3 -3
- package/src/agentcore-gateway/gateway-connection/generator.js +42 -45
- package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
- 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/generator.js +89 -72
- package/src/agentcore-gateway/generator.js.map +1 -1
- package/src/agentcore-gateway/mcp-connection/generator.d.ts +2 -2
- package/src/agentcore-gateway/mcp-connection/generator.js +24 -30
- package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
- 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/schema.d.js +6 -0
- package/src/agentcore-gateway/schema.d.js.map +1 -0
- package/src/bin/aws-nx-mcp.js +14 -0
- package/src/bin/aws-nx-mcp.js.map +1 -0
- package/src/connection/{agent-serve-local.d.ts → agent-local-dev.d.ts} +5 -5
- package/src/connection/agent-local-dev.js +42 -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/generator.js +262 -207
- 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/schema.d.js +6 -0
- package/src/connection/schema.d.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 +4 -26
- package/src/infra/app/generator.js +133 -123
- 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/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 +55 -60
- 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.js +14 -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/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/generator-info.js +130 -160
- package/src/mcp-server/generator-info.js.map +1 -1
- package/src/mcp-server/guide-pipeline.js +184 -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.js +27 -40
- package/src/mcp-server/schema-registry.js.map +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 +20 -24
- package/src/mcp-server/server.js.map +1 -1
- 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.js +28 -25
- 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/open-api/ts-client/generator.js +16 -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/generator.js +13 -21
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- 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.js +42 -60
- package/src/open-api/utils/codegen-data/languages.js.map +1 -1
- package/src/open-api/utils/codegen-data/types.js +31 -30
- package/src/open-api/utils/codegen-data/types.js.map +1 -1
- package/src/open-api/utils/codegen-data.js +253 -269
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.js +242 -241
- 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/refs.js +12 -22
- package/src/open-api/utils/refs.js.map +1 -1
- 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 +31 -6
- package/src/preset/generator.d.ts +1 -1
- package/src/preset/generator.js +130 -112
- 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 +0 -1
- package/src/preset/schema.json +0 -5
- package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +304 -0
- package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.frameworks.spec.ts.snap} +18 -845
- package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +535 -0
- package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -2
- package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +1 -1
- package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +1 -1
- package/src/py/agent/a2a-connection/generator.js +70 -75
- 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/files/ag-ui-langchain/main.py.template +10 -0
- package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +6 -8
- package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +3 -3
- package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +3 -3
- package/src/py/agent/gateway-connection/generator.js +61 -58
- package/src/py/agent/gateway-connection/generator.js.map +1 -1
- 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/generator.js +227 -194
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +5 -12
- package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +1 -1
- package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +1 -1
- package/src/py/agent/mcp-connection/generator.js +53 -52
- 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/react-connection/__snapshots__/generator.spec.ts.snap +3 -2
- package/src/py/agent/react-connection/generator.js +51 -58
- 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/schema.d.js +6 -0
- package/src/py/agent/schema.d.js.map +1 -0
- package/src/py/api/generator.js +12 -12
- 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/dynamodb/__snapshots__/generator.spec.ts.snap +68 -28
- package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/py/dynamodb/agent-connection/generator.js +27 -29
- package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
- 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/fast-api-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/py/dynamodb/fast-api-connection/generator.js +26 -28
- package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
- 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/files/__name__/client.py.template +5 -5
- package/src/py/dynamodb/files/__name__/entities/base.py.template +2 -2
- package/src/py/dynamodb/files/config.json.template +1 -1
- package/src/py/dynamodb/generator.js +63 -62
- package/src/py/dynamodb/generator.js.map +1 -1
- package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/py/dynamodb/mcp-server-connection/generator.js +27 -29
- package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
- 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/schema.d.js +6 -0
- package/src/py/dynamodb/schema.d.js.map +1 -0
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +45 -4632
- package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +4833 -0
- package/src/py/fast-api/generator.js +79 -85
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +3 -2
- package/src/py/fast-api/react/generator.js +22 -24
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.js +28 -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/schema.d.js +6 -0
- package/src/py/fast-api/schema.d.js.map +1 -0
- package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/py/lambda-function/generator.js +57 -58
- 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/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/py/mcp-server/generator.js +149 -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/project/generator.d.ts +14 -1
- package/src/py/project/generator.js +137 -88
- 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/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/{sdk → src/sdk}/license.d.ts +4 -4
- 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 +14 -0
- package/src/sdk/py.js +10 -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 +33 -0
- package/src/sdk/ts.js +35 -0
- package/src/sdk/ts.js.map +1 -0
- package/{sdk → src/sdk}/utils/ast.d.ts +2 -2
- package/src/sdk/utils/ast.js +7 -0
- package/src/sdk/utils/ast.js.map +1 -0
- package/{sdk → src/sdk}/utils/format.d.ts +1 -1
- 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 +2 -8
- package/src/smithy/project/files/build.Dockerfile.template +1 -4
- package/src/smithy/project/generator.js +44 -42
- 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/react-connection/generator.js +35 -46
- 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/ts/api/__snapshots__/generator.spec.ts.snap +395 -72
- package/src/smithy/ts/api/generator.js +121 -111
- 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/terraform/project/files/application/src/providers.tf.template +1 -1
- package/src/terraform/project/generator.js +141 -103
- 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/trpc/backend/__snapshots__/generator.spec.ts.snap +336 -92
- package/src/trpc/backend/generator.js +93 -86
- 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/react/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/trpc/react/generator.js +59 -58
- 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/ts/agent/__snapshots__/generator.spec.ts.snap +11 -11
- package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +1 -1
- package/src/ts/agent/a2a-connection/generator.js +58 -54
- 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/gateway-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +3 -3
- package/src/ts/agent/gateway-connection/generator.js +57 -52
- package/src/ts/agent/gateway-connection/generator.js.map +1 -1
- 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/generator.js +165 -136
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +1 -1
- package/src/ts/agent/mcp-connection/generator.js +48 -46
- 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/react-connection/generator.js +79 -79
- 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/schema.d.js +6 -0
- package/src/ts/agent/schema.d.js.map +1 -0
- package/src/ts/api/generator.js +16 -18
- 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/astro-docs/__snapshots__/generator.spec.ts.snap +8 -8
- package/src/ts/astro-docs/generator.js +59 -48
- 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/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/dynamodb/__snapshots__/generator.spec.ts.snap +68 -30
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/ts/dynamodb/agent-connection/generator.js +21 -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/files/config.json.template +1 -1
- package/src/ts/dynamodb/files/src/client.ts.template +7 -7
- package/src/ts/dynamodb/generator.js +64 -63
- package/src/ts/dynamodb/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/ts/dynamodb/mcp-server-connection/generator.js +21 -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/schema.d.js +6 -0
- package/src/ts/dynamodb/schema.d.js.map +1 -0
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/dynamodb/smithy-connection/generator.js +20 -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/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/dynamodb/trpc-connection/generator.js +20 -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/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
- package/src/ts/lambda-function/generator.js +55 -55
- 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/lib/__snapshots__/generator.spec.ts.snap +23 -36
- package/src/ts/lib/biome.js +37 -37
- package/src/ts/lib/biome.js.map +1 -1
- package/src/ts/lib/generator.js +75 -77
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/schema.d.js +6 -0
- package/src/ts/lib/schema.d.js.map +1 -0
- package/src/ts/lib/ts-project-utils.js +65 -70
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/types.js +5 -2
- package/src/ts/lib/types.js.map +1 -1
- package/src/ts/lib/vitest.js +29 -26
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
- package/src/ts/mcp-server/generator.js +157 -138
- 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/nx-generator/__snapshots__/generator.spec.ts.snap +14 -9
- 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 +4 -4
- package/src/ts/nx-generator/generator.js +84 -83
- 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-plugin/__snapshots__/generator.spec.ts.snap +30 -18
- 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 +3 -3
- package/src/ts/nx-plugin/generator.js +49 -48
- 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/utils.js +32 -44
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +34 -30
- package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/ts/rdb/agent-connection/generator.js +38 -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/files/config.json.template +1 -1
- package/src/ts/rdb/files/prisma.config.ts.template +2 -2
- package/src/ts/rdb/files/src/prisma.ts.template +7 -7
- package/src/ts/rdb/files/src/utils.ts.template +3 -0
- package/src/ts/rdb/generator.js +130 -117
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/ts/rdb/mcp-server-connection/generator.js +36 -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/schema.d.js +6 -0
- package/src/ts/rdb/schema.d.js.map +1 -0
- package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/rdb/smithy-connection/generator.js +46 -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/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
- package/src/ts/rdb/trpc-connection/generator.js +36 -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/utils.js +9 -11
- package/src/ts/rdb/utils.js.map +1 -1
- package/src/ts/react-website/agui/generator.js +69 -61
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +179 -332
- package/src/ts/react-website/app/generator.js +197 -188
- 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.json +6 -6
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +118 -4
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +27 -7
- package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
- package/src/ts/react-website/cognito-auth/generator.js +60 -60
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -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/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/sync/generator.js +60 -59
- 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.json +6 -6
- package/src/ts/website/auth/generator.js +11 -11
- 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/utils/agent-chat/agent-chat.d.ts +1 -1
- package/src/utils/agent-chat/agent-chat.js +11 -12
- package/src/utils/agent-chat/agent-chat.js.map +1 -1
- package/src/utils/agent-chat/files/a2a/chat.ts.template +1 -1
- package/src/utils/agent-chat/files/ag-ui/chat.ts.template +1 -1
- package/src/utils/agent-chat/files/http-py/chat.ts.template +1 -1
- package/src/utils/agent-chat/files/http-ts/chat.ts.template +1 -1
- package/src/utils/agent-connection/agent-connection.d.ts +9 -3
- package/src/utils/agent-connection/agent-connection.js +133 -147
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +1 -1
- package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +1 -1
- package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +1 -1
- package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +1 -1
- package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +1 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.js +53 -50
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
- package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +5 -5
- package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +2 -2
- package/src/utils/api-constructs/api-constructs.js +30 -31
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +14 -6
- package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +58 -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 +28 -14
- package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +1 -8
- package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +91 -4
- 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 +17 -19
- package/src/utils/ast/website.js.map +1 -1
- package/src/utils/ast.js +72 -97
- package/src/utils/ast.js.map +1 -1
- package/src/utils/bundle/bundle.js +50 -47
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.js +47 -26
- package/src/utils/commands.js.map +1 -1
- package/src/utils/config/index.d.ts +2 -2
- package/src/utils/config/index.js +5 -4
- package/src/utils/config/index.js.map +1 -1
- package/src/utils/config/utils.js +48 -58
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/connection/open-api/react.d.ts +5 -5
- package/src/utils/connection/open-api/react.js +81 -77
- 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/dynamodb-constructs/dynamodb-constructs.js +32 -33
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +12 -2
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +1 -1
- package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +2 -2
- package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +1 -1
- package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +17 -2
- 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/{pull-image.ts.template → shared/pull-image.ts.template} +1 -1
- package/src/utils/files/common/scripts/src/rdb/{start-container.ts.template → shared/start-container.ts.template} +16 -1
- package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +2 -2
- 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 +3 -3
- 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 +2 -2
- package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
- package/src/utils/format.js +153 -99
- package/src/utils/format.js.map +1 -1
- package/src/utils/fs.js +14 -13
- package/src/utils/fs.js.map +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 +21 -26
- 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 +112 -2
- package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +19 -6
- package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +104 -2
- package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
- package/src/utils/identity-constructs/identity-constructs.js +24 -28
- package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
- package/src/utils/js.js +27 -20
- package/src/utils/js.js.map +1 -1
- package/src/utils/mcp.js +34 -41
- package/src/utils/mcp.js.map +1 -1
- package/src/utils/metrics.js +30 -45
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/mock-project-graph.js +8 -12
- package/src/utils/mock-project-graph.js.map +1 -1
- package/src/utils/names.d.ts +16 -0
- package/src/utils/names.js +39 -48
- package/src/utils/names.js.map +1 -1
- package/src/utils/npm-scope.js +9 -17
- package/src/utils/npm-scope.js.map +1 -1
- package/src/utils/nx.d.ts +18 -2
- package/src/utils/nx.js +111 -74
- 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.js +22 -22
- package/src/utils/pnpm-workspace.js.map +1 -1
- package/src/utils/port.js +26 -36
- package/src/utils/port.js.map +1 -1
- package/src/utils/py.d.ts +14 -1
- package/src/utils/py.js +63 -45
- package/src/utils/py.js.map +1 -1
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +3 -3
- package/src/utils/rdb-constructs/rdb-constructs.js +31 -33
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/shared-constructs-constants.js +16 -16
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/shared-constructs.js +57 -54
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.js +16 -14
- package/src/utils/shared-dynamodb-scripts.js.map +1 -1
- package/src/utils/shared-infra-config.js +30 -31
- package/src/utils/shared-infra-config.js.map +1 -1
- package/src/utils/shared-infra-scripts.js +30 -25
- package/src/utils/shared-infra-scripts.js.map +1 -1
- package/src/utils/shared-rdb-scripts.d.ts +8 -3
- package/src/utils/shared-rdb-scripts.js +21 -13
- package/src/utils/shared-rdb-scripts.js.map +1 -1
- package/src/utils/shared-scripts.js +12 -17
- package/src/utils/shared-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.js +64 -60
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/test.d.ts +8 -0
- package/src/utils/test.js +33 -25
- package/src/utils/test.js.map +1 -1
- package/src/utils/toml.js +7 -15
- package/src/utils/toml.js.map +1 -1
- package/src/utils/versions.d.ts +31 -4
- package/src/utils/versions.js +40 -23
- package/src/utils/versions.js.map +1 -1
- 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 +4 -4
- package/src/utils/website-constructs/website-constructs.js +31 -30
- package/src/utils/website-constructs/website-constructs.js.map +1 -1
- package/bin/aws-nx-mcp.js +0 -17
- package/bin/aws-nx-mcp.js.map +0 -1
- package/sdk/agentcore-gateway.d.ts +0 -6
- package/sdk/agentcore-gateway.js +0 -11
- package/sdk/agentcore-gateway.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.js +0 -14
- 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 -33
- package/sdk/ts.js +0 -53
- 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.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/react-connection/serve-local.js +0 -38
- package/src/py/agent/react-connection/serve-local.js.map +0 -1
- 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/utils/files/common/scripts/src/rdb/wait-for-db.ts.template +0 -59
- /package/src/agentcore-gateway/files/project/{serve-local.ts.template → local-dev.ts.template} +0 -0
- /package/{bin → src/bin}/aws-nx-mcp.d.ts +0 -0
|
@@ -1,42 +1,37 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pyLambdaFunctionGenerator = exports.LAMBDA_FUNCTION_GENERATOR_INFO = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const normalizedFunctionName = (0, names_1.toSnakeCase)(schema.name);
|
|
4
|
+
*/ import { generateFiles, installPackagesTask, joinPathFragments, OverwriteStrategy, updateProjectConfiguration } from "@nx/devkit";
|
|
5
|
+
import { addPythonBundleTarget } from "../../utils/bundle/bundle.js";
|
|
6
|
+
import { formatFilesInSubtree } from "../../utils/format.js";
|
|
7
|
+
import { addLambdaFunctionInfra } from "../../utils/function-constructs/function-constructs.js";
|
|
8
|
+
import { resolveIac } from "../../utils/iac.js";
|
|
9
|
+
import { addGeneratorMetricsIfApplicable } from "../../utils/metrics.js";
|
|
10
|
+
import { toClassName, toDotNotation, toKebabCase, toSnakeCase } from "../../utils/names.js";
|
|
11
|
+
import { getNpmScope } from "../../utils/npm-scope.js";
|
|
12
|
+
import { addComponentGeneratorMetadata, getGeneratorInfo, readProjectConfigurationUnqualified } from "../../utils/nx.js";
|
|
13
|
+
import { Logger, UVProvider } from "../../utils/nxlv-python.js";
|
|
14
|
+
import { sortObjectKeys } from "../../utils/object.js";
|
|
15
|
+
import { toProjectRelativePath } from "../../utils/paths.js";
|
|
16
|
+
import { addDependenciesToPyProjectToml } from "../../utils/py.js";
|
|
17
|
+
import { sharedConstructsGenerator } from "../../utils/shared-constructs.js";
|
|
18
|
+
export const LAMBDA_FUNCTION_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
|
|
19
|
+
const getLambdaFunctionDetails = (tree, schema)=>{
|
|
20
|
+
const scope = toSnakeCase(getNpmScope(tree));
|
|
21
|
+
const normalizedFunctionName = toSnakeCase(schema.name);
|
|
26
22
|
const fullyQualifiedFunctionName = `${scope}.${normalizedFunctionName}`;
|
|
27
|
-
const normalizedFunctionPath = `${schema.moduleName}.${schema.functionPath ? `${
|
|
23
|
+
const normalizedFunctionPath = `${schema.moduleName}.${schema.functionPath ? `${toDotNotation(schema.functionPath)}.` : ''}${normalizedFunctionName}.lambda_handler`;
|
|
28
24
|
return {
|
|
29
25
|
fullyQualifiedFunctionName,
|
|
30
26
|
normalizedFunctionName,
|
|
31
|
-
normalizedFunctionPath
|
|
27
|
+
normalizedFunctionPath
|
|
32
28
|
};
|
|
33
29
|
};
|
|
34
30
|
/**
|
|
35
31
|
* Generates a Python Lambda Function to add to a python project
|
|
36
|
-
*/
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const pyProjectPath = (0, devkit_1.joinPathFragments)(projectConfig.root, 'pyproject.toml');
|
|
32
|
+
*/ export const pyLambdaFunctionGenerator = async (tree, schema)=>{
|
|
33
|
+
const projectConfig = readProjectConfigurationUnqualified(tree, schema.project);
|
|
34
|
+
const pyProjectPath = joinPathFragments(projectConfig.root, 'pyproject.toml');
|
|
40
35
|
// Check if the project has a pyproject.toml file
|
|
41
36
|
if (!pyProjectPath) {
|
|
42
37
|
throw new Error(`This generator does not support selected project ${schema.project}`);
|
|
@@ -46,70 +41,74 @@ const pyLambdaFunctionGenerator = async (tree, schema) => {
|
|
|
46
41
|
}
|
|
47
42
|
const dir = projectConfig.root;
|
|
48
43
|
const projectNameWithOutScope = projectConfig.name.split('.').pop();
|
|
49
|
-
const normalizedProjectName =
|
|
44
|
+
const normalizedProjectName = toSnakeCase(projectNameWithOutScope);
|
|
50
45
|
// Module name is the last part of the source root,
|
|
51
46
|
const sourceParts = projectConfig.sourceRoot.split('/');
|
|
52
47
|
const moduleName = sourceParts[sourceParts.length - 1];
|
|
53
48
|
const { normalizedFunctionName, normalizedFunctionPath } = getLambdaFunctionDetails(tree, {
|
|
54
49
|
moduleName,
|
|
55
50
|
name: schema.name,
|
|
56
|
-
functionPath: schema.functionPath
|
|
51
|
+
functionPath: schema.functionPath
|
|
57
52
|
});
|
|
58
53
|
const constructFunctionName = `${normalizedProjectName}_${normalizedFunctionName}`;
|
|
59
|
-
const constructFunctionClassName =
|
|
60
|
-
const constructFunctionKebabCase =
|
|
61
|
-
const lambdaFunctionClassName =
|
|
62
|
-
const lambdaFunctionKebabCase =
|
|
63
|
-
const functionPath =
|
|
54
|
+
const constructFunctionClassName = toClassName(constructFunctionName);
|
|
55
|
+
const constructFunctionKebabCase = toKebabCase(constructFunctionName);
|
|
56
|
+
const lambdaFunctionClassName = toClassName(schema.name);
|
|
57
|
+
const lambdaFunctionKebabCase = toKebabCase(schema.name);
|
|
58
|
+
const functionPath = joinPathFragments(projectConfig.sourceRoot, schema.functionPath ?? '', `${normalizedFunctionName}.py`);
|
|
64
59
|
const infra = schema.infra ?? 'lambda';
|
|
65
60
|
const handlerAlreadyExists = tree.exists(functionPath);
|
|
66
61
|
if (handlerAlreadyExists && infra === 'none') {
|
|
67
62
|
throw new Error(`This project already has a lambda function with the name ${normalizedFunctionName}. Please remove the lambda function before running this generator or use a different name.`);
|
|
68
63
|
}
|
|
69
64
|
// Check if the project has a bundle target and if not add it
|
|
70
|
-
const { bundleOutputDir } =
|
|
65
|
+
const { bundleOutputDir } = addPythonBundleTarget(projectConfig);
|
|
71
66
|
if (infra !== 'none') {
|
|
72
|
-
const iac = await
|
|
73
|
-
await
|
|
74
|
-
iac
|
|
67
|
+
const iac = await resolveIac(tree, schema.iac);
|
|
68
|
+
await sharedConstructsGenerator(tree, {
|
|
69
|
+
iac
|
|
75
70
|
});
|
|
76
|
-
await
|
|
71
|
+
await addLambdaFunctionInfra(tree, {
|
|
77
72
|
functionProjectName: projectConfig.name,
|
|
78
73
|
nameClassName: constructFunctionClassName,
|
|
79
74
|
nameKebabCase: constructFunctionKebabCase,
|
|
80
75
|
handler: normalizedFunctionPath,
|
|
81
76
|
bundlePathFromRoot: bundleOutputDir,
|
|
82
77
|
runtime: 'python',
|
|
83
|
-
iac
|
|
78
|
+
iac
|
|
84
79
|
});
|
|
85
80
|
}
|
|
86
81
|
const enhancedOptions = {
|
|
87
82
|
...schema,
|
|
88
83
|
dir,
|
|
89
84
|
lambdaFunctionClassName,
|
|
90
|
-
lambdaFunctionSnakeCase: normalizedFunctionName
|
|
85
|
+
lambdaFunctionSnakeCase: normalizedFunctionName
|
|
91
86
|
};
|
|
92
|
-
projectConfig.targets =
|
|
93
|
-
|
|
87
|
+
projectConfig.targets = sortObjectKeys(projectConfig.targets);
|
|
88
|
+
updateProjectConfiguration(tree, projectConfig.name, projectConfig);
|
|
94
89
|
// Generate the lambda handler file
|
|
95
|
-
(
|
|
96
|
-
|
|
97
|
-
|
|
90
|
+
generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'handler'), joinPathFragments(projectConfig.sourceRoot, schema.functionPath ?? ''), enhancedOptions, {
|
|
91
|
+
overwriteStrategy: OverwriteStrategy.KeepExisting
|
|
92
|
+
});
|
|
98
93
|
// Generate the lambda handler test file
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'tests'), joinPathFragments(dir, 'tests'), enhancedOptions, {
|
|
95
|
+
overwriteStrategy: OverwriteStrategy.KeepExisting
|
|
96
|
+
});
|
|
97
|
+
addDependenciesToPyProjectToml(tree, dir, [
|
|
101
98
|
'aws-lambda-powertools',
|
|
102
99
|
'aws-lambda-powertools[tracer]',
|
|
103
|
-
'aws-lambda-powertools[parser]'
|
|
100
|
+
'aws-lambda-powertools[parser]'
|
|
101
|
+
]);
|
|
102
|
+
addComponentGeneratorMetadata(tree, projectConfig.name, LAMBDA_FUNCTION_GENERATOR_INFO, toProjectRelativePath(projectConfig, functionPath), lambdaFunctionKebabCase);
|
|
103
|
+
await addGeneratorMetricsIfApplicable(tree, [
|
|
104
|
+
LAMBDA_FUNCTION_GENERATOR_INFO
|
|
104
105
|
]);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
await new nxlv_python_1.UVProvider(tree.root, new nxlv_python_1.Logger(), tree).install();
|
|
110
|
-
(0, devkit_1.installPackagesTask)(tree);
|
|
106
|
+
await formatFilesInSubtree(tree);
|
|
107
|
+
return async ()=>{
|
|
108
|
+
await new UVProvider(tree.root, new Logger(), tree).install();
|
|
109
|
+
installPackagesTask(tree);
|
|
111
110
|
};
|
|
112
111
|
};
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
export default pyLambdaFunctionGenerator;
|
|
113
|
+
|
|
115
114
|
//# sourceMappingURL=generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/lambda-function/generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/lambda-function/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type GeneratorCallback,\n generateFiles,\n installPackagesTask,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addPythonBundleTarget } from '../../utils/bundle/bundle';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { addLambdaFunctionInfra } from '../../utils/function-constructs/function-constructs';\nimport { resolveIac } from '../../utils/iac';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport {\n toClassName,\n toDotNotation,\n toKebabCase,\n toSnakeCase,\n} from '../../utils/names';\nimport { getNpmScope } from '../../utils/npm-scope';\nimport {\n addComponentGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../utils/nx';\nimport { Logger, UVProvider } from '../../utils/nxlv-python';\nimport { sortObjectKeys } from '../../utils/object';\nimport { toProjectRelativePath } from '../../utils/paths';\nimport { addDependenciesToPyProjectToml } from '../../utils/py';\nimport { sharedConstructsGenerator } from '../../utils/shared-constructs';\nimport type { PyLambdaFunctionGeneratorSchema } from './schema';\n\nexport const LAMBDA_FUNCTION_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport interface LambdaFunctionDetails {\n /**\n * The normalized name of the lambda handler project\n */\n readonly normalizedFunctionName: string;\n /**\n * The full package name of the lambda handler construct\n */\n readonly fullyQualifiedFunctionName: string;\n /**\n * The normalized python path to the lambda handler file in dot notation (e.g. `app.lambda_functions.lambda_handler`)\n */\n readonly normalizedFunctionPath: string;\n}\n\nconst getLambdaFunctionDetails = (\n tree: Tree,\n schema: { moduleName: string; name: string; functionPath?: string },\n): LambdaFunctionDetails => {\n const scope = toSnakeCase(getNpmScope(tree));\n const normalizedFunctionName = toSnakeCase(schema.name);\n const fullyQualifiedFunctionName = `${scope}.${normalizedFunctionName}`;\n const normalizedFunctionPath = `${schema.moduleName}.${schema.functionPath ? `${toDotNotation(schema.functionPath)}.` : ''}${normalizedFunctionName}.lambda_handler`;\n\n return {\n fullyQualifiedFunctionName,\n normalizedFunctionName,\n normalizedFunctionPath,\n };\n};\n\n/**\n * Generates a Python Lambda Function to add to a python project\n */\nexport const pyLambdaFunctionGenerator = async (\n tree: Tree,\n schema: PyLambdaFunctionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const projectConfig = readProjectConfigurationUnqualified(\n tree,\n schema.project,\n );\n\n const pyProjectPath = joinPathFragments(projectConfig.root, 'pyproject.toml');\n\n // Check if the project has a pyproject.toml file\n if (!pyProjectPath) {\n throw new Error(\n `This generator does not support selected project ${schema.project}`,\n );\n }\n\n if (!projectConfig.sourceRoot) {\n throw new Error(\n `This project does not have a source root. Please add a source root to the project configuration before running this generator.`,\n );\n }\n\n const dir = projectConfig.root;\n const projectNameWithOutScope = projectConfig.name.split('.').pop();\n const normalizedProjectName = toSnakeCase(projectNameWithOutScope);\n\n // Module name is the last part of the source root,\n const sourceParts = projectConfig.sourceRoot.split('/');\n const moduleName = sourceParts[sourceParts.length - 1];\n\n const { normalizedFunctionName, normalizedFunctionPath } =\n getLambdaFunctionDetails(tree, {\n moduleName,\n name: schema.name,\n functionPath: schema.functionPath,\n });\n\n const constructFunctionName = `${normalizedProjectName}_${normalizedFunctionName}`;\n const constructFunctionClassName = toClassName(constructFunctionName);\n const constructFunctionKebabCase = toKebabCase(constructFunctionName);\n const lambdaFunctionClassName = toClassName(schema.name);\n const lambdaFunctionKebabCase = toKebabCase(schema.name);\n\n const functionPath = joinPathFragments(\n projectConfig.sourceRoot,\n schema.functionPath ?? '',\n `${normalizedFunctionName}.py`,\n );\n\n const infra = schema.infra ?? 'lambda';\n const handlerAlreadyExists = tree.exists(functionPath);\n\n if (handlerAlreadyExists && infra === 'none') {\n throw new Error(\n `This project already has a lambda function with the name ${normalizedFunctionName}. Please remove the lambda function before running this generator or use a different name.`,\n );\n }\n\n // Check if the project has a bundle target and if not add it\n const { bundleOutputDir } = addPythonBundleTarget(projectConfig);\n\n if (infra !== 'none') {\n const iac = await resolveIac(tree, schema.iac);\n\n await sharedConstructsGenerator(tree, {\n iac,\n });\n\n await addLambdaFunctionInfra(tree, {\n functionProjectName: projectConfig.name,\n nameClassName: constructFunctionClassName,\n nameKebabCase: constructFunctionKebabCase,\n handler: normalizedFunctionPath,\n bundlePathFromRoot: bundleOutputDir,\n runtime: 'python',\n iac,\n });\n }\n\n const enhancedOptions = {\n ...schema,\n dir,\n lambdaFunctionClassName,\n lambdaFunctionSnakeCase: normalizedFunctionName,\n };\n\n projectConfig.targets = sortObjectKeys(projectConfig.targets);\n updateProjectConfiguration(tree, projectConfig.name, projectConfig);\n\n // Generate the lambda handler file\n generateFiles(\n tree, // the virtual file system\n joinPathFragments(import.meta.dirname, 'files', 'handler'), // path to the file templates\n joinPathFragments(projectConfig.sourceRoot, schema.functionPath ?? ''),\n enhancedOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Generate the lambda handler test file\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'tests'),\n joinPathFragments(dir, 'tests'),\n enhancedOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n addDependenciesToPyProjectToml(tree, dir, [\n 'aws-lambda-powertools',\n 'aws-lambda-powertools[tracer]',\n 'aws-lambda-powertools[parser]',\n ]);\n\n addComponentGeneratorMetadata(\n tree,\n projectConfig.name,\n LAMBDA_FUNCTION_GENERATOR_INFO,\n toProjectRelativePath(projectConfig, functionPath),\n lambdaFunctionKebabCase,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [LAMBDA_FUNCTION_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n\n return async () => {\n await new UVProvider(tree.root, new Logger(), tree).install();\n installPackagesTask(tree);\n };\n};\nexport default pyLambdaFunctionGenerator;\n"],"names":["generateFiles","installPackagesTask","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","addPythonBundleTarget","formatFilesInSubtree","addLambdaFunctionInfra","resolveIac","addGeneratorMetricsIfApplicable","toClassName","toDotNotation","toKebabCase","toSnakeCase","getNpmScope","addComponentGeneratorMetadata","getGeneratorInfo","readProjectConfigurationUnqualified","Logger","UVProvider","sortObjectKeys","toProjectRelativePath","addDependenciesToPyProjectToml","sharedConstructsGenerator","LAMBDA_FUNCTION_GENERATOR_INFO","filename","getLambdaFunctionDetails","tree","schema","scope","normalizedFunctionName","name","fullyQualifiedFunctionName","normalizedFunctionPath","moduleName","functionPath","pyLambdaFunctionGenerator","projectConfig","project","pyProjectPath","root","Error","sourceRoot","dir","projectNameWithOutScope","split","pop","normalizedProjectName","sourceParts","length","constructFunctionName","constructFunctionClassName","constructFunctionKebabCase","lambdaFunctionClassName","lambdaFunctionKebabCase","infra","handlerAlreadyExists","exists","bundleOutputDir","iac","functionProjectName","nameClassName","nameKebabCase","handler","bundlePathFromRoot","runtime","enhancedOptions","lambdaFunctionSnakeCase","targets","dirname","overwriteStrategy","KeepExisting","install"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/lambda-function/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { IacOption } from '../../utils/iac';\n\ntype EventSource =\n | 'Any'\n | 'AlbModel'\n | 'APIGatewayProxyEventModel'\n | 'ApiGatewayAuthorizerToken'\n | 'ApiGatewayAuthorizerRequest'\n | 'APIGatewayProxyEventV2Model'\n | 'ApiGatewayAuthorizerRequestV2'\n | 'APIGatewayWebSocketMessageEventModel'\n | 'APIGatewayWebSocketConnectEventModel'\n | 'APIGatewayWebSocketDisconnectEventModel'\n | 'BedrockAgentEventModel'\n | 'CloudFormationCustomResourceCreateModel'\n | 'CloudFormationCustomResourceUpdateModel'\n | 'CloudFormationCustomResourceDeleteModel'\n | 'CloudwatchLogsModel'\n | 'DynamoDBStreamModel'\n | 'EventBridgeModel'\n | 'IoTCoreThingEvent'\n | 'IoTCoreThingTypeEvent'\n | 'IoTCoreThingTypeAssociationEvent'\n | 'IoTCoreThingGroupEvent'\n | 'IoTCoreAddOrRemoveFromThingGroupEvent'\n | 'IoTCoreAddOrDeleteFromThingGroupEvent'\n | 'KafkaMskEventModel'\n | 'KafkaSelfManagedEventModel'\n | 'KinesisDataStreamModel'\n | 'KinesisFirehoseModel'\n | 'KinesisFirehoseSqsModel'\n | 'LambdaFunctionUrlModel'\n | 'S3BatchOperationModel'\n | 'S3EventNotificationEventBridgeModel'\n | 'S3Model'\n | 'S3ObjectLambdaEvent'\n | 'S3SqsEventNotificationModel'\n | 'SesModel'\n | 'SnsModel'\n | 'SqsModel'\n | 'TransferFamilyAuthorizer'\n | 'VpcLatticeModel'\n | 'VpcLatticeV2Model';\n\nexport type LambdaInfraOption = 'lambda' | 'none';\n\nexport interface PyLambdaFunctionGeneratorSchema {\n readonly project: string;\n readonly name: string;\n readonly functionPath?: string;\n readonly event?: EventSource;\n readonly infra?: LambdaInfraOption;\n readonly iac: IacOption;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAgDD,WAOC"}
|
|
@@ -135,15 +135,15 @@ exports[`py#mcp-server generator > should match snapshot for Terraform generated
|
|
|
135
135
|
required_providers {
|
|
136
136
|
aws = {
|
|
137
137
|
source = "hashicorp/aws"
|
|
138
|
-
version = "
|
|
138
|
+
version = "6.52.0"
|
|
139
139
|
}
|
|
140
140
|
null = {
|
|
141
141
|
source = "hashicorp/null"
|
|
142
|
-
version = "
|
|
142
|
+
version = "3.3.0"
|
|
143
143
|
}
|
|
144
144
|
random = {
|
|
145
145
|
source = "hashicorp/random"
|
|
146
|
-
version = "
|
|
146
|
+
version = "3.9.0"
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
}
|
|
@@ -489,7 +489,7 @@ resource "null_resource" "runtime_ready" {
|
|
|
489
489
|
|
|
490
490
|
provisioner "local-exec" {
|
|
491
491
|
command = <<-EOT
|
|
492
|
-
uv run --with boto3 python -c "
|
|
492
|
+
uv run --with boto3==1.43.29 python -c "
|
|
493
493
|
import boto3
|
|
494
494
|
import json
|
|
495
495
|
import os
|
|
@@ -509,7 +509,7 @@ initialize_request = json.dumps({
|
|
|
509
509
|
},
|
|
510
510
|
})
|
|
511
511
|
|
|
512
|
-
deadline = time.time() +
|
|
512
|
+
deadline = time.time() + 5 * 60
|
|
513
513
|
while True:
|
|
514
514
|
try:
|
|
515
515
|
client.invoke_agent_runtime(
|
|
@@ -1,33 +1,29 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pyMcpServerGenerator = exports.PY_MCP_SERVER_GENERATOR_INFO = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const pyProjectPath = (0, devkit_1.joinPathFragments)(project.root, 'pyproject.toml');
|
|
4
|
+
*/ import { addDependenciesToPackageJson, generateFiles, installPackagesTask, joinPathFragments, OverwriteStrategy, updateProjectConfiguration } from "@nx/devkit";
|
|
5
|
+
import { ensureLicenseExceptions } from "../../license/config.js";
|
|
6
|
+
import { MCP_INSPECTOR_EXCEPTIONS } from "../../license/known-exceptions.js";
|
|
7
|
+
import { addMcpServerInfra } from "../../utils/agent-core-constructs/agent-core-constructs.js";
|
|
8
|
+
import { addPythonBundleTarget } from "../../utils/bundle/bundle.js";
|
|
9
|
+
import { resolveContainers } from "../../utils/containers.js";
|
|
10
|
+
import { formatFilesInSubtree } from "../../utils/format.js";
|
|
11
|
+
import { FsCommands } from "../../utils/fs.js";
|
|
12
|
+
import { resolveIac } from "../../utils/iac.js";
|
|
13
|
+
import { addGeneratorMetricsIfApplicable } from "../../utils/metrics.js";
|
|
14
|
+
import { kebabCase, toClassName, toSnakeCase } from "../../utils/names.js";
|
|
15
|
+
import { getNpmScope } from "../../utils/npm-scope.js";
|
|
16
|
+
import { addComponentDevTarget, addComponentGeneratorMetadata, addDependencyToTargetIfNotPresent, getGeneratorInfo, readProjectConfigurationUnqualified } from "../../utils/nx.js";
|
|
17
|
+
import { Logger, UVProvider } from "../../utils/nxlv-python.js";
|
|
18
|
+
import { toProjectRelativePath } from "../../utils/paths.js";
|
|
19
|
+
import { assignPort } from "../../utils/port.js";
|
|
20
|
+
import { addDependenciesToPyProjectToml } from "../../utils/py.js";
|
|
21
|
+
import { sharedConstructsGenerator } from "../../utils/shared-constructs.js";
|
|
22
|
+
import { withVersions } from "../../utils/versions.js";
|
|
23
|
+
export const PY_MCP_SERVER_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
|
|
24
|
+
export const pyMcpServerGenerator = async (tree, options)=>{
|
|
25
|
+
const project = readProjectConfigurationUnqualified(tree, options.project);
|
|
26
|
+
const pyProjectPath = joinPathFragments(project.root, 'pyproject.toml');
|
|
31
27
|
// Check if the project has a pyproject.toml file
|
|
32
28
|
if (!pyProjectPath) {
|
|
33
29
|
throw new Error(`Unsupported project ${options.project}. Expected a Python project (with a pyproject.toml)`);
|
|
@@ -38,46 +34,50 @@ const pyMcpServerGenerator = async (tree, options) => {
|
|
|
38
34
|
// Module name is the last part of the source root,
|
|
39
35
|
const sourceParts = project.sourceRoot.split('/');
|
|
40
36
|
const moduleName = sourceParts[sourceParts.length - 1];
|
|
41
|
-
const name =
|
|
37
|
+
const name = kebabCase(options.name || `${kebabCase(project.name.split('.').pop())}-mcp-server`);
|
|
42
38
|
const mcpTargetPrefix = options.name ? name : 'mcp-server';
|
|
43
|
-
const mcpServerNameSnakeCase =
|
|
44
|
-
const mcpServerNameClassName =
|
|
45
|
-
const targetSourceDir =
|
|
39
|
+
const mcpServerNameSnakeCase = toSnakeCase(options.name || 'mcp-server');
|
|
40
|
+
const mcpServerNameClassName = toClassName(name);
|
|
41
|
+
const targetSourceDir = joinPathFragments(project.sourceRoot, mcpServerNameSnakeCase);
|
|
46
42
|
const infra = options.infra ?? 'agentcore';
|
|
47
43
|
if (infra === 'none' && options.auth && options.auth !== 'iam') {
|
|
48
44
|
console.warn('Warning: auth is ignored when no infrastructure is configured (no infrastructure is generated)');
|
|
49
45
|
}
|
|
50
46
|
const auth = options.auth ?? 'iam';
|
|
51
47
|
// Generate example server
|
|
52
|
-
|
|
48
|
+
generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'app'), targetSourceDir, {
|
|
53
49
|
name,
|
|
54
50
|
mcpServerNameSnakeCase,
|
|
55
51
|
mcpServerNameClassName,
|
|
56
|
-
moduleName
|
|
57
|
-
}, {
|
|
58
|
-
|
|
52
|
+
moduleName
|
|
53
|
+
}, {
|
|
54
|
+
overwriteStrategy: OverwriteStrategy.KeepExisting
|
|
55
|
+
});
|
|
56
|
+
addDependenciesToPyProjectToml(tree, project.root, [
|
|
59
57
|
'aws-lambda-powertools',
|
|
60
58
|
'mcp',
|
|
61
59
|
'uvicorn',
|
|
62
60
|
'boto3',
|
|
63
|
-
'aws-opentelemetry-distro'
|
|
61
|
+
'aws-opentelemetry-distro'
|
|
64
62
|
]);
|
|
65
63
|
if (infra === 'agentcore') {
|
|
66
|
-
const containers = await
|
|
67
|
-
const dockerImageTag = `${
|
|
64
|
+
const containers = await resolveContainers(tree, 'inherit');
|
|
65
|
+
const dockerImageTag = `${getNpmScope(tree)}-${name}:latest`;
|
|
68
66
|
// Add bundle target
|
|
69
|
-
const { bundleTargetName, bundleOutputDir } =
|
|
70
|
-
pythonPlatform: 'aarch64-manylinux_2_28'
|
|
67
|
+
const { bundleTargetName, bundleOutputDir } = addPythonBundleTarget(project, {
|
|
68
|
+
pythonPlatform: 'aarch64-manylinux_2_28'
|
|
71
69
|
});
|
|
72
|
-
|
|
70
|
+
generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'deploy'), targetSourceDir, {
|
|
73
71
|
mcpServerNameSnakeCase,
|
|
74
72
|
moduleName,
|
|
75
|
-
bundleOutputDir
|
|
76
|
-
}, {
|
|
77
|
-
|
|
73
|
+
bundleOutputDir
|
|
74
|
+
}, {
|
|
75
|
+
overwriteStrategy: OverwriteStrategy.KeepExisting
|
|
76
|
+
});
|
|
77
|
+
const dockerOutputDir = joinPathFragments('dist', project.root, 'docker', name);
|
|
78
78
|
const dockerTargetName = `${mcpTargetPrefix}-docker`;
|
|
79
79
|
// Add a docker target that prepares the docker context and builds the image
|
|
80
|
-
const fs = new
|
|
80
|
+
const fs = new FsCommands(tree);
|
|
81
81
|
project.targets[dockerTargetName] = {
|
|
82
82
|
cache: true,
|
|
83
83
|
executor: 'nx:run-commands',
|
|
@@ -87,19 +87,23 @@ const pyMcpServerGenerator = async (tree, options) => {
|
|
|
87
87
|
fs.mkdir(dockerOutputDir),
|
|
88
88
|
fs.cp(bundleOutputDir, dockerOutputDir),
|
|
89
89
|
fs.cp(`${targetSourceDir}/Dockerfile`, `${dockerOutputDir}/Dockerfile`),
|
|
90
|
-
`${containers} build --platform linux/arm64 -t ${dockerImageTag} ${dockerOutputDir}
|
|
90
|
+
`${containers} build --platform linux/arm64 -t ${dockerImageTag} ${dockerOutputDir}`
|
|
91
91
|
],
|
|
92
|
-
parallel: false
|
|
92
|
+
parallel: false
|
|
93
93
|
},
|
|
94
|
-
dependsOn: [
|
|
94
|
+
dependsOn: [
|
|
95
|
+
bundleTargetName
|
|
96
|
+
]
|
|
95
97
|
};
|
|
96
|
-
|
|
97
|
-
|
|
98
|
+
addDependencyToTargetIfNotPresent(project, 'docker', dockerTargetName);
|
|
99
|
+
addDependencyToTargetIfNotPresent(project, 'build', 'docker');
|
|
98
100
|
// Add shared constructs
|
|
99
|
-
const iac = await
|
|
100
|
-
await
|
|
101
|
+
const iac = await resolveIac(tree, options.iac);
|
|
102
|
+
await sharedConstructsGenerator(tree, {
|
|
103
|
+
iac
|
|
104
|
+
});
|
|
101
105
|
// Add the construct to deploy the mcp server
|
|
102
|
-
await
|
|
106
|
+
await addMcpServerInfra(tree, {
|
|
103
107
|
mcpServerNameKebabCase: name,
|
|
104
108
|
mcpServerNameClassName,
|
|
105
109
|
projectName: project.name,
|
|
@@ -107,92 +111,106 @@ const pyMcpServerGenerator = async (tree, options) => {
|
|
|
107
111
|
dockerOutputDir,
|
|
108
112
|
iac,
|
|
109
113
|
auth,
|
|
110
|
-
containers
|
|
114
|
+
containers
|
|
111
115
|
});
|
|
112
116
|
}
|
|
113
|
-
const localDevPort =
|
|
114
|
-
component: {
|
|
117
|
+
const localDevPort = assignPort(tree, project, 8000, {
|
|
118
|
+
component: {
|
|
119
|
+
info: PY_MCP_SERVER_GENERATOR_INFO,
|
|
120
|
+
name: mcpTargetPrefix
|
|
121
|
+
}
|
|
115
122
|
});
|
|
116
|
-
|
|
117
|
-
...project,
|
|
118
|
-
targets
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
},
|
|
142
|
-
[`${mcpTargetPrefix}-serve-local`]: {
|
|
143
|
-
executor: 'nx:run-commands',
|
|
144
|
-
options: {
|
|
145
|
-
commands: [
|
|
146
|
-
`uv run uvicorn --reload ${moduleName}.${mcpServerNameSnakeCase}.http:app --host 0.0.0.0 --port ${localDevPort}`,
|
|
147
|
-
],
|
|
148
|
-
cwd: '{projectRoot}',
|
|
149
|
-
env: {
|
|
150
|
-
PORT: `${localDevPort}`,
|
|
151
|
-
SERVE_LOCAL: 'true',
|
|
152
|
-
},
|
|
153
|
-
},
|
|
154
|
-
continuous: true,
|
|
155
|
-
},
|
|
156
|
-
[`${mcpTargetPrefix}-inspect`]: {
|
|
157
|
-
executor: 'nx:run-commands',
|
|
158
|
-
// Launch the inspector against the locally served (serve-local) HTTP
|
|
159
|
-
// server. serve-local starts the server and any connected dependencies
|
|
160
|
-
// (e.g. a local database).
|
|
161
|
-
dependsOn: [`${mcpTargetPrefix}-serve-local`],
|
|
162
|
-
options: {
|
|
163
|
-
commands: [
|
|
164
|
-
`mcp-inspector --transport http --server-url http://localhost:${localDevPort}/mcp`,
|
|
165
|
-
],
|
|
166
|
-
cwd: '{projectRoot}',
|
|
167
|
-
},
|
|
168
|
-
continuous: true,
|
|
169
|
-
},
|
|
170
|
-
[`${mcpTargetPrefix}-inspect-stdio`]: {
|
|
171
|
-
executor: 'nx:run-commands',
|
|
172
|
-
options: {
|
|
173
|
-
commands: [
|
|
174
|
-
`mcp-inspector -- uv run -m ${moduleName}.${mcpServerNameSnakeCase}.stdio`,
|
|
175
|
-
],
|
|
176
|
-
cwd: '{projectRoot}',
|
|
177
|
-
},
|
|
178
|
-
continuous: true,
|
|
179
|
-
},
|
|
123
|
+
const mcpTargets = {
|
|
124
|
+
...project.targets,
|
|
125
|
+
// Add targets for running the MCP server
|
|
126
|
+
[`${mcpTargetPrefix}-serve-stdio`]: {
|
|
127
|
+
executor: 'nx:run-commands',
|
|
128
|
+
continuous: true,
|
|
129
|
+
options: {
|
|
130
|
+
commands: [
|
|
131
|
+
`uv run -m ${moduleName}.${mcpServerNameSnakeCase}.stdio`
|
|
132
|
+
],
|
|
133
|
+
cwd: '{projectRoot}'
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
[`${mcpTargetPrefix}-serve`]: {
|
|
137
|
+
executor: 'nx:run-commands',
|
|
138
|
+
continuous: true,
|
|
139
|
+
options: {
|
|
140
|
+
commands: [
|
|
141
|
+
`uv run uvicorn --reload ${moduleName}.${mcpServerNameSnakeCase}.http:app --host 0.0.0.0 --port ${localDevPort}`
|
|
142
|
+
],
|
|
143
|
+
cwd: '{projectRoot}',
|
|
144
|
+
env: {
|
|
145
|
+
PORT: `${localDevPort}`
|
|
146
|
+
}
|
|
147
|
+
}
|
|
180
148
|
},
|
|
149
|
+
[`${mcpTargetPrefix}-dev`]: {
|
|
150
|
+
executor: 'nx:run-commands',
|
|
151
|
+
continuous: true,
|
|
152
|
+
options: {
|
|
153
|
+
commands: [
|
|
154
|
+
`uv run uvicorn --reload ${moduleName}.${mcpServerNameSnakeCase}.http:app --host 0.0.0.0 --port ${localDevPort}`
|
|
155
|
+
],
|
|
156
|
+
cwd: '{projectRoot}',
|
|
157
|
+
env: {
|
|
158
|
+
PORT: `${localDevPort}`,
|
|
159
|
+
LOCAL_DEV: 'true'
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
[`${mcpTargetPrefix}-inspect`]: {
|
|
164
|
+
executor: 'nx:run-commands',
|
|
165
|
+
continuous: true,
|
|
166
|
+
// Launch the inspector against the locally served HTTP server. The dev
|
|
167
|
+
// target starts the server and any connected dependencies (e.g. a local
|
|
168
|
+
// database).
|
|
169
|
+
dependsOn: [
|
|
170
|
+
`${mcpTargetPrefix}-dev`
|
|
171
|
+
],
|
|
172
|
+
options: {
|
|
173
|
+
commands: [
|
|
174
|
+
`mcp-inspector --transport http --server-url http://localhost:${localDevPort}/mcp`
|
|
175
|
+
],
|
|
176
|
+
cwd: '{projectRoot}'
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
[`${mcpTargetPrefix}-inspect-stdio`]: {
|
|
180
|
+
executor: 'nx:run-commands',
|
|
181
|
+
continuous: true,
|
|
182
|
+
options: {
|
|
183
|
+
commands: [
|
|
184
|
+
`mcp-inspector -- uv run -m ${moduleName}.${mcpServerNameSnakeCase}.stdio`
|
|
185
|
+
],
|
|
186
|
+
cwd: '{projectRoot}'
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
// Aggregate `<mcp>-dev` under the project-level `dev` target.
|
|
191
|
+
addComponentDevTarget(mcpTargets, `${mcpTargetPrefix}-dev`);
|
|
192
|
+
updateProjectConfiguration(tree, project.name, {
|
|
193
|
+
...project,
|
|
194
|
+
targets: mcpTargets
|
|
181
195
|
});
|
|
182
|
-
|
|
183
|
-
|
|
196
|
+
addDependenciesToPackageJson(tree, {}, withVersions([
|
|
197
|
+
'@modelcontextprotocol/inspector'
|
|
198
|
+
]));
|
|
199
|
+
addComponentGeneratorMetadata(tree, project.name, PY_MCP_SERVER_GENERATOR_INFO, toProjectRelativePath(project, targetSourceDir), mcpTargetPrefix, {
|
|
184
200
|
port: localDevPort,
|
|
185
201
|
rc: mcpServerNameClassName,
|
|
186
|
-
auth
|
|
202
|
+
auth
|
|
187
203
|
});
|
|
188
|
-
await
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
204
|
+
await addGeneratorMetricsIfApplicable(tree, [
|
|
205
|
+
PY_MCP_SERVER_GENERATOR_INFO
|
|
206
|
+
]);
|
|
207
|
+
await ensureLicenseExceptions(tree, MCP_INSPECTOR_EXCEPTIONS);
|
|
208
|
+
await formatFilesInSubtree(tree);
|
|
209
|
+
return async ()=>{
|
|
210
|
+
installPackagesTask(tree);
|
|
211
|
+
await new UVProvider(tree.root, new Logger(), tree).install();
|
|
194
212
|
};
|
|
195
213
|
};
|
|
196
|
-
|
|
197
|
-
|
|
214
|
+
export default pyMcpServerGenerator;
|
|
215
|
+
|
|
198
216
|
//# sourceMappingURL=generator.js.map
|