@aws/nx-plugin 1.0.0-rc.56 → 1.0.0-rc.58

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.
Files changed (179) hide show
  1. package/LICENSE-THIRD-PARTY +2917 -1295
  2. package/migrations.json +34 -24
  3. package/package.json +13 -13
  4. package/src/agentcore-gateway/generator.d.ts +16 -1
  5. package/src/agentcore-gateway/generator.js +3 -2
  6. package/src/agentcore-gateway/generator.js.map +1 -1
  7. package/src/agentcore-gateway/schema.json +1 -0
  8. package/src/connection/scaffold-catalog.d.ts +160 -0
  9. package/src/connection/scaffold-catalog.js +207 -0
  10. package/src/connection/scaffold-catalog.js.map +1 -0
  11. package/src/connection/schema-resolver.d.ts +5 -0
  12. package/src/connection/schema-resolver.js +27 -0
  13. package/src/connection/schema-resolver.js.map +1 -0
  14. package/src/infra/app/__snapshots__/generator.spec.ts.snap +7 -7
  15. package/src/migrations/latest/smithy-ssdk-bundle-pins/migration.js +78 -0
  16. package/src/migrations/latest/smithy-ssdk-bundle-pins/migration.js.map +1 -0
  17. package/src/migrations/v1.0.0-rc.50/modernize-function-props-cast/migration.js.map +1 -0
  18. package/src/migrations/v1.0.0-rc.50/restrict-cors-to-custom-domains/migration.js.map +1 -0
  19. package/src/migrations/v1.0.0-rc.50/terraform-bootstrap-adopt-existing-bucket/migration.d.ts +6 -0
  20. package/src/migrations/v1.0.0-rc.50/terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -0
  21. package/src/migrations/v1.0.0-rc.52/user-identity-waf-allow-localhost-callback/migration.js.map +1 -0
  22. package/src/migrations/v1.0.0-rc.54/order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
  23. package/src/migrations/v1.0.0-rc.55/backfill-generator-metadata/migration.js.map +1 -0
  24. package/src/migrations/v1.0.0-rc.56/dynamodb-local-remove-optimize-flag/migration.js.map +1 -0
  25. package/src/migrations/v1.0.0-rc.57/ts-agent-session-management-support/migration.d.ts +6 -0
  26. package/src/migrations/v1.0.0-rc.57/ts-agent-session-management-support/migration.js +449 -0
  27. package/src/migrations/v1.0.0-rc.57/ts-agent-session-management-support/migration.js.map +1 -0
  28. package/src/preset/__snapshots__/generator.spec.ts.snap +5 -5
  29. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +11 -9
  30. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +20 -20
  31. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +3 -3
  32. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +2 -1
  33. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +2 -1
  34. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +2 -1
  35. package/src/py/agent/a2a-connection/generator.d.ts +1 -1
  36. package/src/py/agent/gateway-connection/generator.d.ts +1 -1
  37. package/src/py/agent/generator.js +4 -0
  38. package/src/py/agent/generator.js.map +1 -1
  39. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +2 -1
  40. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +2 -1
  41. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +2 -1
  42. package/src/py/agent/mcp-connection/generator.d.ts +1 -1
  43. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +6 -0
  44. package/src/py/agent/schema.d.js.map +1 -1
  45. package/src/py/agent/schema.d.ts +3 -0
  46. package/src/py/agent/schema.json +9 -0
  47. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  48. package/src/py/dynamodb/schema.json +1 -0
  49. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +12 -12
  50. package/src/py/fast-api/generator.d.ts +5 -0
  51. package/src/py/fast-api/generator.js +3 -2
  52. package/src/py/fast-api/generator.js.map +1 -1
  53. package/src/py/fast-api/schema.json +1 -0
  54. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  55. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +9 -7
  56. package/src/py/mcp-server/schema.json +1 -0
  57. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2 -2
  58. package/src/py/rdb/schema.json +1 -0
  59. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +4 -4
  60. package/src/smithy/project/files/service/build.Dockerfile.template +2 -2
  61. package/src/smithy/project/generator.d.ts +25 -0
  62. package/src/smithy/project/generator.js +24 -3
  63. package/src/smithy/project/generator.js.map +1 -1
  64. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +7 -7
  65. package/src/smithy/ts/api/generator.d.ts +6 -1
  66. package/src/smithy/ts/api/generator.js +3 -2
  67. package/src/smithy/ts/api/generator.js.map +1 -1
  68. package/src/smithy/ts/api/schema.json +1 -0
  69. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +12 -12
  70. package/src/trpc/backend/generator.d.ts +6 -1
  71. package/src/trpc/backend/generator.js +3 -2
  72. package/src/trpc/backend/generator.js.map +1 -1
  73. package/src/trpc/backend/schema.json +1 -0
  74. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +668 -24
  75. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +2 -1
  76. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +1 -1
  77. package/src/ts/agent/files/ag-ui/index.ts.template +10 -1
  78. package/src/ts/agent/files/common/agent.ts.template +11 -3
  79. package/src/ts/agent/files/common/session.ts.template +43 -0
  80. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +1 -0
  81. package/src/ts/agent/generator.d.ts +36 -1
  82. package/src/ts/agent/generator.js +28 -4
  83. package/src/ts/agent/generator.js.map +1 -1
  84. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +2 -1
  85. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +2 -1
  86. package/src/ts/agent/react-connection/__snapshots__/generator.spec.ts.snap +8 -4
  87. package/src/ts/agent/react-connection/files/src/components/__agentNameClassName__AgentClientProvider.tsx.template +2 -1
  88. package/src/ts/agent/schema.d.js.map +1 -1
  89. package/src/ts/agent/schema.d.ts +3 -0
  90. package/src/ts/agent/schema.json +9 -0
  91. package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +1 -1
  92. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +2 -2
  93. package/src/ts/dynamodb/schema.json +1 -0
  94. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  95. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +6 -4
  96. package/src/ts/mcp-server/generator.d.ts +32 -1
  97. package/src/ts/mcp-server/generator.js +7 -4
  98. package/src/ts/mcp-server/generator.js.map +1 -1
  99. package/src/ts/mcp-server/schema.json +1 -0
  100. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +6 -6
  101. package/src/ts/rdb/generator.d.ts +8 -0
  102. package/src/ts/rdb/generator.js +3 -2
  103. package/src/ts/rdb/generator.js.map +1 -1
  104. package/src/ts/rdb/schema.json +1 -0
  105. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +61 -45
  106. package/src/ts/react-website/app/generator.d.ts +6 -1
  107. package/src/ts/react-website/app/generator.js +3 -2
  108. package/src/ts/react-website/app/generator.js.map +1 -1
  109. package/src/ts/react-website/app/schema.json +1 -0
  110. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +2 -2
  111. package/src/ts/react-website/cognito-auth/generator.d.ts +6 -1
  112. package/src/ts/react-website/cognito-auth/generator.js +3 -2
  113. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  114. package/src/utils/agent-chat/files/common/agentcore.ts.template +2 -2
  115. package/src/utils/agent-connection/agent-connection.js +4 -0
  116. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  117. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +11 -1
  118. package/src/utils/agent-connection/files/core-strands/base/model-errors-strands.ts.template +26 -15
  119. package/src/utils/agent-connection/files/core-strands/base/tool-errors-strands.ts.template +23 -16
  120. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +4 -3
  121. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +22 -0
  122. package/src/utils/agent-core-constructs/agent-core-constructs.js +29 -2
  123. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  124. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +131 -3
  125. package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +180 -1
  126. package/src/utils/api-constructs/api-constructs.d.ts +9 -0
  127. package/src/utils/api-constructs/api-constructs.js +11 -1
  128. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  129. package/src/utils/ast.d.ts +5 -0
  130. package/src/utils/ast.js +25 -0
  131. package/src/utils/ast.js.map +1 -1
  132. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +2 -0
  133. package/src/utils/docker.d.ts +27 -2
  134. package/src/utils/docker.js +31 -2
  135. package/src/utils/docker.js.map +1 -1
  136. package/src/utils/identity-constructs/identity-constructs.d.ts +10 -0
  137. package/src/utils/identity-constructs/identity-constructs.js +11 -1
  138. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  139. package/src/utils/shared-constructs-constants.d.ts +6 -0
  140. package/src/utils/shared-constructs-constants.js +5 -0
  141. package/src/utils/shared-constructs-constants.js.map +1 -1
  142. package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +26 -0
  143. package/src/utils/version-upgrade-migration/owned-dependencies.js +52 -4
  144. package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -1
  145. package/src/utils/version-upgrade-migration/register.d.ts +5 -1
  146. package/src/utils/version-upgrade-migration/register.js +6 -2
  147. package/src/utils/version-upgrade-migration/register.js.map +1 -1
  148. package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +26 -0
  149. package/src/utils/version-upgrade-migration/sync-embedded-versions.js +304 -0
  150. package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -0
  151. package/src/utils/version-upgrade-migration/sync-vended-versions.js +14 -0
  152. package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -1
  153. package/src/utils/versions.d.ts +90 -77
  154. package/src/utils/versions.js +86 -75
  155. package/src/utils/versions.js.map +1 -1
  156. package/src/utils/website-constructs/website-constructs.d.ts +11 -0
  157. package/src/utils/website-constructs/website-constructs.js +12 -1
  158. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  159. package/src/migrations/latest/backfill-generator-metadata/migration.js.map +0 -1
  160. package/src/migrations/latest/dynamodb-local-remove-optimize-flag/migration.js.map +0 -1
  161. package/src/migrations/latest/modernize-function-props-cast/migration.js.map +0 -1
  162. package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js.map +0 -1
  163. package/src/migrations/latest/restrict-cors-to-custom-domains/migration.js.map +0 -1
  164. package/src/migrations/latest/terraform-bootstrap-adopt-existing-bucket/migration.js.map +0 -1
  165. package/src/migrations/latest/user-identity-waf-allow-localhost-callback/migration.js.map +0 -1
  166. /package/src/migrations/latest/{modernize-function-props-cast → smithy-ssdk-bundle-pins}/migration.d.ts +0 -0
  167. /package/src/migrations/{latest/restrict-cors-to-custom-domains → v1.0.0-rc.50/modernize-function-props-cast}/migration.d.ts +0 -0
  168. /package/src/migrations/{latest → v1.0.0-rc.50}/modernize-function-props-cast/migration.js +0 -0
  169. /package/src/migrations/{latest/terraform-bootstrap-adopt-existing-bucket → v1.0.0-rc.50/restrict-cors-to-custom-domains}/migration.d.ts +0 -0
  170. /package/src/migrations/{latest → v1.0.0-rc.50}/restrict-cors-to-custom-domains/migration.js +0 -0
  171. /package/src/migrations/{latest → v1.0.0-rc.50}/terraform-bootstrap-adopt-existing-bucket/migration.js +0 -0
  172. /package/src/migrations/{latest/dynamodb-local-remove-optimize-flag → v1.0.0-rc.52/user-identity-waf-allow-localhost-callback}/migration.d.ts +0 -0
  173. /package/src/migrations/{latest → v1.0.0-rc.52}/user-identity-waf-allow-localhost-callback/migration.js +0 -0
  174. /package/src/migrations/{latest → v1.0.0-rc.54}/order-access-log-delivery-after-bucket-policy/migration.d.ts +0 -0
  175. /package/src/migrations/{latest → v1.0.0-rc.54}/order-access-log-delivery-after-bucket-policy/migration.js +0 -0
  176. /package/src/migrations/{latest → v1.0.0-rc.55}/backfill-generator-metadata/migration.d.ts +0 -0
  177. /package/src/migrations/{latest → v1.0.0-rc.55}/backfill-generator-metadata/migration.js +0 -0
  178. /package/src/migrations/{latest/user-identity-waf-allow-localhost-callback → v1.0.0-rc.56/dynamodb-local-remove-optimize-flag}/migration.d.ts +0 -0
  179. /package/src/migrations/{latest → v1.0.0-rc.56}/dynamodb-local-remove-optimize-flag/migration.js +0 -0
