@aws/nx-plugin 1.0.0-rc.8 → 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.
Files changed (1452) hide show
  1. package/LICENSE-THIRD-PARTY +6006 -4000
  2. package/README.md +16 -96
  3. package/generators.json +162 -10
  4. package/migrations.json +206 -0
  5. package/package.json +40 -21
  6. package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +295 -0
  7. package/src/agentcore-gateway/agent-connection/generator.d.ts +19 -0
  8. package/src/agentcore-gateway/agent-connection/generator.js +95 -0
  9. package/src/agentcore-gateway/agent-connection/generator.js.map +1 -0
  10. package/src/agentcore-gateway/agent-connection/schema.d.js +6 -0
  11. package/src/agentcore-gateway/agent-connection/schema.d.js.map +1 -0
  12. package/src/agentcore-gateway/agent-connection/schema.d.ts +13 -0
  13. package/src/agentcore-gateway/agent-connection/schema.json +31 -0
  14. package/src/agentcore-gateway/attach-upstream.d.ts +49 -0
  15. package/src/agentcore-gateway/attach-upstream.js +59 -0
  16. package/src/agentcore-gateway/attach-upstream.js.map +1 -0
  17. package/src/agentcore-gateway/files/cedar/policies/README.md +61 -0
  18. package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +26 -0
  19. package/src/agentcore-gateway/files/project/http/local-dev.ts.template +77 -0
  20. package/src/agentcore-gateway/files/project/mcp/local-dev.ts.template +134 -0
  21. package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
  22. package/src/agentcore-gateway/gateway-connection/generator.js +103 -0
  23. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
  24. package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
  25. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
  26. package/src/agentcore-gateway/gateway-connection/schema.d.ts +13 -0
  27. package/src/agentcore-gateway/gateway-connection/schema.json +31 -0
  28. package/src/agentcore-gateway/generator.d.ts +89 -0
  29. package/src/agentcore-gateway/generator.js +212 -0
  30. package/src/agentcore-gateway/generator.js.map +1 -0
  31. package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
  32. package/src/agentcore-gateway/mcp-connection/generator.js +61 -0
  33. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
  34. package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
  35. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
  36. package/src/agentcore-gateway/mcp-connection/schema.d.ts +13 -0
  37. package/src/agentcore-gateway/mcp-connection/schema.json +31 -0
  38. package/src/agentcore-gateway/react-connection/__snapshots__/generator.spec.ts.snap +68 -0
  39. package/src/agentcore-gateway/react-connection/generator.d.ts +19 -0
  40. package/src/agentcore-gateway/react-connection/generator.js +119 -0
  41. package/src/agentcore-gateway/react-connection/generator.js.map +1 -0
  42. package/src/agentcore-gateway/react-connection/schema.d.js +6 -0
  43. package/src/agentcore-gateway/react-connection/schema.d.js.map +1 -0
  44. package/src/agentcore-gateway/react-connection/schema.d.ts +13 -0
  45. package/src/agentcore-gateway/react-connection/schema.json +31 -0
  46. package/src/agentcore-gateway/schema.d.js +6 -0
  47. package/src/agentcore-gateway/schema.d.js.map +1 -0
  48. package/src/agentcore-gateway/schema.d.ts +17 -0
  49. package/src/agentcore-gateway/schema.json +72 -0
  50. package/src/agentcore-harness/__snapshots__/generator.spec.ts.snap +238 -0
  51. package/src/agentcore-harness/files/project/README.md.template +83 -0
  52. package/src/agentcore-harness/files/project/scripts/chat.ts.template +99 -0
  53. package/src/agentcore-harness/files/project/src/PROMPT.md.template +16 -0
  54. package/src/agentcore-harness/generator.d.ts +62 -0
  55. package/src/agentcore-harness/generator.js +158 -0
  56. package/src/agentcore-harness/generator.js.map +1 -0
  57. package/src/agentcore-harness/schema.d.js +8 -0
  58. package/src/agentcore-harness/schema.d.js.map +1 -0
  59. package/src/agentcore-harness/schema.d.ts +17 -0
  60. package/src/agentcore-harness/schema.json +53 -0
  61. package/src/connection/agent-local-dev.d.ts +49 -0
  62. package/src/connection/agent-local-dev.js +84 -0
  63. package/src/connection/agent-local-dev.js.map +1 -0
  64. package/src/connection/agent-runtime-config.js +9 -14
  65. package/src/connection/agent-runtime-config.js.map +1 -1
  66. package/src/connection/gateway-runtime-config.d.ts +19 -0
  67. package/src/connection/gateway-runtime-config.js +47 -0
  68. package/src/connection/gateway-runtime-config.js.map +1 -0
  69. package/src/connection/generator.d.ts +4 -11
  70. package/src/connection/generator.js +172 -194
  71. package/src/connection/generator.js.map +1 -1
  72. package/src/connection/{serve-local.d.ts → local-dev.d.ts} +3 -3
  73. package/src/connection/local-dev.js +37 -0
  74. package/src/connection/local-dev.js.map +1 -0
  75. package/src/connection/scaffold-catalog.d.ts +267 -0
  76. package/src/connection/scaffold-catalog.js +347 -0
  77. package/src/connection/scaffold-catalog.js.map +1 -0
  78. package/src/connection/schema-resolver.d.ts +5 -0
  79. package/src/connection/schema-resolver.js +27 -0
  80. package/src/connection/schema-resolver.js.map +1 -0
  81. package/src/connection/schema.d.js +6 -0
  82. package/src/connection/schema.d.js.map +1 -0
  83. package/src/connection/schema.d.ts +1 -0
  84. package/src/connection/schema.json +5 -0
  85. package/src/connection/supported-connections.d.ts +116 -0
  86. package/src/connection/supported-connections.js +163 -0
  87. package/src/connection/supported-connections.js.map +1 -0
  88. package/src/index.d.ts +1 -1
  89. package/src/index.js +2 -5
  90. package/src/index.js.map +1 -1
  91. package/src/infra/app/__snapshots__/generator.spec.ts.snap +119 -72
  92. package/src/infra/app/files/app/README.md.template +8 -4
  93. package/src/infra/app/files/app/src/main.ts.template +5 -1
  94. package/src/infra/app/files/app/src/stages/application-stage.ts.template +1 -1
  95. package/src/infra/app/generator.d.ts +44 -1
  96. package/src/infra/app/generator.js +195 -127
  97. package/src/infra/app/generator.js.map +1 -1
  98. package/src/infra/app/schema.d.js +6 -0
  99. package/src/infra/app/schema.d.js.map +1 -0
  100. package/src/infra/app/schema.d.ts +1 -1
  101. package/src/infra/app/schema.json +5 -0
  102. package/src/init/generator.d.ts +31 -0
  103. package/src/init/generator.js +46 -0
  104. package/src/init/generator.js.map +1 -0
  105. package/src/init/schema.d.js +6 -0
  106. package/src/init/schema.d.js.map +1 -0
  107. package/src/init/schema.d.ts +16 -0
  108. package/src/init/schema.json +35 -0
  109. package/src/internal/test-matrix/generator.d.ts +29 -0
  110. package/src/internal/test-matrix/generator.js +713 -0
  111. package/src/internal/test-matrix/generator.js.map +1 -0
  112. package/src/internal/test-matrix/schema.d.js +6 -0
  113. package/src/internal/test-matrix/schema.d.js.map +1 -0
  114. package/src/internal/test-matrix/schema.d.ts +12 -0
  115. package/src/internal/test-matrix/schema.json +21 -0
  116. package/src/license/config-types.d.ts +2 -2
  117. package/src/license/config-types.js +5 -3
  118. package/src/license/config-types.js.map +1 -1
  119. package/src/license/config.d.ts +12 -3
  120. package/src/license/config.js +295 -242
  121. package/src/license/config.js.map +1 -1
  122. package/src/license/dependency-check/check.d.ts +2 -2
  123. package/src/license/dependency-check/check.js +51 -46
  124. package/src/license/dependency-check/check.js.map +1 -1
  125. package/src/license/dependency-check/collectors/collector.js +41 -71
  126. package/src/license/dependency-check/collectors/collector.js.map +1 -1
  127. package/src/license/dependency-check/collectors/npm-collector.js +34 -41
  128. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -1
  129. package/src/license/dependency-check/collectors/python-collector.js +61 -62
  130. package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
  131. package/src/license/dependency-check/evaluator.d.ts +1 -1
  132. package/src/license/dependency-check/evaluator.js +91 -74
  133. package/src/license/dependency-check/evaluator.js.map +1 -1
  134. package/src/license/dependency-check/executor.js +30 -22
  135. package/src/license/dependency-check/executor.js.map +1 -1
  136. package/src/license/dependency-check/pre-approved.d.ts +1 -1
  137. package/src/license/dependency-check/pre-approved.js +949 -336
  138. package/src/license/dependency-check/pre-approved.js.map +1 -1
  139. package/src/license/dependency-check/types.d.ts +1 -1
  140. package/src/license/dependency-check/types.js +2 -3
  141. package/src/license/dependency-check/types.js.map +1 -1
  142. package/src/license/generator.d.ts +1 -1
  143. package/src/license/generator.js +60 -77
  144. package/src/license/generator.js.map +1 -1
  145. package/src/license/index.d.ts +4 -4
  146. package/src/license/index.js +3 -9
  147. package/src/license/index.js.map +1 -1
  148. package/src/license/known-exceptions.d.ts +2 -3
  149. package/src/license/known-exceptions.js +12 -28
  150. package/src/license/known-exceptions.js.map +1 -1
  151. package/src/license/schema.d.js +6 -0
  152. package/src/license/schema.d.js.map +1 -0
  153. package/src/license/schema.d.ts +2 -0
  154. package/src/license/schema.json +5 -0
  155. package/src/license/sync/generator.js +94 -119
  156. package/src/license/sync/generator.js.map +1 -1
  157. package/src/license/sync/project-file-sync.d.ts +1 -1
  158. package/src/license/sync/project-file-sync.js +28 -35
  159. package/src/license/sync/project-file-sync.js.map +1 -1
  160. package/src/mcp-server/dev-server.d.ts +1 -0
  161. package/src/mcp-server/dev-server.js +18 -0
  162. package/src/mcp-server/dev-server.js.map +1 -0
  163. package/src/mcp-server/generator-info.d.ts +3 -3
  164. package/src/mcp-server/generator-info.js +149 -165
  165. package/src/mcp-server/generator-info.js.map +1 -1
  166. package/src/mcp-server/guide-pipeline.d.ts +1 -1
  167. package/src/mcp-server/guide-pipeline.js +199 -206
  168. package/src/mcp-server/guide-pipeline.js.map +1 -1
  169. package/src/mcp-server/guide-render.js +10 -25
  170. package/src/mcp-server/guide-render.js.map +1 -1
  171. package/src/mcp-server/index.js +6 -10
  172. package/src/mcp-server/index.js.map +1 -1
  173. package/src/mcp-server/mdx-ast.js +39 -57
  174. package/src/mcp-server/mdx-ast.js.map +1 -1
  175. package/src/mcp-server/option-filter.js +33 -47
  176. package/src/mcp-server/option-filter.js.map +1 -1
  177. package/src/mcp-server/schema-registry.d.ts +9 -3
  178. package/src/mcp-server/schema-registry.js +41 -38
  179. package/src/mcp-server/schema-registry.js.map +1 -1
  180. package/src/mcp-server/schema.d.ts +1 -1
  181. package/src/mcp-server/schema.js +9 -7
  182. package/src/mcp-server/schema.js.map +1 -1
  183. package/src/mcp-server/server.js +24 -24
  184. package/src/mcp-server/server.js.map +1 -1
  185. package/src/mcp-server/tools/add-to-existing-project.d.ts +12 -0
  186. package/src/mcp-server/tools/add-to-existing-project.js +36 -0
  187. package/src/mcp-server/tools/add-to-existing-project.js.map +1 -0
  188. package/src/mcp-server/tools/create-workspace-command.js +23 -24
  189. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  190. package/src/mcp-server/tools/general-guidance.d.ts +2 -2
  191. package/src/mcp-server/tools/general-guidance.js +55 -32
  192. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  193. package/src/mcp-server/tools/generator-guide.d.ts +1 -1
  194. package/src/mcp-server/tools/generator-guide.js +29 -37
  195. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  196. package/src/mcp-server/tools/list-generators.d.ts +1 -1
  197. package/src/mcp-server/tools/list-generators.js +19 -25
  198. package/src/mcp-server/tools/list-generators.js.map +1 -1
  199. package/src/mcp-server/tools/upgrade-workspace.d.ts +11 -0
  200. package/src/mcp-server/tools/upgrade-workspace.js +32 -0
  201. package/src/mcp-server/tools/upgrade-workspace.js.map +1 -0
  202. package/src/migrations/latest/apt-security-updates-in-container-images/__snapshots__/migration.spec.ts.snap +90 -0
  203. package/src/migrations/latest/apt-security-updates-in-container-images/metadata.json +3 -0
  204. package/src/migrations/latest/apt-security-updates-in-container-images/migration.d.ts +6 -0
  205. package/src/migrations/latest/apt-security-updates-in-container-images/migration.js +90 -0
  206. package/src/migrations/latest/apt-security-updates-in-container-images/migration.js.map +1 -0
  207. package/src/migrations/latest/dynamodb-configurable-encryption/__snapshots__/migration.spec.ts.snap +429 -0
  208. package/src/migrations/latest/dynamodb-configurable-encryption/metadata.json +3 -0
  209. package/src/migrations/latest/dynamodb-configurable-encryption/migration.d.ts +6 -0
  210. package/src/migrations/latest/dynamodb-configurable-encryption/migration.js +325 -0
  211. package/src/migrations/latest/dynamodb-configurable-encryption/migration.js.map +1 -0
  212. package/src/migrations/latest/py-agent-ag-ui-hooks/metadata.json +3 -0
  213. package/src/migrations/latest/py-agent-ag-ui-hooks/migration.d.ts +6 -0
  214. package/src/migrations/latest/py-agent-ag-ui-hooks/migration.js +113 -0
  215. package/src/migrations/latest/py-agent-ag-ui-hooks/migration.js.map +1 -0
  216. package/src/migrations/latest/py-agent-session-id-middleware-extraction/metadata.json +3 -0
  217. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.d.ts +2 -0
  218. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js +118 -0
  219. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js.map +1 -0
  220. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/metadata.json +3 -0
  221. package/{sdk/utils/ast.d.ts → src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.d.ts} +2 -2
  222. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js +38 -0
  223. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js.map +1 -0
  224. package/src/migrations/latest/static-website-configurable-waf-encryption/metadata.json +3 -0
  225. package/src/migrations/latest/static-website-configurable-waf-encryption/migration.d.ts +6 -0
  226. package/src/migrations/latest/static-website-configurable-waf-encryption/migration.js +418 -0
  227. package/src/migrations/latest/static-website-configurable-waf-encryption/migration.js.map +1 -0
  228. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/metadata.json +3 -0
  229. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.d.ts +2 -0
  230. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.js +136 -0
  231. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.js.map +1 -0
  232. package/src/migrations/latest/user-identity-configurable-mfa/metadata.json +3 -0
  233. package/src/migrations/latest/user-identity-configurable-mfa/migration.d.ts +6 -0
  234. package/src/migrations/latest/user-identity-configurable-mfa/migration.js +362 -0
  235. package/src/migrations/latest/user-identity-configurable-mfa/migration.js.map +1 -0
  236. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/metadata.json +3 -0
  237. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.d.ts +6 -0
  238. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js +65 -0
  239. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js.map +1 -0
  240. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/metadata.json +3 -0
  241. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.d.ts +6 -0
  242. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js +108 -0
  243. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js.map +1 -0
  244. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/metadata.json +3 -0
  245. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.d.ts +6 -0
  246. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js +128 -0
  247. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -0
  248. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/metadata.json +3 -0
  249. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.d.ts +6 -0
  250. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js +215 -0
  251. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js.map +1 -0
  252. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/metadata.json +3 -0
  253. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.d.ts +6 -0
  254. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js +93 -0
  255. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
  256. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/metadata.json +3 -0
  257. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.d.ts +96 -0
  258. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js +670 -0
  259. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js.map +1 -0
  260. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/metadata.json +3 -0
  261. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.d.ts +6 -0
  262. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js +89 -0
  263. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js.map +1 -0
  264. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/metadata.json +3 -0
  265. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.d.ts +6 -0
  266. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js +449 -0
  267. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js.map +1 -0
  268. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/metadata.json +3 -0
  269. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.d.ts +6 -0
  270. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js +78 -0
  271. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js.map +1 -0
  272. package/src/{smithy/project/files/build.Dockerfile.template → migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/rc57-service.Dockerfile.fixture} +1 -4
  273. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/__snapshots__/migration.spec.ts.snap +223 -0
  274. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/metadata.json +3 -0
  275. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.d.ts +6 -0
  276. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js +217 -0
  277. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js.map +1 -0
  278. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/__snapshots__/migration.spec.ts.snap +149 -0
  279. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/metadata.json +3 -0
  280. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.d.ts +6 -0
  281. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js +195 -0
  282. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js.map +1 -0
  283. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/__snapshots__/migration.spec.ts.snap +57 -0
  284. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/metadata.json +3 -0
  285. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.d.ts +6 -0
  286. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js +77 -0
  287. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js.map +1 -0
  288. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/__snapshots__/migration.spec.ts.snap +48 -0
  289. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/metadata.json +3 -0
  290. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.d.ts +6 -0
  291. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js +91 -0
  292. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js.map +1 -0
  293. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/metadata.json +3 -0
  294. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.d.ts +6 -0
  295. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js +412 -0
  296. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js.map +1 -0
  297. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/metadata.json +3 -0
  298. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.d.ts +6 -0
  299. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js +33 -0
  300. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js.map +1 -0
  301. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/metadata.json +3 -0
  302. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.d.ts +6 -0
  303. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js +83 -0
  304. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js.map +1 -0
  305. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/legacy-service.Dockerfile.fixture +95 -0
  306. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/metadata.json +3 -0
  307. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.d.ts +6 -0
  308. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js +154 -0
  309. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js.map +1 -0
  310. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/metadata.json +3 -0
  311. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.d.ts +6 -0
  312. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js +71 -0
  313. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js.map +1 -0
  314. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/metadata.json +3 -0
  315. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.d.ts +6 -0
  316. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js +57 -0
  317. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js.map +1 -0
  318. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/metadata.json +3 -0
  319. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.d.ts +6 -0
  320. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js +123 -0
  321. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js.map +1 -0
  322. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/build-system-prompt.ts.fixture +23 -0
  323. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/build-user-prompt.ts.fixture +96 -0
  324. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/config-path.ts.fixture +1 -0
  325. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/file-to-translate.ts.fixture +10 -0
  326. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/get-files-to-translate.ts.fixture +96 -0
  327. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/header.ts.fixture +15 -0
  328. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/log.ts.fixture +18 -0
  329. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/main-call.ts.fixture +6 -0
  330. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/main.ts.fixture +79 -0
  331. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/project-root.ts.fixture +1 -0
  332. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/run-with-concurrency.ts.fixture +57 -0
  333. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/scripts-dir.ts.fixture +1 -0
  334. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/translate-file-for-language.ts.fixture +61 -0
  335. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/already-migrated.grit +1 -0
  336. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/build-system-prompt.grit +6 -0
  337. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/build-user-prompt.grit +6 -0
  338. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/config-path.grit +1 -0
  339. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/file-to-translate.grit +11 -0
  340. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/get-files-to-translate.grit +7 -0
  341. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/log.grit +3 -0
  342. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/main-call.grit +1 -0
  343. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/main.grit +8 -0
  344. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/project-root.grit +1 -0
  345. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/run-with-concurrency.grit +6 -0
  346. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/translate-file-for-language.grit +6 -0
  347. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/metadata.json +3 -0
  348. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.d.ts +2 -0
  349. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js +103 -0
  350. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js.map +1 -0
  351. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/test-fixtures/released-script-first.ts.fixture +430 -0
  352. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/test-fixtures/released-script.ts.fixture +431 -0
  353. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/metadata.json +3 -0
  354. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.d.ts +6 -0
  355. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js +246 -0
  356. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js.map +1 -0
  357. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/metadata.json +3 -0
  358. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.d.ts +6 -0
  359. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js +329 -0
  360. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js.map +1 -0
  361. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/metadata.json +3 -0
  362. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.d.ts +2 -0
  363. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js +308 -0
  364. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js.map +1 -0
  365. package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +147 -33
  366. package/src/open-api/ts-client/__snapshots__/generator.arrays.spec.ts.snap +308 -75
  367. package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +298 -74
  368. package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +748 -103
  369. package/src/open-api/ts-client/__snapshots__/generator.content-type.spec.ts.snap +230 -37
  370. package/src/open-api/ts-client/__snapshots__/generator.duplicate-types.spec.ts.snap +249 -52
  371. package/src/open-api/ts-client/__snapshots__/generator.edge-cases.spec.ts.snap +5535 -0
  372. package/src/open-api/ts-client/__snapshots__/generator.fast-api-gaps.spec.ts.snap +736 -0
  373. package/src/open-api/ts-client/__snapshots__/generator.fast-api.spec.ts.snap +305 -71
  374. package/src/open-api/ts-client/__snapshots__/generator.multipart.spec.ts.snap +298 -0
  375. package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +353 -82
  376. package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +176 -55
  377. package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +100 -24
  378. package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +147 -33
  379. package/src/open-api/ts-client/__snapshots__/generator.spec-compliance.spec.ts.snap +1883 -0
  380. package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +392 -88
  381. package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +200 -48
  382. package/src/open-api/ts-client/files/client.gen.ts.template +358 -24
  383. package/src/open-api/ts-client/files/types.gen.ts.template +6 -4
  384. package/src/open-api/ts-client/generator.d.ts +1 -1
  385. package/src/open-api/ts-client/generator.js +41 -26
  386. package/src/open-api/ts-client/generator.js.map +1 -1
  387. package/src/open-api/ts-client/schema.d.js +6 -0
  388. package/src/open-api/ts-client/schema.d.js.map +1 -0
  389. package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +7 -2
  390. package/src/open-api/ts-hooks/generator.d.ts +1 -1
  391. package/src/open-api/ts-hooks/generator.js +17 -21
  392. package/src/open-api/ts-hooks/generator.js.map +1 -1
  393. package/src/open-api/ts-hooks/generator.spec.tsx +76 -6
  394. package/src/open-api/ts-hooks/schema.d.js +6 -0
  395. package/src/open-api/ts-hooks/schema.d.js.map +1 -0
  396. package/src/open-api/ts-metadata/generator.d.ts +1 -1
  397. package/src/open-api/ts-metadata/generator.js +12 -20
  398. package/src/open-api/ts-metadata/generator.js.map +1 -1
  399. package/src/open-api/ts-metadata/schema.d.js +6 -0
  400. package/src/open-api/ts-metadata/schema.d.js.map +1 -0
  401. package/src/open-api/utils/codegen-data/languages.d.ts +1 -7
  402. package/src/open-api/utils/codegen-data/languages.js +59 -66
  403. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  404. package/src/open-api/utils/codegen-data/types.d.ts +255 -10
  405. package/src/open-api/utils/codegen-data/types.js +54 -30
  406. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  407. package/src/open-api/utils/codegen-data.d.ts +4 -4
  408. package/src/open-api/utils/codegen-data.js +494 -674
  409. package/src/open-api/utils/codegen-data.js.map +1 -1
  410. package/src/open-api/utils/normalise.d.ts +1 -1
  411. package/src/open-api/utils/normalise.js +437 -246
  412. package/src/open-api/utils/normalise.js.map +1 -1
  413. package/src/open-api/utils/parse.d.ts +1 -1
  414. package/src/open-api/utils/parse.js +8 -14
  415. package/src/open-api/utils/parse.js.map +1 -1
  416. package/src/open-api/utils/parser.d.ts +55 -0
  417. package/src/open-api/utils/parser.js +787 -0
  418. package/src/open-api/utils/parser.js.map +1 -0
  419. package/src/open-api/utils/refs.d.ts +1 -1
  420. package/src/open-api/utils/refs.js +12 -22
  421. package/src/open-api/utils/refs.js.map +1 -1
  422. package/src/open-api/utils/types.d.ts +18 -0
  423. package/src/open-api/utils/types.js +5 -2
  424. package/src/open-api/utils/types.js.map +1 -1
  425. package/src/preset/__snapshots__/generator.spec.ts.snap +101 -20
  426. package/src/preset/generator.d.ts +15 -2
  427. package/src/preset/generator.js +76 -151
  428. package/src/preset/generator.js.map +1 -1
  429. package/src/preset/schema.d.js +6 -0
  430. package/src/preset/schema.d.js.map +1 -0
  431. package/src/preset/schema.d.ts +6 -3
  432. package/src/preset/schema.json +16 -5
  433. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +931 -0
  434. package/src/py/agent/__snapshots__/generator.core.spec.ts.snap +186 -0
  435. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +771 -0
  436. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +1310 -0
  437. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +231 -0
  438. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +29 -0
  439. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +29 -0
  440. package/src/py/agent/a2a-connection/generator.d.ts +25 -1
  441. package/src/py/agent/a2a-connection/generator.js +146 -95
  442. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  443. package/src/py/agent/a2a-connection/schema.d.js +8 -0
  444. package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
  445. package/src/py/agent/a2a-connection/schema.d.ts +2 -1
  446. package/src/py/agent/a2a-connection/schema.json +5 -0
  447. package/src/py/agent/files/deploy/Dockerfile.template +15 -1
  448. package/src/py/agent/files/langchain/a2a/main.py.template +83 -0
  449. package/src/py/agent/files/langchain/ag-ui/main.py.template +76 -0
  450. package/src/py/agent/files/langchain/common/agent.py.template +30 -0
  451. package/src/py/agent/files/langchain/common/middleware/__init__.py.template +0 -0
  452. package/src/py/agent/files/langchain/common/middleware/session_id_middleware.py.template +17 -0
  453. package/src/py/agent/files/langchain/common/session.py.template +61 -0
  454. package/src/py/agent/files/{http → langchain/http}/init.py.template +17 -25
  455. package/src/py/agent/files/langchain/http/main.py.template +69 -0
  456. package/src/py/agent/files/strands/a2a/main.py.template +61 -0
  457. package/src/py/agent/files/strands/ag-ui/main.py.template +86 -0
  458. package/src/py/agent/files/strands/common/__init__.py.template +0 -0
  459. package/src/py/agent/files/{common → strands/common}/agent.py.template +13 -0
  460. package/src/py/agent/files/strands/common/middleware/__init__.py.template +0 -0
  461. package/src/py/agent/files/strands/common/middleware/session_id_middleware.py.template +17 -0
  462. package/src/py/agent/files/strands/common/session.py.template +36 -0
  463. package/src/py/agent/files/strands/http/init.py.template +97 -0
  464. package/src/py/agent/files/{http → strands/http}/main.py.template +5 -29
  465. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +184 -0
  466. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
  467. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +34 -0
  468. package/src/py/agent/gateway-connection/generator.d.ts +33 -0
  469. package/src/py/agent/gateway-connection/generator.js +153 -0
  470. package/src/py/agent/gateway-connection/generator.js.map +1 -0
  471. package/src/py/agent/gateway-connection/schema.d.js +6 -0
  472. package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
  473. package/src/py/agent/gateway-connection/schema.d.ts +13 -0
  474. package/src/py/agent/gateway-connection/schema.json +31 -0
  475. package/src/py/agent/generator.d.ts +165 -2
  476. package/src/py/agent/generator.js +446 -197
  477. package/src/py/agent/generator.js.map +1 -1
  478. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +156 -89
  479. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +31 -0
  480. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +31 -0
  481. package/src/py/agent/mcp-connection/generator.d.ts +24 -1
  482. package/src/py/agent/mcp-connection/generator.js +103 -130
  483. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  484. package/src/py/agent/mcp-connection/schema.d.js +8 -0
  485. package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
  486. package/src/py/agent/mcp-connection/schema.d.ts +2 -1
  487. package/src/py/agent/mcp-connection/schema.json +5 -0
  488. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +17 -19
  489. package/src/py/agent/react-connection/generator.d.ts +152 -3
  490. package/src/py/agent/react-connection/generator.js +105 -65
  491. package/src/py/agent/react-connection/generator.js.map +1 -1
  492. package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +5 -5
  493. package/src/py/agent/react-connection/local-dev.js +36 -0
  494. package/src/py/agent/react-connection/local-dev.js.map +1 -0
  495. package/src/py/agent/react-connection/schema.d.js +8 -0
  496. package/src/py/agent/react-connection/schema.d.js.map +1 -0
  497. package/src/py/agent/react-connection/schema.d.ts +2 -1
  498. package/src/py/agent/react-connection/schema.json +5 -0
  499. package/src/py/agent/schema.d.js +6 -0
  500. package/src/py/agent/schema.d.js.map +1 -0
  501. package/src/py/agent/schema.d.ts +6 -2
  502. package/src/py/agent/schema.json +15 -1
  503. package/src/py/api/generator.d.ts +1 -1
  504. package/src/py/api/generator.js +12 -11
  505. package/src/py/api/generator.js.map +1 -1
  506. package/src/py/api/schema.d.js +6 -0
  507. package/src/py/api/schema.d.js.map +1 -0
  508. package/src/py/api/schema.d.ts +2 -1
  509. package/src/py/api/schema.json +5 -0
  510. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1601 -0
  511. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +63 -0
  512. package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
  513. package/src/py/dynamodb/agent-connection/generator.js +45 -0
  514. package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
  515. package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
  516. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
  517. package/src/py/dynamodb/agent-connection/schema.d.ts +15 -0
  518. package/src/py/dynamodb/agent-connection/schema.json +27 -0
  519. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +32 -0
  520. package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
  521. package/src/py/dynamodb/fast-api-connection/generator.js +39 -0
  522. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
  523. package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
  524. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
  525. package/src/py/dynamodb/fast-api-connection/schema.d.ts +13 -0
  526. package/src/py/dynamodb/fast-api-connection/schema.json +23 -0
  527. package/src/py/dynamodb/files/__name__/__init__.py.template +6 -0
  528. package/src/py/dynamodb/files/__name__/client.py.template +39 -0
  529. package/src/py/dynamodb/files/__name__/entities/__init__.py.template +4 -0
  530. package/src/py/dynamodb/files/__name__/entities/base.py.template +63 -0
  531. package/src/py/dynamodb/files/__name__/entities/example.py.template +64 -0
  532. package/src/py/dynamodb/files/config.json.template +24 -0
  533. package/src/py/dynamodb/generator.d.ts +39 -0
  534. package/src/py/dynamodb/generator.js +130 -0
  535. package/src/py/dynamodb/generator.js.map +1 -0
  536. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +63 -0
  537. package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
  538. package/src/py/dynamodb/mcp-server-connection/generator.js +45 -0
  539. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
  540. package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
  541. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  542. package/src/py/dynamodb/mcp-server-connection/schema.d.ts +15 -0
  543. package/src/py/dynamodb/mcp-server-connection/schema.json +27 -0
  544. package/src/py/dynamodb/schema.d.js +6 -0
  545. package/src/py/dynamodb/schema.d.js.map +1 -0
  546. package/src/py/dynamodb/schema.d.ts +16 -0
  547. package/src/py/dynamodb/schema.json +76 -0
  548. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +240 -4693
  549. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +5409 -0
  550. package/src/py/fast-api/files/app/__name__/init.py.template +5 -22
  551. package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
  552. package/src/py/fast-api/generator.d.ts +73 -1
  553. package/src/py/fast-api/generator.js +134 -95
  554. package/src/py/fast-api/generator.js.map +1 -1
  555. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +4 -3
  556. package/src/py/fast-api/react/generator.d.ts +17 -2
  557. package/src/py/fast-api/react/generator.js +38 -26
  558. package/src/py/fast-api/react/generator.js.map +1 -1
  559. package/src/py/fast-api/react/open-api.js +31 -29
  560. package/src/py/fast-api/react/open-api.js.map +1 -1
  561. package/src/py/fast-api/react/schema.d.js +6 -0
  562. package/src/py/fast-api/react/schema.d.js.map +1 -0
  563. package/src/py/fast-api/react/schema.d.ts +1 -0
  564. package/src/py/fast-api/react/schema.json +5 -0
  565. package/src/py/fast-api/schema.d.js +6 -0
  566. package/src/py/fast-api/schema.d.js.map +1 -0
  567. package/src/py/fast-api/schema.d.ts +2 -1
  568. package/src/py/fast-api/schema.json +6 -0
  569. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  570. package/src/py/lambda-function/files/handler/__lambdaFunctionSnakeCase__.py.template +1 -1
  571. package/src/py/lambda-function/generator.d.ts +28 -1
  572. package/src/py/lambda-function/generator.js +88 -61
  573. package/src/py/lambda-function/generator.js.map +1 -1
  574. package/src/py/lambda-function/schema.d.js +6 -0
  575. package/src/py/lambda-function/schema.d.js.map +1 -0
  576. package/src/py/lambda-function/schema.d.ts +3 -2
  577. package/src/py/lambda-function/schema.json +6 -1
  578. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +221 -21
  579. package/src/py/mcp-server/files/deploy/Dockerfile.template +15 -1
  580. package/src/py/mcp-server/generator.d.ts +69 -1
  581. package/src/py/mcp-server/generator.js +209 -145
  582. package/src/py/mcp-server/generator.js.map +1 -1
  583. package/src/py/mcp-server/schema.d.js +6 -0
  584. package/src/py/mcp-server/schema.d.js.map +1 -0
  585. package/src/py/mcp-server/schema.d.ts +2 -1
  586. package/src/py/mcp-server/schema.json +6 -0
  587. package/src/py/project/generator.d.ts +28 -2
  588. package/src/py/project/generator.js +248 -130
  589. package/src/py/project/generator.js.map +1 -1
  590. package/src/py/project/schema.d.js +6 -0
  591. package/src/py/project/schema.d.js.map +1 -0
  592. package/src/py/project/schema.d.ts +1 -0
  593. package/src/py/project/schema.json +6 -0
  594. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2072 -0
  595. package/src/py/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +123 -0
  596. package/src/py/rdb/agent-connection/generator.d.ts +10 -0
  597. package/src/py/rdb/agent-connection/generator.js +52 -0
  598. package/src/py/rdb/agent-connection/generator.js.map +1 -0
  599. package/src/py/rdb/agent-connection/schema.d.js +8 -0
  600. package/src/py/rdb/agent-connection/schema.d.js.map +1 -0
  601. package/src/py/rdb/agent-connection/schema.d.ts +15 -0
  602. package/src/py/rdb/agent-connection/schema.json +27 -0
  603. package/src/py/rdb/fast-api-connection/__snapshots__/generator.spec.ts.snap +51 -0
  604. package/src/py/rdb/fast-api-connection/files/__apiModuleName__/dependencies/__rdbNameSnake__.py.template +14 -0
  605. package/src/py/rdb/fast-api-connection/generator.d.ts +10 -0
  606. package/src/py/rdb/fast-api-connection/generator.js +56 -0
  607. package/src/py/rdb/fast-api-connection/generator.js.map +1 -0
  608. package/src/py/rdb/fast-api-connection/schema.d.js +8 -0
  609. package/src/py/rdb/fast-api-connection/schema.d.js.map +1 -0
  610. package/src/py/rdb/fast-api-connection/schema.d.ts +13 -0
  611. package/src/py/rdb/fast-api-connection/schema.json +23 -0
  612. package/src/py/rdb/files/Dockerfile.create-db-user.template +14 -0
  613. package/src/py/rdb/files/Dockerfile.migration.template +14 -0
  614. package/src/py/rdb/files/__name__/connection.py.template +55 -0
  615. package/src/py/rdb/files/__name__/create_db_user_handler.py.template +97 -0
  616. package/src/py/rdb/files/__name__/migration_handler.py.template +36 -0
  617. package/src/py/rdb/files/__name__/models/__init__.py.template +3 -0
  618. package/src/py/rdb/files/__name__/models/example.py.template +8 -0
  619. package/src/py/rdb/files/__name__/utils.py.template +104 -0
  620. package/src/py/rdb/files/alembic.ini.template +38 -0
  621. package/src/py/rdb/files/migrations/env.py.template +80 -0
  622. package/src/py/rdb/files/migrations/script.py.mako.template +28 -0
  623. package/src/py/rdb/generator.d.ts +103 -0
  624. package/src/py/rdb/generator.js +362 -0
  625. package/src/py/rdb/generator.js.map +1 -0
  626. package/src/py/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +119 -0
  627. package/src/py/rdb/mcp-server-connection/generator.d.ts +10 -0
  628. package/src/py/rdb/mcp-server-connection/generator.js +52 -0
  629. package/src/py/rdb/mcp-server-connection/generator.js.map +1 -0
  630. package/src/py/rdb/mcp-server-connection/schema.d.js +8 -0
  631. package/src/py/rdb/mcp-server-connection/schema.d.js.map +1 -0
  632. package/src/py/rdb/mcp-server-connection/schema.d.ts +15 -0
  633. package/src/py/rdb/mcp-server-connection/schema.json +27 -0
  634. package/src/py/rdb/schema.d.js +6 -0
  635. package/src/py/rdb/schema.d.js.map +1 -0
  636. package/src/py/rdb/schema.d.ts +16 -0
  637. package/src/py/rdb/schema.json +78 -0
  638. package/src/py/rdb/utils.d.ts +6 -0
  639. package/src/py/rdb/utils.js +16 -0
  640. package/src/py/rdb/utils.js.map +1 -0
  641. package/src/sdk/agentcore-gateway.d.ts +6 -0
  642. package/src/sdk/agentcore-gateway.js +7 -0
  643. package/src/sdk/agentcore-gateway.js.map +1 -0
  644. package/src/sdk/agentcore-harness.d.ts +6 -0
  645. package/src/sdk/agentcore-harness.js +7 -0
  646. package/src/sdk/agentcore-harness.js.map +1 -0
  647. package/src/sdk/connection.d.ts +6 -0
  648. package/src/sdk/connection.js +6 -0
  649. package/src/sdk/connection.js.map +1 -0
  650. package/src/sdk/license.d.ts +8 -0
  651. package/src/sdk/license.js +7 -0
  652. package/src/sdk/license.js.map +1 -0
  653. package/src/sdk/open-api.d.ts +10 -0
  654. package/src/sdk/open-api.js +8 -0
  655. package/src/sdk/open-api.js.map +1 -0
  656. package/src/sdk/py.d.ts +18 -0
  657. package/src/sdk/py.js +12 -0
  658. package/src/sdk/py.js.map +1 -0
  659. package/src/sdk/smithy.d.ts +6 -0
  660. package/src/sdk/smithy.js +7 -0
  661. package/src/sdk/smithy.js.map +1 -0
  662. package/src/sdk/terraform.d.ts +6 -0
  663. package/src/sdk/terraform.js +7 -0
  664. package/src/sdk/terraform.js.map +1 -0
  665. package/src/sdk/ts.d.ts +39 -0
  666. package/src/sdk/ts.js +41 -0
  667. package/src/sdk/ts.js.map +1 -0
  668. package/{sdk/utils/format.d.ts → src/sdk/utils/ast.d.ts} +1 -1
  669. package/src/sdk/utils/ast.js +6 -0
  670. package/src/sdk/utils/ast.js.map +1 -0
  671. package/src/sdk/utils/format.d.ts +5 -0
  672. package/src/sdk/utils/format.js +6 -0
  673. package/src/sdk/utils/format.js.map +1 -0
  674. package/{sdk → src/sdk}/utils/test.d.ts +1 -1
  675. package/src/sdk/utils/test.js +6 -0
  676. package/src/sdk/utils/test.js.map +1 -0
  677. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +245 -242
  678. package/src/smithy/project/files/{smithy-build.json.template → service/smithy-build.json.template} +5 -5
  679. package/src/smithy/project/files/{src → service/src}/operations/echo.smithy.template +1 -0
  680. package/src/smithy/project/files/shapes/smithy-build.json.template +7 -0
  681. package/src/smithy/project/files/shapes/src/main.smithy.template +11 -0
  682. package/src/smithy/project/files/ssdk-bundle/ssdk.rolldown.config.mjs.template +52 -0
  683. package/src/smithy/project/generator.d.ts +91 -1
  684. package/src/smithy/project/generator.js +223 -56
  685. package/src/smithy/project/generator.js.map +1 -1
  686. package/src/smithy/project/schema.d.js +6 -0
  687. package/src/smithy/project/schema.d.js.map +1 -0
  688. package/src/smithy/project/schema.d.ts +2 -0
  689. package/src/smithy/project/schema.json +28 -1
  690. package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
  691. package/src/smithy/react-connection/generator.d.ts +16 -1
  692. package/src/smithy/react-connection/generator.js +54 -48
  693. package/src/smithy/react-connection/generator.js.map +1 -1
  694. package/src/smithy/react-connection/schema.d.js +6 -0
  695. package/src/smithy/react-connection/schema.d.js.map +1 -0
  696. package/src/smithy/react-connection/schema.d.ts +1 -0
  697. package/src/smithy/react-connection/schema.json +5 -0
  698. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +871 -109
  699. package/src/smithy/ts/api/files/handler.ts.template +3 -3
  700. package/src/smithy/ts/api/files/local-server.ts.template +3 -3
  701. package/src/smithy/ts/api/files/operations/echo.ts.template +2 -2
  702. package/src/smithy/ts/api/files/service.ts.template +3 -3
  703. package/src/smithy/ts/api/generator.d.ts +89 -1
  704. package/src/smithy/ts/api/generator.js +187 -114
  705. package/src/smithy/ts/api/generator.js.map +1 -1
  706. package/src/smithy/ts/api/schema.d.js +6 -0
  707. package/src/smithy/ts/api/schema.d.js.map +1 -0
  708. package/src/smithy/ts/api/schema.d.ts +2 -1
  709. package/src/smithy/ts/api/schema.json +6 -0
  710. package/src/terraform/project/files/application/scripts/bootstrap.ts.template +40 -1
  711. package/src/terraform/project/files/application/src/main.tf.template +6 -1
  712. package/src/terraform/project/files/application/src/providers.tf.template +1 -1
  713. package/src/terraform/project/generator.d.ts +51 -1
  714. package/src/terraform/project/generator.js +212 -111
  715. package/src/terraform/project/generator.js.map +1 -1
  716. package/src/terraform/project/schema.d.js +9 -0
  717. package/src/terraform/project/schema.d.js.map +1 -0
  718. package/src/terraform/project/schema.d.ts +1 -0
  719. package/src/terraform/project/schema.json +5 -0
  720. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +1182 -184
  721. package/src/trpc/backend/files/src/client/index.ts.template +1 -1
  722. package/src/trpc/backend/files/src/handler.ts.template +1 -1
  723. package/src/trpc/backend/files/src/index.ts.template +5 -5
  724. package/src/trpc/backend/files/src/init.ts.template +1 -1
  725. package/src/trpc/backend/files/src/local-server.ts.template +1 -1
  726. package/src/trpc/backend/files/src/middleware/index.ts.template +7 -7
  727. package/src/trpc/backend/files/src/procedures/echo.ts.template +3 -3
  728. package/src/trpc/backend/files/src/router.ts.template +2 -2
  729. package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
  730. package/src/trpc/backend/files/src/schema/index.ts.template +1 -1
  731. package/src/trpc/backend/generator.d.ts +91 -2
  732. package/src/trpc/backend/generator.js +177 -100
  733. package/src/trpc/backend/generator.js.map +1 -1
  734. package/src/trpc/backend/schema.d.js +6 -0
  735. package/src/trpc/backend/schema.d.js.map +1 -0
  736. package/src/trpc/backend/schema.d.ts +2 -1
  737. package/src/trpc/backend/schema.json +6 -0
  738. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +4 -4
  739. package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
  740. package/src/trpc/react/generator.d.ts +39 -2
  741. package/src/trpc/react/generator.js +105 -63
  742. package/src/trpc/react/generator.js.map +1 -1
  743. package/src/trpc/react/schema.d.js +6 -0
  744. package/src/trpc/react/schema.d.js.map +1 -0
  745. package/src/trpc/react/schema.d.ts +1 -0
  746. package/src/trpc/react/schema.json +5 -0
  747. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +1483 -28
  748. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +258 -0
  749. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +23 -0
  750. package/src/ts/agent/a2a-connection/generator.d.ts +47 -1
  751. package/src/ts/agent/a2a-connection/generator.js +112 -63
  752. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  753. package/src/ts/agent/a2a-connection/schema.d.js +8 -0
  754. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
  755. package/src/ts/agent/a2a-connection/schema.d.ts +2 -1
  756. package/src/ts/agent/a2a-connection/schema.json +5 -0
  757. package/src/ts/agent/files/a2a/index.ts.template +5 -12
  758. package/src/ts/agent/files/ag-ui/index.ts.template +29 -14
  759. package/src/ts/agent/files/common/agent.ts.template +15 -2
  760. package/src/ts/agent/files/common/session.ts.template +43 -0
  761. package/src/ts/agent/files/common-express/middleware/session-id-middleware.ts.template +16 -0
  762. package/src/ts/agent/files/deploy/Dockerfile.template +20 -2
  763. package/src/ts/agent/files/http/client.ts.template +2 -2
  764. package/src/ts/agent/files/http/index.ts.template +2 -2
  765. package/src/ts/agent/files/http/router.ts.template +5 -5
  766. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +222 -0
  767. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +30 -0
  768. package/src/ts/agent/gateway-connection/generator.d.ts +47 -0
  769. package/src/ts/agent/gateway-connection/generator.js +144 -0
  770. package/src/ts/agent/gateway-connection/generator.js.map +1 -0
  771. package/src/ts/agent/gateway-connection/schema.d.js +6 -0
  772. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
  773. package/src/ts/agent/gateway-connection/schema.d.ts +13 -0
  774. package/src/ts/agent/gateway-connection/schema.json +31 -0
  775. package/src/ts/agent/generator.d.ts +206 -1
  776. package/src/ts/agent/generator.js +347 -156
  777. package/src/ts/agent/generator.js.map +1 -1
  778. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +194 -113
  779. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +23 -0
  780. package/src/ts/agent/mcp-connection/generator.d.ts +38 -1
  781. package/src/ts/agent/mcp-connection/generator.js +88 -65
  782. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  783. package/src/ts/agent/mcp-connection/schema.d.js +8 -0
  784. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
  785. package/src/ts/agent/mcp-connection/schema.d.ts +2 -1
  786. package/src/ts/agent/mcp-connection/schema.json +5 -0
  787. package/src/ts/agent/react-connection/__snapshots__/generator.spec.ts.snap +8 -4
  788. package/src/ts/agent/react-connection/files/src/components/__agentNameClassName__AgentClientProvider.tsx.template +2 -1
  789. package/src/ts/agent/react-connection/generator.d.ts +204 -3
  790. package/src/ts/agent/react-connection/generator.js +158 -99
  791. package/src/ts/agent/react-connection/generator.js.map +1 -1
  792. package/src/ts/agent/react-connection/local-dev.d.ts +13 -0
  793. package/src/ts/agent/react-connection/local-dev.js +17 -0
  794. package/src/ts/agent/react-connection/local-dev.js.map +1 -0
  795. package/src/ts/agent/react-connection/schema.d.js +8 -0
  796. package/src/ts/agent/react-connection/schema.d.js.map +1 -0
  797. package/src/ts/agent/react-connection/schema.d.ts +2 -1
  798. package/src/ts/agent/react-connection/schema.json +5 -0
  799. package/src/ts/agent/schema.d.js +6 -0
  800. package/src/ts/agent/schema.d.js.map +1 -0
  801. package/src/ts/agent/schema.d.ts +5 -1
  802. package/src/ts/agent/schema.json +14 -0
  803. package/src/ts/api/generator.d.ts +1 -1
  804. package/src/ts/api/generator.js +16 -16
  805. package/src/ts/api/generator.js.map +1 -1
  806. package/src/ts/api/schema.d.js +6 -0
  807. package/src/ts/api/schema.d.js.map +1 -0
  808. package/src/ts/api/schema.d.ts +2 -1
  809. package/src/ts/api/schema.json +5 -0
  810. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +28 -14
  811. package/src/ts/astro-docs/files/base/src/content/docs/en/index.mdx.template +2 -2
  812. package/src/ts/astro-docs/files/base/src/content.config.ts.template +4 -4
  813. package/src/ts/astro-docs/files/translation/scripts/translate.ts.template +272 -150
  814. package/src/ts/astro-docs/generator.d.ts +39 -1
  815. package/src/ts/astro-docs/generator.js +126 -61
  816. package/src/ts/astro-docs/generator.js.map +1 -1
  817. package/src/ts/astro-docs/schema.d.js +6 -0
  818. package/src/ts/astro-docs/schema.d.js.map +1 -0
  819. package/src/ts/astro-docs/schema.d.ts +2 -2
  820. package/src/ts/astro-docs/schema.json +3 -3
  821. package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +982 -0
  822. package/src/ts/dcr-proxy/generator.d.ts +34 -0
  823. package/src/ts/dcr-proxy/generator.js +115 -0
  824. package/src/ts/dcr-proxy/generator.js.map +1 -0
  825. package/src/ts/dcr-proxy/schema.d.js +6 -0
  826. package/src/ts/dcr-proxy/schema.d.js.map +1 -0
  827. package/src/ts/dcr-proxy/schema.d.ts +13 -0
  828. package/src/ts/dcr-proxy/schema.json +44 -0
  829. package/src/ts/docs/generator.d.ts +1 -1
  830. package/src/ts/docs/generator.js +10 -10
  831. package/src/ts/docs/generator.js.map +1 -1
  832. package/src/ts/docs/schema.d.js +6 -0
  833. package/src/ts/docs/schema.d.js.map +1 -0
  834. package/src/ts/docs/schema.d.ts +1 -4
  835. package/src/ts/docs/schema.json +3 -3
  836. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +490 -527
  837. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +23 -5
  838. package/src/ts/dynamodb/agent-connection/generator.d.ts +1 -1
  839. package/src/ts/dynamodb/agent-connection/generator.js +27 -23
  840. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  841. package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
  842. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
  843. package/src/ts/dynamodb/agent-connection/schema.d.ts +2 -1
  844. package/src/ts/dynamodb/agent-connection/schema.json +5 -0
  845. package/src/ts/dynamodb/files/config.json.template +24 -0
  846. package/src/ts/dynamodb/files/src/client.ts.template +30 -11
  847. package/src/ts/dynamodb/files/src/entities/example.ts.template +1 -1
  848. package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -1
  849. package/src/ts/dynamodb/files/src/index.ts.template +2 -11
  850. package/src/ts/dynamodb/generator.d.ts +42 -1
  851. package/src/ts/dynamodb/generator.js +107 -64
  852. package/src/ts/dynamodb/generator.js.map +1 -1
  853. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +23 -5
  854. package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +1 -1
  855. package/src/ts/dynamodb/mcp-server-connection/generator.js +27 -23
  856. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  857. package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
  858. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  859. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +2 -1
  860. package/src/ts/dynamodb/mcp-server-connection/schema.json +5 -0
  861. package/src/ts/dynamodb/schema.d.js +6 -0
  862. package/src/ts/dynamodb/schema.d.js.map +1 -0
  863. package/src/ts/dynamodb/schema.d.ts +3 -1
  864. package/src/ts/dynamodb/schema.json +26 -2
  865. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +12 -3
  866. package/src/ts/dynamodb/smithy-connection/generator.d.ts +1 -1
  867. package/src/ts/dynamodb/smithy-connection/generator.js +22 -22
  868. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  869. package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
  870. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
  871. package/src/ts/dynamodb/smithy-connection/schema.d.ts +1 -0
  872. package/src/ts/dynamodb/smithy-connection/schema.json +5 -0
  873. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
  874. package/src/ts/dynamodb/trpc-connection/generator.d.ts +1 -1
  875. package/src/ts/dynamodb/trpc-connection/generator.js +22 -22
  876. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  877. package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
  878. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
  879. package/src/ts/dynamodb/trpc-connection/schema.d.ts +1 -0
  880. package/src/ts/dynamodb/trpc-connection/schema.json +5 -0
  881. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +8 -6
  882. package/src/ts/lambda-function/files/handler/__lambdaFunctionKebabCase__.ts.template +2 -1
  883. package/src/ts/lambda-function/generator.d.ts +39 -1
  884. package/src/ts/lambda-function/generator.js +98 -65
  885. package/src/ts/lambda-function/generator.js.map +1 -1
  886. package/src/ts/lambda-function/io.js +83 -52
  887. package/src/ts/lambda-function/io.js.map +1 -1
  888. package/src/ts/lambda-function/schema.d.js +6 -0
  889. package/src/ts/lambda-function/schema.d.js.map +1 -0
  890. package/src/ts/lambda-function/schema.d.ts +2 -1
  891. package/src/ts/lambda-function/schema.json +5 -0
  892. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +83 -45
  893. package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +1 -1
  894. package/src/ts/lib/biome.d.ts +1 -1
  895. package/src/ts/lib/biome.js +71 -35
  896. package/src/ts/lib/biome.js.map +1 -1
  897. package/src/ts/lib/generator.d.ts +8 -1
  898. package/src/ts/lib/generator.js +115 -103
  899. package/src/ts/lib/generator.js.map +1 -1
  900. package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
  901. package/src/ts/lib/schema.d.js +6 -0
  902. package/src/ts/lib/schema.d.js.map +1 -0
  903. package/src/ts/lib/schema.d.ts +1 -1
  904. package/src/ts/lib/schema.json +5 -0
  905. package/src/ts/lib/ts-project-utils.d.ts +14 -2
  906. package/src/ts/lib/ts-project-utils.js +96 -71
  907. package/src/ts/lib/ts-project-utils.js.map +1 -1
  908. package/src/ts/lib/types.d.ts +6 -0
  909. package/src/ts/lib/types.js +5 -2
  910. package/src/ts/lib/types.js.map +1 -1
  911. package/src/ts/lib/vitest.d.ts +11 -2
  912. package/src/ts/lib/vitest.js +54 -26
  913. package/src/ts/lib/vitest.js.map +1 -1
  914. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +221 -44
  915. package/src/ts/mcp-server/files/Dockerfile.template +20 -2
  916. package/src/ts/mcp-server/generator.d.ts +111 -1
  917. package/src/ts/mcp-server/generator.js +236 -162
  918. package/src/ts/mcp-server/generator.js.map +1 -1
  919. package/src/ts/mcp-server/schema.d.js +6 -0
  920. package/src/ts/mcp-server/schema.d.js.map +1 -0
  921. package/src/ts/mcp-server/schema.d.ts +2 -1
  922. package/src/ts/mcp-server/schema.json +6 -0
  923. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +28 -13
  924. package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
  925. package/src/ts/nx-generator/files/common/schema.json.template +5 -0
  926. package/src/ts/nx-generator/files/local/generator.spec.ts.template +1 -1
  927. package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
  928. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +6 -7
  929. package/src/ts/nx-generator/generator.d.ts +3 -0
  930. package/src/ts/nx-generator/generator.js +124 -72
  931. package/src/ts/nx-generator/generator.js.map +1 -1
  932. package/src/ts/nx-generator/schema.d.js +6 -0
  933. package/src/ts/nx-generator/schema.d.js.map +1 -0
  934. package/src/ts/nx-generator/schema.d.ts +1 -0
  935. package/src/ts/nx-generator/schema.json +5 -0
  936. package/src/ts/nx-migration/files/migration.spec.ts.template +26 -0
  937. package/src/ts/nx-migration/files/migration.ts.template +65 -0
  938. package/src/ts/nx-migration/files/prompt.md.template +46 -0
  939. package/src/ts/nx-migration/generator.d.ts +27 -0
  940. package/src/ts/nx-migration/generator.js +147 -0
  941. package/src/ts/nx-migration/generator.js.map +1 -0
  942. package/src/ts/nx-migration/schema.d.js +6 -0
  943. package/src/ts/nx-migration/schema.d.js.map +1 -0
  944. package/src/ts/nx-migration/schema.d.ts +13 -0
  945. package/src/ts/nx-migration/schema.json +63 -0
  946. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +36 -25
  947. package/src/ts/nx-plugin/files/mcp-server/resources/GENERAL_GUIDANCE.md.template +5 -6
  948. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  949. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  950. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  951. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  952. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  953. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +4 -4
  954. package/src/ts/nx-plugin/generator.d.ts +4 -1
  955. package/src/ts/nx-plugin/generator.js +67 -50
  956. package/src/ts/nx-plugin/generator.js.map +1 -1
  957. package/src/ts/nx-plugin/schema.d.js +9 -0
  958. package/src/ts/nx-plugin/schema.d.js.map +1 -0
  959. package/src/ts/nx-plugin/schema.json +5 -0
  960. package/src/ts/nx-plugin/utils.d.ts +27 -2
  961. package/src/ts/nx-plugin/utils.js +66 -51
  962. package/src/ts/nx-plugin/utils.js.map +1 -1
  963. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +555 -644
  964. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +16 -6
  965. package/src/ts/rdb/agent-connection/generator.d.ts +1 -1
  966. package/src/ts/rdb/agent-connection/generator.js +44 -39
  967. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  968. package/src/ts/rdb/agent-connection/schema.d.js +8 -0
  969. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
  970. package/src/ts/rdb/agent-connection/schema.d.ts +2 -1
  971. package/src/ts/rdb/agent-connection/schema.json +5 -0
  972. package/src/ts/rdb/files/Dockerfile.template +19 -1
  973. package/src/ts/rdb/files/prisma.config.ts.template +6 -5
  974. package/src/ts/rdb/files/src/create-db-user-handler.ts.template +9 -11
  975. package/src/ts/rdb/files/src/migration-handler.ts.template +5 -30
  976. package/src/ts/rdb/files/src/prisma.ts.template +33 -25
  977. package/src/ts/rdb/files/src/utils.ts.template +3 -0
  978. package/src/ts/rdb/generator.d.ts +118 -5
  979. package/src/ts/rdb/generator.js +285 -138
  980. package/src/ts/rdb/generator.js.map +1 -1
  981. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +16 -6
  982. package/src/ts/rdb/mcp-server-connection/generator.d.ts +1 -1
  983. package/src/ts/rdb/mcp-server-connection/generator.js +42 -37
  984. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  985. package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
  986. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
  987. package/src/ts/rdb/mcp-server-connection/schema.d.ts +2 -1
  988. package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
  989. package/src/ts/rdb/schema.d.js +6 -0
  990. package/src/ts/rdb/schema.d.js.map +1 -0
  991. package/src/ts/rdb/schema.d.ts +2 -1
  992. package/src/ts/rdb/schema.json +7 -1
  993. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +18 -9
  994. package/src/ts/rdb/smithy-connection/generator.d.ts +1 -1
  995. package/src/ts/rdb/smithy-connection/generator.js +48 -43
  996. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  997. package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
  998. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
  999. package/src/ts/rdb/smithy-connection/schema.d.ts +1 -0
  1000. package/src/ts/rdb/smithy-connection/schema.json +5 -0
  1001. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
  1002. package/src/ts/rdb/trpc-connection/generator.d.ts +1 -1
  1003. package/src/ts/rdb/trpc-connection/generator.js +37 -31
  1004. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  1005. package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
  1006. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
  1007. package/src/ts/rdb/trpc-connection/schema.d.ts +1 -0
  1008. package/src/ts/rdb/trpc-connection/schema.json +5 -0
  1009. package/src/ts/rdb/utils.js +9 -11
  1010. package/src/ts/rdb/utils.js.map +1 -1
  1011. package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +17 -16
  1012. package/src/ts/react-website/agui/generator.d.ts +97 -0
  1013. package/src/ts/react-website/agui/generator.js +114 -67
  1014. package/src/ts/react-website/agui/generator.js.map +1 -1
  1015. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +1648 -690
  1016. package/src/ts/react-website/app/files/app/common/README.md.template +1 -1
  1017. package/src/ts/react-website/app/generator.d.ts +143 -3
  1018. package/src/ts/react-website/app/generator.js +335 -209
  1019. package/src/ts/react-website/app/generator.js.map +1 -1
  1020. package/src/ts/react-website/app/schema.d.js +6 -0
  1021. package/src/ts/react-website/app/schema.d.js.map +1 -0
  1022. package/src/ts/react-website/app/schema.d.ts +3 -3
  1023. package/src/ts/react-website/app/schema.json +12 -6
  1024. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +198 -33
  1025. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +74 -12
  1026. package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
  1027. package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
  1028. package/src/ts/react-website/cognito-auth/generator.d.ts +26 -2
  1029. package/src/ts/react-website/cognito-auth/generator.js +79 -64
  1030. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  1031. package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +3 -1
  1032. package/src/ts/react-website/cognito-auth/grit/none-auth-menu.grit +1 -0
  1033. package/src/ts/react-website/cognito-auth/grit/shadcn-auth-menu.grit +3 -1
  1034. package/src/ts/react-website/cognito-auth/grit/shadcn-state-declarations.grit +3 -1
  1035. package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
  1036. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
  1037. package/src/ts/react-website/cognito-auth/schema.d.ts +2 -1
  1038. package/src/ts/react-website/cognito-auth/schema.json +5 -0
  1039. package/src/ts/react-website/cognito-auth/utils.js +34 -32
  1040. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  1041. package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
  1042. package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
  1043. package/src/ts/react-website/runtime-config/generator.d.ts +1 -1
  1044. package/src/ts/react-website/runtime-config/generator.js +29 -31
  1045. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  1046. package/src/ts/react-website/runtime-config/schema.d.js +6 -0
  1047. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
  1048. package/src/ts/react-website/runtime-config/schema.d.ts +1 -0
  1049. package/src/ts/react-website/runtime-config/schema.json +5 -0
  1050. package/src/ts/sync/generator.d.ts +1 -1
  1051. package/src/ts/sync/generator.js +137 -60
  1052. package/src/ts/sync/generator.js.map +1 -1
  1053. package/src/ts/website/app/generator.d.ts +1 -1
  1054. package/src/ts/website/app/generator.js +10 -10
  1055. package/src/ts/website/app/generator.js.map +1 -1
  1056. package/src/ts/website/app/schema.d.js +6 -0
  1057. package/src/ts/website/app/schema.d.js.map +1 -0
  1058. package/src/ts/website/app/schema.d.ts +3 -3
  1059. package/src/ts/website/app/schema.json +11 -6
  1060. package/src/ts/website/auth/generator.d.ts +2 -2
  1061. package/src/ts/website/auth/generator.js +11 -10
  1062. package/src/ts/website/auth/generator.js.map +1 -1
  1063. package/src/ts/website/auth/schema.d.js +6 -0
  1064. package/src/ts/website/auth/schema.d.js.map +1 -0
  1065. package/src/ts/website/auth/schema.d.ts +2 -1
  1066. package/src/ts/website/auth/schema.json +5 -0
  1067. package/src/utils/__snapshots__/shared-constructs.spec.ts.snap +21 -0
  1068. package/src/utils/add-dependencies.d.ts +38 -0
  1069. package/src/utils/add-dependencies.js +83 -0
  1070. package/src/utils/add-dependencies.js.map +1 -0
  1071. package/src/utils/agent-chat/agent-chat.d.ts +31 -0
  1072. package/src/utils/agent-chat/agent-chat.js +31 -0
  1073. package/src/utils/agent-chat/agent-chat.js.map +1 -0
  1074. package/src/utils/agent-chat/files/a2a/chat.ts.template +33 -0
  1075. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +17 -0
  1076. package/src/utils/agent-chat/files/common/agentcore.ts.template +81 -0
  1077. package/src/utils/agent-chat/files/http-py/chat.ts.template +43 -0
  1078. package/src/utils/agent-chat/files/http-ts/chat.ts.template +54 -0
  1079. package/src/utils/agent-connection/agent-connection.d.ts +149 -26
  1080. package/src/utils/agent-connection/agent-connection.js +511 -103
  1081. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  1082. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
  1083. package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
  1084. package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
  1085. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
  1086. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
  1087. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +35 -33
  1088. package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
  1089. package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
  1090. package/src/utils/agent-connection/files/core-strands/base/model-errors-strands.ts.template +47 -0
  1091. package/src/utils/agent-connection/files/core-strands/base/tool-errors-strands.ts.template +29 -0
  1092. package/src/utils/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +1 -1
  1093. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
  1094. package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
  1095. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
  1096. package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
  1097. package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
  1098. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
  1099. package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +105 -0
  1100. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
  1101. package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
  1102. package/src/utils/agent-connection/files/py-core-langchain/s3/s3_checkpoint_saver_langchain.py.template +360 -0
  1103. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
  1104. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +4 -18
  1105. package/src/utils/agent-connection/files/py-core-runtime-config/session_context.py.template +2 -2
  1106. package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
  1107. package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +111 -0
  1108. package/src/utils/agent-connection/files/py-core-strands/base/model_errors_strands.py.template +40 -0
  1109. package/src/utils/agent-connection/files/py-core-strands/base/tool_errors_strands.py.template +24 -0
  1110. package/src/utils/agent-connection/files/{py-core-runtime-config/with_session_id.py.template → py-core-strands/base/with_session_id_strands.py.template} +2 -2
  1111. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
  1112. package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
  1113. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +81 -2
  1114. package/src/utils/agent-core-constructs/agent-core-constructs.js +212 -38
  1115. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  1116. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +273 -9
  1117. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +87 -0
  1118. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.ts.template +366 -0
  1119. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +624 -0
  1120. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
  1121. package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +281 -1
  1122. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +521 -0
  1123. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
  1124. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.tf.template +282 -0
  1125. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +159 -13
  1126. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
  1127. package/src/utils/api-constructs/api-constructs.d.ts +31 -3
  1128. package/src/utils/api-constructs/api-constructs.js +82 -32
  1129. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  1130. package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +20 -15
  1131. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +24 -16
  1132. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +26 -9
  1133. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +70 -0
  1134. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
  1135. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +56 -17
  1136. package/src/utils/api-constructs/files/cdk/core/api/trpc/trpc-utils.ts.template +1 -1
  1137. package/src/utils/api-constructs/files/cdk/core/api/utils/utils.ts.template +61 -7
  1138. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +101 -12
  1139. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +194 -8
  1140. package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
  1141. package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
  1142. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
  1143. package/src/utils/api-constructs/open-api-metadata.d.ts +1 -1
  1144. package/src/utils/api-constructs/open-api-metadata.js +22 -22
  1145. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  1146. package/src/utils/ast/website.js +18 -20
  1147. package/src/utils/ast/website.js.map +1 -1
  1148. package/src/utils/ast.d.ts +38 -0
  1149. package/src/utils/ast.js +162 -86
  1150. package/src/utils/ast.js.map +1 -1
  1151. package/src/utils/base-tsconfig.d.ts +30 -0
  1152. package/src/utils/base-tsconfig.js +32 -0
  1153. package/src/utils/base-tsconfig.js.map +1 -0
  1154. package/src/utils/bundle/bundle.d.ts +6 -1
  1155. package/src/utils/bundle/bundle.js +58 -48
  1156. package/src/utils/bundle/bundle.js.map +1 -1
  1157. package/src/utils/commands.d.ts +14 -3
  1158. package/src/utils/commands.js +83 -28
  1159. package/src/utils/commands.js.map +1 -1
  1160. package/src/utils/config/index.d.ts +22 -6
  1161. package/src/utils/config/index.js +5 -4
  1162. package/src/utils/config/index.js.map +1 -1
  1163. package/src/utils/config/utils.d.ts +9 -3
  1164. package/src/utils/config/utils.js +56 -59
  1165. package/src/utils/config/utils.js.map +1 -1
  1166. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +16 -3
  1167. package/src/utils/connection/open-api/react.d.ts +31 -5
  1168. package/src/utils/connection/open-api/react.js +106 -76
  1169. package/src/utils/connection/open-api/react.js.map +1 -1
  1170. package/src/utils/containers.js +22 -23
  1171. package/src/utils/containers.js.map +1 -1
  1172. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.d.ts +38 -0
  1173. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js +93 -0
  1174. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js.map +1 -0
  1175. package/src/utils/dcr-proxy-constructs/files/cdk/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.ts.template +227 -0
  1176. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorization-server-metadata.ts.template +39 -0
  1177. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorize.ts.template +26 -0
  1178. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/mcp-proxy.ts.template +89 -0
  1179. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/protected-resource-metadata.ts.template +13 -0
  1180. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/register.ts.template +70 -0
  1181. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/token.ts.template +75 -0
  1182. package/src/utils/dcr-proxy-constructs/files/terraform/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.tf.template +410 -0
  1183. package/src/utils/declared-dependencies.d.ts +140 -0
  1184. package/src/utils/declared-dependencies.js +64 -0
  1185. package/src/utils/declared-dependencies.js.map +1 -0
  1186. package/src/utils/dependencies.d.ts +18 -0
  1187. package/src/utils/dependencies.js +206 -0
  1188. package/src/utils/dependencies.js.map +1 -0
  1189. package/src/utils/docker.d.ts +89 -0
  1190. package/src/utils/docker.js +125 -0
  1191. package/src/utils/docker.js.map +1 -0
  1192. package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +2 -2
  1193. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +39 -41
  1194. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  1195. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +18 -5
  1196. package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +24 -4
  1197. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +51 -18
  1198. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +40 -6
  1199. package/src/utils/files/common/constructs/src/core/cloudfront.ts.template +14 -0
  1200. package/src/utils/files/common/constructs/src/core/index.ts.template +5 -4
  1201. package/src/utils/files/common/constructs/src/index.ts.template +2 -2
  1202. package/src/utils/files/common/infra-config/src/index.ts.template +3 -3
  1203. package/src/utils/files/common/infra-config/src/resolve-stage.ts.template +2 -2
  1204. package/src/utils/files/common/infra-config/src/stages.config.ts.template +1 -1
  1205. package/src/{ts/dynamodb/files/scripts → utils/files/common/scripts/src/dynamodb}/create-local-table.ts.template +65 -31
  1206. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +13 -0
  1207. package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +103 -0
  1208. package/src/utils/files/common/scripts/src/infra/infra-deploy.ts.template +2 -0
  1209. package/src/utils/files/common/scripts/src/infra/infra-destroy.ts.template +2 -0
  1210. package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/cdk-command.ts.template +6 -3
  1211. package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/run.ts.template +3 -3
  1212. package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
  1213. package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
  1214. package/src/utils/files/common/scripts/src/rdb/shared/pull-image.ts.template +16 -0
  1215. package/src/utils/files/common/scripts/src/rdb/shared/start-container.ts.template +115 -0
  1216. package/src/utils/files/common/shadcn/readme/README.md.template +3 -3
  1217. package/src/utils/files/common/shadcn/src/index.ts.template +2 -2
  1218. package/src/utils/files/shadcn/components.json.template +1 -1
  1219. package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +63 -72
  1220. package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
  1221. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +12 -6
  1222. package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
  1223. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +9 -4
  1224. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
  1225. package/src/utils/format.d.ts +39 -4
  1226. package/src/utils/format.js +318 -198
  1227. package/src/utils/format.js.map +1 -1
  1228. package/src/utils/fs.d.ts +24 -5
  1229. package/src/utils/fs.js +40 -15
  1230. package/src/utils/fs.js.map +1 -1
  1231. package/src/utils/function-constructs/files/cdk/app/lambda-functions/__nameKebabCase__.ts.template +1 -1
  1232. package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
  1233. package/src/utils/function-constructs/function-constructs.d.ts +1 -1
  1234. package/src/utils/function-constructs/function-constructs.js +22 -25
  1235. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  1236. package/src/utils/generators.js +18 -20
  1237. package/src/utils/generators.js.map +1 -1
  1238. package/src/utils/git.js +19 -34
  1239. package/src/utils/git.js.map +1 -1
  1240. package/src/utils/iac-providers.js +5 -5
  1241. package/src/utils/iac-providers.js.map +1 -1
  1242. package/src/utils/iac.d.ts +2 -2
  1243. package/src/utils/iac.js +12 -14
  1244. package/src/utils/iac.js.map +1 -1
  1245. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +193 -30
  1246. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +28 -9
  1247. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +177 -25
  1248. package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +33 -0
  1249. package/src/utils/identity-constructs/identity-constructs.d.ts +11 -1
  1250. package/src/utils/identity-constructs/identity-constructs.js +52 -31
  1251. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  1252. package/src/utils/init.d.ts +72 -0
  1253. package/src/utils/init.js +300 -0
  1254. package/src/utils/init.js.map +1 -0
  1255. package/src/utils/install.d.ts +32 -0
  1256. package/src/utils/install.js +58 -0
  1257. package/src/utils/install.js.map +1 -0
  1258. package/src/utils/js.js +27 -20
  1259. package/src/utils/js.js.map +1 -1
  1260. package/src/utils/mcp.d.ts +9 -0
  1261. package/src/utils/mcp.js +42 -41
  1262. package/src/utils/mcp.js.map +1 -1
  1263. package/src/utils/metrics.d.ts +8 -2
  1264. package/src/utils/metrics.js +61 -46
  1265. package/src/utils/metrics.js.map +1 -1
  1266. package/src/utils/migration-manifest.d.ts +58 -0
  1267. package/src/utils/migration-manifest.js +76 -0
  1268. package/src/utils/migration-manifest.js.map +1 -0
  1269. package/src/utils/migration-versions.d.ts +145 -0
  1270. package/src/utils/migration-versions.js +250 -0
  1271. package/src/utils/migration-versions.js.map +1 -0
  1272. package/src/utils/mock-project-graph.js +8 -12
  1273. package/src/utils/mock-project-graph.js.map +1 -1
  1274. package/src/utils/module-format.d.ts +25 -0
  1275. package/src/utils/module-format.js +45 -0
  1276. package/src/utils/module-format.js.map +1 -0
  1277. package/src/utils/names.d.ts +22 -0
  1278. package/src/utils/names.js +44 -48
  1279. package/src/utils/names.js.map +1 -1
  1280. package/src/utils/npm-scope.d.ts +0 -4
  1281. package/src/utils/npm-scope.js +7 -20
  1282. package/src/utils/npm-scope.js.map +1 -1
  1283. package/src/utils/nx.d.ts +77 -6
  1284. package/src/utils/nx.js +196 -75
  1285. package/src/utils/nx.js.map +1 -1
  1286. package/src/utils/nxlv-python.js +27 -15
  1287. package/src/utils/nxlv-python.js.map +1 -1
  1288. package/src/utils/object.js +5 -11
  1289. package/src/utils/object.js.map +1 -1
  1290. package/src/utils/paths.js +11 -15
  1291. package/src/utils/paths.js.map +1 -1
  1292. package/src/utils/pkg-manager.d.ts +1 -1
  1293. package/src/utils/pkg-manager.js +4 -9
  1294. package/src/utils/pkg-manager.js.map +1 -1
  1295. package/src/utils/pnpm-workspace.d.ts +1 -12
  1296. package/src/utils/pnpm-workspace.js +16 -43
  1297. package/src/utils/pnpm-workspace.js.map +1 -1
  1298. package/src/utils/port.d.ts +28 -6
  1299. package/src/utils/port.js +67 -28
  1300. package/src/utils/port.js.map +1 -1
  1301. package/src/utils/project-package-json.d.ts +39 -0
  1302. package/src/utils/project-package-json.js +119 -0
  1303. package/src/utils/project-package-json.js.map +1 -0
  1304. package/src/utils/py.d.ts +18 -4
  1305. package/src/utils/py.js +73 -48
  1306. package/src/utils/py.js.map +1 -1
  1307. package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +72 -18
  1308. package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +112 -88
  1309. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +127 -53
  1310. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +60 -53
  1311. package/src/utils/rdb-constructs/rdb-constructs.d.ts +14 -3
  1312. package/src/utils/rdb-constructs/rdb-constructs.js +38 -41
  1313. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  1314. package/src/utils/ruff.d.ts +59 -0
  1315. package/src/utils/ruff.js +140 -0
  1316. package/src/utils/ruff.js.map +1 -0
  1317. package/src/utils/shared-constructs-constants.d.ts +46 -4
  1318. package/src/utils/shared-constructs-constants.js +50 -15
  1319. package/src/utils/shared-constructs-constants.js.map +1 -1
  1320. package/src/utils/shared-constructs.d.ts +5 -2
  1321. package/src/utils/shared-constructs.js +62 -67
  1322. package/src/utils/shared-constructs.js.map +1 -1
  1323. package/src/utils/shared-dynamodb-scripts.d.ts +18 -0
  1324. package/src/utils/shared-dynamodb-scripts.js +35 -0
  1325. package/src/utils/shared-dynamodb-scripts.js.map +1 -0
  1326. package/src/utils/shared-infra-config.js +31 -30
  1327. package/src/utils/shared-infra-config.js.map +1 -1
  1328. package/src/utils/shared-infra-scripts.d.ts +26 -0
  1329. package/src/utils/shared-infra-scripts.js +58 -0
  1330. package/src/utils/shared-infra-scripts.js.map +1 -0
  1331. package/src/utils/shared-rdb-scripts.d.ts +27 -0
  1332. package/src/utils/shared-rdb-scripts.js +59 -0
  1333. package/src/utils/shared-rdb-scripts.js.map +1 -0
  1334. package/src/utils/shared-scripts.d.ts +1 -4
  1335. package/src/utils/shared-scripts.js +12 -38
  1336. package/src/utils/shared-scripts.js.map +1 -1
  1337. package/src/utils/shared-shadcn.d.ts +26 -1
  1338. package/src/utils/shared-shadcn.js +93 -67
  1339. package/src/utils/shared-shadcn.js.map +1 -1
  1340. package/src/utils/smithy.d.ts +59 -0
  1341. package/src/utils/smithy.js +73 -0
  1342. package/src/utils/smithy.js.map +1 -0
  1343. package/src/utils/test-git.d.ts +39 -0
  1344. package/src/utils/test-git.js +117 -0
  1345. package/src/utils/test-git.js.map +1 -0
  1346. package/src/utils/test.d.ts +10 -0
  1347. package/src/utils/test.js +44 -25
  1348. package/src/utils/test.js.map +1 -1
  1349. package/src/utils/toml.d.ts +5 -0
  1350. package/src/utils/toml.js +17 -15
  1351. package/src/utils/toml.js.map +1 -1
  1352. package/src/utils/version-upgrade-migration/migration.d.ts +14 -0
  1353. package/src/utils/version-upgrade-migration/migration.js +16 -0
  1354. package/src/utils/version-upgrade-migration/migration.js.map +1 -0
  1355. package/src/utils/version-upgrade-migration/nx-package-updates.d.ts +45 -0
  1356. package/src/utils/version-upgrade-migration/nx-package-updates.js +50 -0
  1357. package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -0
  1358. package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +76 -0
  1359. package/src/utils/version-upgrade-migration/owned-dependencies.js +146 -0
  1360. package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -0
  1361. package/src/utils/version-upgrade-migration/register.d.ts +29 -0
  1362. package/src/utils/version-upgrade-migration/register.js +42 -0
  1363. package/src/utils/version-upgrade-migration/register.js.map +1 -0
  1364. package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +26 -0
  1365. package/src/utils/version-upgrade-migration/sync-embedded-versions.js +352 -0
  1366. package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -0
  1367. package/src/utils/version-upgrade-migration/sync-metrics-version.d.ts +13 -0
  1368. package/src/utils/version-upgrade-migration/sync-metrics-version.js +33 -0
  1369. package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -0
  1370. package/src/utils/version-upgrade-migration/sync-vended-versions.d.ts +10 -0
  1371. package/src/utils/version-upgrade-migration/sync-vended-versions.js +518 -0
  1372. package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -0
  1373. package/src/utils/version-upgrade-migration/vended-upgrade.d.ts +14 -0
  1374. package/src/utils/version-upgrade-migration/vended-upgrade.js +40 -0
  1375. package/src/utils/version-upgrade-migration/vended-upgrade.js.map +1 -0
  1376. package/src/utils/versions.d.ts +243 -108
  1377. package/src/utils/versions.js +268 -121
  1378. package/src/utils/versions.js.map +1 -1
  1379. package/src/utils/website-constructs/files/cdk/app/static-websites/__websiteNameKebabCase__.ts.template +12 -3
  1380. package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +252 -49
  1381. package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +56 -1
  1382. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +201 -107
  1383. package/src/utils/website-constructs/website-constructs.d.ts +12 -1
  1384. package/src/utils/website-constructs/website-constructs.js +49 -30
  1385. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  1386. package/bin/aws-nx-mcp.d.ts +0 -2
  1387. package/bin/aws-nx-mcp.js +0 -17
  1388. package/bin/aws-nx-mcp.js.map +0 -1
  1389. package/sdk/connection.d.ts +0 -6
  1390. package/sdk/connection.js +0 -10
  1391. package/sdk/connection.js.map +0 -1
  1392. package/sdk/license.d.ts +0 -8
  1393. package/sdk/license.js +0 -13
  1394. package/sdk/license.js.map +0 -1
  1395. package/sdk/open-api.d.ts +0 -10
  1396. package/sdk/open-api.js +0 -15
  1397. package/sdk/open-api.js.map +0 -1
  1398. package/sdk/py.d.ts +0 -14
  1399. package/sdk/py.js +0 -18
  1400. package/sdk/py.js.map +0 -1
  1401. package/sdk/terraform.d.ts +0 -6
  1402. package/sdk/terraform.js +0 -11
  1403. package/sdk/terraform.js.map +0 -1
  1404. package/sdk/ts.d.ts +0 -29
  1405. package/sdk/ts.js +0 -47
  1406. package/sdk/ts.js.map +0 -1
  1407. package/sdk/utils/ast.js +0 -12
  1408. package/sdk/utils/ast.js.map +0 -1
  1409. package/sdk/utils/format.js +0 -10
  1410. package/sdk/utils/format.js.map +0 -1
  1411. package/sdk/utils/test.js +0 -10
  1412. package/sdk/utils/test.js.map +0 -1
  1413. package/src/connection/agent-serve-local.d.ts +0 -33
  1414. package/src/connection/agent-serve-local.js +0 -48
  1415. package/src/connection/agent-serve-local.js.map +0 -1
  1416. package/src/connection/serve-local.js +0 -41
  1417. package/src/connection/serve-local.js.map +0 -1
  1418. package/src/py/agent/__snapshots__/generator.spec.ts.snap +0 -769
  1419. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
  1420. package/src/py/agent/files/a2a/main.py.template +0 -54
  1421. package/src/py/agent/files/ag-ui/main.py.template +0 -37
  1422. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
  1423. package/src/py/agent/react-connection/serve-local.js +0 -30
  1424. package/src/py/agent/react-connection/serve-local.js.map +0 -1
  1425. package/src/py/agent/scripts/http/chat.ts.template +0 -38
  1426. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +0 -19
  1427. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +0 -19
  1428. package/src/ts/agent/react-connection/serve-local.d.ts +0 -13
  1429. package/src/ts/agent/react-connection/serve-local.js +0 -19
  1430. package/src/ts/agent/react-connection/serve-local.js.map +0 -1
  1431. package/src/ts/agent/scripts/http/chat.ts.template +0 -35
  1432. package/src/ts/dynamodb/files/scripts/pull-image.ts.template +0 -15
  1433. package/src/ts/dynamodb/files/scripts/start-container.ts.template +0 -81
  1434. package/src/ts/dynamodb/files/src/constants.ts.template +0 -9
  1435. package/src/ts/dynamodb/files/src/gsi.ts.template +0 -14
  1436. package/src/ts/rdb/files/scripts/pull-image.ts.template +0 -15
  1437. package/src/ts/rdb/files/scripts/start-container.ts.template +0 -84
  1438. package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
  1439. package/src/ts/rdb/files/src/constants.ts.template +0 -8
  1440. package/src/ts/rdb/files/src/index.ts.template +0 -2
  1441. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
  1442. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
  1443. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
  1444. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
  1445. package/src/utils/files/common/scripts/src/infra-deploy.ts.template +0 -2
  1446. package/src/utils/files/common/scripts/src/infra-destroy.ts.template +0 -2
  1447. package/src/utils/files/terraform/scripts/reset-runtime-config.ts.template +0 -25
  1448. /package/src/py/agent/files/{common → langchain/common}/__init__.py.template +0 -0
  1449. /package/src/smithy/project/files/{src → service/src}/main.smithy.template +0 -0
  1450. /package/src/utils/files/common/scripts/src/{index.ts.template → infra/index.ts.template} +0 -0
  1451. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/credentials.ts.template +0 -0
  1452. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
