@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,13 +1,663 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
+ exports[`ts#agent generator > chat scripts for a2a protocol > should match snapshot for chat scripts with cognito auth > agentcore.ts (a2a, cognito) 1`] = `
4
+ "// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
5
+ import { randomUUID } from 'node:crypto';
6
+ import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
7
+
8
+ const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
9
+
10
+ // AgentCore session ids must be at least 33 characters.
11
+ export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
12
+
13
+ export interface RemoteAgent {
14
+ /** ARN of the deployed Bedrock AgentCore runtime. */
15
+ arn: string;
16
+ /** AWS region parsed from the runtime ARN. */
17
+ region: string;
18
+ }
19
+
20
+ // Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
21
+ export const resolveRemoteAgent = async (): Promise<
22
+ RemoteAgent | undefined
23
+ > => {
24
+ const application = process.env.RUNTIME_CONFIG_APP_ID;
25
+ if (!application) {
26
+ return undefined;
27
+ }
28
+ const config = (await getAppConfig('agentcore', {
29
+ application,
30
+ environment: 'default',
31
+ transform: 'json',
32
+ })) as { agentRuntimes?: Record<string, { arn: string }> };
33
+ const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
34
+ if (!arn) {
35
+ throw new Error(
36
+ \`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
37
+ );
38
+ }
39
+ return { arn, region: arn.split(':')[3] };
40
+ };
41
+
42
+ /** The Cognito access token used to authenticate with the deployed agent. */
43
+ export const getAccessToken = (): string => {
44
+ const accessToken = process.env.AGENT_ACCESS_TOKEN;
45
+ if (!accessToken) {
46
+ throw new Error(
47
+ 'AGENT_ACCESS_TOKEN is not set. Provide a Cognito access token to chat with the deployed agent.',
48
+ );
49
+ }
50
+ return accessToken;
51
+ };
52
+
53
+ // A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
54
+ export const createAgentCoreFetch = (): typeof fetch => {
55
+ const accessToken = getAccessToken();
56
+ return (input, init) => {
57
+ const headers = new Headers(init?.headers);
58
+ headers.set(SESSION_HEADER, SESSION_ID);
59
+ headers.set('Authorization', \`Bearer \${accessToken}\`);
60
+ return fetch(input, { ...init, headers });
61
+ };
62
+ };
63
+ "
64
+ `;
65
+
66
+ exports[`ts#agent generator > chat scripts for a2a protocol > should match snapshot for chat scripts with cognito auth > chat.ts (a2a, cognito) 1`] = `
67
+ "// Chat CLI for TestProjectAgent (A2A protocol). Connects to the local
68
+ // \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
69
+ import {
70
+ ClientFactory,
71
+ ClientFactoryOptions,
72
+ DefaultAgentCardResolver,
73
+ JsonRpcTransportFactory,
74
+ } from '@a2a-js/sdk/client';
75
+ import { A2AChatAdapter, chatLoop } from 'agent-chat-cli';
76
+ import { createAgentCoreFetch, resolveRemoteAgent } from './agentcore.js';
77
+
78
+ const remote = await resolveRemoteAgent();
79
+
80
+ const url = remote
81
+ ? \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}/invocations/\`
82
+ : process.env.URL!;
83
+
84
+ // Remote requests are authenticated via a custom fetch; locally the default client talks plain HTTP.
85
+ const clientFactory = remote
86
+ ? new ClientFactory({
87
+ ...ClientFactoryOptions.default,
88
+ transports: [
89
+ new JsonRpcTransportFactory({
90
+ fetchImpl: createAgentCoreFetch(),
91
+ }),
92
+ ],
93
+ cardResolver: new DefaultAgentCardResolver({
94
+ fetchImpl: createAgentCoreFetch(),
95
+ }),
96
+ })
97
+ : undefined;
98
+
99
+ await chatLoop(new A2AChatAdapter({ clientFactory }), url);
100
+ "
101
+ `;
102
+
103
+ exports[`ts#agent generator > chat scripts for a2a protocol > should match snapshot for chat scripts with iam auth > agentcore.ts (a2a, iam) 1`] = `
104
+ "// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
105
+ import { randomUUID } from 'node:crypto';
106
+ import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
107
+ import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
108
+ import { AwsClient } from 'aws4fetch';
109
+
110
+ const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
111
+
112
+ // AgentCore session ids must be at least 33 characters.
113
+ export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
114
+
115
+ export interface RemoteAgent {
116
+ /** ARN of the deployed Bedrock AgentCore runtime. */
117
+ arn: string;
118
+ /** AWS region parsed from the runtime ARN. */
119
+ region: string;
120
+ }
121
+
122
+ // Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
123
+ export const resolveRemoteAgent = async (): Promise<
124
+ RemoteAgent | undefined
125
+ > => {
126
+ const application = process.env.RUNTIME_CONFIG_APP_ID;
127
+ if (!application) {
128
+ return undefined;
129
+ }
130
+ const config = (await getAppConfig('agentcore', {
131
+ application,
132
+ environment: 'default',
133
+ transform: 'json',
134
+ })) as { agentRuntimes?: Record<string, { arn: string }> };
135
+ const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
136
+ if (!arn) {
137
+ throw new Error(
138
+ \`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
139
+ );
140
+ }
141
+ return { arn, region: arn.split(':')[3] };
142
+ };
143
+
144
+ // A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
145
+ export const createAgentCoreFetch = (region: string): typeof fetch => {
146
+ const credentialProvider = fromNodeProviderChain();
147
+ return async (input, init) => {
148
+ const headers = new Headers(init?.headers);
149
+ headers.set(SESSION_HEADER, SESSION_ID);
150
+ const client = new AwsClient({
151
+ ...(await credentialProvider()),
152
+ service: 'bedrock-agentcore',
153
+ region,
154
+ });
155
+ return client.fetch(input, { ...init, headers });
156
+ };
157
+ };
158
+ "
159
+ `;
160
+
161
+ exports[`ts#agent generator > chat scripts for a2a protocol > should match snapshot for chat scripts with iam auth > chat.ts (a2a, iam) 1`] = `
162
+ "// Chat CLI for TestProjectAgent (A2A protocol). Connects to the local
163
+ // \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
164
+ import {
165
+ ClientFactory,
166
+ ClientFactoryOptions,
167
+ DefaultAgentCardResolver,
168
+ JsonRpcTransportFactory,
169
+ } from '@a2a-js/sdk/client';
170
+ import { A2AChatAdapter, chatLoop } from 'agent-chat-cli';
171
+ import { createAgentCoreFetch, resolveRemoteAgent } from './agentcore.js';
172
+
173
+ const remote = await resolveRemoteAgent();
174
+
175
+ const url = remote
176
+ ? \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}/invocations/\`
177
+ : process.env.URL!;
178
+
179
+ // Remote requests are authenticated via a custom fetch; locally the default client talks plain HTTP.
180
+ const clientFactory = remote
181
+ ? new ClientFactory({
182
+ ...ClientFactoryOptions.default,
183
+ transports: [
184
+ new JsonRpcTransportFactory({
185
+ fetchImpl: createAgentCoreFetch(remote.region),
186
+ }),
187
+ ],
188
+ cardResolver: new DefaultAgentCardResolver({
189
+ fetchImpl: createAgentCoreFetch(remote.region),
190
+ }),
191
+ })
192
+ : undefined;
193
+
194
+ await chatLoop(new A2AChatAdapter({ clientFactory }), url);
195
+ "
196
+ `;
197
+
198
+ exports[`ts#agent generator > chat scripts for ag-ui protocol > should match snapshot for chat scripts with cognito auth > agentcore.ts (ag-ui, cognito) 1`] = `
199
+ "// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
200
+ import { randomUUID } from 'node:crypto';
201
+ import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
202
+
203
+ const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
204
+
205
+ // AgentCore session ids must be at least 33 characters.
206
+ export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
207
+
208
+ export interface RemoteAgent {
209
+ /** ARN of the deployed Bedrock AgentCore runtime. */
210
+ arn: string;
211
+ /** AWS region parsed from the runtime ARN. */
212
+ region: string;
213
+ }
214
+
215
+ // Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
216
+ export const resolveRemoteAgent = async (): Promise<
217
+ RemoteAgent | undefined
218
+ > => {
219
+ const application = process.env.RUNTIME_CONFIG_APP_ID;
220
+ if (!application) {
221
+ return undefined;
222
+ }
223
+ const config = (await getAppConfig('agentcore', {
224
+ application,
225
+ environment: 'default',
226
+ transform: 'json',
227
+ })) as { agentRuntimes?: Record<string, { arn: string }> };
228
+ const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
229
+ if (!arn) {
230
+ throw new Error(
231
+ \`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
232
+ );
233
+ }
234
+ return { arn, region: arn.split(':')[3] };
235
+ };
236
+
237
+ /** The Cognito access token used to authenticate with the deployed agent. */
238
+ export const getAccessToken = (): string => {
239
+ const accessToken = process.env.AGENT_ACCESS_TOKEN;
240
+ if (!accessToken) {
241
+ throw new Error(
242
+ 'AGENT_ACCESS_TOKEN is not set. Provide a Cognito access token to chat with the deployed agent.',
243
+ );
244
+ }
245
+ return accessToken;
246
+ };
247
+
248
+ // A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
249
+ export const createAgentCoreFetch = (): typeof fetch => {
250
+ const accessToken = getAccessToken();
251
+ return (input, init) => {
252
+ const headers = new Headers(init?.headers);
253
+ headers.set(SESSION_HEADER, SESSION_ID);
254
+ headers.set('Authorization', \`Bearer \${accessToken}\`);
255
+ return fetch(input, { ...init, headers });
256
+ };
257
+ };
258
+ "
259
+ `;
260
+
261
+ exports[`ts#agent generator > chat scripts for ag-ui protocol > should match snapshot for chat scripts with cognito auth > chat.ts (ag-ui, cognito) 1`] = `
262
+ "// Chat CLI for TestProjectAgent (AG-UI protocol). Connects to the local
263
+ // \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
264
+ import { AGUIChatAdapter, chatLoop } from 'agent-chat-cli';
265
+ import { createAgentCoreFetch, resolveRemoteAgent } from './agentcore.js';
266
+
267
+ const remote = await resolveRemoteAgent();
268
+
269
+ const url = remote
270
+ ? \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}/invocations?qualifier=DEFAULT\`
271
+ : process.env.URL!;
272
+
273
+ // Remote requests are authenticated via a custom fetch; locally the default agent talks plain HTTP.
274
+ const fetchImpl = remote ? createAgentCoreFetch() : undefined;
275
+
276
+ await chatLoop(new AGUIChatAdapter({ fetch: fetchImpl }), url);
277
+ "
278
+ `;
279
+
280
+ exports[`ts#agent generator > chat scripts for ag-ui protocol > should match snapshot for chat scripts with iam auth > agentcore.ts (ag-ui, iam) 1`] = `
281
+ "// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
282
+ import { randomUUID } from 'node:crypto';
283
+ import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
284
+ import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
285
+ import { AwsClient } from 'aws4fetch';
286
+
287
+ const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
288
+
289
+ // AgentCore session ids must be at least 33 characters.
290
+ export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
291
+
292
+ export interface RemoteAgent {
293
+ /** ARN of the deployed Bedrock AgentCore runtime. */
294
+ arn: string;
295
+ /** AWS region parsed from the runtime ARN. */
296
+ region: string;
297
+ }
298
+
299
+ // Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
300
+ export const resolveRemoteAgent = async (): Promise<
301
+ RemoteAgent | undefined
302
+ > => {
303
+ const application = process.env.RUNTIME_CONFIG_APP_ID;
304
+ if (!application) {
305
+ return undefined;
306
+ }
307
+ const config = (await getAppConfig('agentcore', {
308
+ application,
309
+ environment: 'default',
310
+ transform: 'json',
311
+ })) as { agentRuntimes?: Record<string, { arn: string }> };
312
+ const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
313
+ if (!arn) {
314
+ throw new Error(
315
+ \`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
316
+ );
317
+ }
318
+ return { arn, region: arn.split(':')[3] };
319
+ };
320
+
321
+ // A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
322
+ export const createAgentCoreFetch = (region: string): typeof fetch => {
323
+ const credentialProvider = fromNodeProviderChain();
324
+ return async (input, init) => {
325
+ const headers = new Headers(init?.headers);
326
+ headers.set(SESSION_HEADER, SESSION_ID);
327
+ const client = new AwsClient({
328
+ ...(await credentialProvider()),
329
+ service: 'bedrock-agentcore',
330
+ region,
331
+ });
332
+ return client.fetch(input, { ...init, headers });
333
+ };
334
+ };
335
+ "
336
+ `;
337
+
338
+ exports[`ts#agent generator > chat scripts for ag-ui protocol > should match snapshot for chat scripts with iam auth > chat.ts (ag-ui, iam) 1`] = `
339
+ "// Chat CLI for TestProjectAgent (AG-UI protocol). Connects to the local
340
+ // \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
341
+ import { AGUIChatAdapter, chatLoop } from 'agent-chat-cli';
342
+ import { createAgentCoreFetch, resolveRemoteAgent } from './agentcore.js';
343
+
344
+ const remote = await resolveRemoteAgent();
345
+
346
+ const url = remote
347
+ ? \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}/invocations?qualifier=DEFAULT\`
348
+ : process.env.URL!;
349
+
350
+ // Remote requests are authenticated via a custom fetch; locally the default agent talks plain HTTP.
351
+ const fetchImpl = remote ? createAgentCoreFetch(remote.region) : undefined;
352
+
353
+ await chatLoop(new AGUIChatAdapter({ fetch: fetchImpl }), url);
354
+ "
355
+ `;
356
+
357
+ exports[`ts#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with cognito auth > agentcore.ts (http, cognito) 1`] = `
358
+ "// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
359
+ import { randomUUID } from 'node:crypto';
360
+ import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
361
+
362
+ const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
363
+
364
+ // AgentCore session ids must be at least 33 characters.
365
+ export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
366
+
367
+ export interface RemoteAgent {
368
+ /** ARN of the deployed Bedrock AgentCore runtime. */
369
+ arn: string;
370
+ /** AWS region parsed from the runtime ARN. */
371
+ region: string;
372
+ }
373
+
374
+ // Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
375
+ export const resolveRemoteAgent = async (): Promise<
376
+ RemoteAgent | undefined
377
+ > => {
378
+ const application = process.env.RUNTIME_CONFIG_APP_ID;
379
+ if (!application) {
380
+ return undefined;
381
+ }
382
+ const config = (await getAppConfig('agentcore', {
383
+ application,
384
+ environment: 'default',
385
+ transform: 'json',
386
+ })) as { agentRuntimes?: Record<string, { arn: string }> };
387
+ const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
388
+ if (!arn) {
389
+ throw new Error(
390
+ \`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
391
+ );
392
+ }
393
+ return { arn, region: arn.split(':')[3] };
394
+ };
395
+
396
+ /** The Cognito access token used to authenticate with the deployed agent. */
397
+ export const getAccessToken = (): string => {
398
+ const accessToken = process.env.AGENT_ACCESS_TOKEN;
399
+ if (!accessToken) {
400
+ throw new Error(
401
+ 'AGENT_ACCESS_TOKEN is not set. Provide a Cognito access token to chat with the deployed agent.',
402
+ );
403
+ }
404
+ return accessToken;
405
+ };
406
+
407
+ // A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
408
+ export const createAgentCoreFetch = (): typeof fetch => {
409
+ const accessToken = getAccessToken();
410
+ return (input, init) => {
411
+ const headers = new Headers(init?.headers);
412
+ headers.set(SESSION_HEADER, SESSION_ID);
413
+ headers.set('Authorization', \`Bearer \${accessToken}\`);
414
+ return fetch(input, { ...init, headers });
415
+ };
416
+ };
417
+ "
418
+ `;
419
+
420
+ exports[`ts#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with cognito auth > chat.ts (http, cognito) 1`] = `
421
+ "// Chat CLI for TestProjectAgent (HTTP / tRPC WebSocket). Connects to the local
422
+ // \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
423
+ import { chatLoop, type ChatAdapter } from 'agent-chat-cli';
424
+ import { TestProjectAgentClient } from '../../src/agent/client.js';
425
+ import { resolveRemoteAgent, SESSION_ID, getAccessToken } from './agentcore.js';
426
+
427
+ const remote = await resolveRemoteAgent();
428
+
429
+ class TrpcWebSocketAdapter implements ChatAdapter {
430
+ private client!: ReturnType<typeof TestProjectAgentClient.local>;
431
+
432
+ async connect(url: string) {
433
+ this.client = remote
434
+ ? TestProjectAgentClient.withJwtAuth({
435
+ agentRuntimeArn: remote.arn,
436
+ sessionId: SESSION_ID,
437
+ accessTokenProvider: async () => getAccessToken(),
438
+ })
439
+ : TestProjectAgentClient.local({ url, sessionId: SESSION_ID });
440
+ return { agentName: 'TestProjectAgent' };
441
+ }
442
+
443
+ async *sendMessage(text: string): AsyncIterable<string> {
444
+ const stream = new ReadableStream<string>({
445
+ start: (controller) => {
446
+ this.client.invoke.subscribe(
447
+ { prompt: text },
448
+ {
449
+ onData: (chunk: string) => controller.enqueue(chunk),
450
+ onComplete: () => controller.close(),
451
+ onError: (err: unknown) => controller.error(err),
452
+ },
453
+ );
454
+ },
455
+ });
456
+
457
+ yield* stream as unknown as AsyncIterable<string>;
458
+ }
459
+ }
460
+
461
+ await chatLoop(new TrpcWebSocketAdapter(), process.env.URL ?? '');
462
+ "
463
+ `;
464
+
465
+ exports[`ts#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with iam auth > agentcore.ts (http, iam) 1`] = `
466
+ "// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
467
+ import { randomUUID } from 'node:crypto';
468
+ import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
469
+ import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
470
+ import { AwsClient } from 'aws4fetch';
471
+
472
+ const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
473
+
474
+ // AgentCore session ids must be at least 33 characters.
475
+ export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
476
+
477
+ export interface RemoteAgent {
478
+ /** ARN of the deployed Bedrock AgentCore runtime. */
479
+ arn: string;
480
+ /** AWS region parsed from the runtime ARN. */
481
+ region: string;
482
+ }
483
+
484
+ // Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
485
+ export const resolveRemoteAgent = async (): Promise<
486
+ RemoteAgent | undefined
487
+ > => {
488
+ const application = process.env.RUNTIME_CONFIG_APP_ID;
489
+ if (!application) {
490
+ return undefined;
491
+ }
492
+ const config = (await getAppConfig('agentcore', {
493
+ application,
494
+ environment: 'default',
495
+ transform: 'json',
496
+ })) as { agentRuntimes?: Record<string, { arn: string }> };
497
+ const arn = config?.agentRuntimes?.['TestProjectAgent']?.arn;
498
+ if (!arn) {
499
+ throw new Error(
500
+ \`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
501
+ );
502
+ }
503
+ return { arn, region: arn.split(':')[3] };
504
+ };
505
+
506
+ // A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
507
+ export const createAgentCoreFetch = (region: string): typeof fetch => {
508
+ const credentialProvider = fromNodeProviderChain();
509
+ return async (input, init) => {
510
+ const headers = new Headers(init?.headers);
511
+ headers.set(SESSION_HEADER, SESSION_ID);
512
+ const client = new AwsClient({
513
+ ...(await credentialProvider()),
514
+ service: 'bedrock-agentcore',
515
+ region,
516
+ });
517
+ return client.fetch(input, { ...init, headers });
518
+ };
519
+ };
520
+ "
521
+ `;
522
+
523
+ exports[`ts#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with iam auth > chat.ts (http, iam) 1`] = `
524
+ "// Chat CLI for TestProjectAgent (HTTP / tRPC WebSocket). Connects to the local
525
+ // \`dev\` server, or the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set.
526
+ import { chatLoop, type ChatAdapter } from 'agent-chat-cli';
527
+ import { TestProjectAgentClient } from '../../src/agent/client.js';
528
+ import { resolveRemoteAgent, SESSION_ID } from './agentcore.js';
529
+
530
+ const remote = await resolveRemoteAgent();
531
+
532
+ class TrpcWebSocketAdapter implements ChatAdapter {
533
+ private client!: ReturnType<typeof TestProjectAgentClient.local>;
534
+
535
+ async connect(url: string) {
536
+ this.client = remote
537
+ ? TestProjectAgentClient.withIamAuth({
538
+ agentRuntimeArn: remote.arn,
539
+ sessionId: SESSION_ID,
540
+ })
541
+ : TestProjectAgentClient.local({ url, sessionId: SESSION_ID });
542
+ return { agentName: 'TestProjectAgent' };
543
+ }
544
+
545
+ async *sendMessage(text: string): AsyncIterable<string> {
546
+ const stream = new ReadableStream<string>({
547
+ start: (controller) => {
548
+ this.client.invoke.subscribe(
549
+ { prompt: text },
550
+ {
551
+ onData: (chunk: string) => controller.enqueue(chunk),
552
+ onComplete: () => controller.close(),
553
+ onError: (err: unknown) => controller.error(err),
554
+ },
555
+ );
556
+ },
557
+ });
558
+
559
+ yield* stream as unknown as AsyncIterable<string>;
560
+ }
561
+ }
562
+
563
+ await chatLoop(new TrpcWebSocketAdapter(), process.env.URL ?? '');
564
+ "
565
+ `;
566
+
567
+ exports[`ts#agent generator > should generate session.ts using S3 storage by default > session.ts (s3) 1`] = `
568
+ "import { SessionManager } from '@strands-agents/sdk';
569
+ import { LocalFileStorage, S3Storage } from '@strands-agents/sdk/storage';
570
+ import {
571
+ getCurrentSessionId,
572
+ getAgentCoreRuntimeConfig,
573
+ } from '@proj/agent-connection';
574
+
575
+ /**
576
+ * Returns a SessionManager for persisting conversation state across
577
+ * invocations. Local development always uses local file storage for
578
+ * convenience, regardless of the configured session option. Without a
579
+ * configured session option, conversation state is kept in memory only and
580
+ * does not survive process restarts.
581
+ */
582
+ export const getSessionManager = async (): Promise<SessionManager> => {
583
+ const sessionId = getCurrentSessionId();
584
+ if (!sessionId) {
585
+ throw new Error(
586
+ 'No current session id — cannot resolve a SessionManager outside of a request scope.',
587
+ );
588
+ }
589
+ if (process.env.LOCAL_DEV === 'true') {
590
+ return new SessionManager({
591
+ sessionId,
592
+ storage: new LocalFileStorage(
593
+ '../../tmp/agents/strands/test-project-agent',
594
+ ),
595
+ });
596
+ }
597
+ const config = await getAgentCoreRuntimeConfig();
598
+ const bucketName =
599
+ config.agentRuntimes?.['TestProjectAgent']?.session?.bucketName;
600
+ if (!bucketName) {
601
+ throw new Error(
602
+ "No S3 bucket configured for this agent's session in runtime configuration.",
603
+ );
604
+ }
605
+ return new SessionManager({ sessionId, storage: new S3Storage(bucketName) });
606
+ };
607
+ "
608
+ `;
609
+
610
+ exports[`ts#agent generator > should generate session.ts using in-memory storage when session is in-memory > session.ts (in-memory) 1`] = `
611
+ "import { SessionManager } from '@strands-agents/sdk';
612
+ import { LocalFileStorage, InMemoryStorage } from '@strands-agents/sdk/storage';
613
+ import { getCurrentSessionId } from '@proj/agent-connection';
614
+
615
+ /**
616
+ * Returns a SessionManager for persisting conversation state across
617
+ * invocations. Local development always uses local file storage for
618
+ * convenience, regardless of the configured session option. Without a
619
+ * configured session option, conversation state is kept in memory only and
620
+ * does not survive process restarts.
621
+ */
622
+ export const getSessionManager = async (): Promise<SessionManager> => {
623
+ const sessionId = getCurrentSessionId();
624
+ if (!sessionId) {
625
+ throw new Error(
626
+ 'No current session id — cannot resolve a SessionManager outside of a request scope.',
627
+ );
628
+ }
629
+ if (process.env.LOCAL_DEV === 'true') {
630
+ return new SessionManager({
631
+ sessionId,
632
+ storage: new LocalFileStorage(
633
+ '../../tmp/agents/strands/test-project-agent',
634
+ ),
635
+ });
636
+ }
637
+ return new SessionManager({ sessionId, storage: new InMemoryStorage() });
638
+ };
639
+ "
640
+ `;
641
+
3
642
  exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > agent-Dockerfile 1`] = `
