@aws/nx-plugin 1.0.0-rc.9 → 1.0.0-rc.90

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 (1592) hide show
  1. package/LICENSE-THIRD-PARTY +13999 -17963
  2. package/README.md +30 -110
  3. package/executors.json +5 -0
  4. package/generators.json +170 -10
  5. package/migrations.json +364 -0
  6. package/package.json +40 -21
  7. package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +344 -0
  8. package/src/agentcore-gateway/agent-connection/generator.d.ts +19 -0
  9. package/src/agentcore-gateway/agent-connection/generator.js +95 -0
  10. package/src/agentcore-gateway/agent-connection/generator.js.map +1 -0
  11. package/src/agentcore-gateway/agent-connection/schema.d.js +6 -0
  12. package/src/agentcore-gateway/agent-connection/schema.d.js.map +1 -0
  13. package/src/agentcore-gateway/agent-connection/schema.d.ts +13 -0
  14. package/src/agentcore-gateway/agent-connection/schema.json +31 -0
  15. package/src/agentcore-gateway/attach-upstream.d.ts +49 -0
  16. package/src/agentcore-gateway/attach-upstream.js +59 -0
  17. package/src/agentcore-gateway/attach-upstream.js.map +1 -0
  18. package/src/agentcore-gateway/files/cedar/policies/README.md +61 -0
  19. package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +26 -0
  20. package/src/agentcore-gateway/files/project/http/local-dev.ts.template +77 -0
  21. package/src/agentcore-gateway/files/project/mcp/local-dev.ts.template +134 -0
  22. package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
  23. package/src/agentcore-gateway/gateway-connection/generator.js +103 -0
  24. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
  25. package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
  26. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
  27. package/src/agentcore-gateway/gateway-connection/schema.d.ts +13 -0
  28. package/src/agentcore-gateway/gateway-connection/schema.json +31 -0
  29. package/src/agentcore-gateway/generator.d.ts +90 -0
  30. package/src/agentcore-gateway/generator.js +202 -0
  31. package/src/agentcore-gateway/generator.js.map +1 -0
  32. package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
  33. package/src/agentcore-gateway/mcp-connection/generator.js +61 -0
  34. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
  35. package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
  36. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
  37. package/src/agentcore-gateway/mcp-connection/schema.d.ts +13 -0
  38. package/src/agentcore-gateway/mcp-connection/schema.json +31 -0
  39. package/src/agentcore-gateway/react-connection/__snapshots__/generator.spec.ts.snap +68 -0
  40. package/src/agentcore-gateway/react-connection/generator.d.ts +19 -0
  41. package/src/agentcore-gateway/react-connection/generator.js +119 -0
  42. package/src/agentcore-gateway/react-connection/generator.js.map +1 -0
  43. package/src/agentcore-gateway/react-connection/schema.d.js +6 -0
  44. package/src/agentcore-gateway/react-connection/schema.d.js.map +1 -0
  45. package/src/agentcore-gateway/react-connection/schema.d.ts +13 -0
  46. package/src/agentcore-gateway/react-connection/schema.json +31 -0
  47. package/src/agentcore-gateway/schema.d.js +6 -0
  48. package/src/agentcore-gateway/schema.d.js.map +1 -0
  49. package/src/agentcore-gateway/schema.d.ts +17 -0
  50. package/src/agentcore-gateway/schema.json +72 -0
  51. package/src/agentcore-harness/__snapshots__/generator.spec.ts.snap +237 -0
  52. package/src/agentcore-harness/files/project/README.md.template +82 -0
  53. package/src/agentcore-harness/files/project/scripts/chat.ts.template +99 -0
  54. package/src/agentcore-harness/files/project/src/PROMPT.md.template +16 -0
  55. package/src/agentcore-harness/generator.d.ts +62 -0
  56. package/src/agentcore-harness/generator.js +158 -0
  57. package/src/agentcore-harness/generator.js.map +1 -0
  58. package/src/agentcore-harness/schema.d.js +8 -0
  59. package/src/agentcore-harness/schema.d.js.map +1 -0
  60. package/src/agentcore-harness/schema.d.ts +17 -0
  61. package/src/agentcore-harness/schema.json +53 -0
  62. package/src/connection/agent-local-dev.d.ts +49 -0
  63. package/src/connection/agent-local-dev.js +84 -0
  64. package/src/connection/agent-local-dev.js.map +1 -0
  65. package/src/connection/agent-runtime-config.js +9 -14
  66. package/src/connection/agent-runtime-config.js.map +1 -1
  67. package/src/connection/gateway-runtime-config.d.ts +19 -0
  68. package/src/connection/gateway-runtime-config.js +47 -0
  69. package/src/connection/gateway-runtime-config.js.map +1 -0
  70. package/src/connection/generator.d.ts +4 -11
  71. package/src/connection/generator.js +172 -194
  72. package/src/connection/generator.js.map +1 -1
  73. package/src/connection/{serve-local.d.ts → local-dev.d.ts} +3 -3
  74. package/src/connection/local-dev.js +37 -0
  75. package/src/connection/local-dev.js.map +1 -0
  76. package/src/connection/scaffold-catalog.d.ts +267 -0
  77. package/src/connection/scaffold-catalog.js +347 -0
  78. package/src/connection/scaffold-catalog.js.map +1 -0
  79. package/src/connection/schema-resolver.d.ts +5 -0
  80. package/src/connection/schema-resolver.js +27 -0
  81. package/src/connection/schema-resolver.js.map +1 -0
  82. package/src/connection/schema.d.js +6 -0
  83. package/src/connection/schema.d.js.map +1 -0
  84. package/src/connection/schema.d.ts +1 -0
  85. package/src/connection/schema.json +5 -0
  86. package/src/connection/supported-connections.d.ts +116 -0
  87. package/src/connection/supported-connections.js +163 -0
  88. package/src/connection/supported-connections.js.map +1 -0
  89. package/src/index.d.ts +1 -1
  90. package/src/index.js +2 -5
  91. package/src/index.js.map +1 -1
  92. package/src/infra/app/__snapshots__/generator.spec.ts.snap +172 -87
  93. package/src/infra/app/files/app/README.md.template +22 -4
  94. package/src/infra/app/files/app/src/main.ts.template +5 -1
  95. package/src/infra/app/files/app/src/stages/application-stage.ts.template +1 -1
  96. package/src/infra/app/generator.d.ts +44 -1
  97. package/src/infra/app/generator.js +209 -128
  98. package/src/infra/app/generator.js.map +1 -1
  99. package/src/infra/app/schema.d.js +6 -0
  100. package/src/infra/app/schema.d.js.map +1 -0
  101. package/src/infra/app/schema.d.ts +1 -1
  102. package/src/infra/app/schema.json +5 -0
  103. package/src/init/generator.d.ts +31 -0
  104. package/src/init/generator.js +46 -0
  105. package/src/init/generator.js.map +1 -0
  106. package/src/init/schema.d.js +6 -0
  107. package/src/init/schema.d.js.map +1 -0
  108. package/src/init/schema.d.ts +16 -0
  109. package/src/init/schema.json +35 -0
  110. package/src/internal/test-matrix/generator.d.ts +29 -0
  111. package/src/internal/test-matrix/generator.js +729 -0
  112. package/src/internal/test-matrix/generator.js.map +1 -0
  113. package/src/internal/test-matrix/schema.d.js +6 -0
  114. package/src/internal/test-matrix/schema.d.js.map +1 -0
  115. package/src/internal/test-matrix/schema.d.ts +12 -0
  116. package/src/internal/test-matrix/schema.json +21 -0
  117. package/src/license/config-types.d.ts +2 -2
  118. package/src/license/config-types.js +5 -3
  119. package/src/license/config-types.js.map +1 -1
  120. package/src/license/config.d.ts +12 -3
  121. package/src/license/config.js +295 -242
  122. package/src/license/config.js.map +1 -1
  123. package/src/license/dependency-check/check.d.ts +2 -2
  124. package/src/license/dependency-check/check.js +51 -46
  125. package/src/license/dependency-check/check.js.map +1 -1
  126. package/src/license/dependency-check/collectors/collector.js +41 -71
  127. package/src/license/dependency-check/collectors/collector.js.map +1 -1
  128. package/src/license/dependency-check/collectors/npm-collector.js +34 -41
  129. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -1
  130. package/src/license/dependency-check/collectors/python-collector.js +61 -62
  131. package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
  132. package/src/license/dependency-check/evaluator.d.ts +1 -1
  133. package/src/license/dependency-check/evaluator.js +91 -74
  134. package/src/license/dependency-check/evaluator.js.map +1 -1
  135. package/src/license/dependency-check/executor.js +30 -22
  136. package/src/license/dependency-check/executor.js.map +1 -1
  137. package/src/license/dependency-check/pre-approved.d.ts +1 -1
  138. package/src/license/dependency-check/pre-approved.js +949 -336
  139. package/src/license/dependency-check/pre-approved.js.map +1 -1
  140. package/src/license/dependency-check/types.d.ts +1 -1
  141. package/src/license/dependency-check/types.js +2 -3
  142. package/src/license/dependency-check/types.js.map +1 -1
  143. package/src/license/generator.d.ts +1 -1
  144. package/src/license/generator.js +60 -77
  145. package/src/license/generator.js.map +1 -1
  146. package/src/license/index.d.ts +4 -4
  147. package/src/license/index.js +3 -9
  148. package/src/license/index.js.map +1 -1
  149. package/src/license/known-exceptions.d.ts +2 -3
  150. package/src/license/known-exceptions.js +12 -28
  151. package/src/license/known-exceptions.js.map +1 -1
  152. package/src/license/schema.d.js +6 -0
  153. package/src/license/schema.d.js.map +1 -0
  154. package/src/license/schema.d.ts +2 -0
  155. package/src/license/schema.json +5 -0
  156. package/src/license/sync/generator.js +94 -119
  157. package/src/license/sync/generator.js.map +1 -1
  158. package/src/license/sync/project-file-sync.d.ts +1 -1
  159. package/src/license/sync/project-file-sync.js +28 -35
  160. package/src/license/sync/project-file-sync.js.map +1 -1
  161. package/src/mcp-server/dev-server.d.ts +1 -0
  162. package/src/mcp-server/dev-server.js +18 -0
  163. package/src/mcp-server/dev-server.js.map +1 -0
  164. package/src/mcp-server/generator-info.d.ts +8 -3
  165. package/src/mcp-server/generator-info.js +155 -167
  166. package/src/mcp-server/generator-info.js.map +1 -1
  167. package/src/mcp-server/guide-pipeline.d.ts +1 -1
  168. package/src/mcp-server/guide-pipeline.js +199 -206
  169. package/src/mcp-server/guide-pipeline.js.map +1 -1
  170. package/src/mcp-server/guide-render.js +10 -25
  171. package/src/mcp-server/guide-render.js.map +1 -1
  172. package/src/mcp-server/index.js +6 -10
  173. package/src/mcp-server/index.js.map +1 -1
  174. package/src/mcp-server/mdx-ast.js +39 -57
  175. package/src/mcp-server/mdx-ast.js.map +1 -1
  176. package/src/mcp-server/option-filter.js +33 -47
  177. package/src/mcp-server/option-filter.js.map +1 -1
  178. package/src/mcp-server/schema-registry.d.ts +9 -3
  179. package/src/mcp-server/schema-registry.js +41 -38
  180. package/src/mcp-server/schema-registry.js.map +1 -1
  181. package/src/mcp-server/schema.d.ts +1 -1
  182. package/src/mcp-server/schema.js +9 -7
  183. package/src/mcp-server/schema.js.map +1 -1
  184. package/src/mcp-server/server.js +24 -24
  185. package/src/mcp-server/server.js.map +1 -1
  186. package/src/mcp-server/tools/add-to-existing-project.d.ts +12 -0
  187. package/src/mcp-server/tools/add-to-existing-project.js +36 -0
  188. package/src/mcp-server/tools/add-to-existing-project.js.map +1 -0
  189. package/src/mcp-server/tools/create-workspace-command.js +23 -24
  190. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  191. package/src/mcp-server/tools/general-guidance.d.ts +2 -2
  192. package/src/mcp-server/tools/general-guidance.js +55 -32
  193. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  194. package/src/mcp-server/tools/generator-guide.d.ts +1 -1
  195. package/src/mcp-server/tools/generator-guide.js +29 -37
  196. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  197. package/src/mcp-server/tools/list-generators.d.ts +1 -1
  198. package/src/mcp-server/tools/list-generators.js +19 -25
  199. package/src/mcp-server/tools/list-generators.js.map +1 -1
  200. package/src/mcp-server/tools/upgrade-workspace.d.ts +11 -0
  201. package/src/mcp-server/tools/upgrade-workspace.js +32 -0
  202. package/src/mcp-server/tools/upgrade-workspace.js.map +1 -0
  203. package/src/migrations/latest/add-assemble-target/metadata.json +3 -0
  204. package/src/migrations/latest/add-assemble-target/migration.d.ts +6 -0
  205. package/src/migrations/latest/add-assemble-target/migration.js +241 -0
  206. package/src/migrations/latest/add-assemble-target/migration.js.map +1 -0
  207. package/src/migrations/latest/add-destroy-sandbox-target/metadata.json +3 -0
  208. package/src/migrations/latest/add-destroy-sandbox-target/migration.d.ts +6 -0
  209. package/src/migrations/latest/add-destroy-sandbox-target/migration.js +150 -0
  210. package/src/migrations/latest/add-destroy-sandbox-target/migration.js.map +1 -0
  211. package/src/migrations/latest/declare-cacheable-target-inputs/metadata.json +3 -0
  212. package/src/migrations/latest/declare-cacheable-target-inputs/migration.d.ts +6 -0
  213. package/src/migrations/latest/declare-cacheable-target-inputs/migration.js +94 -0
  214. package/src/migrations/latest/declare-cacheable-target-inputs/migration.js.map +1 -0
  215. package/src/migrations/latest/dev-target-depends-on-pull-image/metadata.json +3 -0
  216. package/src/migrations/latest/dev-target-depends-on-pull-image/migration.d.ts +6 -0
  217. package/src/migrations/latest/dev-target-depends-on-pull-image/migration.js +67 -0
  218. package/src/migrations/latest/dev-target-depends-on-pull-image/migration.js.map +1 -0
  219. package/src/migrations/latest/docker-target-cache-soundness/metadata.json +3 -0
  220. package/src/migrations/latest/docker-target-cache-soundness/migration.d.ts +6 -0
  221. package/src/migrations/latest/docker-target-cache-soundness/migration.js +95 -0
  222. package/src/migrations/latest/docker-target-cache-soundness/migration.js.map +1 -0
  223. package/src/migrations/latest/nx-parallel-default/metadata.json +3 -0
  224. package/src/migrations/latest/nx-parallel-default/migration.d.ts +14 -0
  225. package/src/migrations/latest/nx-parallel-default/migration.js +29 -0
  226. package/src/migrations/latest/nx-parallel-default/migration.js.map +1 -0
  227. package/src/migrations/latest/open-api-codegen-executor/metadata.json +3 -0
  228. package/src/migrations/latest/open-api-codegen-executor/migration.d.ts +6 -0
  229. package/src/migrations/latest/open-api-codegen-executor/migration.js +100 -0
  230. package/src/migrations/latest/open-api-codegen-executor/migration.js.map +1 -0
  231. package/src/migrations/latest/python-test-input-scoping/metadata.json +3 -0
  232. package/src/migrations/latest/python-test-input-scoping/migration.d.ts +6 -0
  233. package/src/migrations/latest/python-test-input-scoping/migration.js +142 -0
  234. package/src/migrations/latest/python-test-input-scoping/migration.js.map +1 -0
  235. package/src/migrations/latest/python-version-drop-exact-patch/metadata.json +3 -0
  236. package/src/migrations/latest/python-version-drop-exact-patch/migration.d.ts +6 -0
  237. package/src/migrations/latest/python-version-drop-exact-patch/migration.js +43 -0
  238. package/src/migrations/latest/python-version-drop-exact-patch/migration.js.map +1 -0
  239. package/src/migrations/latest/react-website-nx-react-express-override/metadata.json +3 -0
  240. package/src/migrations/latest/react-website-nx-react-express-override/migration.d.ts +31 -0
  241. package/src/migrations/latest/react-website-nx-react-express-override/migration.js +74 -0
  242. package/src/migrations/latest/react-website-nx-react-express-override/migration.js.map +1 -0
  243. package/src/migrations/latest/terraform-fmt-check/metadata.json +3 -0
  244. package/src/migrations/latest/terraform-fmt-check/migration.d.ts +6 -0
  245. package/src/migrations/latest/terraform-fmt-check/migration.js +165 -0
  246. package/src/migrations/latest/terraform-fmt-check/migration.js.map +1 -0
  247. package/src/migrations/latest/terraform-provider-plugin-cache/metadata.json +3 -0
  248. package/src/migrations/latest/terraform-provider-plugin-cache/migration.d.ts +6 -0
  249. package/src/migrations/latest/terraform-provider-plugin-cache/migration.js +164 -0
  250. package/src/migrations/latest/terraform-provider-plugin-cache/migration.js.map +1 -0
  251. package/src/migrations/latest/terraform-rdb-proxy-iam-connect-grant/__snapshots__/migration.spec.ts.snap +23 -0
  252. package/src/migrations/latest/terraform-rdb-proxy-iam-connect-grant/metadata.json +3 -0
  253. package/src/migrations/latest/terraform-rdb-proxy-iam-connect-grant/migration.d.ts +6 -0
  254. package/src/migrations/latest/terraform-rdb-proxy-iam-connect-grant/migration.js +88 -0
  255. package/src/migrations/latest/terraform-rdb-proxy-iam-connect-grant/migration.js.map +1 -0
  256. package/src/migrations/latest/vitest-coverage-output-dir/metadata.json +3 -0
  257. package/src/migrations/latest/vitest-coverage-output-dir/migration.d.ts +6 -0
  258. package/src/migrations/latest/vitest-coverage-output-dir/migration.js +177 -0
  259. package/src/migrations/latest/vitest-coverage-output-dir/migration.js.map +1 -0
  260. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/metadata.json +3 -0
  261. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.d.ts +6 -0
  262. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js +65 -0
  263. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js.map +1 -0
  264. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/metadata.json +3 -0
  265. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.d.ts +6 -0
  266. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js +108 -0
  267. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js.map +1 -0
  268. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/metadata.json +3 -0
  269. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.d.ts +6 -0
  270. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js +128 -0
  271. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -0
  272. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/metadata.json +3 -0
  273. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.d.ts +6 -0
  274. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js +215 -0
  275. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js.map +1 -0
  276. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/metadata.json +3 -0
  277. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.d.ts +6 -0
  278. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js +93 -0
  279. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
  280. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/metadata.json +3 -0
  281. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.d.ts +96 -0
  282. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js +670 -0
  283. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js.map +1 -0
  284. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/metadata.json +3 -0
  285. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.d.ts +6 -0
  286. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js +89 -0
  287. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js.map +1 -0
  288. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/metadata.json +3 -0
  289. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.d.ts +6 -0
  290. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js +449 -0
  291. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js.map +1 -0
  292. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/metadata.json +3 -0
  293. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.d.ts +6 -0
  294. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js +78 -0
  295. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js.map +1 -0
  296. 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
  297. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/__snapshots__/migration.spec.ts.snap +223 -0
  298. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/metadata.json +3 -0
  299. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.d.ts +6 -0
  300. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js +217 -0
  301. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js.map +1 -0
  302. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/__snapshots__/migration.spec.ts.snap +149 -0
  303. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/metadata.json +3 -0
  304. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.d.ts +6 -0
  305. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js +195 -0
  306. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js.map +1 -0
  307. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/__snapshots__/migration.spec.ts.snap +57 -0
  308. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/metadata.json +3 -0
  309. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.d.ts +6 -0
  310. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js +77 -0
  311. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js.map +1 -0
  312. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/__snapshots__/migration.spec.ts.snap +48 -0
  313. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/metadata.json +3 -0
  314. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.d.ts +6 -0
  315. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js +91 -0
  316. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js.map +1 -0
  317. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/metadata.json +3 -0
  318. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.d.ts +6 -0
  319. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js +412 -0
  320. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js.map +1 -0
  321. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/metadata.json +3 -0
  322. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.d.ts +6 -0
  323. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js +33 -0
  324. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js.map +1 -0
  325. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/metadata.json +3 -0
  326. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.d.ts +6 -0
  327. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js +83 -0
  328. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js.map +1 -0
  329. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/legacy-service.Dockerfile.fixture +95 -0
  330. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/metadata.json +3 -0
  331. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.d.ts +6 -0
  332. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js +154 -0
  333. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js.map +1 -0
  334. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/metadata.json +3 -0
  335. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.d.ts +6 -0
  336. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js +71 -0
  337. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js.map +1 -0
  338. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/metadata.json +3 -0
  339. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.d.ts +6 -0
  340. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js +57 -0
  341. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js.map +1 -0
  342. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/metadata.json +3 -0
  343. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.d.ts +6 -0
  344. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js +123 -0
  345. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js.map +1 -0
  346. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/build-system-prompt.ts.fixture +23 -0
  347. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/build-user-prompt.ts.fixture +96 -0
  348. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/config-path.ts.fixture +1 -0
  349. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/file-to-translate.ts.fixture +10 -0
  350. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/get-files-to-translate.ts.fixture +96 -0
  351. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/header.ts.fixture +15 -0
  352. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/log.ts.fixture +18 -0
  353. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/main-call.ts.fixture +6 -0
  354. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/main.ts.fixture +79 -0
  355. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/project-root.ts.fixture +1 -0
  356. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/run-with-concurrency.ts.fixture +57 -0
  357. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/scripts-dir.ts.fixture +1 -0
  358. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/translate-file-for-language.ts.fixture +61 -0
  359. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/already-migrated.grit +1 -0
  360. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/build-system-prompt.grit +6 -0
  361. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/build-user-prompt.grit +6 -0
  362. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/config-path.grit +1 -0
  363. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/file-to-translate.grit +11 -0
  364. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/get-files-to-translate.grit +7 -0
  365. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/log.grit +3 -0
  366. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/main-call.grit +1 -0
  367. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/main.grit +8 -0
  368. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/project-root.grit +1 -0
  369. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/run-with-concurrency.grit +6 -0
  370. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/translate-file-for-language.grit +6 -0
  371. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/metadata.json +3 -0
  372. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.d.ts +2 -0
  373. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js +103 -0
  374. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js.map +1 -0
  375. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/test-fixtures/released-script-first.ts.fixture +430 -0
  376. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/test-fixtures/released-script.ts.fixture +431 -0
  377. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/metadata.json +3 -0
  378. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.d.ts +6 -0
  379. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js +246 -0
  380. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js.map +1 -0
  381. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/metadata.json +3 -0
  382. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.d.ts +6 -0
  383. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js +329 -0
  384. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js.map +1 -0
  385. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/metadata.json +3 -0
  386. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.d.ts +2 -0
  387. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js +308 -0
  388. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js.map +1 -0
  389. package/src/migrations/v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions/metadata.json +3 -0
  390. package/{sdk/utils/ast.d.ts → src/migrations/v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions/migration.d.ts} +2 -2
  391. package/src/migrations/v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions/migration.js +38 -0
  392. package/src/migrations/v1.0.0-rc.73/0001-remove-mcp-inspector-license-exceptions/migration.js.map +1 -0
  393. package/src/migrations/v1.0.0-rc.73/0002-apt-security-updates-in-container-images/__snapshots__/migration.spec.ts.snap +90 -0
  394. package/src/migrations/v1.0.0-rc.73/0002-apt-security-updates-in-container-images/metadata.json +3 -0
  395. package/src/migrations/v1.0.0-rc.73/0002-apt-security-updates-in-container-images/migration.d.ts +6 -0
  396. package/src/migrations/v1.0.0-rc.73/0002-apt-security-updates-in-container-images/migration.js +90 -0
  397. package/src/migrations/v1.0.0-rc.73/0002-apt-security-updates-in-container-images/migration.js.map +1 -0
  398. package/src/migrations/v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction/metadata.json +3 -0
  399. package/src/migrations/v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction/migration.d.ts +2 -0
  400. package/src/migrations/v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction/migration.js +118 -0
  401. package/src/migrations/v1.0.0-rc.74/0001-py-agent-session-id-middleware-extraction/migration.js.map +1 -0
  402. package/src/migrations/v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction/metadata.json +3 -0
  403. package/src/migrations/v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction/migration.d.ts +2 -0
  404. package/src/migrations/v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction/migration.js +136 -0
  405. package/src/migrations/v1.0.0-rc.75/0001-ts-agent-session-id-middleware-extraction/migration.js.map +1 -0
  406. package/src/migrations/v1.0.0-rc.77/0001-dynamodb-configurable-encryption/__snapshots__/migration.spec.ts.snap +429 -0
  407. package/src/migrations/v1.0.0-rc.77/0001-dynamodb-configurable-encryption/metadata.json +3 -0
  408. package/src/migrations/v1.0.0-rc.77/0001-dynamodb-configurable-encryption/migration.d.ts +6 -0
  409. package/src/migrations/v1.0.0-rc.77/0001-dynamodb-configurable-encryption/migration.js +325 -0
  410. package/src/migrations/v1.0.0-rc.77/0001-dynamodb-configurable-encryption/migration.js.map +1 -0
  411. package/src/migrations/v1.0.0-rc.77/0002-user-identity-configurable-mfa/metadata.json +3 -0
  412. package/src/migrations/v1.0.0-rc.77/0002-user-identity-configurable-mfa/migration.d.ts +6 -0
  413. package/src/migrations/v1.0.0-rc.77/0002-user-identity-configurable-mfa/migration.js +362 -0
  414. package/src/migrations/v1.0.0-rc.77/0002-user-identity-configurable-mfa/migration.js.map +1 -0
  415. package/src/migrations/v1.0.0-rc.78/0001-static-website-configurable-waf-encryption/metadata.json +3 -0
  416. package/src/migrations/v1.0.0-rc.78/0001-static-website-configurable-waf-encryption/migration.d.ts +6 -0
  417. package/src/migrations/v1.0.0-rc.78/0001-static-website-configurable-waf-encryption/migration.js +418 -0
  418. package/src/migrations/v1.0.0-rc.78/0001-static-website-configurable-waf-encryption/migration.js.map +1 -0
  419. package/src/migrations/v1.0.0-rc.79/0001-py-agent-ag-ui-hooks/metadata.json +3 -0
  420. package/src/migrations/v1.0.0-rc.79/0001-py-agent-ag-ui-hooks/migration.d.ts +6 -0
  421. package/src/migrations/v1.0.0-rc.79/0001-py-agent-ag-ui-hooks/migration.js +113 -0
  422. package/src/migrations/v1.0.0-rc.79/0001-py-agent-ag-ui-hooks/migration.js.map +1 -0
  423. package/src/migrations/v1.0.0-rc.82/0001-terraform-load-runtime-config-src-path/metadata.json +3 -0
  424. package/src/migrations/v1.0.0-rc.82/0001-terraform-load-runtime-config-src-path/migration.d.ts +6 -0
  425. package/src/migrations/v1.0.0-rc.82/0001-terraform-load-runtime-config-src-path/migration.js +48 -0
  426. package/src/migrations/v1.0.0-rc.82/0001-terraform-load-runtime-config-src-path/migration.js.map +1 -0
  427. package/src/migrations/v1.0.0-rc.82/0002-runtime-config-namespace-defaults/metadata.json +3 -0
  428. package/src/migrations/v1.0.0-rc.82/0002-runtime-config-namespace-defaults/migration.d.ts +6 -0
  429. package/src/migrations/v1.0.0-rc.82/0002-runtime-config-namespace-defaults/migration.js +131 -0
  430. package/src/migrations/v1.0.0-rc.82/0002-runtime-config-namespace-defaults/migration.js.map +1 -0
  431. package/src/migrations/v1.0.0-rc.83/0001-dynamodb-terraform-app-module-outputs/metadata.json +3 -0
  432. package/src/migrations/v1.0.0-rc.83/0001-dynamodb-terraform-app-module-outputs/migration.d.ts +6 -0
  433. package/src/migrations/v1.0.0-rc.83/0001-dynamodb-terraform-app-module-outputs/migration.js +69 -0
  434. package/src/migrations/v1.0.0-rc.83/0001-dynamodb-terraform-app-module-outputs/migration.js.map +1 -0
  435. package/src/migrations/v1.0.0-rc.83/0002-terraform-data-resource-destroy-protection/__snapshots__/migration.spec.ts.snap +75 -0
  436. package/src/migrations/v1.0.0-rc.83/0002-terraform-data-resource-destroy-protection/metadata.json +3 -0
  437. package/src/migrations/v1.0.0-rc.83/0002-terraform-data-resource-destroy-protection/migration.d.ts +6 -0
  438. package/src/migrations/v1.0.0-rc.83/0002-terraform-data-resource-destroy-protection/migration.js +78 -0
  439. package/src/migrations/v1.0.0-rc.83/0002-terraform-data-resource-destroy-protection/migration.js.map +1 -0
  440. package/src/migrations/v1.0.0-rc.83/0003-terraform-gateway-cedar-render-root-ejs/metadata.json +3 -0
  441. package/src/migrations/v1.0.0-rc.83/0003-terraform-gateway-cedar-render-root-ejs/migration.d.ts +6 -0
  442. package/src/migrations/v1.0.0-rc.83/0003-terraform-gateway-cedar-render-root-ejs/migration.js +38 -0
  443. package/src/migrations/v1.0.0-rc.83/0003-terraform-gateway-cedar-render-root-ejs/migration.js.map +1 -0
  444. package/src/migrations/v1.0.0-rc.84/0001-rdb-terraform-aurora-app-module-defaults/__snapshots__/migration.spec.ts.snap +54 -0
  445. package/src/migrations/v1.0.0-rc.84/0001-rdb-terraform-aurora-app-module-defaults/metadata.json +3 -0
  446. package/src/migrations/v1.0.0-rc.84/0001-rdb-terraform-aurora-app-module-defaults/migration.d.ts +6 -0
  447. package/src/migrations/v1.0.0-rc.84/0001-rdb-terraform-aurora-app-module-defaults/migration.js +86 -0
  448. package/src/migrations/v1.0.0-rc.84/0001-rdb-terraform-aurora-app-module-defaults/migration.js.map +1 -0
  449. package/src/migrations/v1.0.0-rc.84/0002-agentcore-harness-no-tools-by-default/__snapshots__/migration.spec.ts.snap +79 -0
  450. package/src/migrations/v1.0.0-rc.84/0002-agentcore-harness-no-tools-by-default/metadata.json +3 -0
  451. package/src/migrations/v1.0.0-rc.84/0002-agentcore-harness-no-tools-by-default/migration.d.ts +6 -0
  452. package/src/migrations/v1.0.0-rc.84/0002-agentcore-harness-no-tools-by-default/migration.js +87 -0
  453. package/src/migrations/v1.0.0-rc.84/0002-agentcore-harness-no-tools-by-default/migration.js.map +1 -0
  454. package/src/migrations/v1.0.0-rc.84/0003-terraform-declare-used-providers/metadata.json +3 -0
  455. package/src/migrations/v1.0.0-rc.84/0003-terraform-declare-used-providers/migration.d.ts +6 -0
  456. package/src/migrations/v1.0.0-rc.84/0003-terraform-declare-used-providers/migration.js +147 -0
  457. package/src/migrations/v1.0.0-rc.84/0003-terraform-declare-used-providers/migration.js.map +1 -0
  458. package/src/migrations/v1.0.0-rc.84/0004-waf-log-group-cmk-encryption/__snapshots__/migration.spec.ts.snap +286 -0
  459. package/src/migrations/v1.0.0-rc.84/0004-waf-log-group-cmk-encryption/metadata.json +3 -0
  460. package/src/migrations/v1.0.0-rc.84/0004-waf-log-group-cmk-encryption/migration.d.ts +6 -0
  461. package/src/migrations/v1.0.0-rc.84/0004-waf-log-group-cmk-encryption/migration.js +238 -0
  462. package/src/migrations/v1.0.0-rc.84/0004-waf-log-group-cmk-encryption/migration.js.map +1 -0
  463. package/src/migrations/v1.0.0-rc.84/0005-terraform-harness-vpc-role-and-memory-grant/__snapshots__/migration.spec.ts.snap +521 -0
  464. package/src/migrations/v1.0.0-rc.84/0005-terraform-harness-vpc-role-and-memory-grant/metadata.json +3 -0
  465. package/src/migrations/v1.0.0-rc.84/0005-terraform-harness-vpc-role-and-memory-grant/migration.d.ts +6 -0
  466. package/src/migrations/v1.0.0-rc.84/0005-terraform-harness-vpc-role-and-memory-grant/migration.js +504 -0
  467. package/src/migrations/v1.0.0-rc.84/0005-terraform-harness-vpc-role-and-memory-grant/migration.js.map +1 -0
  468. package/src/migrations/v1.0.0-rc.85/0001-terraform-project-checkov-target-and-bootstrap-destroy/metadata.json +3 -0
  469. package/src/migrations/v1.0.0-rc.85/0001-terraform-project-checkov-target-and-bootstrap-destroy/migration.d.ts +6 -0
  470. package/src/migrations/v1.0.0-rc.85/0001-terraform-project-checkov-target-and-bootstrap-destroy/migration.js +146 -0
  471. package/src/migrations/v1.0.0-rc.85/0001-terraform-project-checkov-target-and-bootstrap-destroy/migration.js.map +1 -0
  472. package/src/open-api/codegen/executor-schema.d.js +6 -0
  473. package/src/open-api/codegen/executor-schema.d.js.map +1 -0
  474. package/src/open-api/codegen/executor-schema.d.ts +18 -0
  475. package/src/open-api/codegen/executor-schema.json +33 -0
  476. package/src/open-api/codegen/executor.d.ts +18 -0
  477. package/src/open-api/codegen/executor.js +56 -0
  478. package/src/open-api/codegen/executor.js.map +1 -0
  479. package/src/open-api/json-metadata/generator.d.ts +24 -0
  480. package/src/open-api/json-metadata/generator.js +37 -0
  481. package/src/open-api/json-metadata/generator.js.map +1 -0
  482. package/src/open-api/json-metadata/schema.d.js +6 -0
  483. package/src/open-api/json-metadata/schema.d.js.map +1 -0
  484. package/src/open-api/json-metadata/schema.d.ts +9 -0
  485. package/src/open-api/json-metadata/schema.json +20 -0
  486. package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +147 -33
  487. package/src/open-api/ts-client/__snapshots__/generator.arrays.spec.ts.snap +308 -75
  488. package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +298 -74
  489. package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +748 -103
  490. package/src/open-api/ts-client/__snapshots__/generator.content-type.spec.ts.snap +230 -37
  491. package/src/open-api/ts-client/__snapshots__/generator.duplicate-types.spec.ts.snap +249 -52
  492. package/src/open-api/ts-client/__snapshots__/generator.edge-cases.spec.ts.snap +5535 -0
  493. package/src/open-api/ts-client/__snapshots__/generator.fast-api-gaps.spec.ts.snap +736 -0
  494. package/src/open-api/ts-client/__snapshots__/generator.fast-api.spec.ts.snap +305 -71
  495. package/src/open-api/ts-client/__snapshots__/generator.multipart.spec.ts.snap +298 -0
  496. package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +353 -82
  497. package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +176 -55
  498. package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +100 -24
  499. package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +147 -33
  500. package/src/open-api/ts-client/__snapshots__/generator.spec-compliance.spec.ts.snap +1883 -0
  501. package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +392 -88
  502. package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +200 -48
  503. package/src/open-api/ts-client/files/client.gen.ts.template +358 -24
  504. package/src/open-api/ts-client/files/types.gen.ts.template +6 -4
  505. package/src/open-api/ts-client/generator.d.ts +1 -1
  506. package/src/open-api/ts-client/generator.js +41 -26
  507. package/src/open-api/ts-client/generator.js.map +1 -1
  508. package/src/open-api/ts-client/schema.d.js +6 -0
  509. package/src/open-api/ts-client/schema.d.js.map +1 -0
  510. package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +7 -2
  511. package/src/open-api/ts-hooks/generator.d.ts +1 -1
  512. package/src/open-api/ts-hooks/generator.js +17 -21
  513. package/src/open-api/ts-hooks/generator.js.map +1 -1
  514. package/src/open-api/ts-hooks/generator.spec.tsx +76 -6
  515. package/src/open-api/ts-hooks/schema.d.js +6 -0
  516. package/src/open-api/ts-hooks/schema.d.js.map +1 -0
  517. package/src/open-api/ts-metadata/generator.d.ts +1 -1
  518. package/src/open-api/ts-metadata/generator.js +12 -20
  519. package/src/open-api/ts-metadata/generator.js.map +1 -1
  520. package/src/open-api/ts-metadata/schema.d.js +6 -0
  521. package/src/open-api/ts-metadata/schema.d.js.map +1 -0
  522. package/src/open-api/utils/codegen-data/languages.d.ts +1 -7
  523. package/src/open-api/utils/codegen-data/languages.js +59 -66
  524. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  525. package/src/open-api/utils/codegen-data/types.d.ts +255 -10
  526. package/src/open-api/utils/codegen-data/types.js +54 -30
  527. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  528. package/src/open-api/utils/codegen-data.d.ts +4 -4
  529. package/src/open-api/utils/codegen-data.js +494 -674
  530. package/src/open-api/utils/codegen-data.js.map +1 -1
  531. package/src/open-api/utils/normalise.d.ts +1 -1
  532. package/src/open-api/utils/normalise.js +437 -246
  533. package/src/open-api/utils/normalise.js.map +1 -1
  534. package/src/open-api/utils/parse.d.ts +1 -1
  535. package/src/open-api/utils/parse.js +8 -14
  536. package/src/open-api/utils/parse.js.map +1 -1
  537. package/src/open-api/utils/parser.d.ts +55 -0
  538. package/src/open-api/utils/parser.js +787 -0
  539. package/src/open-api/utils/parser.js.map +1 -0
  540. package/src/open-api/utils/refs.d.ts +1 -1
  541. package/src/open-api/utils/refs.js +12 -22
  542. package/src/open-api/utils/refs.js.map +1 -1
  543. package/src/open-api/utils/types.d.ts +18 -0
  544. package/src/open-api/utils/types.js +5 -2
  545. package/src/open-api/utils/types.js.map +1 -1
  546. package/src/preset/__snapshots__/generator.spec.ts.snap +104 -21
  547. package/src/preset/generator.d.ts +15 -2
  548. package/src/preset/generator.js +76 -151
  549. package/src/preset/generator.js.map +1 -1
  550. package/src/preset/schema.d.js +6 -0
  551. package/src/preset/schema.d.js.map +1 -0
  552. package/src/preset/schema.d.ts +6 -3
  553. package/src/preset/schema.json +16 -5
  554. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +931 -0
  555. package/src/py/agent/__snapshots__/generator.core.spec.ts.snap +186 -0
  556. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +771 -0
  557. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +1322 -0
  558. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +231 -0
  559. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +29 -0
  560. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +29 -0
  561. package/src/py/agent/a2a-connection/generator.d.ts +25 -1
  562. package/src/py/agent/a2a-connection/generator.js +146 -95
  563. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  564. package/src/py/agent/a2a-connection/schema.d.js +8 -0
  565. package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
  566. package/src/py/agent/a2a-connection/schema.d.ts +2 -1
  567. package/src/py/agent/a2a-connection/schema.json +5 -0
  568. package/src/py/agent/files/deploy/Dockerfile.template +15 -1
  569. package/src/py/agent/files/langchain/a2a/main.py.template +83 -0
  570. package/src/py/agent/files/langchain/ag-ui/main.py.template +76 -0
  571. package/src/py/agent/files/langchain/common/agent.py.template +30 -0
  572. package/src/py/agent/files/langchain/common/middleware/__init__.py.template +0 -0
  573. package/src/py/agent/files/langchain/common/middleware/session_id_middleware.py.template +17 -0
  574. package/src/py/agent/files/langchain/common/session.py.template +61 -0
  575. package/src/py/agent/files/{http → langchain/http}/init.py.template +17 -25
  576. package/src/py/agent/files/langchain/http/main.py.template +69 -0
  577. package/src/py/agent/files/strands/a2a/main.py.template +61 -0
  578. package/src/py/agent/files/strands/ag-ui/main.py.template +86 -0
  579. package/src/py/agent/files/strands/common/__init__.py.template +0 -0
  580. package/src/py/agent/files/{common → strands/common}/agent.py.template +13 -2
  581. package/src/py/agent/files/strands/common/middleware/__init__.py.template +0 -0
  582. package/src/py/agent/files/strands/common/middleware/session_id_middleware.py.template +17 -0
  583. package/src/py/agent/files/strands/common/session.py.template +36 -0
  584. package/src/py/agent/files/strands/http/init.py.template +97 -0
  585. package/src/py/agent/files/{http → strands/http}/main.py.template +5 -29
  586. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +184 -0
  587. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
  588. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +34 -0
  589. package/src/py/agent/gateway-connection/generator.d.ts +33 -0
  590. package/src/py/agent/gateway-connection/generator.js +153 -0
  591. package/src/py/agent/gateway-connection/generator.js.map +1 -0
  592. package/src/py/agent/gateway-connection/schema.d.js +6 -0
  593. package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
  594. package/src/py/agent/gateway-connection/schema.d.ts +13 -0
  595. package/src/py/agent/gateway-connection/schema.json +31 -0
  596. package/src/py/agent/generator.d.ts +165 -2
  597. package/src/py/agent/generator.js +445 -199
  598. package/src/py/agent/generator.js.map +1 -1
  599. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +155 -92
  600. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +31 -0
  601. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +31 -0
  602. package/src/py/agent/mcp-connection/generator.d.ts +24 -1
  603. package/src/py/agent/mcp-connection/generator.js +103 -130
  604. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  605. package/src/py/agent/mcp-connection/schema.d.js +8 -0
  606. package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
  607. package/src/py/agent/mcp-connection/schema.d.ts +2 -1
  608. package/src/py/agent/mcp-connection/schema.json +5 -0
  609. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +17 -19
  610. package/src/py/agent/react-connection/generator.d.ts +152 -3
  611. package/src/py/agent/react-connection/generator.js +114 -65
  612. package/src/py/agent/react-connection/generator.js.map +1 -1
  613. package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +5 -5
  614. package/src/py/agent/react-connection/local-dev.js +36 -0
  615. package/src/py/agent/react-connection/local-dev.js.map +1 -0
  616. package/src/py/agent/react-connection/schema.d.js +8 -0
  617. package/src/py/agent/react-connection/schema.d.js.map +1 -0
  618. package/src/py/agent/react-connection/schema.d.ts +2 -1
  619. package/src/py/agent/react-connection/schema.json +5 -0
  620. package/src/py/agent/schema.d.js +6 -0
  621. package/src/py/agent/schema.d.js.map +1 -0
  622. package/src/py/agent/schema.d.ts +6 -2
  623. package/src/py/agent/schema.json +15 -1
  624. package/src/py/api/generator.d.ts +1 -1
  625. package/src/py/api/generator.js +12 -11
  626. package/src/py/api/generator.js.map +1 -1
  627. package/src/py/api/schema.d.js +6 -0
  628. package/src/py/api/schema.d.js.map +1 -0
  629. package/src/py/api/schema.d.ts +2 -1
  630. package/src/py/api/schema.json +5 -0
  631. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1592 -0
  632. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +63 -0
  633. package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
  634. package/src/py/dynamodb/agent-connection/generator.js +45 -0
  635. package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
  636. package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
  637. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
  638. package/src/py/dynamodb/agent-connection/schema.d.ts +15 -0
  639. package/src/py/dynamodb/agent-connection/schema.json +27 -0
  640. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +32 -0
  641. package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
  642. package/src/py/dynamodb/fast-api-connection/generator.js +39 -0
  643. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
  644. package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
  645. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
  646. package/src/py/dynamodb/fast-api-connection/schema.d.ts +13 -0
  647. package/src/py/dynamodb/fast-api-connection/schema.json +23 -0
  648. package/src/py/dynamodb/files/__name__/__init__.py.template +6 -0
  649. package/src/py/dynamodb/files/__name__/client.py.template +39 -0
  650. package/src/py/dynamodb/files/__name__/entities/__init__.py.template +4 -0
  651. package/src/py/dynamodb/files/__name__/entities/base.py.template +63 -0
  652. package/src/py/dynamodb/files/__name__/entities/example.py.template +64 -0
  653. package/src/py/dynamodb/files/config.json.template +24 -0
  654. package/src/py/dynamodb/generator.d.ts +39 -0
  655. package/src/py/dynamodb/generator.js +130 -0
  656. package/src/py/dynamodb/generator.js.map +1 -0
  657. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +63 -0
  658. package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
  659. package/src/py/dynamodb/mcp-server-connection/generator.js +45 -0
  660. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
  661. package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
  662. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  663. package/src/py/dynamodb/mcp-server-connection/schema.d.ts +15 -0
  664. package/src/py/dynamodb/mcp-server-connection/schema.json +27 -0
  665. package/src/py/dynamodb/schema.d.js +6 -0
  666. package/src/py/dynamodb/schema.d.js.map +1 -0
  667. package/src/py/dynamodb/schema.d.ts +16 -0
  668. package/src/py/dynamodb/schema.json +76 -0
  669. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +240 -4693
  670. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +6661 -0
  671. package/src/py/fast-api/files/app/__name__/init.py.template +5 -22
  672. package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
  673. package/src/py/fast-api/generator.d.ts +73 -1
  674. package/src/py/fast-api/generator.js +126 -92
  675. package/src/py/fast-api/generator.js.map +1 -1
  676. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +4 -3
  677. package/src/py/fast-api/react/generator.d.ts +17 -2
  678. package/src/py/fast-api/react/generator.js +38 -26
  679. package/src/py/fast-api/react/generator.js.map +1 -1
  680. package/src/py/fast-api/react/open-api.js +44 -33
  681. package/src/py/fast-api/react/open-api.js.map +1 -1
  682. package/src/py/fast-api/react/schema.d.js +6 -0
  683. package/src/py/fast-api/react/schema.d.js.map +1 -0
  684. package/src/py/fast-api/react/schema.d.ts +1 -0
  685. package/src/py/fast-api/react/schema.json +5 -0
  686. package/src/py/fast-api/schema.d.js +6 -0
  687. package/src/py/fast-api/schema.d.js.map +1 -0
  688. package/src/py/fast-api/schema.d.ts +2 -1
  689. package/src/py/fast-api/schema.json +6 -0
  690. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +12 -4
  691. package/src/py/lambda-function/files/handler/__lambdaFunctionSnakeCase__.py.template +1 -1
  692. package/src/py/lambda-function/generator.d.ts +28 -1
  693. package/src/py/lambda-function/generator.js +88 -61
  694. package/src/py/lambda-function/generator.js.map +1 -1
  695. package/src/py/lambda-function/schema.d.js +6 -0
  696. package/src/py/lambda-function/schema.d.js.map +1 -0
  697. package/src/py/lambda-function/schema.d.ts +3 -2
  698. package/src/py/lambda-function/schema.json +6 -1
  699. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +225 -21
  700. package/src/py/mcp-server/files/deploy/Dockerfile.template +15 -1
  701. package/src/py/mcp-server/generator.d.ts +69 -1
  702. package/src/py/mcp-server/generator.js +211 -137
  703. package/src/py/mcp-server/generator.js.map +1 -1
  704. package/src/py/mcp-server/schema.d.js +6 -0
  705. package/src/py/mcp-server/schema.d.js.map +1 -0
  706. package/src/py/mcp-server/schema.d.ts +2 -1
  707. package/src/py/mcp-server/schema.json +6 -0
  708. package/src/py/project/generator.d.ts +37 -2
  709. package/src/py/project/generator.js +246 -90
  710. package/src/py/project/generator.js.map +1 -1
  711. package/src/py/project/schema.d.js +6 -0
  712. package/src/py/project/schema.d.js.map +1 -0
  713. package/src/py/project/schema.d.ts +1 -0
  714. package/src/py/project/schema.json +6 -0
  715. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2113 -0
  716. package/src/py/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +123 -0
  717. package/src/py/rdb/agent-connection/generator.d.ts +10 -0
  718. package/src/py/rdb/agent-connection/generator.js +52 -0
  719. package/src/py/rdb/agent-connection/generator.js.map +1 -0
  720. package/src/py/rdb/agent-connection/schema.d.js +8 -0
  721. package/src/py/rdb/agent-connection/schema.d.js.map +1 -0
  722. package/src/py/rdb/agent-connection/schema.d.ts +15 -0
  723. package/src/py/rdb/agent-connection/schema.json +27 -0
  724. package/src/py/rdb/fast-api-connection/__snapshots__/generator.spec.ts.snap +51 -0
  725. package/src/py/rdb/fast-api-connection/files/__apiModuleName__/dependencies/__rdbNameSnake__.py.template +14 -0
  726. package/src/py/rdb/fast-api-connection/generator.d.ts +10 -0
  727. package/src/py/rdb/fast-api-connection/generator.js +56 -0
  728. package/src/py/rdb/fast-api-connection/generator.js.map +1 -0
  729. package/src/py/rdb/fast-api-connection/schema.d.js +8 -0
  730. package/src/py/rdb/fast-api-connection/schema.d.js.map +1 -0
  731. package/src/py/rdb/fast-api-connection/schema.d.ts +13 -0
  732. package/src/py/rdb/fast-api-connection/schema.json +23 -0
  733. package/src/py/rdb/files/Dockerfile.create-db-user.template +14 -0
  734. package/src/py/rdb/files/Dockerfile.migration.template +14 -0
  735. package/src/py/rdb/files/__name__/connection.py.template +55 -0
  736. package/src/py/rdb/files/__name__/create_db_user_handler.py.template +97 -0
  737. package/src/py/rdb/files/__name__/migration_handler.py.template +36 -0
  738. package/src/py/rdb/files/__name__/models/__init__.py.template +3 -0
  739. package/src/py/rdb/files/__name__/models/example.py.template +8 -0
  740. package/src/py/rdb/files/__name__/utils.py.template +120 -0
  741. package/src/py/rdb/files/alembic.ini.template +38 -0
  742. package/src/py/rdb/files/migrations/env.py.template +80 -0
  743. package/src/py/rdb/files/migrations/script.py.mako.template +28 -0
  744. package/src/py/rdb/generator.d.ts +103 -0
  745. package/src/py/rdb/generator.js +368 -0
  746. package/src/py/rdb/generator.js.map +1 -0
  747. package/src/py/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +119 -0
  748. package/src/py/rdb/mcp-server-connection/generator.d.ts +10 -0
  749. package/src/py/rdb/mcp-server-connection/generator.js +52 -0
  750. package/src/py/rdb/mcp-server-connection/generator.js.map +1 -0
  751. package/src/py/rdb/mcp-server-connection/schema.d.js +8 -0
  752. package/src/py/rdb/mcp-server-connection/schema.d.js.map +1 -0
  753. package/src/py/rdb/mcp-server-connection/schema.d.ts +15 -0
  754. package/src/py/rdb/mcp-server-connection/schema.json +27 -0
  755. package/src/py/rdb/schema.d.js +6 -0
  756. package/src/py/rdb/schema.d.js.map +1 -0
  757. package/src/py/rdb/schema.d.ts +16 -0
  758. package/src/py/rdb/schema.json +78 -0
  759. package/src/py/rdb/utils.d.ts +6 -0
  760. package/src/py/rdb/utils.js +16 -0
  761. package/src/py/rdb/utils.js.map +1 -0
  762. package/src/sdk/agentcore-gateway.d.ts +6 -0
  763. package/src/sdk/agentcore-gateway.js +7 -0
  764. package/src/sdk/agentcore-gateway.js.map +1 -0
  765. package/src/sdk/agentcore-harness.d.ts +6 -0
  766. package/src/sdk/agentcore-harness.js +7 -0
  767. package/src/sdk/agentcore-harness.js.map +1 -0
  768. package/src/sdk/connection.d.ts +6 -0
  769. package/src/sdk/connection.js +6 -0
  770. package/src/sdk/connection.js.map +1 -0
  771. package/src/sdk/license.d.ts +8 -0
  772. package/src/sdk/license.js +7 -0
  773. package/src/sdk/license.js.map +1 -0
  774. package/src/sdk/open-api.d.ts +12 -0
  775. package/src/sdk/open-api.js +9 -0
  776. package/src/sdk/open-api.js.map +1 -0
  777. package/src/sdk/py.d.ts +18 -0
  778. package/src/sdk/py.js +12 -0
  779. package/src/sdk/py.js.map +1 -0
  780. package/src/sdk/smithy.d.ts +6 -0
  781. package/src/sdk/smithy.js +7 -0
  782. package/src/sdk/smithy.js.map +1 -0
  783. package/src/sdk/terraform.d.ts +6 -0
  784. package/src/sdk/terraform.js +7 -0
  785. package/src/sdk/terraform.js.map +1 -0
  786. package/src/sdk/ts.d.ts +39 -0
  787. package/src/sdk/ts.js +41 -0
  788. package/src/sdk/ts.js.map +1 -0
  789. package/{sdk/utils/format.d.ts → src/sdk/utils/ast.d.ts} +1 -1
  790. package/src/sdk/utils/ast.js +6 -0
  791. package/src/sdk/utils/ast.js.map +1 -0
  792. package/src/sdk/utils/format.d.ts +5 -0
  793. package/src/sdk/utils/format.js +6 -0
  794. package/src/sdk/utils/format.js.map +1 -0
  795. package/{sdk → src/sdk}/utils/test.d.ts +1 -1
  796. package/src/sdk/utils/test.js +6 -0
  797. package/src/sdk/utils/test.js.map +1 -0
  798. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +244 -226
  799. package/src/smithy/project/files/{smithy-build.json.template → service/smithy-build.json.template} +5 -5
  800. package/src/smithy/project/files/{src → service/src}/operations/echo.smithy.template +1 -0
  801. package/src/smithy/project/files/shapes/smithy-build.json.template +7 -0
  802. package/src/smithy/project/files/shapes/src/main.smithy.template +11 -0
  803. package/src/smithy/project/files/ssdk-bundle/ssdk.rolldown.config.mjs.template +52 -0
  804. package/src/smithy/project/generator.d.ts +91 -1
  805. package/src/smithy/project/generator.js +220 -45
  806. package/src/smithy/project/generator.js.map +1 -1
  807. package/src/smithy/project/schema.d.js +6 -0
  808. package/src/smithy/project/schema.d.js.map +1 -0
  809. package/src/smithy/project/schema.d.ts +2 -0
  810. package/src/smithy/project/schema.json +28 -1
  811. package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
  812. package/src/smithy/react-connection/generator.d.ts +16 -1
  813. package/src/smithy/react-connection/generator.js +54 -48
  814. package/src/smithy/react-connection/generator.js.map +1 -1
  815. package/src/smithy/react-connection/schema.d.js +6 -0
  816. package/src/smithy/react-connection/schema.d.js.map +1 -0
  817. package/src/smithy/react-connection/schema.d.ts +1 -0
  818. package/src/smithy/react-connection/schema.json +5 -0
  819. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +2618 -550
  820. package/src/smithy/ts/api/files/handler.ts.template +3 -3
  821. package/src/smithy/ts/api/files/local-server.ts.template +3 -3
  822. package/src/smithy/ts/api/files/operations/echo.ts.template +2 -2
  823. package/src/smithy/ts/api/files/service.ts.template +3 -3
  824. package/src/smithy/ts/api/generator.d.ts +89 -1
  825. package/src/smithy/ts/api/generator.js +185 -119
  826. package/src/smithy/ts/api/generator.js.map +1 -1
  827. package/src/smithy/ts/api/schema.d.js +6 -0
  828. package/src/smithy/ts/api/schema.d.js.map +1 -0
  829. package/src/smithy/ts/api/schema.d.ts +2 -1
  830. package/src/smithy/ts/api/schema.json +6 -0
  831. package/src/terraform/project/files/application/bootstrap/providers.tf.template +11 -0
  832. package/src/terraform/project/files/application/scripts/bootstrap-destroy.ts.template +111 -0
  833. package/src/terraform/project/files/application/scripts/bootstrap.ts.template +40 -1
  834. package/src/terraform/project/files/application/scripts/env.ts.template +11 -0
  835. package/src/terraform/project/files/application/scripts/init.ts.template +2 -1
  836. package/src/terraform/project/files/application/src/main.tf.template +6 -1
  837. package/src/terraform/project/files/application/src/providers.tf.template +9 -3
  838. package/src/terraform/project/files/checkov/checkov.yml.template +8 -0
  839. package/src/terraform/project/files/library/src/main.tf.template +9 -0
  840. package/src/terraform/project/generator.d.ts +62 -2
  841. package/src/terraform/project/generator.js +340 -117
  842. package/src/terraform/project/generator.js.map +1 -1
  843. package/src/terraform/project/schema.d.js +9 -0
  844. package/src/terraform/project/schema.d.js.map +1 -0
  845. package/src/terraform/project/schema.d.ts +1 -0
  846. package/src/terraform/project/schema.json +5 -0
  847. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +2957 -725
  848. package/src/trpc/backend/files/src/client/index.ts.template +1 -1
  849. package/src/trpc/backend/files/src/handler.ts.template +1 -1
  850. package/src/trpc/backend/files/src/index.ts.template +5 -5
  851. package/src/trpc/backend/files/src/init.ts.template +1 -1
  852. package/src/trpc/backend/files/src/local-server.ts.template +1 -1
  853. package/src/trpc/backend/files/src/middleware/index.ts.template +7 -7
  854. package/src/trpc/backend/files/src/procedures/echo.ts.template +3 -3
  855. package/src/trpc/backend/files/src/router.ts.template +2 -2
  856. package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
  857. package/src/trpc/backend/files/src/schema/index.ts.template +1 -1
  858. package/src/trpc/backend/files-operations/scripts/generate-operations.ts.template +40 -0
  859. package/src/trpc/backend/generator.d.ts +91 -2
  860. package/src/trpc/backend/generator.js +186 -100
  861. package/src/trpc/backend/generator.js.map +1 -1
  862. package/src/trpc/backend/schema.d.js +6 -0
  863. package/src/trpc/backend/schema.d.js.map +1 -0
  864. package/src/trpc/backend/schema.d.ts +2 -1
  865. package/src/trpc/backend/schema.json +6 -0
  866. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +4 -4
  867. package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
  868. package/src/trpc/react/generator.d.ts +39 -2
  869. package/src/trpc/react/generator.js +105 -63
  870. package/src/trpc/react/generator.js.map +1 -1
  871. package/src/trpc/react/schema.d.js +6 -0
  872. package/src/trpc/react/schema.d.js.map +1 -0
  873. package/src/trpc/react/schema.d.ts +1 -0
  874. package/src/trpc/react/schema.json +5 -0
  875. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +1490 -31
  876. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +258 -0
  877. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +23 -0
  878. package/src/ts/agent/a2a-connection/generator.d.ts +47 -1
  879. package/src/ts/agent/a2a-connection/generator.js +112 -63
  880. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  881. package/src/ts/agent/a2a-connection/schema.d.js +8 -0
  882. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
  883. package/src/ts/agent/a2a-connection/schema.d.ts +2 -1
  884. package/src/ts/agent/a2a-connection/schema.json +5 -0
  885. package/src/ts/agent/files/a2a/index.ts.template +5 -12
  886. package/src/ts/agent/files/ag-ui/index.ts.template +29 -14
  887. package/src/ts/agent/files/common/agent.ts.template +11 -2
  888. package/src/ts/agent/files/common/session.ts.template +43 -0
  889. package/src/ts/agent/files/common-express/middleware/session-id-middleware.ts.template +16 -0
  890. package/src/ts/agent/files/deploy/Dockerfile.template +20 -2
  891. package/src/ts/agent/files/http/client.ts.template +2 -2
  892. package/src/ts/agent/files/http/index.ts.template +2 -2
  893. package/src/ts/agent/files/http/router.ts.template +5 -5
  894. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +222 -0
  895. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +30 -0
  896. package/src/ts/agent/gateway-connection/generator.d.ts +47 -0
  897. package/src/ts/agent/gateway-connection/generator.js +144 -0
  898. package/src/ts/agent/gateway-connection/generator.js.map +1 -0
  899. package/src/ts/agent/gateway-connection/schema.d.js +6 -0
  900. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
  901. package/src/ts/agent/gateway-connection/schema.d.ts +13 -0
  902. package/src/ts/agent/gateway-connection/schema.json +31 -0
  903. package/src/ts/agent/generator.d.ts +206 -1
  904. package/src/ts/agent/generator.js +342 -159
  905. package/src/ts/agent/generator.js.map +1 -1
  906. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +194 -114
  907. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +23 -0
  908. package/src/ts/agent/mcp-connection/generator.d.ts +38 -1
  909. package/src/ts/agent/mcp-connection/generator.js +88 -65
  910. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  911. package/src/ts/agent/mcp-connection/schema.d.js +8 -0
  912. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
  913. package/src/ts/agent/mcp-connection/schema.d.ts +2 -1
  914. package/src/ts/agent/mcp-connection/schema.json +5 -0
  915. package/src/ts/agent/react-connection/__snapshots__/generator.spec.ts.snap +8 -4
  916. package/src/ts/agent/react-connection/files/src/components/__agentNameClassName__AgentClientProvider.tsx.template +2 -1
  917. package/src/ts/agent/react-connection/generator.d.ts +204 -3
  918. package/src/ts/agent/react-connection/generator.js +158 -99
  919. package/src/ts/agent/react-connection/generator.js.map +1 -1
  920. package/src/ts/agent/react-connection/local-dev.d.ts +13 -0
  921. package/src/ts/agent/react-connection/local-dev.js +17 -0
  922. package/src/ts/agent/react-connection/local-dev.js.map +1 -0
  923. package/src/ts/agent/react-connection/schema.d.js +8 -0
  924. package/src/ts/agent/react-connection/schema.d.js.map +1 -0
  925. package/src/ts/agent/react-connection/schema.d.ts +2 -1
  926. package/src/ts/agent/react-connection/schema.json +5 -0
  927. package/src/ts/agent/schema.d.js +6 -0
  928. package/src/ts/agent/schema.d.js.map +1 -0
  929. package/src/ts/agent/schema.d.ts +5 -1
  930. package/src/ts/agent/schema.json +14 -0
  931. package/src/ts/api/generator.d.ts +1 -1
  932. package/src/ts/api/generator.js +16 -16
  933. package/src/ts/api/generator.js.map +1 -1
  934. package/src/ts/api/schema.d.js +6 -0
  935. package/src/ts/api/schema.d.js.map +1 -0
  936. package/src/ts/api/schema.d.ts +2 -1
  937. package/src/ts/api/schema.json +5 -0
  938. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +22 -8
  939. package/src/ts/astro-docs/files/base/src/content/docs/en/index.mdx.template +2 -2
  940. package/src/ts/astro-docs/files/base/src/content.config.ts.template +4 -4
  941. package/src/ts/astro-docs/files/translation/scripts/translate.ts.template +272 -150
  942. package/src/ts/astro-docs/generator.d.ts +41 -1
  943. package/src/ts/astro-docs/generator.js +133 -59
  944. package/src/ts/astro-docs/generator.js.map +1 -1
  945. package/src/ts/astro-docs/schema.d.js +6 -0
  946. package/src/ts/astro-docs/schema.d.js.map +1 -0
  947. package/src/ts/astro-docs/schema.d.ts +2 -2
  948. package/src/ts/astro-docs/schema.json +3 -3
  949. package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +986 -0
  950. package/src/ts/dcr-proxy/generator.d.ts +34 -0
  951. package/src/ts/dcr-proxy/generator.js +115 -0
  952. package/src/ts/dcr-proxy/generator.js.map +1 -0
  953. package/src/ts/dcr-proxy/schema.d.js +6 -0
  954. package/src/ts/dcr-proxy/schema.d.js.map +1 -0
  955. package/src/ts/dcr-proxy/schema.d.ts +13 -0
  956. package/src/ts/dcr-proxy/schema.json +44 -0
  957. package/src/ts/docs/generator.d.ts +1 -1
  958. package/src/ts/docs/generator.js +10 -10
  959. package/src/ts/docs/generator.js.map +1 -1
  960. package/src/ts/docs/schema.d.js +6 -0
  961. package/src/ts/docs/schema.d.js.map +1 -0
  962. package/src/ts/docs/schema.d.ts +1 -4
  963. package/src/ts/docs/schema.json +3 -3
  964. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +481 -527
  965. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +23 -5
  966. package/src/ts/dynamodb/agent-connection/generator.d.ts +1 -1
  967. package/src/ts/dynamodb/agent-connection/generator.js +27 -23
  968. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  969. package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
  970. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
  971. package/src/ts/dynamodb/agent-connection/schema.d.ts +2 -1
  972. package/src/ts/dynamodb/agent-connection/schema.json +5 -0
  973. package/src/ts/dynamodb/files/config.json.template +24 -0
  974. package/src/ts/dynamodb/files/src/client.ts.template +30 -11
  975. package/src/ts/dynamodb/files/src/entities/example.ts.template +1 -1
  976. package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -1
  977. package/src/ts/dynamodb/files/src/index.ts.template +2 -11
  978. package/src/ts/dynamodb/generator.d.ts +42 -1
  979. package/src/ts/dynamodb/generator.js +110 -64
  980. package/src/ts/dynamodb/generator.js.map +1 -1
  981. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +23 -5
  982. package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +1 -1
  983. package/src/ts/dynamodb/mcp-server-connection/generator.js +27 -23
  984. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  985. package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
  986. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  987. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +2 -1
  988. package/src/ts/dynamodb/mcp-server-connection/schema.json +5 -0
  989. package/src/ts/dynamodb/schema.d.js +6 -0
  990. package/src/ts/dynamodb/schema.d.js.map +1 -0
  991. package/src/ts/dynamodb/schema.d.ts +3 -1
  992. package/src/ts/dynamodb/schema.json +26 -2
  993. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +12 -3
  994. package/src/ts/dynamodb/smithy-connection/generator.d.ts +1 -1
  995. package/src/ts/dynamodb/smithy-connection/generator.js +22 -22
  996. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  997. package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
  998. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
  999. package/src/ts/dynamodb/smithy-connection/schema.d.ts +1 -0
  1000. package/src/ts/dynamodb/smithy-connection/schema.json +5 -0
  1001. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
  1002. package/src/ts/dynamodb/trpc-connection/generator.d.ts +1 -1
  1003. package/src/ts/dynamodb/trpc-connection/generator.js +22 -22
  1004. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  1005. package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
  1006. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
  1007. package/src/ts/dynamodb/trpc-connection/schema.d.ts +1 -0
  1008. package/src/ts/dynamodb/trpc-connection/schema.json +5 -0
  1009. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +19 -9
  1010. package/src/ts/lambda-function/files/handler/__lambdaFunctionKebabCase__.ts.template +2 -1
  1011. package/src/ts/lambda-function/generator.d.ts +39 -1
  1012. package/src/ts/lambda-function/generator.js +98 -65
  1013. package/src/ts/lambda-function/generator.js.map +1 -1
  1014. package/src/ts/lambda-function/io.js +83 -52
  1015. package/src/ts/lambda-function/io.js.map +1 -1
  1016. package/src/ts/lambda-function/schema.d.js +6 -0
  1017. package/src/ts/lambda-function/schema.d.js.map +1 -0
  1018. package/src/ts/lambda-function/schema.d.ts +2 -1
  1019. package/src/ts/lambda-function/schema.json +5 -0
  1020. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +83 -36
  1021. package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +2 -2
  1022. package/src/ts/lib/biome.d.ts +1 -1
  1023. package/src/ts/lib/biome.js +71 -38
  1024. package/src/ts/lib/biome.js.map +1 -1
  1025. package/src/ts/lib/generator.d.ts +24 -1
  1026. package/src/ts/lib/generator.js +128 -94
  1027. package/src/ts/lib/generator.js.map +1 -1
  1028. package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
  1029. package/src/ts/lib/schema.d.js +6 -0
  1030. package/src/ts/lib/schema.d.js.map +1 -0
  1031. package/src/ts/lib/schema.d.ts +1 -1
  1032. package/src/ts/lib/schema.json +5 -0
  1033. package/src/ts/lib/ts-project-utils.d.ts +4 -2
  1034. package/src/ts/lib/ts-project-utils.js +85 -74
  1035. package/src/ts/lib/ts-project-utils.js.map +1 -1
  1036. package/src/ts/lib/types.d.ts +6 -0
  1037. package/src/ts/lib/types.js +5 -2
  1038. package/src/ts/lib/types.js.map +1 -1
  1039. package/src/ts/lib/vitest.d.ts +22 -2
  1040. package/src/ts/lib/vitest.js +83 -26
  1041. package/src/ts/lib/vitest.js.map +1 -1
  1042. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +225 -44
  1043. package/src/ts/mcp-server/files/Dockerfile.template +20 -2
  1044. package/src/ts/mcp-server/generator.d.ts +111 -1
  1045. package/src/ts/mcp-server/generator.js +234 -168
  1046. package/src/ts/mcp-server/generator.js.map +1 -1
  1047. package/src/ts/mcp-server/schema.d.js +6 -0
  1048. package/src/ts/mcp-server/schema.d.js.map +1 -0
  1049. package/src/ts/mcp-server/schema.d.ts +2 -1
  1050. package/src/ts/mcp-server/schema.json +6 -0
  1051. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +28 -13
  1052. package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
  1053. package/src/ts/nx-generator/files/common/schema.json.template +5 -0
  1054. package/src/ts/nx-generator/files/local/generator.spec.ts.template +1 -1
  1055. package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
  1056. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +6 -7
  1057. package/src/ts/nx-generator/generator.d.ts +3 -0
  1058. package/src/ts/nx-generator/generator.js +122 -75
  1059. package/src/ts/nx-generator/generator.js.map +1 -1
  1060. package/src/ts/nx-generator/schema.d.js +6 -0
  1061. package/src/ts/nx-generator/schema.d.js.map +1 -0
  1062. package/src/ts/nx-generator/schema.d.ts +1 -0
  1063. package/src/ts/nx-generator/schema.json +5 -0
  1064. package/src/ts/nx-migration/files/migration.spec.ts.template +26 -0
  1065. package/src/ts/nx-migration/files/migration.ts.template +65 -0
  1066. package/src/ts/nx-migration/files/prompt.md.template +46 -0
  1067. package/src/ts/nx-migration/generator.d.ts +27 -0
  1068. package/src/ts/nx-migration/generator.js +147 -0
  1069. package/src/ts/nx-migration/generator.js.map +1 -0
  1070. package/src/ts/nx-migration/schema.d.js +6 -0
  1071. package/src/ts/nx-migration/schema.d.js.map +1 -0
  1072. package/src/ts/nx-migration/schema.d.ts +13 -0
  1073. package/src/ts/nx-migration/schema.json +63 -0
  1074. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +36 -25
  1075. package/src/ts/nx-plugin/files/mcp-server/resources/GENERAL_GUIDANCE.md.template +5 -6
  1076. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  1077. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  1078. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  1079. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  1080. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  1081. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +4 -4
  1082. package/src/ts/nx-plugin/generator.d.ts +4 -1
  1083. package/src/ts/nx-plugin/generator.js +64 -48
  1084. package/src/ts/nx-plugin/generator.js.map +1 -1
  1085. package/src/ts/nx-plugin/schema.d.js +9 -0
  1086. package/src/ts/nx-plugin/schema.d.js.map +1 -0
  1087. package/src/ts/nx-plugin/schema.json +5 -0
  1088. package/src/ts/nx-plugin/utils.d.ts +27 -2
  1089. package/src/ts/nx-plugin/utils.js +66 -57
  1090. package/src/ts/nx-plugin/utils.js.map +1 -1
  1091. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +711 -877
  1092. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +16 -6
  1093. package/src/ts/rdb/agent-connection/generator.d.ts +1 -1
  1094. package/src/ts/rdb/agent-connection/generator.js +44 -39
  1095. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  1096. package/src/ts/rdb/agent-connection/schema.d.js +8 -0
  1097. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
  1098. package/src/ts/rdb/agent-connection/schema.d.ts +2 -1
  1099. package/src/ts/rdb/agent-connection/schema.json +5 -0
  1100. package/src/ts/rdb/files/Dockerfile.template +19 -1
  1101. package/src/ts/rdb/files/prisma.config.ts.template +6 -5
  1102. package/src/ts/rdb/files/src/create-db-user-handler.ts.template +9 -11
  1103. package/src/ts/rdb/files/src/migration-handler.ts.template +5 -30
  1104. package/src/ts/rdb/files/src/prisma.ts.template +33 -25
  1105. package/src/ts/rdb/files/src/utils.ts.template +31 -1
  1106. package/src/ts/rdb/generator.d.ts +118 -5
  1107. package/src/ts/rdb/generator.js +272 -127
  1108. package/src/ts/rdb/generator.js.map +1 -1
  1109. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +16 -6
  1110. package/src/ts/rdb/mcp-server-connection/generator.d.ts +1 -1
  1111. package/src/ts/rdb/mcp-server-connection/generator.js +42 -37
  1112. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  1113. package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
  1114. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
  1115. package/src/ts/rdb/mcp-server-connection/schema.d.ts +2 -1
  1116. package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
  1117. package/src/ts/rdb/schema.d.js +6 -0
  1118. package/src/ts/rdb/schema.d.js.map +1 -0
  1119. package/src/ts/rdb/schema.d.ts +2 -1
  1120. package/src/ts/rdb/schema.json +7 -1
  1121. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +18 -9
  1122. package/src/ts/rdb/smithy-connection/generator.d.ts +1 -1
  1123. package/src/ts/rdb/smithy-connection/generator.js +48 -43
  1124. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  1125. package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
  1126. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
  1127. package/src/ts/rdb/smithy-connection/schema.d.ts +1 -0
  1128. package/src/ts/rdb/smithy-connection/schema.json +5 -0
  1129. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
  1130. package/src/ts/rdb/trpc-connection/generator.d.ts +1 -1
  1131. package/src/ts/rdb/trpc-connection/generator.js +37 -31
  1132. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  1133. package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
  1134. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
  1135. package/src/ts/rdb/trpc-connection/schema.d.ts +1 -0
  1136. package/src/ts/rdb/trpc-connection/schema.json +5 -0
  1137. package/src/ts/rdb/utils.js +9 -11
  1138. package/src/ts/rdb/utils.js.map +1 -1
  1139. package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +17 -16
  1140. package/src/ts/react-website/agui/generator.d.ts +97 -0
  1141. package/src/ts/react-website/agui/generator.js +114 -67
  1142. package/src/ts/react-website/agui/generator.js.map +1 -1
  1143. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +1705 -717
  1144. package/src/ts/react-website/app/files/app/common/README.md.template +1 -1
  1145. package/src/ts/react-website/app/generator.d.ts +146 -3
  1146. package/src/ts/react-website/app/generator.js +363 -209
  1147. package/src/ts/react-website/app/generator.js.map +1 -1
  1148. package/src/ts/react-website/app/schema.d.js +6 -0
  1149. package/src/ts/react-website/app/schema.d.js.map +1 -0
  1150. package/src/ts/react-website/app/schema.d.ts +3 -3
  1151. package/src/ts/react-website/app/schema.json +12 -6
  1152. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +225 -31
  1153. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +78 -12
  1154. package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
  1155. package/src/ts/react-website/cognito-auth/generator.d.ts +26 -2
  1156. package/src/ts/react-website/cognito-auth/generator.js +79 -61
  1157. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  1158. package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
  1159. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
  1160. package/src/ts/react-website/cognito-auth/schema.d.ts +2 -1
  1161. package/src/ts/react-website/cognito-auth/schema.json +5 -0
  1162. package/src/ts/react-website/cognito-auth/utils.js +34 -32
  1163. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  1164. package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
  1165. package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
  1166. package/src/ts/react-website/runtime-config/generator.d.ts +1 -1
  1167. package/src/ts/react-website/runtime-config/generator.js +29 -31
  1168. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  1169. package/src/ts/react-website/runtime-config/schema.d.js +6 -0
  1170. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
  1171. package/src/ts/react-website/runtime-config/schema.d.ts +1 -0
  1172. package/src/ts/react-website/runtime-config/schema.json +5 -0
  1173. package/src/ts/sync/generator.d.ts +1 -1
  1174. package/src/ts/sync/generator.js +154 -60
  1175. package/src/ts/sync/generator.js.map +1 -1
  1176. package/src/ts/website/app/generator.d.ts +1 -1
  1177. package/src/ts/website/app/generator.js +10 -10
  1178. package/src/ts/website/app/generator.js.map +1 -1
  1179. package/src/ts/website/app/schema.d.js +6 -0
  1180. package/src/ts/website/app/schema.d.js.map +1 -0
  1181. package/src/ts/website/app/schema.d.ts +3 -3
  1182. package/src/ts/website/app/schema.json +11 -6
  1183. package/src/ts/website/auth/generator.d.ts +2 -2
  1184. package/src/ts/website/auth/generator.js +11 -10
  1185. package/src/ts/website/auth/generator.js.map +1 -1
  1186. package/src/ts/website/auth/schema.d.js +6 -0
  1187. package/src/ts/website/auth/schema.d.js.map +1 -0
  1188. package/src/ts/website/auth/schema.d.ts +2 -1
  1189. package/src/ts/website/auth/schema.json +5 -0
  1190. package/src/utils/__snapshots__/shared-constructs.spec.ts.snap +21 -0
  1191. package/src/utils/add-dependencies.d.ts +38 -0
  1192. package/src/utils/add-dependencies.js +83 -0
  1193. package/src/utils/add-dependencies.js.map +1 -0
  1194. package/src/utils/agent-chat/agent-chat.d.ts +31 -0
  1195. package/src/utils/agent-chat/agent-chat.js +31 -0
  1196. package/src/utils/agent-chat/agent-chat.js.map +1 -0
  1197. package/src/utils/agent-chat/files/a2a/chat.ts.template +33 -0
  1198. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +17 -0
  1199. package/src/utils/agent-chat/files/common/agentcore.ts.template +81 -0
  1200. package/src/utils/agent-chat/files/http-py/chat.ts.template +43 -0
  1201. package/src/utils/agent-chat/files/http-ts/chat.ts.template +54 -0
  1202. package/src/utils/agent-connection/agent-connection.d.ts +149 -26
  1203. package/src/utils/agent-connection/agent-connection.js +510 -108
  1204. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  1205. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
  1206. package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
  1207. package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
  1208. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
  1209. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
  1210. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +35 -33
  1211. package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
  1212. package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
  1213. package/src/utils/agent-connection/files/{core-runtime-config/model-errors.ts.template → core-strands/base/model-errors-strands.ts.template} +26 -15
  1214. package/src/utils/agent-connection/files/core-strands/base/tool-errors-strands.ts.template +29 -0
  1215. 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
  1216. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
  1217. package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
  1218. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
  1219. package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
  1220. package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
  1221. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
  1222. package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +105 -0
  1223. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
  1224. package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
  1225. package/src/utils/agent-connection/files/py-core-langchain/s3/s3_checkpoint_saver_langchain.py.template +360 -0
  1226. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
  1227. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +4 -18
  1228. package/src/utils/agent-connection/files/py-core-runtime-config/session_context.py.template +2 -2
  1229. package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
  1230. package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +111 -0
  1231. package/src/utils/agent-connection/files/py-core-strands/base/tool_errors_strands.py.template +24 -0
  1232. 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
  1233. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
  1234. package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
  1235. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +88 -2
  1236. package/src/utils/agent-core-constructs/agent-core-constructs.js +227 -30
  1237. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  1238. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +273 -9
  1239. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +87 -0
  1240. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.ts.template +404 -0
  1241. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +624 -0
  1242. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
  1243. package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +288 -1
  1244. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +576 -0
  1245. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
  1246. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.tf.template +516 -0
  1247. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +163 -13
  1248. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
  1249. package/src/utils/api-constructs/api-constructs.d.ts +31 -3
  1250. package/src/utils/api-constructs/api-constructs.js +96 -32
  1251. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  1252. package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +24 -19
  1253. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +28 -20
  1254. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +26 -9
  1255. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +70 -0
  1256. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
  1257. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +56 -17
  1258. package/src/utils/api-constructs/files/cdk/core/api/trpc/trpc-utils.ts.template +1 -1
  1259. package/src/utils/api-constructs/files/cdk/core/api/utils/utils.ts.template +61 -7
  1260. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +356 -19
  1261. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +635 -14
  1262. package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
  1263. package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
  1264. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +65 -18
  1265. package/src/utils/api-constructs/open-api-metadata.d.ts +21 -4
  1266. package/src/utils/api-constructs/open-api-metadata.js +74 -39
  1267. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  1268. package/src/utils/api-constructs/trpc-operations-metadata.d.ts +21 -0
  1269. package/src/utils/api-constructs/trpc-operations-metadata.js +61 -0
  1270. package/src/utils/api-constructs/trpc-operations-metadata.js.map +1 -0
  1271. package/src/utils/ast/website.js +17 -19
  1272. package/src/utils/ast/website.js.map +1 -1
  1273. package/src/utils/ast.d.ts +47 -0
  1274. package/src/utils/ast.js +185 -96
  1275. package/src/utils/ast.js.map +1 -1
  1276. package/src/utils/base-tsconfig.d.ts +30 -0
  1277. package/src/utils/base-tsconfig.js +32 -0
  1278. package/src/utils/base-tsconfig.js.map +1 -0
  1279. package/src/utils/bundle/bundle.d.ts +6 -1
  1280. package/src/utils/bundle/bundle.js +70 -48
  1281. package/src/utils/bundle/bundle.js.map +1 -1
  1282. package/src/utils/commands.d.ts +14 -3
  1283. package/src/utils/commands.js +83 -28
  1284. package/src/utils/commands.js.map +1 -1
  1285. package/src/utils/config/index.d.ts +22 -6
  1286. package/src/utils/config/index.js +5 -4
  1287. package/src/utils/config/index.js.map +1 -1
  1288. package/src/utils/config/utils.d.ts +9 -3
  1289. package/src/utils/config/utils.js +56 -59
  1290. package/src/utils/config/utils.js.map +1 -1
  1291. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +16 -3
  1292. package/src/utils/connection/open-api/react.d.ts +31 -5
  1293. package/src/utils/connection/open-api/react.js +106 -86
  1294. package/src/utils/connection/open-api/react.js.map +1 -1
  1295. package/src/utils/containers.js +22 -23
  1296. package/src/utils/containers.js.map +1 -1
  1297. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.d.ts +38 -0
  1298. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js +95 -0
  1299. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js.map +1 -0
  1300. package/src/utils/dcr-proxy-constructs/files/cdk/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.ts.template +227 -0
  1301. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorization-server-metadata.ts.template +39 -0
  1302. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorize.ts.template +26 -0
  1303. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/mcp-proxy.ts.template +89 -0
  1304. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/protected-resource-metadata.ts.template +13 -0
  1305. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/register.ts.template +70 -0
  1306. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/token.ts.template +75 -0
  1307. package/src/utils/dcr-proxy-constructs/files/terraform/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.tf.template +414 -0
  1308. package/src/utils/declared-dependencies.d.ts +140 -0
  1309. package/src/utils/declared-dependencies.js +64 -0
  1310. package/src/utils/declared-dependencies.js.map +1 -0
  1311. package/src/utils/dependencies.d.ts +18 -0
  1312. package/src/utils/dependencies.js +206 -0
  1313. package/src/utils/dependencies.js.map +1 -0
  1314. package/src/utils/docker.d.ts +101 -0
  1315. package/src/utils/docker.js +135 -0
  1316. package/src/utils/docker.js.map +1 -0
  1317. package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +2 -2
  1318. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +39 -33
  1319. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  1320. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +18 -5
  1321. package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +24 -4
  1322. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +66 -18
  1323. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +46 -6
  1324. package/src/utils/files/common/constructs/src/core/cloudfront.ts.template +14 -0
  1325. package/src/utils/files/common/constructs/src/core/index.ts.template +5 -4
  1326. package/src/utils/files/common/constructs/src/index.ts.template +2 -2
  1327. package/src/utils/files/common/infra-config/src/index.ts.template +3 -3
  1328. package/src/utils/files/common/infra-config/src/resolve-stage.ts.template +2 -2
  1329. package/src/utils/files/common/infra-config/src/stages.config.ts.template +1 -1
  1330. package/src/{ts/dynamodb/files/scripts → utils/files/common/scripts/src/dynamodb}/create-local-table.ts.template +65 -31
  1331. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +13 -0
  1332. package/src/{ts/dynamodb/files/scripts → utils/files/common/scripts/src/dynamodb}/start-container.ts.template +29 -22
  1333. package/src/utils/files/common/scripts/src/infra/infra-deploy.ts.template +2 -0
  1334. package/src/utils/files/common/scripts/src/infra/infra-destroy.ts.template +2 -0
  1335. package/src/utils/files/common/scripts/src/infra/stage-credentials/cdk-command.ts.template +25 -0
  1336. package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/run.ts.template +3 -3
  1337. package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
  1338. package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
  1339. package/src/utils/files/common/scripts/src/rdb/shared/pull-image.ts.template +16 -0
  1340. package/src/utils/files/common/scripts/src/rdb/shared/start-container.ts.template +100 -0
  1341. package/src/utils/files/common/shadcn/readme/README.md.template +3 -3
  1342. package/src/utils/files/common/shadcn/src/index.ts.template +2 -2
  1343. package/src/utils/files/shadcn/components.json.template +1 -1
  1344. package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +63 -72
  1345. package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +3 -3
  1346. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +13 -7
  1347. package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
  1348. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +9 -4
  1349. package/src/utils/files/terraform/src/metrics/providers.tf.template +12 -0
  1350. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
  1351. package/src/utils/format.d.ts +44 -4
  1352. package/src/utils/format.js +323 -198
  1353. package/src/utils/format.js.map +1 -1
  1354. package/src/utils/fs.d.ts +24 -5
  1355. package/src/utils/fs.js +40 -15
  1356. package/src/utils/fs.js.map +1 -1
  1357. package/src/utils/function-constructs/files/cdk/app/lambda-functions/__nameKebabCase__.ts.template +1 -1
  1358. package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +6 -2
  1359. package/src/utils/function-constructs/function-constructs.d.ts +1 -1
  1360. package/src/utils/function-constructs/function-constructs.js +24 -27
  1361. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  1362. package/src/utils/generators.d.ts +33 -0
  1363. package/src/utils/generators.js +33 -20
  1364. package/src/utils/generators.js.map +1 -1
  1365. package/src/utils/git.js +19 -34
  1366. package/src/utils/git.js.map +1 -1
  1367. package/src/utils/iac-providers.js +5 -5
  1368. package/src/utils/iac-providers.js.map +1 -1
  1369. package/src/utils/iac.d.ts +2 -2
  1370. package/src/utils/iac.js +12 -14
  1371. package/src/utils/iac.js.map +1 -1
  1372. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +218 -30
  1373. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +32 -9
  1374. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +226 -25
  1375. package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +33 -0
  1376. package/src/utils/identity-constructs/identity-constructs.d.ts +11 -1
  1377. package/src/utils/identity-constructs/identity-constructs.js +52 -31
  1378. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  1379. package/src/utils/init.d.ts +73 -0
  1380. package/src/utils/init.js +300 -0
  1381. package/src/utils/init.js.map +1 -0
  1382. package/src/utils/install.d.ts +32 -0
  1383. package/src/utils/install.js +58 -0
  1384. package/src/utils/install.js.map +1 -0
  1385. package/src/utils/js.js +27 -20
  1386. package/src/utils/js.js.map +1 -1
  1387. package/src/utils/lambda-runtime-resolution.d.ts +53 -0
  1388. package/src/utils/lambda-runtime-resolution.js +83 -0
  1389. package/src/utils/lambda-runtime-resolution.js.map +1 -0
  1390. package/src/utils/mcp.d.ts +9 -0
  1391. package/src/utils/mcp.js +42 -41
  1392. package/src/utils/mcp.js.map +1 -1
  1393. package/src/utils/metrics.d.ts +1 -1
  1394. package/src/utils/metrics.js +30 -45
  1395. package/src/utils/metrics.js.map +1 -1
  1396. package/src/utils/migration-manifest.d.ts +58 -0
  1397. package/src/utils/migration-manifest.js +76 -0
  1398. package/src/utils/migration-manifest.js.map +1 -0
  1399. package/src/utils/migration-versions.d.ts +145 -0
  1400. package/src/utils/migration-versions.js +250 -0
  1401. package/src/utils/migration-versions.js.map +1 -0
  1402. package/src/utils/mock-project-graph.js +12 -13
  1403. package/src/utils/mock-project-graph.js.map +1 -1
  1404. package/src/utils/module-format.d.ts +25 -0
  1405. package/src/utils/module-format.js +45 -0
  1406. package/src/utils/module-format.js.map +1 -0
  1407. package/src/utils/names.d.ts +22 -0
  1408. package/src/utils/names.js +44 -48
  1409. package/src/utils/names.js.map +1 -1
  1410. package/src/utils/npm-scope.d.ts +0 -4
  1411. package/src/utils/npm-scope.js +7 -20
  1412. package/src/utils/npm-scope.js.map +1 -1
  1413. package/src/utils/nx.d.ts +91 -6
  1414. package/src/utils/nx.js +186 -74
  1415. package/src/utils/nx.js.map +1 -1
  1416. package/src/utils/nxlv-python.js +27 -15
  1417. package/src/utils/nxlv-python.js.map +1 -1
  1418. package/src/utils/object.js +5 -11
  1419. package/src/utils/object.js.map +1 -1
  1420. package/src/utils/open-api-codegen-target.d.ts +28 -0
  1421. package/src/utils/open-api-codegen-target.js +31 -0
  1422. package/src/utils/open-api-codegen-target.js.map +1 -0
  1423. package/src/utils/paths.js +11 -15
  1424. package/src/utils/paths.js.map +1 -1
  1425. package/src/utils/pkg-manager.d.ts +1 -1
  1426. package/src/utils/pkg-manager.js +4 -9
  1427. package/src/utils/pkg-manager.js.map +1 -1
  1428. package/src/utils/pnpm-workspace.d.ts +1 -12
  1429. package/src/utils/pnpm-workspace.js +16 -43
  1430. package/src/utils/pnpm-workspace.js.map +1 -1
  1431. package/src/utils/port.d.ts +6 -5
  1432. package/src/utils/port.js +31 -39
  1433. package/src/utils/port.js.map +1 -1
  1434. package/src/utils/project-package-json.d.ts +39 -0
  1435. package/src/utils/project-package-json.js +119 -0
  1436. package/src/utils/project-package-json.js.map +1 -0
  1437. package/src/utils/py.d.ts +18 -4
  1438. package/src/utils/py.js +64 -46
  1439. package/src/utils/py.js.map +1 -1
  1440. package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +72 -18
  1441. package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +130 -88
  1442. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +132 -66
  1443. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +78 -162
  1444. package/src/utils/rdb-constructs/rdb-constructs.d.ts +26 -3
  1445. package/src/utils/rdb-constructs/rdb-constructs.js +61 -33
  1446. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  1447. package/src/utils/ruff.d.ts +59 -0
  1448. package/src/utils/ruff.js +140 -0
  1449. package/src/utils/ruff.js.map +1 -0
  1450. package/src/utils/shared-constructs-constants.d.ts +68 -4
  1451. package/src/utils/shared-constructs-constants.js +68 -15
  1452. package/src/utils/shared-constructs-constants.js.map +1 -1
  1453. package/src/utils/shared-constructs.d.ts +5 -2
  1454. package/src/utils/shared-constructs.js +62 -67
  1455. package/src/utils/shared-constructs.js.map +1 -1
  1456. package/src/utils/shared-dynamodb-scripts.d.ts +18 -0
  1457. package/src/utils/shared-dynamodb-scripts.js +35 -0
  1458. package/src/utils/shared-dynamodb-scripts.js.map +1 -0
  1459. package/src/utils/shared-infra-config.js +31 -30
  1460. package/src/utils/shared-infra-config.js.map +1 -1
  1461. package/src/utils/shared-infra-scripts.d.ts +26 -0
  1462. package/src/utils/shared-infra-scripts.js +58 -0
  1463. package/src/utils/shared-infra-scripts.js.map +1 -0
  1464. package/src/utils/shared-rdb-scripts.d.ts +27 -0
  1465. package/src/utils/shared-rdb-scripts.js +59 -0
  1466. package/src/utils/shared-rdb-scripts.js.map +1 -0
  1467. package/src/utils/shared-scripts.d.ts +1 -4
  1468. package/src/utils/shared-scripts.js +12 -38
  1469. package/src/utils/shared-scripts.js.map +1 -1
  1470. package/src/utils/shared-shadcn.d.ts +26 -1
  1471. package/src/utils/shared-shadcn.js +93 -67
  1472. package/src/utils/shared-shadcn.js.map +1 -1
  1473. package/src/utils/smithy.d.ts +59 -0
  1474. package/src/utils/smithy.js +73 -0
  1475. package/src/utils/smithy.js.map +1 -0
  1476. package/src/utils/test-git.d.ts +39 -0
  1477. package/src/utils/test-git.js +117 -0
  1478. package/src/utils/test-git.js.map +1 -0
  1479. package/src/utils/test.d.ts +10 -0
  1480. package/src/utils/test.js +44 -25
  1481. package/src/utils/test.js.map +1 -1
  1482. package/src/utils/toml.d.ts +5 -0
  1483. package/src/utils/toml.js +17 -15
  1484. package/src/utils/toml.js.map +1 -1
  1485. package/src/utils/version-upgrade-migration/migration.d.ts +14 -0
  1486. package/src/utils/version-upgrade-migration/migration.js +16 -0
  1487. package/src/utils/version-upgrade-migration/migration.js.map +1 -0
  1488. package/src/utils/version-upgrade-migration/nx-package-updates.d.ts +45 -0
  1489. package/src/utils/version-upgrade-migration/nx-package-updates.js +50 -0
  1490. package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -0
  1491. package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +76 -0
  1492. package/src/utils/version-upgrade-migration/owned-dependencies.js +146 -0
  1493. package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -0
  1494. package/src/utils/version-upgrade-migration/register.d.ts +29 -0
  1495. package/src/utils/version-upgrade-migration/register.js +42 -0
  1496. package/src/utils/version-upgrade-migration/register.js.map +1 -0
  1497. package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +26 -0
  1498. package/src/utils/version-upgrade-migration/sync-embedded-versions.js +352 -0
  1499. package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -0
  1500. package/src/utils/version-upgrade-migration/sync-lambda-runtimes.d.ts +28 -0
  1501. package/src/utils/version-upgrade-migration/sync-lambda-runtimes.js +148 -0
  1502. package/src/utils/version-upgrade-migration/sync-lambda-runtimes.js.map +1 -0
  1503. package/src/utils/version-upgrade-migration/sync-metrics-version.d.ts +13 -0
  1504. package/src/utils/version-upgrade-migration/sync-metrics-version.js +33 -0
  1505. package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -0
  1506. package/src/utils/version-upgrade-migration/sync-python-language-version.d.ts +31 -0
  1507. package/src/utils/version-upgrade-migration/sync-python-language-version.js +110 -0
  1508. package/src/utils/version-upgrade-migration/sync-python-language-version.js.map +1 -0
  1509. package/src/utils/version-upgrade-migration/sync-vended-versions.d.ts +10 -0
  1510. package/src/utils/version-upgrade-migration/sync-vended-versions.js +547 -0
  1511. package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -0
  1512. package/src/utils/version-upgrade-migration/vended-upgrade.d.ts +14 -0
  1513. package/src/utils/version-upgrade-migration/vended-upgrade.js +40 -0
  1514. package/src/utils/version-upgrade-migration/vended-upgrade.js.map +1 -0
  1515. package/src/utils/versions.d.ts +300 -108
  1516. package/src/utils/versions.js +317 -121
  1517. package/src/utils/versions.js.map +1 -1
  1518. package/src/utils/website-constructs/files/cdk/app/static-websites/__websiteNameKebabCase__.ts.template +12 -3
  1519. package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +252 -49
  1520. package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +56 -1
  1521. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +205 -107
  1522. package/src/utils/website-constructs/website-constructs.d.ts +12 -1
  1523. package/src/utils/website-constructs/website-constructs.js +49 -30
  1524. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  1525. package/bin/aws-nx-mcp.d.ts +0 -2
  1526. package/bin/aws-nx-mcp.js +0 -17
  1527. package/bin/aws-nx-mcp.js.map +0 -1
  1528. package/sdk/connection.d.ts +0 -6
  1529. package/sdk/connection.js +0 -10
  1530. package/sdk/connection.js.map +0 -1
  1531. package/sdk/license.d.ts +0 -8
  1532. package/sdk/license.js +0 -13
  1533. package/sdk/license.js.map +0 -1
  1534. package/sdk/open-api.d.ts +0 -10
  1535. package/sdk/open-api.js +0 -15
  1536. package/sdk/open-api.js.map +0 -1
  1537. package/sdk/py.d.ts +0 -14
  1538. package/sdk/py.js +0 -18
  1539. package/sdk/py.js.map +0 -1
  1540. package/sdk/terraform.d.ts +0 -6
  1541. package/sdk/terraform.js +0 -11
  1542. package/sdk/terraform.js.map +0 -1
  1543. package/sdk/ts.d.ts +0 -29
  1544. package/sdk/ts.js +0 -47
  1545. package/sdk/ts.js.map +0 -1
  1546. package/sdk/utils/ast.js +0 -12
  1547. package/sdk/utils/ast.js.map +0 -1
  1548. package/sdk/utils/format.js +0 -10
  1549. package/sdk/utils/format.js.map +0 -1
  1550. package/sdk/utils/test.js +0 -10
  1551. package/sdk/utils/test.js.map +0 -1
  1552. package/src/connection/agent-serve-local.d.ts +0 -33
  1553. package/src/connection/agent-serve-local.js +0 -48
  1554. package/src/connection/agent-serve-local.js.map +0 -1
  1555. package/src/connection/serve-local.js +0 -41
  1556. package/src/connection/serve-local.js.map +0 -1
  1557. package/src/py/agent/__snapshots__/generator.spec.ts.snap +0 -771
  1558. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
  1559. package/src/py/agent/files/a2a/main.py.template +0 -54
  1560. package/src/py/agent/files/ag-ui/main.py.template +0 -37
  1561. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
  1562. package/src/py/agent/react-connection/serve-local.js +0 -30
  1563. package/src/py/agent/react-connection/serve-local.js.map +0 -1
  1564. package/src/py/agent/scripts/http/chat.ts.template +0 -38
  1565. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +0 -19
  1566. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +0 -19
  1567. package/src/ts/agent/react-connection/serve-local.d.ts +0 -13
  1568. package/src/ts/agent/react-connection/serve-local.js +0 -19
  1569. package/src/ts/agent/react-connection/serve-local.js.map +0 -1
  1570. package/src/ts/agent/scripts/http/chat.ts.template +0 -35
  1571. package/src/ts/dynamodb/files/scripts/pull-image.ts.template +0 -15
  1572. package/src/ts/dynamodb/files/src/constants.ts.template +0 -9
  1573. package/src/ts/dynamodb/files/src/gsi.ts.template +0 -14
  1574. package/src/ts/rdb/files/scripts/pull-image.ts.template +0 -15
  1575. package/src/ts/rdb/files/scripts/start-container.ts.template +0 -84
  1576. package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
  1577. package/src/ts/rdb/files/src/constants.ts.template +0 -8
  1578. package/src/ts/rdb/files/src/index.ts.template +0 -2
  1579. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
  1580. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
  1581. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
  1582. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
  1583. package/src/utils/files/common/scripts/src/infra-deploy.ts.template +0 -2
  1584. package/src/utils/files/common/scripts/src/infra-destroy.ts.template +0 -2
  1585. package/src/utils/files/common/scripts/src/stage-credentials/cdk-command.ts.template +0 -18
  1586. package/src/utils/files/terraform/scripts/reset-runtime-config.ts.template +0 -25
  1587. /package/src/py/agent/files/{common → langchain/common}/__init__.py.template +0 -0
  1588. /package/src/smithy/project/files/{src → service/src}/main.smithy.template +0 -0
  1589. /package/src/utils/agent-connection/files/{py-core-runtime-config/model_errors.py.template → py-core-strands/base/model_errors_strands.py.template} +0 -0
  1590. /package/src/utils/files/common/scripts/src/{index.ts.template → infra/index.ts.template} +0 -0
  1591. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/credentials.ts.template +0 -0
  1592. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