@@ -0,0 +1,325 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */ import { joinPathFragments } from "@nx/devkit";
5
+ import { addDestructuredImport, applyGritQL, GRIT_INSERT_PLACEHOLDER, insertViaGritQL, matchGritQL } from "../../../utils/ast.js";
6
+ import { formatFilesInSubtree } from "../../../utils/format.js";
7
+ import { PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, SHARED_TERRAFORM_DIR } from "../../../utils/shared-constructs-constants.js";
8
+ /**
9
+ * Bring existing workspaces up to the generators' current DynamoDBTable
10
+ * configurability:
11
+ *
12
+ * - The vended `DynamoDBTable` CDK construct gains `encryption` and
13
+ * `encryptionKey` props. The KMS key is only created when `encryption` is
14
+ * `TableEncryption.CUSTOMER_MANAGED` and no `encryptionKey` is supplied.
15
+ * `enableKeyRotation` (already present) only applies to that auto-created
16
+ * key.
17
+ * - The generated per-table CDK app construct already forwards an optional
18
+ * `props` parameter through to `DynamoDBTable`, so no change is needed
19
+ * there.
20
+ * - The vended Terraform dynamodb core module gains the equivalent
21
+ * `encryption`, `kms_key_arn` and `create_kms_key` variables (`encryption`
22
+ * also accepts `DEFAULT`, the AWS owned key, which CDK already supports for
23
+ * free via `TableEncryption.DEFAULT`), with the KMS key made conditional on
24
+ * `create_kms_key` (not on `kms_key_arn`'s nullness, which `count` can't
25
+ * depend on when the ARN comes from another resource) and
26
+ * `server_side_encryption.enabled` tied to `encryption`. `AWS_MANAGED`
27
+ * resolves to the explicit `alias/aws/dynamodb` ARN rather than `null`,
28
+ * since the provider's `kms_key_arn` is Optional+Computed and a `null`
29
+ * there means "leave whatever is there", not "clear it".
30
+ * - The vended Terraform per-table app module (`app/dynamodb/<name>/<name>.tf`)
31
+ * gains pass-through `encryption`, `kms_key_arn` and `create_kms_key`
32
+ * variables forwarded to the core module call, matching its existing
33
+ * `enable_key_rotation` pass-through.
34
+ *
35
+ * These files are generated with `KeepExisting`, so without this an upgraded
36
+ * workspace has generators that support this configuration but vended files
37
+ * that don't. Diverged files are left untouched and reported via `nextSteps`.
38
+ */ const CDK_DYNAMODB_FILE = `${PACKAGES_DIR}/${SHARED_CONSTRUCTS_DIR}/src/core/dynamodb.ts`;
39
+ const TERRAFORM_DYNAMODB_FILE = `${PACKAGES_DIR}/${SHARED_TERRAFORM_DIR}/src/core/dynamodb/dynamodb.tf`;
40
+ const TERRAFORM_DYNAMODB_APP_DIR = `${PACKAGES_DIR}/${SHARED_TERRAFORM_DIR}/src/app/dynamodb`;
41
+ const CDK_DIVERGED_MESSAGE = `${CDK_DYNAMODB_FILE}: has diverged from the generated shape - left untouched. To pick up the encryption and encryptionKey props, manually port them from the vended core/dynamodb.ts template (see the ts#dynamodb generator's DynamoDBTable construct).`;
42
+ const TERRAFORM_DIVERGED_MESSAGE = `${TERRAFORM_DYNAMODB_FILE}: has diverged from the generated shape - left untouched. To pick up the encryption and kms_key_arn variables, manually port them from the vended dynamodb.tf template (see the ts#dynamodb generator's dynamodb module).`;
43
+ const terraformAppDivergedMessage = (filePath)=>`${filePath}: has diverged from the generated shape - left untouched. To make encryption and kms_key_arn configurable from your root Terraform configuration, add pass-through variables here and forward them to the dynamodb_table module call (see the ts#dynamodb generator's dynamodb app template).`;
44
+ /**
45
+ * Surface encryption/encryptionKey on the vended DynamoDBTable CDK
46
+ * construct.
47
+ */ const migrateCdkConstruct = async (tree, nextSteps)=>{
48
+ if (!tree.exists(CDK_DYNAMODB_FILE)) {
49
+ return; // This workspace has no CDK DynamoDBTable construct.
50
+ }
51
+ if (await matchGritQL(tree, CDK_DYNAMODB_FILE, '`readonly encryption?: TableEncryption`')) {
52
+ return; // Already migrated.
53
+ }
54
+ const ENABLE_KEY_ROTATION_FIELD = '`readonly enableKeyRotation?: boolean`';
55
+ // Matched as a literal so the new fields can be inserted *before* it (see
56
+ // below) — GritQL doesn't include a leading comment in the span it matches
57
+ // for the field itself, so anchoring on the field would strand this
58
+ // comment above the newly-inserted fields instead of above the field it
59
+ // actually documents.
60
+ const ENABLE_KEY_ROTATION_COMMENT = `\`/**
61
+ * Whether to enable automatic key rotation on the KMS key used to encrypt the table.
62
+ *
63
+ * @default true
64
+ */\``;
65
+ const DESTRUCTURE_OLD = `\`{
66
+ tableName,
67
+ runtimeConfigKey,
68
+ billingMode = BillingMode.PAY_PER_REQUEST,
69
+ pointInTimeRecoverySpecification = { pointInTimeRecoveryEnabled: true },
70
+ deletionProtection = true,
71
+ removalPolicy = RemovalPolicy.RETAIN,
72
+ enableKeyRotation = true,
73
+ ...rest
74
+ }: DynamoDBTableProps\``;
75
+ const KEY_CREATION_OLD = "`const key = new Key(this, 'EncryptionKey', { enableKeyRotation });`";
76
+ const TABLE_ENCRYPTION_OLD = '`encryption: TableEncryption.CUSTOMER_MANAGED`';
77
+ const anchors = [
78
+ ENABLE_KEY_ROTATION_FIELD,
79
+ ENABLE_KEY_ROTATION_COMMENT,
80
+ DESTRUCTURE_OLD,
81
+ KEY_CREATION_OLD,
82
+ TABLE_ENCRYPTION_OLD
83
+ ];
84
+ const allPresent = (await Promise.all(anchors.map((pattern)=>matchGritQL(tree, CDK_DYNAMODB_FILE, pattern)))).every(Boolean);
85
+ if (!allPresent) {
86
+ nextSteps.push(CDK_DIVERGED_MESSAGE);
87
+ return;
88
+ }
89
+ await addDestructuredImport(tree, CDK_DYNAMODB_FILE, [
90
+ 'IKey'
91
+ ], 'aws-cdk-lib/aws-kms');
92
+ // Inserted before the enableKeyRotation field's own leading comment (rather
93
+ // than before the bare field) so that comment stays directly above the
94
+ // field it documents, instead of being stranded above the new fields.
95
+ await insertViaGritQL(tree, CDK_DYNAMODB_FILE, `${ENABLE_KEY_ROTATION_COMMENT} as $comment => \`${GRIT_INSERT_PLACEHOLDER}
96
+ $comment\``, `/**
97
+ * Server-side encryption for the table.
98
+ *
99
+ * @default TableEncryption.CUSTOMER_MANAGED
100
+ */
101
+ readonly encryption?: TableEncryption;
102
+
103
+ /**
104
+ * KMS key used to encrypt the table. Only used when \`encryption\` is
105
+ * \`TableEncryption.CUSTOMER_MANAGED\`. When not provided, a new key is created.
106
+ */
107
+ readonly encryptionKey?: IKey;
108
+
109
+ `);
110
+ // Update the enableKeyRotation field's own comment to note it now only
111
+ // applies to the auto-created key, matching the vended template exactly.
112
+ // Routed through the insert placeholder (rather than embedding the text
113
+ // directly in the GritQL rewrite) since the comment's own backticks would
114
+ // otherwise be parsed as GritQL code-block delimiters.
115
+ await insertViaGritQL(tree, CDK_DYNAMODB_FILE, `${ENABLE_KEY_ROTATION_COMMENT} => \`${GRIT_INSERT_PLACEHOLDER}\``, `/**
116
+ * Whether to enable automatic key rotation on the KMS key used to encrypt the table.
117
+ * Only applies when \`encryption\` is \`TableEncryption.CUSTOMER_MANAGED\` and no
118
+ * \`encryptionKey\` is supplied.
119
+ *
120
+ * @default true
121
+ */`);
122
+ await applyGritQL(tree, CDK_DYNAMODB_FILE, `${DESTRUCTURE_OLD} => \`{
123
+ tableName,
124
+ runtimeConfigKey,
125
+ billingMode = BillingMode.PAY_PER_REQUEST,
126
+ pointInTimeRecoverySpecification = { pointInTimeRecoveryEnabled: true },
127
+ deletionProtection = true,
128
+ removalPolicy = RemovalPolicy.RETAIN,
129
+ encryption = TableEncryption.CUSTOMER_MANAGED,
130
+ encryptionKey,
131
+ enableKeyRotation = true,
132
+ ...rest
133
+ }: DynamoDBTableProps\``);
134
+ await applyGritQL(tree, CDK_DYNAMODB_FILE, `${KEY_CREATION_OLD} => \`const key: IKey | undefined =
135
+ encryption === TableEncryption.CUSTOMER_MANAGED
136
+ ? (encryptionKey ?? new Key(this, 'EncryptionKey', { enableKeyRotation }))
137
+ : undefined;\``);
138
+ await applyGritQL(tree, CDK_DYNAMODB_FILE, `${TABLE_ENCRYPTION_OLD} => \`encryption\``);
139
+ };
140
+ const hcl = (pattern)=>`language hcl\n${pattern}`;
141
+ const NEW_TERRAFORM_VARIABLES_TEXT = [
142
+ 'variable "encryption" {',
143
+ ' description = "Server-side encryption for the table. One of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT (the AWS owned key, at no cost and with no key to manage). Changing this on an already-deployed table away from CUSTOMER_MANAGED requires a manual step first - see the ts#dynamodb generator docs."',
144
+ ' type = string',
145
+ ' default = "CUSTOMER_MANAGED"',
146
+ '',
147
+ ' validation {',
148
+ ' condition = contains(["CUSTOMER_MANAGED", "AWS_MANAGED", "DEFAULT"], var.encryption)',
149
+ ' error_message = "encryption must be one of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT."',
150
+ ' }',
151
+ '}',
152
+ '',
153
+ 'variable "kms_key_arn" {',
154
+ ' description = "ARN of an existing KMS key used to encrypt the table when encryption is CUSTOMER_MANAGED. When not provided and create_kms_key is true, a new key is created. Note that a customer-supplied key must already grant the DynamoDB service the necessary permissions in its own key policy."',
155
+ ' type = string',
156
+ ' default = null',
157
+ '}',
158
+ '',
159
+ 'variable "create_kms_key" {',
160
+ ' description = "Whether to create a KMS key for the table. Only applies when encryption is CUSTOMER_MANAGED. Set to false when supplying kms_key_arn."',
161
+ ' type = bool',
162
+ ' default = true',
163
+ '}',
164
+ '',
165
+ 'variable "enable_key_rotation" {',
166
+ ' description = "Whether to enable automatic key rotation on the KMS key used to encrypt the table. Only applies when encryption is CUSTOMER_MANAGED and create_kms_key is true."',
167
+ ' type = bool',
168
+ ' default = true',
169
+ '}'
170
+ ].join('\n');
171
+ /**
172
+ * Surface encryption/kms_key_arn on the vended Terraform dynamodb core
173
+ * module.
174
+ */ const migrateTerraformModule = async (tree, nextSteps)=>{
175
+ if (!tree.exists(TERRAFORM_DYNAMODB_FILE)) {
176
+ return; // This workspace has no Terraform dynamodb module.
177
+ }
178
+ if (await matchGritQL(tree, TERRAFORM_DYNAMODB_FILE, hcl('`variable "encryption" { $_ }`'))) {
179
+ return; // Already migrated.
180
+ }
181
+ const OLD_ENABLE_KEY_ROTATION_VAR = hcl([
182
+ '`variable "enable_key_rotation" {',
183
+ ' description = "Whether to enable automatic key rotation on the KMS key used to encrypt the table."',
184
+ ' type = bool',
185
+ ' default = true',
186
+ '}`'
187
+ ].join('\n'));
188
+ const LOCALS_BLOCK = hcl('`locals { $_ }`');
189
+ const DATA_PARTITION_LINE = hcl('`data "aws_partition" "current" {}`');
190
+ const KMS_KEY_BLOCK = hcl('`resource "aws_kms_key" "table" { $_ }`');
191
+ const SSE_ENABLED_LINE = hcl('`enabled = true`');
192
+ const SSE_KMS_KEY_LINE = hcl('`kms_key_arn = aws_kms_key.table.arn`');
193
+ const OUTPUT_VALUE_LINE = hcl('`value = aws_kms_key.table.arn`');
194
+ const OUTPUT_DESCRIPTION_LINE = hcl('`description = "ARN of the KMS key used to encrypt the DynamoDB table."`');
195
+ const anchors = [
196
+ OLD_ENABLE_KEY_ROTATION_VAR,
197
+ LOCALS_BLOCK,
198
+ DATA_PARTITION_LINE,
199
+ KMS_KEY_BLOCK,
200
+ SSE_ENABLED_LINE,
201
+ SSE_KMS_KEY_LINE,
202
+ OUTPUT_VALUE_LINE,
203
+ OUTPUT_DESCRIPTION_LINE
204
+ ];
205
+ const allPresent = (await Promise.all(anchors.map((pattern)=>matchGritQL(tree, TERRAFORM_DYNAMODB_FILE, pattern)))).every(Boolean);
206
+ if (!allPresent) {
207
+ nextSteps.push(TERRAFORM_DIVERGED_MESSAGE);
208
+ return;
209
+ }
210
+ // 1. Replace the enable_key_rotation variable with the new variables plus
211
+ // an updated enable_key_rotation description, in the same position.
212
+ await applyGritQL(tree, TERRAFORM_DYNAMODB_FILE, `${OLD_ENABLE_KEY_ROTATION_VAR} => \`${NEW_TERRAFORM_VARIABLES_TEXT.replace(/`/g, '\\`')}\``);
213
+ // 2. New locals, appended into the existing locals block.
214
+ await insertViaGritQL(tree, TERRAFORM_DYNAMODB_FILE, hcl(`\`locals { $body }\` => \`locals {\n $body\n\n ${GRIT_INSERT_PLACEHOLDER}\n}\``), [
215
+ 'create_table_key = var.encryption == "CUSTOMER_MANAGED" && var.create_kms_key',
216
+ 'table_kms_key_arn = (',
217
+ ' var.encryption == "CUSTOMER_MANAGED" ? (local.create_table_key ? aws_kms_key.table[0].arn : var.kms_key_arn) :',
218
+ ' var.encryption == "AWS_MANAGED" ? "arn:${data.aws_partition.current.partition}:kms:${data.aws_region.current.region}:${data.aws_caller_identity.current.account_id}:alias/aws/dynamodb" :',
219
+ ' null',
220
+ ')'
221
+ ].join('\n '));
222
+ // 2b. Region is needed to resolve the AWS_MANAGED key's alias ARN above.
223
+ await insertViaGritQL(tree, TERRAFORM_DYNAMODB_FILE, `${DATA_PARTITION_LINE} => \`data "aws_partition" "current" {}\n${GRIT_INSERT_PLACEHOLDER}\``, 'data "aws_region" "current" {}');
224
+ // 3. Make the KMS key conditional on encryption/kms_key_arn.
225
+ await applyGritQL(tree, TERRAFORM_DYNAMODB_FILE, hcl(`\`resource "aws_kms_key" "table" { $body }\` => \`resource "aws_kms_key" "table" {
226
+ count = local.create_table_key ? 1 : 0
227
+
228
+ $body
229
+ }\``));
230
+ // 4. Only enable KMS-backed encryption when not using the AWS owned key.
231
+ await applyGritQL(tree, TERRAFORM_DYNAMODB_FILE, `${SSE_ENABLED_LINE} => \`enabled = var.encryption != "DEFAULT"\``);
232
+ // 4b. Checkov's CKV_AWS_119 only passes when server_side_encryption.enabled
233
+ // is the literal `true` — it can't resolve the conditional above, even
234
+ // though CUSTOMER_MANAGED (the default) always uses a real CMK. Same
235
+ // false-positive shape as CKV_AWS_139 on the vended RDS module.
236
+ await insertViaGritQL(tree, TERRAFORM_DYNAMODB_FILE, hcl(`\`resource "aws_dynamodb_table" "table" { $body }\` => \`resource "aws_dynamodb_table" "table" {\n ${GRIT_INSERT_PLACEHOLDER}\n $body\n}\``), '#checkov:skip=CKV_AWS_119:Encryption is configurable via var.encryption; checkov cannot resolve the conditional server_side_encryption.enabled expression');
237
+ // 5. Resolve the key ARN through the new local everywhere it's consumed.
238
+ await applyGritQL(tree, TERRAFORM_DYNAMODB_FILE, `${SSE_KMS_KEY_LINE} => \`kms_key_arn = local.table_kms_key_arn\``);
239
+ await applyGritQL(tree, TERRAFORM_DYNAMODB_FILE, `${OUTPUT_VALUE_LINE} => \`value = local.table_kms_key_arn\``);
240
+ await applyGritQL(tree, TERRAFORM_DYNAMODB_FILE, `${OUTPUT_DESCRIPTION_LINE} => \`description = "ARN of the KMS key used to encrypt the DynamoDB table, or null when using the AWS owned key (encryption = DEFAULT)."\``);
241
+ };
242
+ const NEW_APP_MODULE_VARIABLES_TEXT = [
243
+ 'variable "encryption" {',
244
+ ' description = "Server-side encryption for the table. One of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT (the AWS owned key, at no cost and with no key to manage). Changing this on an already-deployed table away from CUSTOMER_MANAGED requires a manual step first - see the ts#dynamodb generator docs."',
245
+ ' type = string',
246
+ ' default = "CUSTOMER_MANAGED"',
247
+ '',
248
+ ' validation {',
249
+ ' condition = contains(["CUSTOMER_MANAGED", "AWS_MANAGED", "DEFAULT"], var.encryption)',
250
+ ' error_message = "encryption must be one of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT."',
251
+ ' }',
252
+ '}',
253
+ '',
254
+ 'variable "kms_key_arn" {',
255
+ ' description = "ARN of an existing KMS key used to encrypt the table when encryption is CUSTOMER_MANAGED. When not provided and create_kms_key is true, a new key is created. Note that a customer-supplied key must already grant the DynamoDB service the necessary permissions in its own key policy."',
256
+ ' type = string',
257
+ ' default = null',
258
+ '}',
259
+ '',
260
+ 'variable "create_kms_key" {',
261
+ ' description = "Whether to create a KMS key for the table. Only applies when encryption is CUSTOMER_MANAGED. Set to false when supplying kms_key_arn."',
262
+ ' type = bool',
263
+ ' default = true',
264
+ '}',
265
+ '',
266
+ 'variable "enable_key_rotation" {',
267
+ ' description = "Whether to enable automatic key rotation on the KMS key used to encrypt the table. Only applies when encryption is CUSTOMER_MANAGED and create_kms_key is true."',
268
+ ' type = bool',
269
+ ' default = true',
270
+ '}'
271
+ ].join('\n');
272
+ /**
273
+ * Surface the same configuration as pass-through variables on each vended
274
+ * per-table Terraform app module, matching its existing pass-through
275
+ * convention for enable_key_rotation.
276
+ */ const migrateTerraformAppModules = async (tree, nextSteps)=>{
277
+ if (!tree.exists(TERRAFORM_DYNAMODB_APP_DIR)) {
278
+ return;
279
+ }
280
+ for (const dirName of tree.children(TERRAFORM_DYNAMODB_APP_DIR)){
281
+ const filePath = joinPathFragments(TERRAFORM_DYNAMODB_APP_DIR, dirName, `${dirName}.tf`);
282
+ if (!tree.exists(filePath)) {
283
+ continue; // Not a dynamodb app module directory.
284
+ }
285
+ if (await matchGritQL(tree, filePath, hcl('`variable "encryption" { $_ }`'))) {
286
+ continue; // Already migrated.
287
+ }
288
+ const OLD_ENABLE_KEY_ROTATION_VAR = hcl([
289
+ '`variable "enable_key_rotation" {',
290
+ ' description = "Whether to enable automatic key rotation on the KMS key used to encrypt the table."',
291
+ ' type = bool',
292
+ ' default = true',
293
+ '}`'
294
+ ].join('\n'));
295
+ const MODULE_BLOCK = hcl('`module "dynamodb_table" { $_ }`');
296
+ const DELETION_PROTECTION_LINE = hcl('`deletion_protection_enabled = var.deletion_protection_enabled`');
297
+ const ready = (await Promise.all([
298
+ OLD_ENABLE_KEY_ROTATION_VAR,
299
+ MODULE_BLOCK,
300
+ DELETION_PROTECTION_LINE
301
+ ].map((pattern)=>matchGritQL(tree, filePath, pattern)))).every(Boolean);
302
+ if (!ready) {
303
+ nextSteps.push(terraformAppDivergedMessage(filePath));
304
+ continue;
305
+ }
306
+ await applyGritQL(tree, filePath, `${OLD_ENABLE_KEY_ROTATION_VAR} => \`${NEW_APP_MODULE_VARIABLES_TEXT.replace(/`/g, '\\`')}\``);
307
+ await insertViaGritQL(tree, filePath, hcl(`\`deletion_protection_enabled = var.deletion_protection_enabled\` => \`deletion_protection_enabled = var.deletion_protection_enabled\n ${GRIT_INSERT_PLACEHOLDER}\``), [
308
+ 'encryption = var.encryption',
309
+ 'kms_key_arn = var.kms_key_arn',
310
+ 'create_kms_key = var.create_kms_key'
311
+ ].join('\n '));
312
+ }
313
+ };
314
+ export default async function migration(tree) {
315
+ const nextSteps = [];
316
+ await migrateCdkConstruct(tree, nextSteps);
317
+ await migrateTerraformModule(tree, nextSteps);
318
+ await migrateTerraformAppModules(tree, nextSteps);
319
+ await formatFilesInSubtree(tree);
320
+ return {
321
+ nextSteps
322
+ };
323
+ }
324
+
325
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/latest/dynamodb-configurable-encryption/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n joinPathFragments,\n type MigrationReturnObject,\n type Tree,\n} from '@nx/devkit';\nimport {\n addDestructuredImport,\n applyGritQL,\n GRIT_INSERT_PLACEHOLDER,\n insertViaGritQL,\n matchGritQL,\n} from '../../../utils/ast.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_TERRAFORM_DIR,\n} from '../../../utils/shared-constructs-constants.js';\n\n/**\n * Bring existing workspaces up to the generators' current DynamoDBTable\n * configurability:\n *\n * - The vended `DynamoDBTable` CDK construct gains `encryption` and\n * `encryptionKey` props. The KMS key is only created when `encryption` is\n * `TableEncryption.CUSTOMER_MANAGED` and no `encryptionKey` is supplied.\n * `enableKeyRotation` (already present) only applies to that auto-created\n * key.\n * - The generated per-table CDK app construct already forwards an optional\n * `props` parameter through to `DynamoDBTable`, so no change is needed\n * there.\n * - The vended Terraform dynamodb core module gains the equivalent\n * `encryption`, `kms_key_arn` and `create_kms_key` variables (`encryption`\n * also accepts `DEFAULT`, the AWS owned key, which CDK already supports for\n * free via `TableEncryption.DEFAULT`), with the KMS key made conditional on\n * `create_kms_key` (not on `kms_key_arn`'s nullness, which `count` can't\n * depend on when the ARN comes from another resource) and\n * `server_side_encryption.enabled` tied to `encryption`. `AWS_MANAGED`\n * resolves to the explicit `alias/aws/dynamodb` ARN rather than `null`,\n * since the provider's `kms_key_arn` is Optional+Computed and a `null`\n * there means \"leave whatever is there\", not \"clear it\".\n * - The vended Terraform per-table app module (`app/dynamodb/<name>/<name>.tf`)\n * gains pass-through `encryption`, `kms_key_arn` and `create_kms_key`\n * variables forwarded to the core module call, matching its existing\n * `enable_key_rotation` pass-through.\n *\n * These files are generated with `KeepExisting`, so without this an upgraded\n * workspace has generators that support this configuration but vended files\n * that don't. Diverged files are left untouched and reported via `nextSteps`.\n */\n\nconst CDK_DYNAMODB_FILE = `${PACKAGES_DIR}/${SHARED_CONSTRUCTS_DIR}/src/core/dynamodb.ts`;\nconst TERRAFORM_DYNAMODB_FILE = `${PACKAGES_DIR}/${SHARED_TERRAFORM_DIR}/src/core/dynamodb/dynamodb.tf`;\nconst TERRAFORM_DYNAMODB_APP_DIR = `${PACKAGES_DIR}/${SHARED_TERRAFORM_DIR}/src/app/dynamodb`;\n\nconst CDK_DIVERGED_MESSAGE = `${CDK_DYNAMODB_FILE}: has diverged from the generated shape - left untouched. To pick up the encryption and encryptionKey props, manually port them from the vended core/dynamodb.ts template (see the ts#dynamodb generator's DynamoDBTable construct).`;\n\nconst TERRAFORM_DIVERGED_MESSAGE = `${TERRAFORM_DYNAMODB_FILE}: has diverged from the generated shape - left untouched. To pick up the encryption and kms_key_arn variables, manually port them from the vended dynamodb.tf template (see the ts#dynamodb generator's dynamodb module).`;\n\nconst terraformAppDivergedMessage = (filePath: string) =>\n `${filePath}: has diverged from the generated shape - left untouched. To make encryption and kms_key_arn configurable from your root Terraform configuration, add pass-through variables here and forward them to the dynamodb_table module call (see the ts#dynamodb generator's dynamodb app template).`;\n\n/**\n * Surface encryption/encryptionKey on the vended DynamoDBTable CDK\n * construct.\n */\nconst migrateCdkConstruct = async (\n tree: Tree,\n nextSteps: string[],\n): Promise<void> => {\n if (!tree.exists(CDK_DYNAMODB_FILE)) {\n return; // This workspace has no CDK DynamoDBTable construct.\n }\n\n if (\n await matchGritQL(\n tree,\n CDK_DYNAMODB_FILE,\n '`readonly encryption?: TableEncryption`',\n )\n ) {\n return; // Already migrated.\n }\n\n const ENABLE_KEY_ROTATION_FIELD = '`readonly enableKeyRotation?: boolean`';\n // Matched as a literal so the new fields can be inserted *before* it (see\n // below) — GritQL doesn't include a leading comment in the span it matches\n // for the field itself, so anchoring on the field would strand this\n // comment above the newly-inserted fields instead of above the field it\n // actually documents.\n const ENABLE_KEY_ROTATION_COMMENT = `\\`/**\n * Whether to enable automatic key rotation on the KMS key used to encrypt the table.\n *\n * @default true\n */\\``;\n const DESTRUCTURE_OLD = `\\`{\n tableName,\n runtimeConfigKey,\n billingMode = BillingMode.PAY_PER_REQUEST,\n pointInTimeRecoverySpecification = { pointInTimeRecoveryEnabled: true },\n deletionProtection = true,\n removalPolicy = RemovalPolicy.RETAIN,\n enableKeyRotation = true,\n ...rest\n }: DynamoDBTableProps\\``;\n const KEY_CREATION_OLD =\n \"`const key = new Key(this, 'EncryptionKey', { enableKeyRotation });`\";\n const TABLE_ENCRYPTION_OLD = '`encryption: TableEncryption.CUSTOMER_MANAGED`';\n\n const anchors = [\n ENABLE_KEY_ROTATION_FIELD,\n ENABLE_KEY_ROTATION_COMMENT,\n DESTRUCTURE_OLD,\n KEY_CREATION_OLD,\n TABLE_ENCRYPTION_OLD,\n ];\n\n const allPresent = (\n await Promise.all(\n anchors.map((pattern) => matchGritQL(tree, CDK_DYNAMODB_FILE, pattern)),\n )\n ).every(Boolean);\n\n if (!allPresent) {\n nextSteps.push(CDK_DIVERGED_MESSAGE);\n return;\n }\n\n await addDestructuredImport(\n tree,\n CDK_DYNAMODB_FILE,\n ['IKey'],\n 'aws-cdk-lib/aws-kms',\n );\n\n // Inserted before the enableKeyRotation field's own leading comment (rather\n // than before the bare field) so that comment stays directly above the\n // field it documents, instead of being stranded above the new fields.\n await insertViaGritQL(\n tree,\n CDK_DYNAMODB_FILE,\n `${ENABLE_KEY_ROTATION_COMMENT} as $comment => \\`${GRIT_INSERT_PLACEHOLDER}\n $comment\\``,\n `/**\n * Server-side encryption for the table.\n *\n * @default TableEncryption.CUSTOMER_MANAGED\n */\n readonly encryption?: TableEncryption;\n\n /**\n * KMS key used to encrypt the table. Only used when \\`encryption\\` is\n * \\`TableEncryption.CUSTOMER_MANAGED\\`. When not provided, a new key is created.\n */\n readonly encryptionKey?: IKey;\n\n `,\n );\n\n // Update the enableKeyRotation field's own comment to note it now only\n // applies to the auto-created key, matching the vended template exactly.\n // Routed through the insert placeholder (rather than embedding the text\n // directly in the GritQL rewrite) since the comment's own backticks would\n // otherwise be parsed as GritQL code-block delimiters.\n await insertViaGritQL(\n tree,\n CDK_DYNAMODB_FILE,\n `${ENABLE_KEY_ROTATION_COMMENT} => \\`${GRIT_INSERT_PLACEHOLDER}\\``,\n `/**\n * Whether to enable automatic key rotation on the KMS key used to encrypt the table.\n * Only applies when \\`encryption\\` is \\`TableEncryption.CUSTOMER_MANAGED\\` and no\n * \\`encryptionKey\\` is supplied.\n *\n * @default true\n */`,\n );\n\n await applyGritQL(\n tree,\n CDK_DYNAMODB_FILE,\n `${DESTRUCTURE_OLD} => \\`{\n tableName,\n runtimeConfigKey,\n billingMode = BillingMode.PAY_PER_REQUEST,\n pointInTimeRecoverySpecification = { pointInTimeRecoveryEnabled: true },\n deletionProtection = true,\n removalPolicy = RemovalPolicy.RETAIN,\n encryption = TableEncryption.CUSTOMER_MANAGED,\n encryptionKey,\n enableKeyRotation = true,\n ...rest\n }: DynamoDBTableProps\\``,\n );\n\n await applyGritQL(\n tree,\n CDK_DYNAMODB_FILE,\n `${KEY_CREATION_OLD} => \\`const key: IKey | undefined =\n encryption === TableEncryption.CUSTOMER_MANAGED\n ? (encryptionKey ?? new Key(this, 'EncryptionKey', { enableKeyRotation }))\n : undefined;\\``,\n );\n\n await applyGritQL(\n tree,\n CDK_DYNAMODB_FILE,\n `${TABLE_ENCRYPTION_OLD} => \\`encryption\\``,\n );\n};\n\nconst hcl = (pattern: string) => `language hcl\\n${pattern}`;\n\nconst NEW_TERRAFORM_VARIABLES_TEXT = [\n 'variable \"encryption\" {',\n ' description = \"Server-side encryption for the table. One of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT (the AWS owned key, at no cost and with no key to manage). Changing this on an already-deployed table away from CUSTOMER_MANAGED requires a manual step first - see the ts#dynamodb generator docs.\"',\n ' type = string',\n ' default = \"CUSTOMER_MANAGED\"',\n '',\n ' validation {',\n ' condition = contains([\"CUSTOMER_MANAGED\", \"AWS_MANAGED\", \"DEFAULT\"], var.encryption)',\n ' error_message = \"encryption must be one of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT.\"',\n ' }',\n '}',\n '',\n 'variable \"kms_key_arn\" {',\n ' description = \"ARN of an existing KMS key used to encrypt the table when encryption is CUSTOMER_MANAGED. When not provided and create_kms_key is true, a new key is created. Note that a customer-supplied key must already grant the DynamoDB service the necessary permissions in its own key policy.\"',\n ' type = string',\n ' default = null',\n '}',\n '',\n 'variable \"create_kms_key\" {',\n ' description = \"Whether to create a KMS key for the table. Only applies when encryption is CUSTOMER_MANAGED. Set to false when supplying kms_key_arn.\"',\n ' type = bool',\n ' default = true',\n '}',\n '',\n 'variable \"enable_key_rotation\" {',\n ' description = \"Whether to enable automatic key rotation on the KMS key used to encrypt the table. Only applies when encryption is CUSTOMER_MANAGED and create_kms_key is true.\"',\n ' type = bool',\n ' default = true',\n '}',\n].join('\\n');\n\n/**\n * Surface encryption/kms_key_arn on the vended Terraform dynamodb core\n * module.\n */\nconst migrateTerraformModule = async (\n tree: Tree,\n nextSteps: string[],\n): Promise<void> => {\n if (!tree.exists(TERRAFORM_DYNAMODB_FILE)) {\n return; // This workspace has no Terraform dynamodb module.\n }\n\n if (\n await matchGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n hcl('`variable \"encryption\" { $_ }`'),\n )\n ) {\n return; // Already migrated.\n }\n\n const OLD_ENABLE_KEY_ROTATION_VAR = hcl(\n [\n '`variable \"enable_key_rotation\" {',\n ' description = \"Whether to enable automatic key rotation on the KMS key used to encrypt the table.\"',\n ' type = bool',\n ' default = true',\n '}`',\n ].join('\\n'),\n );\n const LOCALS_BLOCK = hcl('`locals { $_ }`');\n const DATA_PARTITION_LINE = hcl('`data \"aws_partition\" \"current\" {}`');\n const KMS_KEY_BLOCK = hcl('`resource \"aws_kms_key\" \"table\" { $_ }`');\n const SSE_ENABLED_LINE = hcl('`enabled = true`');\n const SSE_KMS_KEY_LINE = hcl('`kms_key_arn = aws_kms_key.table.arn`');\n const OUTPUT_VALUE_LINE = hcl('`value = aws_kms_key.table.arn`');\n const OUTPUT_DESCRIPTION_LINE = hcl(\n '`description = \"ARN of the KMS key used to encrypt the DynamoDB table.\"`',\n );\n\n const anchors = [\n OLD_ENABLE_KEY_ROTATION_VAR,\n LOCALS_BLOCK,\n DATA_PARTITION_LINE,\n KMS_KEY_BLOCK,\n SSE_ENABLED_LINE,\n SSE_KMS_KEY_LINE,\n OUTPUT_VALUE_LINE,\n OUTPUT_DESCRIPTION_LINE,\n ];\n\n const allPresent = (\n await Promise.all(\n anchors.map((pattern) =>\n matchGritQL(tree, TERRAFORM_DYNAMODB_FILE, pattern),\n ),\n )\n ).every(Boolean);\n\n if (!allPresent) {\n nextSteps.push(TERRAFORM_DIVERGED_MESSAGE);\n return;\n }\n\n // 1. Replace the enable_key_rotation variable with the new variables plus\n // an updated enable_key_rotation description, in the same position.\n await applyGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n `${OLD_ENABLE_KEY_ROTATION_VAR} => \\`${NEW_TERRAFORM_VARIABLES_TEXT.replace(/`/g, '\\\\`')}\\``,\n );\n\n // 2. New locals, appended into the existing locals block.\n await insertViaGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n hcl(\n `\\`locals { $body }\\` => \\`locals {\\n $body\\n\\n ${GRIT_INSERT_PLACEHOLDER}\\n}\\``,\n ),\n [\n 'create_table_key = var.encryption == \"CUSTOMER_MANAGED\" && var.create_kms_key',\n 'table_kms_key_arn = (',\n ' var.encryption == \"CUSTOMER_MANAGED\" ? (local.create_table_key ? aws_kms_key.table[0].arn : var.kms_key_arn) :',\n ' var.encryption == \"AWS_MANAGED\" ? \"arn:${data.aws_partition.current.partition}:kms:${data.aws_region.current.region}:${data.aws_caller_identity.current.account_id}:alias/aws/dynamodb\" :',\n ' null',\n ')',\n ].join('\\n '),\n );\n\n // 2b. Region is needed to resolve the AWS_MANAGED key's alias ARN above.\n await insertViaGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n `${DATA_PARTITION_LINE} => \\`data \"aws_partition\" \"current\" {}\\n${GRIT_INSERT_PLACEHOLDER}\\``,\n 'data \"aws_region\" \"current\" {}',\n );\n\n // 3. Make the KMS key conditional on encryption/kms_key_arn.\n await applyGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n hcl(`\\`resource \"aws_kms_key\" \"table\" { $body }\\` => \\`resource \"aws_kms_key\" \"table\" {\n count = local.create_table_key ? 1 : 0\n\n $body\n}\\``),\n );\n\n // 4. Only enable KMS-backed encryption when not using the AWS owned key.\n await applyGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n `${SSE_ENABLED_LINE} => \\`enabled = var.encryption != \"DEFAULT\"\\``,\n );\n\n // 4b. Checkov's CKV_AWS_119 only passes when server_side_encryption.enabled\n // is the literal `true` — it can't resolve the conditional above, even\n // though CUSTOMER_MANAGED (the default) always uses a real CMK. Same\n // false-positive shape as CKV_AWS_139 on the vended RDS module.\n await insertViaGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n hcl(\n `\\`resource \"aws_dynamodb_table\" \"table\" { $body }\\` => \\`resource \"aws_dynamodb_table\" \"table\" {\\n ${GRIT_INSERT_PLACEHOLDER}\\n $body\\n}\\``,\n ),\n '#checkov:skip=CKV_AWS_119:Encryption is configurable via var.encryption; checkov cannot resolve the conditional server_side_encryption.enabled expression',\n );\n\n // 5. Resolve the key ARN through the new local everywhere it's consumed.\n await applyGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n `${SSE_KMS_KEY_LINE} => \\`kms_key_arn = local.table_kms_key_arn\\``,\n );\n await applyGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n `${OUTPUT_VALUE_LINE} => \\`value = local.table_kms_key_arn\\``,\n );\n await applyGritQL(\n tree,\n TERRAFORM_DYNAMODB_FILE,\n `${OUTPUT_DESCRIPTION_LINE} => \\`description = \"ARN of the KMS key used to encrypt the DynamoDB table, or null when using the AWS owned key (encryption = DEFAULT).\"\\``,\n );\n};\n\nconst NEW_APP_MODULE_VARIABLES_TEXT = [\n 'variable \"encryption\" {',\n ' description = \"Server-side encryption for the table. One of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT (the AWS owned key, at no cost and with no key to manage). Changing this on an already-deployed table away from CUSTOMER_MANAGED requires a manual step first - see the ts#dynamodb generator docs.\"',\n ' type = string',\n ' default = \"CUSTOMER_MANAGED\"',\n '',\n ' validation {',\n ' condition = contains([\"CUSTOMER_MANAGED\", \"AWS_MANAGED\", \"DEFAULT\"], var.encryption)',\n ' error_message = \"encryption must be one of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT.\"',\n ' }',\n '}',\n '',\n 'variable \"kms_key_arn\" {',\n ' description = \"ARN of an existing KMS key used to encrypt the table when encryption is CUSTOMER_MANAGED. When not provided and create_kms_key is true, a new key is created. Note that a customer-supplied key must already grant the DynamoDB service the necessary permissions in its own key policy.\"',\n ' type = string',\n ' default = null',\n '}',\n '',\n 'variable \"create_kms_key\" {',\n ' description = \"Whether to create a KMS key for the table. Only applies when encryption is CUSTOMER_MANAGED. Set to false when supplying kms_key_arn.\"',\n ' type = bool',\n ' default = true',\n '}',\n '',\n 'variable \"enable_key_rotation\" {',\n ' description = \"Whether to enable automatic key rotation on the KMS key used to encrypt the table. Only applies when encryption is CUSTOMER_MANAGED and create_kms_key is true.\"',\n ' type = bool',\n ' default = true',\n '}',\n].join('\\n');\n\n/**\n * Surface the same configuration as pass-through variables on each vended\n * per-table Terraform app module, matching its existing pass-through\n * convention for enable_key_rotation.\n */\nconst migrateTerraformAppModules = async (\n tree: Tree,\n nextSteps: string[],\n): Promise<void> => {\n if (!tree.exists(TERRAFORM_DYNAMODB_APP_DIR)) {\n return;\n }\n\n for (const dirName of tree.children(TERRAFORM_DYNAMODB_APP_DIR)) {\n const filePath = joinPathFragments(\n TERRAFORM_DYNAMODB_APP_DIR,\n dirName,\n `${dirName}.tf`,\n );\n if (!tree.exists(filePath)) {\n continue; // Not a dynamodb app module directory.\n }\n\n if (\n await matchGritQL(tree, filePath, hcl('`variable \"encryption\" { $_ }`'))\n ) {\n continue; // Already migrated.\n }\n\n const OLD_ENABLE_KEY_ROTATION_VAR = hcl(\n [\n '`variable \"enable_key_rotation\" {',\n ' description = \"Whether to enable automatic key rotation on the KMS key used to encrypt the table.\"',\n ' type = bool',\n ' default = true',\n '}`',\n ].join('\\n'),\n );\n const MODULE_BLOCK = hcl('`module \"dynamodb_table\" { $_ }`');\n const DELETION_PROTECTION_LINE = hcl(\n '`deletion_protection_enabled = var.deletion_protection_enabled`',\n );\n\n const ready = (\n await Promise.all(\n [\n OLD_ENABLE_KEY_ROTATION_VAR,\n MODULE_BLOCK,\n DELETION_PROTECTION_LINE,\n ].map((pattern) => matchGritQL(tree, filePath, pattern)),\n )\n ).every(Boolean);\n\n if (!ready) {\n nextSteps.push(terraformAppDivergedMessage(filePath));\n continue;\n }\n\n await applyGritQL(\n tree,\n filePath,\n `${OLD_ENABLE_KEY_ROTATION_VAR} => \\`${NEW_APP_MODULE_VARIABLES_TEXT.replace(/`/g, '\\\\`')}\\``,\n );\n\n await insertViaGritQL(\n tree,\n filePath,\n hcl(\n `\\`deletion_protection_enabled = var.deletion_protection_enabled\\` => \\`deletion_protection_enabled = var.deletion_protection_enabled\\n ${GRIT_INSERT_PLACEHOLDER}\\``,\n ),\n [\n 'encryption = var.encryption',\n 'kms_key_arn = var.kms_key_arn',\n 'create_kms_key = var.create_kms_key',\n ].join('\\n '),\n );\n }\n};\n\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n const nextSteps: string[] = [];\n\n await migrateCdkConstruct(tree, nextSteps);\n await migrateTerraformModule(tree, nextSteps);\n await migrateTerraformAppModules(tree, nextSteps);\n\n await formatFilesInSubtree(tree);\n\n return { nextSteps };\n}\n"],"names":["joinPathFragments","addDestructuredImport","applyGritQL","GRIT_INSERT_PLACEHOLDER","insertViaGritQL","matchGritQL","formatFilesInSubtree","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_DIR","CDK_DYNAMODB_FILE","TERRAFORM_DYNAMODB_FILE","TERRAFORM_DYNAMODB_APP_DIR","CDK_DIVERGED_MESSAGE","TERRAFORM_DIVERGED_MESSAGE","terraformAppDivergedMessage","filePath","migrateCdkConstruct","tree","nextSteps","exists","ENABLE_KEY_ROTATION_FIELD","ENABLE_KEY_ROTATION_COMMENT","DESTRUCTURE_OLD","KEY_CREATION_OLD","TABLE_ENCRYPTION_OLD","anchors","allPresent","Promise","all","map","pattern","every","Boolean","push","hcl","NEW_TERRAFORM_VARIABLES_TEXT","join","migrateTerraformModule","OLD_ENABLE_KEY_ROTATION_VAR","LOCALS_BLOCK","DATA_PARTITION_LINE","KMS_KEY_BLOCK","SSE_ENABLED_LINE","SSE_KMS_KEY_LINE","OUTPUT_VALUE_LINE","OUTPUT_DESCRIPTION_LINE","replace","NEW_APP_MODULE_VARIABLES_TEXT","migrateTerraformAppModules","dirName","children","MODULE_BLOCK","DELETION_PROTECTION_LINE","ready","migration"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "description": "Forward the py#agent Strands hooks to the AG-UI adapter so model and tool errors are reported"
3
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { type MigrationReturnObject, type Tree } from '@nx/devkit';
6
+ export default function migration(tree: Tree): Promise<MigrationReturnObject>;
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */ import { getProjects, joinPathFragments } from "@nx/devkit";
5
+ import { PY_AGENT_GENERATOR_INFO } from "../../../py/agent/generator.js";
6
+ import { addPythonDestructuredImport, applyGritQL, captureGritQLVariable, GRIT_INSERT_PLACEHOLDER, insertViaGritQL, matchGritQL } from "../../../utils/ast.js";
7
+ import { formatFilesInSubtree } from "../../../utils/format.js";
8
+ /**
9
+ * Forward a Strands py#agent's hooks to the AG-UI adapter.
10
+ *
11
+ * `StrandsAgent` builds a fresh `Agent` per `thread_id` by copying the template
12
+ * Agent's kwargs, but deliberately skips `hooks` - Strands keeps only the built
13
+ * `HookRegistry`, so the providers can't be read back off it. An AG-UI agent's
14
+ * `log_model_errors` / `log_tool_errors` therefore never fired for served
15
+ * requests, and model/tool failures were reported as successful runs.
16
+ *
17
+ * The fix hoists the hooks list out of the `Agent(...)` call into an
18
+ * `AGENT_HOOKS` module constant in `agent.py` - whatever the user has put in it,
19
+ * so custom hooks come along - and passes that to `StrandsAgent(...)` in
20
+ * `main.py` as well. `agent.py` is hoisted for every protocol so the constant
21
+ * matches what the generator vends today; only AG-UI needs the `main.py` half.
22
+ */ // `Agent`'s `hooks` list is invariant, so the hoisted constant has to declare
23
+ // the parameter's own type - an inline literal was inferred from it instead.
24
+ const HOOKS_TYPE = 'list[HookProvider | HookCallback]';
25
+ const HOOKS_MODULE = 'strands.hooks';
26
+ // Anchored on the `get_agent` context manager - the one shape shared by every
27
+ // generated protocol and connection combination - so the constant lands
28
+ // directly above its only use, where the generator vends it.
29
+ const HOIST_HOOKS_PATTERN = `language python
30
+ \`@contextmanager
31
+ def get_agent($params):
32
+ $body\` => raw\`AGENT_HOOKS: ${HOOKS_TYPE} = ${GRIT_INSERT_PLACEHOLDER}
33
+
34
+
35
+ @contextmanager
36
+ def get_agent($params):
37
+ $body\` where { $program <: not contains \`AGENT_HOOKS\` }`;
38
+ // Scoped to the Agent constructor so a hooks list the user passes elsewhere in
39
+ // agent.py is left alone.
40
+ const HOOKS_LIST_CAPTURE_PATTERN = 'language python\n`hooks=[$hooks]` where { $hooks <: within `Agent($_)` }';
41
+ const HOOKS_LIST_REWRITE_PATTERN = 'language python\n`hooks=[$_]` as $kwarg where { $kwarg <: within `Agent($_)`, $kwarg => `hooks=AGENT_HOOKS` }';
42
+ const AGUI_CONSTRUCTOR_MATCH_PATTERN = 'language python\n`StrandsAgent($args)` where { $args <: contains `agent=$_` }';
43
+ const AGUI_HOOKS_WIRED_PATTERN = 'language python\n`StrandsAgent($args)` where { $args <: contains `agent=$_`, $args <: contains `hooks=$_` }';
44
+ // Appends after the last argument rather than re-emitting the argument list,
45
+ // both to land `hooks=` where the template puts it and to leave the other
46
+ // arguments' formatting and comments untouched.
47
+ const AGUI_HOOKS_APPEND_PATTERN = 'language python\n`StrandsAgent($args)` where { $args <: contains `agent=$_`, $args <: not contains `hooks=$_`, $args <: [$..., $last], $last += `, hooks=AGENT_HOOKS` }';
48
+ const findAgentComponents = (components)=>(components ?? []).filter((component)=>component.generator === PY_AGENT_GENERATOR_INFO.id);
49
+ /**
50
+ * Hoists `agent.py`'s `hooks=[...]` list into an `AGENT_HOOKS` module constant,
51
+ * returning whether the file ends up exporting one.
52
+ */ const hoistAgentHooks = async (tree, agentPath)=>{
53
+ if ((tree.read(agentPath, 'utf-8') ?? '').includes('AGENT_HOOKS')) {
54
+ return true;
55
+ }
56
+ // Nothing to hoist unless the Agent is constructed with an inline hooks list.
57
+ const hooks = await captureGritQLVariable(tree, agentPath, HOOKS_LIST_CAPTURE_PATTERN, 'hooks');
58
+ if (!hooks) return false;
59
+ if (!await insertViaGritQL(tree, agentPath, HOIST_HOOKS_PATTERN, `[${hooks}]`)) {
60
+ return false;
61
+ }
62
+ await applyGritQL(tree, agentPath, HOOKS_LIST_REWRITE_PATTERN);
63
+ await addPythonDestructuredImport(tree, agentPath, [
64
+ 'HookCallback',
65
+ 'HookProvider'
66
+ ], HOOKS_MODULE);
67
+ return true;
68
+ };
69
+ const migrateAgent = async (tree, agentDir, component, nextSteps)=>{
70
+ // LangChain agents pass no hooks - their AG-UI adapter is handed the graph
71
+ // itself rather than rebuilding one, so nothing is dropped.
72
+ if (component.framework === 'langchain') return;
73
+ const agentPath = joinPathFragments(agentDir, 'agent.py');
74
+ const mainPath = joinPathFragments(agentDir, 'main.py');
75
+ const isAgUi = component.protocol === 'ag-ui';
76
+ if (!tree.exists(agentPath)) return;
77
+ if (!await hoistAgentHooks(tree, agentPath)) {
78
+ if (isAgUi) {
79
+ nextSteps.push(`${agentPath}: the hooks passed to \`Agent(...)\` have diverged from the generated shape - left untouched. Hoist them into an \`AGENT_HOOKS\` module constant and pass it to \`StrandsAgent(...)\` in ${mainPath} too, or AG-UI will not register them (see the py#agent generator's template).`);
80
+ }
81
+ return;
82
+ }
83
+ // Only AG-UI rebuilds the Agent, so only its main.py needs the hooks.
84
+ if (!isAgUi || !tree.exists(mainPath)) return;
85
+ // Already passing hooks, whether from a previous run or the user's own wiring.
86
+ if (await matchGritQL(tree, mainPath, AGUI_HOOKS_WIRED_PATTERN)) return;
87
+ if (!await matchGritQL(tree, mainPath, AGUI_CONSTRUCTOR_MATCH_PATTERN)) {
88
+ nextSteps.push(`${mainPath}: the \`StrandsAgent(...)\` constructor has diverged from the generated shape - left untouched. Pass \`hooks=AGENT_HOOKS\` to it, importing \`AGENT_HOOKS\` from \`.agent\`, or AG-UI will not register the agent's hooks (see the py#agent generator's template).`);
89
+ return;
90
+ }
91
+ await applyGritQL(tree, mainPath, AGUI_HOOKS_APPEND_PATTERN);
92
+ await addPythonDestructuredImport(tree, mainPath, [
93
+ 'AGENT_HOOKS'
94
+ ], '.agent');
95
+ };
96
+ export default async function migration(tree) {
97
+ const nextSteps = [];
98
+ for (const project of getProjects(tree).values()){
99
+ const components = findAgentComponents(project.metadata?.components);
100
+ for (const component of components){
101
+ if (!component.path) continue;
102
+ // Legacy component paths point at agent.py rather than its directory.
103
+ const componentDir = component.path.endsWith('/agent.py') ? component.path.slice(0, -'/agent.py'.length) : component.path;
104
+ await migrateAgent(tree, joinPathFragments(project.root, componentDir), component, nextSteps);
105
+ }
106
+ }
107
+ await formatFilesInSubtree(tree);
108
+ return {
109
+ nextSteps
110
+ };
111
+ }
112
+
113
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/migrations/latest/py-agent-ag-ui-hooks/migration.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n getProjects,\n joinPathFragments,\n type MigrationReturnObject,\n type Tree,\n} from '@nx/devkit';\nimport { PY_AGENT_GENERATOR_INFO } from '../../../py/agent/generator.js';\nimport {\n addPythonDestructuredImport,\n applyGritQL,\n captureGritQLVariable,\n GRIT_INSERT_PLACEHOLDER,\n insertViaGritQL,\n matchGritQL,\n} from '../../../utils/ast.js';\nimport { formatFilesInSubtree } from '../../../utils/format.js';\nimport type { ComponentMetadata } from '../../../utils/nx.js';\n\n/**\n * Forward a Strands py#agent's hooks to the AG-UI adapter.\n *\n * `StrandsAgent` builds a fresh `Agent` per `thread_id` by copying the template\n * Agent's kwargs, but deliberately skips `hooks` - Strands keeps only the built\n * `HookRegistry`, so the providers can't be read back off it. An AG-UI agent's\n * `log_model_errors` / `log_tool_errors` therefore never fired for served\n * requests, and model/tool failures were reported as successful runs.\n *\n * The fix hoists the hooks list out of the `Agent(...)` call into an\n * `AGENT_HOOKS` module constant in `agent.py` - whatever the user has put in it,\n * so custom hooks come along - and passes that to `StrandsAgent(...)` in\n * `main.py` as well. `agent.py` is hoisted for every protocol so the constant\n * matches what the generator vends today; only AG-UI needs the `main.py` half.\n */\n\n// `Agent`'s `hooks` list is invariant, so the hoisted constant has to declare\n// the parameter's own type - an inline literal was inferred from it instead.\nconst HOOKS_TYPE = 'list[HookProvider | HookCallback]';\nconst HOOKS_MODULE = 'strands.hooks';\n\n// Anchored on the `get_agent` context manager - the one shape shared by every\n// generated protocol and connection combination - so the constant lands\n// directly above its only use, where the generator vends it.\nconst HOIST_HOOKS_PATTERN = `language python\n\\`@contextmanager\ndef get_agent($params):\n $body\\` => raw\\`AGENT_HOOKS: ${HOOKS_TYPE} = ${GRIT_INSERT_PLACEHOLDER}\n\n\n@contextmanager\ndef get_agent($params):\n $body\\` where { $program <: not contains \\`AGENT_HOOKS\\` }`;\n\n// Scoped to the Agent constructor so a hooks list the user passes elsewhere in\n// agent.py is left alone.\nconst HOOKS_LIST_CAPTURE_PATTERN =\n 'language python\\n`hooks=[$hooks]` where { $hooks <: within `Agent($_)` }';\nconst HOOKS_LIST_REWRITE_PATTERN =\n 'language python\\n`hooks=[$_]` as $kwarg where { $kwarg <: within `Agent($_)`, $kwarg => `hooks=AGENT_HOOKS` }';\n\nconst AGUI_CONSTRUCTOR_MATCH_PATTERN =\n 'language python\\n`StrandsAgent($args)` where { $args <: contains `agent=$_` }';\nconst AGUI_HOOKS_WIRED_PATTERN =\n 'language python\\n`StrandsAgent($args)` where { $args <: contains `agent=$_`, $args <: contains `hooks=$_` }';\n// Appends after the last argument rather than re-emitting the argument list,\n// both to land `hooks=` where the template puts it and to leave the other\n// arguments' formatting and comments untouched.\nconst AGUI_HOOKS_APPEND_PATTERN =\n 'language python\\n`StrandsAgent($args)` where { $args <: contains `agent=$_`, $args <: not contains `hooks=$_`, $args <: [$..., $last], $last += `, hooks=AGENT_HOOKS` }';\n\nconst findAgentComponents = (\n components: ComponentMetadata[] | undefined,\n): ComponentMetadata[] =>\n (components ?? []).filter(\n (component) => component.generator === PY_AGENT_GENERATOR_INFO.id,\n );\n\n/**\n * Hoists `agent.py`'s `hooks=[...]` list into an `AGENT_HOOKS` module constant,\n * returning whether the file ends up exporting one.\n */\nconst hoistAgentHooks = async (\n tree: Tree,\n agentPath: string,\n): Promise<boolean> => {\n if ((tree.read(agentPath, 'utf-8') ?? '').includes('AGENT_HOOKS')) {\n return true;\n }\n\n // Nothing to hoist unless the Agent is constructed with an inline hooks list.\n const hooks = await captureGritQLVariable(\n tree,\n agentPath,\n HOOKS_LIST_CAPTURE_PATTERN,\n 'hooks',\n );\n if (!hooks) return false;\n\n if (\n !(await insertViaGritQL(tree, agentPath, HOIST_HOOKS_PATTERN, `[${hooks}]`))\n ) {\n return false;\n }\n await applyGritQL(tree, agentPath, HOOKS_LIST_REWRITE_PATTERN);\n await addPythonDestructuredImport(\n tree,\n agentPath,\n ['HookCallback', 'HookProvider'],\n HOOKS_MODULE,\n );\n return true;\n};\n\nconst migrateAgent = async (\n tree: Tree,\n agentDir: string,\n component: ComponentMetadata,\n nextSteps: string[],\n): Promise<void> => {\n // LangChain agents pass no hooks - their AG-UI adapter is handed the graph\n // itself rather than rebuilding one, so nothing is dropped.\n if (component.framework === 'langchain') return;\n\n const agentPath = joinPathFragments(agentDir, 'agent.py');\n const mainPath = joinPathFragments(agentDir, 'main.py');\n const isAgUi = component.protocol === 'ag-ui';\n\n if (!tree.exists(agentPath)) return;\n\n if (!(await hoistAgentHooks(tree, agentPath))) {\n if (isAgUi) {\n nextSteps.push(\n `${agentPath}: the hooks passed to \\`Agent(...)\\` have diverged from the generated shape - left untouched. Hoist them into an \\`AGENT_HOOKS\\` module constant and pass it to \\`StrandsAgent(...)\\` in ${mainPath} too, or AG-UI will not register them (see the py#agent generator's template).`,\n );\n }\n return;\n }\n\n // Only AG-UI rebuilds the Agent, so only its main.py needs the hooks.\n if (!isAgUi || !tree.exists(mainPath)) return;\n\n // Already passing hooks, whether from a previous run or the user's own wiring.\n if (await matchGritQL(tree, mainPath, AGUI_HOOKS_WIRED_PATTERN)) return;\n\n if (!(await matchGritQL(tree, mainPath, AGUI_CONSTRUCTOR_MATCH_PATTERN))) {\n nextSteps.push(\n `${mainPath}: the \\`StrandsAgent(...)\\` constructor has diverged from the generated shape - left untouched. Pass \\`hooks=AGENT_HOOKS\\` to it, importing \\`AGENT_HOOKS\\` from \\`.agent\\`, or AG-UI will not register the agent's hooks (see the py#agent generator's template).`,\n );\n return;\n }\n\n await applyGritQL(tree, mainPath, AGUI_HOOKS_APPEND_PATTERN);\n await addPythonDestructuredImport(tree, mainPath, ['AGENT_HOOKS'], '.agent');\n};\n\nexport default async function migration(\n tree: Tree,\n): Promise<MigrationReturnObject> {\n const nextSteps: string[] = [];\n\n for (const project of getProjects(tree).values()) {\n const components = findAgentComponents(\n (project.metadata as { components?: ComponentMetadata[] })?.components,\n );\n\n for (const component of components) {\n if (!component.path) continue;\n\n // Legacy component paths point at agent.py rather than its directory.\n const componentDir = component.path.endsWith('/agent.py')\n ? component.path.slice(0, -'/agent.py'.length)\n : component.path;\n\n await migrateAgent(\n tree,\n joinPathFragments(project.root, componentDir),\n component,\n nextSteps,\n );\n }\n }\n\n await formatFilesInSubtree(tree);\n\n return { nextSteps };\n}\n"],"names":["getProjects","joinPathFragments","PY_AGENT_GENERATOR_INFO","addPythonDestructuredImport","applyGritQL","captureGritQLVariable","GRIT_INSERT_PLACEHOLDER","insertViaGritQL","matchGritQL","formatFilesInSubtree","HOOKS_TYPE","HOOKS_MODULE","HOIST_HOOKS_PATTERN","HOOKS_LIST_CAPTURE_PATTERN","HOOKS_LIST_REWRITE_PATTERN","AGUI_CONSTRUCTOR_MATCH_PATTERN","AGUI_HOOKS_WIRED_PATTERN","AGUI_HOOKS_APPEND_PATTERN","findAgentComponents","components","filter","component","generator","id","hoistAgentHooks","tree","agentPath","read","includes","hooks","migrateAgent","agentDir","nextSteps","framework","mainPath","isAgUi","protocol","exists","push","migration","project","values","metadata","path","componentDir","endsWith","slice","length","root"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "description": "Extract the duplicated _SessionIdMiddleware class in py#agent's main.py into a shared middleware/session_id_middleware.py module"
3
+ }
@@ -0,0 +1,2 @@
1
+ import { type MigrationReturnObject, type Tree } from '@nx/devkit';
2
+ export default function migration(tree: Tree): Promise<MigrationReturnObject>;