4
- "FROM public.ecr.aws/docker/library/node:lts-jod
643
+ "FROM public.ecr.aws/docker/library/node:lts-slim
644
+
645
+ # Upgrade npm to a version free of known HIGH/CRITICAL vulnerabilities
646
+ RUN npm install -g npm@12.0.2
5
647
 
6
648
  WORKDIR /app
7
649
 
8
650
  # Add AWS Distro for OpenTelemetry for observability
9
651
  # https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/observability-configure.html
10
- RUN npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation@0.11.0
652
+ # The overrides pin transitive dependencies with known HIGH/CRITICAL
653
+ # vulnerabilities to fixed versions. npm is removed once the install is done —
654
+ # the runtime only needs node, and npm's own bundled dependencies would
655
+ # otherwise carry vulnerabilities into the image.
656
+ RUN npm init -y \\
657
+ && npm pkg set "overrides.@opentelemetry/propagator-jaeger=2.10.0" \\
658
+ && npm pkg set "overrides.minimatch=10.2.6" \\
659
+ && npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation@0.12.0 \\
660
+ && npm uninstall -g npm
11
661
 
12
662
  # Copy bundled agent
13
663
  COPY index.js /app
@@ -21,9 +671,22 @@ CMD [ "node", "--require", "@aws/aws-distro-opentelemetry-node-autoinstrumentati
21
671
  `;
22
672
 
23
673
  exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > agent-construct.ts 1`] = `
24
- "import { Lazy, Names } from 'aws-cdk-lib';
674
+ "import { Fn, Lazy, Names, RemovalPolicy, Stack } from 'aws-cdk-lib';
25
675
  import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
26
676
  import { Connections, IConnectable } from 'aws-cdk-lib/aws-ec2';
677
+ import {
678
+ BlockPublicAccess,
679
+ Bucket,
680
+ BucketEncryption,
681
+ } from 'aws-cdk-lib/aws-s3';
682
+ import { Key } from 'aws-cdk-lib/aws-kms';
683
+ import {
684
+ CfnDelivery,
685
+ CfnDeliveryDestination,
686
+ CfnDeliverySource,
687
+ LogGroup,
688
+ RetentionDays,
689
+ } from 'aws-cdk-lib/aws-logs';
27
690
  import { Construct } from 'constructs';
28
691
  import * as path from 'path';
29
692
  import * as url from 'url';
@@ -35,10 +698,13 @@ import {
35
698
  } from 'aws-cdk-lib/aws-bedrockagentcore';
36
699
  import {
37
700
  PolicyStatement,
701
+ Effect,
702
+ ServicePrincipal,
38
703
  IGrantable,
39
704
  IPrincipal,
40
705
  Grant,
41
706
  } from 'aws-cdk-lib/aws-iam';
707
+ import { suppressRules } from '../../../core/checkov.js';
42
708
  import { RuntimeConfig } from '../../../core/runtime-config.js';
43
709
  import { findWorkspaceRoot } from '../../../core/workspace.js';
44
710
 
@@ -56,6 +722,10 @@ export class SnapshotBedrockAgent
56
722
  {
57
723
  public readonly dockerImage: AgentRuntimeArtifact;
58
724
  public readonly agentCoreRuntime: Runtime;
725
+ /** Default Gateway target name for this agent. */
726
+ public readonly agentName = 'snapshot-bedrock-agent';
727
+ /** Inbound auth — a fronting Gateway uses this to pick its outbound credential. */
728
+ public readonly auth = 'iam';
59
729
 
60
730
  constructor(scope: Construct, id: string, props?: SnapshotBedrockAgentProps) {
61
731
  super(scope, id);
@@ -72,6 +742,111 @@ export class SnapshotBedrockAgent
72
742
  platform: Platform.LINUX_ARM64,
73
743
  });
74
744
 
745
+ const sessionKey = new Key(this, 'SessionKey', {
746
+ enableKeyRotation: true,
747
+ });
748
+
749
+ // Allow CloudWatch Logs to use the session key for server access log delivery.
750
+ const stack = Stack.of(this);
751
+ sessionKey.addToResourcePolicy(
752
+ new PolicyStatement({
753
+ effect: Effect.ALLOW,
754
+ principals: [
755
+ new ServicePrincipal(\`logs.\${stack.region}.amazonaws.com\`),
756
+ ],
757
+ actions: [
758
+ 'kms:Encrypt',
759
+ 'kms:Decrypt',
760
+ 'kms:ReEncrypt*',
761
+ 'kms:GenerateDataKey*',
762
+ 'kms:DescribeKey',
763
+ ],
764
+ resources: ['*'],
765
+ conditions: {
766
+ ArnLike: {
767
+ 'kms:EncryptionContext:aws:logs:arn': \`arn:aws:logs:\${stack.region}:\${stack.account}:log-group:*\`,
768
+ },
769
+ },
770
+ }),
771
+ );
772
+
773
+ const sessionAccessLogs = new LogGroup(this, 'SessionAccessLogs', {
774
+ retention: RetentionDays.ONE_YEAR,
775
+ encryptionKey: sessionKey,
776
+ removalPolicy: RemovalPolicy.DESTROY,
777
+ });
778
+
779
+ const sessionBucket = new Bucket(this, 'SessionBucket', {
780
+ enforceSSL: true,
781
+ removalPolicy: RemovalPolicy.RETAIN,
782
+ encryption: BucketEncryption.KMS,
783
+ encryptionKey: sessionKey,
784
+ blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
785
+ });
786
+ suppressRules(
787
+ sessionBucket,
788
+ ['CKV_AWS_21'],
789
+ 'Session data does not need versioning enabled',
790
+ );
791
+ suppressRules(
792
+ sessionBucket,
793
+ ['CKV2_AWS_61'],
794
+ 'Lifecycle configuration not required for session data',
795
+ );
796
+ suppressRules(
797
+ sessionBucket,
798
+ ['CKV_AWS_144'],
799
+ 'Cross-region replication not required for session data',
800
+ );
801
+ suppressRules(
802
+ sessionBucket,
803
+ ['CKV2_AWS_62'],
804
+ 'Event notifications not required for session data',
805
+ );
806
+ suppressRules(
807
+ sessionBucket,
808
+ ['CKV_AWS_18'],
809
+ 'Server access logs are delivered to CloudWatch Logs',
810
+ );
811
+
812
+ const sessionAccessLogsSource: CfnDeliverySource = new CfnDeliverySource(
813
+ this,
814
+ 'SessionAccessLogsSource',
815
+ {
816
+ name: Lazy.string({
817
+ produce: () =>
818
+ Names.uniqueResourceName(sessionAccessLogsSource, {
819
+ maxLength: 60,
820
+ }),
821
+ }),
822
+ logType: 'S3_SERVER_ACCESS_LOGS',
823
+ resourceArn: sessionBucket.bucketArn,
824
+ },
825
+ );
826
+ const sessionBucketPolicy = sessionBucket.policy;
827
+ if (sessionBucketPolicy) {
828
+ sessionAccessLogsSource.node.addDependency(sessionBucketPolicy);
829
+ }
830
+ const sessionAccessLogsDestination: CfnDeliveryDestination =
831
+ new CfnDeliveryDestination(this, 'SessionAccessLogsDestination', {
832
+ name: Lazy.string({
833
+ produce: () =>
834
+ Names.uniqueResourceName(sessionAccessLogsDestination, {
835
+ maxLength: 60,
836
+ }),
837
+ }),
838
+ destinationResourceArn: sessionAccessLogs.logGroupArn,
839
+ });
840
+ const sessionAccessLogsDelivery = new CfnDelivery(
841
+ this,
842
+ 'SessionAccessLogsDelivery',
843
+ {
844
+ deliverySourceName: sessionAccessLogsSource.name,
845
+ deliveryDestinationArn: sessionAccessLogsDestination.attrArn,
846
+ },
847
+ );
848
+ sessionAccessLogsDelivery.addDependency(sessionAccessLogsSource);
849
+
75
850
  this.agentCoreRuntime = new Runtime(this, 'SnapshotBedrockAgent', {
76
851
  runtimeName: Lazy.string({
77
852
  produce: () =>
@@ -100,11 +875,16 @@ export class SnapshotBedrockAgent
100
875
  }),
101
876
  );
102
877
 
878
+ sessionBucket.grantReadWrite(this.agentCoreRuntime);
879
+
103
880
  rc.grantReadAppConfig(this.agentCoreRuntime);
104
881
 
105
882
  rc.set('agentcore', 'agentRuntimes', {
106
883
  ...rc.get('agentcore').agentRuntimes,
107
- SnapshotBedrockAgent: this.agentCoreRuntime.agentRuntimeArn,
884
+ SnapshotBedrockAgent: {
885
+ arn: this.agentCoreRuntime.agentRuntimeArn,
886
+ session: { bucketName: sessionBucket.bucketName },
887
+ },
108
888
  });
109
889
  }
110
890
 
@@ -122,6 +902,22 @@ export class SnapshotBedrockAgent
122
902
  return this.agentCoreRuntime.connections;
123
903
  }
124
904
 
905
+ /**
906
+ * The HTTPS invocation URL of the runtime.
907
+ */
908
+ public get invocationUrl(): string {
909
+ // The URL must URL-encode the runtime ARN (':' -> '%3A', '/' -> '%2F').
910
+ // The ARN is a CDK token, so encode at deploy time via Fn.join/Fn.split.
911
+ const encodedArn = Fn.join(
912
+ '%2F',
913
+ Fn.split(
914
+ '/',
915
+ Fn.join('%3A', Fn.split(':', this.agentCoreRuntime.agentRuntimeArn)),
916
+ ),
917
+ );
918
+ return \`https://bedrock-agentcore.\${Stack.of(this).region}.amazonaws.com/runtimes/\${encodedArn}/invocations?qualifier=DEFAULT\`;
919
+ }
920
+
125
921
  /**
126
922
  * Grants IAM permissions to invoke this agent runtime.
127
923
  *
@@ -156,13 +952,23 @@ exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime
156
952
  exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > core-index.ts 1`] = `
157
953
  "export * from './app.js';
158
954
  export * from './checkov.js';
955
+ export * from './cloudfront.js';
159
956
  export * from './runtime-config.js';
160
957
  export * from './workspace.js';
161
958
  "
162
959
  `;