@@ -1,267 +1,30 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`ts#dynamodb generator > should generate scripts for finch engine > packages/my-table/scripts/create-local-table.ts 1`] = `
4
- "import {
5
- CreateTableCommand,
6
- DescribeTableCommand,
7
- DynamoDBClient,
8
- GlobalSecondaryIndexDescription,
9
- ResourceInUseException,
10
- UpdateTableCommand,
11
- } from '@aws-sdk/client-dynamodb';
12
- import { GLOBAL_SECONDARY_INDEXES } from '../src/gsi.js';
13
-
14
- const [tableName, port] = process.argv.slice(2);
15
- const endpoint = \`http://localhost:\${port}\`;
16
-
17
- const REQUEST_TIMEOUT_MS = 10_000;
18
- const timeoutSignal = () => AbortSignal.timeout(REQUEST_TIMEOUT_MS);
19
-
20
- const client = new DynamoDBClient({
21
- endpoint,
22
- region: 'us-east-1',
23
- credentials: {
24
- accessKeyId: 'accessKeyId',
25
- secretAccessKey: 'secretAccessKey',
3
+ exports[`ts#dynamodb generator > should generate scripts for finch engine 1`] = `
4
+ "{
5
+ "runtimeConfigKey": "MyTable",
6
+ "localDev": {
7
+ "port": 8000,
8
+ "tableName": "proj-my-table",
9
+ "image": "public.ecr.aws/aws-dynamodb-local/aws-dynamodb-local:latest",
10
+ "containerName": "proj-dynamodb",
11
+ "containerEngine": "finch"
26
12
  },
