@aws/nx-plugin 1.0.0-rc.7 → 1.0.0-rc.71

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