163
960
 
164
961
  exports[`ts#agent generator > should match snapshot for Terraform generated files > terraform-agent.tf 1`] = `
165
- "variable "env" {
962
+ "terraform {
963
+ required_providers {
964
+ random = {
965
+ source = "hashicorp/random"
966
+ version = "3.9.0"
967
+ }
968
+ }
969
+ }
970
+
971
+ variable "env" {
166
972
  description = "Environment variables to pass to the agent core runtime"
167
973
  type = map(string)
168
974
  default = {}
@@ -184,6 +990,25 @@ variable "tags" {
184
990
  default = {}
185
991
  }
186
992
 
993
+ # VPC Configuration (optional)
994
+ variable "enable_vpc" {
995
+ description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
996
+ type = bool
997
+ default = false
998
+ }
999
+
1000
+ variable "vpc_id" {
1001
+ description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
1002
+ type = string
1003
+ default = null
1004
+ }
1005
+
1006
+ variable "subnet_ids" {
1007
+ description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
1008
+ type = list(string)
1009
+ default = null
1010
+ }
1011
+
187
1012
  variable "appconfig_application_id" {
188
1013
  description = "ID of the shared runtime-config AppConfig application (from \`core/runtime-config/appconfig.application_id\`). The agent reads its runtime configuration from this application."
189
1014
  type = string
@@ -194,11 +1019,153 @@ variable "appconfig_application_arn" {
194
1019
  type = string
195
1020
  }
196
1021
 
1022
+ data "aws_region" "current" {}
1023
+ data "aws_caller_identity" "current" {}
1024
+
1025
+ locals {
1026
+ # Delivery source/destination names have a 60 character maximum. Truncate
1027
+ # the agent name so these stay within the limit.
1028
+ session_access_logs_name_prefix = substr("terraform-snapshot-agent", 0, 30)
1029
+ }
1030
+
1031
+ # Uniquifies resource names below so this construct can be deployed more than
1032
+ # once (e.g. across stages) within the same account/region.
1033
+ resource "random_id" "session_unique_suffix" {
1034
+ byte_length = 4
1035
+ }
1036
+
1037
+ # KMS key encrypting the session bucket and its server access logs.
1038
+ resource "aws_kms_key" "session" {
1039
+ description = "KMS key for terraform-snapshot-agent agent session data"
1040
+ enable_key_rotation = true
1041
+ deletion_window_in_days = 7
1042
+
1043
+ policy = jsonencode({
1044
+ Version = "2012-10-17"
1045
+ Statement = [
1046
+ {
1047
+ Sid = "EnableIAMUserPermissions"
1048
+ Effect = "Allow"
1049
+ Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
1050
+ Action = "kms:*"
1051
+ Resource = "*"
1052
+ },
1053
+ {
1054
+ Sid = "AllowCloudWatchLogs"
1055
+ Effect = "Allow"
1056
+ Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
1057
+ Action = [
1058
+ "kms:Encrypt",
1059
+ "kms:Decrypt",
1060
+ "kms:ReEncrypt*",
1061
+ "kms:GenerateDataKey*",
1062
+ "kms:DescribeKey"
1063
+ ]
1064
+ Resource = "*"
1065
+ Condition = {
1066
+ ArnLike = {
1067
+ "kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:*"
1068
+ }
1069
+ }
1070
+ }
1071
+ ]
1072
+ })
1073
+
1074
+ tags = var.tags
1075
+ }
1076
+
1077
+ # CloudWatch log group receiving the session bucket's server access logs.
1078
+ resource "aws_cloudwatch_log_group" "session_access_logs" {
1079
+ name = "/aws/s3/terraform-snapshot-agent-session-access-logs-\${random_id.session_unique_suffix.hex}"
1080
+ retention_in_days = 365
1081
+ kms_key_id = aws_kms_key.session.arn
1082
+
1083
+ tags = var.tags
1084
+ }
1085
+
1086
+ # Bucket storing the agent's session data
1087
+ resource "aws_s3_bucket" "session" {
1088
+ #checkov:skip=CKV2_AWS_61:Lifecycle configuration not required for session data
1089
+ #checkov:skip=CKV_AWS_144:Cross-region replication not required for session data
1090
+ #checkov:skip=CKV2_AWS_62:Event notifications not required for session data
1091
+ #checkov:skip=CKV_AWS_18:Server access logs are delivered to CloudWatch Logs (see aws_cloudwatch_log_delivery.session)
1092
+ #checkov:skip=CKV_AWS_21:Session data does not need versioning enabled
1093
+ force_destroy = false
1094
+ }
1095
+
1096
+ resource "aws_s3_bucket_server_side_encryption_configuration" "session" {
1097
+ bucket = aws_s3_bucket.session.id
1098
+
1099
+ rule {
1100
+ apply_server_side_encryption_by_default {
1101
+ kms_master_key_id = aws_kms_key.session.arn
1102
+ sse_algorithm = "aws:kms"
1103
+ }
1104
+ }
1105
+ }
1106
+
1107
+ resource "aws_s3_bucket_public_access_block" "session" {
1108
+ bucket = aws_s3_bucket.session.id
1109
+
1110
+ block_public_acls = true
1111
+ block_public_policy = true
1112
+ ignore_public_acls = true
1113
+ restrict_public_buckets = true
1114
+ }
1115
+
1116
+ resource "aws_s3_bucket_policy" "session" {
1117
+ bucket = aws_s3_bucket.session.id
1118
+
1119
+ policy = jsonencode({
1120
+ Version = "2012-10-17"
1121
+ Statement = [
1122
+ {
1123
+ Sid = "DenyInsecureConnections"
1124
+ Effect = "Deny"
1125
+ Principal = "*"
1126
+ Action = "s3:*"
1127
+ Resource = [
1128
+ aws_s3_bucket.session.arn,
1129
+ "\${aws_s3_bucket.session.arn}/*"
1130
+ ]
1131
+ Condition = {
1132
+ Bool = {
1133
+ "aws:SecureTransport" = "false"
1134
+ }
1135
+ }
1136
+ }
1137
+ ]
1138
+ })
1139
+ }
1140
+
1141
+ # Deliver the session bucket's server access logs to CloudWatch Logs.
1142
+ resource "aws_cloudwatch_log_delivery_source" "session" {
1143
+ name = "\${local.session_access_logs_name_prefix}-access-logs-source-\${random_id.session_unique_suffix.hex}"
1144
+ log_type = "S3_SERVER_ACCESS_LOGS"
1145
+ resource_arn = aws_s3_bucket.session.arn
1146
+ }
1147
+
1148
+ resource "aws_cloudwatch_log_delivery_destination" "session" {
1149
+ name = "\${local.session_access_logs_name_prefix}-access-logs-dest-\${random_id.session_unique_suffix.hex}"
1150
+
1151
+ delivery_destination_configuration {
1152
+ destination_resource_arn = aws_cloudwatch_log_group.session_access_logs.arn
1153
+ }
1154
+ }
1155
+
1156
+ resource "aws_cloudwatch_log_delivery" "session" {
1157
+ delivery_source_name = aws_cloudwatch_log_delivery_source.session.name
1158
+ delivery_destination_arn = aws_cloudwatch_log_delivery_destination.session.arn
1159
+ }
1160
+
197
1161
  module "agent_core_runtime" {
198
1162
  source = "../../../core/agent-core"
199
1163
  agent_runtime_name = "TerraformSnapshotAgent"
200
1164
  docker_image_tag = "proj-terraform-snapshot-agent:latest"
201
1165
  server_protocol = "HTTP"
1166
+ enable_vpc = var.enable_vpc
1167
+ vpc_id = var.vpc_id
1168
+ subnet_ids = var.subnet_ids
202
1169
 
203
1170
  env = merge({
204
1171
  RUNTIME_CONFIG_APP_ID = var.appconfig_application_id
@@ -223,6 +1190,29 @@ module "agent_core_runtime" {
223
1190
  "arn:aws:bedrock:*:*:foundation-model/*",
224
1191
  "arn:aws:bedrock:*:*:inference-profile/*"
225
1192
  ]
1193
+ },
1194
+ # Grant access for the agent to read/write its session data
1195
+ {
1196
+ Effect = "Allow"
1197
+ Action = [
1198
+ "s3:GetObject",
1199
+ "s3:PutObject",
1200
+ "s3:DeleteObject",
1201
+ "s3:ListBucket"
1202
+ ]
1203
+ Resource = [
1204
+ aws_s3_bucket.session.arn,
1205
+ "\${aws_s3_bucket.session.arn}/*"
1206
+ ]
1207
+ },
1208
+ # Grant access for the agent to use the session bucket's KMS key
1209
+ {
1210
+ Effect = "Allow"
1211
+ Action = [
1212
+ "kms:Decrypt",
1213
+ "kms:GenerateDataKey*"
1214
+ ]
1215
+ Resource = [aws_kms_key.session.arn]
226
1216
  }
227
1217
  ], var.additional_iam_policy_statements)
228
1218
  tags = var.tags
@@ -234,7 +1224,7 @@ module "add_agent_runtime_to_runtime_config" {
234
1224
 
235
1225
  namespace = "agentcore"
236
1226
  key = "agentRuntimes"
237
- value = { "TerraformSnapshotAgent" = module.agent_core_runtime.agent_core_runtime_arn }
1227
+ value = { "TerraformSnapshotAgent" = { arn = module.agent_core_runtime.agent_core_runtime_arn, session = { bucketName = aws_s3_bucket.session.bucket } } }
238
1228
 
239
1229
  depends_on = [module.agent_core_runtime]
240
1230
  }
@@ -249,10 +1239,20 @@ output "agent_core_runtime_arn" {
249
1239
  value = module.agent_core_runtime.agent_core_runtime_arn
250
1240
  }
251
1241
 
1242
+ output "invocation_url" {
1243
+ description = "HTTPS invocation URL of the runtime"
1244
+ value = module.agent_core_runtime.invocation_url
1245
+ }
1246
+
252
1247
  output "appconfig_application_id" {
253
1248
  description = "AppConfig Application ID for runtime config (passthrough of the shared \`appconfig_application_id\` input)."
254
1249
  value = var.appconfig_application_id
255
1250
  }
1251
+
1252
+ output "security_group_id" {
1253
+ description = "Security group ID of the agent core runtime, for use in ingress rules on resources it must reach (e.g. a database). Null unless enable_vpc is true."
1254
+ value = module.agent_core_runtime.security_group_id
1255
+ }
256
1256
  "
257
1257
  `;