27
- });
28
-
29
- const waitForTableActive = async (
30
- waitClient: DynamoDBClient,
31
- waitTableName: string,
32
- ): Promise<void> => {
33
- for (;;) {
34
- const { Table } = await waitClient.send(
35
- new DescribeTableCommand({ TableName: waitTableName }),
36
- { abortSignal: timeoutSignal() },
37
- );
38
- const allActive =
39
- Table?.TableStatus === 'ACTIVE' &&
40
- (Table?.GlobalSecondaryIndexes ?? []).every(
41
- (g: GlobalSecondaryIndexDescription) => g.IndexStatus === 'ACTIVE',
42
- );
43
- if (allActive) return;
44
- await new Promise((resolve) => setTimeout(resolve, 500));
45
- }
46
- };
47
-
48
- const ensureTable = async (
49
- tblClient: DynamoDBClient,
50
- tblName: string,
51
- gsIs: { indexName: string; partitionKey: string; sortKey: string }[],
52
- ): Promise<void> => {
53
- const gsiAttributeDefinitions = gsIs.flatMap((gsi) => [
54
- { AttributeName: gsi.partitionKey, AttributeType: 'S' as const },
55
- { AttributeName: gsi.sortKey, AttributeType: 'S' as const },
56
- ]);
57
- const attributeDefinitions = [
58
- { AttributeName: 'pk', AttributeType: 'S' as const },
59
- { AttributeName: 'sk', AttributeType: 'S' as const },
60
- ...gsiAttributeDefinitions.filter(
61
- (a, i, arr) =>
62
- arr.findIndex((b) => b.AttributeName === a.AttributeName) === i,
63
- ),
64
- ];
65
- const globalSecondaryIndexes = gsIs.map((gsi) => ({
66
- IndexName: gsi.indexName,
67
- KeySchema: [
68
- { AttributeName: gsi.partitionKey, KeyType: 'HASH' as const },
69
- { AttributeName: gsi.sortKey, KeyType: 'RANGE' as const },
70
- ],
71
- Projection: { ProjectionType: 'ALL' as const },
72
- }));
73
-
74
- for (let attempt = 0; attempt < 30; attempt++) {
75
- try {
76
- // New table: create with all GSIs in one shot.
77
- await tblClient.send(
78
- new CreateTableCommand({
79
- TableName: tblName,
80
- AttributeDefinitions: attributeDefinitions,
81
- KeySchema: [
82
- { AttributeName: 'pk', KeyType: 'HASH' },
83
- { AttributeName: 'sk', KeyType: 'RANGE' },
84
- ],
85
- BillingMode: 'PAY_PER_REQUEST',
86
- ...(globalSecondaryIndexes.length > 0 && {
87
- GlobalSecondaryIndexes: globalSecondaryIndexes,
88
- }),
89
- }),
90
- { abortSignal: timeoutSignal() },
91
- );
92
- console.log(\`Created table: \${tblName}\`);
93
- for (const gsi of globalSecondaryIndexes) {
94
- console.log(\`Created GSI: \${gsi.IndexName}\`);
95
- }
96
- return;
97
- } catch (e) {
98
- // Table already exists: sync GSIs to match desired state.
99
- if (e instanceof ResourceInUseException) {
100
- const { Table } = await tblClient.send(
101
- new DescribeTableCommand({ TableName: tblName }),
102
- { abortSignal: timeoutSignal() },
103
- );
104
- const existingGSIs = Table?.GlobalSecondaryIndexes ?? [];
105
- const existingNames = new Set(
106
- existingGSIs.map(
107
- (g: GlobalSecondaryIndexDescription) => g.IndexName ?? '',
108
- ),
109
- );
110
- const desiredNames = new Set(gsIs.map((g) => g.indexName));
111
-
112
- // DynamoDB Local only allows one GSI to be created or deleted at a time.
113
- for (const existing of existingGSIs) {
114
- if (!existing.IndexName || desiredNames.has(existing.IndexName))
115
- continue;
116
- await tblClient.send(
117
- new UpdateTableCommand({
118
- TableName: tblName,
119
- GlobalSecondaryIndexUpdates: [
120
- { Delete: { IndexName: existing.IndexName } },
121
- ],
122
- }),
123
- { abortSignal: timeoutSignal() },
124
- );
125
- console.log(\`Deleted GSI: \${existing.IndexName}\`);
126
- await waitForTableActive(tblClient, tblName);
127
- }
128
-
129
- for (const gsi of gsIs) {
130
- if (existingNames.has(gsi.indexName)) continue;
131
- await tblClient.send(
132
- new UpdateTableCommand({
133
- TableName: tblName,
134
- AttributeDefinitions: [
135
- { AttributeName: gsi.partitionKey, AttributeType: 'S' },
136
- { AttributeName: gsi.sortKey, AttributeType: 'S' },
137
- ],
138
- GlobalSecondaryIndexUpdates: [
139
- {
140
- Create: {
141
- IndexName: gsi.indexName,
142
- KeySchema: [
143
- { AttributeName: gsi.partitionKey, KeyType: 'HASH' },
144
- { AttributeName: gsi.sortKey, KeyType: 'RANGE' },
145
- ],
146
- Projection: { ProjectionType: 'ALL' },
147
- },
148
- },
149
- ],
150
- }),
151
- { abortSignal: timeoutSignal() },
152
- );
153
- console.log(\`Created GSI: \${gsi.indexName}\`);
154
- await waitForTableActive(tblClient, tblName);
155
- }
156
- return;
13
+ "tableConfig": {
14
+ "globalSecondaryIndexes": [
15
+ {
16
+ "indexName": "gsi1pk-gsi1sk-index",
17
+ "partitionKey": "gsi1pk",
18
+ "sortKey": "gsi1sk"
19
+ },
20
+ {
21
+ "indexName": "gsi2pk-gsi2sk-index",
22
+ "partitionKey": "gsi2pk",
23
+ "sortKey": "gsi2sk"
157
24
  }
158
- if (attempt === 29) throw e;
159
- await new Promise((resolve) => setTimeout(resolve, 1000));
160
- }
161
- }
162
- };
163
-
164
- await ensureTable(client, tableName, GLOBAL_SECONDARY_INDEXES);
165
- "
166
- `;
167
-
168
- exports[`ts#dynamodb generator > should generate scripts for finch engine > packages/my-table/scripts/pull-image.ts 1`] = `
169
- "import { spawnSync } from 'child_process';
170
-
171
- const ENGINE = 'finch';
172
- const image = process.argv[2];
173
-
174
- const inspect = spawnSync(ENGINE, ['image', 'inspect', image], {
175
- stdio: 'ignore',
176
- });
177
-
178
- if (inspect.status !== 0) {
179
- const pull = spawnSync(ENGINE, ['pull', image], { stdio: 'inherit' });
180
- if (pull.status !== 0) {
181
- process.exit(pull.status ?? 1);
182
- }
183
- }
184
- "
185
- `;
186
-
187
- exports[`ts#dynamodb generator > should generate scripts for finch engine > packages/my-table/scripts/start-container.ts 1`] = `
188
- "import { spawn, spawnSync } from 'child_process';
189
-
190
- const ENGINE = 'finch';
191
-
192
- const [containerName, image, hostPort] = process.argv.slice(2);
193
-
194
- const containerExists = (): boolean =>
195
- spawnSync(ENGINE, ['container', 'inspect', containerName], {
196
- stdio: 'ignore',
197
- }).status === 0;
198
-
199
- const isRunning = (): boolean => {
200
- const result = spawnSync(
201
- ENGINE,
202
- ['container', 'inspect', '-f', '{{.State.Running}}', containerName],
203
- { encoding: 'utf-8' },
204
- );
205
- return result.status === 0 && result.stdout.trim() === 'true';
206
- };
207
-
208
- // Multiple dynamo table packages run serve-local in parallel sharing the same
209
- // container. All processes stream logs, but only the one that created the
210
- // container stops it on exit — others just detach.
211
- let created = false;
212
- let runRetries = 0;
213
-
214
- for (;;) {
215
- if (containerExists()) {
216
- if (!isRunning()) {
217
- // Another process may have started it between our inspect and start — container engine start
218
- // exits 0 even if the container is already running, so no special-casing needed.
219
- const start = spawnSync(ENGINE, ['start', containerName], {
220
- stdio: 'inherit',
221
- });
222
- if (start.status !== 0) process.exit(start.status ?? 1);
223
- }
224
- break;
225
- }
226
- const runArgs = (
227
- \`run --name \${containerName} -u root -w /home/dynamodblocal\` +
228
- \` -p \${hostPort}:\${hostPort} -v \${containerName}-data:/home/dynamodblocal/data\` +
229
- \` -d \${image} -jar DynamoDBLocal.jar -sharedDb -dbPath ./data -port \${hostPort} -optimizeDbBeforeStartup\`
230
- ).split(' ');
231
- const create = spawnSync(ENGINE, runArgs, { stdio: 'pipe' });
232
- if (create.status === 0) {
233
- created = true;
234
- break;
235
- }
236
- if (!containerExists() && ++runRetries > 3) {
237
- process.stderr.write(create.stderr);
238
- process.exit(create.status ?? 1);
25
+ ]
239
26
  }
240
27
  }
241
-
242
- const logs = spawn(ENGINE, ['logs', '-f', containerName], {
243
- stdio: ['ignore', 'inherit', 'inherit'],
244
- });
245
-
246
- let exiting = false;
247
-
248
- const cleanup = () => {
249
- if (exiting) return;
250
- exiting = true;
251
- if (created) {
252
- spawnSync(ENGINE, ['rm', '-f', containerName], { stdio: 'ignore' });
253
- }
254
- logs.kill();
255
- process.exit(0);
256
- };
257
-
258
- process.on('SIGTERM', cleanup);
259
- process.on('SIGINT', cleanup);
260
- process.on('SIGHUP', cleanup);
261
-
262
- logs.on('exit', (code) => {
263
- if (!exiting) process.exit(code ?? 0);
264
- });
265
28
  "
266
29
  `;
267
30
 
@@ -272,7 +35,7 @@ exports[`ts#dynamodb generator > should generate terraform modules when iac is t
272
35
  required_providers {
273
36
  aws = {
274
37
  source = "hashicorp/aws"
275
- version = "~> 6.0"
38
+ version = "6.62.0"
276
39
  }
277
40
  }
278
41
  }
@@ -300,8 +63,31 @@ variable "deletion_protection_enabled" {
300
63
  default = true
301
64
  }
302
65
 
66
+ variable "encryption" {
67
+ 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's docs."
68
+ type = string
69
+ default = "CUSTOMER_MANAGED"
70
+
71
+ validation {
72
+ condition = contains(["CUSTOMER_MANAGED", "AWS_MANAGED", "DEFAULT"], var.encryption)
73
+ error_message = "encryption must be one of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT."
74
+ }
75
+ }
76
+
77
+ variable "kms_key_arn" {
78
+ 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."
79
+ type = string
80
+ default = null
81
+ }
82
+
83
+ variable "create_kms_key" {
84
+ 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."
85
+ type = bool
86
+ default = true
87
+ }
88
+
303
89
  variable "enable_key_rotation" {
304
- description = "Whether to enable automatic key rotation on the KMS key used to encrypt the table."
90
+ 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."
305
91
  type = bool
306
92
  default = true
307
93
  }
@@ -321,15 +107,27 @@ locals {
321
107
  gsi_attribute_names = distinct(flatten([
322
108
  for gsi in var.global_secondary_indexes : [gsi.hash_key, gsi.range_key]
323
109
  ]))
110
+
111
+ create_table_key = var.encryption == "CUSTOMER_MANAGED" && var.create_kms_key
112
+ table_kms_key_arn = (
113
+ var.encryption == "CUSTOMER_MANAGED" ? (local.create_table_key ? aws_kms_key.table[0].arn : var.kms_key_arn) :
114
+ 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" :
115
+ null
116
+ )
324
117
  }
325
118
 
326
119
  data "aws_caller_identity" "current" {}
327
120
  data "aws_partition" "current" {}
121
+ data "aws_region" "current" {}
328
122
 
329
123
  resource "aws_kms_key" "table" {
124
+ count = local.create_table_key ? 1 : 0
125
+
330
126
  description = "KMS key for DynamoDB table \${var.name}"
331
127
  enable_key_rotation = var.enable_key_rotation
332
128
 
129
+ deletion_window_in_days = 30
130
+
333
131
  policy = jsonencode({
334
132
  Version = "2012-10-17"
335
133
  Statement = [
@@ -363,6 +161,7 @@ resource "aws_kms_key" "table" {
363
161
  }
364
162
 
365
163
  resource "aws_dynamodb_table" "table" {
164
+ #checkov:skip=CKV_AWS_119:Encryption is configurable via var.encryption; checkov cannot resolve the conditional server_side_encryption.enabled expression
366
165
  name = var.name
367
166
  billing_mode = var.billing_mode
368
167
  hash_key = "pk"
@@ -402,8 +201,12 @@ resource "aws_dynamodb_table" "table" {
402
201
  }
403
202
 
404
203
  server_side_encryption {
405
- enabled = true
406
- kms_key_arn = aws_kms_key.table.arn
204
+ enabled = var.encryption != "DEFAULT"
205
+ kms_key_arn = local.table_kms_key_arn
206
+ }
207
+
208
+ lifecycle {
209
+ prevent_destroy = true
407
210
  }
408
211
  }
409
212
 
@@ -418,8 +221,8 @@ output "table_arn" {
418
221
  }
419
222
 
420
223
  output "kms_key_arn" {
421
- description = "ARN of the KMS key used to encrypt the DynamoDB table."
422
- value = aws_kms_key.table.arn
224
+ description = "ARN of the KMS key used to encrypt the DynamoDB table, or null when using the AWS owned key (encryption = DEFAULT)."
225
+ value = local.table_kms_key_arn
423
226
  }
424
227
  "
425
228
  `;
@@ -429,7 +232,11 @@ exports[`ts#dynamodb generator > should generate terraform modules when iac is t
429
232
  required_providers {
430
233
  aws = {
431
234
  source = "hashicorp/aws"
432
- version = "~> 6.0"
235
+ version = "6.62.0"
236
+ }
237
+ random = {
238
+ source = "hashicorp/random"
239
+ version = "3.9.0"
433
240
  }
434
241
  }
435
242
  }
@@ -452,71 +259,128 @@ variable "deletion_protection_enabled" {
452
259
  default = true
453
260
  }
454
261
 
262
+ variable "encryption" {
263
+ 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's docs."
264
+ type = string
265
+ default = "CUSTOMER_MANAGED"
266
+
267
+ validation {
268
+ condition = contains(["CUSTOMER_MANAGED", "AWS_MANAGED", "DEFAULT"], var.encryption)
269
+ error_message = "encryption must be one of CUSTOMER_MANAGED, AWS_MANAGED or DEFAULT."
270
+ }
271
+ }
272
+
273
+ variable "kms_key_arn" {
274
+ 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."
275
+ type = string
276
+ default = null
277
+ }
278
+
279
+ variable "create_kms_key" {
280
+ 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."
281
+ type = bool
282
+ default = true
283
+ }
284
+
455
285
  variable "enable_key_rotation" {
456
- description = "Whether to enable automatic key rotation on the KMS key used to encrypt the table."
286
+ 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."
457
287
  type = bool
458
288
  default = true
459
289
  }
460
290
 
291
+ resource "random_string" "suffix" {
292
+ length = 8
293
+ special = false
294
+ upper = false
295
+ }
296
+
297
+ locals {
298
+ dynamodb_config = jsondecode(file("\${path.module}/../../../../../../../packages/my-table/config.json"))
299
+ global_secondary_indexes = [for gsi in local.dynamodb_config.tableConfig.globalSecondaryIndexes : {
300
+ name = gsi.indexName
301
+ hash_key = gsi.partitionKey
302
+ range_key = try(gsi.sortKey, null)
303
+ projection_type = "ALL"
304
+ }]
305
+ }
306
+
461
307
  module "dynamodb_table" {
462
308
  source = "../../../core/dynamodb"
463
- name = "proj-my-table"
309
+ name = "proj-my-table-\${random_string.suffix.result}"
464
310
  billing_mode = var.billing_mode
465
311
  point_in_time_recovery_enabled = var.point_in_time_recovery_enabled
466
312
  deletion_protection_enabled = var.deletion_protection_enabled
313
+ encryption = var.encryption
314
+ kms_key_arn = var.kms_key_arn
315
+ create_kms_key = var.create_kms_key
467
316
  enable_key_rotation = var.enable_key_rotation
468
- global_secondary_indexes = [
469
- {
470
- name = "gsi1pk-gsi1sk-index"
471
- hash_key = "gsi1pk"
472
- range_key = "gsi1sk"
473
- projection_type = "ALL"
474
- },
475
- {
476
- name = "gsi2pk-gsi2sk-index"
477
- hash_key = "gsi2pk"
478
- range_key = "gsi2sk"
479
- projection_type = "ALL"
480
- },
481
- ]
317
+ global_secondary_indexes = local.global_secondary_indexes
482
318
  }
483
319
 
484
320
  module "add_to_runtime_config" {
485
321
  source = "../../../core/runtime-config/entry"
486
322
 
487
323
  namespace = "dynamodb"
488
- key = "MyTable"
324
+ key = local.dynamodb_config.runtimeConfigKey
489
325
  value = {
490
326
  tableName = module.dynamodb_table.table_name
491
327
  }
492
328
  }
329
+
330
+ output "table_name" {
331
+ description = "Name of the DynamoDB table"
332
+ value = module.dynamodb_table.table_name
333
+ }
334
+
335
+ output "table_arn" {
336
+ description = "ARN of the DynamoDB table, for use in IAM policies granting access to the table. Suffix with /index/* to cover its global secondary indexes."
337
+ value = module.dynamodb_table.table_arn
338
+ }
339
+
340
+ output "kms_key_arn" {
341
+ description = "ARN of the KMS key used to encrypt the DynamoDB table, for use in IAM policies granting access to the table. Null when using the AWS owned key (encryption = DEFAULT)."
342
+ value = module.dynamodb_table.kms_key_arn
343
+ }
493
344
  "
494
345
  `;
495
346
 
496
- exports[`ts#dynamodb generator > should generate the dynamodb project > packages/my-table/scripts/create-local-table.ts 1`] = `
347
+ exports[`ts#dynamodb generator > should generate the dynamodb project > packages/common/scripts/src/dynamodb/create-local-table.ts 1`] = `
497
348
  "import {
349
+ BillingMode,
498
350
  CreateTableCommand,
499
351
  DescribeTableCommand,
500
352
  DynamoDBClient,
501
353
  GlobalSecondaryIndexDescription,
354
+ IndexStatus,
355
+ KeyType,
356
+ ProjectionType,
502
357
  ResourceInUseException,
358
+ ScalarAttributeType,
359
+ TableStatus,
503
360
  UpdateTableCommand,
504
361
  } from '@aws-sdk/client-dynamodb';
505
- import { GLOBAL_SECONDARY_INDEXES } from '../src/gsi.js';
506
-
507
- const [tableName, port] = process.argv.slice(2);
508
- const endpoint = \`http://localhost:\${port}\`;
362
+ import { readFileSync } from 'fs';
363
+
364
+ const {
365
+ localDev: { port, tableName },
366
+ tableConfig: { globalSecondaryIndexes },
367
+ } = JSON.parse(readFileSync('config.json', 'utf-8')) as {
368
+ localDev: { port: number; tableName: string };
369
+ tableConfig: {
370
+ globalSecondaryIndexes: {
371
+ indexName: string;
372
+ partitionKey: string;
373
+ sortKey?: string;
374
+ }[];
375
+ };
376
+ };
509
377
 
510
- const REQUEST_TIMEOUT_MS = 10_000;
511
- const timeoutSignal = () => AbortSignal.timeout(REQUEST_TIMEOUT_MS);
378
+ const timeoutSignal = () => AbortSignal.timeout(10000);
512
379
 
513
380
  const client = new DynamoDBClient({
514
- endpoint,
381
+ endpoint: \`http://localhost:\${port}\`,
515
382
  region: 'us-east-1',
516
- credentials: {
517
- accessKeyId: 'accessKeyId',
518
- secretAccessKey: 'secretAccessKey',
519
- },
383
+ credentials: { accessKeyId: 'UNUSED', secretAccessKey: 'UNUSED' },
520
384
  });
521
385
 
522
386
  const waitForTableActive = async (
@@ -529,9 +393,10 @@ const waitForTableActive = async (
529
393
  { abortSignal: timeoutSignal() },
530
394
  );
531
395
  const allActive =
532
- Table?.TableStatus === 'ACTIVE' &&
396
+ Table?.TableStatus === TableStatus.ACTIVE &&
533
397
  (Table?.GlobalSecondaryIndexes ?? []).every(
534
- (g: GlobalSecondaryIndexDescription) => g.IndexStatus === 'ACTIVE',
398
+ (g: GlobalSecondaryIndexDescription) =>
399
+ g.IndexStatus === IndexStatus.ACTIVE,
535
400
  );
536
401
  if (allActive) return;
537
402
  await new Promise((resolve) => setTimeout(resolve, 500));
@@ -541,15 +406,17 @@ const waitForTableActive = async (
541
406
  const ensureTable = async (
542
407
  tblClient: DynamoDBClient,
543
408
  tblName: string,
544
- gsIs: { indexName: string; partitionKey: string; sortKey: string }[],
409
+ gsIs: { indexName: string; partitionKey: string; sortKey?: string }[],
545
410
  ): Promise<void> => {
546
411
  const gsiAttributeDefinitions = gsIs.flatMap((gsi) => [
547
- { AttributeName: gsi.partitionKey, AttributeType: 'S' as const },
548
- { AttributeName: gsi.sortKey, AttributeType: 'S' as const },
412
+ { AttributeName: gsi.partitionKey, AttributeType: ScalarAttributeType.S },
413
+ ...(gsi.sortKey
414
+ ? [{ AttributeName: gsi.sortKey, AttributeType: ScalarAttributeType.S }]
415
+ : []),
549
416
  ]);
550
417
  const attributeDefinitions = [
551
- { AttributeName: 'pk', AttributeType: 'S' as const },
552
- { AttributeName: 'sk', AttributeType: 'S' as const },
418
+ { AttributeName: 'pk', AttributeType: ScalarAttributeType.S },
419
+ { AttributeName: 'sk', AttributeType: ScalarAttributeType.S },
553
420
  ...gsiAttributeDefinitions.filter(
554
421
  (a, i, arr) =>
555
422
  arr.findIndex((b) => b.AttributeName === a.AttributeName) === i,
@@ -558,10 +425,12 @@ const ensureTable = async (
558
425
  const globalSecondaryIndexes = gsIs.map((gsi) => ({
559
426
  IndexName: gsi.indexName,
560
427
  KeySchema: [
561
- { AttributeName: gsi.partitionKey, KeyType: 'HASH' as const },
562
- { AttributeName: gsi.sortKey, KeyType: 'RANGE' as const },
428
+ { AttributeName: gsi.partitionKey, KeyType: KeyType.HASH },
429
+ ...(gsi.sortKey
430
+ ? [{ AttributeName: gsi.sortKey, KeyType: KeyType.RANGE }]
431
+ : []),
563
432
  ],
564
- Projection: { ProjectionType: 'ALL' as const },
433
+ Projection: { ProjectionType: ProjectionType.ALL },
565
434
  }));
566
435
 
567
436
  for (let attempt = 0; attempt < 30; attempt++) {
@@ -572,10 +441,10 @@ const ensureTable = async (
572
441
  TableName: tblName,
573
442
  AttributeDefinitions: attributeDefinitions,
574
443
  KeySchema: [
575
- { AttributeName: 'pk', KeyType: 'HASH' },
576
- { AttributeName: 'sk', KeyType: 'RANGE' },
444
+ { AttributeName: 'pk', KeyType: KeyType.HASH },
445
+ { AttributeName: 'sk', KeyType: KeyType.RANGE },
577
446
  ],
578
- BillingMode: 'PAY_PER_REQUEST',
447
+ BillingMode: BillingMode.PAY_PER_REQUEST,
579
448
  ...(globalSecondaryIndexes.length > 0 && {
580
449
  GlobalSecondaryIndexes: globalSecondaryIndexes,
581
450
  }),
@@ -625,18 +494,38 @@ const ensureTable = async (
625
494
  new UpdateTableCommand({
626
495
  TableName: tblName,
627
496
  AttributeDefinitions: [
628
- { AttributeName: gsi.partitionKey, AttributeType: 'S' },
629
- { AttributeName: gsi.sortKey, AttributeType: 'S' },
497
+ {
498
+ AttributeName: gsi.partitionKey,
499
+ AttributeType: ScalarAttributeType.S,
500
+ },
501
+ ...(gsi.sortKey
502
+ ? [
503
+ {
504
+ AttributeName: gsi.sortKey,
505
+ AttributeType: ScalarAttributeType.S,
506
+ },
507
+ ]
508
+ : []),
630
509
  ],
631
510
  GlobalSecondaryIndexUpdates: [
632
511
  {
633
512
  Create: {
634
513
  IndexName: gsi.indexName,
635
514
  KeySchema: [
636
- { AttributeName: gsi.partitionKey, KeyType: 'HASH' },
637
- { AttributeName: gsi.sortKey, KeyType: 'RANGE' },
515
+ {
516
+ AttributeName: gsi.partitionKey,
517
+ KeyType: KeyType.HASH,
518
+ },
519
+ ...(gsi.sortKey
520
+ ? [
521
+ {
522
+ AttributeName: gsi.sortKey,
523
+ KeyType: KeyType.RANGE,
524
+ },
525
+ ]
526
+ : []),
638
527
  ],
639
- Projection: { ProjectionType: 'ALL' },
528
+ Projection: { ProjectionType: ProjectionType.ALL },
640
529
  },
641
530
  },
642
531
  ],
@@ -654,22 +543,25 @@ const ensureTable = async (
654
543
  }
655
544
  };
656
545
 
657
- await ensureTable(client, tableName, GLOBAL_SECONDARY_INDEXES);
546
+ await ensureTable(client, tableName, globalSecondaryIndexes);
658
547
  "
659
548
  `;
660
549
 
661
- exports[`ts#dynamodb generator > should generate the dynamodb project > packages/my-table/scripts/pull-image.ts 1`] = `
550
+ exports[`ts#dynamodb generator > should generate the dynamodb project > packages/common/scripts/src/dynamodb/pull-image.ts 1`] = `
662
551
  "import { spawnSync } from 'child_process';
552
+ import { readFileSync } from 'fs';
663
553
 
664
- const ENGINE = 'docker';
665
- const image = process.argv[2];
554
+ const { containerEngine, image } = JSON.parse(
555
+ readFileSync('config.json', 'utf-8'),
556
+ ).localDev;
666
557
 
667
- const inspect = spawnSync(ENGINE, ['image', 'inspect', image], {
558
+ const inspect = spawnSync(containerEngine, ['image', 'inspect', image], {
668
559
  stdio: 'ignore',
669
560
  });
670
-
671
561
  if (inspect.status !== 0) {
672
- const pull = spawnSync(ENGINE, ['pull', image], { stdio: 'inherit' });
562
+ const pull = spawnSync(containerEngine, ['pull', image], {
563
+ stdio: 'inherit',
564
+ });
673
565
  if (pull.status !== 0) {
674
566
  process.exit(pull.status ?? 1);
675
567
  }
@@ -677,28 +569,29 @@ if (inspect.status !== 0) {
677
569
  "
678
570
  `;
679
571
 
680
- exports[`ts#dynamodb generator > should generate the dynamodb project > packages/my-table/scripts/start-container.ts 1`] = `
572
+ exports[`ts#dynamodb generator > should generate the dynamodb project > packages/common/scripts/src/dynamodb/start-container.ts 1`] = `
681
573
  "import { spawn, spawnSync } from 'child_process';
574
+ import { readFileSync } from 'fs';
682
575
 
683
- const ENGINE = 'docker';
684
-
685
- const [containerName, image, hostPort] = process.argv.slice(2);
576
+ const { containerEngine, containerName, image, port } = JSON.parse(
577
+ readFileSync('config.json', 'utf-8'),
578
+ ).localDev;
686
579
 
687
580
  const containerExists = (): boolean =>
688
- spawnSync(ENGINE, ['container', 'inspect', containerName], {
581
+ spawnSync(containerEngine, ['container', 'inspect', containerName], {
689
582
  stdio: 'ignore',
690
583
  }).status === 0;
691
584
 
692
585
  const isRunning = (): boolean => {
693
586
  const result = spawnSync(
694
- ENGINE,
587
+ containerEngine,
695
588
  ['container', 'inspect', '-f', '{{.State.Running}}', containerName],
696
589
  { encoding: 'utf-8' },
697
590
  );
698
591
  return result.status === 0 && result.stdout.trim() === 'true';
699
592
  };
700
593
 
701
- // Multiple dynamo table packages run serve-local in parallel sharing the same
594
+ // Multiple dynamo table packages run dev in parallel sharing the same
702
595
  // container. All processes stream logs, but only the one that created the
703
596
  // container stops it on exit — others just detach.
704
597
  let created = false;
@@ -709,19 +602,37 @@ for (;;) {
709
602
  if (!isRunning()) {
710
603
  // Another process may have started it between our inspect and start — container engine start
711
604
  // exits 0 even if the container is already running, so no special-casing needed.
712
- const start = spawnSync(ENGINE, ['start', containerName], {
605
+ const start = spawnSync(containerEngine, ['start', containerName], {
713
606
  stdio: 'inherit',
714
607
  });
715
608
  if (start.status !== 0) process.exit(start.status ?? 1);
716
609
  }
717
610
  break;
718
611
  }
719
- const runArgs = (
720
- \`run --rm --name \${containerName} -u root -w /home/dynamodblocal\` +
721
- \` -p \${hostPort}:\${hostPort} -v \${containerName}-data:/home/dynamodblocal/data\` +
722
- \` -d \${image} -jar DynamoDBLocal.jar -sharedDb -dbPath ./data -port \${hostPort} -optimizeDbBeforeStartup\`
723
- ).split(' ');
724
- const create = spawnSync(ENGINE, runArgs, { stdio: 'pipe' });
612
+ const runArgs = [
613
+ 'run',
614
+ ...(containerEngine === 'docker' ? ['--rm'] : []),
615
+ '--name',
616
+ containerName,
617
+ '-u',
618
+ 'root',
619
+ '-w',
620
+ '/home/dynamodblocal',
621
+ \`-p\`,
622
+ \`\${port}:\${port}\`,
623
+ '-v',
624
+ \`\${containerName}-data:/home/dynamodblocal/data\`,
625
+ '-d',
626
+ image,
627
+ '-jar',
628
+ 'DynamoDBLocal.jar',
629
+ '-sharedDb',
630
+ '-dbPath',
631
+ './data',
632
+ '-port',
633
+ \`\${port}\`,
634
+ ];
635
+ const create = spawnSync(containerEngine, runArgs, { stdio: 'pipe' });
725
636
  if (create.status === 0) {
726
637
  created = true;
727
638
  break;
@@ -732,7 +643,7 @@ for (;;) {
732
643
  }
733
644
  }
734
645
 
735
- const logs = spawn(ENGINE, ['logs', '-f', containerName], {
646
+ const logs = spawn(containerEngine, ['logs', '-f', containerName], {
736
647
  stdio: ['ignore', 'inherit', 'inherit'],
737
648
  });
738
649
 
@@ -742,7 +653,13 @@ const cleanup = () => {
742
653
  if (exiting) return;
743
654
  exiting = true;
744
655
  if (created) {
745
- spawnSync(ENGINE, ['stop', containerName], { stdio: 'ignore' });
656
+ if (containerEngine === 'docker') {
657
+ spawnSync(containerEngine, ['stop', containerName], { stdio: 'ignore' });
658
+ } else {
659
+ spawnSync(containerEngine, ['rm', '-f', containerName], {
660
+ stdio: 'ignore',
661
+ });
662
+ }
746
663
  }
747
664
  logs.kill();
748
665
  process.exit(0);
@@ -752,38 +669,40 @@ process.on('SIGTERM', cleanup);
752
669
  process.on('SIGINT', cleanup);
753
670
  process.on('SIGHUP', cleanup);
754
671
 
755
- logs.on('exit', (code) => {
756
- if (!exiting) process.exit(code ?? 0);
757
- });
672
+ logs.on('exit', cleanup);
758
673
  "
759
674
  `;
760
675
 
761
676
  exports[`ts#dynamodb generator > should generate the dynamodb project > packages/my-table/src/client.ts 1`] = `
762
677
  "import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
763
678
  import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
764
- import {
765
- PACKAGE_NAME,
766
- LOCAL_ACCESS_KEY_ID,
767
- LOCAL_ENDPOINT,
768
- LOCAL_REGION,
769
- LOCAL_SECRET_ACCESS_KEY,
770
- LOCAL_TABLE_NAME,
771
- } from './constants.js';
679
+ import { readFileSync } from 'fs';
680
+ import { join, dirname } from 'path';
681
+ import { fileURLToPath } from 'url';
682
+
683
+ // Generated: must match runtimeConfigKey in config.json
684
+ const runtimeConfigKey = 'MyTable';
685
+
686
+ const __dirname = dirname(fileURLToPath(import.meta.url));
687
+ // config.json is only present in local dev (not included in the deployed bundle); guard with LOCAL_DEV check
688
+ const localDev = () =>
689
+ JSON.parse(readFileSync(join(__dirname, '../config.json'), 'utf-8')).localDev;
772
690
 
773
691
  let _client: DynamoDBClient | undefined;
774
692
 
775
693
  export const getDynamoDBClient = (): DynamoDBClient => {
776
- _client ??=
777
- process.env.SERVE_LOCAL === 'true'
778
- ? new DynamoDBClient({
779
- endpoint: LOCAL_ENDPOINT,
780
- region: LOCAL_REGION,
781
- credentials: {
782
- accessKeyId: LOCAL_ACCESS_KEY_ID,
783
- secretAccessKey: LOCAL_SECRET_ACCESS_KEY,
784
- },
785
- })
786
- : new DynamoDBClient({});
694
+ if (!_client) {
695
+ if (process.env.LOCAL_DEV === 'true') {
696
+ const { port } = localDev();
697
+ _client = new DynamoDBClient({
698
+ endpoint: \`http://localhost:\${port}\`,
699
+ region: 'us-east-1',
700
+ credentials: { accessKeyId: 'UNUSED', secretAccessKey: 'UNUSED' },
701
+ });
702
+ } else {
703
+ _client = new DynamoDBClient({});
704
+ }
705
+ }
787
706
  return _client;
788
707
  };
789
708
 
@@ -794,8 +713,9 @@ type DynamoDBConfig = {
794
713
  let _tableName: string | undefined;
795
714
 
796
715
  export const resolveTableName = async (): Promise<string> => {
797
- if (process.env.SERVE_LOCAL === 'true') {
798
- return LOCAL_TABLE_NAME;
716
+ if (process.env.LOCAL_DEV === 'true') {
717
+ const { tableName } = localDev();
718
+ return tableName;
799
719
  }
800
720
  if (_tableName === undefined) {
801
721
  const appId = process.env.RUNTIME_CONFIG_APP_ID;
@@ -809,7 +729,7 @@ export const resolveTableName = async (): Promise<string> => {
809
729
  environment: 'default',
810
730
  transform: 'json',
811
731
  });
812
- const tableName = config?.[PACKAGE_NAME]?.tableName;
732
+ const tableName = config?.[runtimeConfigKey]?.tableName;
813
733
  if (!tableName) {
814
734
  throw new Error('Could not resolve table name from runtime config');
815
735
  }
@@ -820,19 +740,6 @@ export const resolveTableName = async (): Promise<string> => {
820
740
  "
821
741
  `;
822
742
 
823
- exports[`ts#dynamodb generator > should generate the dynamodb project > packages/my-table/src/constants.ts 1`] = `
824
- "export const PACKAGE_NAME = 'MyTable';
825
-
826
- // Local development connection details (used when SERVE_LOCAL=true, see serve-local Nx target)
827
- export const LOCAL_PORT = 8000;
828
- export const LOCAL_REGION = 'us-east-1';
829
- export const LOCAL_ACCESS_KEY_ID = 'accessKeyId';
830
- export const LOCAL_SECRET_ACCESS_KEY = 'secretAccessKey';
831
- export const LOCAL_ENDPOINT = \`http://localhost:\${LOCAL_PORT}\`;
832
- export const LOCAL_TABLE_NAME = 'proj-my-table';
833
- "
834
- `;
835
-
836
743
  exports[`ts#dynamodb generator > should generate the dynamodb project > packages/my-table/src/entities/example.ts 1`] = `
837
744
  "import { Entity } from 'electrodb';
838
745
  import { getDynamoDBClient, resolveTableName } from '../client.js';
@@ -889,35 +796,8 @@ exports[`ts#dynamodb generator > should generate the dynamodb project > packages
889
796
  "
890
797
  `;
891
798
 
892
- exports[`ts#dynamodb generator > should generate the dynamodb project > packages/my-table/src/gsi.ts 1`] = `
893
- "// GSIs to synchronize on the local table at startup and provision in infrastructure.
894
- // ElectroDB names GSI keys gsi{n}pk / gsi{n}sk — add one entry per index defined in your entities.
895
- export const GLOBAL_SECONDARY_INDEXES = [
896
- {
897
- indexName: 'gsi1pk-gsi1sk-index',
898
- partitionKey: 'gsi1pk',
899
- sortKey: 'gsi1sk',
900
- },
901
- {
902
- indexName: 'gsi2pk-gsi2sk-index',
903
- partitionKey: 'gsi2pk',
904
- sortKey: 'gsi2sk',
905
- },
906
- ];
907
- "
908
- `;
909
-
910
799
  exports[`ts#dynamodb generator > should generate the dynamodb project > packages/my-table/src/index.ts 1`] = `
911
- "export {
912
- PACKAGE_NAME,
913
- LOCAL_ACCESS_KEY_ID,
914
- LOCAL_ENDPOINT,
915
- LOCAL_REGION,
916
- LOCAL_SECRET_ACCESS_KEY,
917
- LOCAL_TABLE_NAME,
918
- } from './constants.js';
919
- export { getDynamoDBClient, resolveTableName } from './client.js';
920
- export { GLOBAL_SECONDARY_INDEXES } from './gsi.js';
800
+ "export { getDynamoDBClient, resolveTableName } from './client.js';
921
801
  export * from './entities/index.js';
922
802
  "
923
803
  `;
@@ -933,7 +813,7 @@ import {
933
813
  } from 'aws-cdk-lib/aws-dynamodb';
934
814
  import { RemovalPolicy } from 'aws-cdk-lib';
935
815
  import { Grant, IGrantable } from 'aws-cdk-lib/aws-iam';
936
- import { Key } from 'aws-cdk-lib/aws-kms';
816
+ import { IKey, Key } from 'aws-cdk-lib/aws-kms';
937
817
  import { RuntimeConfig } from './runtime-config.js';
938
818
 
939
819
  type _DynamoDBTableProps = Omit<
@@ -953,8 +833,23 @@ export interface DynamoDBTableProps extends _DynamoDBTableProps {
953
833
  */
954
834
  readonly runtimeConfigKey: string;
955
835
 
836
+ /**
837
+ * Server-side encryption for the table.
838
+ *
839
+ * @default TableEncryption.CUSTOMER_MANAGED
840
+ */
841
+ readonly encryption?: TableEncryption;
842
+
843
+ /**
844
+ * KMS key used to encrypt the table. Only used when \`encryption\` is
845
+ * \`TableEncryption.CUSTOMER_MANAGED\`. When not provided, a new key is created.
846
+ */
847
+ readonly encryptionKey?: IKey;
848
+
956
849
  /**
957
850
  * Whether to enable automatic key rotation on the KMS key used to encrypt the table.
851
+ * Only applies when \`encryption\` is \`TableEncryption.CUSTOMER_MANAGED\` and no
852
+ * \`encryptionKey\` is supplied.
958
853
  *
959
854
  * @default true
960
855
  */
@@ -974,13 +869,19 @@ export abstract class DynamoDBTable extends Construct {
974
869
  pointInTimeRecoverySpecification = { pointInTimeRecoveryEnabled: true },
975
870
  deletionProtection = true,
976
871
  removalPolicy = RemovalPolicy.RETAIN,
872
+ encryption = TableEncryption.CUSTOMER_MANAGED,
873
+ encryptionKey,
977
874
  enableKeyRotation = true,
978
875
  ...rest
979
876
  }: DynamoDBTableProps,
980
877
  ) {
981
878
  super(scope, id);
982
879
 
983
- const key = new Key(this, 'EncryptionKey', { enableKeyRotation });
880
+ const key: IKey | undefined =
881
+ encryption === TableEncryption.CUSTOMER_MANAGED
882
+ ? (encryptionKey ??
883
+ new Key(this, 'EncryptionKey', { enableKeyRotation }))
884
+ : undefined;
984
885
 
985
886
  this.table = new Table(this, runtimeConfigKey, {
986
887
  ...rest,
@@ -991,7 +892,7 @@ export abstract class DynamoDBTable extends Construct {
991
892
  pointInTimeRecoverySpecification,
992
893
  deletionProtection,
993
894
  encryptionKey: key,
994
- encryption: TableEncryption.CUSTOMER_MANAGED,
895
+ encryption,
995
896
  removalPolicy,
996
897
  });
997
898
 
@@ -1036,9 +937,31 @@ export abstract class DynamoDBTable extends Construct {
1036
937
 
1037
938
  exports[`ts#dynamodb generator > should generate the dynamodb project 2`] = `
1038
939
  "import { Construct } from 'constructs';
1039
- import { PACKAGE_NAME, GLOBAL_SECONDARY_INDEXES } from ':proj/my-table';
1040
940
  import { AttributeType, ProjectionType } from 'aws-cdk-lib/aws-dynamodb';
1041
941
  import { DynamoDBTable, DynamoDBTableProps } from '../../core/dynamodb.js';
942
+ import { findWorkspaceRoot } from '../../core/workspace.js';
943
+ import { readFileSync } from 'fs';
944
+ import { join } from 'path';
945
+ import { fileURLToPath } from 'url';
946
+
947
+ const { runtimeConfigKey, tableConfig } = JSON.parse(
948
+ readFileSync(
949
+ join(
950
+ findWorkspaceRoot(fileURLToPath(new URL(import.meta.url))),
951
+ 'packages/my-table/config.json',
952
+ ),
953
+ 'utf-8',
954
+ ),
955
+ ) as {
956
+ runtimeConfigKey: string;
957
+ tableConfig: {
958
+ globalSecondaryIndexes: {
959
+ indexName: string;
960
+ partitionKey: string;
961
+ sortKey?: string;
962
+ }[];
963
+ };
964
+ };
1042
965
 
1043
966
  export type MyTableProps = Omit<DynamoDBTableProps, 'runtimeConfigKey'>;
1044
967
 
@@ -1046,14 +969,16 @@ export class MyTable extends DynamoDBTable {
1046
969
  constructor(scope: Construct, id: string, props?: MyTableProps) {
1047
970
  super(scope, id, {
1048
971
  ...props,
1049
- runtimeConfigKey: PACKAGE_NAME,
972
+ runtimeConfigKey,
1050
973
  });
1051
974
 
1052
- for (const gsi of GLOBAL_SECONDARY_INDEXES) {
975
+ for (const gsi of tableConfig.globalSecondaryIndexes) {
1053
976
  this.table.addGlobalSecondaryIndex({
1054
977
  indexName: gsi.indexName,
1055
978
  partitionKey: { name: gsi.partitionKey, type: AttributeType.STRING },
1056
- sortKey: { name: gsi.sortKey, type: AttributeType.STRING },
979
+ ...(gsi.sortKey && {
980
+ sortKey: { name: gsi.sortKey, type: AttributeType.STRING },
981
+ }),
1057
982
  projectionType: ProjectionType.ALL,
1058
983
  });
1059
984
  }
@@ -1072,30 +997,43 @@ exports[`ts#dynamodb generator > should generate the dynamodb project 4`] = `
1072
997
  "
1073
998
  `;
1074
999
 
1075
- exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/my-table/scripts/create-local-table.ts 1`] = `
1000
+ exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/common/scripts/src/dynamodb/create-local-table.ts 1`] = `
1076
1001
  "import {
1002
+ BillingMode,
1077
1003
  CreateTableCommand,
1078
1004
  DescribeTableCommand,
1079
1005
  DynamoDBClient,
1080
1006
  GlobalSecondaryIndexDescription,
1007
+ IndexStatus,
1008
+ KeyType,
1009
+ ProjectionType,
1081
1010
  ResourceInUseException,
1011
+ ScalarAttributeType,
1012
+ TableStatus,
1082
1013
  UpdateTableCommand,
1083
1014
  } from '@aws-sdk/client-dynamodb';
1084
- import { GLOBAL_SECONDARY_INDEXES } from '../src/gsi.js';
1085
-
1086
- const [tableName, port] = process.argv.slice(2);
1087
- const endpoint = \`http://localhost:\${port}\`;
1015
+ import { readFileSync } from 'fs';
1016
+
1017
+ const {
1018
+ localDev: { port, tableName },
1019
+ tableConfig: { globalSecondaryIndexes },
1020
+ } = JSON.parse(readFileSync('config.json', 'utf-8')) as {
1021
+ localDev: { port: number; tableName: string };
1022
+ tableConfig: {
1023
+ globalSecondaryIndexes: {
1024
+ indexName: string;
1025
+ partitionKey: string;
1026
+ sortKey?: string;
1027
+ }[];
1028
+ };
1029
+ };
1088
1030
 
1089
- const REQUEST_TIMEOUT_MS = 10_000;
1090
- const timeoutSignal = () => AbortSignal.timeout(REQUEST_TIMEOUT_MS);
1031
+ const timeoutSignal = () => AbortSignal.timeout(10000);
1091
1032
 
1092
1033
  const client = new DynamoDBClient({
1093
- endpoint,
1034
+ endpoint: \`http://localhost:\${port}\`,
1094
1035
  region: 'us-east-1',
1095
- credentials: {
1096
- accessKeyId: 'accessKeyId',
1097
- secretAccessKey: 'secretAccessKey',
1098
- },
1036
+ credentials: { accessKeyId: 'UNUSED', secretAccessKey: 'UNUSED' },
1099
1037
  });
1100
1038
 
1101
1039
  const waitForTableActive = async (
@@ -1108,9 +1046,10 @@ const waitForTableActive = async (
1108
1046
  { abortSignal: timeoutSignal() },
1109
1047
  );
1110
1048
  const allActive =
1111
- Table?.TableStatus === 'ACTIVE' &&
1049
+ Table?.TableStatus === TableStatus.ACTIVE &&
1112
1050
  (Table?.GlobalSecondaryIndexes ?? []).every(
1113
- (g: GlobalSecondaryIndexDescription) => g.IndexStatus === 'ACTIVE',
1051
+ (g: GlobalSecondaryIndexDescription) =>
1052
+ g.IndexStatus === IndexStatus.ACTIVE,
1114
1053
  );
1115
1054
  if (allActive) return;
1116
1055
  await new Promise((resolve) => setTimeout(resolve, 500));
@@ -1120,15 +1059,17 @@ const waitForTableActive = async (
1120
1059
  const ensureTable = async (
1121
1060
  tblClient: DynamoDBClient,
1122
1061
  tblName: string,
1123
- gsIs: { indexName: string; partitionKey: string; sortKey: string }[],
1062
+ gsIs: { indexName: string; partitionKey: string; sortKey?: string }[],
1124
1063
  ): Promise<void> => {
1125
1064
  const gsiAttributeDefinitions = gsIs.flatMap((gsi) => [
1126
- { AttributeName: gsi.partitionKey, AttributeType: 'S' as const },
1127
- { AttributeName: gsi.sortKey, AttributeType: 'S' as const },
1065
+ { AttributeName: gsi.partitionKey, AttributeType: ScalarAttributeType.S },
1066
+ ...(gsi.sortKey
1067
+ ? [{ AttributeName: gsi.sortKey, AttributeType: ScalarAttributeType.S }]
1068
+ : []),
1128
1069
  ]);
1129
1070
  const attributeDefinitions = [
1130
- { AttributeName: 'pk', AttributeType: 'S' as const },
1131
- { AttributeName: 'sk', AttributeType: 'S' as const },
1071
+ { AttributeName: 'pk', AttributeType: ScalarAttributeType.S },
1072
+ { AttributeName: 'sk', AttributeType: ScalarAttributeType.S },
1132
1073
  ...gsiAttributeDefinitions.filter(
1133
1074
  (a, i, arr) =>
1134
1075
  arr.findIndex((b) => b.AttributeName === a.AttributeName) === i,
@@ -1137,10 +1078,12 @@ const ensureTable = async (
1137
1078
  const globalSecondaryIndexes = gsIs.map((gsi) => ({
1138
1079
  IndexName: gsi.indexName,
1139
1080
  KeySchema: [
1140
- { AttributeName: gsi.partitionKey, KeyType: 'HASH' as const },
1141
- { AttributeName: gsi.sortKey, KeyType: 'RANGE' as const },
1081
+ { AttributeName: gsi.partitionKey, KeyType: KeyType.HASH },
1082
+ ...(gsi.sortKey
1083
+ ? [{ AttributeName: gsi.sortKey, KeyType: KeyType.RANGE }]
1084
+ : []),
1142
1085
  ],
1143
- Projection: { ProjectionType: 'ALL' as const },
1086
+ Projection: { ProjectionType: ProjectionType.ALL },
1144
1087
  }));
1145
1088
 
1146
1089
  for (let attempt = 0; attempt < 30; attempt++) {
@@ -1151,10 +1094,10 @@ const ensureTable = async (
1151
1094
  TableName: tblName,
1152
1095
  AttributeDefinitions: attributeDefinitions,
1153
1096
  KeySchema: [
1154
- { AttributeName: 'pk', KeyType: 'HASH' },
1155
- { AttributeName: 'sk', KeyType: 'RANGE' },
1097
+ { AttributeName: 'pk', KeyType: KeyType.HASH },
1098
+ { AttributeName: 'sk', KeyType: KeyType.RANGE },
1156
1099
  ],
1157
- BillingMode: 'PAY_PER_REQUEST',
1100
+ BillingMode: BillingMode.PAY_PER_REQUEST,
1158
1101
  ...(globalSecondaryIndexes.length > 0 && {
1159
1102
  GlobalSecondaryIndexes: globalSecondaryIndexes,
1160
1103
  }),
@@ -1204,18 +1147,38 @@ const ensureTable = async (
1204
1147
  new UpdateTableCommand({
1205
1148
  TableName: tblName,
1206
1149
  AttributeDefinitions: [
1207
- { AttributeName: gsi.partitionKey, AttributeType: 'S' },
1208
- { AttributeName: gsi.sortKey, AttributeType: 'S' },
1150
+ {
1151
+ AttributeName: gsi.partitionKey,
1152
+ AttributeType: ScalarAttributeType.S,
1153
+ },
1154
+ ...(gsi.sortKey
1155
+ ? [
1156
+ {
1157
+ AttributeName: gsi.sortKey,
1158
+ AttributeType: ScalarAttributeType.S,
1159
+ },
1160
+ ]
1161
+ : []),
1209
1162
  ],
1210
1163
  GlobalSecondaryIndexUpdates: [
1211
1164
  {
1212
1165
  Create: {
1213
1166
  IndexName: gsi.indexName,
1214
1167
  KeySchema: [
1215
- { AttributeName: gsi.partitionKey, KeyType: 'HASH' },
1216
- { AttributeName: gsi.sortKey, KeyType: 'RANGE' },
1168
+ {
1169
+ AttributeName: gsi.partitionKey,
1170
+ KeyType: KeyType.HASH,
1171
+ },
1172
+ ...(gsi.sortKey
1173
+ ? [
1174
+ {
1175
+ AttributeName: gsi.sortKey,
1176
+ KeyType: KeyType.RANGE,
1177
+ },
1178
+ ]
1179
+ : []),
1217
1180
  ],
1218
- Projection: { ProjectionType: 'ALL' },
1181
+ Projection: { ProjectionType: ProjectionType.ALL },
1219
1182
  },
1220
1183
  },
1221
1184
  ],
@@ -1233,22 +1196,25 @@ const ensureTable = async (
1233
1196
  }
1234
1197
  };
1235
1198
 
1236
- await ensureTable(client, tableName, GLOBAL_SECONDARY_INDEXES);
1199
+ await ensureTable(client, tableName, globalSecondaryIndexes);
1237
1200
  "
1238
1201
  `;
1239
1202
 
1240
- exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/my-table/scripts/pull-image.ts 1`] = `
1203
+ exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/common/scripts/src/dynamodb/pull-image.ts 1`] = `
1241
1204
  "import { spawnSync } from 'child_process';
1205
+ import { readFileSync } from 'fs';
1242
1206
 
1243
- const ENGINE = 'docker';
1244
- const image = process.argv[2];
1207
+ const { containerEngine, image } = JSON.parse(
1208
+ readFileSync('config.json', 'utf-8'),
1209
+ ).localDev;
1245
1210
 
1246
- const inspect = spawnSync(ENGINE, ['image', 'inspect', image], {
1211
+ const inspect = spawnSync(containerEngine, ['image', 'inspect', image], {
1247
1212
  stdio: 'ignore',
1248
1213
  });
1249
-
1250
1214
  if (inspect.status !== 0) {
1251
- const pull = spawnSync(ENGINE, ['pull', image], { stdio: 'inherit' });
1215
+ const pull = spawnSync(containerEngine, ['pull', image], {
1216
+ stdio: 'inherit',
1217
+ });
1252
1218
  if (pull.status !== 0) {
1253
1219
  process.exit(pull.status ?? 1);
1254
1220
  }
@@ -1256,28 +1222,29 @@ if (inspect.status !== 0) {
1256
1222
  "
1257
1223
  `;
1258
1224
 
1259
- exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/my-table/scripts/start-container.ts 1`] = `
1225
+ exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/common/scripts/src/dynamodb/start-container.ts 1`] = `
1260
1226
  "import { spawn, spawnSync } from 'child_process';
1227
+ import { readFileSync } from 'fs';
1261
1228
 
1262
- const ENGINE = 'docker';
1263
-
1264
- const [containerName, image, hostPort] = process.argv.slice(2);
1229
+ const { containerEngine, containerName, image, port } = JSON.parse(
1230
+ readFileSync('config.json', 'utf-8'),
1231
+ ).localDev;
1265
1232
 
1266
1233
  const containerExists = (): boolean =>
1267
- spawnSync(ENGINE, ['container', 'inspect', containerName], {
1234
+ spawnSync(containerEngine, ['container', 'inspect', containerName], {
1268
1235
  stdio: 'ignore',
1269
1236
  }).status === 0;
1270
1237
 
1271
1238
  const isRunning = (): boolean => {
1272
1239
  const result = spawnSync(
1273
- ENGINE,
1240
+ containerEngine,
1274
1241
  ['container', 'inspect', '-f', '{{.State.Running}}', containerName],
1275
1242
  { encoding: 'utf-8' },
1276
1243
  );
1277
1244
  return result.status === 0 && result.stdout.trim() === 'true';
1278
1245
  };
1279
1246
 
1280
- // Multiple dynamo table packages run serve-local in parallel sharing the same
1247
+ // Multiple dynamo table packages run dev in parallel sharing the same
1281
1248
  // container. All processes stream logs, but only the one that created the
1282
1249
  // container stops it on exit — others just detach.
1283
1250
  let created = false;
@@ -1288,19 +1255,37 @@ for (;;) {
1288
1255
  if (!isRunning()) {
1289
1256
  // Another process may have started it between our inspect and start — container engine start
1290
1257
  // exits 0 even if the container is already running, so no special-casing needed.
1291
- const start = spawnSync(ENGINE, ['start', containerName], {
1258
+ const start = spawnSync(containerEngine, ['start', containerName], {
1292
1259
  stdio: 'inherit',
1293
1260
  });
1294
1261
  if (start.status !== 0) process.exit(start.status ?? 1);
1295
1262
  }
1296
1263
  break;
1297
1264
  }
1298
- const runArgs = (
1299
- \`run --rm --name \${containerName} -u root -w /home/dynamodblocal\` +
1300
- \` -p \${hostPort}:\${hostPort} -v \${containerName}-data:/home/dynamodblocal/data\` +
1301
- \` -d \${image} -jar DynamoDBLocal.jar -sharedDb -dbPath ./data -port \${hostPort} -optimizeDbBeforeStartup\`
1302
- ).split(' ');
1303
- const create = spawnSync(ENGINE, runArgs, { stdio: 'pipe' });
1265
+ const runArgs = [
1266
+ 'run',
1267
+ ...(containerEngine === 'docker' ? ['--rm'] : []),
1268
+ '--name',
1269
+ containerName,
1270
+ '-u',
1271
+ 'root',
1272
+ '-w',
1273
+ '/home/dynamodblocal',
1274
+ \`-p\`,
1275
+ \`\${port}:\${port}\`,
1276
+ '-v',
1277
+ \`\${containerName}-data:/home/dynamodblocal/data\`,
1278
+ '-d',
1279
+ image,
1280
+ '-jar',
1281
+ 'DynamoDBLocal.jar',
1282
+ '-sharedDb',
1283
+ '-dbPath',
1284
+ './data',
1285
+ '-port',
1286
+ \`\${port}\`,
1287
+ ];
1288
+ const create = spawnSync(containerEngine, runArgs, { stdio: 'pipe' });
1304
1289
  if (create.status === 0) {
1305
1290
  created = true;
1306
1291
  break;
@@ -1311,7 +1296,7 @@ for (;;) {
1311
1296
  }
1312
1297
  }
1313
1298
 
1314
- const logs = spawn(ENGINE, ['logs', '-f', containerName], {
1299
+ const logs = spawn(containerEngine, ['logs', '-f', containerName], {
1315
1300
  stdio: ['ignore', 'inherit', 'inherit'],
1316
1301
  });
1317
1302
 
@@ -1321,7 +1306,13 @@ const cleanup = () => {
1321
1306
  if (exiting) return;
1322
1307
  exiting = true;
1323
1308
  if (created) {
1324
- spawnSync(ENGINE, ['stop', containerName], { stdio: 'ignore' });
1309
+ if (containerEngine === 'docker') {
1310
+ spawnSync(containerEngine, ['stop', containerName], { stdio: 'ignore' });
1311
+ } else {
1312
+ spawnSync(containerEngine, ['rm', '-f', containerName], {
1313
+ stdio: 'ignore',
1314
+ });
1315
+ }
1325
1316
  }
1326
1317
  logs.kill();
1327
1318
  process.exit(0);
@@ -1331,38 +1322,40 @@ process.on('SIGTERM', cleanup);
1331
1322
  process.on('SIGINT', cleanup);
1332
1323
  process.on('SIGHUP', cleanup);
1333
1324
 
1334
- logs.on('exit', (code) => {
1335
- if (!exiting) process.exit(code ?? 0);
1336
- });
1325
+ logs.on('exit', cleanup);
1337
1326
  "
1338
1327
  `;
1339
1328
 
1340
1329
  exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/my-table/src/client.ts 1`] = `
1341
1330
  "import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
1342
1331
  import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
1343
- import {
1344
- PACKAGE_NAME,
1345
- LOCAL_ACCESS_KEY_ID,
1346
- LOCAL_ENDPOINT,
1347
- LOCAL_REGION,
1348
- LOCAL_SECRET_ACCESS_KEY,
1349
- LOCAL_TABLE_NAME,
1350
- } from './constants.js';
1332
+ import { readFileSync } from 'fs';
1333
+ import { join, dirname } from 'path';
1334
+ import { fileURLToPath } from 'url';
1335
+
1336
+ // Generated: must match runtimeConfigKey in config.json
1337
+ const runtimeConfigKey = 'MyTable';
1338
+
1339
+ const __dirname = dirname(fileURLToPath(import.meta.url));
1340
+ // config.json is only present in local dev (not included in the deployed bundle); guard with LOCAL_DEV check
1341
+ const localDev = () =>
1342
+ JSON.parse(readFileSync(join(__dirname, '../config.json'), 'utf-8')).localDev;
1351
1343
 
1352
1344
  let _client: DynamoDBClient | undefined;
1353
1345
 
1354
1346
  export const getDynamoDBClient = (): DynamoDBClient => {
1355
- _client ??=
1356
- process.env.SERVE_LOCAL === 'true'
1357
- ? new DynamoDBClient({
1358
- endpoint: LOCAL_ENDPOINT,
1359
- region: LOCAL_REGION,
1360
- credentials: {
1361
- accessKeyId: LOCAL_ACCESS_KEY_ID,
1362
- secretAccessKey: LOCAL_SECRET_ACCESS_KEY,
1363
- },
1364
- })
1365
- : new DynamoDBClient({});
1347
+ if (!_client) {
1348
+ if (process.env.LOCAL_DEV === 'true') {
1349
+ const { port } = localDev();
1350
+ _client = new DynamoDBClient({
1351
+ endpoint: \`http://localhost:\${port}\`,
1352
+ region: 'us-east-1',
1353
+ credentials: { accessKeyId: 'UNUSED', secretAccessKey: 'UNUSED' },
1354
+ });
1355
+ } else {
1356
+ _client = new DynamoDBClient({});
1357
+ }
1358
+ }
1366
1359
  return _client;
1367
1360
  };
1368
1361
 
@@ -1373,8 +1366,9 @@ type DynamoDBConfig = {
1373
1366
  let _tableName: string | undefined;
1374
1367
 
1375
1368
  export const resolveTableName = async (): Promise<string> => {
1376
- if (process.env.SERVE_LOCAL === 'true') {
1377
- return LOCAL_TABLE_NAME;
1369
+ if (process.env.LOCAL_DEV === 'true') {
1370
+ const { tableName } = localDev();
1371
+ return tableName;
1378
1372
  }
1379
1373
  if (_tableName === undefined) {
1380
1374
  const appId = process.env.RUNTIME_CONFIG_APP_ID;
@@ -1388,7 +1382,7 @@ export const resolveTableName = async (): Promise<string> => {
1388
1382
  environment: 'default',
1389
1383
  transform: 'json',
1390
1384
  });
1391
- const tableName = config?.[PACKAGE_NAME]?.tableName;
1385
+ const tableName = config?.[runtimeConfigKey]?.tableName;
1392
1386
  if (!tableName) {
1393
1387
  throw new Error('Could not resolve table name from runtime config');
1394
1388
  }
@@ -1399,19 +1393,6 @@ export const resolveTableName = async (): Promise<string> => {
1399
1393
  "
1400
1394
  `;
1401
1395
 
1402
- exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/my-table/src/constants.ts 1`] = `
1403
- "export const PACKAGE_NAME = 'MyTable';
1404
-
1405
- // Local development connection details (used when SERVE_LOCAL=true, see serve-local Nx target)
1406
- export const LOCAL_PORT = 8000;
1407
- export const LOCAL_REGION = 'us-east-1';
1408
- export const LOCAL_ACCESS_KEY_ID = 'accessKeyId';
1409
- export const LOCAL_SECRET_ACCESS_KEY = 'secretAccessKey';
1410
- export const LOCAL_ENDPOINT = \`http://localhost:\${LOCAL_PORT}\`;
1411
- export const LOCAL_TABLE_NAME = 'proj-my-table';
1412
- "
1413
- `;
1414
-
1415
1396
  exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/my-table/src/entities/example.ts 1`] = `
1416
1397
  "import { Entity } from 'electrodb';
1417
1398
  import { getDynamoDBClient, resolveTableName } from '../client.js';
@@ -1468,35 +1449,8 @@ exports[`ts#dynamodb generator > should generate with infra=none then upgrade to
1468
1449
  "
1469
1450
  `;
1470
1451
 
1471
- exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/my-table/src/gsi.ts 1`] = `
1472
- "// GSIs to synchronize on the local table at startup and provision in infrastructure.
1473
- // ElectroDB names GSI keys gsi{n}pk / gsi{n}sk — add one entry per index defined in your entities.
1474
- export const GLOBAL_SECONDARY_INDEXES = [
1475
- {
1476
- indexName: 'gsi1pk-gsi1sk-index',
1477
- partitionKey: 'gsi1pk',
1478
- sortKey: 'gsi1sk',
1479
- },
1480
- {
1481
- indexName: 'gsi2pk-gsi2sk-index',
1482
- partitionKey: 'gsi2pk',
1483
- sortKey: 'gsi2sk',
1484
- },
1485
- ];
1486
- "
1487
- `;
1488
-
1489
1452
  exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/my-table/src/index.ts 1`] = `
1490
- "export {
1491
- PACKAGE_NAME,
1492
- LOCAL_ACCESS_KEY_ID,
1493
- LOCAL_ENDPOINT,
1494
- LOCAL_REGION,
1495
- LOCAL_SECRET_ACCESS_KEY,
1496
- LOCAL_TABLE_NAME,
1497
- } from './constants.js';
1498
- export { getDynamoDBClient, resolveTableName } from './client.js';
1499
- export { GLOBAL_SECONDARY_INDEXES } from './gsi.js';
1453
+ "export { getDynamoDBClient, resolveTableName } from './client.js';
1500
1454
  export * from './entities/index.js';
1501
1455
  "
1502
1456
  `;