@@ -20,9 +20,10 @@ class <%- mcpServerClassName %>ClientStrands:
20
20
  "http://localhost:<%- mcpServerPort %>/mcp"
21
21
  )
22
22
  config = get_agentcore_runtime_config()
23
- agent_runtime_arn = config.get("agentRuntimes", {}).get(
23
+ agent_runtime = config.get("agentRuntimes", {}).get(
24
24
  "<%- mcpServerClassName %>"
25
25
  )
26
+ agent_runtime_arn = agent_runtime.get("arn") if agent_runtime else None
26
27
  if not agent_runtime_arn:
27
28
  raise RuntimeError(
28
29
  "No connected MCP server runtime named '<%- mcpServerClassName %>' found in runtime configuration."
@@ -20,9 +20,10 @@ class <%- mcpServerClassName %>ClientLangChain:
20
20
  "http://localhost:<%- mcpServerPort %>/mcp"
21
21
  )
22
22
  config = get_agentcore_runtime_config()
23
- agent_runtime_arn = config.get("agentRuntimes", {}).get(
23
+ agent_runtime = config.get("agentRuntimes", {}).get(
24
24
  "<%- mcpServerClassName %>"
25
25
  )
26
+ agent_runtime_arn = agent_runtime.get("arn") if agent_runtime else None
26
27
  if not agent_runtime_arn:
27
28
  raise RuntimeError(
28
29
  "No connected MCP server runtime named '<%- mcpServerClassName %>' found in runtime configuration."
@@ -10,7 +10,7 @@ import type { PyAgentMcpConnectionGeneratorSchema } from './schema';
10
10
  export interface PyAgentMcpConnectionMetadata {
11
11
  readonly framework: AgentFramework;
12
12
  }
13
- export declare const DEPENDENCIES: import("../../../utils/declared-dependencies").DependencyDeclaration<readonly import("../../../utils/declared-dependencies").DeclaredTsDependency<"@a2a-js/sdk" | "@aws/aws-distro-opentelemetry-node-autoinstrumentation" | "@opentelemetry/propagator-jaeger" | "minimatch" | "@aws-sdk/client-dynamodb" | "@aws-sdk/client-api-gateway" | "@aws-sdk/client-iam" | "@aws-sdk/client-bedrock-agentcore" | "@aws-sdk/client-bedrock-runtime" | "@aws-sdk/client-s3" | "@aws-sdk/client-sts" | "@aws-sdk/credential-providers" | "@aws-sdk/credential-provider-cognito-identity" | "@aws-sdk/client-secrets-manager" | "@aws-sdk/rds-signer" | "@aws-smithy/server-apigateway" | "@aws-smithy/server-node" | "@aws-lambda-powertools/logger" | "@aws-lambda-powertools/metrics" | "@aws-lambda-powertools/parameters" | "@aws-lambda-powertools/tracer" | "@aws-lambda-powertools/parser" | "@aws-sdk/client-appconfigdata" | "@middy/core" | "@nxlv/python" | "@nx-extend/terraform" | "nx" | "@nx/devkit" | "@nx/js" | "@nx/react" | "@nx/vite" | "@nx/vitest" | "@nx/workspace" | "create-nx-workspace" | "@swc-node/register" | "@swc/core" | "@modelcontextprotocol/sdk" | "@modelcontextprotocol/inspector" | "@ag-ui/a2ui-toolkit" | "@ag-ui/aws-strands" | "@ag-ui/client" | "@ag-ui/core" | "@ag-ui/encoder" | "agent-chat-cli" | "@copilotkit/react-core" | "rxjs" | "@strands-agents/sdk" | "@tanstack/react-router" | "@tanstack/router-plugin" | "@tanstack/router-generator" | "@tanstack/virtual-file-routes" | "@tanstack/router-utils" | "@cloudscape-design/board-components" | "@cloudscape-design/chat-components" | "@cloudscape-design/components" | "@cloudscape-design/global-styles" | "@tanstack/react-query" | "@tanstack/react-query-devtools" | "@trpc/tanstack-react-query" | "@trpc/client" | "@trpc/server" | "@types/node" | "@types/aws-lambda" | "@types/cors" | "@types/pg" | "@types/ws" | "@types/express" | "@smithy/config-resolver" | "@smithy/node-config-provider" | "@smithy/node-http-handler" | "@smithy/types" | "@vitest/coverage-v8" | "@vitest/ui" | "@astrojs/react" | "@astrojs/starlight" | "astro" | "aws4fetch" | "aws-cdk" | "aws-cdk-lib" | "aws-xray-sdk-core" | "constructs" | "cors" | "chalk" | "class-variance-authority" | "clsx" | "commander" | "electrodb" | "esbuild" | "event-source-polyfill" | "@types/event-source-polyfill" | "@biomejs/biome" | "@prisma/adapter-mariadb" | "@prisma/adapter-pg" | "@prisma/client" | "ejs" | "@types/ejs" | "express" | "fast-glob" | "husky" | "fs-extra" | "@types/fs-extra" | "make-dir-cli" | "mariadb" | "ncp" | "npm" | "npm-check-updates" | "oidc-client-ts" | "pg" | "prisma" | "react-oidc-context" | "react" | "react-dom" | "rimraf" | "rolldown" | "simple-git" | "source-map-support" | "starlight-blog" | "tailwindcss" | "@tailwindcss/vite" | "tsx" | "lucide-react" | "radix-ui" | "shadcn" | "tw-animate-css" | "tailwind-merge" | "vite" | "typescript" | "vitest" | "zod" | "ws", PyAgentMcpConnectionMetadata>[], readonly [{
13
+ export declare const DEPENDENCIES: import("../../../utils/declared-dependencies").DependencyDeclaration<readonly import("../../../utils/declared-dependencies").DeclaredTsDependency<"@a2a-js/sdk" | "@aws/aws-distro-opentelemetry-node-autoinstrumentation" | "@opentelemetry/propagator-jaeger" | "minimatch" | "@aws-sdk/client-dynamodb" | "@aws-sdk/client-api-gateway" | "@aws-sdk/client-iam" | "@aws-sdk/client-bedrock-agentcore" | "@aws-sdk/client-bedrock-runtime" | "@aws-sdk/client-s3" | "@aws-sdk/client-sts" | "@aws-sdk/credential-providers" | "@aws-sdk/credential-provider-cognito-identity" | "@aws-sdk/client-secrets-manager" | "@aws-sdk/rds-signer" | "@aws-smithy/server-apigateway" | "@aws-smithy/server-node" | "@aws-lambda-powertools/logger" | "@aws-lambda-powertools/metrics" | "@aws-lambda-powertools/parameters" | "@aws-lambda-powertools/tracer" | "@aws-lambda-powertools/parser" | "@aws-sdk/client-appconfigdata" | "@middy/core" | "@nxlv/python" | "@nx-extend/terraform" | "nx" | "@nx/devkit" | "@nx/js" | "@nx/react" | "@nx/vite" | "@nx/vitest" | "@nx/workspace" | "create-nx-workspace" | "@swc-node/register" | "@swc/core" | "@modelcontextprotocol/sdk" | "@modelcontextprotocol/inspector" | "@ag-ui/a2ui-toolkit" | "@ag-ui/aws-strands" | "@ag-ui/client" | "@ag-ui/core" | "@ag-ui/encoder" | "agent-chat-cli" | "@copilotkit/react-core" | "rxjs" | "@strands-agents/sdk" | "@tanstack/react-router" | "@tanstack/router-plugin" | "@tanstack/router-generator" | "@tanstack/virtual-file-routes" | "@tanstack/router-utils" | "@cloudscape-design/board-components" | "@cloudscape-design/chat-components" | "@cloudscape-design/components" | "@cloudscape-design/global-styles" | "@tanstack/react-query" | "@tanstack/react-query-devtools" | "@trpc/tanstack-react-query" | "@trpc/client" | "@trpc/server" | "@types/node" | "@types/aws-lambda" | "@types/cors" | "@types/pg" | "@types/ws" | "@types/express" | "@smithy/config-resolver" | "@smithy/node-config-provider" | "@smithy/node-http-handler" | "@smithy/types" | "@vitest/coverage-v8" | "@vitest/ui" | "@astrojs/react" | "@astrojs/starlight" | "astro" | "aws4fetch" | "aws-cdk" | "aws-cdk-lib" | "aws-xray-sdk-core" | "constructs" | "cors" | "chalk" | "class-variance-authority" | "clsx" | "commander" | "electrodb" | "esbuild" | "event-source-polyfill" | "@types/event-source-polyfill" | "@biomejs/biome" | "@prisma/adapter-mariadb" | "@prisma/adapter-pg" | "@prisma/client" | "ejs" | "@types/ejs" | "express" | "fast-glob" | "husky" | "fs-extra" | "@types/fs-extra" | "make-dir-cli" | "mariadb" | "ncp" | "npm" | "npm-check-updates" | "oidc-client-ts" | "pg" | "prisma" | "react-oidc-context" | "react" | "react-dom" | "rimraf" | "rolldown" | "rolldown-plugin-dts" | "@rollup/plugin-esm-shim" | "simple-git" | "source-map-support" | "starlight-blog" | "tailwindcss" | "@tailwindcss/vite" | "tsx" | "lucide-react" | "radix-ui" | "shadcn" | "tw-animate-css" | "tailwind-merge" | "vite" | "typescript" | "vitest" | "zod" | "ws", PyAgentMcpConnectionMetadata>[], readonly [{
14
14
  readonly name: "boto3";
15
15
  }, {
16
16
  readonly name: "httpx";
@@ -39,6 +39,8 @@ export const TestAgentClientContext = createContext<TestAgent | undefined>(
39
39
  const useCreateTestAgentClient = (): TestAgent => {
40
40
  const runtimeConfig = useRuntimeConfig();
41
41
  const agentRuntimeValue = runtimeConfig.agentRuntimes.TestAgent;
42
+ // A local-dev override is a plain URL; otherwise it's the agent's runtime
43
+ // ARN, so build the invocation URL from it.
42
44
  const apiUrl = agentRuntimeValue.startsWith('arn:')
43
45
  ? buildAgentCoreHttpUrl(agentRuntimeValue)
44
46
  : agentRuntimeValue;
@@ -99,6 +101,8 @@ export const TestAgentClientContext = createContext<TestAgent | undefined>(
99
101
  const useCreateTestAgentClient = (): TestAgent => {
100
102
  const runtimeConfig = useRuntimeConfig();
101
103
  const agentRuntimeValue = runtimeConfig.agentRuntimes.TestAgent;
104
+ // A local-dev override is a plain URL; otherwise it's the agent's runtime
105
+ // ARN, so build the invocation URL from it.
102
106
  const apiUrl = agentRuntimeValue.startsWith('arn:')
103
107
  ? buildAgentCoreHttpUrl(agentRuntimeValue)
104
108
  : agentRuntimeValue;
@@ -165,6 +169,8 @@ export const TestAgentClientContext = createContext<TestAgent | undefined>(
165
169
  const useCreateTestAgentClient = (): TestAgent => {
166
170
  const runtimeConfig = useRuntimeConfig();
167
171
  const agentRuntimeValue = runtimeConfig.agentRuntimes.TestAgent;
172
+ // A local-dev override is a plain URL; otherwise it's the agent's runtime
173
+ // ARN, so build the invocation URL from it.
168
174
  const apiUrl = agentRuntimeValue.startsWith('arn:')
169
175
  ? buildAgentCoreHttpUrl(agentRuntimeValue)
170
176
  : agentRuntimeValue;
@@ -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 interface PyAgentGeneratorSchema {\n project: string;\n framework?: PyAgentFramework;\n name?: string;\n infra?: PyAgentInfra;\n auth?: PyAgentAuth;\n protocol?: AgentProtocol;\n iac: IacOption;\n preferInstallDependencies?: boolean;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAUD,WASC"}
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 = '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"}
@@ -11,6 +11,8 @@ export type AgentProtocol = 'http' | 'a2a' | 'ag-ui';
11
11
 
12
12
  export type PyAgentAuth = 'iam' | 'cognito';
13
13
 
14
+ export type PyAgentSession = 'in-memory';
15
+
14
16
  export interface PyAgentGeneratorSchema {
15
17
  project: string;
16
18
  framework?: PyAgentFramework;
@@ -18,6 +20,7 @@ export interface PyAgentGeneratorSchema {
18
20
  infra?: PyAgentInfra;
19
21
  auth?: PyAgentAuth;
20
22
  protocol?: AgentProtocol;
23
+ session?: PyAgentSession;
21
24
  iac: IacOption;
22
25
  preferInstallDependencies?: boolean;
23
26
  }
@@ -2,6 +2,7 @@
2
2
  "$schema": "https://json-schema.org/schema",
3
3
  "$id": "py#agent",
4
4
  "title": "py#agent",
5
+ "x-label": "Agent",
5
6
  "description": "Add an AI Agent to a Python project",
6
7
  "type": "object",
7
8
  "properties": {
@@ -60,6 +61,14 @@
60
61
  "default": "agentcore",
61
62
  "x-priority": "important"
62
63
  },
64
+ "session": {
65
+ "type": "string",
66
+ "description": "The storage used to persist session for your Agent. Only 'in-memory' is currently supported for Python agents.",
67
+ "x-prompt": "How would you like to persist session for your Agent?",
68
+ "enum": ["in-memory"],
69
+ "default": "in-memory",
70
+ "x-priority": "important"
71
+ },
63
72
  "preferInstallDependencies": {
64
73
  "type": "boolean",
65
74
  "description": "Whether to prefer installing dependencies after the generator runs. Set to false to defer installing when batching multiple generators (an install still runs if needed so subsequent generators can compute the Nx project graph); install once at the end.",
@@ -35,7 +35,7 @@ exports[`py#dynamodb generator > should generate terraform modules when iac is t
35
35
  required_providers {
36
36
  aws = {
37
37
  source = "hashicorp/aws"
38
- version = "6.55.0"
38
+ version = "6.57.1"
39
39
  }
40
40
  }
41
41
  }
@@ -192,7 +192,7 @@ exports[`py#dynamodb generator > should generate terraform modules when iac is t
192
192
  required_providers {
193
193
  aws = {
194
194
  source = "hashicorp/aws"
195
- version = "6.55.0"
195
+ version = "6.57.1"
196
196
  }
197
197
  random = {
198
198
  source = "hashicorp/random"
@@ -2,6 +2,7 @@
2
2
  "$schema": "https://json-schema.org/schema",
3
3
  "$id": "py#dynamodb",
4
4
  "title": "py#dynamodb",
5
+ "x-label": "DynamoDB",
5
6
  "description": "Create a Python DynamoDB project",
6
7
  "type": "object",
7
8
  "properties": {
@@ -11,7 +11,7 @@ terraform {
11
11
  required_providers {
12
12
  aws = {
13
13
  source = "hashicorp/aws"
14
- version = "6.55.0"
14
+ version = "6.57.1"
15
15
  }
16
16
  }
17
17
  }
@@ -258,7 +258,7 @@ output "api_log_group_arn" {
258
258
  required_providers {
259
259
  aws = {
260
260
  source = "hashicorp/aws"
261
- version = "6.55.0"
261
+ version = "6.57.1"
262
262
  }
263
263
  }
264
264
  }
@@ -771,7 +771,7 @@ terraform {
771
771
  required_providers {
772
772
  aws = {
773
773
  source = "hashicorp/aws"
774
- version = "6.55.0"
774
+ version = "6.57.1"
775
775
  }
776
776
  }
777
777
  }
@@ -1018,7 +1018,7 @@ output "api_log_group_arn" {
1018
1018
  required_providers {
1019
1019
  aws = {
1020
1020
  source = "hashicorp/aws"
1021
- version = "6.55.0"
1021
+ version = "6.57.1"
1022
1022
  }
1023
1023
  }
1024
1024
  }
@@ -1603,7 +1603,7 @@ terraform {
1603
1603
  required_providers {
1604
1604
  aws = {
1605
1605
  source = "hashicorp/aws"
1606
- version = "6.55.0"
1606
+ version = "6.57.1"
1607
1607
  }
1608
1608
  }
1609
1609
  }
@@ -1850,7 +1850,7 @@ output "api_log_group_arn" {
1850
1850
  required_providers {
1851
1851
  aws = {
1852
1852
  source = "hashicorp/aws"
1853
- version = "6.55.0"
1853
+ version = "6.57.1"
1854
1854
  }
1855
1855
  }
1856
1856
  }
@@ -2340,7 +2340,7 @@ terraform {
2340
2340
  required_providers {
2341
2341
  aws = {
2342
2342
  source = "hashicorp/aws"
2343
- version = "6.55.0"
2343
+ version = "6.57.1"
2344
2344
  }
2345
2345
  random = {
2346
2346
  source = "hashicorp/random"
@@ -2596,7 +2596,7 @@ output "waf_web_acl_arn" {
2596
2596
  required_providers {
2597
2597
  aws = {
2598
2598
  source = "hashicorp/aws"
2599
- version = "6.55.0"
2599
+ version = "6.57.1"
2600
2600
  }
2601
2601
  }
2602
2602
  }
@@ -3346,7 +3346,7 @@ terraform {
3346
3346
  required_providers {
3347
3347
  aws = {
3348
3348
  source = "hashicorp/aws"
3349
- version = "6.55.0"
3349
+ version = "6.57.1"
3350
3350
  }
3351
3351
  random = {
3352
3352
  source = "hashicorp/random"
@@ -3602,7 +3602,7 @@ output "waf_web_acl_arn" {
3602
3602
  required_providers {
3603
3603
  aws = {
3604
3604
  source = "hashicorp/aws"
3605
- version = "6.55.0"
3605
+ version = "6.57.1"
3606
3606
  }
3607
3607
  }
3608
3608
  }
@@ -4341,7 +4341,7 @@ terraform {
4341
4341
  required_providers {
4342
4342
  aws = {
4343
4343
  source = "hashicorp/aws"
4344
- version = "6.55.0"
4344
+ version = "6.57.1"
4345
4345
  }
4346
4346
  random = {
4347
4347
  source = "hashicorp/random"
@@ -4597,7 +4597,7 @@ output "waf_web_acl_arn" {
4597
4597
  required_providers {
4598
4598
  aws = {
4599
4599
  source = "hashicorp/aws"
4600
- version = "6.55.0"
4600
+ version = "6.57.1"
4601
4601
  }
4602
4602
  }
4603
4603
  }
@@ -67,6 +67,11 @@ export declare const DEPENDENCIES: import("../../utils/declared-dependencies").D
67
67
  }, {
68
68
  readonly name: "fastapi[standard]";
69
69
  readonly group: "dev";
70
+ }, {
71
+ readonly name: "boto3";
72
+ readonly when: (m: IacMetadata) => boolean;
73
+ } & {
74
+ versionOnly: true;
70
75
  }]>;
71
76
  export declare const FAST_API_GENERATOR_INFO: NxGeneratorInfo;
72
77
  /**
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { generateFiles, joinPathFragments, OverwriteStrategy, readProjectConfiguration, updateProjectConfiguration } from "@nx/devkit";
5
5
  import { addPyDependencies } from "../../utils/add-dependencies.js";
6
- import { API_CONSTRUCTS_DEPENDENCIES, addApiGatewayInfra } from "../../utils/api-constructs/api-constructs.js";
6
+ import { API_CONSTRUCTS_DEPENDENCIES, API_CONSTRUCTS_PY_DEPENDENCIES, addApiGatewayInfra } from "../../utils/api-constructs/api-constructs.js";
7
7
  import { addSharedConstructsOpenApiMetadataGenerateTarget } from "../../utils/api-constructs/open-api-metadata.js";
8
8
  import { addPythonBundleTarget } from "../../utils/bundle/bundle.js";
9
9
  import { declareDependencies, ownedElsewhere } from "../../utils/declared-dependencies.js";
@@ -47,7 +47,8 @@ export const DEPENDENCIES = declareDependencies()({
47
47
  {
48
48
  name: 'fastapi[standard]',
49
49
  group: 'dev'
50
- }
50
+ },
51
+ ...ownedElsewhere(API_CONSTRUCTS_PY_DEPENDENCIES)
51
52
  ]
52
53
  });
53
54
  export const FAST_API_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
@@ -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 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 ],\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","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';\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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"}
@@ -2,6 +2,7 @@
2
2
  "$schema": "https://json-schema.org/schema",
3
3
  "$id": "PyFastApi",
4
4
  "title": "Create a Python FastAPI project",
5
+ "x-label": "FastAPI",
5
6
  "description": "Create a Python FastAPI project",
6
7
  "type": "object",
7
8
  "properties": {
@@ -70,7 +70,7 @@ exports[`lambda-handler project generator > terraform iac > should generate terr
70
70
  required_providers {
71
71
  aws = {
72
72
  source = "hashicorp/aws"
73
- version = "6.55.0"
73
+ version = "6.57.1"
74
74
  }
75
75
  archive = {
76
76
  source = "hashicorp/archive"
@@ -251,7 +251,7 @@ exports[`lambda-handler project generator > terraform iac > should match snapsho
251
251
  required_providers {
252
252
  aws = {
253
253
  source = "hashicorp/aws"
254
- version = "6.55.0"
254
+ version = "6.57.1"
255
255
  }
256
256
  archive = {
257
257
  source = "hashicorp/archive"
@@ -85,7 +85,9 @@ export class SnapshotBedrockServer
85
85
 
86
86
  rc.set('agentcore', 'agentRuntimes', {
87
87
  ...rc.get('agentcore').agentRuntimes,
88
- SnapshotBedrockServer: this.agentCoreRuntime.agentRuntimeArn,
88
+ SnapshotBedrockServer: {
89
+ arn: this.agentCoreRuntime.agentRuntimeArn,
90
+ },
89
91
  });
90
92
  }
91
93
 
@@ -153,7 +155,7 @@ exports[`py#mcp-server generator > should match snapshot for Terraform generated
153
155
  required_providers {
154
156
  aws = {
155
157
  source = "hashicorp/aws"
156
- version = "6.55.0"
158
+ version = "6.57.1"
157
159
  }
158
160
  null = {
159
161
  source = "hashicorp/null"
@@ -561,7 +563,7 @@ resource "null_resource" "runtime_ready" {
561
563
 
562
564
  provisioner "local-exec" {
563
565
  command = <<-EOT
564
- uv run --with boto3==1.43.51 python -c "
566
+ uv run --with boto3==1.43.63 python -c "
565
567
  import boto3
566
568
  import json
567
569
  import os
@@ -738,7 +740,7 @@ module "add_agent_runtime_to_runtime_config" {
738
740
 
739
741
  namespace = "agentcore"
740
742
  key = "agentRuntimes"
741
- value = { "TerraformSnapshotServer" = module.agent_core_runtime.agent_core_runtime_arn }
743
+ value = { "TerraformSnapshotServer" = { arn = module.agent_core_runtime.agent_core_runtime_arn } }
742
744
 
743
745
  depends_on = [module.agent_core_runtime]
744
746
  }
@@ -838,9 +840,9 @@ version = "0.1.0"
838
840
  dependencies = [
839
841
  "aws-lambda-powertools==3.31.1",
840
842
  "mcp==1.28.1",
841
- "uvicorn==0.51.0",
842
- "boto3==1.43.51",
843
- "aws-opentelemetry-distro==0.18.0"
843
+ "uvicorn==0.52.1",
844
+ "boto3==1.43.63",
845
+ "aws-opentelemetry-distro==0.19.0"
844
846
  ]
845
847
 
846
848
  [dependency-groups]
@@ -2,6 +2,7 @@
2
2
  "$schema": "https://json-schema.org/schema",
3
3
  "$id": "py#mcp-server",
4
4
  "title": "py#mcp-server",
5
+ "x-label": "MCP Server",
5
6
  "description": "Generate a Python Model Context Protocol (MCP) server for providing context to Large Language Models",
6
7
  "type": "object",
7
8
  "properties": {
@@ -214,7 +214,7 @@ exports[`py#rdb generator > should generate Terraform modules 1`] = `
214
214
  }
215
215
  aws = {
216
216
  source = "hashicorp/aws"
217
- version = "6.55.0"
217
+ version = "6.57.1"
218
218
  }
219
219
  null = {
220
220
  source = "hashicorp/null"
@@ -1501,7 +1501,7 @@ dependencies = [
1501
1501
  "alembic==1.18.5",
1502
1502
  "greenlet==3.5.4",
1503
1503
  "asyncpg==0.31.0",
1504
- "boto3==1.43.51",
1504
+ "boto3==1.43.63",
1505
1505
  "aws-lambda-powertools==3.31.1"
1506
1506
  ]
1507
1507
 
@@ -2,6 +2,7 @@
2
2
  "$schema": "https://json-schema.org/schema",
3
3
  "$id": "py#rdb",
4
4
  "title": "py#rdb",
5
+ "x-label": "Relational Database",
5
6
  "description": "Create a Python relational database project",
6
7
  "type": "object",
7
8
  "properties": {
@@ -256,7 +256,7 @@ RUN smithy-install/smithy/install
256
256
 
257
257
  # Add node dependencies for bundling
258
258
  WORKDIR /project
259
- RUN npm i -g pnpm@11.1.1 rolldown@1.0.0-beta.38
259
+ RUN npm i -g pnpm@11.1.1 rolldown@1.2.2
260
260
 
261
261
  # Copy project files
262
262
  COPY smithy-build.json .
@@ -278,7 +278,7 @@ RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \\
278
278
 
279
279
  # Install rolldown plugins with pnpm cache mount
280
280
  RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \\
281
- pnpm add -D rolldown-plugin-dts@0.16.5 @rollup/plugin-esm-shim@0.1.8
281
+ pnpm add -D rolldown-plugin-dts@0.28.0 @rollup/plugin-esm-shim@0.1.8
282
282
 
283
283
  RUN cat <<EOF > rolldown.config.js
284
284
  import { dts } from 'rolldown-plugin-dts';
@@ -500,7 +500,7 @@ RUN smithy-install/smithy/install
500
500
 
501
501
  # Add node dependencies for bundling
502
502
  WORKDIR /project
503
- RUN npm i -g pnpm@11.1.1 rolldown@1.0.0-beta.38
503
+ RUN npm i -g pnpm@11.1.1 rolldown@1.2.2
504
504
 
505
505
  # Copy project files
506
506
  COPY smithy-build.json .
@@ -522,7 +522,7 @@ RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \\
522
522
 
523
523
  # Install rolldown plugins with pnpm cache mount
524
524
  RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \\
525
- pnpm add -D rolldown-plugin-dts@0.16.5 @rollup/plugin-esm-shim@0.1.8
525
+ pnpm add -D rolldown-plugin-dts@0.28.0 @rollup/plugin-esm-shim@0.1.8
526
526
 
527
527
  RUN cat <<EOF > rolldown.config.js
528
528
  import { dts } from 'rolldown-plugin-dts';
@@ -17,7 +17,7 @@ RUN smithy-install/smithy/install
17
17
 
18
18
  # Add node dependencies for bundling
19
19
  WORKDIR /project
20
- RUN npm i -g pnpm@11.1.1 rolldown@1.0.0-beta.38
20
+ RUN npm i -g pnpm@11.1.1 rolldown@<%- rolldownVersion %>
21
21
 
22
22
  # Copy project files
23
23
  COPY smithy-build.json .
@@ -39,7 +39,7 @@ RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \
39
39
 
40
40
  # Install rolldown plugins with pnpm cache mount
41
41
  RUN --mount=type=cache,target=/root/.local/share/pnpm/store,id=pnpm-store \
42
- pnpm add -D rolldown-plugin-dts@0.16.5 @rollup/plugin-esm-shim@0.1.8
42
+ pnpm add -D rolldown-plugin-dts@<%- rolldownDtsVersion %> @rollup/plugin-esm-shim@<%- esmShimVersion %>
43
43
 
44
44
  RUN cat <<EOF > rolldown.config.js
45
45
  import { dts } from 'rolldown-plugin-dts';
@@ -5,12 +5,37 @@
5
5
  import { type GeneratorCallback, type Tree } from '@nx/devkit';
6
6
  import { type NxGeneratorInfo } from '../../utils/nx';
7
7
  import type { SmithyProjectGeneratorSchema } from './schema';
8
+ /**
9
+ * Packages `build.Dockerfile` installs into the build image to bundle the Smithy
10
+ * SSDK. Pinned in the file body rather than declared in a manifest, so declaring
11
+ * them here — never installed into the workspace — is what keeps the version sync
12
+ * moving them forward.
13
+ */
14
+ export declare const SSDK_BUNDLE_DEPENDENCIES: readonly [{
15
+ readonly name: "rolldown";
16
+ }, {
17
+ readonly name: "rolldown-plugin-dts";
18
+ }, {
19
+ readonly name: "@rollup/plugin-esm-shim";
20
+ }];
8
21
  export declare const DEPENDENCIES: import("../../utils/declared-dependencies").DependencyDeclaration<readonly [{
9
22
  readonly name: "ncp";
10
23
  }, {
11
24
  readonly name: "rimraf";
12
25
  }, {
13
26
  readonly name: "make-dir-cli";
27
+ }, {
28
+ readonly name: "rolldown";
29
+ } & {
30
+ versionOnly: true;
31
+ }, {
32
+ readonly name: "rolldown-plugin-dts";
33
+ } & {
34
+ versionOnly: true;
35
+ }, {
36
+ readonly name: "@rollup/plugin-esm-shim";
37
+ } & {
38
+ versionOnly: true;
14
39
  }], readonly import("../../utils/declared-dependencies").DeclaredPyDependency<"a2a-sdk" | "ag-ui-langgraph" | "ag-ui-protocol" | "ag-ui-strands" | "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" | "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>>[]>;
15
40
  export declare const SMITHY_PROJECT_GENERATOR_INFO: NxGeneratorInfo;
16
41
  export declare const smithyProjectGenerator: (tree: Tree, options: SmithyProjectGeneratorSchema) => Promise<GeneratorCallback>;
@@ -4,7 +4,7 @@
4
4
  */ import { addProjectConfiguration, generateFiles, joinPathFragments, OverwriteStrategy } from "@nx/devkit";
5
5
  import { getTsLibDetails } from "../../ts/lib/generator.js";
6
6
  import { resolveContainers } from "../../utils/containers.js";
7
- import { declareDependencies } from "../../utils/declared-dependencies.js";
7
+ import { declareDependencies, ownedElsewhere } from "../../utils/declared-dependencies.js";
8
8
  import { formatFilesInSubtree } from "../../utils/format.js";
9
9
  import { FS_DEPENDENCIES, FsCommands } from "../../utils/fs.js";
10
10
  import { installDependencies } from "../../utils/install.js";
@@ -12,9 +12,27 @@ import { addGeneratorMetricsIfApplicable } from "../../utils/metrics.js";
12
12
  import { toClassName, toKebabCase } from "../../utils/names.js";
13
13
  import { getNpmScope } from "../../utils/npm-scope.js";
14
14
  import { addGeneratorMetadata, getGeneratorInfo, projectExists } from "../../utils/nx.js";
15
+ import { TS_VERSIONS } from "../../utils/versions.js";
16
+ /**
17
+ * Packages `build.Dockerfile` installs into the build image to bundle the Smithy
18
+ * SSDK. Pinned in the file body rather than declared in a manifest, so declaring
19
+ * them here — never installed into the workspace — is what keeps the version sync
20
+ * moving them forward.
21
+ */ export const SSDK_BUNDLE_DEPENDENCIES = [
22
+ {
23
+ name: 'rolldown'
24
+ },
25
+ {
26
+ name: 'rolldown-plugin-dts'
27
+ },
28
+ {
29
+ name: '@rollup/plugin-esm-shim'
30
+ }
31
+ ];
15
32
  export const DEPENDENCIES = declareDependencies()({
16
33
  ts: [
17
- ...FS_DEPENDENCIES
34
+ ...FS_DEPENDENCIES,
35
+ ...ownedElsewhere(SSDK_BUNDLE_DEPENDENCIES)
18
36
  ]
19
37
  });
20
38
  export const SMITHY_PROJECT_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
@@ -67,7 +85,10 @@ export const smithyProjectGenerator = async (tree, options)=>{
67
85
  namespace,
68
86
  serviceNameClassName,
69
87
  serviceNameKebabCase,
70
- scope
88
+ scope,
89
+ rolldownVersion: TS_VERSIONS.rolldown,
90
+ rolldownDtsVersion: TS_VERSIONS['rolldown-plugin-dts'],
91
+ esmShimVersion: TS_VERSIONS['@rollup/plugin-esm-shim']
71
92
  }, {
72
93
  // Smithy models are user-owned — a re-run must not discard edits
73
94
  overwriteStrategy: OverwriteStrategy.KeepExisting