258
1258
 
@@ -263,15 +1263,15 @@ exports[`ts#agent generator > should match snapshot for Terraform generated file
263
1263
  required_providers {
264
1264
  aws = {
265
1265
  source = "hashicorp/aws"
266
- version = ">= 6.23"
1266
+ version = "6.60.0"
267
1267
  }
268
1268
  null = {
269
1269
  source = "hashicorp/null"
270
- version = ">= 3.0"
1270
+ version = "3.3.0"
271
1271
  }
272
1272
  random = {
273
1273
  source = "hashicorp/random"
274
- version = ">= 3.0"
1274
+ version = "3.9.0"
275
1275
  }
276
1276
  }
277
1277
  }
@@ -329,6 +1329,30 @@ variable "additional_iam_policy_statements" {
329
1329
  default = []
330
1330
  }
331
1331
 
1332
+ # VPC Configuration (optional)
1333
+ variable "enable_vpc" {
1334
+ description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
1335
+ type = bool
1336
+ default = false
1337
+ }
1338
+
1339
+ variable "vpc_id" {
1340
+ description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
1341
+ type = string
1342
+ default = null
1343
+
1344
+ validation {
1345
+ condition = !var.enable_vpc || (var.vpc_id != null && var.subnet_ids != null)
1346
+ error_message = "vpc_id and subnet_ids must be set when enable_vpc is true."
1347
+ }
1348
+ }
1349
+
1350
+ variable "subnet_ids" {
1351
+ description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
1352
+ type = list(string)
1353
+ default = null
1354
+ }
1355
+
332
1356
  variable "tags" {
333
1357
  description = "Tags to apply to resources"
334
1358
  type = map(string)
@@ -354,8 +1378,7 @@ resource "aws_ecr_repository" "agent_core_repository" {
354
1378
  #checkov:skip=CKV_AWS_136:AES256 encryption is sufficient for ECR repositories
355
1379
  name = "\${lower(var.agent_runtime_name)}_repository_\${random_id.unique_suffix.hex}"
356
1380
 
357
- #checkov:skip=CKV_AWS_51:Image tag is reused for latest deployments
358
- image_tag_mutability = "MUTABLE"
1381
+ image_tag_mutability = "IMMUTABLE"
359
1382
  force_delete = true
360
1383
 
361
1384
  image_scanning_configuration {
@@ -529,28 +1552,62 @@ data "external" "docker_digest" {
529
1552
  program = ["sh", "-c", "echo '{\\"digest\\":\\"'$(docker inspect \${var.docker_image_tag} --format '{{.Id}}')'\\"}' "]
530
1553
  }
531
1554
 
1555
+ locals {
1556
+ # Content-based, immutable image tag derived from the local image digest
1557
+ image_tag = replace(data.external.docker_digest.result.digest, "sha256:", "")
1558
+ }
1559
+
532
1560
  # Null resource for container image publish
533
1561
  resource "null_resource" "docker_publish" {
534
1562
  triggers = {
535
1563
  docker_digest = data.external.docker_digest.result.digest
536
1564
  repository_url = aws_ecr_repository.agent_core_repository.repository_url
537
1565
  docker_image_tag = var.docker_image_tag
1566
+ image_tag = local.image_tag
538
1567
  }
539
1568
 
540
1569
  provisioner "local-exec" {
541
1570
  command = <<-EOT
542
1571
  # Get ECR login token
543
- aws ecr get-login-password --region \${local.aws_region} | docker login --username AWS --password-stdin \${self.triggers.repository_url}
1572
+ aws ecr get-login-password --region "$AWS_REGION" | docker login --username AWS --password-stdin "$REPOSITORY_URL"
544
1573
 
545
- # Tag the image
546
- docker tag \${self.triggers.docker_image_tag} \${self.triggers.repository_url}:latest
1574
+ # Tag the image with the immutable content-based tag
1575
+ docker tag "$DOCKER_IMAGE_TAG" "$REPOSITORY_URL:$IMAGE_TAG"
547
1576
 
548
1577
  # Push the image
549
- docker push \${self.triggers.repository_url}:latest
1578
+ docker push "$REPOSITORY_URL:$IMAGE_TAG"
550
1579
  EOT
1580
+ environment = {
1581
+ AWS_REGION = local.aws_region
1582
+ REPOSITORY_URL = self.triggers.repository_url
1583
+ DOCKER_IMAGE_TAG = self.triggers.docker_image_tag
1584
+ IMAGE_TAG = self.triggers.image_tag
1585
+ }
551
1586
  }
552
1587
 
553
- depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
1588
+ depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
1589
+ }
1590
+
1591
+ # Security group for the agent core runtime, used when running inside a VPC
1592
+ resource "aws_security_group" "agent_core_runtime" {
1593
+ count = var.enable_vpc ? 1 : 0
1594
+
1595
+ #checkov:skip=CKV2_AWS_5:Attached to the runtime via network_configuration; Checkov cannot resolve this reference
1596
+ name_prefix = "\${var.agent_runtime_name}-runtime-"
1597
+ description = "Security group for the \${var.agent_runtime_name} agent core runtime"
1598
+ vpc_id = var.vpc_id
1599
+ tags = var.tags
1600
+ }
1601
+
1602
+ resource "aws_vpc_security_group_egress_rule" "agent_core_runtime_https" {
1603
+ count = var.enable_vpc ? 1 : 0
1604
+
1605
+ security_group_id = aws_security_group.agent_core_runtime[0].id
1606
+ cidr_ipv4 = "0.0.0.0/0"
1607
+ from_port = 443
1608
+ to_port = 443
1609
+ ip_protocol = "tcp"
1610
+ description = "Allow outbound HTTPS to AWS service endpoints"
554
1611
  }
555
1612
 
556
1613
  # Bedrock AgentCore Agent Runtime
@@ -561,7 +1618,7 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
561
1618
 
562
1619
  agent_runtime_artifact {
563
1620
  container_configuration {
564
- container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}:latest"
1621
+ container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}:\${local.image_tag}"
565
1622
  }
566
1623
  }
567
1624
 
@@ -578,8 +1635,24 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
578
1635
  }
579
1636
  }
580
1637
 
1638
+ # Receive the caller's Authorization header (validated by the JWT authorizer).
1639
+ dynamic "request_header_configuration" {
1640
+ for_each = var.authorizer_configuration != null && try(var.authorizer_configuration.custom_jwt_authorizer, null) != null ? [1] : []
1641
+ content {
1642
+ request_header_allowlist = ["Authorization"]
1643
+ }
1644
+ }
1645
+
581
1646
  network_configuration {
582
- network_mode = "PUBLIC"
1647
+ network_mode = var.enable_vpc ? "VPC" : "PUBLIC"
1648
+
1649
+ dynamic "network_mode_config" {
1650
+ for_each = var.enable_vpc ? [1] : []
1651
+ content {
1652
+ security_groups = [aws_security_group.agent_core_runtime[0].id]
1653
+ subnets = var.subnet_ids
1654
+ }
1655
+ }
583
1656
  }
584
1657
 
585
1658
  protocol_configuration {
@@ -594,7 +1667,70 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
594
1667
  ]
595
1668
  }
596
1669
 
1670
+ # MCP consumers (e.g. gateway targets, which fetch tools at creation) can race
1671
+ # the runtime's first cold start, so probe it until it serves MCP. The ARN
1672
+ # output is routed through this resource so consumers wait for readiness.
1673
+ resource "null_resource" "runtime_ready" {
1674
+ count = var.server_protocol == "MCP" ? 1 : 0
1675
+
1676
+ triggers = {
1677
+ runtime_arn = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
1678
+ }
1679
+
1680
+ provisioner "local-exec" {
1681
+ command = <<-EOT
1682
+ uv run --with boto3==1.43.67 python -c "
1683
+ import boto3
1684
+ import json
1685
+ import os
1686
+ import time
1687
+ import uuid
1688
+
1689
+ runtime_arn = os.environ['RUNTIME_ARN']
1690
+ client = boto3.client('bedrock-agentcore')
1691
+ initialize_request = json.dumps({
1692
+ 'jsonrpc': '2.0',
1693
+ 'id': 1,
1694
+ 'method': 'initialize',
1695
+ 'params': {
1696
+ 'protocolVersion': '2025-03-26',
1697
+ 'capabilities': {},
1698
+ 'clientInfo': {'name': 'readiness-probe', 'version': '1.0'},
1699
+ },
1700
+ })
1701
+
1702
+ deadline = time.time() + 5 * 60
1703
+ while True:
1704
+ try:
1705
+ client.invoke_agent_runtime(
1706
+ agentRuntimeArn=runtime_arn,
1707
+ runtimeSessionId=f'readiness-probe-{uuid.uuid4()}',
1708
+ contentType='application/json',
1709
+ accept='application/json, text/event-stream',
1710
+ payload=initialize_request,
1711
+ )
1712
+ break
1713
+ except Exception:
1714
+ if time.time() >= deadline:
1715
+ raise
1716
+ time.sleep(5)
1717
+
1718
+ print(f'Runtime {runtime_arn} is serving MCP')
1719
+ "
1720
+ EOT
1721
+ environment = {
1722
+ RUNTIME_ARN = self.triggers.runtime_arn
1723
+ }
1724
+ }
1725
+ }
1726
+
597
1727
  # Outputs
1728
+ locals {
1729
+ # For MCP runtimes the ARN flows through the readiness probe, so consumers
1730
+ # wait until the runtime serves MCP.
1731
+ ready_runtime_arn = var.server_protocol == "MCP" ? null_resource.runtime_ready[0].triggers.runtime_arn : aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
1732
+ }
1733
+
598
1734
  output "agent_core_runtime_role_arn" {
599
1735
  description = "ARN of the Agent Core Runtime IAM role"
600
1736
  value = aws_iam_role.agent_core_runtime_role.arn
@@ -611,8 +1747,13 @@ output "agent_runtime_name" {
611
1747
  }
612
1748
 
613
1749
  output "agent_core_runtime_arn" {
614
- description = "ARN of the Bedrock Agent Core runtime"
615
- value = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
1750
+ description = "ARN of the Bedrock Agent Core runtime. For MCP runtimes the value flows through the readiness probe, so consumers wait until the runtime serves MCP."
1751
+ value = local.ready_runtime_arn
1752
+ }
1753
+
1754
+ output "invocation_url" {
1755
+ description = "HTTPS invocation URL of the runtime. MCP runtimes get the MCP endpoint (e.g. for use as a Gateway target endpoint), A2A runtimes the A2A endpoint (trailing slash required). For MCP runtimes the value flows through the readiness probe, so consumers wait until the runtime serves MCP."
1756
+ value = "https://bedrock-agentcore.\${local.aws_region}.amazonaws.com/runtimes/\${urlencode(local.ready_runtime_arn)}/invocations\${var.server_protocol == "A2A" ? "/" : "?qualifier=DEFAULT"}"
616
1757
  }
617
1758
 
618
1759
  output "agent_runtime_id" {
@@ -624,11 +1765,21 @@ output "agent_runtime_version" {
624
1765
  description = "Version of the Bedrock Agent Core runtime"
625
1766
  value = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_version
626
1767
  }
1768
+
1769
+ output "security_group_id" {
1770
+ description = "Security group ID of the agent core runtime, for use in ingress rules on resources it must reach (e.g. a database). Null unless enable_vpc is true."
1771
+ value = var.enable_vpc ? aws_security_group.agent_core_runtime[0].id : null
1772
+ }
627
1773
  "
628
1774
  `;
629
1775
 
630
1776
  exports[`ts#agent generator > should match snapshot for generated files > agent-agent.ts 1`] = `
631
1777
  "import { Agent, tool } from '@strands-agents/sdk';
1778
+ import {
1779
+ ModelErrorLoggingPlugin,
1780
+ ToolErrorLoggingPlugin,
1781
+ } from '@proj/agent-connection';
1782
+ import { getSessionManager } from './session.js';
632
1783
  import { z } from 'zod';
633
1784
 
634
1785
  const multiply = tool({
@@ -641,13 +1792,17 @@ const multiply = tool({
641
1792
  callback: ({ a, b }) => a * b,
642
1793
  });
643
1794
 
644
- export const getAgent = async () =>
645
- new Agent({
1795
+ export const getAgent = async () => {
1796
+ const agent = new Agent({
646
1797
  systemPrompt: \`You are a mathematical wizard.
647
1798
  Use your tools for mathematical tasks.
648
1799
  Refer to tools as your 'spellbook'.\`,
649
1800
  tools: [multiply],
1801
+ sessionManager: await getSessionManager(),
1802
+ plugins: [new ModelErrorLoggingPlugin(), new ToolErrorLoggingPlugin()],
650
1803
  });
1804
+ return agent;
1805
+ };
651
1806
  "
652
1807
  `;
653
1808
 
@@ -930,7 +2085,7 @@ exports[`ts#agent generator > should match snapshot for generated files > agent-
930
2085
  "import { publicProcedure, t } from './init.js';
931
2086
  import { z } from 'zod';
932
2087
  import { zAsyncIterable } from './schema/z-async-iterable.js';
933
- import { enterSessionContext, withSessionId } from ':proj/agent-connection';
2088
+ import { enterSessionContext, withSessionId } from '@proj/agent-connection';
934
2089
  import { getAgent } from './agent.js';
935
2090
 
936
2091
  export const router = t.router;
@@ -939,7 +2094,7 @@ const agent = withSessionId(getAgent);
939
2094
 
940
2095
  export const appRouter = router({
941
2096
  invoke: publicProcedure
942
- .input(z.object({ message: z.string() }))
2097
+ .input(z.object({ prompt: z.string().max(100000) }))
943
2098
  .output(
944
2099
  zAsyncIterable({
945
2100
  yield: z.string(),
@@ -949,7 +2104,7 @@ export const appRouter = router({
949
2104
  .subscription(async function* (opts) {
950
2105
  // Bind the session ID for this subscription so downstream MCP / A2A clients forward it on outbound calls.
951
2106
  enterSessionContext(opts.ctx.sessionId);
952
- for await (const event of agent.stream(opts.input.message)) {
2107
+ for await (const event of agent.stream(opts.input.prompt)) {
953
2108
  if (
954
2109
  event.type === 'modelStreamUpdateEvent' &&
955
2110
  event.event.type === 'modelContentBlockDeltaEvent' &&
@@ -1048,3 +2203,275 @@ export function zAsyncIterable<
1048
2203
  }
1049
2204
  "
1050
2205
  `;
2206
+
2207
+ exports[`ts#agent generator > should not create session bucket infrastructure when session is in-memory (Terraform) > terraform-agent.tf (in-memory) 1`] = `
2208
+ "variable "env" {
2209
+ description = "Environment variables to pass to the agent core runtime"
2210
+ type = map(string)
2211
+ default = {}
2212
+ }
2213
+
2214
+ variable "additional_iam_policy_statements" {
2215
+ description = "Additional IAM policy statements to attach to the agent core runtime role"
2216
+ type = list(object({
2217
+ Effect = string
2218
+ Action = list(string)
2219
+ Resource = list(string)
2220
+ }))
2221
+ default = []
2222
+ }
2223
+
2224
+ variable "tags" {
2225
+ description = "Tags to apply to resources"
2226
+ type = map(string)
2227
+ default = {}
2228
+ }
2229
+
2230
+ # VPC Configuration (optional)
2231
+ variable "enable_vpc" {
2232
+ description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
2233
+ type = bool
2234
+ default = false
2235
+ }
2236
+
2237
+ variable "vpc_id" {
2238
+ description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
2239
+ type = string
2240
+ default = null
2241
+ }
2242
+
2243
+ variable "subnet_ids" {
2244
+ description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
2245
+ type = list(string)
2246
+ default = null
2247
+ }
2248
+
2249
+ variable "appconfig_application_id" {
2250
+ description = "ID of the shared runtime-config AppConfig application (from \`core/runtime-config/appconfig.application_id\`). The agent reads its runtime configuration from this application."
2251
+ type = string
2252
+ }
2253
+
2254
+ variable "appconfig_application_arn" {
2255
+ description = "ARN of the shared runtime-config AppConfig application (from \`core/runtime-config/appconfig.application_arn\`). Used to scope the IAM read permission granted to the agent runtime."
2256
+ type = string
2257
+ }
2258
+
2259
+ module "agent_core_runtime" {
2260
+ source = "../../../core/agent-core"
2261
+ agent_runtime_name = "InMemoryTerraformAgent"
2262
+ docker_image_tag = "proj-in-memory-terraform-agent:latest"
2263
+ server_protocol = "HTTP"
2264
+ enable_vpc = var.enable_vpc
2265
+ vpc_id = var.vpc_id
2266
+ subnet_ids = var.subnet_ids
2267
+
2268
+ env = merge({
2269
+ RUNTIME_CONFIG_APP_ID = var.appconfig_application_id
2270
+ }, var.env)
2271
+ additional_iam_policy_statements = concat([
2272
+ {
2273
+ Effect = "Allow"
2274
+ Action = [
2275
+ "appconfig:StartConfigurationSession",
2276
+ "appconfig:GetLatestConfiguration"
2277
+ ]
2278
+ Resource = ["\${var.appconfig_application_arn}/*"]
2279
+ },
2280
+ # Grant access for the agent to invoke bedrock models
2281
+ {
2282
+ Effect = "Allow"
2283
+ Action = [
2284
+ "bedrock:InvokeModel",
2285
+ "bedrock:InvokeModelWithResponseStream"
2286
+ ]
2287
+ Resource = [
2288
+ "arn:aws:bedrock:*:*:foundation-model/*",
2289
+ "arn:aws:bedrock:*:*:inference-profile/*"
2290
+ ]
2291
+ }
2292
+ ], var.additional_iam_policy_statements)
2293
+ tags = var.tags
2294
+ }
2295
+
2296
+ # Add agent runtime ARN to runtime config
2297
+ module "add_agent_runtime_to_runtime_config" {
2298
+ source = "../../../core/runtime-config/entry"
2299
+
2300
+ namespace = "agentcore"
2301
+ key = "agentRuntimes"
2302
+ value = { "InMemoryTerraformAgent" = { arn = module.agent_core_runtime.agent_core_runtime_arn } }
2303
+
2304
+ depends_on = [module.agent_core_runtime]
2305
+ }
2306
+
2307
+ output "agent_core_runtime_role_arn" {
2308
+ description = "ARN of the agent core runtime role"
2309
+ value = module.agent_core_runtime.agent_core_runtime_role_arn
2310
+ }
2311
+
2312
+ output "agent_core_runtime_arn" {
2313
+ description = "ARN of the Bedrock Agent Core runtime"
2314
+ value = module.agent_core_runtime.agent_core_runtime_arn
2315
+ }
2316
+
2317
+ output "invocation_url" {
2318
+ description = "HTTPS invocation URL of the runtime"
2319
+ value = module.agent_core_runtime.invocation_url
2320
+ }
2321
+
2322
+ output "appconfig_application_id" {
2323
+ description = "AppConfig Application ID for runtime config (passthrough of the shared \`appconfig_application_id\` input)."
2324
+ value = var.appconfig_application_id
2325
+ }
2326
+
2327
+ output "security_group_id" {
2328
+ description = "Security group ID of the agent core runtime, for use in ingress rules on resources it must reach (e.g. a database). Null unless enable_vpc is true."
2329
+ value = module.agent_core_runtime.security_group_id
2330
+ }
2331
+ "
2332
+ `;
2333
+
2334
+ exports[`ts#agent generator > should not create session bucket infrastructure when session is in-memory > agent-construct.ts (in-memory) 1`] = `
2335
+ "import { Fn, Lazy, Names, Stack } from 'aws-cdk-lib';
2336
+ import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
2337
+ import { Connections, IConnectable } from 'aws-cdk-lib/aws-ec2';
2338
+ import { Construct } from 'constructs';
2339
+ import * as path from 'path';
2340
+ import * as url from 'url';
2341
+ import {
2342
+ AgentRuntimeArtifact,
2343
+ ProtocolType,
2344
+ Runtime,
2345
+ RuntimeProps,
2346
+ } from 'aws-cdk-lib/aws-bedrockagentcore';
2347
+ import {
2348
+ PolicyStatement,
2349
+ IGrantable,
2350
+ IPrincipal,
2351
+ Grant,
2352
+ } from 'aws-cdk-lib/aws-iam';
2353
+ import { RuntimeConfig } from '../../../core/runtime-config.js';
2354
+ import { findWorkspaceRoot } from '../../../core/workspace.js';
2355
+
2356
+ export type InMemoryAgentProps = Omit<
2357
+ RuntimeProps,
2358
+ | 'runtimeName'
2359
+ | 'protocolConfiguration'
2360
+ | 'agentRuntimeArtifact'
2361
+ | 'authorizerConfiguration'
2362
+ >;
2363
+
2364
+ export class InMemoryAgent
2365
+ extends Construct
2366
+ implements IGrantable, IConnectable
2367
+ {
2368
+ public readonly dockerImage: AgentRuntimeArtifact;
2369
+ public readonly agentCoreRuntime: Runtime;
2370
+ /** Default Gateway target name for this agent. */
2371
+ public readonly agentName = 'in-memory-agent';
2372
+ /** Inbound auth — a fronting Gateway uses this to pick its outbound credential. */
2373
+ public readonly auth = 'iam';
2374
+
2375
+ constructor(scope: Construct, id: string, props?: InMemoryAgentProps) {
2376
+ super(scope, id);
2377
+
2378
+ const rc = RuntimeConfig.ensure(this);
2379
+
2380
+ // Resolve the bundle output directory containing the Dockerfile and built artifacts
2381
+ const bundleDir = path.join(
2382
+ findWorkspaceRoot(url.fileURLToPath(new URL(import.meta.url))),
2383
+ 'dist/apps/test-project/bundle/agent/in-memory-agent',
2384
+ );
2385
+
2386
+ this.dockerImage = AgentRuntimeArtifact.fromAsset(bundleDir, {
2387
+ platform: Platform.LINUX_ARM64,
2388
+ });
2389
+
2390
+ this.agentCoreRuntime = new Runtime(this, 'InMemoryAgent', {
2391
+ runtimeName: Lazy.string({
2392
+ produce: () =>
2393
+ Names.uniqueResourceName(this.agentCoreRuntime, { maxLength: 40 }),
2394
+ }),
2395
+ protocolConfiguration: ProtocolType.HTTP,
2396
+ agentRuntimeArtifact: this.dockerImage,
2397
+ ...props,
2398
+ environmentVariables: {
2399
+ RUNTIME_CONFIG_APP_ID: rc.appConfigApplicationId,
2400
+ ...props?.environmentVariables,
2401
+ },
2402
+ });
2403
+
2404
+ // Grant access for the agent to invoke bedrock models
2405
+ this.agentCoreRuntime.addToRolePolicy(
2406
+ new PolicyStatement({
2407
+ actions: [
2408
+ 'bedrock:InvokeModel',
2409
+ 'bedrock:InvokeModelWithResponseStream',
2410
+ ],
2411
+ resources: [
2412
+ 'arn:aws:bedrock:*:*:foundation-model/*',
2413
+ 'arn:aws:bedrock:*:*:inference-profile/*',
2414
+ ],
2415
+ }),
2416
+ );
2417
+
2418
+ rc.grantReadAppConfig(this.agentCoreRuntime);
2419
+
2420
+ rc.set('agentcore', 'agentRuntimes', {
2421
+ ...rc.get('agentcore').agentRuntimes,
2422
+ InMemoryAgent: {
2423
+ arn: this.agentCoreRuntime.agentRuntimeArn,
2424
+ },
2425
+ });
2426
+ }
2427
+
2428
+ /**
2429
+ * The principal to grant permissions to.
2430
+ */
2431
+ public get grantPrincipal(): IPrincipal {
2432
+ return this.agentCoreRuntime.grantPrincipal;
2433
+ }
2434
+
2435
+ /**
2436
+ * Network connections for this agent runtime.
2437
+ */
2438
+ public get connections(): Connections {
2439
+ return this.agentCoreRuntime.connections;
2440
+ }
2441
+
2442
+ /**
2443
+ * The HTTPS invocation URL of the runtime.
2444
+ */
2445
+ public get invocationUrl(): string {
2446
+ // The URL must URL-encode the runtime ARN (':' -> '%3A', '/' -> '%2F').
2447
+ // The ARN is a CDK token, so encode at deploy time via Fn.join/Fn.split.
2448
+ const encodedArn = Fn.join(
2449
+ '%2F',
2450
+ Fn.split(
2451
+ '/',
2452
+ Fn.join('%3A', Fn.split(':', this.agentCoreRuntime.agentRuntimeArn)),
2453
+ ),
2454
+ );
2455
+ return \`https://bedrock-agentcore.\${Stack.of(this).region}.amazonaws.com/runtimes/\${encodedArn}/invocations?qualifier=DEFAULT\`;
2456
+ }
2457
+
2458
+ /**
2459
+ * Grants IAM permissions to invoke this agent runtime.
2460
+ *
2461
+ * @param grantee - The IAM principal to grant permissions to
2462
+ */
2463
+ public grantInvokeAccess(grantee: IGrantable) {
2464
+ this.agentCoreRuntime.grantInvoke(grantee);
2465
+
2466
+ Grant.addToPrincipal({
2467
+ grantee,
2468
+ actions: ['bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream'],
2469
+ resourceArns: [
2470
+ this.agentCoreRuntime.agentRuntimeArn,
2471
+ \`\${this.agentCoreRuntime.agentRuntimeArn}/*\`,
2472
+ ],
2473
+ });
2474
+ }
2475
+ }
2476
+ "
2477
+ `;