@aws/nx-plugin 1.0.0-rc.79 → 1.0.0-rc.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/generators.json +10 -0
- package/migrations.json +1 -1
- package/package.json +1 -1
- package/src/agentcore-gateway/agent-connection/generator.d.ts +1 -1
- package/src/agentcore-gateway/agent-connection/generator.js.map +1 -1
- package/src/agentcore-gateway/agent-connection/schema.d.js.map +1 -1
- package/src/agentcore-gateway/agent-connection/schema.d.ts +1 -1
- package/src/agentcore-gateway/attach-upstream.js.map +1 -1
- package/src/agentcore-gateway/gateway-connection/generator.d.ts +1 -1
- package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
- package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -1
- package/src/agentcore-gateway/gateway-connection/schema.d.ts +1 -1
- package/src/agentcore-gateway/generator.d.ts +3 -3
- package/src/agentcore-gateway/generator.js.map +1 -1
- package/src/agentcore-gateway/mcp-connection/generator.d.ts +1 -1
- package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
- package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -1
- package/src/agentcore-gateway/mcp-connection/schema.d.ts +1 -1
- package/src/agentcore-gateway/react-connection/generator.d.ts +1 -1
- package/src/agentcore-gateway/react-connection/generator.js.map +1 -1
- package/src/agentcore-gateway/react-connection/schema.d.js.map +1 -1
- package/src/agentcore-gateway/react-connection/schema.d.ts +1 -1
- package/src/agentcore-gateway/schema.d.js.map +1 -1
- package/src/agentcore-gateway/schema.d.ts +1 -1
- package/src/agentcore-harness/generator.d.ts +4 -4
- package/src/agentcore-harness/generator.js.map +1 -1
- package/src/agentcore-harness/schema.d.js.map +1 -1
- package/src/agentcore-harness/schema.d.ts +1 -1
- package/src/connection/agent-local-dev.d.ts +1 -1
- package/src/connection/agent-local-dev.js.map +1 -1
- package/src/connection/agent-runtime-config.js.map +1 -1
- package/src/connection/gateway-runtime-config.js.map +1 -1
- package/src/connection/generator.d.ts +2 -2
- package/src/connection/generator.js.map +1 -1
- package/src/connection/local-dev.js.map +1 -1
- package/src/connection/scaffold-catalog.d.ts +1 -1
- package/src/connection/scaffold-catalog.js +6 -6
- package/src/connection/scaffold-catalog.js.map +1 -1
- package/src/connection/schema-resolver.d.ts +1 -1
- package/src/connection/schema-resolver.js.map +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js.map +1 -1
- package/src/infra/app/generator.d.ts +7 -7
- package/src/infra/app/generator.js.map +1 -1
- package/src/init/generator.d.ts +3 -3
- package/src/init/generator.js.map +1 -1
- package/src/init/schema.d.js.map +1 -1
- package/src/init/schema.d.ts +2 -2
- package/src/internal/test-matrix/generator.js.map +1 -1
- package/src/license/config-types.d.ts +2 -2
- package/src/license/config-types.js.map +1 -1
- package/src/license/config.d.ts +2 -2
- package/src/license/config.js.map +1 -1
- package/src/license/dependency-check/check.d.ts +2 -2
- package/src/license/dependency-check/check.js.map +1 -1
- package/src/license/dependency-check/collectors/collector.js.map +1 -1
- package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
- package/src/license/dependency-check/evaluator.d.ts +1 -1
- package/src/license/dependency-check/evaluator.js.map +1 -1
- package/src/license/dependency-check/executor.js.map +1 -1
- package/src/license/dependency-check/pre-approved.d.ts +1 -1
- package/src/license/dependency-check/pre-approved.js.map +1 -1
- package/src/license/dependency-check/types.d.ts +1 -1
- package/src/license/dependency-check/types.js.map +1 -1
- package/src/license/generator.d.ts +1 -1
- package/src/license/generator.js.map +1 -1
- package/src/license/index.d.ts +4 -4
- package/src/license/index.js.map +1 -1
- package/src/license/known-exceptions.d.ts +1 -1
- package/src/license/known-exceptions.js.map +1 -1
- package/src/license/sync/generator.js.map +1 -1
- package/src/license/sync/project-file-sync.d.ts +1 -1
- package/src/license/sync/project-file-sync.js.map +1 -1
- package/src/mcp-server/dev-server.js.map +1 -1
- package/src/mcp-server/generator-info.d.ts +3 -3
- 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.map +1 -1
- package/src/mcp-server/guide-render.js.map +1 -1
- package/src/mcp-server/index.js.map +1 -1
- package/src/mcp-server/mdx-ast.js.map +1 -1
- package/src/mcp-server/server.js.map +1 -1
- package/src/mcp-server/tools/add-to-existing-project.d.ts +1 -1
- package/src/mcp-server/tools/add-to-existing-project.js.map +1 -1
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/mcp-server/tools/general-guidance.d.ts +1 -1
- package/src/mcp-server/tools/general-guidance.js +1 -1
- package/src/mcp-server/tools/general-guidance.js.map +1 -1
- package/src/mcp-server/tools/generator-guide.d.ts +1 -1
- package/src/mcp-server/tools/generator-guide.js.map +1 -1
- package/src/mcp-server/tools/list-generators.d.ts +1 -1
- package/src/mcp-server/tools/list-generators.js.map +1 -1
- package/src/mcp-server/tools/upgrade-workspace.d.ts +1 -1
- package/src/mcp-server/tools/upgrade-workspace.js.map +1 -1
- package/src/migrations/latest/apt-security-updates-in-container-images/migration.js.map +1 -1
- package/src/migrations/latest/dynamodb-configurable-encryption/migration.js.map +1 -1
- package/src/migrations/latest/py-agent-ag-ui-hooks/migration.js.map +1 -1
- package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js.map +1 -1
- package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js.map +1 -1
- package/src/migrations/latest/static-website-configurable-waf-encryption/migration.js.map +1 -1
- package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.js.map +1 -1
- package/src/migrations/latest/user-identity-configurable-mfa/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.d.ts +1 -1
- package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js.map +1 -1
- package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js.map +1 -1
- package/src/open-api/ts-client/generator.d.ts +1 -1
- package/src/open-api/ts-client/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.d.ts +1 -1
- package/src/open-api/ts-hooks/generator.js.map +1 -1
- package/src/open-api/ts-hooks/generator.spec.tsx +6 -6
- package/src/open-api/ts-metadata/generator.d.ts +1 -1
- package/src/open-api/ts-metadata/generator.js.map +1 -1
- package/src/open-api/utils/codegen-data/languages.d.ts +1 -1
- package/src/open-api/utils/codegen-data/languages.js.map +1 -1
- package/src/open-api/utils/codegen-data.d.ts +2 -2
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.d.ts +1 -1
- package/src/open-api/utils/normalise.js.map +1 -1
- package/src/open-api/utils/parse.d.ts +1 -1
- package/src/open-api/utils/parse.js.map +1 -1
- package/src/open-api/utils/parser.d.ts +2 -2
- package/src/open-api/utils/parser.js.map +1 -1
- package/src/open-api/utils/refs.d.ts +1 -1
- package/src/open-api/utils/refs.js.map +1 -1
- package/src/preset/generator.d.ts +3 -3
- package/src/preset/generator.js.map +1 -1
- package/src/preset/schema.d.js.map +1 -1
- package/src/preset/schema.d.ts +3 -3
- package/src/py/agent/a2a-connection/generator.d.ts +3 -3
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/a2a-connection/schema.d.js.map +1 -1
- package/src/py/agent/a2a-connection/schema.d.ts +1 -1
- package/src/py/agent/gateway-connection/generator.d.ts +3 -3
- package/src/py/agent/gateway-connection/generator.js.map +1 -1
- package/src/py/agent/gateway-connection/schema.d.js.map +1 -1
- package/src/py/agent/gateway-connection/schema.d.ts +1 -1
- package/src/py/agent/generator.d.ts +3 -3
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/generator.d.ts +3 -3
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/schema.d.js.map +1 -1
- package/src/py/agent/mcp-connection/schema.d.ts +1 -1
- package/src/py/agent/react-connection/generator.d.ts +12 -12
- package/src/py/agent/react-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/local-dev.d.ts +1 -1
- package/src/py/agent/react-connection/local-dev.js.map +1 -1
- package/src/py/agent/react-connection/schema.d.js.map +1 -1
- package/src/py/agent/react-connection/schema.d.ts +1 -1
- package/src/py/agent/schema.d.js.map +1 -1
- package/src/py/agent/schema.d.ts +1 -1
- package/src/py/api/generator.d.ts +1 -1
- package/src/py/api/generator.js.map +1 -1
- package/src/py/api/schema.d.js.map +1 -1
- package/src/py/api/schema.d.ts +1 -1
- package/src/py/dynamodb/agent-connection/generator.d.ts +1 -1
- package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
- package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -1
- package/src/py/dynamodb/agent-connection/schema.d.ts +1 -1
- package/src/py/dynamodb/fast-api-connection/generator.d.ts +1 -1
- package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
- package/src/py/dynamodb/generator.d.ts +4 -4
- package/src/py/dynamodb/generator.js.map +1 -1
- package/src/py/dynamodb/mcp-server-connection/generator.d.ts +1 -1
- package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
- package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -1
- package/src/py/dynamodb/mcp-server-connection/schema.d.ts +1 -1
- package/src/py/dynamodb/schema.d.js.map +1 -1
- package/src/py/dynamodb/schema.d.ts +1 -1
- package/src/py/fast-api/generator.d.ts +3 -3
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/generator.d.ts +3 -3
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.js.map +1 -1
- package/src/py/fast-api/schema.d.js.map +1 -1
- package/src/py/fast-api/schema.d.ts +1 -1
- package/src/py/lambda-function/files/handler/__lambdaFunctionSnakeCase__.py.template +1 -1
- package/src/py/lambda-function/generator.d.ts +10 -4
- package/src/py/lambda-function/generator.js +8 -1
- package/src/py/lambda-function/generator.js.map +1 -1
- package/src/py/lambda-function/schema.d.js.map +1 -1
- package/src/py/lambda-function/schema.d.ts +2 -2
- package/src/py/lambda-function/schema.json +1 -1
- package/src/py/mcp-server/generator.d.ts +3 -3
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/mcp-server/schema.d.js.map +1 -1
- package/src/py/mcp-server/schema.d.ts +1 -1
- package/src/py/project/generator.d.ts +2 -2
- package/src/py/project/generator.js.map +1 -1
- package/src/py/project/schema.json +1 -0
- package/src/py/rdb/agent-connection/generator.d.ts +1 -1
- package/src/py/rdb/agent-connection/generator.js.map +1 -1
- package/src/py/rdb/agent-connection/schema.d.js.map +1 -1
- package/src/py/rdb/agent-connection/schema.d.ts +1 -1
- package/src/py/rdb/fast-api-connection/generator.d.ts +1 -1
- package/src/py/rdb/fast-api-connection/generator.js.map +1 -1
- package/src/py/rdb/generator.d.ts +3 -3
- package/src/py/rdb/generator.js.map +1 -1
- package/src/py/rdb/mcp-server-connection/generator.d.ts +1 -1
- package/src/py/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/py/rdb/mcp-server-connection/schema.d.js.map +1 -1
- package/src/py/rdb/mcp-server-connection/schema.d.ts +1 -1
- package/src/sdk/agentcore-gateway.d.ts +1 -1
- package/src/sdk/agentcore-gateway.js.map +1 -1
- package/src/sdk/agentcore-harness.d.ts +1 -1
- package/src/sdk/agentcore-harness.js.map +1 -1
- package/src/sdk/connection.d.ts +1 -1
- package/src/sdk/connection.js.map +1 -1
- package/src/sdk/license.d.ts +3 -3
- package/src/sdk/license.js.map +1 -1
- package/src/sdk/open-api.d.ts +3 -3
- package/src/sdk/open-api.js.map +1 -1
- package/src/sdk/py.d.ts +7 -7
- package/src/sdk/py.js.map +1 -1
- package/src/sdk/smithy.d.ts +1 -1
- package/src/sdk/smithy.js.map +1 -1
- package/src/sdk/terraform.d.ts +1 -1
- package/src/sdk/terraform.js.map +1 -1
- package/src/sdk/ts.d.ts +18 -18
- package/src/sdk/ts.js.map +1 -1
- package/src/sdk/utils/ast.d.ts +1 -1
- package/src/sdk/utils/ast.js.map +1 -1
- package/src/sdk/utils/format.d.ts +1 -1
- package/src/sdk/utils/format.js.map +1 -1
- package/src/sdk/utils/test.d.ts +1 -1
- package/src/sdk/utils/test.js.map +1 -1
- package/src/smithy/project/generator.d.ts +4 -4
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/react-connection/generator.d.ts +3 -3
- package/src/smithy/react-connection/generator.js.map +1 -1
- package/src/smithy/ts/api/generator.d.ts +3 -3
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/smithy/ts/api/schema.d.js.map +1 -1
- package/src/smithy/ts/api/schema.d.ts +1 -1
- package/src/terraform/project/generator.d.ts +5 -5
- package/src/terraform/project/generator.js.map +1 -1
- package/src/trpc/backend/generator.d.ts +3 -3
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/backend/schema.d.js.map +1 -1
- package/src/trpc/backend/schema.d.ts +1 -1
- package/src/trpc/react/generator.d.ts +3 -3
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/agent/a2a-connection/generator.d.ts +3 -3
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/a2a-connection/schema.d.js.map +1 -1
- package/src/ts/agent/a2a-connection/schema.d.ts +1 -1
- package/src/ts/agent/gateway-connection/generator.d.ts +3 -3
- package/src/ts/agent/gateway-connection/generator.js.map +1 -1
- package/src/ts/agent/gateway-connection/schema.d.js.map +1 -1
- package/src/ts/agent/gateway-connection/schema.d.ts +1 -1
- package/src/ts/agent/generator.d.ts +3 -3
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/generator.d.ts +3 -3
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/schema.d.js.map +1 -1
- package/src/ts/agent/mcp-connection/schema.d.ts +1 -1
- package/src/ts/agent/react-connection/generator.d.ts +11 -11
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/local-dev.d.ts +1 -1
- package/src/ts/agent/react-connection/local-dev.js.map +1 -1
- package/src/ts/agent/react-connection/schema.d.js.map +1 -1
- package/src/ts/agent/react-connection/schema.d.ts +1 -1
- package/src/ts/agent/schema.d.js.map +1 -1
- package/src/ts/agent/schema.d.ts +1 -1
- package/src/ts/api/generator.d.ts +1 -1
- package/src/ts/api/generator.js.map +1 -1
- package/src/ts/api/schema.d.js.map +1 -1
- package/src/ts/api/schema.d.ts +1 -1
- package/src/ts/astro-docs/generator.d.ts +3 -3
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/dcr-proxy/generator.d.ts +5 -5
- package/src/ts/dcr-proxy/generator.js.map +1 -1
- package/src/ts/dcr-proxy/schema.d.js.map +1 -1
- package/src/ts/dcr-proxy/schema.d.ts +1 -1
- package/src/ts/docs/generator.d.ts +1 -1
- package/src/ts/docs/generator.js.map +1 -1
- package/src/ts/dynamodb/agent-connection/generator.d.ts +1 -1
- package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -1
- package/src/ts/dynamodb/agent-connection/schema.d.ts +1 -1
- package/src/ts/dynamodb/generator.d.ts +5 -5
- package/src/ts/dynamodb/generator.js +1 -0
- package/src/ts/dynamodb/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +1 -1
- package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +1 -1
- package/src/ts/dynamodb/schema.d.js.map +1 -1
- package/src/ts/dynamodb/schema.d.ts +1 -1
- package/src/ts/dynamodb/smithy-connection/generator.d.ts +1 -1
- package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/trpc-connection/generator.d.ts +1 -1
- package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
- package/src/ts/lambda-function/generator.d.ts +5 -5
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lambda-function/schema.d.js.map +1 -1
- package/src/ts/lambda-function/schema.d.ts +1 -1
- package/src/ts/lib/biome.d.ts +1 -1
- package/src/ts/lib/biome.js.map +1 -1
- package/src/ts/lib/generator.d.ts +3 -3
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/ts-project-utils.d.ts +3 -3
- 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.map +1 -1
- package/src/ts/mcp-server/generator.d.ts +3 -3
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/mcp-server/schema.d.js.map +1 -1
- package/src/ts/mcp-server/schema.d.ts +1 -1
- package/src/ts/nx-generator/generator.d.ts +2 -2
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-migration/generator.d.ts +3 -3
- package/src/ts/nx-migration/generator.js.map +1 -1
- package/src/ts/nx-plugin/generator.d.ts +3 -3
- 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.map +1 -1
- package/src/ts/rdb/agent-connection/generator.d.ts +1 -1
- package/src/ts/rdb/agent-connection/generator.js.map +1 -1
- package/src/ts/rdb/agent-connection/schema.d.js.map +1 -1
- package/src/ts/rdb/agent-connection/schema.d.ts +1 -1
- package/src/ts/rdb/generator.d.ts +4 -4
- package/src/ts/rdb/generator.js +1 -0
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/generator.d.ts +1 -1
- package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/schema.d.ts +1 -1
- package/src/ts/rdb/schema.d.js.map +1 -1
- package/src/ts/rdb/schema.d.ts +1 -1
- package/src/ts/rdb/smithy-connection/generator.d.ts +1 -1
- package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
- package/src/ts/rdb/trpc-connection/generator.d.ts +1 -1
- package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
- package/src/ts/react-website/agui/generator.d.ts +2 -2
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/generator.d.ts +3 -3
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/app/schema.d.js.map +1 -1
- package/src/ts/react-website/app/schema.d.ts +2 -2
- package/src/ts/react-website/cognito-auth/generator.d.ts +5 -5
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -1
- package/src/ts/react-website/cognito-auth/schema.d.ts +1 -1
- package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
- package/src/ts/react-website/runtime-config/generator.d.ts +1 -1
- package/src/ts/react-website/runtime-config/generator.js.map +1 -1
- package/src/ts/sync/generator.d.ts +1 -1
- package/src/ts/sync/generator.js.map +1 -1
- package/src/ts/website/app/generator.d.ts +1 -1
- package/src/ts/website/app/generator.js.map +1 -1
- package/src/ts/website/app/schema.d.js.map +1 -1
- package/src/ts/website/app/schema.d.ts +2 -2
- package/src/ts/website/auth/generator.d.ts +1 -1
- package/src/ts/website/auth/generator.js.map +1 -1
- package/src/ts/website/auth/schema.d.js.map +1 -1
- package/src/ts/website/auth/schema.d.ts +1 -1
- package/src/utils/add-dependencies.d.ts +1 -1
- package/src/utils/add-dependencies.js.map +1 -1
- package/src/utils/agent-chat/agent-chat.js.map +1 -1
- package/src/utils/agent-connection/agent-connection.d.ts +2 -2
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +4 -4
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/api-constructs/api-constructs.d.ts +3 -3
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/api-constructs/open-api-metadata.d.ts +1 -1
- package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
- package/src/utils/ast/website.js.map +1 -1
- package/src/utils/ast.js +6 -0
- package/src/utils/ast.js.map +1 -1
- package/src/utils/bundle/bundle.d.ts +1 -1
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.d.ts +1 -1
- package/src/utils/commands.js.map +1 -1
- package/src/utils/config/index.d.ts +6 -6
- package/src/utils/config/index.js.map +1 -1
- package/src/utils/config/utils.d.ts +1 -1
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/connection/open-api/react.d.ts +1 -1
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/containers.js.map +1 -1
- package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.d.ts +1 -1
- package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js.map +1 -1
- package/src/utils/declared-dependencies.d.ts +1 -1
- package/src/utils/declared-dependencies.js.map +1 -1
- package/src/utils/dependencies.js.map +1 -1
- package/src/utils/docker.d.ts +1 -1
- package/src/utils/docker.js.map +1 -1
- package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +1 -1
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
- 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 +1 -1
- package/src/utils/function-constructs/function-constructs.js.map +1 -1
- package/src/utils/iac.d.ts +2 -2
- package/src/utils/iac.js.map +1 -1
- package/src/utils/identity-constructs/identity-constructs.d.ts +2 -2
- package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
- package/src/utils/init.d.ts +3 -3
- package/src/utils/init.js.map +1 -1
- package/src/utils/install.d.ts +1 -1
- package/src/utils/install.js.map +1 -1
- package/src/utils/mcp.js.map +1 -1
- package/src/utils/metrics.d.ts +1 -1
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/migration-manifest.d.ts +1 -1
- package/src/utils/migration-manifest.js.map +1 -1
- package/src/utils/nx.d.ts +3 -3
- package/src/utils/nx.js.map +1 -1
- package/src/utils/paths.js.map +1 -1
- package/src/utils/pkg-manager.d.ts +1 -1
- package/src/utils/pkg-manager.js.map +1 -1
- package/src/utils/pnpm-workspace.js.map +1 -1
- package/src/utils/project-package-json.js.map +1 -1
- package/src/utils/py.d.ts +2 -2
- package/src/utils/py.js.map +1 -1
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +2 -2
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +3 -3
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.d.ts +1 -1
- package/src/utils/shared-dynamodb-scripts.js.map +1 -1
- package/src/utils/shared-infra-config.js.map +1 -1
- package/src/utils/shared-infra-scripts.d.ts +2 -2
- package/src/utils/shared-infra-scripts.js.map +1 -1
- package/src/utils/shared-rdb-scripts.d.ts +1 -1
- package/src/utils/shared-rdb-scripts.js.map +1 -1
- package/src/utils/shared-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.d.ts +1 -1
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/smithy.js.map +1 -1
- package/src/utils/test.js.map +1 -1
- package/src/utils/version-upgrade-migration/migration.js.map +1 -1
- package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -1
- package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +1 -1
- package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -1
- package/src/utils/version-upgrade-migration/register.js.map +1 -1
- package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +1 -1
- package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -1
- package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -1
- package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -1
- package/src/utils/versions.d.ts +1 -1
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/website-constructs.d.ts +2 -2
- package/src/utils/website-constructs/website-constructs.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/agent/react-connection/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addAgentRuntimeToConnectionNamespace } from '../../../connection/agent-runtime-config';\nimport type { ResolvedConnectionOptions } from '../../../connection/generator';\nimport type { AgentGatewayRoute } from '../../../ts/agent/react-connection/generator';\nimport {\n DEPENDENCIES as AGUI_DEPENDENCIES,\n type AgUiAuth,\n addAgUiReactConnection,\n resolveAgUiTheme,\n} from '../../../ts/react-website/agui/generator';\nimport {\n addOpenApiReactClient,\n OPEN_API_REACT_DEPENDENCIES,\n} from '../../../utils/connection/open-api/react';\nimport {\n declareDependencies,\n onlyWhen,\n} from '../../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { kebabCase, toClassName, toSnakeCase } from '../../../utils/names';\nimport {\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n type ComponentMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { sortObjectKeys } from '../../../utils/object';\nimport { toProjectRelativePath } from '../../../utils/paths';\nimport {\n addPyAgentTargetToLocalDev,\n openApiClientLocalDevDeps,\n} from './local-dev';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface PyAgentReactConnectionMetadata {\n readonly protocol: string;\n readonly auth: string;\n /** The AG-UI theme module, which the website's `ux` selects. */\n readonly theme: string;\n}\n\n/** The OpenAPI-over-HTTP path, which the AG-UI path takes none of. */\nconst isHttp = (m: PyAgentReactConnectionMetadata) => m.protocol !== 'ag-ui';\n\n/** The AG-UI path, whose packages `addAgUiReactConnection` adds. */\nconst isAgUi = (m: PyAgentReactConnectionMetadata) => !isHttp(m);\n\n// Each entry names the protocol path it belongs to: the HTTP path's OpenAPI\n// client packages are added by `addOpenApiReactClient`, the AG-UI path's by\n// `addAgUiReactConnection`, both on this generator's behalf. The AG-UI entries\n// keep their own theme and auth conditions, which the metadata below records.\nexport const DEPENDENCIES =\n declareDependencies<PyAgentReactConnectionMetadata>()({\n ts: [\n ...onlyWhen(OPEN_API_REACT_DEPENDENCIES, isHttp),\n ...onlyWhen(AGUI_DEPENDENCIES.ts, isAgUi),\n ],\n });\n\nexport const PY_AGENT_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const pyAgentReactConnectionGenerator = async (\n tree: Tree,\n options: ResolvedConnectionOptions & { gatewayRoute?: AgentGatewayRoute },\n) => {\n const frontendProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const agentProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n const targetComponent: ComponentMetadata | undefined =\n options.targetComponent;\n\n // Extract agent metadata from the target component or project metadata\n const metadata = agentProjectConfig.metadata as any;\n const agentName = targetComponent?.name ?? 'agent';\n const agentNameClassName = targetComponent?.rc ?? toClassName(agentName);\n const agentPort = targetComponent?.port ?? metadata?.ports?.[0] ?? 8081;\n // Behind a gateway the browser authenticates with the gateway, not the agent.\n const auth = (\n options.gatewayRoute?.gatewayAuth ??\n targetComponent?.auth ??\n metadata?.auth ??\n 'iam'\n ).toLowerCase();\n const protocol = (targetComponent?.protocol ?? 'http').toLowerCase();\n\n // Recorded below and read by the declaration's predicates, so the packages\n // added here are exactly the ones the version sync will own.\n const connectionMetadata: PyAgentReactConnectionMetadata = {\n protocol,\n auth,\n theme: resolveAgUiTheme(frontendProjectConfig),\n };\n\n if (protocol === 'a2a') {\n throw new Error(\n `Cannot connect a React website to an A2A agent. ` +\n `Consider generating an agent with the HTTP or AG-UI protocol instead.`,\n );\n }\n\n let additionalLocalDevDeps: string[] = [];\n\n if (protocol === 'ag-ui') {\n await addAgUiReactConnection(tree, {\n frontendProjectConfig,\n agentName,\n agentNameClassName,\n auth: auth as AgUiAuth,\n gatewayRoute: options.gatewayRoute,\n });\n } else {\n const moduleName = getModuleName(agentProjectConfig);\n const agentNameSnakeCase = toSnakeCase(agentName);\n const agentTargetPrefix = targetComponent?.name ? agentName : 'agent';\n\n // Add OpenAPI spec generation script scoped to this agent\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files/agent'),\n agentProjectConfig.root,\n {\n moduleName,\n agentNameSnakeCase,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Instrument the OpenAPI spec generation as a target on the agent project\n const openApiTargetName = `${agentTargetPrefix}-openapi`;\n const openApiDist = joinPathFragments(\n 'dist',\n agentProjectConfig.root,\n 'openapi',\n agentNameSnakeCase,\n );\n const specPath = joinPathFragments(openApiDist, 'openapi.json');\n\n updateProjectConfiguration(tree, agentProjectConfig.name, {\n ...agentProjectConfig,\n targets: sortObjectKeys({\n ...agentProjectConfig.targets,\n [openApiTargetName]: {\n cache: true,\n executor: 'nx:run-commands',\n outputs: [\n `{workspaceRoot}/dist/{projectRoot}/openapi/${agentNameSnakeCase}`,\n ],\n options: {\n commands: [\n `uv run python {projectRoot}/scripts/${agentNameSnakeCase}_openapi.py \"dist/{projectRoot}/openapi/${agentNameSnakeCase}/openapi.json\"`,\n ],\n },\n },\n }),\n });\n\n // Use the shared OpenAPI react client utility for hooks, providers, and build targets.\n // The dev target is handled separately below using the agent-specific dev target.\n await addOpenApiReactClient(\n tree,\n {\n apiName: agentNameClassName,\n frontendProjectConfig,\n backendProjectConfig: agentProjectConfig,\n specBuildProject: agentProjectConfig,\n specPath,\n specBuildTargetName: `${agentProjectConfig.name}:${openApiTargetName}`,\n auth,\n port: agentPort,\n isAgentRuntime: true,\n gatewayRoute: options.gatewayRoute,\n skipLocalDev: true,\n },\n DEPENDENCIES,\n );\n\n additionalLocalDevDeps = openApiClientLocalDevDeps(agentNameClassName);\n\n // HTTP only — the AG-UI branch handles this inside addAgUiReactConnection.\n // Agent constructs publish their runtime ARN to the 'agentcore' namespace\n // by default, which isn't exposed to the website; patch them to also\n // publish under 'connection' so the browser can read it. When routing via\n // a gateway, the gateway publishes its own URL instead.\n if (!options.gatewayRoute) {\n await addAgentRuntimeToConnectionNamespace(tree, {\n agentNameKebabCase: kebabCase(agentNameClassName),\n agentNameClassName,\n });\n }\n }\n\n if (options.gatewayRoute) {\n // The gateway react-connection wires the website's dev target to the\n // local gateway (which proxies to the agent); only the OpenAPI client\n // generation targets are still needed here.\n if (additionalLocalDevDeps.length > 0) {\n const websiteConfig = readProjectConfigurationUnqualified(\n tree,\n frontendProjectConfig.name,\n );\n if (websiteConfig.targets?.['dev']) {\n for (const additional of additionalLocalDevDeps) {\n addDependencyToTargetIfNotPresent(websiteConfig, 'dev', additional);\n }\n updateProjectConfiguration(tree, websiteConfig.name, websiteConfig);\n }\n }\n } else {\n await addPyAgentTargetToLocalDev(\n tree,\n frontendProjectConfig.name,\n agentProjectConfig.name,\n {\n agentName,\n agentNameClassName,\n port: agentPort,\n targetComponent,\n additionalDependencyTargets: additionalLocalDevDeps,\n },\n );\n }\n\n // Recorded so the version sync knows this connection's dependencies are ours.\n addComponentGeneratorMetadata(\n tree,\n frontendProjectConfig.name,\n PY_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n toProjectRelativePath(\n frontendProjectConfig,\n protocol === 'ag-ui'\n ? joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'hooks',\n `useAgui${agentNameClassName}`,\n )\n : joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'components',\n `${agentNameClassName}Provider`,\n ),\n ),\n agentNameClassName,\n connectionMetadata,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n PY_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n ]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\n/**\n * Determine the Python module name from the project configuration\n */\nconst getModuleName = (\n projectConfig: ReturnType<typeof readProjectConfigurationUnqualified>,\n): string => {\n if (projectConfig.sourceRoot) {\n const sourceRootParts = projectConfig.sourceRoot.split('/');\n return sourceRootParts[sourceRootParts.length - 1];\n }\n throw new Error(\n `Could not determine sourceRoot for project ${projectConfig.name}`,\n );\n};\n\nexport default pyAgentReactConnectionGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","addAgentRuntimeToConnectionNamespace","DEPENDENCIES","AGUI_DEPENDENCIES","addAgUiReactConnection","resolveAgUiTheme","addOpenApiReactClient","OPEN_API_REACT_DEPENDENCIES","declareDependencies","onlyWhen","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","kebabCase","toClassName","toSnakeCase","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","sortObjectKeys","toProjectRelativePath","addPyAgentTargetToLocalDev","openApiClientLocalDevDeps","isHttp","m","protocol","isAgUi","ts","PY_AGENT_REACT_CONNECTION_GENERATOR_INFO","filename","pyAgentReactConnectionGenerator","tree","options","frontendProjectConfig","sourceProject","agentProjectConfig","targetProject","targetComponent","metadata","agentName","name","agentNameClassName","rc","agentPort","port","ports","auth","gatewayRoute","gatewayAuth","toLowerCase","connectionMetadata","theme","Error","additionalLocalDevDeps","moduleName","getModuleName","agentNameSnakeCase","agentTargetPrefix","dirname","root","overwriteStrategy","KeepExisting","openApiTargetName","openApiDist","specPath","targets","cache","executor","outputs","commands","apiName","backendProjectConfig","specBuildProject","specBuildTargetName","isAgentRuntime","skipLocalDev","agentNameKebabCase","length","websiteConfig","additional","additionalDependencyTargets","sourceRoot","preferInstallDependencies","languages","projectConfig","sourceRootParts","split"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EAEjBC,0BAA0B,QACrB,aAAa;AACpB,SAASC,oCAAoC,QAAQ,8CAA2C;AAGhG,SACEC,gBAAgBC,iBAAiB,EAEjCC,sBAAsB,EACtBC,gBAAgB,QACX,8CAA2C;AAClD,SACEC,qBAAqB,EACrBC,2BAA2B,QACtB,8CAA2C;AAClD,SACEC,mBAAmB,EACnBC,QAAQ,QACH,0CAAuC;AAC9C,SAASC,oBAAoB,QAAQ,2BAAwB;AAC7D,SAASC,mBAAmB,QAAQ,4BAAyB;AAC7D,SAASC,+BAA+B,QAAQ,4BAAyB;AACzE,SAASC,SAAS,EAAEC,WAAW,EAAEC,WAAW,QAAQ,0BAAuB;AAC3E,SACEC,6BAA6B,EAC7BC,iCAAiC,EAEjCC,gBAAgB,EAEhBC,mCAAmC,QAC9B,uBAAoB;AAC3B,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,qBAAqB,QAAQ,0BAAuB;AAC7D,SACEC,0BAA0B,EAC1BC,yBAAyB,QACpB,iBAAc;AAUrB,oEAAoE,GACpE,MAAMC,SAAS,CAACC,IAAsCA,EAAEC,QAAQ,KAAK;AAErE,kEAAkE,GAClE,MAAMC,SAAS,CAACF,IAAsC,CAACD,OAAOC;AAE9D,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,8EAA8E;AAC9E,OAAO,MAAMvB,eACXM,sBAAsD;IACpDoB,IAAI;WACCnB,SAASF,6BAA6BiB;WACtCf,SAASN,kBAAkByB,EAAE,EAAED;KACnC;AACH,GAAG;AAEL,OAAO,MAAME,2CACXX,iBAAiB,YAAYY,QAAQ,EAAE;AAEzC,OAAO,MAAMC,kCAAkC,OAC7CC,MACAC;IAEA,MAAMC,wBAAwBf,oCAC5Ba,MACAC,QAAQE,aAAa;IAEvB,MAAMC,qBAAqBjB,oCACzBa,MACAC,QAAQI,aAAa;IAGvB,MAAMC,kBACJL,QAAQK,eAAe;IAEzB,uEAAuE;IACvE,MAAMC,WAAWH,mBAAmBG,QAAQ;IAC5C,MAAMC,YAAYF,iBAAiBG,QAAQ;IAC3C,MAAMC,qBAAqBJ,iBAAiBK,MAAM7B,YAAY0B;IAC9D,MAAMI,YAAYN,iBAAiBO,QAAQN,UAAUO,OAAO,CAAC,EAAE,IAAI;IACnE,8EAA8E;IAC9E,MAAMC,OAAO,AACXd,CAAAA,QAAQe,YAAY,EAAEC,eACtBX,iBAAiBS,QACjBR,UAAUQ,QACV,KAAI,EACJG,WAAW;IACb,MAAMxB,WAAW,AAACY,CAAAA,iBAAiBZ,YAAY,MAAK,EAAGwB,WAAW;IAElE,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAMC,qBAAqD;QACzDzB;QACAqB;QACAK,OAAO/C,iBAAiB6B;IAC1B;IAEA,IAAIR,aAAa,OAAO;QACtB,MAAM,IAAI2B,MACR,CAAC,gDAAgD,CAAC,GAChD,CAAC,qEAAqE,CAAC;IAE7E;IAEA,IAAIC,yBAAmC,EAAE;IAEzC,IAAI5B,aAAa,SAAS;QACxB,MAAMtB,uBAAuB4B,MAAM;YACjCE;YACAM;YACAE;YACAK,MAAMA;YACNC,cAAcf,QAAQe,YAAY;QACpC;IACF,OAAO;QACL,MAAMO,aAAaC,cAAcpB;QACjC,MAAMqB,qBAAqB1C,YAAYyB;QACvC,MAAMkB,oBAAoBpB,iBAAiBG,OAAOD,YAAY;QAE9D,0DAA0D;QAC1D3C,cACEmC,MACAlC,kBAAkB,YAAY6D,OAAO,EAAE,gBACvCvB,mBAAmBwB,IAAI,EACvB;YACEL;YACAE;QACF,GACA;YACEI,mBAAmB9D,kBAAkB+D,YAAY;QACnD;QAGF,0EAA0E;QAC1E,MAAMC,oBAAoB,GAAGL,kBAAkB,QAAQ,CAAC;QACxD,MAAMM,cAAclE,kBAClB,QACAsC,mBAAmBwB,IAAI,EACvB,WACAH;QAEF,MAAMQ,WAAWnE,kBAAkBkE,aAAa;QAEhDhE,2BAA2BgC,MAAMI,mBAAmBK,IAAI,EAAE;YACxD,GAAGL,kBAAkB;YACrB8B,SAAS9C,eAAe;gBACtB,GAAGgB,mBAAmB8B,OAAO;gBAC7B,CAACH,kBAAkB,EAAE;oBACnBI,OAAO;oBACPC,UAAU;oBACVC,SAAS;wBACP,CAAC,2CAA2C,EAAEZ,oBAAoB;qBACnE;oBACDxB,SAAS;wBACPqC,UAAU;4BACR,CAAC,oCAAoC,EAAEb,mBAAmB,wCAAwC,EAAEA,mBAAmB,cAAc,CAAC;yBACvI;oBACH;gBACF;YACF;QACF;QAEA,uFAAuF;QACvF,kFAAkF;QAClF,MAAMnD,sBACJ0B,MACA;YACEuC,SAAS7B;YACTR;YACAsC,sBAAsBpC;YACtBqC,kBAAkBrC;YAClB6B;YACAS,qBAAqB,GAAGtC,mBAAmBK,IAAI,CAAC,CAAC,EAAEsB,mBAAmB;YACtEhB;YACAF,MAAMD;YACN+B,gBAAgB;YAChB3B,cAAcf,QAAQe,YAAY;YAClC4B,cAAc;QAChB,GACA1E;QAGFoD,yBAAyB/B,0BAA0BmB;QAEnD,2EAA2E;QAC3E,0EAA0E;QAC1E,qEAAqE;QACrE,0EAA0E;QAC1E,wDAAwD;QACxD,IAAI,CAACT,QAAQe,YAAY,EAAE;YACzB,MAAM/C,qCAAqC+B,MAAM;gBAC/C6C,oBAAoBhE,UAAU6B;gBAC9BA;YACF;QACF;IACF;IAEA,IAAIT,QAAQe,YAAY,EAAE;QACxB,qEAAqE;QACrE,sEAAsE;QACtE,4CAA4C;QAC5C,IAAIM,uBAAuBwB,MAAM,GAAG,GAAG;YACrC,MAAMC,gBAAgB5D,oCACpBa,MACAE,sBAAsBO,IAAI;YAE5B,IAAIsC,cAAcb,OAAO,EAAE,CAAC,MAAM,EAAE;gBAClC,KAAK,MAAMc,cAAc1B,uBAAwB;oBAC/CrC,kCAAkC8D,eAAe,OAAOC;gBAC1D;gBACAhF,2BAA2BgC,MAAM+C,cAActC,IAAI,EAAEsC;YACvD;QACF;IACF,OAAO;QACL,MAAMzD,2BACJU,MACAE,sBAAsBO,IAAI,EAC1BL,mBAAmBK,IAAI,EACvB;YACED;YACAE;YACAG,MAAMD;YACNN;YACA2C,6BAA6B3B;QAC/B;IAEJ;IAEA,8EAA8E;IAC9EtC,8BACEgB,MACAE,sBAAsBO,IAAI,EAC1BZ,0CACAR,sBACEa,uBACAR,aAAa,UACT5B,kBACEoC,sBAAsBgD,UAAU,EAChC,SACA,CAAC,OAAO,EAAExC,oBAAoB,IAEhC5C,kBACEoC,sBAAsBgD,UAAU,EAChC,cACA,GAAGxC,mBAAmB,QAAQ,CAAC,IAGvCA,oBACAS;IAGF,MAAMvC,gCAAgCoB,MAAM;QAC1CH;KACD;IAED,MAAMnB,qBAAqBsB;IAC3B,OAAO,IACLrB,oBAAoBqB,MAAMC,QAAQkD,yBAAyB,EAAE;YAC3DC,WAAW;gBAAC;aAAa;QAC3B;AACJ,EAAE;AAEF;;CAEC,GACD,MAAM5B,gBAAgB,CACpB6B;IAEA,IAAIA,cAAcH,UAAU,EAAE;QAC5B,MAAMI,kBAAkBD,cAAcH,UAAU,CAACK,KAAK,CAAC;QACvD,OAAOD,eAAe,CAACA,gBAAgBR,MAAM,GAAG,EAAE;IACpD;IACA,MAAM,IAAIzB,MACR,CAAC,2CAA2C,EAAEgC,cAAc5C,IAAI,EAAE;AAEtE;AAEA,eAAeV,gCAAgC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/agent/react-connection/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addAgentRuntimeToConnectionNamespace } from '../../../connection/agent-runtime-config.js';\nimport type { ResolvedConnectionOptions } from '../../../connection/generator.js';\nimport type { AgentGatewayRoute } from '../../../ts/agent/react-connection/generator.js';\nimport {\n DEPENDENCIES as AGUI_DEPENDENCIES,\n type AgUiAuth,\n addAgUiReactConnection,\n resolveAgUiTheme,\n} from '../../../ts/react-website/agui/generator.js';\nimport {\n addOpenApiReactClient,\n OPEN_API_REACT_DEPENDENCIES,\n} from '../../../utils/connection/open-api/react.js';\nimport {\n declareDependencies,\n onlyWhen,\n} from '../../../utils/declared-dependencies.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { installDependencies } from '../../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics.js';\nimport { kebabCase, toClassName, toSnakeCase } from '../../../utils/names.js';\nimport {\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n type ComponentMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx.js';\nimport { sortObjectKeys } from '../../../utils/object.js';\nimport { toProjectRelativePath } from '../../../utils/paths.js';\nimport {\n addPyAgentTargetToLocalDev,\n openApiClientLocalDevDeps,\n} from './local-dev.js';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface PyAgentReactConnectionMetadata {\n readonly protocol: string;\n readonly auth: string;\n /** The AG-UI theme module, which the website's `ux` selects. */\n readonly theme: string;\n}\n\n/** The OpenAPI-over-HTTP path, which the AG-UI path takes none of. */\nconst isHttp = (m: PyAgentReactConnectionMetadata) => m.protocol !== 'ag-ui';\n\n/** The AG-UI path, whose packages `addAgUiReactConnection` adds. */\nconst isAgUi = (m: PyAgentReactConnectionMetadata) => !isHttp(m);\n\n// Each entry names the protocol path it belongs to: the HTTP path's OpenAPI\n// client packages are added by `addOpenApiReactClient`, the AG-UI path's by\n// `addAgUiReactConnection`, both on this generator's behalf. The AG-UI entries\n// keep their own theme and auth conditions, which the metadata below records.\nexport const DEPENDENCIES =\n declareDependencies<PyAgentReactConnectionMetadata>()({\n ts: [\n ...onlyWhen(OPEN_API_REACT_DEPENDENCIES, isHttp),\n ...onlyWhen(AGUI_DEPENDENCIES.ts, isAgUi),\n ],\n });\n\nexport const PY_AGENT_REACT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const pyAgentReactConnectionGenerator = async (\n tree: Tree,\n options: ResolvedConnectionOptions & { gatewayRoute?: AgentGatewayRoute },\n) => {\n const frontendProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const agentProjectConfig = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n const targetComponent: ComponentMetadata | undefined =\n options.targetComponent;\n\n // Extract agent metadata from the target component or project metadata\n const metadata = agentProjectConfig.metadata as any;\n const agentName = targetComponent?.name ?? 'agent';\n const agentNameClassName = targetComponent?.rc ?? toClassName(agentName);\n const agentPort = targetComponent?.port ?? metadata?.ports?.[0] ?? 8081;\n // Behind a gateway the browser authenticates with the gateway, not the agent.\n const auth = (\n options.gatewayRoute?.gatewayAuth ??\n targetComponent?.auth ??\n metadata?.auth ??\n 'iam'\n ).toLowerCase();\n const protocol = (targetComponent?.protocol ?? 'http').toLowerCase();\n\n // Recorded below and read by the declaration's predicates, so the packages\n // added here are exactly the ones the version sync will own.\n const connectionMetadata: PyAgentReactConnectionMetadata = {\n protocol,\n auth,\n theme: resolveAgUiTheme(frontendProjectConfig),\n };\n\n if (protocol === 'a2a') {\n throw new Error(\n `Cannot connect a React website to an A2A agent. ` +\n `Consider generating an agent with the HTTP or AG-UI protocol instead.`,\n );\n }\n\n let additionalLocalDevDeps: string[] = [];\n\n if (protocol === 'ag-ui') {\n await addAgUiReactConnection(tree, {\n frontendProjectConfig,\n agentName,\n agentNameClassName,\n auth: auth as AgUiAuth,\n gatewayRoute: options.gatewayRoute,\n });\n } else {\n const moduleName = getModuleName(agentProjectConfig);\n const agentNameSnakeCase = toSnakeCase(agentName);\n const agentTargetPrefix = targetComponent?.name ? agentName : 'agent';\n\n // Add OpenAPI spec generation script scoped to this agent\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files/agent'),\n agentProjectConfig.root,\n {\n moduleName,\n agentNameSnakeCase,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n // Instrument the OpenAPI spec generation as a target on the agent project\n const openApiTargetName = `${agentTargetPrefix}-openapi`;\n const openApiDist = joinPathFragments(\n 'dist',\n agentProjectConfig.root,\n 'openapi',\n agentNameSnakeCase,\n );\n const specPath = joinPathFragments(openApiDist, 'openapi.json');\n\n updateProjectConfiguration(tree, agentProjectConfig.name, {\n ...agentProjectConfig,\n targets: sortObjectKeys({\n ...agentProjectConfig.targets,\n [openApiTargetName]: {\n cache: true,\n executor: 'nx:run-commands',\n outputs: [\n `{workspaceRoot}/dist/{projectRoot}/openapi/${agentNameSnakeCase}`,\n ],\n options: {\n commands: [\n `uv run python {projectRoot}/scripts/${agentNameSnakeCase}_openapi.py \"dist/{projectRoot}/openapi/${agentNameSnakeCase}/openapi.json\"`,\n ],\n },\n },\n }),\n });\n\n // Use the shared OpenAPI react client utility for hooks, providers, and build targets.\n // The dev target is handled separately below using the agent-specific dev target.\n await addOpenApiReactClient(\n tree,\n {\n apiName: agentNameClassName,\n frontendProjectConfig,\n backendProjectConfig: agentProjectConfig,\n specBuildProject: agentProjectConfig,\n specPath,\n specBuildTargetName: `${agentProjectConfig.name}:${openApiTargetName}`,\n auth,\n port: agentPort,\n isAgentRuntime: true,\n gatewayRoute: options.gatewayRoute,\n skipLocalDev: true,\n },\n DEPENDENCIES,\n );\n\n additionalLocalDevDeps = openApiClientLocalDevDeps(agentNameClassName);\n\n // HTTP only — the AG-UI branch handles this inside addAgUiReactConnection.\n // Agent constructs publish their runtime ARN to the 'agentcore' namespace\n // by default, which isn't exposed to the website; patch them to also\n // publish under 'connection' so the browser can read it. When routing via\n // a gateway, the gateway publishes its own URL instead.\n if (!options.gatewayRoute) {\n await addAgentRuntimeToConnectionNamespace(tree, {\n agentNameKebabCase: kebabCase(agentNameClassName),\n agentNameClassName,\n });\n }\n }\n\n if (options.gatewayRoute) {\n // The gateway react-connection wires the website's dev target to the\n // local gateway (which proxies to the agent); only the OpenAPI client\n // generation targets are still needed here.\n if (additionalLocalDevDeps.length > 0) {\n const websiteConfig = readProjectConfigurationUnqualified(\n tree,\n frontendProjectConfig.name,\n );\n if (websiteConfig.targets?.['dev']) {\n for (const additional of additionalLocalDevDeps) {\n addDependencyToTargetIfNotPresent(websiteConfig, 'dev', additional);\n }\n updateProjectConfiguration(tree, websiteConfig.name, websiteConfig);\n }\n }\n } else {\n await addPyAgentTargetToLocalDev(\n tree,\n frontendProjectConfig.name,\n agentProjectConfig.name,\n {\n agentName,\n agentNameClassName,\n port: agentPort,\n targetComponent,\n additionalDependencyTargets: additionalLocalDevDeps,\n },\n );\n }\n\n // Recorded so the version sync knows this connection's dependencies are ours.\n addComponentGeneratorMetadata(\n tree,\n frontendProjectConfig.name,\n PY_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n toProjectRelativePath(\n frontendProjectConfig,\n protocol === 'ag-ui'\n ? joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'hooks',\n `useAgui${agentNameClassName}`,\n )\n : joinPathFragments(\n frontendProjectConfig.sourceRoot,\n 'components',\n `${agentNameClassName}Provider`,\n ),\n ),\n agentNameClassName,\n connectionMetadata,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n PY_AGENT_REACT_CONNECTION_GENERATOR_INFO,\n ]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\n/**\n * Determine the Python module name from the project configuration\n */\nconst getModuleName = (\n projectConfig: ReturnType<typeof readProjectConfigurationUnqualified>,\n): string => {\n if (projectConfig.sourceRoot) {\n const sourceRootParts = projectConfig.sourceRoot.split('/');\n return sourceRootParts[sourceRootParts.length - 1];\n }\n throw new Error(\n `Could not determine sourceRoot for project ${projectConfig.name}`,\n );\n};\n\nexport default pyAgentReactConnectionGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","addAgentRuntimeToConnectionNamespace","DEPENDENCIES","AGUI_DEPENDENCIES","addAgUiReactConnection","resolveAgUiTheme","addOpenApiReactClient","OPEN_API_REACT_DEPENDENCIES","declareDependencies","onlyWhen","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","kebabCase","toClassName","toSnakeCase","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","sortObjectKeys","toProjectRelativePath","addPyAgentTargetToLocalDev","openApiClientLocalDevDeps","isHttp","m","protocol","isAgUi","ts","PY_AGENT_REACT_CONNECTION_GENERATOR_INFO","filename","pyAgentReactConnectionGenerator","tree","options","frontendProjectConfig","sourceProject","agentProjectConfig","targetProject","targetComponent","metadata","agentName","name","agentNameClassName","rc","agentPort","port","ports","auth","gatewayRoute","gatewayAuth","toLowerCase","connectionMetadata","theme","Error","additionalLocalDevDeps","moduleName","getModuleName","agentNameSnakeCase","agentTargetPrefix","dirname","root","overwriteStrategy","KeepExisting","openApiTargetName","openApiDist","specPath","targets","cache","executor","outputs","commands","apiName","backendProjectConfig","specBuildProject","specBuildTargetName","isAgentRuntime","skipLocalDev","agentNameKebabCase","length","websiteConfig","additional","additionalDependencyTargets","sourceRoot","preferInstallDependencies","languages","projectConfig","sourceRootParts","split"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import type { Tree } from '@nx/devkit';
|
|
6
|
-
import type { ComponentMetadata } from '../../../utils/nx';
|
|
6
|
+
import type { ComponentMetadata } from '../../../utils/nx.js';
|
|
7
7
|
export interface PyAgentLocalDevOptions {
|
|
8
8
|
agentName: string;
|
|
9
9
|
agentNameClassName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/agent/react-connection/local-dev.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { addAgentTargetToLocalDev } from '../../../connection/agent-local-dev';\nimport { kebabCase } from '../../../utils/names';\nimport type { ComponentMetadata } from '../../../utils/nx';\n\nexport interface PyAgentLocalDevOptions {\n agentName: string;\n agentNameClassName: string;\n port: number;\n targetComponent?: ComponentMetadata;\n additionalDependencyTargets?: string[];\n}\n\n/**\n * Adds the given py strands agent target project to the source project's dev target.\n * Updates the runtime config provider (if it exists) to point to the local HTTP URL.\n */\nexport const addPyAgentTargetToLocalDev = async (\n tree: Tree,\n sourceProjectName: string,\n targetProjectName: string,\n options: PyAgentLocalDevOptions,\n) => {\n // AG-UI clients POST to the runtime config URL directly, so it must point at\n // the agent's `/invocations` endpoint. HTTP agents go through the generated\n // OpenAPI client, which appends the `/invocations` operation path itself, so\n // its base URL must omit it (otherwise the request hits `/invocations/invocations`).\n const protocol = (options.targetComponent?.protocol ?? 'http').toLowerCase();\n const localUrl =\n protocol === 'ag-ui'\n ? `http://localhost:${options.port}/invocations`\n : `http://localhost:${options.port}`;\n\n await addAgentTargetToLocalDev(tree, sourceProjectName, targetProjectName, {\n agentNameClassName: options.agentNameClassName,\n port: options.port,\n targetComponent: options.targetComponent,\n runtimeConfigNamespace: 'agentRuntimes',\n localUrl,\n additionalDependencyTargets: options.additionalDependencyTargets,\n });\n};\n\n/**\n * Build the OpenAPI client generation target names for an HTTP agent so\n * that local API changes regenerate the client.\n */\nexport const openApiClientLocalDevDeps = (\n agentNameClassName: string,\n): string[] => {\n const clientGenTarget = `generate:${kebabCase(agentNameClassName)}-client`;\n return [clientGenTarget, `watch-${clientGenTarget}`];\n};\n"],"names":["addAgentTargetToLocalDev","kebabCase","addPyAgentTargetToLocalDev","tree","sourceProjectName","targetProjectName","options","protocol","targetComponent","toLowerCase","localUrl","port","agentNameClassName","runtimeConfigNamespace","additionalDependencyTargets","openApiClientLocalDevDeps","clientGenTarget"],"mappings":"AAAA;;;CAGC,GAED,SAASA,wBAAwB,QAAQ,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/agent/react-connection/local-dev.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { addAgentTargetToLocalDev } from '../../../connection/agent-local-dev.js';\nimport { kebabCase } from '../../../utils/names.js';\nimport type { ComponentMetadata } from '../../../utils/nx.js';\n\nexport interface PyAgentLocalDevOptions {\n agentName: string;\n agentNameClassName: string;\n port: number;\n targetComponent?: ComponentMetadata;\n additionalDependencyTargets?: string[];\n}\n\n/**\n * Adds the given py strands agent target project to the source project's dev target.\n * Updates the runtime config provider (if it exists) to point to the local HTTP URL.\n */\nexport const addPyAgentTargetToLocalDev = async (\n tree: Tree,\n sourceProjectName: string,\n targetProjectName: string,\n options: PyAgentLocalDevOptions,\n) => {\n // AG-UI clients POST to the runtime config URL directly, so it must point at\n // the agent's `/invocations` endpoint. HTTP agents go through the generated\n // OpenAPI client, which appends the `/invocations` operation path itself, so\n // its base URL must omit it (otherwise the request hits `/invocations/invocations`).\n const protocol = (options.targetComponent?.protocol ?? 'http').toLowerCase();\n const localUrl =\n protocol === 'ag-ui'\n ? `http://localhost:${options.port}/invocations`\n : `http://localhost:${options.port}`;\n\n await addAgentTargetToLocalDev(tree, sourceProjectName, targetProjectName, {\n agentNameClassName: options.agentNameClassName,\n port: options.port,\n targetComponent: options.targetComponent,\n runtimeConfigNamespace: 'agentRuntimes',\n localUrl,\n additionalDependencyTargets: options.additionalDependencyTargets,\n });\n};\n\n/**\n * Build the OpenAPI client generation target names for an HTTP agent so\n * that local API changes regenerate the client.\n */\nexport const openApiClientLocalDevDeps = (\n agentNameClassName: string,\n): string[] => {\n const clientGenTarget = `generate:${kebabCase(agentNameClassName)}-client`;\n return [clientGenTarget, `watch-${clientGenTarget}`];\n};\n"],"names":["addAgentTargetToLocalDev","kebabCase","addPyAgentTargetToLocalDev","tree","sourceProjectName","targetProjectName","options","protocol","targetComponent","toLowerCase","localUrl","port","agentNameClassName","runtimeConfigNamespace","additionalDependencyTargets","openApiClientLocalDevDeps","clientGenTarget"],"mappings":"AAAA;;;CAGC,GAED,SAASA,wBAAwB,QAAQ,yCAAyC;AAClF,SAASC,SAAS,QAAQ,0BAA0B;AAWpD;;;CAGC,GACD,OAAO,MAAMC,6BAA6B,OACxCC,MACAC,mBACAC,mBACAC;IAEA,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,qFAAqF;IACrF,MAAMC,WAAW,AAACD,CAAAA,QAAQE,eAAe,EAAED,YAAY,MAAK,EAAGE,WAAW;IAC1E,MAAMC,WACJH,aAAa,UACT,CAAC,iBAAiB,EAAED,QAAQK,IAAI,CAAC,YAAY,CAAC,GAC9C,CAAC,iBAAiB,EAAEL,QAAQK,IAAI,EAAE;IAExC,MAAMX,yBAAyBG,MAAMC,mBAAmBC,mBAAmB;QACzEO,oBAAoBN,QAAQM,kBAAkB;QAC9CD,MAAML,QAAQK,IAAI;QAClBH,iBAAiBF,QAAQE,eAAe;QACxCK,wBAAwB;QACxBH;QACAI,6BAA6BR,QAAQQ,2BAA2B;IAClE;AACF,EAAE;AAEF;;;CAGC,GACD,OAAO,MAAMC,4BAA4B,CACvCH;IAEA,MAAMI,kBAAkB,CAAC,SAAS,EAAEf,UAAUW,oBAAoB,OAAO,CAAC;IAC1E,OAAO;QAACI;QAAiB,CAAC,MAAM,EAAEA,iBAAiB;KAAC;AACtD,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/agent/react-connection/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ComponentMetadata } from '../../../utils/nx';\n\n/**\n * TypeScript types for options defined in schema.json\n */\nexport interface PyAgentReactConnectionGeneratorSchema {\n sourceProject: string;\n targetProject: string;\n sourceComponent?: ComponentMetadata;\n targetComponent?: ComponentMetadata;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD;;CAEC,GACD,WAMC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/agent/react-connection/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ComponentMetadata } from '../../../utils/nx.js';\n\n/**\n * TypeScript types for options defined in schema.json\n */\nexport interface PyAgentReactConnectionGeneratorSchema {\n sourceProject: string;\n targetProject: string;\n sourceComponent?: ComponentMetadata;\n targetComponent?: ComponentMetadata;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD;;CAEC,GACD,WAMC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { ComponentMetadata } from '../../../utils/nx';
|
|
5
|
+
import { ComponentMetadata } from '../../../utils/nx.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* TypeScript types for options defined in schema.json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/agent/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\nexport type PyAgentFramework = 'strands' | 'langchain';\nexport type PyAgentInfra = 'agentcore' | 'none';\nexport type AgentProtocol = 'http' | 'a2a' | 'ag-ui';\n\nexport type PyAgentAuth = 'iam' | 'cognito';\n\nexport type PyAgentSession = 's3' | 'dynamodb-s3' | 'in-memory';\n\nexport interface PyAgentGeneratorSchema {\n project: string;\n framework?: PyAgentFramework;\n name?: string;\n infra?: PyAgentInfra;\n auth?: PyAgentAuth;\n protocol?: AgentProtocol;\n session?: PyAgentSession;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAYD,WAUC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/agent/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.js';\n\nexport type PyAgentFramework = 'strands' | 'langchain';\nexport type PyAgentInfra = 'agentcore' | 'none';\nexport type AgentProtocol = 'http' | 'a2a' | 'ag-ui';\n\nexport type PyAgentAuth = 'iam' | 'cognito';\n\nexport type PyAgentSession = 's3' | 'dynamodb-s3' | 'in-memory';\n\nexport interface PyAgentGeneratorSchema {\n project: string;\n framework?: PyAgentFramework;\n name?: string;\n infra?: PyAgentInfra;\n auth?: PyAgentAuth;\n protocol?: AgentProtocol;\n session?: PyAgentSession;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAYD,WAUC"}
|
package/src/py/agent/schema.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import type { Tree } from '@nx/devkit';
|
|
6
|
-
import { type NxGeneratorInfo } from '../../utils/nx';
|
|
6
|
+
import { type NxGeneratorInfo } from '../../utils/nx.js';
|
|
7
7
|
import type { PyApiGeneratorSchema } from './schema';
|
|
8
8
|
export declare const PY_API_GENERATOR_INFO: NxGeneratorInfo;
|
|
9
9
|
export declare function pyApiGenerator(tree: Tree, options: PyApiGeneratorSchema): Promise<import("@nx/devkit").GeneratorCallback>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/api/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../utils/nx';\nimport { pyFastApiProjectGenerator } from '../fast-api/generator';\nimport type { PyApiGeneratorSchema } from './schema';\n\nexport const PY_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function pyApiGenerator(\n tree: Tree,\n options: PyApiGeneratorSchema,\n) {\n const framework = options.framework ?? 'fastapi';\n\n switch (framework) {\n case 'fastapi':\n return pyFastApiProjectGenerator(tree, {\n name: options.name,\n infra: options.infra,\n integrationPattern: options.integrationPattern,\n auth: options.auth,\n directory: options.directory,\n subDirectory: options.subDirectory,\n moduleName: options.moduleName,\n iac: options.iac,\n preferInstallDependencies: options.preferInstallDependencies,\n });\n }\n}\n\nexport default pyApiGenerator;\n"],"names":["getGeneratorInfo","pyFastApiProjectGenerator","PY_API_GENERATOR_INFO","filename","pyApiGenerator","tree","options","framework","name","infra","integrationPattern","auth","directory","subDirectory","moduleName","iac","preferInstallDependencies"],"mappings":"AAAA;;;CAGC,GAED,SAASA,gBAAgB,QAA8B,
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/api/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { Tree } from '@nx/devkit';\nimport { getGeneratorInfo, type NxGeneratorInfo } from '../../utils/nx.js';\nimport { pyFastApiProjectGenerator } from '../fast-api/generator.js';\nimport type { PyApiGeneratorSchema } from './schema';\n\nexport const PY_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport async function pyApiGenerator(\n tree: Tree,\n options: PyApiGeneratorSchema,\n) {\n const framework = options.framework ?? 'fastapi';\n\n switch (framework) {\n case 'fastapi':\n return pyFastApiProjectGenerator(tree, {\n name: options.name,\n infra: options.infra,\n integrationPattern: options.integrationPattern,\n auth: options.auth,\n directory: options.directory,\n subDirectory: options.subDirectory,\n moduleName: options.moduleName,\n iac: options.iac,\n preferInstallDependencies: options.preferInstallDependencies,\n });\n }\n}\n\nexport default pyApiGenerator;\n"],"names":["getGeneratorInfo","pyFastApiProjectGenerator","PY_API_GENERATOR_INFO","filename","pyApiGenerator","tree","options","framework","name","infra","integrationPattern","auth","directory","subDirectory","moduleName","iac","preferInstallDependencies"],"mappings":"AAAA;;;CAGC,GAED,SAASA,gBAAgB,QAA8B,oBAAoB;AAC3E,SAASC,yBAAyB,QAAQ,2BAA2B;AAGrE,OAAO,MAAMC,wBAAyCF,iBACpD,YAAYG,QAAQ,EACpB;AAEF,OAAO,eAAeC,eACpBC,IAAU,EACVC,OAA6B;IAE7B,MAAMC,YAAYD,QAAQC,SAAS,IAAI;IAEvC,OAAQA;QACN,KAAK;YACH,OAAON,0BAA0BI,MAAM;gBACrCG,MAAMF,QAAQE,IAAI;gBAClBC,OAAOH,QAAQG,KAAK;gBACpBC,oBAAoBJ,QAAQI,kBAAkB;gBAC9CC,MAAML,QAAQK,IAAI;gBAClBC,WAAWN,QAAQM,SAAS;gBAC5BC,cAAcP,QAAQO,YAAY;gBAClCC,YAAYR,QAAQQ,UAAU;gBAC9BC,KAAKT,QAAQS,GAAG;gBAChBC,2BAA2BV,QAAQU,yBAAyB;YAC9D;IACJ;AACF;AAEA,eAAeZ,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/api/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../utils/iac';\n\nexport interface PyApiGeneratorSchema {\n readonly name: string;\n readonly framework?: 'fastapi';\n readonly infra: 'rest-lambda' | 'http-lambda' | 'none';\n readonly integrationPattern?: 'isolated' | 'shared';\n readonly auth: 'iam' | 'cognito' | 'custom';\n readonly directory?: string;\n readonly subDirectory?: string;\n readonly moduleName?: string;\n readonly iac: IacOption;\n readonly preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WAWC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/api/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../utils/iac.js';\n\nexport interface PyApiGeneratorSchema {\n readonly name: string;\n readonly framework?: 'fastapi';\n readonly infra: 'rest-lambda' | 'http-lambda' | 'none';\n readonly integrationPattern?: 'isolated' | 'shared';\n readonly auth: 'iam' | 'cognito' | 'custom';\n readonly directory?: string;\n readonly subDirectory?: string;\n readonly moduleName?: string;\n readonly iac: IacOption;\n readonly preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WAWC"}
|
package/src/py/api/schema.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { IacOption } from '../../utils/iac';
|
|
5
|
+
import { IacOption } from '../../utils/iac.js';
|
|
6
6
|
|
|
7
7
|
export interface PyApiGeneratorSchema {
|
|
8
8
|
readonly name: string;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type GeneratorCallback, type Tree } from '@nx/devkit';
|
|
6
|
-
import { type NxGeneratorInfo } from '../../../utils/nx';
|
|
6
|
+
import { type NxGeneratorInfo } from '../../../utils/nx.js';
|
|
7
7
|
import type { PyDynamoDBAgentConnectionGeneratorSchema } from './schema';
|
|
8
8
|
export declare const PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo;
|
|
9
9
|
export declare const pyDynamoDBAgentConnectionGenerator: (tree: Tree, options: PyDynamoDBAgentConnectionGeneratorSchema) => Promise<GeneratorCallback>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/agent-connection/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 type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport {\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { addWorkspaceDependencyToPyProject } from '../../../utils/py';\nimport type { PyDynamoDBAgentConnectionGeneratorSchema } from './schema';\n\nexport const PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const pyDynamoDBAgentConnectionGenerator = async (\n tree: Tree,\n options: PyDynamoDBAgentConnectionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const sourceProject = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const targetProject = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n addWorkspaceDependencyToPyProject(tree, sourceProject, targetProject);\n\n const agentName = options.sourceComponent?.name ?? 'agent';\n const devTarget = `${agentName}-dev`;\n\n if (sourceProject.targets?.[devTarget]) {\n addDependencyToTargetIfNotPresent(sourceProject, devTarget, {\n projects: [targetProject.name],\n target: 'dev',\n });\n updateProjectConfiguration(tree, sourceProject.name, sourceProject);\n }\n\n // Recorded so the version sync can identify this connection.\n addComponentGeneratorMetadata(\n tree,\n sourceProject.name,\n PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO,\n targetProject.root,\n `${agentName}-${targetProject.name}`,\n // The source component this connection is made from, so the pair is\n // identifiable rather than just the two projects.\n { sourcePath: options.sourceComponent?.path },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO,\n ]);\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nexport default pyDynamoDBAgentConnectionGenerator;\n"],"names":["updateProjectConfiguration","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","addWorkspaceDependencyToPyProject","PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO","filename","pyDynamoDBAgentConnectionGenerator","tree","options","sourceProject","targetProject","agentName","sourceComponent","name","devTarget","targets","projects","target","root","sourcePath","path","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SAGEA,0BAA0B,QACrB,aAAa;AACpB,SAASC,oBAAoB,QAAQ,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/agent-connection/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 type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { installDependencies } from '../../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics.js';\nimport {\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx.js';\nimport { addWorkspaceDependencyToPyProject } from '../../../utils/py.js';\nimport type { PyDynamoDBAgentConnectionGeneratorSchema } from './schema';\n\nexport const PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const pyDynamoDBAgentConnectionGenerator = async (\n tree: Tree,\n options: PyDynamoDBAgentConnectionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const sourceProject = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const targetProject = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n addWorkspaceDependencyToPyProject(tree, sourceProject, targetProject);\n\n const agentName = options.sourceComponent?.name ?? 'agent';\n const devTarget = `${agentName}-dev`;\n\n if (sourceProject.targets?.[devTarget]) {\n addDependencyToTargetIfNotPresent(sourceProject, devTarget, {\n projects: [targetProject.name],\n target: 'dev',\n });\n updateProjectConfiguration(tree, sourceProject.name, sourceProject);\n }\n\n // Recorded so the version sync can identify this connection.\n addComponentGeneratorMetadata(\n tree,\n sourceProject.name,\n PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO,\n targetProject.root,\n `${agentName}-${targetProject.name}`,\n // The source component this connection is made from, so the pair is\n // identifiable rather than just the two projects.\n { sourcePath: options.sourceComponent?.path },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO,\n ]);\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nexport default pyDynamoDBAgentConnectionGenerator;\n"],"names":["updateProjectConfiguration","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","addWorkspaceDependencyToPyProject","PY_DYNAMODB_AGENT_CONNECTION_GENERATOR_INFO","filename","pyDynamoDBAgentConnectionGenerator","tree","options","sourceProject","targetProject","agentName","sourceComponent","name","devTarget","targets","projects","target","root","sourcePath","path","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SAGEA,0BAA0B,QACrB,aAAa;AACpB,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,mBAAmB,QAAQ,4BAA4B;AAChE,SAASC,+BAA+B,QAAQ,4BAA4B;AAC5E,SACEC,6BAA6B,EAC7BC,iCAAiC,EACjCC,gBAAgB,EAEhBC,mCAAmC,QAC9B,uBAAuB;AAC9B,SAASC,iCAAiC,QAAQ,uBAAuB;AAGzE,OAAO,MAAMC,8CACXH,iBAAiB,YAAYI,QAAQ,EAAE;AAEzC,OAAO,MAAMC,qCAAqC,OAChDC,MACAC;IAEA,MAAMC,gBAAgBP,oCACpBK,MACAC,QAAQC,aAAa;IAEvB,MAAMC,gBAAgBR,oCACpBK,MACAC,QAAQE,aAAa;IAGvBP,kCAAkCI,MAAME,eAAeC;IAEvD,MAAMC,YAAYH,QAAQI,eAAe,EAAEC,QAAQ;IACnD,MAAMC,YAAY,GAAGH,UAAU,IAAI,CAAC;IAEpC,IAAIF,cAAcM,OAAO,EAAE,CAACD,UAAU,EAAE;QACtCd,kCAAkCS,eAAeK,WAAW;YAC1DE,UAAU;gBAACN,cAAcG,IAAI;aAAC;YAC9BI,QAAQ;QACV;QACAtB,2BAA2BY,MAAME,cAAcI,IAAI,EAAEJ;IACvD;IAEA,6DAA6D;IAC7DV,8BACEQ,MACAE,cAAcI,IAAI,EAClBT,6CACAM,cAAcQ,IAAI,EAClB,GAAGP,UAAU,CAAC,EAAED,cAAcG,IAAI,EAAE,EACpC,oEAAoE;IACpE,kDAAkD;IAClD;QAAEM,YAAYX,QAAQI,eAAe,EAAEQ;IAAK;IAG9C,MAAMtB,gCAAgCS,MAAM;QAC1CH;KACD;IACD,MAAMR,qBAAqBW;IAC3B,OAAO,IACLV,oBAAoBU,MAAMC,QAAQa,yBAAyB,EAAE;YAC3DC,WAAW;gBAAC;gBAAc;aAAS;QACrC;AACJ,EAAE;AAEF,eAAehB,mCAAmC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/agent-connection/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ComponentMetadata } from '../../../utils/nx';\n\n/**\n * TypeScript types for options defined in schema.json\n */\nexport interface PyDynamoDBAgentConnectionGeneratorSchema {\n sourceProject: string;\n targetProject: string;\n sourceComponent?: ComponentMetadata;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD;;CAEC,GACD,WAKC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/agent-connection/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ComponentMetadata } from '../../../utils/nx.js';\n\n/**\n * TypeScript types for options defined in schema.json\n */\nexport interface PyDynamoDBAgentConnectionGeneratorSchema {\n sourceProject: string;\n targetProject: string;\n sourceComponent?: ComponentMetadata;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD;;CAEC,GACD,WAKC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { ComponentMetadata } from '../../../utils/nx';
|
|
5
|
+
import { ComponentMetadata } from '../../../utils/nx.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* TypeScript types for options defined in schema.json
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type GeneratorCallback, type Tree } from '@nx/devkit';
|
|
6
|
-
import { type NxGeneratorInfo } from '../../../utils/nx';
|
|
6
|
+
import { type NxGeneratorInfo } from '../../../utils/nx.js';
|
|
7
7
|
import type { PyDynamoDBFastApiConnectionGeneratorSchema } from './schema';
|
|
8
8
|
export declare const PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO: NxGeneratorInfo;
|
|
9
9
|
export declare const pyDynamoDBFastApiConnectionGenerator: (tree: Tree, options: PyDynamoDBFastApiConnectionGeneratorSchema) => Promise<GeneratorCallback>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/fast-api-connection/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 type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport {\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { addWorkspaceDependencyToPyProject } from '../../../utils/py';\nimport type { PyDynamoDBFastApiConnectionGeneratorSchema } from './schema';\n\nexport const PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const pyDynamoDBFastApiConnectionGenerator = async (\n tree: Tree,\n options: PyDynamoDBFastApiConnectionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const sourceProject = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const targetProject = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n addWorkspaceDependencyToPyProject(tree, sourceProject, targetProject);\n\n if (sourceProject.targets?.['dev']) {\n addDependencyToTargetIfNotPresent(sourceProject, 'dev', {\n projects: [targetProject.name],\n target: 'dev',\n });\n updateProjectConfiguration(tree, sourceProject.name, sourceProject);\n }\n\n // Recorded so the version sync can identify this connection.\n addComponentGeneratorMetadata(\n tree,\n sourceProject.name,\n PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO,\n targetProject.root,\n targetProject.name,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO,\n ]);\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nexport default pyDynamoDBFastApiConnectionGenerator;\n"],"names":["updateProjectConfiguration","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","addWorkspaceDependencyToPyProject","PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO","filename","pyDynamoDBFastApiConnectionGenerator","tree","options","sourceProject","targetProject","targets","projects","name","target","root","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SAGEA,0BAA0B,QACrB,aAAa;AACpB,SAASC,oBAAoB,QAAQ,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/fast-api-connection/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 type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { installDependencies } from '../../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics.js';\nimport {\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx.js';\nimport { addWorkspaceDependencyToPyProject } from '../../../utils/py.js';\nimport type { PyDynamoDBFastApiConnectionGeneratorSchema } from './schema';\n\nexport const PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const pyDynamoDBFastApiConnectionGenerator = async (\n tree: Tree,\n options: PyDynamoDBFastApiConnectionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const sourceProject = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const targetProject = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n addWorkspaceDependencyToPyProject(tree, sourceProject, targetProject);\n\n if (sourceProject.targets?.['dev']) {\n addDependencyToTargetIfNotPresent(sourceProject, 'dev', {\n projects: [targetProject.name],\n target: 'dev',\n });\n updateProjectConfiguration(tree, sourceProject.name, sourceProject);\n }\n\n // Recorded so the version sync can identify this connection.\n addComponentGeneratorMetadata(\n tree,\n sourceProject.name,\n PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO,\n targetProject.root,\n targetProject.name,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO,\n ]);\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nexport default pyDynamoDBFastApiConnectionGenerator;\n"],"names":["updateProjectConfiguration","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","addWorkspaceDependencyToPyProject","PY_DYNAMODB_FAST_API_CONNECTION_GENERATOR_INFO","filename","pyDynamoDBFastApiConnectionGenerator","tree","options","sourceProject","targetProject","targets","projects","name","target","root","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SAGEA,0BAA0B,QACrB,aAAa;AACpB,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,mBAAmB,QAAQ,4BAA4B;AAChE,SAASC,+BAA+B,QAAQ,4BAA4B;AAC5E,SACEC,6BAA6B,EAC7BC,iCAAiC,EACjCC,gBAAgB,EAEhBC,mCAAmC,QAC9B,uBAAuB;AAC9B,SAASC,iCAAiC,QAAQ,uBAAuB;AAGzE,OAAO,MAAMC,iDACXH,iBAAiB,YAAYI,QAAQ,EAAE;AAEzC,OAAO,MAAMC,uCAAuC,OAClDC,MACAC;IAEA,MAAMC,gBAAgBP,oCACpBK,MACAC,QAAQC,aAAa;IAEvB,MAAMC,gBAAgBR,oCACpBK,MACAC,QAAQE,aAAa;IAGvBP,kCAAkCI,MAAME,eAAeC;IAEvD,IAAID,cAAcE,OAAO,EAAE,CAAC,MAAM,EAAE;QAClCX,kCAAkCS,eAAe,OAAO;YACtDG,UAAU;gBAACF,cAAcG,IAAI;aAAC;YAC9BC,QAAQ;QACV;QACAnB,2BAA2BY,MAAME,cAAcI,IAAI,EAAEJ;IACvD;IAEA,6DAA6D;IAC7DV,8BACEQ,MACAE,cAAcI,IAAI,EAClBT,gDACAM,cAAcK,IAAI,EAClBL,cAAcG,IAAI;IAGpB,MAAMf,gCAAgCS,MAAM;QAC1CH;KACD;IACD,MAAMR,qBAAqBW;IAC3B,OAAO,IACLV,oBAAoBU,MAAMC,QAAQQ,yBAAyB,EAAE;YAC3DC,WAAW;gBAAC;gBAAc;aAAS;QACrC;AACJ,EAAE;AAEF,eAAeX,qCAAqC"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type GeneratorCallback, type Tree } from '@nx/devkit';
|
|
6
|
-
import { type NxGeneratorInfo } from '../../utils/nx';
|
|
6
|
+
import { type NxGeneratorInfo } from '../../utils/nx.js';
|
|
7
7
|
import type { PyDynamoDBGeneratorSchema } from './schema';
|
|
8
|
-
export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
|
|
8
|
+
export declare const DEPENDENCIES: import("../../utils/declared-dependencies.js").DependencyDeclaration<readonly [{
|
|
9
9
|
readonly name: "@aws-sdk/client-dynamodb";
|
|
10
10
|
} & {
|
|
11
11
|
versionOnly: true;
|
|
@@ -15,12 +15,12 @@ export declare const DEPENDENCIES: import("../../utils/declared-dependencies").D
|
|
|
15
15
|
versionOnly: true;
|
|
16
16
|
}, {
|
|
17
17
|
readonly name: "constructs";
|
|
18
|
-
readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
|
|
18
|
+
readonly when: (m: import("../../utils/shared-constructs-constants.js").IacMetadata) => boolean;
|
|
19
19
|
} & {
|
|
20
20
|
versionOnly: true;
|
|
21
21
|
}, {
|
|
22
22
|
readonly name: "aws-cdk-lib";
|
|
23
|
-
readonly when: (m: import("../../utils/shared-constructs-constants").IacMetadata) => boolean;
|
|
23
|
+
readonly when: (m: import("../../utils/shared-constructs-constants.js").IacMetadata) => boolean;
|
|
24
24
|
} & {
|
|
25
25
|
versionOnly: true;
|
|
26
26
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/dynamodb/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { relative } from 'node:path';\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addPyDependencies } from '../../utils/add-dependencies';\nimport { resolveContainers } from '../../utils/containers';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies';\nimport { addDynamoDBInfra } from '../../utils/dynamodb-constructs/dynamodb-constructs';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { resolveIac } from '../../utils/iac';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { kebabCase, toClassName } from '../../utils/names';\nimport { getNpmScope } from '../../utils/npm-scope';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx';\nimport { assignSharedPort } from '../../utils/port';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs';\nimport {\n DYNAMODB_GENERATOR_IDS,\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from '../../utils/shared-constructs-constants';\nimport {\n SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES,\n sharedDynamoDBScriptsGenerator,\n} from '../../utils/shared-dynamodb-scripts';\nimport pyProjectGenerator, {
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/dynamodb/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { relative } from 'node:path';\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addPyDependencies } from '../../utils/add-dependencies.js';\nimport { resolveContainers } from '../../utils/containers.js';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies.js';\nimport { addDynamoDBInfra } from '../../utils/dynamodb-constructs/dynamodb-constructs.js';\nimport { formatFilesInSubtree } from '../../utils/format.js';\nimport { resolveIac } from '../../utils/iac.js';\nimport { installDependencies } from '../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics.js';\nimport { kebabCase, toClassName } from '../../utils/names.js';\nimport { getNpmScope } from '../../utils/npm-scope.js';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n projectExists,\n} from '../../utils/nx.js';\nimport { assignSharedPort } from '../../utils/port.js';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs.js';\nimport {\n DYNAMODB_GENERATOR_IDS,\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from '../../utils/shared-constructs-constants.js';\nimport {\n SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES,\n sharedDynamoDBScriptsGenerator,\n} from '../../utils/shared-dynamodb-scripts.js';\nimport pyProjectGenerator, {\n getPyProjectDetails,\n} from '../project/generator.js';\nimport type { PyDynamoDBGeneratorSchema } from './schema';\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [\n ...ownedElsewhere(SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ],\n py: [\n { name: 'pynamodb' },\n { name: 'boto3' },\n { name: 'aws-lambda-powertools' },\n ],\n});\n\nexport const PY_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const pyDynamoDBGenerator = async (\n tree: Tree,\n options: PyDynamoDBGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const nameClassName = toClassName(options.name);\n const localTableName = `${getNpmScope(tree)}-${kebabCase(options.tableName ?? options.name)}`;\n const containerEngine = await resolveContainers(tree, 'inherit');\n const { fullyQualifiedName, dir, normalizedModuleName } = getPyProjectDetails(\n tree,\n {\n name: options.name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n },\n );\n\n if (!projectExists(tree, fullyQualifiedName)) {\n await pyProjectGenerator(tree, {\n name: options.name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n type: 'library',\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n\n const localDynamoDBPort = assignSharedPort(\n tree,\n projectConfig,\n DYNAMODB_GENERATOR_IDS,\n 8000,\n );\n\n const containerName = `${getNpmScope(tree)}-dynamodb`;\n\n const templateOptions = {\n name: normalizedModuleName,\n runtimeConfigKey: nameClassName,\n localDynamoDBPort,\n localTableName,\n containerName,\n containerEngine,\n };\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files'),\n dir,\n templateOptions,\n );\n\n await sharedDynamoDBScriptsGenerator(tree, DEPENDENCIES);\n\n const scriptsDir = relative(\n dir,\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'src', 'dynamodb'),\n );\n\n projectConfig.targets['pull-image'] = {\n executor: 'nx:run-commands',\n options: {\n command: `tsx ${scriptsDir}/pull-image.ts`,\n cwd: '{projectRoot}',\n },\n };\n projectConfig.targets['dev'] = {\n executor: 'nx:run-commands',\n continuous: true,\n dependsOn: ['pull-image'],\n options: {\n commands: [\n `tsx ${scriptsDir}/start-container.ts`,\n `tsx ${scriptsDir}/create-local-table.ts`,\n ],\n parallel: true,\n cwd: '{projectRoot}',\n },\n };\n\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);\n // Recorded so the version sync can tell a CDK project from a Terraform one;\n // undefined when no infrastructure was generated.\n const iac =\n options.infra !== 'none' ? await resolveIac(tree, options.iac) : undefined;\n\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n PY_DYNAMODB_GENERATOR_INFO,\n iac ? { iac } : {},\n );\n\n if (options.infra !== 'none') {\n await sharedConstructsGenerator(tree, { iac }, DEPENDENCIES);\n await addDynamoDBInfra(tree, {\n iac,\n projectName: fullyQualifiedName,\n nameClassName,\n nameKebabCase: kebabCase(options.name),\n tableName: localTableName,\n projectRoot: dir,\n });\n }\n\n addPyDependencies(tree, DEPENDENCIES, { projectRoot: dir });\n\n await addGeneratorMetricsIfApplicable(tree, [PY_DYNAMODB_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nexport default pyDynamoDBGenerator;\n"],"names":["relative","generateFiles","joinPathFragments","readProjectConfiguration","updateProjectConfiguration","addPyDependencies","resolveContainers","declareDependencies","ownedElsewhere","addDynamoDBInfra","formatFilesInSubtree","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","kebabCase","toClassName","getNpmScope","addGeneratorMetadata","getGeneratorInfo","projectExists","assignSharedPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","DYNAMODB_GENERATOR_IDS","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES","sharedDynamoDBScriptsGenerator","pyProjectGenerator","getPyProjectDetails","DEPENDENCIES","ts","py","name","PY_DYNAMODB_GENERATOR_INFO","filename","pyDynamoDBGenerator","tree","options","nameClassName","localTableName","tableName","containerEngine","fullyQualifiedName","dir","normalizedModuleName","directory","subDirectory","type","preferInstallDependencies","projectConfig","localDynamoDBPort","containerName","templateOptions","runtimeConfigKey","dirname","scriptsDir","targets","executor","command","cwd","continuous","dependsOn","commands","parallel","iac","infra","undefined","projectName","nameKebabCase","projectRoot","languages"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type GeneratorCallback, type Tree } from '@nx/devkit';
|
|
6
|
-
import { type NxGeneratorInfo } from '../../../utils/nx';
|
|
6
|
+
import { type NxGeneratorInfo } from '../../../utils/nx.js';
|
|
7
7
|
import type { PyDynamoDBMcpServerConnectionGeneratorSchema } from './schema';
|
|
8
8
|
export declare const PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO: NxGeneratorInfo;
|
|
9
9
|
export declare const pyDynamoDBMcpServerConnectionGenerator: (tree: Tree, options: PyDynamoDBMcpServerConnectionGeneratorSchema) => Promise<GeneratorCallback>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/mcp-server-connection/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 type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { installDependencies } from '../../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport {\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport { addWorkspaceDependencyToPyProject } from '../../../utils/py';\nimport type { PyDynamoDBMcpServerConnectionGeneratorSchema } from './schema';\n\nexport const PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const pyDynamoDBMcpServerConnectionGenerator = async (\n tree: Tree,\n options: PyDynamoDBMcpServerConnectionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const sourceProject = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const targetProject = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n addWorkspaceDependencyToPyProject(tree, sourceProject, targetProject);\n\n const mcpServerName = options.sourceComponent?.name ?? 'mcp-server';\n const devTarget = `${mcpServerName}-dev`;\n\n if (sourceProject.targets?.[devTarget]) {\n addDependencyToTargetIfNotPresent(sourceProject, devTarget, {\n projects: [targetProject.name],\n target: 'dev',\n });\n updateProjectConfiguration(tree, sourceProject.name, sourceProject);\n }\n\n // Recorded so the version sync can identify this connection.\n addComponentGeneratorMetadata(\n tree,\n sourceProject.name,\n PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO,\n targetProject.root,\n `${mcpServerName}-${targetProject.name}`,\n // The source component this connection is made from, so the pair is\n // identifiable rather than just the two projects.\n { sourcePath: options.sourceComponent?.path },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO,\n ]);\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nexport default pyDynamoDBMcpServerConnectionGenerator;\n"],"names":["updateProjectConfiguration","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","addWorkspaceDependencyToPyProject","PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO","filename","pyDynamoDBMcpServerConnectionGenerator","tree","options","sourceProject","targetProject","mcpServerName","sourceComponent","name","devTarget","targets","projects","target","root","sourcePath","path","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SAGEA,0BAA0B,QACrB,aAAa;AACpB,SAASC,oBAAoB,QAAQ,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/mcp-server-connection/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 type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport { installDependencies } from '../../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics.js';\nimport {\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx.js';\nimport { addWorkspaceDependencyToPyProject } from '../../../utils/py.js';\nimport type { PyDynamoDBMcpServerConnectionGeneratorSchema } from './schema';\n\nexport const PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const pyDynamoDBMcpServerConnectionGenerator = async (\n tree: Tree,\n options: PyDynamoDBMcpServerConnectionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const sourceProject = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const targetProject = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n addWorkspaceDependencyToPyProject(tree, sourceProject, targetProject);\n\n const mcpServerName = options.sourceComponent?.name ?? 'mcp-server';\n const devTarget = `${mcpServerName}-dev`;\n\n if (sourceProject.targets?.[devTarget]) {\n addDependencyToTargetIfNotPresent(sourceProject, devTarget, {\n projects: [targetProject.name],\n target: 'dev',\n });\n updateProjectConfiguration(tree, sourceProject.name, sourceProject);\n }\n\n // Recorded so the version sync can identify this connection.\n addComponentGeneratorMetadata(\n tree,\n sourceProject.name,\n PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO,\n targetProject.root,\n `${mcpServerName}-${targetProject.name}`,\n // The source component this connection is made from, so the pair is\n // identifiable rather than just the two projects.\n { sourcePath: options.sourceComponent?.path },\n );\n\n await addGeneratorMetricsIfApplicable(tree, [\n PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO,\n ]);\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nexport default pyDynamoDBMcpServerConnectionGenerator;\n"],"names":["updateProjectConfiguration","formatFilesInSubtree","installDependencies","addGeneratorMetricsIfApplicable","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","addWorkspaceDependencyToPyProject","PY_DYNAMODB_MCP_SERVER_CONNECTION_GENERATOR_INFO","filename","pyDynamoDBMcpServerConnectionGenerator","tree","options","sourceProject","targetProject","mcpServerName","sourceComponent","name","devTarget","targets","projects","target","root","sourcePath","path","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SAGEA,0BAA0B,QACrB,aAAa;AACpB,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,mBAAmB,QAAQ,4BAA4B;AAChE,SAASC,+BAA+B,QAAQ,4BAA4B;AAC5E,SACEC,6BAA6B,EAC7BC,iCAAiC,EACjCC,gBAAgB,EAEhBC,mCAAmC,QAC9B,uBAAuB;AAC9B,SAASC,iCAAiC,QAAQ,uBAAuB;AAGzE,OAAO,MAAMC,mDACXH,iBAAiB,YAAYI,QAAQ,EAAE;AAEzC,OAAO,MAAMC,yCAAyC,OACpDC,MACAC;IAEA,MAAMC,gBAAgBP,oCACpBK,MACAC,QAAQC,aAAa;IAEvB,MAAMC,gBAAgBR,oCACpBK,MACAC,QAAQE,aAAa;IAGvBP,kCAAkCI,MAAME,eAAeC;IAEvD,MAAMC,gBAAgBH,QAAQI,eAAe,EAAEC,QAAQ;IACvD,MAAMC,YAAY,GAAGH,cAAc,IAAI,CAAC;IAExC,IAAIF,cAAcM,OAAO,EAAE,CAACD,UAAU,EAAE;QACtCd,kCAAkCS,eAAeK,WAAW;YAC1DE,UAAU;gBAACN,cAAcG,IAAI;aAAC;YAC9BI,QAAQ;QACV;QACAtB,2BAA2BY,MAAME,cAAcI,IAAI,EAAEJ;IACvD;IAEA,6DAA6D;IAC7DV,8BACEQ,MACAE,cAAcI,IAAI,EAClBT,kDACAM,cAAcQ,IAAI,EAClB,GAAGP,cAAc,CAAC,EAAED,cAAcG,IAAI,EAAE,EACxC,oEAAoE;IACpE,kDAAkD;IAClD;QAAEM,YAAYX,QAAQI,eAAe,EAAEQ;IAAK;IAG9C,MAAMtB,gCAAgCS,MAAM;QAC1CH;KACD;IACD,MAAMR,qBAAqBW;IAC3B,OAAO,IACLV,oBAAoBU,MAAMC,QAAQa,yBAAyB,EAAE;YAC3DC,WAAW;gBAAC;gBAAc;aAAS;QACrC;AACJ,EAAE;AAEF,eAAehB,uCAAuC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/mcp-server-connection/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ComponentMetadata } from '../../../utils/nx';\n\n/**\n * TypeScript types for options defined in schema.json\n */\nexport interface PyDynamoDBMcpServerConnectionGeneratorSchema {\n sourceProject: string;\n targetProject: string;\n sourceComponent?: ComponentMetadata;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD;;CAEC,GACD,WAKC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/dynamodb/mcp-server-connection/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { ComponentMetadata } from '../../../utils/nx.js';\n\n/**\n * TypeScript types for options defined in schema.json\n */\nexport interface PyDynamoDBMcpServerConnectionGeneratorSchema {\n sourceProject: string;\n targetProject: string;\n sourceComponent?: ComponentMetadata;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD;;CAEC,GACD,WAKC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { ComponentMetadata } from '../../../utils/nx';
|
|
5
|
+
import { ComponentMetadata } from '../../../utils/nx.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* TypeScript types for options defined in schema.json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/dynamodb/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../utils/iac';\n\nexport interface PyDynamoDBGeneratorSchema {\n name: string;\n directory?: string;\n subDirectory?: string;\n framework: 'pynamodb';\n tableName?: string;\n infra: 'dynamodb' | 'none';\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WASC"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/dynamodb/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { IacOption } from '../../utils/iac.js';\n\nexport interface PyDynamoDBGeneratorSchema {\n name: string;\n directory?: string;\n subDirectory?: string;\n framework: 'pynamodb';\n tableName?: string;\n infra: 'dynamodb' | 'none';\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WASC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { IacOption } from '../../utils/iac';
|
|
5
|
+
import { IacOption } from '../../utils/iac.js';
|
|
6
6
|
|
|
7
7
|
export interface PyDynamoDBGeneratorSchema {
|
|
8
8
|
name: string;
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type GeneratorCallback, type Tree } from '@nx/devkit';
|
|
6
|
-
import { type NxGeneratorInfo } from '../../utils/nx';
|
|
7
|
-
import type { IacMetadata } from '../../utils/shared-constructs-constants';
|
|
6
|
+
import { type NxGeneratorInfo } from '../../utils/nx.js';
|
|
7
|
+
import type { IacMetadata } from '../../utils/shared-constructs-constants.js';
|
|
8
8
|
import type { PyFastApiProjectGeneratorSchema } from './schema';
|
|
9
9
|
/** The metadata this generator records, which its predicates read. */
|
|
10
10
|
export interface PyFastApiMetadata extends IacMetadata {
|
|
@@ -12,7 +12,7 @@ export interface PyFastApiMetadata extends IacMetadata {
|
|
|
12
12
|
readonly apiType: string;
|
|
13
13
|
readonly auth: PyFastApiProjectGeneratorSchema['auth'];
|
|
14
14
|
}
|
|
15
|
-
export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
|
|
15
|
+
export declare const DEPENDENCIES: import("../../utils/declared-dependencies.js").DependencyDeclaration<readonly [{
|
|
16
16
|
readonly name: "ncp";
|
|
17
17
|
} & {
|
|
18
18
|
versionOnly: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/fast-api/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 joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addPyDependencies } from '../../utils/add-dependencies';\nimport {\n API_CONSTRUCTS_DEPENDENCIES,\n API_CONSTRUCTS_PY_DEPENDENCIES,\n addApiGatewayInfra,\n} from '../../utils/api-constructs/api-constructs';\nimport { addSharedConstructsOpenApiMetadataGenerateTarget } from '../../utils/api-constructs/open-api-metadata';\nimport { addPythonBundleTarget } from '../../utils/bundle/bundle';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies';\nimport { formatFilesInSubtree } from '../../utils/format';\nimport { FS_DEPENDENCIES, FsCommands } from '../../utils/fs';\nimport { resolveIac } from '../../utils/iac';\nimport { installDependencies } from '../../utils/install';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics';\nimport { toClassName, toKebabCase } from '../../utils/names';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../utils/nx';\nimport { sortObjectKeys } from '../../utils/object';\nimport { assignPort } from '../../utils/port';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs';\nimport type { IacMetadata } from '../../utils/shared-constructs-constants';\nimport pyProjectGenerator, { getPyProjectDetails } from '../project/generator';\nimport { addOpenApiGeneration } from './react/open-api';\nimport type { PyFastApiProjectGeneratorSchema } from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface PyFastApiMetadata extends IacMetadata {\n readonly apiName: string;\n readonly apiType: string;\n readonly auth: PyFastApiProjectGeneratorSchema['auth'];\n}\n\nexport const DEPENDENCIES = declareDependencies<PyFastApiMetadata>()({\n ts: [\n ...ownedElsewhere(FS_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(API_CONSTRUCTS_DEPENDENCIES),\n ],\n py: [\n { name: 'fastapi' },\n { name: 'uvicorn' },\n { name: 'aws-lambda-powertools' },\n { name: 'aws-lambda-powertools[tracer]' },\n // The custom authorizer handler parses its event with the parser extra.\n {\n name: 'aws-lambda-powertools[parser]',\n when: (m) => m.auth === 'custom',\n },\n // `fastapi dev` runs the local server.\n { name: 'fastapi[standard]', group: 'dev' },\n ...ownedElsewhere(API_CONSTRUCTS_PY_DEPENDENCIES),\n ],\n});\n\nexport const FAST_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\n/**\n * Generates a Python FastAPI project\n */\nexport const pyFastApiProjectGenerator = async (\n tree: Tree,\n schema: PyFastApiProjectGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const integrationPattern = getIntegrationPattern(schema);\n\n const { dir, normalizedModuleName, fullyQualifiedName } = getPyProjectDetails(\n tree,\n {\n name: schema.name,\n directory: schema.directory,\n subDirectory: schema.subDirectory,\n moduleName: schema.moduleName,\n },\n );\n const apiNameKebabCase = toKebabCase(schema.name);\n const apiNameClassName = toClassName(schema.name);\n\n let projectExists: boolean;\n try {\n readProjectConfiguration(tree, fullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await pyProjectGenerator(tree, {\n name: schema.name,\n directory: schema.directory,\n subDirectory: schema.subDirectory,\n moduleName: normalizedModuleName,\n type: 'application',\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n const port = assignPort(tree, projectConfig, 8000);\n\n const { bundleOutputDir, bundleTargetName } =\n addPythonBundleTarget(projectConfig);\n\n // Add a command to copy run.sh to the bundle output for Lambda Web Adapter\n const fs = new FsCommands(tree, DEPENDENCIES);\n const bundleTarget = projectConfig.targets[bundleTargetName];\n const copyRunShCommand = fs.cp(\n `{projectRoot}/run.sh`,\n `dist/{projectRoot}/${bundleTargetName}/run.sh`,\n );\n if (!bundleTarget.options.commands.includes(copyRunShCommand)) {\n bundleTarget.options.commands = [\n ...bundleTarget.options.commands,\n copyRunShCommand,\n ];\n }\n\n projectConfig.targets.serve = {\n executor: '@nxlv/python:run-commands',\n continuous: true,\n options: {\n command: `uv run fastapi dev ${normalizedModuleName}/main.py --port ${port}`,\n cwd: '{projectRoot}',\n },\n };\n\n projectConfig.targets['dev'] = {\n ...projectConfig.targets['dev'],\n ...projectConfig.targets.serve,\n options: {\n ...projectConfig.targets.serve.options,\n env: {\n LOCAL_DEV: 'true',\n },\n },\n };\n\n // Recorded in the metadata below so the version sync can tell a CDK\n // project from a Terraform one; undefined when no infrastructure was\n // generated, in which case neither provider's packages were added.\n const iac =\n schema.infra !== 'none' ? await resolveIac(tree, schema.iac) : undefined;\n\n // Recorded below and read by the declaration's predicates, so the packages\n // added here are exactly the ones the version sync will own.\n const metadata: PyFastApiMetadata = {\n apiName: schema.name,\n apiType: 'fast-api',\n auth: schema.auth,\n ...(iac ? { iac } : {}),\n };\n\n projectConfig.metadata = {\n ...projectConfig.metadata,\n ...metadata,\n } as any;\n\n projectConfig.targets = sortObjectKeys(projectConfig.targets);\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);\n\n // Add OpenAPI spec generation to the project, run as part of build\n const { specPath } = addOpenApiGeneration(tree, { project: projectConfig });\n\n [\n joinPathFragments(dir, normalizedModuleName, 'hello.py'),\n joinPathFragments(dir, 'tests', 'test_hello.py'),\n ].forEach((f) => tree.delete(f));\n\n // User-owned source files: preserve any existing copies so re-running does\n // not clobber user edits (and does not reformat them nondeterministically).\n generateFiles(\n tree, // the virtual file system\n joinPathFragments(import.meta.dirname, 'files', 'app'), // path to the file templates\n dir, // destination path of the files\n {\n name: normalizedModuleName,\n apiNameClassName,\n infra: schema.infra,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n if (schema.infra !== 'none') {\n await sharedConstructsGenerator(\n tree,\n {\n iac,\n },\n DEPENDENCIES,\n );\n\n if (schema.auth === 'custom') {\n const authorizerType = schema.infra === 'http-lambda' ? 'http' : 'rest';\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '..',\n '..',\n 'utils',\n 'api-constructs',\n 'files',\n 'py-authorizer',\n authorizerType,\n ),\n joinPathFragments(dir, normalizedModuleName),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n // Add the CDK construct to deploy the FastAPI to shared constructs\n await addApiGatewayInfra(\n tree,\n {\n apiProjectName: projectConfig.name,\n apiNameClassName,\n apiNameKebabCase,\n constructType: schema.infra === 'http-lambda' ? 'http' : 'rest',\n backend: {\n type: 'fastapi',\n moduleName: normalizedModuleName,\n bundleOutputDir,\n integrationPattern,\n },\n auth: schema.auth,\n iac,\n },\n DEPENDENCIES,\n );\n\n addSharedConstructsOpenApiMetadataGenerateTarget(tree, {\n iac,\n apiNameKebabCase,\n specPath,\n specBuildTargetName: `${projectConfig.name}:openapi`,\n });\n }\n\n addPyDependencies(tree, DEPENDENCIES, { metadata, projectRoot: dir });\n\n addGeneratorMetadata(tree, fullyQualifiedName, FAST_API_GENERATOR_INFO);\n\n await addGeneratorMetricsIfApplicable(tree, [FAST_API_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nconst getIntegrationPattern = (\n schema: PyFastApiProjectGeneratorSchema,\n): 'isolated' | 'shared' => schema.integrationPattern ?? 'isolated';\n\nexport default pyFastApiProjectGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","readProjectConfiguration","updateProjectConfiguration","addPyDependencies","API_CONSTRUCTS_DEPENDENCIES","API_CONSTRUCTS_PY_DEPENDENCIES","addApiGatewayInfra","addSharedConstructsOpenApiMetadataGenerateTarget","addPythonBundleTarget","declareDependencies","ownedElsewhere","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","toClassName","toKebabCase","addGeneratorMetadata","getGeneratorInfo","sortObjectKeys","assignPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","pyProjectGenerator","getPyProjectDetails","addOpenApiGeneration","DEPENDENCIES","ts","py","name","when","m","auth","group","FAST_API_GENERATOR_INFO","filename","pyFastApiProjectGenerator","tree","schema","integrationPattern","getIntegrationPattern","dir","normalizedModuleName","fullyQualifiedName","directory","subDirectory","moduleName","apiNameKebabCase","apiNameClassName","projectExists","type","preferInstallDependencies","projectConfig","port","bundleOutputDir","bundleTargetName","fs","bundleTarget","targets","copyRunShCommand","cp","options","commands","includes","serve","executor","continuous","command","cwd","env","LOCAL_DEV","iac","infra","undefined","metadata","apiName","apiType","specPath","project","forEach","f","delete","dirname","overwriteStrategy","KeepExisting","authorizerType","apiProjectName","constructType","backend","specBuildTargetName","projectRoot","languages"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/nx-plugin/src/py/fast-api/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 joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addPyDependencies } from '../../utils/add-dependencies.js';\nimport {\n API_CONSTRUCTS_DEPENDENCIES,\n API_CONSTRUCTS_PY_DEPENDENCIES,\n addApiGatewayInfra,\n} from '../../utils/api-constructs/api-constructs.js';\nimport { addSharedConstructsOpenApiMetadataGenerateTarget } from '../../utils/api-constructs/open-api-metadata.js';\nimport { addPythonBundleTarget } from '../../utils/bundle/bundle.js';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies.js';\nimport { formatFilesInSubtree } from '../../utils/format.js';\nimport { FS_DEPENDENCIES, FsCommands } from '../../utils/fs.js';\nimport { resolveIac } from '../../utils/iac.js';\nimport { installDependencies } from '../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics.js';\nimport { toClassName, toKebabCase } from '../../utils/names.js';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../utils/nx.js';\nimport { sortObjectKeys } from '../../utils/object.js';\nimport { assignPort } from '../../utils/port.js';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs.js';\nimport type { IacMetadata } from '../../utils/shared-constructs-constants.js';\nimport pyProjectGenerator, {\n getPyProjectDetails,\n} from '../project/generator.js';\nimport { addOpenApiGeneration } from './react/open-api.js';\nimport type { PyFastApiProjectGeneratorSchema } from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface PyFastApiMetadata extends IacMetadata {\n readonly apiName: string;\n readonly apiType: string;\n readonly auth: PyFastApiProjectGeneratorSchema['auth'];\n}\n\nexport const DEPENDENCIES = declareDependencies<PyFastApiMetadata>()({\n ts: [\n ...ownedElsewhere(FS_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(API_CONSTRUCTS_DEPENDENCIES),\n ],\n py: [\n { name: 'fastapi' },\n { name: 'uvicorn' },\n { name: 'aws-lambda-powertools' },\n { name: 'aws-lambda-powertools[tracer]' },\n // The custom authorizer handler parses its event with the parser extra.\n {\n name: 'aws-lambda-powertools[parser]',\n when: (m) => m.auth === 'custom',\n },\n // `fastapi dev` runs the local server.\n { name: 'fastapi[standard]', group: 'dev' },\n ...ownedElsewhere(API_CONSTRUCTS_PY_DEPENDENCIES),\n ],\n});\n\nexport const FAST_API_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\n/**\n * Generates a Python FastAPI project\n */\nexport const pyFastApiProjectGenerator = async (\n tree: Tree,\n schema: PyFastApiProjectGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const integrationPattern = getIntegrationPattern(schema);\n\n const { dir, normalizedModuleName, fullyQualifiedName } = getPyProjectDetails(\n tree,\n {\n name: schema.name,\n directory: schema.directory,\n subDirectory: schema.subDirectory,\n moduleName: schema.moduleName,\n },\n );\n const apiNameKebabCase = toKebabCase(schema.name);\n const apiNameClassName = toClassName(schema.name);\n\n let projectExists: boolean;\n try {\n readProjectConfiguration(tree, fullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await pyProjectGenerator(tree, {\n name: schema.name,\n directory: schema.directory,\n subDirectory: schema.subDirectory,\n moduleName: normalizedModuleName,\n type: 'application',\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n const port = assignPort(tree, projectConfig, 8000);\n\n const { bundleOutputDir, bundleTargetName } =\n addPythonBundleTarget(projectConfig);\n\n // Add a command to copy run.sh to the bundle output for Lambda Web Adapter\n const fs = new FsCommands(tree, DEPENDENCIES);\n const bundleTarget = projectConfig.targets[bundleTargetName];\n const copyRunShCommand = fs.cp(\n `{projectRoot}/run.sh`,\n `dist/{projectRoot}/${bundleTargetName}/run.sh`,\n );\n if (!bundleTarget.options.commands.includes(copyRunShCommand)) {\n bundleTarget.options.commands = [\n ...bundleTarget.options.commands,\n copyRunShCommand,\n ];\n }\n\n projectConfig.targets.serve = {\n executor: '@nxlv/python:run-commands',\n continuous: true,\n options: {\n command: `uv run fastapi dev ${normalizedModuleName}/main.py --port ${port}`,\n cwd: '{projectRoot}',\n },\n };\n\n projectConfig.targets['dev'] = {\n ...projectConfig.targets['dev'],\n ...projectConfig.targets.serve,\n options: {\n ...projectConfig.targets.serve.options,\n env: {\n LOCAL_DEV: 'true',\n },\n },\n };\n\n // Recorded in the metadata below so the version sync can tell a CDK\n // project from a Terraform one; undefined when no infrastructure was\n // generated, in which case neither provider's packages were added.\n const iac =\n schema.infra !== 'none' ? await resolveIac(tree, schema.iac) : undefined;\n\n // Recorded below and read by the declaration's predicates, so the packages\n // added here are exactly the ones the version sync will own.\n const metadata: PyFastApiMetadata = {\n apiName: schema.name,\n apiType: 'fast-api',\n auth: schema.auth,\n ...(iac ? { iac } : {}),\n };\n\n projectConfig.metadata = {\n ...projectConfig.metadata,\n ...metadata,\n } as any;\n\n projectConfig.targets = sortObjectKeys(projectConfig.targets);\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);\n\n // Add OpenAPI spec generation to the project, run as part of build\n const { specPath } = addOpenApiGeneration(tree, { project: projectConfig });\n\n [\n joinPathFragments(dir, normalizedModuleName, 'hello.py'),\n joinPathFragments(dir, 'tests', 'test_hello.py'),\n ].forEach((f) => tree.delete(f));\n\n // User-owned source files: preserve any existing copies so re-running does\n // not clobber user edits (and does not reformat them nondeterministically).\n generateFiles(\n tree, // the virtual file system\n joinPathFragments(import.meta.dirname, 'files', 'app'), // path to the file templates\n dir, // destination path of the files\n {\n name: normalizedModuleName,\n apiNameClassName,\n infra: schema.infra,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n if (schema.infra !== 'none') {\n await sharedConstructsGenerator(\n tree,\n {\n iac,\n },\n DEPENDENCIES,\n );\n\n if (schema.auth === 'custom') {\n const authorizerType = schema.infra === 'http-lambda' ? 'http' : 'rest';\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n '..',\n '..',\n 'utils',\n 'api-constructs',\n 'files',\n 'py-authorizer',\n authorizerType,\n ),\n joinPathFragments(dir, normalizedModuleName),\n {},\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n // Add the CDK construct to deploy the FastAPI to shared constructs\n await addApiGatewayInfra(\n tree,\n {\n apiProjectName: projectConfig.name,\n apiNameClassName,\n apiNameKebabCase,\n constructType: schema.infra === 'http-lambda' ? 'http' : 'rest',\n backend: {\n type: 'fastapi',\n moduleName: normalizedModuleName,\n bundleOutputDir,\n integrationPattern,\n },\n auth: schema.auth,\n iac,\n },\n DEPENDENCIES,\n );\n\n addSharedConstructsOpenApiMetadataGenerateTarget(tree, {\n iac,\n apiNameKebabCase,\n specPath,\n specBuildTargetName: `${projectConfig.name}:openapi`,\n });\n }\n\n addPyDependencies(tree, DEPENDENCIES, { metadata, projectRoot: dir });\n\n addGeneratorMetadata(tree, fullyQualifiedName, FAST_API_GENERATOR_INFO);\n\n await addGeneratorMetricsIfApplicable(tree, [FAST_API_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n\n return () =>\n installDependencies(tree, schema.preferInstallDependencies, {\n languages: ['typescript', 'python'],\n });\n};\n\nconst getIntegrationPattern = (\n schema: PyFastApiProjectGeneratorSchema,\n): 'isolated' | 'shared' => schema.integrationPattern ?? 'isolated';\n\nexport default pyFastApiProjectGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","readProjectConfiguration","updateProjectConfiguration","addPyDependencies","API_CONSTRUCTS_DEPENDENCIES","API_CONSTRUCTS_PY_DEPENDENCIES","addApiGatewayInfra","addSharedConstructsOpenApiMetadataGenerateTarget","addPythonBundleTarget","declareDependencies","ownedElsewhere","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","toClassName","toKebabCase","addGeneratorMetadata","getGeneratorInfo","sortObjectKeys","assignPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","pyProjectGenerator","getPyProjectDetails","addOpenApiGeneration","DEPENDENCIES","ts","py","name","when","m","auth","group","FAST_API_GENERATOR_INFO","filename","pyFastApiProjectGenerator","tree","schema","integrationPattern","getIntegrationPattern","dir","normalizedModuleName","fullyQualifiedName","directory","subDirectory","moduleName","apiNameKebabCase","apiNameClassName","projectExists","type","preferInstallDependencies","projectConfig","port","bundleOutputDir","bundleTargetName","fs","bundleTarget","targets","copyRunShCommand","cp","options","commands","includes","serve","executor","continuous","command","cwd","env","LOCAL_DEV","iac","infra","undefined","metadata","apiName","apiType","specPath","project","forEach","f","delete","dirname","overwriteStrategy","KeepExisting","authorizerType","apiProjectName","constructType","backend","specBuildTargetName","projectRoot","languages"],"mappings":"AAAA;;;CAGC,GACD,SAEEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EAEjBC,wBAAwB,EAExBC,0BAA0B,QACrB,aAAa;AACpB,SAASC,iBAAiB,QAAQ,kCAAkC;AACpE,SACEC,2BAA2B,EAC3BC,8BAA8B,EAC9BC,kBAAkB,QACb,+CAA+C;AACtD,SAASC,gDAAgD,QAAQ,kDAAkD;AACnH,SAASC,qBAAqB,QAAQ,+BAA+B;AACrE,SACEC,mBAAmB,EACnBC,cAAc,QACT,uCAAuC;AAC9C,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,eAAe,EAAEC,UAAU,QAAQ,oBAAoB;AAChE,SAASC,UAAU,QAAQ,qBAAqB;AAChD,SAASC,mBAAmB,QAAQ,yBAAyB;AAC7D,SAASC,+BAA+B,QAAQ,yBAAyB;AACzE,SAASC,WAAW,EAAEC,WAAW,QAAQ,uBAAuB;AAChE,SACEC,oBAAoB,EACpBC,gBAAgB,QAEX,oBAAoB;AAC3B,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SACEC,8BAA8B,EAC9BC,yBAAyB,QACpB,mCAAmC;AAE1C,OAAOC,sBACLC,mBAAmB,QACd,0BAA0B;AACjC,SAASC,oBAAoB,QAAQ,sBAAsB;AAU3D,OAAO,MAAMC,eAAenB,sBAAyC;IACnEoB,IAAI;WACCnB,eAAeE;WACfF,eAAea;WACfb,eAAeN;KACnB;IACD0B,IAAI;QACF;YAAEC,MAAM;QAAU;QAClB;YAAEA,MAAM;QAAU;QAClB;YAAEA,MAAM;QAAwB;QAChC;YAAEA,MAAM;QAAgC;QACxC,wEAAwE;QACxE;YACEA,MAAM;YACNC,MAAM,CAACC,IAAMA,EAAEC,IAAI,KAAK;QAC1B;QACA,uCAAuC;QACvC;YAAEH,MAAM;YAAqBI,OAAO;QAAM;WACvCzB,eAAeL;KACnB;AACH,GAAG;AAEH,OAAO,MAAM+B,0BAA2ChB,iBACtD,YAAYiB,QAAQ,EACpB;AAEF;;CAEC,GACD,OAAO,MAAMC,4BAA4B,OACvCC,MACAC;IAEA,MAAMC,qBAAqBC,sBAAsBF;IAEjD,MAAM,EAAEG,GAAG,EAAEC,oBAAoB,EAAEC,kBAAkB,EAAE,GAAGnB,oBACxDa,MACA;QACER,MAAMS,OAAOT,IAAI;QACjBe,WAAWN,OAAOM,SAAS;QAC3BC,cAAcP,OAAOO,YAAY;QACjCC,YAAYR,OAAOQ,UAAU;IAC/B;IAEF,MAAMC,mBAAmB/B,YAAYsB,OAAOT,IAAI;IAChD,MAAMmB,mBAAmBjC,YAAYuB,OAAOT,IAAI;IAEhD,IAAIoB;IACJ,IAAI;QACFlD,yBAAyBsC,MAAMM;QAC/BM,gBAAgB;IAClB,EAAE,OAAM;QACNA,gBAAgB;IAClB;IAEA,IAAI,CAACA,eAAe;QAClB,MAAM1B,mBAAmBc,MAAM;YAC7BR,MAAMS,OAAOT,IAAI;YACjBe,WAAWN,OAAOM,SAAS;YAC3BC,cAAcP,OAAOO,YAAY;YACjCC,YAAYJ;YACZQ,MAAM;YACNC,2BAA2B;QAC7B;IACF;IAEA,MAAMC,gBAAgBrD,yBAAyBsC,MAAMM;IACrD,MAAMU,OAAOjC,WAAWiB,MAAMe,eAAe;IAE7C,MAAM,EAAEE,eAAe,EAAEC,gBAAgB,EAAE,GACzCjD,sBAAsB8C;IAExB,2EAA2E;IAC3E,MAAMI,KAAK,IAAI7C,WAAW0B,MAAMX;IAChC,MAAM+B,eAAeL,cAAcM,OAAO,CAACH,iBAAiB;IAC5D,MAAMI,mBAAmBH,GAAGI,EAAE,CAC5B,CAAC,oBAAoB,CAAC,EACtB,CAAC,mBAAmB,EAAEL,iBAAiB,OAAO,CAAC;IAEjD,IAAI,CAACE,aAAaI,OAAO,CAACC,QAAQ,CAACC,QAAQ,CAACJ,mBAAmB;QAC7DF,aAAaI,OAAO,CAACC,QAAQ,GAAG;eAC3BL,aAAaI,OAAO,CAACC,QAAQ;YAChCH;SACD;IACH;IAEAP,cAAcM,OAAO,CAACM,KAAK,GAAG;QAC5BC,UAAU;QACVC,YAAY;QACZL,SAAS;YACPM,SAAS,CAAC,mBAAmB,EAAEzB,qBAAqB,gBAAgB,EAAEW,MAAM;YAC5Ee,KAAK;QACP;IACF;IAEAhB,cAAcM,OAAO,CAAC,MAAM,GAAG;QAC7B,GAAGN,cAAcM,OAAO,CAAC,MAAM;QAC/B,GAAGN,cAAcM,OAAO,CAACM,KAAK;QAC9BH,SAAS;YACP,GAAGT,cAAcM,OAAO,CAACM,KAAK,CAACH,OAAO;YACtCQ,KAAK;gBACHC,WAAW;YACb;QACF;IACF;IAEA,oEAAoE;IACpE,qEAAqE;IACrE,mEAAmE;IACnE,MAAMC,MACJjC,OAAOkC,KAAK,KAAK,SAAS,MAAM5D,WAAWyB,MAAMC,OAAOiC,GAAG,IAAIE;IAEjE,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAMC,WAA8B;QAClCC,SAASrC,OAAOT,IAAI;QACpB+C,SAAS;QACT5C,MAAMM,OAAON,IAAI;QACjB,GAAIuC,MAAM;YAAEA;QAAI,IAAI,CAAC,CAAC;IACxB;IAEAnB,cAAcsB,QAAQ,GAAG;QACvB,GAAGtB,cAAcsB,QAAQ;QACzB,GAAGA,QAAQ;IACb;IAEAtB,cAAcM,OAAO,GAAGvC,eAAeiC,cAAcM,OAAO;IAC5D1D,2BAA2BqC,MAAMM,oBAAoBS;IAErD,mEAAmE;IACnE,MAAM,EAAEyB,QAAQ,EAAE,GAAGpD,qBAAqBY,MAAM;QAAEyC,SAAS1B;IAAc;IAEzE;QACEvD,kBAAkB4C,KAAKC,sBAAsB;QAC7C7C,kBAAkB4C,KAAK,SAAS;KACjC,CAACsC,OAAO,CAAC,CAACC,IAAM3C,KAAK4C,MAAM,CAACD;IAE7B,2EAA2E;IAC3E,4EAA4E;IAC5EpF,cACEyC,MACAxC,kBAAkB,YAAYqF,OAAO,EAAE,SAAS,QAChDzC,KACA;QACEZ,MAAMa;QACNM;QACAwB,OAAOlC,OAAOkC,KAAK;IACrB,GACA;QACEW,mBAAmBrF,kBAAkBsF,YAAY;IACnD;IAGF,IAAI9C,OAAOkC,KAAK,KAAK,QAAQ;QAC3B,MAAMlD,0BACJe,MACA;YACEkC;QACF,GACA7C;QAGF,IAAIY,OAAON,IAAI,KAAK,UAAU;YAC5B,MAAMqD,iBAAiB/C,OAAOkC,KAAK,KAAK,gBAAgB,SAAS;YACjE5E,cACEyC,MACAxC,kBACE,YAAYqF,OAAO,EACnB,MACA,MACA,SACA,kBACA,SACA,iBACAG,iBAEFxF,kBAAkB4C,KAAKC,uBACvB,CAAC,GACD;gBACEyC,mBAAmBrF,kBAAkBsF,YAAY;YACnD;QAEJ;QAEA,mEAAmE;QACnE,MAAMhF,mBACJiC,MACA;YACEiD,gBAAgBlC,cAAcvB,IAAI;YAClCmB;YACAD;YACAwC,eAAejD,OAAOkC,KAAK,KAAK,gBAAgB,SAAS;YACzDgB,SAAS;gBACPtC,MAAM;gBACNJ,YAAYJ;gBACZY;gBACAf;YACF;YACAP,MAAMM,OAAON,IAAI;YACjBuC;QACF,GACA7C;QAGFrB,iDAAiDgC,MAAM;YACrDkC;YACAxB;YACA8B;YACAY,qBAAqB,GAAGrC,cAAcvB,IAAI,CAAC,QAAQ,CAAC;QACtD;IACF;IAEA5B,kBAAkBoC,MAAMX,cAAc;QAAEgD;QAAUgB,aAAajD;IAAI;IAEnExB,qBAAqBoB,MAAMM,oBAAoBT;IAE/C,MAAMpB,gCAAgCuB,MAAM;QAACH;KAAwB;IAErE,MAAMzB,qBAAqB4B;IAE3B,OAAO,IACLxB,oBAAoBwB,MAAMC,OAAOa,yBAAyB,EAAE;YAC1DwC,WAAW;gBAAC;gBAAc;aAAS;QACrC;AACJ,EAAE;AAEF,MAAMnD,wBAAwB,CAC5BF,SAC0BA,OAAOC,kBAAkB,IAAI;AAEzD,eAAeH,0BAA0B"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type Tree } from '@nx/devkit';
|
|
6
|
-
import { type NxGeneratorInfo } from '../../../utils/nx';
|
|
6
|
+
import { type NxGeneratorInfo } from '../../../utils/nx.js';
|
|
7
7
|
import type { FastApiReactGeneratorSchema } from './schema';
|
|
8
|
-
export declare const DEPENDENCIES: import("../../../utils/declared-dependencies").DependencyDeclaration<readonly [{
|
|
8
|
+
export declare const DEPENDENCIES: import("../../../utils/declared-dependencies.js").DependencyDeclaration<readonly [{
|
|
9
9
|
readonly name: "oidc-client-ts";
|
|
10
10
|
}, {
|
|
11
11
|
readonly name: "react-oidc-context";
|
|
@@ -19,7 +19,7 @@ export declare const DEPENDENCIES: import("../../../utils/declared-dependencies"
|
|
|
19
19
|
readonly name: "@tanstack/react-query-devtools";
|
|
20
20
|
}, {
|
|
21
21
|
readonly name: "@smithy/types";
|
|
22
|
-
}], readonly import("../../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aiosqlite" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "langgraph-checkpoint-aws" | "langgraph-checkpoint-sqlite" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", Record<string, never>>[]>;
|
|
22
|
+
}], readonly import("../../../utils/declared-dependencies.js").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "aiosqlite" | "aws-lambda-powertools" | "aws-lambda-powertools[tracer]" | "aws-lambda-powertools[parser]" | "aws-opentelemetry-distro" | "bedrock-agentcore" | "boto3" | "checkov" | "fastapi" | "fastapi[standard]" | "httpx" | "langchain" | "langchain-aws" | "langchain-mcp-adapters" | "langgraph" | "langgraph-checkpoint-aws" | "langgraph-checkpoint-sqlite" | "mcp" | "pip-check-updates" | "pip-licenses" | "ruff" | "strands-agents" | "strands-agents[a2a]" | "strands-agents-tools" | "ty" | "pynamodb" | "uvicorn" | "sqlmodel" | "alembic" | "aiomysql" | "asyncpg" | "greenlet", Record<string, never>>[]>;
|
|
23
23
|
export declare const FAST_API_REACT_GENERATOR_INFO: NxGeneratorInfo;
|
|
24
24
|
export declare const fastApiReactGenerator: (tree: Tree, options: FastApiReactGeneratorSchema) => Promise<() => Promise<void>>;
|
|
25
25
|
export default fastApiReactGenerator;
|