@aws/nx-plugin 1.0.0-rc.8 → 1.0.0-rc.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1452) hide show
  1. package/LICENSE-THIRD-PARTY +6006 -4000
  2. package/README.md +16 -96
  3. package/generators.json +162 -10
  4. package/migrations.json +206 -0
  5. package/package.json +40 -21
  6. package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +295 -0
  7. package/src/agentcore-gateway/agent-connection/generator.d.ts +19 -0
  8. package/src/agentcore-gateway/agent-connection/generator.js +95 -0
  9. package/src/agentcore-gateway/agent-connection/generator.js.map +1 -0
  10. package/src/agentcore-gateway/agent-connection/schema.d.js +6 -0
  11. package/src/agentcore-gateway/agent-connection/schema.d.js.map +1 -0
  12. package/src/agentcore-gateway/agent-connection/schema.d.ts +13 -0
  13. package/src/agentcore-gateway/agent-connection/schema.json +31 -0
  14. package/src/agentcore-gateway/attach-upstream.d.ts +49 -0
  15. package/src/agentcore-gateway/attach-upstream.js +59 -0
  16. package/src/agentcore-gateway/attach-upstream.js.map +1 -0
  17. package/src/agentcore-gateway/files/cedar/policies/README.md +61 -0
  18. package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +26 -0
  19. package/src/agentcore-gateway/files/project/http/local-dev.ts.template +77 -0
  20. package/src/agentcore-gateway/files/project/mcp/local-dev.ts.template +134 -0
  21. package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
  22. package/src/agentcore-gateway/gateway-connection/generator.js +103 -0
  23. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
  24. package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
  25. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
  26. package/src/agentcore-gateway/gateway-connection/schema.d.ts +13 -0
  27. package/src/agentcore-gateway/gateway-connection/schema.json +31 -0
  28. package/src/agentcore-gateway/generator.d.ts +89 -0
  29. package/src/agentcore-gateway/generator.js +212 -0
  30. package/src/agentcore-gateway/generator.js.map +1 -0
  31. package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
  32. package/src/agentcore-gateway/mcp-connection/generator.js +61 -0
  33. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
  34. package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
  35. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
  36. package/src/agentcore-gateway/mcp-connection/schema.d.ts +13 -0
  37. package/src/agentcore-gateway/mcp-connection/schema.json +31 -0
  38. package/src/agentcore-gateway/react-connection/__snapshots__/generator.spec.ts.snap +68 -0
  39. package/src/agentcore-gateway/react-connection/generator.d.ts +19 -0
  40. package/src/agentcore-gateway/react-connection/generator.js +119 -0
  41. package/src/agentcore-gateway/react-connection/generator.js.map +1 -0
  42. package/src/agentcore-gateway/react-connection/schema.d.js +6 -0
  43. package/src/agentcore-gateway/react-connection/schema.d.js.map +1 -0
  44. package/src/agentcore-gateway/react-connection/schema.d.ts +13 -0
  45. package/src/agentcore-gateway/react-connection/schema.json +31 -0
  46. package/src/agentcore-gateway/schema.d.js +6 -0
  47. package/src/agentcore-gateway/schema.d.js.map +1 -0
  48. package/src/agentcore-gateway/schema.d.ts +17 -0
  49. package/src/agentcore-gateway/schema.json +72 -0
  50. package/src/agentcore-harness/__snapshots__/generator.spec.ts.snap +238 -0
  51. package/src/agentcore-harness/files/project/README.md.template +83 -0
  52. package/src/agentcore-harness/files/project/scripts/chat.ts.template +99 -0
  53. package/src/agentcore-harness/files/project/src/PROMPT.md.template +16 -0
  54. package/src/agentcore-harness/generator.d.ts +62 -0
  55. package/src/agentcore-harness/generator.js +158 -0
  56. package/src/agentcore-harness/generator.js.map +1 -0
  57. package/src/agentcore-harness/schema.d.js +8 -0
  58. package/src/agentcore-harness/schema.d.js.map +1 -0
  59. package/src/agentcore-harness/schema.d.ts +17 -0
  60. package/src/agentcore-harness/schema.json +53 -0
  61. package/src/connection/agent-local-dev.d.ts +49 -0
  62. package/src/connection/agent-local-dev.js +84 -0
  63. package/src/connection/agent-local-dev.js.map +1 -0
  64. package/src/connection/agent-runtime-config.js +9 -14
  65. package/src/connection/agent-runtime-config.js.map +1 -1
  66. package/src/connection/gateway-runtime-config.d.ts +19 -0
  67. package/src/connection/gateway-runtime-config.js +47 -0
  68. package/src/connection/gateway-runtime-config.js.map +1 -0
  69. package/src/connection/generator.d.ts +4 -11
  70. package/src/connection/generator.js +172 -194
  71. package/src/connection/generator.js.map +1 -1
  72. package/src/connection/{serve-local.d.ts → local-dev.d.ts} +3 -3
  73. package/src/connection/local-dev.js +37 -0
  74. package/src/connection/local-dev.js.map +1 -0
  75. package/src/connection/scaffold-catalog.d.ts +267 -0
  76. package/src/connection/scaffold-catalog.js +347 -0
  77. package/src/connection/scaffold-catalog.js.map +1 -0
  78. package/src/connection/schema-resolver.d.ts +5 -0
  79. package/src/connection/schema-resolver.js +27 -0
  80. package/src/connection/schema-resolver.js.map +1 -0
  81. package/src/connection/schema.d.js +6 -0
  82. package/src/connection/schema.d.js.map +1 -0
  83. package/src/connection/schema.d.ts +1 -0
  84. package/src/connection/schema.json +5 -0
  85. package/src/connection/supported-connections.d.ts +116 -0
  86. package/src/connection/supported-connections.js +163 -0
  87. package/src/connection/supported-connections.js.map +1 -0
  88. package/src/index.d.ts +1 -1
  89. package/src/index.js +2 -5
  90. package/src/index.js.map +1 -1
  91. package/src/infra/app/__snapshots__/generator.spec.ts.snap +119 -72
  92. package/src/infra/app/files/app/README.md.template +8 -4
  93. package/src/infra/app/files/app/src/main.ts.template +5 -1
  94. package/src/infra/app/files/app/src/stages/application-stage.ts.template +1 -1
  95. package/src/infra/app/generator.d.ts +44 -1
  96. package/src/infra/app/generator.js +195 -127
  97. package/src/infra/app/generator.js.map +1 -1
  98. package/src/infra/app/schema.d.js +6 -0
  99. package/src/infra/app/schema.d.js.map +1 -0
  100. package/src/infra/app/schema.d.ts +1 -1
  101. package/src/infra/app/schema.json +5 -0
  102. package/src/init/generator.d.ts +31 -0
  103. package/src/init/generator.js +46 -0
  104. package/src/init/generator.js.map +1 -0
  105. package/src/init/schema.d.js +6 -0
  106. package/src/init/schema.d.js.map +1 -0
  107. package/src/init/schema.d.ts +16 -0
  108. package/src/init/schema.json +35 -0
  109. package/src/internal/test-matrix/generator.d.ts +29 -0
  110. package/src/internal/test-matrix/generator.js +713 -0
  111. package/src/internal/test-matrix/generator.js.map +1 -0
  112. package/src/internal/test-matrix/schema.d.js +6 -0
  113. package/src/internal/test-matrix/schema.d.js.map +1 -0
  114. package/src/internal/test-matrix/schema.d.ts +12 -0
  115. package/src/internal/test-matrix/schema.json +21 -0
  116. package/src/license/config-types.d.ts +2 -2
  117. package/src/license/config-types.js +5 -3
  118. package/src/license/config-types.js.map +1 -1
  119. package/src/license/config.d.ts +12 -3
  120. package/src/license/config.js +295 -242
  121. package/src/license/config.js.map +1 -1
  122. package/src/license/dependency-check/check.d.ts +2 -2
  123. package/src/license/dependency-check/check.js +51 -46
  124. package/src/license/dependency-check/check.js.map +1 -1
  125. package/src/license/dependency-check/collectors/collector.js +41 -71
  126. package/src/license/dependency-check/collectors/collector.js.map +1 -1
  127. package/src/license/dependency-check/collectors/npm-collector.js +34 -41
  128. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -1
  129. package/src/license/dependency-check/collectors/python-collector.js +61 -62
  130. package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
  131. package/src/license/dependency-check/evaluator.d.ts +1 -1
  132. package/src/license/dependency-check/evaluator.js +91 -74
  133. package/src/license/dependency-check/evaluator.js.map +1 -1
  134. package/src/license/dependency-check/executor.js +30 -22
  135. package/src/license/dependency-check/executor.js.map +1 -1
  136. package/src/license/dependency-check/pre-approved.d.ts +1 -1
  137. package/src/license/dependency-check/pre-approved.js +949 -336
  138. package/src/license/dependency-check/pre-approved.js.map +1 -1
  139. package/src/license/dependency-check/types.d.ts +1 -1
  140. package/src/license/dependency-check/types.js +2 -3
  141. package/src/license/dependency-check/types.js.map +1 -1
  142. package/src/license/generator.d.ts +1 -1
  143. package/src/license/generator.js +60 -77
  144. package/src/license/generator.js.map +1 -1
  145. package/src/license/index.d.ts +4 -4
  146. package/src/license/index.js +3 -9
  147. package/src/license/index.js.map +1 -1
  148. package/src/license/known-exceptions.d.ts +2 -3
  149. package/src/license/known-exceptions.js +12 -28
  150. package/src/license/known-exceptions.js.map +1 -1
  151. package/src/license/schema.d.js +6 -0
  152. package/src/license/schema.d.js.map +1 -0
  153. package/src/license/schema.d.ts +2 -0
  154. package/src/license/schema.json +5 -0
  155. package/src/license/sync/generator.js +94 -119
  156. package/src/license/sync/generator.js.map +1 -1
  157. package/src/license/sync/project-file-sync.d.ts +1 -1
  158. package/src/license/sync/project-file-sync.js +28 -35
  159. package/src/license/sync/project-file-sync.js.map +1 -1
  160. package/src/mcp-server/dev-server.d.ts +1 -0
  161. package/src/mcp-server/dev-server.js +18 -0
  162. package/src/mcp-server/dev-server.js.map +1 -0
  163. package/src/mcp-server/generator-info.d.ts +3 -3
  164. package/src/mcp-server/generator-info.js +149 -165
  165. package/src/mcp-server/generator-info.js.map +1 -1
  166. package/src/mcp-server/guide-pipeline.d.ts +1 -1
  167. package/src/mcp-server/guide-pipeline.js +199 -206
  168. package/src/mcp-server/guide-pipeline.js.map +1 -1
  169. package/src/mcp-server/guide-render.js +10 -25
  170. package/src/mcp-server/guide-render.js.map +1 -1
  171. package/src/mcp-server/index.js +6 -10
  172. package/src/mcp-server/index.js.map +1 -1
  173. package/src/mcp-server/mdx-ast.js +39 -57
  174. package/src/mcp-server/mdx-ast.js.map +1 -1
  175. package/src/mcp-server/option-filter.js +33 -47
  176. package/src/mcp-server/option-filter.js.map +1 -1
  177. package/src/mcp-server/schema-registry.d.ts +9 -3
  178. package/src/mcp-server/schema-registry.js +41 -38
  179. package/src/mcp-server/schema-registry.js.map +1 -1
  180. package/src/mcp-server/schema.d.ts +1 -1
  181. package/src/mcp-server/schema.js +9 -7
  182. package/src/mcp-server/schema.js.map +1 -1
  183. package/src/mcp-server/server.js +24 -24
  184. package/src/mcp-server/server.js.map +1 -1
  185. package/src/mcp-server/tools/add-to-existing-project.d.ts +12 -0
  186. package/src/mcp-server/tools/add-to-existing-project.js +36 -0
  187. package/src/mcp-server/tools/add-to-existing-project.js.map +1 -0
  188. package/src/mcp-server/tools/create-workspace-command.js +23 -24
  189. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  190. package/src/mcp-server/tools/general-guidance.d.ts +2 -2
  191. package/src/mcp-server/tools/general-guidance.js +55 -32
  192. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  193. package/src/mcp-server/tools/generator-guide.d.ts +1 -1
  194. package/src/mcp-server/tools/generator-guide.js +29 -37
  195. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  196. package/src/mcp-server/tools/list-generators.d.ts +1 -1
  197. package/src/mcp-server/tools/list-generators.js +19 -25
  198. package/src/mcp-server/tools/list-generators.js.map +1 -1
  199. package/src/mcp-server/tools/upgrade-workspace.d.ts +11 -0
  200. package/src/mcp-server/tools/upgrade-workspace.js +32 -0
  201. package/src/mcp-server/tools/upgrade-workspace.js.map +1 -0
  202. package/src/migrations/latest/apt-security-updates-in-container-images/__snapshots__/migration.spec.ts.snap +90 -0
  203. package/src/migrations/latest/apt-security-updates-in-container-images/metadata.json +3 -0
  204. package/src/migrations/latest/apt-security-updates-in-container-images/migration.d.ts +6 -0
  205. package/src/migrations/latest/apt-security-updates-in-container-images/migration.js +90 -0
  206. package/src/migrations/latest/apt-security-updates-in-container-images/migration.js.map +1 -0
  207. package/src/migrations/latest/dynamodb-configurable-encryption/__snapshots__/migration.spec.ts.snap +429 -0
  208. package/src/migrations/latest/dynamodb-configurable-encryption/metadata.json +3 -0
  209. package/src/migrations/latest/dynamodb-configurable-encryption/migration.d.ts +6 -0
  210. package/src/migrations/latest/dynamodb-configurable-encryption/migration.js +325 -0
  211. package/src/migrations/latest/dynamodb-configurable-encryption/migration.js.map +1 -0
  212. package/src/migrations/latest/py-agent-ag-ui-hooks/metadata.json +3 -0
  213. package/src/migrations/latest/py-agent-ag-ui-hooks/migration.d.ts +6 -0
  214. package/src/migrations/latest/py-agent-ag-ui-hooks/migration.js +113 -0
  215. package/src/migrations/latest/py-agent-ag-ui-hooks/migration.js.map +1 -0
  216. package/src/migrations/latest/py-agent-session-id-middleware-extraction/metadata.json +3 -0
  217. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.d.ts +2 -0
  218. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js +118 -0
  219. package/src/migrations/latest/py-agent-session-id-middleware-extraction/migration.js.map +1 -0
  220. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/metadata.json +3 -0
  221. package/{sdk/utils/ast.d.ts → src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.d.ts} +2 -2
  222. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js +38 -0
  223. package/src/migrations/latest/remove-mcp-inspector-license-exceptions/migration.js.map +1 -0
  224. package/src/migrations/latest/static-website-configurable-waf-encryption/metadata.json +3 -0
  225. package/src/migrations/latest/static-website-configurable-waf-encryption/migration.d.ts +6 -0
  226. package/src/migrations/latest/static-website-configurable-waf-encryption/migration.js +418 -0
  227. package/src/migrations/latest/static-website-configurable-waf-encryption/migration.js.map +1 -0
  228. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/metadata.json +3 -0
  229. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.d.ts +2 -0
  230. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.js +136 -0
  231. package/src/migrations/latest/ts-agent-session-id-middleware-extraction/migration.js.map +1 -0
  232. package/src/migrations/latest/user-identity-configurable-mfa/metadata.json +3 -0
  233. package/src/migrations/latest/user-identity-configurable-mfa/migration.d.ts +6 -0
  234. package/src/migrations/latest/user-identity-configurable-mfa/migration.js +362 -0
  235. package/src/migrations/latest/user-identity-configurable-mfa/migration.js.map +1 -0
  236. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/metadata.json +3 -0
  237. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.d.ts +6 -0
  238. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js +65 -0
  239. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js.map +1 -0
  240. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/metadata.json +3 -0
  241. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.d.ts +6 -0
  242. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js +108 -0
  243. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js.map +1 -0
  244. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/metadata.json +3 -0
  245. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.d.ts +6 -0
  246. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js +128 -0
  247. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -0
  248. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/metadata.json +3 -0
  249. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.d.ts +6 -0
  250. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js +215 -0
  251. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js.map +1 -0
  252. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/metadata.json +3 -0
  253. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.d.ts +6 -0
  254. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js +93 -0
  255. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
  256. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/metadata.json +3 -0
  257. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.d.ts +96 -0
  258. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js +670 -0
  259. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js.map +1 -0
  260. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/metadata.json +3 -0
  261. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.d.ts +6 -0
  262. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js +89 -0
  263. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js.map +1 -0
  264. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/metadata.json +3 -0
  265. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.d.ts +6 -0
  266. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js +449 -0
  267. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js.map +1 -0
  268. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/metadata.json +3 -0
  269. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.d.ts +6 -0
  270. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js +78 -0
  271. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js.map +1 -0
  272. package/src/{smithy/project/files/build.Dockerfile.template → migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/rc57-service.Dockerfile.fixture} +1 -4
  273. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/__snapshots__/migration.spec.ts.snap +223 -0
  274. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/metadata.json +3 -0
  275. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.d.ts +6 -0
  276. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js +217 -0
  277. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js.map +1 -0
  278. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/__snapshots__/migration.spec.ts.snap +149 -0
  279. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/metadata.json +3 -0
  280. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.d.ts +6 -0
  281. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js +195 -0
  282. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js.map +1 -0
  283. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/__snapshots__/migration.spec.ts.snap +57 -0
  284. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/metadata.json +3 -0
  285. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.d.ts +6 -0
  286. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js +77 -0
  287. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js.map +1 -0
  288. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/__snapshots__/migration.spec.ts.snap +48 -0
  289. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/metadata.json +3 -0
  290. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.d.ts +6 -0
  291. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js +91 -0
  292. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js.map +1 -0
  293. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/metadata.json +3 -0
  294. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.d.ts +6 -0
  295. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js +412 -0
  296. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js.map +1 -0
  297. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/metadata.json +3 -0
  298. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.d.ts +6 -0
  299. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js +33 -0
  300. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js.map +1 -0
  301. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/metadata.json +3 -0
  302. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.d.ts +6 -0
  303. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js +83 -0
  304. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js.map +1 -0
  305. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/legacy-service.Dockerfile.fixture +95 -0
  306. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/metadata.json +3 -0
  307. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.d.ts +6 -0
  308. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js +154 -0
  309. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js.map +1 -0
  310. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/metadata.json +3 -0
  311. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.d.ts +6 -0
  312. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js +71 -0
  313. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js.map +1 -0
  314. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/metadata.json +3 -0
  315. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.d.ts +6 -0
  316. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js +57 -0
  317. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js.map +1 -0
  318. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/metadata.json +3 -0
  319. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.d.ts +6 -0
  320. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js +123 -0
  321. package/src/migrations/v1.0.0-rc.67/0001-smithy-server-package-rename/migration.js.map +1 -0
  322. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/build-system-prompt.ts.fixture +23 -0
  323. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/build-user-prompt.ts.fixture +96 -0
  324. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/config-path.ts.fixture +1 -0
  325. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/file-to-translate.ts.fixture +10 -0
  326. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/get-files-to-translate.ts.fixture +96 -0
  327. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/header.ts.fixture +15 -0
  328. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/log.ts.fixture +18 -0
  329. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/main-call.ts.fixture +6 -0
  330. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/main.ts.fixture +79 -0
  331. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/project-root.ts.fixture +1 -0
  332. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/run-with-concurrency.ts.fixture +57 -0
  333. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/scripts-dir.ts.fixture +1 -0
  334. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/files/translate-file-for-language.ts.fixture +61 -0
  335. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/already-migrated.grit +1 -0
  336. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/build-system-prompt.grit +6 -0
  337. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/build-user-prompt.grit +6 -0
  338. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/config-path.grit +1 -0
  339. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/file-to-translate.grit +11 -0
  340. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/get-files-to-translate.grit +7 -0
  341. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/log.grit +3 -0
  342. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/main-call.grit +1 -0
  343. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/main.grit +8 -0
  344. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/project-root.grit +1 -0
  345. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/run-with-concurrency.grit +6 -0
  346. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/grit/translate-file-for-language.grit +6 -0
  347. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/metadata.json +3 -0
  348. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.d.ts +2 -0
  349. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js +103 -0
  350. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/migration.js.map +1 -0
  351. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/test-fixtures/released-script-first.ts.fixture +430 -0
  352. package/src/migrations/v1.0.0-rc.68/0001-translate-script-whole-file-writes/test-fixtures/released-script.ts.fixture +431 -0
  353. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/metadata.json +3 -0
  354. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.d.ts +6 -0
  355. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js +246 -0
  356. package/src/migrations/v1.0.0-rc.70/0001-py-agent-a2a-lifespan-construction/migration.js.map +1 -0
  357. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/metadata.json +3 -0
  358. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.d.ts +6 -0
  359. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js +329 -0
  360. package/src/migrations/v1.0.0-rc.71/0001-py-agent-a2a-httpx-client-per-call/migration.js.map +1 -0
  361. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/metadata.json +3 -0
  362. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.d.ts +2 -0
  363. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js +308 -0
  364. package/src/migrations/v1.0.0-rc.72/0001-py-agent-session-management-support/migration.js.map +1 -0
  365. package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +147 -33
  366. package/src/open-api/ts-client/__snapshots__/generator.arrays.spec.ts.snap +308 -75
  367. package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +298 -74
  368. package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +748 -103
  369. package/src/open-api/ts-client/__snapshots__/generator.content-type.spec.ts.snap +230 -37
  370. package/src/open-api/ts-client/__snapshots__/generator.duplicate-types.spec.ts.snap +249 -52
  371. package/src/open-api/ts-client/__snapshots__/generator.edge-cases.spec.ts.snap +5535 -0
  372. package/src/open-api/ts-client/__snapshots__/generator.fast-api-gaps.spec.ts.snap +736 -0
  373. package/src/open-api/ts-client/__snapshots__/generator.fast-api.spec.ts.snap +305 -71
  374. package/src/open-api/ts-client/__snapshots__/generator.multipart.spec.ts.snap +298 -0
  375. package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +353 -82
  376. package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +176 -55
  377. package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +100 -24
  378. package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +147 -33
  379. package/src/open-api/ts-client/__snapshots__/generator.spec-compliance.spec.ts.snap +1883 -0
  380. package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +392 -88
  381. package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +200 -48
  382. package/src/open-api/ts-client/files/client.gen.ts.template +358 -24
  383. package/src/open-api/ts-client/files/types.gen.ts.template +6 -4
  384. package/src/open-api/ts-client/generator.d.ts +1 -1
  385. package/src/open-api/ts-client/generator.js +41 -26
  386. package/src/open-api/ts-client/generator.js.map +1 -1
  387. package/src/open-api/ts-client/schema.d.js +6 -0
  388. package/src/open-api/ts-client/schema.d.js.map +1 -0
  389. package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +7 -2
  390. package/src/open-api/ts-hooks/generator.d.ts +1 -1
  391. package/src/open-api/ts-hooks/generator.js +17 -21
  392. package/src/open-api/ts-hooks/generator.js.map +1 -1
  393. package/src/open-api/ts-hooks/generator.spec.tsx +76 -6
  394. package/src/open-api/ts-hooks/schema.d.js +6 -0
  395. package/src/open-api/ts-hooks/schema.d.js.map +1 -0
  396. package/src/open-api/ts-metadata/generator.d.ts +1 -1
  397. package/src/open-api/ts-metadata/generator.js +12 -20
  398. package/src/open-api/ts-metadata/generator.js.map +1 -1
  399. package/src/open-api/ts-metadata/schema.d.js +6 -0
  400. package/src/open-api/ts-metadata/schema.d.js.map +1 -0
  401. package/src/open-api/utils/codegen-data/languages.d.ts +1 -7
  402. package/src/open-api/utils/codegen-data/languages.js +59 -66
  403. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  404. package/src/open-api/utils/codegen-data/types.d.ts +255 -10
  405. package/src/open-api/utils/codegen-data/types.js +54 -30
  406. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  407. package/src/open-api/utils/codegen-data.d.ts +4 -4
  408. package/src/open-api/utils/codegen-data.js +494 -674
  409. package/src/open-api/utils/codegen-data.js.map +1 -1
  410. package/src/open-api/utils/normalise.d.ts +1 -1
  411. package/src/open-api/utils/normalise.js +437 -246
  412. package/src/open-api/utils/normalise.js.map +1 -1
  413. package/src/open-api/utils/parse.d.ts +1 -1
  414. package/src/open-api/utils/parse.js +8 -14
  415. package/src/open-api/utils/parse.js.map +1 -1
  416. package/src/open-api/utils/parser.d.ts +55 -0
  417. package/src/open-api/utils/parser.js +787 -0
  418. package/src/open-api/utils/parser.js.map +1 -0
  419. package/src/open-api/utils/refs.d.ts +1 -1
  420. package/src/open-api/utils/refs.js +12 -22
  421. package/src/open-api/utils/refs.js.map +1 -1
  422. package/src/open-api/utils/types.d.ts +18 -0
  423. package/src/open-api/utils/types.js +5 -2
  424. package/src/open-api/utils/types.js.map +1 -1
  425. package/src/preset/__snapshots__/generator.spec.ts.snap +101 -20
  426. package/src/preset/generator.d.ts +15 -2
  427. package/src/preset/generator.js +76 -151
  428. package/src/preset/generator.js.map +1 -1
  429. package/src/preset/schema.d.js +6 -0
  430. package/src/preset/schema.d.js.map +1 -0
  431. package/src/preset/schema.d.ts +6 -3
  432. package/src/preset/schema.json +16 -5
  433. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +931 -0
  434. package/src/py/agent/__snapshots__/generator.core.spec.ts.snap +186 -0
  435. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +771 -0
  436. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +1310 -0
  437. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +231 -0
  438. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +29 -0
  439. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +29 -0
  440. package/src/py/agent/a2a-connection/generator.d.ts +25 -1
  441. package/src/py/agent/a2a-connection/generator.js +146 -95
  442. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  443. package/src/py/agent/a2a-connection/schema.d.js +8 -0
  444. package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
  445. package/src/py/agent/a2a-connection/schema.d.ts +2 -1
  446. package/src/py/agent/a2a-connection/schema.json +5 -0
  447. package/src/py/agent/files/deploy/Dockerfile.template +15 -1
  448. package/src/py/agent/files/langchain/a2a/main.py.template +83 -0
  449. package/src/py/agent/files/langchain/ag-ui/main.py.template +76 -0
  450. package/src/py/agent/files/langchain/common/agent.py.template +30 -0
  451. package/src/py/agent/files/langchain/common/middleware/__init__.py.template +0 -0
  452. package/src/py/agent/files/langchain/common/middleware/session_id_middleware.py.template +17 -0
  453. package/src/py/agent/files/langchain/common/session.py.template +61 -0
  454. package/src/py/agent/files/{http → langchain/http}/init.py.template +17 -25
  455. package/src/py/agent/files/langchain/http/main.py.template +69 -0
  456. package/src/py/agent/files/strands/a2a/main.py.template +61 -0
  457. package/src/py/agent/files/strands/ag-ui/main.py.template +86 -0
  458. package/src/py/agent/files/strands/common/__init__.py.template +0 -0
  459. package/src/py/agent/files/{common → strands/common}/agent.py.template +13 -0
  460. package/src/py/agent/files/strands/common/middleware/__init__.py.template +0 -0
  461. package/src/py/agent/files/strands/common/middleware/session_id_middleware.py.template +17 -0
  462. package/src/py/agent/files/strands/common/session.py.template +36 -0
  463. package/src/py/agent/files/strands/http/init.py.template +97 -0
  464. package/src/py/agent/files/{http → strands/http}/main.py.template +5 -29
  465. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +184 -0
  466. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
  467. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +34 -0
  468. package/src/py/agent/gateway-connection/generator.d.ts +33 -0
  469. package/src/py/agent/gateway-connection/generator.js +153 -0
  470. package/src/py/agent/gateway-connection/generator.js.map +1 -0
  471. package/src/py/agent/gateway-connection/schema.d.js +6 -0
  472. package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
  473. package/src/py/agent/gateway-connection/schema.d.ts +13 -0
  474. package/src/py/agent/gateway-connection/schema.json +31 -0
  475. package/src/py/agent/generator.d.ts +165 -2
  476. package/src/py/agent/generator.js +446 -197
  477. package/src/py/agent/generator.js.map +1 -1
  478. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +156 -89
  479. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +31 -0
  480. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +31 -0
  481. package/src/py/agent/mcp-connection/generator.d.ts +24 -1
  482. package/src/py/agent/mcp-connection/generator.js +103 -130
  483. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  484. package/src/py/agent/mcp-connection/schema.d.js +8 -0
  485. package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
  486. package/src/py/agent/mcp-connection/schema.d.ts +2 -1
  487. package/src/py/agent/mcp-connection/schema.json +5 -0
  488. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +17 -19
  489. package/src/py/agent/react-connection/generator.d.ts +152 -3
  490. package/src/py/agent/react-connection/generator.js +105 -65
  491. package/src/py/agent/react-connection/generator.js.map +1 -1
  492. package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +5 -5
  493. package/src/py/agent/react-connection/local-dev.js +36 -0
  494. package/src/py/agent/react-connection/local-dev.js.map +1 -0
  495. package/src/py/agent/react-connection/schema.d.js +8 -0
  496. package/src/py/agent/react-connection/schema.d.js.map +1 -0
  497. package/src/py/agent/react-connection/schema.d.ts +2 -1
  498. package/src/py/agent/react-connection/schema.json +5 -0
  499. package/src/py/agent/schema.d.js +6 -0
  500. package/src/py/agent/schema.d.js.map +1 -0
  501. package/src/py/agent/schema.d.ts +6 -2
  502. package/src/py/agent/schema.json +15 -1
  503. package/src/py/api/generator.d.ts +1 -1
  504. package/src/py/api/generator.js +12 -11
  505. package/src/py/api/generator.js.map +1 -1
  506. package/src/py/api/schema.d.js +6 -0
  507. package/src/py/api/schema.d.js.map +1 -0
  508. package/src/py/api/schema.d.ts +2 -1
  509. package/src/py/api/schema.json +5 -0
  510. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1601 -0
  511. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +63 -0
  512. package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
  513. package/src/py/dynamodb/agent-connection/generator.js +45 -0
  514. package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
  515. package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
  516. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
  517. package/src/py/dynamodb/agent-connection/schema.d.ts +15 -0
  518. package/src/py/dynamodb/agent-connection/schema.json +27 -0
  519. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +32 -0
  520. package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
  521. package/src/py/dynamodb/fast-api-connection/generator.js +39 -0
  522. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
  523. package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
  524. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
  525. package/src/py/dynamodb/fast-api-connection/schema.d.ts +13 -0
  526. package/src/py/dynamodb/fast-api-connection/schema.json +23 -0
  527. package/src/py/dynamodb/files/__name__/__init__.py.template +6 -0
  528. package/src/py/dynamodb/files/__name__/client.py.template +39 -0
  529. package/src/py/dynamodb/files/__name__/entities/__init__.py.template +4 -0
  530. package/src/py/dynamodb/files/__name__/entities/base.py.template +63 -0
  531. package/src/py/dynamodb/files/__name__/entities/example.py.template +64 -0
  532. package/src/py/dynamodb/files/config.json.template +24 -0
  533. package/src/py/dynamodb/generator.d.ts +39 -0
  534. package/src/py/dynamodb/generator.js +130 -0
  535. package/src/py/dynamodb/generator.js.map +1 -0
  536. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +63 -0
  537. package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
  538. package/src/py/dynamodb/mcp-server-connection/generator.js +45 -0
  539. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
  540. package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
  541. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  542. package/src/py/dynamodb/mcp-server-connection/schema.d.ts +15 -0
  543. package/src/py/dynamodb/mcp-server-connection/schema.json +27 -0
  544. package/src/py/dynamodb/schema.d.js +6 -0
  545. package/src/py/dynamodb/schema.d.js.map +1 -0
  546. package/src/py/dynamodb/schema.d.ts +16 -0
  547. package/src/py/dynamodb/schema.json +76 -0
  548. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +240 -4693
  549. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +5409 -0
  550. package/src/py/fast-api/files/app/__name__/init.py.template +5 -22
  551. package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
  552. package/src/py/fast-api/generator.d.ts +73 -1
  553. package/src/py/fast-api/generator.js +134 -95
  554. package/src/py/fast-api/generator.js.map +1 -1
  555. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +4 -3
  556. package/src/py/fast-api/react/generator.d.ts +17 -2
  557. package/src/py/fast-api/react/generator.js +38 -26
  558. package/src/py/fast-api/react/generator.js.map +1 -1
  559. package/src/py/fast-api/react/open-api.js +31 -29
  560. package/src/py/fast-api/react/open-api.js.map +1 -1
  561. package/src/py/fast-api/react/schema.d.js +6 -0
  562. package/src/py/fast-api/react/schema.d.js.map +1 -0
  563. package/src/py/fast-api/react/schema.d.ts +1 -0
  564. package/src/py/fast-api/react/schema.json +5 -0
  565. package/src/py/fast-api/schema.d.js +6 -0
  566. package/src/py/fast-api/schema.d.js.map +1 -0
  567. package/src/py/fast-api/schema.d.ts +2 -1
  568. package/src/py/fast-api/schema.json +6 -0
  569. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  570. package/src/py/lambda-function/files/handler/__lambdaFunctionSnakeCase__.py.template +1 -1
  571. package/src/py/lambda-function/generator.d.ts +28 -1
  572. package/src/py/lambda-function/generator.js +88 -61
  573. package/src/py/lambda-function/generator.js.map +1 -1
  574. package/src/py/lambda-function/schema.d.js +6 -0
  575. package/src/py/lambda-function/schema.d.js.map +1 -0
  576. package/src/py/lambda-function/schema.d.ts +3 -2
  577. package/src/py/lambda-function/schema.json +6 -1
  578. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +221 -21
  579. package/src/py/mcp-server/files/deploy/Dockerfile.template +15 -1
  580. package/src/py/mcp-server/generator.d.ts +69 -1
  581. package/src/py/mcp-server/generator.js +209 -145
  582. package/src/py/mcp-server/generator.js.map +1 -1
  583. package/src/py/mcp-server/schema.d.js +6 -0
  584. package/src/py/mcp-server/schema.d.js.map +1 -0
  585. package/src/py/mcp-server/schema.d.ts +2 -1
  586. package/src/py/mcp-server/schema.json +6 -0
  587. package/src/py/project/generator.d.ts +28 -2
  588. package/src/py/project/generator.js +248 -130
  589. package/src/py/project/generator.js.map +1 -1
  590. package/src/py/project/schema.d.js +6 -0
  591. package/src/py/project/schema.d.js.map +1 -0
  592. package/src/py/project/schema.d.ts +1 -0
  593. package/src/py/project/schema.json +6 -0
  594. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2072 -0
  595. package/src/py/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +123 -0
  596. package/src/py/rdb/agent-connection/generator.d.ts +10 -0
  597. package/src/py/rdb/agent-connection/generator.js +52 -0
  598. package/src/py/rdb/agent-connection/generator.js.map +1 -0
  599. package/src/py/rdb/agent-connection/schema.d.js +8 -0
  600. package/src/py/rdb/agent-connection/schema.d.js.map +1 -0
  601. package/src/py/rdb/agent-connection/schema.d.ts +15 -0
  602. package/src/py/rdb/agent-connection/schema.json +27 -0
  603. package/src/py/rdb/fast-api-connection/__snapshots__/generator.spec.ts.snap +51 -0
  604. package/src/py/rdb/fast-api-connection/files/__apiModuleName__/dependencies/__rdbNameSnake__.py.template +14 -0
  605. package/src/py/rdb/fast-api-connection/generator.d.ts +10 -0
  606. package/src/py/rdb/fast-api-connection/generator.js +56 -0
  607. package/src/py/rdb/fast-api-connection/generator.js.map +1 -0
  608. package/src/py/rdb/fast-api-connection/schema.d.js +8 -0
  609. package/src/py/rdb/fast-api-connection/schema.d.js.map +1 -0
  610. package/src/py/rdb/fast-api-connection/schema.d.ts +13 -0
  611. package/src/py/rdb/fast-api-connection/schema.json +23 -0
  612. package/src/py/rdb/files/Dockerfile.create-db-user.template +14 -0
  613. package/src/py/rdb/files/Dockerfile.migration.template +14 -0
  614. package/src/py/rdb/files/__name__/connection.py.template +55 -0
  615. package/src/py/rdb/files/__name__/create_db_user_handler.py.template +97 -0
  616. package/src/py/rdb/files/__name__/migration_handler.py.template +36 -0
  617. package/src/py/rdb/files/__name__/models/__init__.py.template +3 -0
  618. package/src/py/rdb/files/__name__/models/example.py.template +8 -0
  619. package/src/py/rdb/files/__name__/utils.py.template +104 -0
  620. package/src/py/rdb/files/alembic.ini.template +38 -0
  621. package/src/py/rdb/files/migrations/env.py.template +80 -0
  622. package/src/py/rdb/files/migrations/script.py.mako.template +28 -0
  623. package/src/py/rdb/generator.d.ts +103 -0
  624. package/src/py/rdb/generator.js +362 -0
  625. package/src/py/rdb/generator.js.map +1 -0
  626. package/src/py/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +119 -0
  627. package/src/py/rdb/mcp-server-connection/generator.d.ts +10 -0
  628. package/src/py/rdb/mcp-server-connection/generator.js +52 -0
  629. package/src/py/rdb/mcp-server-connection/generator.js.map +1 -0
  630. package/src/py/rdb/mcp-server-connection/schema.d.js +8 -0
  631. package/src/py/rdb/mcp-server-connection/schema.d.js.map +1 -0
  632. package/src/py/rdb/mcp-server-connection/schema.d.ts +15 -0
  633. package/src/py/rdb/mcp-server-connection/schema.json +27 -0
  634. package/src/py/rdb/schema.d.js +6 -0
  635. package/src/py/rdb/schema.d.js.map +1 -0
  636. package/src/py/rdb/schema.d.ts +16 -0
  637. package/src/py/rdb/schema.json +78 -0
  638. package/src/py/rdb/utils.d.ts +6 -0
  639. package/src/py/rdb/utils.js +16 -0
  640. package/src/py/rdb/utils.js.map +1 -0
  641. package/src/sdk/agentcore-gateway.d.ts +6 -0
  642. package/src/sdk/agentcore-gateway.js +7 -0
  643. package/src/sdk/agentcore-gateway.js.map +1 -0
  644. package/src/sdk/agentcore-harness.d.ts +6 -0
  645. package/src/sdk/agentcore-harness.js +7 -0
  646. package/src/sdk/agentcore-harness.js.map +1 -0
  647. package/src/sdk/connection.d.ts +6 -0
  648. package/src/sdk/connection.js +6 -0
  649. package/src/sdk/connection.js.map +1 -0
  650. package/src/sdk/license.d.ts +8 -0
  651. package/src/sdk/license.js +7 -0
  652. package/src/sdk/license.js.map +1 -0
  653. package/src/sdk/open-api.d.ts +10 -0
  654. package/src/sdk/open-api.js +8 -0
  655. package/src/sdk/open-api.js.map +1 -0
  656. package/src/sdk/py.d.ts +18 -0
  657. package/src/sdk/py.js +12 -0
  658. package/src/sdk/py.js.map +1 -0
  659. package/src/sdk/smithy.d.ts +6 -0
  660. package/src/sdk/smithy.js +7 -0
  661. package/src/sdk/smithy.js.map +1 -0
  662. package/src/sdk/terraform.d.ts +6 -0
  663. package/src/sdk/terraform.js +7 -0
  664. package/src/sdk/terraform.js.map +1 -0
  665. package/src/sdk/ts.d.ts +39 -0
  666. package/src/sdk/ts.js +41 -0
  667. package/src/sdk/ts.js.map +1 -0
  668. package/{sdk/utils/format.d.ts → src/sdk/utils/ast.d.ts} +1 -1
  669. package/src/sdk/utils/ast.js +6 -0
  670. package/src/sdk/utils/ast.js.map +1 -0
  671. package/src/sdk/utils/format.d.ts +5 -0
  672. package/src/sdk/utils/format.js +6 -0
  673. package/src/sdk/utils/format.js.map +1 -0
  674. package/{sdk → src/sdk}/utils/test.d.ts +1 -1
  675. package/src/sdk/utils/test.js +6 -0
  676. package/src/sdk/utils/test.js.map +1 -0
  677. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +245 -242
  678. package/src/smithy/project/files/{smithy-build.json.template → service/smithy-build.json.template} +5 -5
  679. package/src/smithy/project/files/{src → service/src}/operations/echo.smithy.template +1 -0
  680. package/src/smithy/project/files/shapes/smithy-build.json.template +7 -0
  681. package/src/smithy/project/files/shapes/src/main.smithy.template +11 -0
  682. package/src/smithy/project/files/ssdk-bundle/ssdk.rolldown.config.mjs.template +52 -0
  683. package/src/smithy/project/generator.d.ts +91 -1
  684. package/src/smithy/project/generator.js +223 -56
  685. package/src/smithy/project/generator.js.map +1 -1
  686. package/src/smithy/project/schema.d.js +6 -0
  687. package/src/smithy/project/schema.d.js.map +1 -0
  688. package/src/smithy/project/schema.d.ts +2 -0
  689. package/src/smithy/project/schema.json +28 -1
  690. package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
  691. package/src/smithy/react-connection/generator.d.ts +16 -1
  692. package/src/smithy/react-connection/generator.js +54 -48
  693. package/src/smithy/react-connection/generator.js.map +1 -1
  694. package/src/smithy/react-connection/schema.d.js +6 -0
  695. package/src/smithy/react-connection/schema.d.js.map +1 -0
  696. package/src/smithy/react-connection/schema.d.ts +1 -0
  697. package/src/smithy/react-connection/schema.json +5 -0
  698. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +871 -109
  699. package/src/smithy/ts/api/files/handler.ts.template +3 -3
  700. package/src/smithy/ts/api/files/local-server.ts.template +3 -3
  701. package/src/smithy/ts/api/files/operations/echo.ts.template +2 -2
  702. package/src/smithy/ts/api/files/service.ts.template +3 -3
  703. package/src/smithy/ts/api/generator.d.ts +89 -1
  704. package/src/smithy/ts/api/generator.js +187 -114
  705. package/src/smithy/ts/api/generator.js.map +1 -1
  706. package/src/smithy/ts/api/schema.d.js +6 -0
  707. package/src/smithy/ts/api/schema.d.js.map +1 -0
  708. package/src/smithy/ts/api/schema.d.ts +2 -1
  709. package/src/smithy/ts/api/schema.json +6 -0
  710. package/src/terraform/project/files/application/scripts/bootstrap.ts.template +40 -1
  711. package/src/terraform/project/files/application/src/main.tf.template +6 -1
  712. package/src/terraform/project/files/application/src/providers.tf.template +1 -1
  713. package/src/terraform/project/generator.d.ts +51 -1
  714. package/src/terraform/project/generator.js +212 -111
  715. package/src/terraform/project/generator.js.map +1 -1
  716. package/src/terraform/project/schema.d.js +9 -0
  717. package/src/terraform/project/schema.d.js.map +1 -0
  718. package/src/terraform/project/schema.d.ts +1 -0
  719. package/src/terraform/project/schema.json +5 -0
  720. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +1182 -184
  721. package/src/trpc/backend/files/src/client/index.ts.template +1 -1
  722. package/src/trpc/backend/files/src/handler.ts.template +1 -1
  723. package/src/trpc/backend/files/src/index.ts.template +5 -5
  724. package/src/trpc/backend/files/src/init.ts.template +1 -1
  725. package/src/trpc/backend/files/src/local-server.ts.template +1 -1
  726. package/src/trpc/backend/files/src/middleware/index.ts.template +7 -7
  727. package/src/trpc/backend/files/src/procedures/echo.ts.template +3 -3
  728. package/src/trpc/backend/files/src/router.ts.template +2 -2
  729. package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
  730. package/src/trpc/backend/files/src/schema/index.ts.template +1 -1
  731. package/src/trpc/backend/generator.d.ts +91 -2
  732. package/src/trpc/backend/generator.js +177 -100
  733. package/src/trpc/backend/generator.js.map +1 -1
  734. package/src/trpc/backend/schema.d.js +6 -0
  735. package/src/trpc/backend/schema.d.js.map +1 -0
  736. package/src/trpc/backend/schema.d.ts +2 -1
  737. package/src/trpc/backend/schema.json +6 -0
  738. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +4 -4
  739. package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
  740. package/src/trpc/react/generator.d.ts +39 -2
  741. package/src/trpc/react/generator.js +105 -63
  742. package/src/trpc/react/generator.js.map +1 -1
  743. package/src/trpc/react/schema.d.js +6 -0
  744. package/src/trpc/react/schema.d.js.map +1 -0
  745. package/src/trpc/react/schema.d.ts +1 -0
  746. package/src/trpc/react/schema.json +5 -0
  747. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +1483 -28
  748. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +258 -0
  749. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +23 -0
  750. package/src/ts/agent/a2a-connection/generator.d.ts +47 -1
  751. package/src/ts/agent/a2a-connection/generator.js +112 -63
  752. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  753. package/src/ts/agent/a2a-connection/schema.d.js +8 -0
  754. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
  755. package/src/ts/agent/a2a-connection/schema.d.ts +2 -1
  756. package/src/ts/agent/a2a-connection/schema.json +5 -0
  757. package/src/ts/agent/files/a2a/index.ts.template +5 -12
  758. package/src/ts/agent/files/ag-ui/index.ts.template +29 -14
  759. package/src/ts/agent/files/common/agent.ts.template +15 -2
  760. package/src/ts/agent/files/common/session.ts.template +43 -0
  761. package/src/ts/agent/files/common-express/middleware/session-id-middleware.ts.template +16 -0
  762. package/src/ts/agent/files/deploy/Dockerfile.template +20 -2
  763. package/src/ts/agent/files/http/client.ts.template +2 -2
  764. package/src/ts/agent/files/http/index.ts.template +2 -2
  765. package/src/ts/agent/files/http/router.ts.template +5 -5
  766. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +222 -0
  767. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +30 -0
  768. package/src/ts/agent/gateway-connection/generator.d.ts +47 -0
  769. package/src/ts/agent/gateway-connection/generator.js +144 -0
  770. package/src/ts/agent/gateway-connection/generator.js.map +1 -0
  771. package/src/ts/agent/gateway-connection/schema.d.js +6 -0
  772. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
  773. package/src/ts/agent/gateway-connection/schema.d.ts +13 -0
  774. package/src/ts/agent/gateway-connection/schema.json +31 -0
  775. package/src/ts/agent/generator.d.ts +206 -1
  776. package/src/ts/agent/generator.js +347 -156
  777. package/src/ts/agent/generator.js.map +1 -1
  778. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +194 -113
  779. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +23 -0
  780. package/src/ts/agent/mcp-connection/generator.d.ts +38 -1
  781. package/src/ts/agent/mcp-connection/generator.js +88 -65
  782. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  783. package/src/ts/agent/mcp-connection/schema.d.js +8 -0
  784. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
  785. package/src/ts/agent/mcp-connection/schema.d.ts +2 -1
  786. package/src/ts/agent/mcp-connection/schema.json +5 -0
  787. package/src/ts/agent/react-connection/__snapshots__/generator.spec.ts.snap +8 -4
  788. package/src/ts/agent/react-connection/files/src/components/__agentNameClassName__AgentClientProvider.tsx.template +2 -1
  789. package/src/ts/agent/react-connection/generator.d.ts +204 -3
  790. package/src/ts/agent/react-connection/generator.js +158 -99
  791. package/src/ts/agent/react-connection/generator.js.map +1 -1
  792. package/src/ts/agent/react-connection/local-dev.d.ts +13 -0
  793. package/src/ts/agent/react-connection/local-dev.js +17 -0
  794. package/src/ts/agent/react-connection/local-dev.js.map +1 -0
  795. package/src/ts/agent/react-connection/schema.d.js +8 -0
  796. package/src/ts/agent/react-connection/schema.d.js.map +1 -0
  797. package/src/ts/agent/react-connection/schema.d.ts +2 -1
  798. package/src/ts/agent/react-connection/schema.json +5 -0
  799. package/src/ts/agent/schema.d.js +6 -0
  800. package/src/ts/agent/schema.d.js.map +1 -0
  801. package/src/ts/agent/schema.d.ts +5 -1
  802. package/src/ts/agent/schema.json +14 -0
  803. package/src/ts/api/generator.d.ts +1 -1
  804. package/src/ts/api/generator.js +16 -16
  805. package/src/ts/api/generator.js.map +1 -1
  806. package/src/ts/api/schema.d.js +6 -0
  807. package/src/ts/api/schema.d.js.map +1 -0
  808. package/src/ts/api/schema.d.ts +2 -1
  809. package/src/ts/api/schema.json +5 -0
  810. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +28 -14
  811. package/src/ts/astro-docs/files/base/src/content/docs/en/index.mdx.template +2 -2
  812. package/src/ts/astro-docs/files/base/src/content.config.ts.template +4 -4
  813. package/src/ts/astro-docs/files/translation/scripts/translate.ts.template +272 -150
  814. package/src/ts/astro-docs/generator.d.ts +39 -1
  815. package/src/ts/astro-docs/generator.js +126 -61
  816. package/src/ts/astro-docs/generator.js.map +1 -1
  817. package/src/ts/astro-docs/schema.d.js +6 -0
  818. package/src/ts/astro-docs/schema.d.js.map +1 -0
  819. package/src/ts/astro-docs/schema.d.ts +2 -2
  820. package/src/ts/astro-docs/schema.json +3 -3
  821. package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +982 -0
  822. package/src/ts/dcr-proxy/generator.d.ts +34 -0
  823. package/src/ts/dcr-proxy/generator.js +115 -0
  824. package/src/ts/dcr-proxy/generator.js.map +1 -0
  825. package/src/ts/dcr-proxy/schema.d.js +6 -0
  826. package/src/ts/dcr-proxy/schema.d.js.map +1 -0
  827. package/src/ts/dcr-proxy/schema.d.ts +13 -0
  828. package/src/ts/dcr-proxy/schema.json +44 -0
  829. package/src/ts/docs/generator.d.ts +1 -1
  830. package/src/ts/docs/generator.js +10 -10
  831. package/src/ts/docs/generator.js.map +1 -1
  832. package/src/ts/docs/schema.d.js +6 -0
  833. package/src/ts/docs/schema.d.js.map +1 -0
  834. package/src/ts/docs/schema.d.ts +1 -4
  835. package/src/ts/docs/schema.json +3 -3
  836. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +490 -527
  837. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +23 -5
  838. package/src/ts/dynamodb/agent-connection/generator.d.ts +1 -1
  839. package/src/ts/dynamodb/agent-connection/generator.js +27 -23
  840. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  841. package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
  842. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
  843. package/src/ts/dynamodb/agent-connection/schema.d.ts +2 -1
  844. package/src/ts/dynamodb/agent-connection/schema.json +5 -0
  845. package/src/ts/dynamodb/files/config.json.template +24 -0
  846. package/src/ts/dynamodb/files/src/client.ts.template +30 -11
  847. package/src/ts/dynamodb/files/src/entities/example.ts.template +1 -1
  848. package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -1
  849. package/src/ts/dynamodb/files/src/index.ts.template +2 -11
  850. package/src/ts/dynamodb/generator.d.ts +42 -1
  851. package/src/ts/dynamodb/generator.js +107 -64
  852. package/src/ts/dynamodb/generator.js.map +1 -1
  853. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +23 -5
  854. package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +1 -1
  855. package/src/ts/dynamodb/mcp-server-connection/generator.js +27 -23
  856. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  857. package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
  858. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  859. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +2 -1
  860. package/src/ts/dynamodb/mcp-server-connection/schema.json +5 -0
  861. package/src/ts/dynamodb/schema.d.js +6 -0
  862. package/src/ts/dynamodb/schema.d.js.map +1 -0
  863. package/src/ts/dynamodb/schema.d.ts +3 -1
  864. package/src/ts/dynamodb/schema.json +26 -2
  865. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +12 -3
  866. package/src/ts/dynamodb/smithy-connection/generator.d.ts +1 -1
  867. package/src/ts/dynamodb/smithy-connection/generator.js +22 -22
  868. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  869. package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
  870. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
  871. package/src/ts/dynamodb/smithy-connection/schema.d.ts +1 -0
  872. package/src/ts/dynamodb/smithy-connection/schema.json +5 -0
  873. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
  874. package/src/ts/dynamodb/trpc-connection/generator.d.ts +1 -1
  875. package/src/ts/dynamodb/trpc-connection/generator.js +22 -22
  876. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  877. package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
  878. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
  879. package/src/ts/dynamodb/trpc-connection/schema.d.ts +1 -0
  880. package/src/ts/dynamodb/trpc-connection/schema.json +5 -0
  881. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +8 -6
  882. package/src/ts/lambda-function/files/handler/__lambdaFunctionKebabCase__.ts.template +2 -1
  883. package/src/ts/lambda-function/generator.d.ts +39 -1
  884. package/src/ts/lambda-function/generator.js +98 -65
  885. package/src/ts/lambda-function/generator.js.map +1 -1
  886. package/src/ts/lambda-function/io.js +83 -52
  887. package/src/ts/lambda-function/io.js.map +1 -1
  888. package/src/ts/lambda-function/schema.d.js +6 -0
  889. package/src/ts/lambda-function/schema.d.js.map +1 -0
  890. package/src/ts/lambda-function/schema.d.ts +2 -1
  891. package/src/ts/lambda-function/schema.json +5 -0
  892. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +83 -45
  893. package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +1 -1
  894. package/src/ts/lib/biome.d.ts +1 -1
  895. package/src/ts/lib/biome.js +71 -35
  896. package/src/ts/lib/biome.js.map +1 -1
  897. package/src/ts/lib/generator.d.ts +8 -1
  898. package/src/ts/lib/generator.js +115 -103
  899. package/src/ts/lib/generator.js.map +1 -1
  900. package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
  901. package/src/ts/lib/schema.d.js +6 -0
  902. package/src/ts/lib/schema.d.js.map +1 -0
  903. package/src/ts/lib/schema.d.ts +1 -1
  904. package/src/ts/lib/schema.json +5 -0
  905. package/src/ts/lib/ts-project-utils.d.ts +14 -2
  906. package/src/ts/lib/ts-project-utils.js +96 -71
  907. package/src/ts/lib/ts-project-utils.js.map +1 -1
  908. package/src/ts/lib/types.d.ts +6 -0
  909. package/src/ts/lib/types.js +5 -2
  910. package/src/ts/lib/types.js.map +1 -1
  911. package/src/ts/lib/vitest.d.ts +11 -2
  912. package/src/ts/lib/vitest.js +54 -26
  913. package/src/ts/lib/vitest.js.map +1 -1
  914. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +221 -44
  915. package/src/ts/mcp-server/files/Dockerfile.template +20 -2
  916. package/src/ts/mcp-server/generator.d.ts +111 -1
  917. package/src/ts/mcp-server/generator.js +236 -162
  918. package/src/ts/mcp-server/generator.js.map +1 -1
  919. package/src/ts/mcp-server/schema.d.js +6 -0
  920. package/src/ts/mcp-server/schema.d.js.map +1 -0
  921. package/src/ts/mcp-server/schema.d.ts +2 -1
  922. package/src/ts/mcp-server/schema.json +6 -0
  923. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +28 -13
  924. package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
  925. package/src/ts/nx-generator/files/common/schema.json.template +5 -0
  926. package/src/ts/nx-generator/files/local/generator.spec.ts.template +1 -1
  927. package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
  928. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +6 -7
  929. package/src/ts/nx-generator/generator.d.ts +3 -0
  930. package/src/ts/nx-generator/generator.js +124 -72
  931. package/src/ts/nx-generator/generator.js.map +1 -1
  932. package/src/ts/nx-generator/schema.d.js +6 -0
  933. package/src/ts/nx-generator/schema.d.js.map +1 -0
  934. package/src/ts/nx-generator/schema.d.ts +1 -0
  935. package/src/ts/nx-generator/schema.json +5 -0
  936. package/src/ts/nx-migration/files/migration.spec.ts.template +26 -0
  937. package/src/ts/nx-migration/files/migration.ts.template +65 -0
  938. package/src/ts/nx-migration/files/prompt.md.template +46 -0
  939. package/src/ts/nx-migration/generator.d.ts +27 -0
  940. package/src/ts/nx-migration/generator.js +147 -0
  941. package/src/ts/nx-migration/generator.js.map +1 -0
  942. package/src/ts/nx-migration/schema.d.js +6 -0
  943. package/src/ts/nx-migration/schema.d.js.map +1 -0
  944. package/src/ts/nx-migration/schema.d.ts +13 -0
  945. package/src/ts/nx-migration/schema.json +63 -0
  946. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +36 -25
  947. package/src/ts/nx-plugin/files/mcp-server/resources/GENERAL_GUIDANCE.md.template +5 -6
  948. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  949. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  950. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  951. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  952. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  953. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +4 -4
  954. package/src/ts/nx-plugin/generator.d.ts +4 -1
  955. package/src/ts/nx-plugin/generator.js +67 -50
  956. package/src/ts/nx-plugin/generator.js.map +1 -1
  957. package/src/ts/nx-plugin/schema.d.js +9 -0
  958. package/src/ts/nx-plugin/schema.d.js.map +1 -0
  959. package/src/ts/nx-plugin/schema.json +5 -0
  960. package/src/ts/nx-plugin/utils.d.ts +27 -2
  961. package/src/ts/nx-plugin/utils.js +66 -51
  962. package/src/ts/nx-plugin/utils.js.map +1 -1
  963. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +555 -644
  964. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +16 -6
  965. package/src/ts/rdb/agent-connection/generator.d.ts +1 -1
  966. package/src/ts/rdb/agent-connection/generator.js +44 -39
  967. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  968. package/src/ts/rdb/agent-connection/schema.d.js +8 -0
  969. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
  970. package/src/ts/rdb/agent-connection/schema.d.ts +2 -1
  971. package/src/ts/rdb/agent-connection/schema.json +5 -0
  972. package/src/ts/rdb/files/Dockerfile.template +19 -1
  973. package/src/ts/rdb/files/prisma.config.ts.template +6 -5
  974. package/src/ts/rdb/files/src/create-db-user-handler.ts.template +9 -11
  975. package/src/ts/rdb/files/src/migration-handler.ts.template +5 -30
  976. package/src/ts/rdb/files/src/prisma.ts.template +33 -25
  977. package/src/ts/rdb/files/src/utils.ts.template +3 -0
  978. package/src/ts/rdb/generator.d.ts +118 -5
  979. package/src/ts/rdb/generator.js +285 -138
  980. package/src/ts/rdb/generator.js.map +1 -1
  981. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +16 -6
  982. package/src/ts/rdb/mcp-server-connection/generator.d.ts +1 -1
  983. package/src/ts/rdb/mcp-server-connection/generator.js +42 -37
  984. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  985. package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
  986. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
  987. package/src/ts/rdb/mcp-server-connection/schema.d.ts +2 -1
  988. package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
  989. package/src/ts/rdb/schema.d.js +6 -0
  990. package/src/ts/rdb/schema.d.js.map +1 -0
  991. package/src/ts/rdb/schema.d.ts +2 -1
  992. package/src/ts/rdb/schema.json +7 -1
  993. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +18 -9
  994. package/src/ts/rdb/smithy-connection/generator.d.ts +1 -1
  995. package/src/ts/rdb/smithy-connection/generator.js +48 -43
  996. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  997. package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
  998. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
  999. package/src/ts/rdb/smithy-connection/schema.d.ts +1 -0
  1000. package/src/ts/rdb/smithy-connection/schema.json +5 -0
  1001. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
  1002. package/src/ts/rdb/trpc-connection/generator.d.ts +1 -1
  1003. package/src/ts/rdb/trpc-connection/generator.js +37 -31
  1004. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  1005. package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
  1006. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
  1007. package/src/ts/rdb/trpc-connection/schema.d.ts +1 -0
  1008. package/src/ts/rdb/trpc-connection/schema.json +5 -0
  1009. package/src/ts/rdb/utils.js +9 -11
  1010. package/src/ts/rdb/utils.js.map +1 -1
  1011. package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +17 -16
  1012. package/src/ts/react-website/agui/generator.d.ts +97 -0
  1013. package/src/ts/react-website/agui/generator.js +114 -67
  1014. package/src/ts/react-website/agui/generator.js.map +1 -1
  1015. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +1648 -690
  1016. package/src/ts/react-website/app/files/app/common/README.md.template +1 -1
  1017. package/src/ts/react-website/app/generator.d.ts +143 -3
  1018. package/src/ts/react-website/app/generator.js +335 -209
  1019. package/src/ts/react-website/app/generator.js.map +1 -1
  1020. package/src/ts/react-website/app/schema.d.js +6 -0
  1021. package/src/ts/react-website/app/schema.d.js.map +1 -0
  1022. package/src/ts/react-website/app/schema.d.ts +3 -3
  1023. package/src/ts/react-website/app/schema.json +12 -6
  1024. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +198 -33
  1025. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +74 -12
  1026. package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
  1027. package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
  1028. package/src/ts/react-website/cognito-auth/generator.d.ts +26 -2
  1029. package/src/ts/react-website/cognito-auth/generator.js +79 -64
  1030. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  1031. package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +3 -1
  1032. package/src/ts/react-website/cognito-auth/grit/none-auth-menu.grit +1 -0
  1033. package/src/ts/react-website/cognito-auth/grit/shadcn-auth-menu.grit +3 -1
  1034. package/src/ts/react-website/cognito-auth/grit/shadcn-state-declarations.grit +3 -1
  1035. package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
  1036. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
  1037. package/src/ts/react-website/cognito-auth/schema.d.ts +2 -1
  1038. package/src/ts/react-website/cognito-auth/schema.json +5 -0
  1039. package/src/ts/react-website/cognito-auth/utils.js +34 -32
  1040. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  1041. package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
  1042. package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
  1043. package/src/ts/react-website/runtime-config/generator.d.ts +1 -1
  1044. package/src/ts/react-website/runtime-config/generator.js +29 -31
  1045. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  1046. package/src/ts/react-website/runtime-config/schema.d.js +6 -0
  1047. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
  1048. package/src/ts/react-website/runtime-config/schema.d.ts +1 -0
  1049. package/src/ts/react-website/runtime-config/schema.json +5 -0
  1050. package/src/ts/sync/generator.d.ts +1 -1
  1051. package/src/ts/sync/generator.js +137 -60
  1052. package/src/ts/sync/generator.js.map +1 -1
  1053. package/src/ts/website/app/generator.d.ts +1 -1
  1054. package/src/ts/website/app/generator.js +10 -10
  1055. package/src/ts/website/app/generator.js.map +1 -1
  1056. package/src/ts/website/app/schema.d.js +6 -0
  1057. package/src/ts/website/app/schema.d.js.map +1 -0
  1058. package/src/ts/website/app/schema.d.ts +3 -3
  1059. package/src/ts/website/app/schema.json +11 -6
  1060. package/src/ts/website/auth/generator.d.ts +2 -2
  1061. package/src/ts/website/auth/generator.js +11 -10
  1062. package/src/ts/website/auth/generator.js.map +1 -1
  1063. package/src/ts/website/auth/schema.d.js +6 -0
  1064. package/src/ts/website/auth/schema.d.js.map +1 -0
  1065. package/src/ts/website/auth/schema.d.ts +2 -1
  1066. package/src/ts/website/auth/schema.json +5 -0
  1067. package/src/utils/__snapshots__/shared-constructs.spec.ts.snap +21 -0
  1068. package/src/utils/add-dependencies.d.ts +38 -0
  1069. package/src/utils/add-dependencies.js +83 -0
  1070. package/src/utils/add-dependencies.js.map +1 -0
  1071. package/src/utils/agent-chat/agent-chat.d.ts +31 -0
  1072. package/src/utils/agent-chat/agent-chat.js +31 -0
  1073. package/src/utils/agent-chat/agent-chat.js.map +1 -0
  1074. package/src/utils/agent-chat/files/a2a/chat.ts.template +33 -0
  1075. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +17 -0
  1076. package/src/utils/agent-chat/files/common/agentcore.ts.template +81 -0
  1077. package/src/utils/agent-chat/files/http-py/chat.ts.template +43 -0
  1078. package/src/utils/agent-chat/files/http-ts/chat.ts.template +54 -0
  1079. package/src/utils/agent-connection/agent-connection.d.ts +149 -26
  1080. package/src/utils/agent-connection/agent-connection.js +511 -103
  1081. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  1082. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
  1083. package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
  1084. package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
  1085. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
  1086. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
  1087. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +35 -33
  1088. package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
  1089. package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
  1090. package/src/utils/agent-connection/files/core-strands/base/model-errors-strands.ts.template +47 -0
  1091. package/src/utils/agent-connection/files/core-strands/base/tool-errors-strands.ts.template +29 -0
  1092. package/src/utils/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +1 -1
  1093. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
  1094. package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
  1095. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
  1096. package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
  1097. package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
  1098. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
  1099. package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +105 -0
  1100. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
  1101. package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
  1102. package/src/utils/agent-connection/files/py-core-langchain/s3/s3_checkpoint_saver_langchain.py.template +360 -0
  1103. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
  1104. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +4 -18
  1105. package/src/utils/agent-connection/files/py-core-runtime-config/session_context.py.template +2 -2
  1106. package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
  1107. package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +111 -0
  1108. package/src/utils/agent-connection/files/py-core-strands/base/model_errors_strands.py.template +40 -0
  1109. package/src/utils/agent-connection/files/py-core-strands/base/tool_errors_strands.py.template +24 -0
  1110. package/src/utils/agent-connection/files/{py-core-runtime-config/with_session_id.py.template → py-core-strands/base/with_session_id_strands.py.template} +2 -2
  1111. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
  1112. package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
  1113. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +81 -2
  1114. package/src/utils/agent-core-constructs/agent-core-constructs.js +212 -38
  1115. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  1116. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +273 -9
  1117. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +87 -0
  1118. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.ts.template +366 -0
  1119. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +624 -0
  1120. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
  1121. package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +281 -1
  1122. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +521 -0
  1123. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
  1124. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.tf.template +282 -0
  1125. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +159 -13
  1126. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
  1127. package/src/utils/api-constructs/api-constructs.d.ts +31 -3
  1128. package/src/utils/api-constructs/api-constructs.js +82 -32
  1129. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  1130. package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +20 -15
  1131. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +24 -16
  1132. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +26 -9
  1133. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +70 -0
  1134. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
  1135. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +56 -17
  1136. package/src/utils/api-constructs/files/cdk/core/api/trpc/trpc-utils.ts.template +1 -1
  1137. package/src/utils/api-constructs/files/cdk/core/api/utils/utils.ts.template +61 -7
  1138. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +101 -12
  1139. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +194 -8
  1140. package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
  1141. package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
  1142. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
  1143. package/src/utils/api-constructs/open-api-metadata.d.ts +1 -1
  1144. package/src/utils/api-constructs/open-api-metadata.js +22 -22
  1145. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  1146. package/src/utils/ast/website.js +18 -20
  1147. package/src/utils/ast/website.js.map +1 -1
  1148. package/src/utils/ast.d.ts +38 -0
  1149. package/src/utils/ast.js +162 -86
  1150. package/src/utils/ast.js.map +1 -1
  1151. package/src/utils/base-tsconfig.d.ts +30 -0
  1152. package/src/utils/base-tsconfig.js +32 -0
  1153. package/src/utils/base-tsconfig.js.map +1 -0
  1154. package/src/utils/bundle/bundle.d.ts +6 -1
  1155. package/src/utils/bundle/bundle.js +58 -48
  1156. package/src/utils/bundle/bundle.js.map +1 -1
  1157. package/src/utils/commands.d.ts +14 -3
  1158. package/src/utils/commands.js +83 -28
  1159. package/src/utils/commands.js.map +1 -1
  1160. package/src/utils/config/index.d.ts +22 -6
  1161. package/src/utils/config/index.js +5 -4
  1162. package/src/utils/config/index.js.map +1 -1
  1163. package/src/utils/config/utils.d.ts +9 -3
  1164. package/src/utils/config/utils.js +56 -59
  1165. package/src/utils/config/utils.js.map +1 -1
  1166. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +16 -3
  1167. package/src/utils/connection/open-api/react.d.ts +31 -5
  1168. package/src/utils/connection/open-api/react.js +106 -76
  1169. package/src/utils/connection/open-api/react.js.map +1 -1
  1170. package/src/utils/containers.js +22 -23
  1171. package/src/utils/containers.js.map +1 -1
  1172. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.d.ts +38 -0
  1173. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js +93 -0
  1174. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js.map +1 -0
  1175. package/src/utils/dcr-proxy-constructs/files/cdk/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.ts.template +227 -0
  1176. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorization-server-metadata.ts.template +39 -0
  1177. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorize.ts.template +26 -0
  1178. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/mcp-proxy.ts.template +89 -0
  1179. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/protected-resource-metadata.ts.template +13 -0
  1180. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/register.ts.template +70 -0
  1181. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/token.ts.template +75 -0
  1182. package/src/utils/dcr-proxy-constructs/files/terraform/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.tf.template +410 -0
  1183. package/src/utils/declared-dependencies.d.ts +140 -0
  1184. package/src/utils/declared-dependencies.js +64 -0
  1185. package/src/utils/declared-dependencies.js.map +1 -0
  1186. package/src/utils/dependencies.d.ts +18 -0
  1187. package/src/utils/dependencies.js +206 -0
  1188. package/src/utils/dependencies.js.map +1 -0
  1189. package/src/utils/docker.d.ts +89 -0
  1190. package/src/utils/docker.js +125 -0
  1191. package/src/utils/docker.js.map +1 -0
  1192. package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +2 -2
  1193. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +39 -41
  1194. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  1195. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +18 -5
  1196. package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +24 -4
  1197. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +51 -18
  1198. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +40 -6
  1199. package/src/utils/files/common/constructs/src/core/cloudfront.ts.template +14 -0
  1200. package/src/utils/files/common/constructs/src/core/index.ts.template +5 -4
  1201. package/src/utils/files/common/constructs/src/index.ts.template +2 -2
  1202. package/src/utils/files/common/infra-config/src/index.ts.template +3 -3
  1203. package/src/utils/files/common/infra-config/src/resolve-stage.ts.template +2 -2
  1204. package/src/utils/files/common/infra-config/src/stages.config.ts.template +1 -1
  1205. package/src/{ts/dynamodb/files/scripts → utils/files/common/scripts/src/dynamodb}/create-local-table.ts.template +65 -31
  1206. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +13 -0
  1207. package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +103 -0
  1208. package/src/utils/files/common/scripts/src/infra/infra-deploy.ts.template +2 -0
  1209. package/src/utils/files/common/scripts/src/infra/infra-destroy.ts.template +2 -0
  1210. package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/cdk-command.ts.template +6 -3
  1211. package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/run.ts.template +3 -3
  1212. package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
  1213. package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
  1214. package/src/utils/files/common/scripts/src/rdb/shared/pull-image.ts.template +16 -0
  1215. package/src/utils/files/common/scripts/src/rdb/shared/start-container.ts.template +115 -0
  1216. package/src/utils/files/common/shadcn/readme/README.md.template +3 -3
  1217. package/src/utils/files/common/shadcn/src/index.ts.template +2 -2
  1218. package/src/utils/files/shadcn/components.json.template +1 -1
  1219. package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +63 -72
  1220. package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
  1221. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +12 -6
  1222. package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
  1223. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +9 -4
  1224. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
  1225. package/src/utils/format.d.ts +39 -4
  1226. package/src/utils/format.js +318 -198
  1227. package/src/utils/format.js.map +1 -1
  1228. package/src/utils/fs.d.ts +24 -5
  1229. package/src/utils/fs.js +40 -15
  1230. package/src/utils/fs.js.map +1 -1
  1231. package/src/utils/function-constructs/files/cdk/app/lambda-functions/__nameKebabCase__.ts.template +1 -1
  1232. package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
  1233. package/src/utils/function-constructs/function-constructs.d.ts +1 -1
  1234. package/src/utils/function-constructs/function-constructs.js +22 -25
  1235. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  1236. package/src/utils/generators.js +18 -20
  1237. package/src/utils/generators.js.map +1 -1
  1238. package/src/utils/git.js +19 -34
  1239. package/src/utils/git.js.map +1 -1
  1240. package/src/utils/iac-providers.js +5 -5
  1241. package/src/utils/iac-providers.js.map +1 -1
  1242. package/src/utils/iac.d.ts +2 -2
  1243. package/src/utils/iac.js +12 -14
  1244. package/src/utils/iac.js.map +1 -1
  1245. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +193 -30
  1246. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +28 -9
  1247. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +177 -25
  1248. package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +33 -0
  1249. package/src/utils/identity-constructs/identity-constructs.d.ts +11 -1
  1250. package/src/utils/identity-constructs/identity-constructs.js +52 -31
  1251. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  1252. package/src/utils/init.d.ts +72 -0
  1253. package/src/utils/init.js +300 -0
  1254. package/src/utils/init.js.map +1 -0
  1255. package/src/utils/install.d.ts +32 -0
  1256. package/src/utils/install.js +58 -0
  1257. package/src/utils/install.js.map +1 -0
  1258. package/src/utils/js.js +27 -20
  1259. package/src/utils/js.js.map +1 -1
  1260. package/src/utils/mcp.d.ts +9 -0
  1261. package/src/utils/mcp.js +42 -41
  1262. package/src/utils/mcp.js.map +1 -1
  1263. package/src/utils/metrics.d.ts +8 -2
  1264. package/src/utils/metrics.js +61 -46
  1265. package/src/utils/metrics.js.map +1 -1
  1266. package/src/utils/migration-manifest.d.ts +58 -0
  1267. package/src/utils/migration-manifest.js +76 -0
  1268. package/src/utils/migration-manifest.js.map +1 -0
  1269. package/src/utils/migration-versions.d.ts +145 -0
  1270. package/src/utils/migration-versions.js +250 -0
  1271. package/src/utils/migration-versions.js.map +1 -0
  1272. package/src/utils/mock-project-graph.js +8 -12
  1273. package/src/utils/mock-project-graph.js.map +1 -1
  1274. package/src/utils/module-format.d.ts +25 -0
  1275. package/src/utils/module-format.js +45 -0
  1276. package/src/utils/module-format.js.map +1 -0
  1277. package/src/utils/names.d.ts +22 -0
  1278. package/src/utils/names.js +44 -48
  1279. package/src/utils/names.js.map +1 -1
  1280. package/src/utils/npm-scope.d.ts +0 -4
  1281. package/src/utils/npm-scope.js +7 -20
  1282. package/src/utils/npm-scope.js.map +1 -1
  1283. package/src/utils/nx.d.ts +77 -6
  1284. package/src/utils/nx.js +196 -75
  1285. package/src/utils/nx.js.map +1 -1
  1286. package/src/utils/nxlv-python.js +27 -15
  1287. package/src/utils/nxlv-python.js.map +1 -1
  1288. package/src/utils/object.js +5 -11
  1289. package/src/utils/object.js.map +1 -1
  1290. package/src/utils/paths.js +11 -15
  1291. package/src/utils/paths.js.map +1 -1
  1292. package/src/utils/pkg-manager.d.ts +1 -1
  1293. package/src/utils/pkg-manager.js +4 -9
  1294. package/src/utils/pkg-manager.js.map +1 -1
  1295. package/src/utils/pnpm-workspace.d.ts +1 -12
  1296. package/src/utils/pnpm-workspace.js +16 -43
  1297. package/src/utils/pnpm-workspace.js.map +1 -1
  1298. package/src/utils/port.d.ts +28 -6
  1299. package/src/utils/port.js +67 -28
  1300. package/src/utils/port.js.map +1 -1
  1301. package/src/utils/project-package-json.d.ts +39 -0
  1302. package/src/utils/project-package-json.js +119 -0
  1303. package/src/utils/project-package-json.js.map +1 -0
  1304. package/src/utils/py.d.ts +18 -4
  1305. package/src/utils/py.js +73 -48
  1306. package/src/utils/py.js.map +1 -1
  1307. package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +72 -18
  1308. package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +112 -88
  1309. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +127 -53
  1310. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +60 -53
  1311. package/src/utils/rdb-constructs/rdb-constructs.d.ts +14 -3
  1312. package/src/utils/rdb-constructs/rdb-constructs.js +38 -41
  1313. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  1314. package/src/utils/ruff.d.ts +59 -0
  1315. package/src/utils/ruff.js +140 -0
  1316. package/src/utils/ruff.js.map +1 -0
  1317. package/src/utils/shared-constructs-constants.d.ts +46 -4
  1318. package/src/utils/shared-constructs-constants.js +50 -15
  1319. package/src/utils/shared-constructs-constants.js.map +1 -1
  1320. package/src/utils/shared-constructs.d.ts +5 -2
  1321. package/src/utils/shared-constructs.js +62 -67
  1322. package/src/utils/shared-constructs.js.map +1 -1
  1323. package/src/utils/shared-dynamodb-scripts.d.ts +18 -0
  1324. package/src/utils/shared-dynamodb-scripts.js +35 -0
  1325. package/src/utils/shared-dynamodb-scripts.js.map +1 -0
  1326. package/src/utils/shared-infra-config.js +31 -30
  1327. package/src/utils/shared-infra-config.js.map +1 -1
  1328. package/src/utils/shared-infra-scripts.d.ts +26 -0
  1329. package/src/utils/shared-infra-scripts.js +58 -0
  1330. package/src/utils/shared-infra-scripts.js.map +1 -0
  1331. package/src/utils/shared-rdb-scripts.d.ts +27 -0
  1332. package/src/utils/shared-rdb-scripts.js +59 -0
  1333. package/src/utils/shared-rdb-scripts.js.map +1 -0
  1334. package/src/utils/shared-scripts.d.ts +1 -4
  1335. package/src/utils/shared-scripts.js +12 -38
  1336. package/src/utils/shared-scripts.js.map +1 -1
  1337. package/src/utils/shared-shadcn.d.ts +26 -1
  1338. package/src/utils/shared-shadcn.js +93 -67
  1339. package/src/utils/shared-shadcn.js.map +1 -1
  1340. package/src/utils/smithy.d.ts +59 -0
  1341. package/src/utils/smithy.js +73 -0
  1342. package/src/utils/smithy.js.map +1 -0
  1343. package/src/utils/test-git.d.ts +39 -0
  1344. package/src/utils/test-git.js +117 -0
  1345. package/src/utils/test-git.js.map +1 -0
  1346. package/src/utils/test.d.ts +10 -0
  1347. package/src/utils/test.js +44 -25
  1348. package/src/utils/test.js.map +1 -1
  1349. package/src/utils/toml.d.ts +5 -0
  1350. package/src/utils/toml.js +17 -15
  1351. package/src/utils/toml.js.map +1 -1
  1352. package/src/utils/version-upgrade-migration/migration.d.ts +14 -0
  1353. package/src/utils/version-upgrade-migration/migration.js +16 -0
  1354. package/src/utils/version-upgrade-migration/migration.js.map +1 -0
  1355. package/src/utils/version-upgrade-migration/nx-package-updates.d.ts +45 -0
  1356. package/src/utils/version-upgrade-migration/nx-package-updates.js +50 -0
  1357. package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -0
  1358. package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +76 -0
  1359. package/src/utils/version-upgrade-migration/owned-dependencies.js +146 -0
  1360. package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -0
  1361. package/src/utils/version-upgrade-migration/register.d.ts +29 -0
  1362. package/src/utils/version-upgrade-migration/register.js +42 -0
  1363. package/src/utils/version-upgrade-migration/register.js.map +1 -0
  1364. package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +26 -0
  1365. package/src/utils/version-upgrade-migration/sync-embedded-versions.js +352 -0
  1366. package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -0
  1367. package/src/utils/version-upgrade-migration/sync-metrics-version.d.ts +13 -0
  1368. package/src/utils/version-upgrade-migration/sync-metrics-version.js +33 -0
  1369. package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -0
  1370. package/src/utils/version-upgrade-migration/sync-vended-versions.d.ts +10 -0
  1371. package/src/utils/version-upgrade-migration/sync-vended-versions.js +518 -0
  1372. package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -0
  1373. package/src/utils/version-upgrade-migration/vended-upgrade.d.ts +14 -0
  1374. package/src/utils/version-upgrade-migration/vended-upgrade.js +40 -0
  1375. package/src/utils/version-upgrade-migration/vended-upgrade.js.map +1 -0
  1376. package/src/utils/versions.d.ts +243 -108
  1377. package/src/utils/versions.js +268 -121
  1378. package/src/utils/versions.js.map +1 -1
  1379. package/src/utils/website-constructs/files/cdk/app/static-websites/__websiteNameKebabCase__.ts.template +12 -3
  1380. package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +252 -49
  1381. package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +56 -1
  1382. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +201 -107
  1383. package/src/utils/website-constructs/website-constructs.d.ts +12 -1
  1384. package/src/utils/website-constructs/website-constructs.js +49 -30
  1385. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  1386. package/bin/aws-nx-mcp.d.ts +0 -2
  1387. package/bin/aws-nx-mcp.js +0 -17
  1388. package/bin/aws-nx-mcp.js.map +0 -1
  1389. package/sdk/connection.d.ts +0 -6
  1390. package/sdk/connection.js +0 -10
  1391. package/sdk/connection.js.map +0 -1
  1392. package/sdk/license.d.ts +0 -8
  1393. package/sdk/license.js +0 -13
  1394. package/sdk/license.js.map +0 -1
  1395. package/sdk/open-api.d.ts +0 -10
  1396. package/sdk/open-api.js +0 -15
  1397. package/sdk/open-api.js.map +0 -1
  1398. package/sdk/py.d.ts +0 -14
  1399. package/sdk/py.js +0 -18
  1400. package/sdk/py.js.map +0 -1
  1401. package/sdk/terraform.d.ts +0 -6
  1402. package/sdk/terraform.js +0 -11
  1403. package/sdk/terraform.js.map +0 -1
  1404. package/sdk/ts.d.ts +0 -29
  1405. package/sdk/ts.js +0 -47
  1406. package/sdk/ts.js.map +0 -1
  1407. package/sdk/utils/ast.js +0 -12
  1408. package/sdk/utils/ast.js.map +0 -1
  1409. package/sdk/utils/format.js +0 -10
  1410. package/sdk/utils/format.js.map +0 -1
  1411. package/sdk/utils/test.js +0 -10
  1412. package/sdk/utils/test.js.map +0 -1
  1413. package/src/connection/agent-serve-local.d.ts +0 -33
  1414. package/src/connection/agent-serve-local.js +0 -48
  1415. package/src/connection/agent-serve-local.js.map +0 -1
  1416. package/src/connection/serve-local.js +0 -41
  1417. package/src/connection/serve-local.js.map +0 -1
  1418. package/src/py/agent/__snapshots__/generator.spec.ts.snap +0 -769
  1419. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
  1420. package/src/py/agent/files/a2a/main.py.template +0 -54
  1421. package/src/py/agent/files/ag-ui/main.py.template +0 -37
  1422. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
  1423. package/src/py/agent/react-connection/serve-local.js +0 -30
  1424. package/src/py/agent/react-connection/serve-local.js.map +0 -1
  1425. package/src/py/agent/scripts/http/chat.ts.template +0 -38
  1426. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +0 -19
  1427. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +0 -19
  1428. package/src/ts/agent/react-connection/serve-local.d.ts +0 -13
  1429. package/src/ts/agent/react-connection/serve-local.js +0 -19
  1430. package/src/ts/agent/react-connection/serve-local.js.map +0 -1
  1431. package/src/ts/agent/scripts/http/chat.ts.template +0 -35
  1432. package/src/ts/dynamodb/files/scripts/pull-image.ts.template +0 -15
  1433. package/src/ts/dynamodb/files/scripts/start-container.ts.template +0 -81
  1434. package/src/ts/dynamodb/files/src/constants.ts.template +0 -9
  1435. package/src/ts/dynamodb/files/src/gsi.ts.template +0 -14
  1436. package/src/ts/rdb/files/scripts/pull-image.ts.template +0 -15
  1437. package/src/ts/rdb/files/scripts/start-container.ts.template +0 -84
  1438. package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
  1439. package/src/ts/rdb/files/src/constants.ts.template +0 -8
  1440. package/src/ts/rdb/files/src/index.ts.template +0 -2
  1441. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
  1442. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
  1443. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
  1444. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
  1445. package/src/utils/files/common/scripts/src/infra-deploy.ts.template +0 -2
  1446. package/src/utils/files/common/scripts/src/infra-destroy.ts.template +0 -2
  1447. package/src/utils/files/terraform/scripts/reset-runtime-config.ts.template +0 -25
  1448. /package/src/py/agent/files/{common → langchain/common}/__init__.py.template +0 -0
  1449. /package/src/smithy/project/files/{src → service/src}/main.smithy.template +0 -0
  1450. /package/src/utils/files/common/scripts/src/{index.ts.template → infra/index.ts.template} +0 -0
  1451. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/credentials.ts.template +0 -0
  1452. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
@@ -1,13 +1,670 @@
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
+ # Apply the distribution's security updates: base image tags lag behind the
646
+ # security suite, so its OS packages carry fixed HIGH/CRITICAL vulnerabilities
647
+ # flagged by the image scan.
648
+ RUN apt-get update && \\
649
+ apt-get upgrade -y --no-install-recommends && \\
650
+ rm -rf /var/lib/apt/lists/*
651
+
652
+ # Upgrade npm to a version free of known HIGH/CRITICAL vulnerabilities
653
+ RUN npm install -g npm@12.0.2
5
654
 
6
655
  WORKDIR /app
7
656
 
8
657
  # Add AWS Distro for OpenTelemetry for observability
9
658
  # 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
659
+ # The overrides pin transitive dependencies with known HIGH/CRITICAL
660
+ # vulnerabilities to fixed versions. npm is removed once the install is done —
661
+ # the runtime only needs node, and npm's own bundled dependencies would
662
+ # otherwise carry vulnerabilities into the image.
663
+ RUN npm init -y \\
664
+ && npm pkg set "overrides.@opentelemetry/propagator-jaeger=2.10.0" \\
665
+ && npm pkg set "overrides.minimatch=10.2.6" \\
666
+ && npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation@0.12.0 \\
667
+ && npm uninstall -g npm
11
668
 
12
669
  # Copy bundled agent
13
670
  COPY index.js /app
@@ -21,9 +678,22 @@ CMD [ "node", "--require", "@aws/aws-distro-opentelemetry-node-autoinstrumentati
21
678
  `;
22
679
 
23
680
  exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > agent-construct.ts 1`] = `
24
- "import { Lazy, Names } from 'aws-cdk-lib';
681
+ "import { Fn, Lazy, Names, RemovalPolicy, Stack } from 'aws-cdk-lib';
25
682
  import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
26
683
  import { Connections, IConnectable } from 'aws-cdk-lib/aws-ec2';
684
+ import {
685
+ BlockPublicAccess,
686
+ Bucket,
687
+ BucketEncryption,
688
+ } from 'aws-cdk-lib/aws-s3';
689
+ import { Key } from 'aws-cdk-lib/aws-kms';
690
+ import {
691
+ CfnDelivery,
692
+ CfnDeliveryDestination,
693
+ CfnDeliverySource,
694
+ LogGroup,
695
+ RetentionDays,
696
+ } from 'aws-cdk-lib/aws-logs';
27
697
  import { Construct } from 'constructs';
28
698
  import * as path from 'path';
29
699
  import * as url from 'url';
@@ -35,10 +705,13 @@ import {
35
705
  } from 'aws-cdk-lib/aws-bedrockagentcore';
36
706
  import {
37
707
  PolicyStatement,
708
+ Effect,
709
+ ServicePrincipal,
38
710
  IGrantable,
39
711
  IPrincipal,
40
712
  Grant,
41
713
  } from 'aws-cdk-lib/aws-iam';
714
+ import { suppressRules } from '../../../core/checkov.js';
42
715
  import { RuntimeConfig } from '../../../core/runtime-config.js';
43
716
  import { findWorkspaceRoot } from '../../../core/workspace.js';
44
717
 
@@ -48,7 +721,16 @@ export type SnapshotBedrockAgentProps = Omit<
48
721
  | 'protocolConfiguration'
49
722
  | 'agentRuntimeArtifact'
50
723
  | 'authorizerConfiguration'
51
- >;
724
+ > & {
725
+ /**
726
+ * Removal policy for the session bucket holding the agent's conversation
727
+ * history. Defaults to retaining it so a stack \`destroy\` doesn't silently
728
+ * delete session data — set to \`RemovalPolicy.DESTROY\` for sandbox/CI teardown.
729
+ *
730
+ * @default RemovalPolicy.RETAIN
731
+ */
732
+ readonly sessionBucketRemovalPolicy?: RemovalPolicy;
733
+ };
52
734
 
53
735
  export class SnapshotBedrockAgent
54
736
  extends Construct
@@ -56,6 +738,10 @@ export class SnapshotBedrockAgent
56
738
  {
57
739
  public readonly dockerImage: AgentRuntimeArtifact;
58
740
  public readonly agentCoreRuntime: Runtime;
741
+ /** Default Gateway target name for this agent. */
742
+ public readonly agentName = 'snapshot-bedrock-agent';
743
+ /** Inbound auth — a fronting Gateway uses this to pick its outbound credential. */
744
+ public readonly auth = 'iam';
59
745
 
60
746
  constructor(scope: Construct, id: string, props?: SnapshotBedrockAgentProps) {
61
747
  super(scope, id);
@@ -72,6 +758,114 @@ export class SnapshotBedrockAgent
72
758
  platform: Platform.LINUX_ARM64,
73
759
  });
74
760
 
761
+ const { sessionBucketRemovalPolicy = RemovalPolicy.RETAIN, ...restProps } =
762
+ props ?? {};
763
+
764
+ const sessionKey = new Key(this, 'SessionKey', {
765
+ enableKeyRotation: true,
766
+ });
767
+
768
+ // Allow CloudWatch Logs to use the session key for server access log delivery.
769
+ const stack = Stack.of(this);
770
+ sessionKey.addToResourcePolicy(
771
+ new PolicyStatement({
772
+ effect: Effect.ALLOW,
773
+ principals: [
774
+ new ServicePrincipal(\`logs.\${stack.region}.amazonaws.com\`),
775
+ ],
776
+ actions: [
777
+ 'kms:Encrypt',
778
+ 'kms:Decrypt',
779
+ 'kms:ReEncrypt*',
780
+ 'kms:GenerateDataKey*',
781
+ 'kms:DescribeKey',
782
+ ],
783
+ resources: ['*'],
784
+ conditions: {
785
+ ArnLike: {
786
+ 'kms:EncryptionContext:aws:logs:arn': \`arn:aws:logs:\${stack.region}:\${stack.account}:log-group:*\`,
787
+ },
788
+ },
789
+ }),
790
+ );
791
+
792
+ const sessionAccessLogs = new LogGroup(this, 'SessionAccessLogs', {
793
+ retention: RetentionDays.ONE_YEAR,
794
+ encryptionKey: sessionKey,
795
+ removalPolicy: RemovalPolicy.DESTROY,
796
+ });
797
+
798
+ const sessionBucket = new Bucket(this, 'SessionBucket', {
799
+ enforceSSL: true,
800
+ removalPolicy: sessionBucketRemovalPolicy,
801
+ encryption: BucketEncryption.KMS,
802
+ encryptionKey: sessionKey,
803
+ blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
804
+ });
805
+ suppressRules(
806
+ sessionBucket,
807
+ ['CKV_AWS_21'],
808
+ 'Session data does not need versioning enabled',
809
+ );
810
+ suppressRules(
811
+ sessionBucket,
812
+ ['CKV2_AWS_61'],
813
+ 'Lifecycle configuration not required for session data',
814
+ );
815
+ suppressRules(
816
+ sessionBucket,
817
+ ['CKV_AWS_144'],
818
+ 'Cross-region replication not required for session data',
819
+ );
820
+ suppressRules(
821
+ sessionBucket,
822
+ ['CKV2_AWS_62'],
823
+ 'Event notifications not required for session data',
824
+ );
825
+ suppressRules(
826
+ sessionBucket,
827
+ ['CKV_AWS_18'],
828
+ 'Server access logs are delivered to CloudWatch Logs',
829
+ );
830
+
831
+ const sessionAccessLogsSource: CfnDeliverySource = new CfnDeliverySource(
832
+ this,
833
+ 'SessionAccessLogsSource',
834
+ {
835
+ name: Lazy.string({
836
+ produce: () =>
837
+ Names.uniqueResourceName(sessionAccessLogsSource, {
838
+ maxLength: 60,
839
+ }),
840
+ }),
841
+ logType: 'S3_SERVER_ACCESS_LOGS',
842
+ resourceArn: sessionBucket.bucketArn,
843
+ },
844
+ );
845
+ const sessionBucketPolicy = sessionBucket.policy;
846
+ if (sessionBucketPolicy) {
847
+ sessionAccessLogsSource.node.addDependency(sessionBucketPolicy);
848
+ }
849
+ const sessionAccessLogsDestination: CfnDeliveryDestination =
850
+ new CfnDeliveryDestination(this, 'SessionAccessLogsDestination', {
851
+ name: Lazy.string({
852
+ produce: () =>
853
+ Names.uniqueResourceName(sessionAccessLogsDestination, {
854
+ maxLength: 60,
855
+ }),
856
+ }),
857
+ destinationResourceArn: sessionAccessLogs.logGroupArn,
858
+ });
859
+ const sessionAccessLogsDelivery = new CfnDelivery(
860
+ this,
861
+ 'SessionAccessLogsDelivery',
862
+ {
863
+ deliverySourceName: sessionAccessLogsSource.name,
864
+ deliveryDestinationArn: sessionAccessLogsDestination.attrArn,
865
+ },
866
+ );
867
+ sessionAccessLogsDelivery.addDependency(sessionAccessLogsSource);
868
+
75
869
  this.agentCoreRuntime = new Runtime(this, 'SnapshotBedrockAgent', {
76
870
  runtimeName: Lazy.string({
77
871
  produce: () =>
@@ -79,10 +873,10 @@ export class SnapshotBedrockAgent
79
873
  }),
80
874
  protocolConfiguration: ProtocolType.HTTP,
81
875
  agentRuntimeArtifact: this.dockerImage,
82
- ...props,
876
+ ...restProps,
83
877
  environmentVariables: {
84
878
  RUNTIME_CONFIG_APP_ID: rc.appConfigApplicationId,
85
- ...props?.environmentVariables,
879
+ ...restProps?.environmentVariables,
86
880
  },
87
881
  });
88
882
 
@@ -100,11 +894,18 @@ export class SnapshotBedrockAgent
100
894
  }),
101
895
  );
102
896
 
897
+ sessionBucket.grantReadWrite(this.agentCoreRuntime);
898
+
103
899
  rc.grantReadAppConfig(this.agentCoreRuntime);
104
900
 
105
901
  rc.set('agentcore', 'agentRuntimes', {
106
902
  ...rc.get('agentcore').agentRuntimes,
107
- SnapshotBedrockAgent: this.agentCoreRuntime.agentRuntimeArn,
903
+ SnapshotBedrockAgent: {
904
+ arn: this.agentCoreRuntime.agentRuntimeArn,
905
+ session: {
906
+ bucketName: sessionBucket.bucketName,
907
+ },
908
+ },
108
909
  });
109
910
  }
110
911
 
@@ -122,6 +923,22 @@ export class SnapshotBedrockAgent
122
923
  return this.agentCoreRuntime.connections;
123
924
  }
124
925
 
926
+ /**
927
+ * The HTTPS invocation URL of the runtime.
928
+ */
929
+ public get invocationUrl(): string {
930
+ // The URL must URL-encode the runtime ARN (':' -> '%3A', '/' -> '%2F').
931
+ // The ARN is a CDK token, so encode at deploy time via Fn.join/Fn.split.
932
+ const encodedArn = Fn.join(
933
+ '%2F',
934
+ Fn.split(
935
+ '/',
936
+ Fn.join('%3A', Fn.split(':', this.agentCoreRuntime.agentRuntimeArn)),
937
+ ),
938
+ );
939
+ return \`https://bedrock-agentcore.\${Stack.of(this).region}.amazonaws.com/runtimes/\${encodedArn}/invocations?qualifier=DEFAULT\`;
940
+ }
941
+
125
942
  /**
126
943
  * Grants IAM permissions to invoke this agent runtime.
127
944
  *
@@ -156,13 +973,23 @@ exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime
156
973
  exports[`ts#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > core-index.ts 1`] = `
157
974
  "export * from './app.js';
158
975
  export * from './checkov.js';
976
+ export * from './cloudfront.js';
159
977
  export * from './runtime-config.js';
160
978
  export * from './workspace.js';
161
979
  "
162
980
  `;
163
981
 
164
982
  exports[`ts#agent generator > should match snapshot for Terraform generated files > terraform-agent.tf 1`] = `
165
- "variable "env" {
983
+ "terraform {
984
+ required_providers {
985
+ random = {
986
+ source = "hashicorp/random"
987
+ version = "3.9.0"
988
+ }
989
+ }
990
+ }
991
+
992
+ variable "env" {
166
993
  description = "Environment variables to pass to the agent core runtime"
167
994
  type = map(string)
168
995
  default = {}
@@ -184,21 +1011,189 @@ variable "tags" {
184
1011
  default = {}
185
1012
  }
186
1013
 
1014
+ # VPC Configuration (optional)
1015
+ variable "enable_vpc" {
1016
+ description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
1017
+ type = bool
1018
+ default = false
1019
+ }
1020
+
1021
+ variable "vpc_id" {
1022
+ description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
1023
+ type = string
1024
+ default = null
1025
+ }
1026
+
1027
+ variable "subnet_ids" {
1028
+ description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
1029
+ type = list(string)
1030
+ default = null
1031
+ }
1032
+
187
1033
  variable "appconfig_application_id" {
188
1034
  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
1035
  type = string
190
1036
  }
191
1037
 
1038
+ variable "session_force_destroy" {
1039
+ description = "Whether to allow the session bucket to be destroyed even if it still contains objects."
1040
+ type = bool
1041
+ default = false
1042
+ }
1043
+
192
1044
  variable "appconfig_application_arn" {
193
1045
  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."
194
1046
  type = string
195
1047
  }
196
1048
 
1049
+ data "aws_region" "current" {}
1050
+ data "aws_caller_identity" "current" {}
1051
+
1052
+ locals {
1053
+ # Delivery source/destination names have a 60 character maximum. Truncate
1054
+ # the agent name so these stay within the limit.
1055
+ session_access_logs_name_prefix = substr("terraform-snapshot-agent", 0, 30)
1056
+ }
1057
+
1058
+ # Uniquifies resource names below so this construct can be deployed more than
1059
+ # once (e.g. across stages) within the same account/region.
1060
+ resource "random_id" "session_unique_suffix" {
1061
+ byte_length = 4
1062
+ }
1063
+
1064
+ # KMS key encrypting the session bucket and its server access logs.
1065
+ resource "aws_kms_key" "session" {
1066
+ description = "KMS key for terraform-snapshot-agent agent session data"
1067
+ enable_key_rotation = true
1068
+ deletion_window_in_days = 7
1069
+
1070
+ policy = jsonencode({
1071
+ Version = "2012-10-17"
1072
+ Statement = [
1073
+ {
1074
+ Sid = "EnableIAMUserPermissions"
1075
+ Effect = "Allow"
1076
+ Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
1077
+ Action = "kms:*"
1078
+ Resource = "*"
1079
+ },
1080
+ {
1081
+ Sid = "AllowCloudWatchLogs"
1082
+ Effect = "Allow"
1083
+ Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
1084
+ Action = [
1085
+ "kms:Encrypt",
1086
+ "kms:Decrypt",
1087
+ "kms:ReEncrypt*",
1088
+ "kms:GenerateDataKey*",
1089
+ "kms:DescribeKey"
1090
+ ]
1091
+ Resource = "*"
1092
+ Condition = {
1093
+ ArnLike = {
1094
+ "kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:*"
1095
+ }
1096
+ }
1097
+ }
1098
+ ]
1099
+ })
1100
+
1101
+ tags = var.tags
1102
+ }
1103
+
1104
+ # CloudWatch log group receiving the session bucket's server access logs.
1105
+ resource "aws_cloudwatch_log_group" "session_access_logs" {
1106
+ name = "/aws/s3/terraform-snapshot-agent-session-access-logs-\${random_id.session_unique_suffix.hex}"
1107
+ retention_in_days = 365
1108
+ kms_key_id = aws_kms_key.session.arn
1109
+
1110
+ tags = var.tags
1111
+ }
1112
+
1113
+ # Bucket storing the agent's session data
1114
+ resource "aws_s3_bucket" "session" {
1115
+ bucket = "terraform-snapshot-agent-sessions-\${random_id.session_unique_suffix.hex}"
1116
+ #checkov:skip=CKV2_AWS_61:Lifecycle configuration not required for session data
1117
+ #checkov:skip=CKV_AWS_144:Cross-region replication not required for session data
1118
+ #checkov:skip=CKV2_AWS_62:Event notifications not required for session data
1119
+ #checkov:skip=CKV_AWS_18:Server access logs are delivered to CloudWatch Logs (see aws_cloudwatch_log_delivery.session)
1120
+ #checkov:skip=CKV_AWS_21:Session data does not need versioning enabled
1121
+ force_destroy = var.session_force_destroy
1122
+ }
1123
+
1124
+ resource "aws_s3_bucket_server_side_encryption_configuration" "session" {
1125
+ bucket = aws_s3_bucket.session.id
1126
+
1127
+ rule {
1128
+ apply_server_side_encryption_by_default {
1129
+ kms_master_key_id = aws_kms_key.session.arn
1130
+ sse_algorithm = "aws:kms"
1131
+ }
1132
+ }
1133
+ }
1134
+
1135
+ resource "aws_s3_bucket_public_access_block" "session" {
1136
+ bucket = aws_s3_bucket.session.id
1137
+
1138
+ block_public_acls = true
1139
+ block_public_policy = true
1140
+ ignore_public_acls = true
1141
+ restrict_public_buckets = true
1142
+ }
1143
+
1144
+ resource "aws_s3_bucket_policy" "session" {
1145
+ bucket = aws_s3_bucket.session.id
1146
+
1147
+ policy = jsonencode({
1148
+ Version = "2012-10-17"
1149
+ Statement = [
1150
+ {
1151
+ Sid = "DenyInsecureConnections"
1152
+ Effect = "Deny"
1153
+ Principal = "*"
1154
+ Action = "s3:*"
1155
+ Resource = [
1156
+ aws_s3_bucket.session.arn,
1157
+ "\${aws_s3_bucket.session.arn}/*"
1158
+ ]
1159
+ Condition = {
1160
+ Bool = {
1161
+ "aws:SecureTransport" = "false"
1162
+ }
1163
+ }
1164
+ }
1165
+ ]
1166
+ })
1167
+ }
1168
+
1169
+ # Deliver the session bucket's server access logs to CloudWatch Logs.
1170
+ resource "aws_cloudwatch_log_delivery_source" "session" {
1171
+ name = "\${local.session_access_logs_name_prefix}-access-logs-source-\${random_id.session_unique_suffix.hex}"
1172
+ log_type = "S3_SERVER_ACCESS_LOGS"
1173
+ resource_arn = aws_s3_bucket.session.arn
1174
+ }
1175
+
1176
+ resource "aws_cloudwatch_log_delivery_destination" "session" {
1177
+ name = "\${local.session_access_logs_name_prefix}-access-logs-dest-\${random_id.session_unique_suffix.hex}"
1178
+
1179
+ delivery_destination_configuration {
1180
+ destination_resource_arn = aws_cloudwatch_log_group.session_access_logs.arn
1181
+ }
1182
+ }
1183
+
1184
+ resource "aws_cloudwatch_log_delivery" "session" {
1185
+ delivery_source_name = aws_cloudwatch_log_delivery_source.session.name
1186
+ delivery_destination_arn = aws_cloudwatch_log_delivery_destination.session.arn
1187
+ }
1188
+
197
1189
  module "agent_core_runtime" {
198
1190
  source = "../../../core/agent-core"
199
1191
  agent_runtime_name = "TerraformSnapshotAgent"
200
1192
  docker_image_tag = "proj-terraform-snapshot-agent:latest"
201
1193
  server_protocol = "HTTP"
1194
+ enable_vpc = var.enable_vpc
1195
+ vpc_id = var.vpc_id
1196
+ subnet_ids = var.subnet_ids
202
1197
 
203
1198
  env = merge({
204
1199
  RUNTIME_CONFIG_APP_ID = var.appconfig_application_id
@@ -223,6 +1218,29 @@ module "agent_core_runtime" {
223
1218
  "arn:aws:bedrock:*:*:foundation-model/*",
224
1219
  "arn:aws:bedrock:*:*:inference-profile/*"
225
1220
  ]
1221
+ },
1222
+ # Grant access for the agent to read/write its session data
1223
+ {
1224
+ Effect = "Allow"
1225
+ Action = [
1226
+ "s3:GetObject",
1227
+ "s3:PutObject",
1228
+ "s3:DeleteObject",
1229
+ "s3:ListBucket"
1230
+ ]
1231
+ Resource = [
1232
+ aws_s3_bucket.session.arn,
1233
+ "\${aws_s3_bucket.session.arn}/*"
1234
+ ]
1235
+ },
1236
+ # Grant access for the agent to use the session bucket's KMS key
1237
+ {
1238
+ Effect = "Allow"
1239
+ Action = [
1240
+ "kms:Decrypt",
1241
+ "kms:GenerateDataKey*"
1242
+ ]
1243
+ Resource = [aws_kms_key.session.arn]
226
1244
  }
227
1245
  ], var.additional_iam_policy_statements)
228
1246
  tags = var.tags
@@ -234,7 +1252,7 @@ module "add_agent_runtime_to_runtime_config" {
234
1252
 
235
1253
  namespace = "agentcore"
236
1254
  key = "agentRuntimes"
237
- value = { "TerraformSnapshotAgent" = module.agent_core_runtime.agent_core_runtime_arn }
1255
+ value = { "TerraformSnapshotAgent" = { arn = module.agent_core_runtime.agent_core_runtime_arn, session = { bucketName = aws_s3_bucket.session.bucket } } }
238
1256
 
239
1257
  depends_on = [module.agent_core_runtime]
240
1258
  }
@@ -249,10 +1267,20 @@ output "agent_core_runtime_arn" {
249
1267
  value = module.agent_core_runtime.agent_core_runtime_arn
250
1268
  }
251
1269
 
1270
+ output "invocation_url" {
1271
+ description = "HTTPS invocation URL of the runtime"
1272
+ value = module.agent_core_runtime.invocation_url
1273
+ }
1274
+
252
1275
  output "appconfig_application_id" {
253
1276
  description = "AppConfig Application ID for runtime config (passthrough of the shared \`appconfig_application_id\` input)."
254
1277
  value = var.appconfig_application_id
255
1278
  }
1279
+
1280
+ output "security_group_id" {
1281
+ 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."
1282
+ value = module.agent_core_runtime.security_group_id
1283
+ }
256
1284
  "
257
1285
  `;
258
1286
 
@@ -263,15 +1291,15 @@ exports[`ts#agent generator > should match snapshot for Terraform generated file
263
1291
  required_providers {
264
1292
  aws = {
265
1293
  source = "hashicorp/aws"
266
- version = ">= 6.23"
1294
+ version = "6.60.0"
267
1295
  }
268
1296
  null = {
269
1297
  source = "hashicorp/null"
270
- version = ">= 3.0"
1298
+ version = "3.3.1"
271
1299
  }
272
1300
  random = {
273
1301
  source = "hashicorp/random"
274
- version = ">= 3.0"
1302
+ version = "3.9.0"
275
1303
  }
276
1304
  }
277
1305
  }
@@ -329,6 +1357,30 @@ variable "additional_iam_policy_statements" {
329
1357
  default = []
330
1358
  }
331
1359
 
1360
+ # VPC Configuration (optional)
1361
+ variable "enable_vpc" {
1362
+ description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
1363
+ type = bool
1364
+ default = false
1365
+ }
1366
+
1367
+ variable "vpc_id" {
1368
+ description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
1369
+ type = string
1370
+ default = null
1371
+
1372
+ validation {
1373
+ condition = !var.enable_vpc || (var.vpc_id != null && var.subnet_ids != null)
1374
+ error_message = "vpc_id and subnet_ids must be set when enable_vpc is true."
1375
+ }
1376
+ }
1377
+
1378
+ variable "subnet_ids" {
1379
+ description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
1380
+ type = list(string)
1381
+ default = null
1382
+ }
1383
+
332
1384
  variable "tags" {
333
1385
  description = "Tags to apply to resources"
334
1386
  type = map(string)
@@ -354,8 +1406,7 @@ resource "aws_ecr_repository" "agent_core_repository" {
354
1406
  #checkov:skip=CKV_AWS_136:AES256 encryption is sufficient for ECR repositories
355
1407
  name = "\${lower(var.agent_runtime_name)}_repository_\${random_id.unique_suffix.hex}"
356
1408
 
357
- #checkov:skip=CKV_AWS_51:Image tag is reused for latest deployments
358
- image_tag_mutability = "MUTABLE"
1409
+ image_tag_mutability = "IMMUTABLE"
359
1410
  force_delete = true
360
1411
 
361
1412
  image_scanning_configuration {
@@ -529,28 +1580,62 @@ data "external" "docker_digest" {
529
1580
  program = ["sh", "-c", "echo '{\\"digest\\":\\"'$(docker inspect \${var.docker_image_tag} --format '{{.Id}}')'\\"}' "]
530
1581
  }
531
1582
 
1583
+ locals {
1584
+ # Content-based, immutable image tag derived from the local image digest
1585
+ image_tag = replace(data.external.docker_digest.result.digest, "sha256:", "")
1586
+ }
1587
+
532
1588
  # Null resource for container image publish
533
1589
  resource "null_resource" "docker_publish" {
534
1590
  triggers = {
535
1591
  docker_digest = data.external.docker_digest.result.digest
536
1592
  repository_url = aws_ecr_repository.agent_core_repository.repository_url
537
1593
  docker_image_tag = var.docker_image_tag
1594
+ image_tag = local.image_tag
538
1595
  }
539
1596
 
540
1597
  provisioner "local-exec" {
541
1598
  command = <<-EOT
542
1599
  # Get ECR login token
543
- aws ecr get-login-password --region \${local.aws_region} | docker login --username AWS --password-stdin \${self.triggers.repository_url}
1600
+ aws ecr get-login-password --region "$AWS_REGION" | docker login --username AWS --password-stdin "$REPOSITORY_URL"
544
1601
 
545
- # Tag the image
546
- docker tag \${self.triggers.docker_image_tag} \${self.triggers.repository_url}:latest
1602
+ # Tag the image with the immutable content-based tag
1603
+ docker tag "$DOCKER_IMAGE_TAG" "$REPOSITORY_URL:$IMAGE_TAG"
547
1604
 
548
1605
  # Push the image
549
- docker push \${self.triggers.repository_url}:latest
1606
+ docker push "$REPOSITORY_URL:$IMAGE_TAG"
550
1607
  EOT
1608
+ environment = {
1609
+ AWS_REGION = local.aws_region
1610
+ REPOSITORY_URL = self.triggers.repository_url
1611
+ DOCKER_IMAGE_TAG = self.triggers.docker_image_tag
1612
+ IMAGE_TAG = self.triggers.image_tag
1613
+ }
551
1614
  }
552
1615
 
553
- depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
1616
+ depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
1617
+ }
1618
+
1619
+ # Security group for the agent core runtime, used when running inside a VPC
1620
+ resource "aws_security_group" "agent_core_runtime" {
1621
+ count = var.enable_vpc ? 1 : 0
1622
+
1623
+ #checkov:skip=CKV2_AWS_5:Attached to the runtime via network_configuration; Checkov cannot resolve this reference
1624
+ name_prefix = "\${var.agent_runtime_name}-runtime-"
1625
+ description = "Security group for the \${var.agent_runtime_name} agent core runtime"
1626
+ vpc_id = var.vpc_id
1627
+ tags = var.tags
1628
+ }
1629
+
1630
+ resource "aws_vpc_security_group_egress_rule" "agent_core_runtime_https" {
1631
+ count = var.enable_vpc ? 1 : 0
1632
+
1633
+ security_group_id = aws_security_group.agent_core_runtime[0].id
1634
+ cidr_ipv4 = "0.0.0.0/0"
1635
+ from_port = 443
1636
+ to_port = 443
1637
+ ip_protocol = "tcp"
1638
+ description = "Allow outbound HTTPS to AWS service endpoints"
554
1639
  }
555
1640
 
556
1641
  # Bedrock AgentCore Agent Runtime
@@ -561,7 +1646,7 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
561
1646
 
562
1647
  agent_runtime_artifact {
563
1648
  container_configuration {
564
- container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}:latest"
1649
+ container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}:\${local.image_tag}"
565
1650
  }
566
1651
  }
567
1652
 
@@ -578,8 +1663,24 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
578
1663
  }
579
1664
  }
580
1665
 
1666
+ # Receive the caller's Authorization header (validated by the JWT authorizer).
1667
+ dynamic "request_header_configuration" {
1668
+ for_each = var.authorizer_configuration != null && try(var.authorizer_configuration.custom_jwt_authorizer, null) != null ? [1] : []
1669
+ content {
1670
+ request_header_allowlist = ["Authorization"]
1671
+ }
1672
+ }
1673
+
581
1674
  network_configuration {
582
- network_mode = "PUBLIC"
1675
+ network_mode = var.enable_vpc ? "VPC" : "PUBLIC"
1676
+
1677
+ dynamic "network_mode_config" {
1678
+ for_each = var.enable_vpc ? [1] : []
1679
+ content {
1680
+ security_groups = [aws_security_group.agent_core_runtime[0].id]
1681
+ subnets = var.subnet_ids
1682
+ }
1683
+ }
583
1684
  }
584
1685
 
585
1686
  protocol_configuration {
@@ -594,7 +1695,70 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
594
1695
  ]
595
1696
  }
596
1697
 
1698
+ # MCP consumers (e.g. gateway targets, which fetch tools at creation) can race
1699
+ # the runtime's first cold start, so probe it until it serves MCP. The ARN
1700
+ # output is routed through this resource so consumers wait for readiness.
1701
+ resource "null_resource" "runtime_ready" {
1702
+ count = var.server_protocol == "MCP" ? 1 : 0
1703
+
1704
+ triggers = {
1705
+ runtime_arn = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
1706
+ }
1707
+
1708
+ provisioner "local-exec" {
1709
+ command = <<-EOT
1710
+ uv run --with boto3==1.43.72 python -c "
1711
+ import boto3
1712
+ import json
1713
+ import os
1714
+ import time
1715
+ import uuid
1716
+
1717
+ runtime_arn = os.environ['RUNTIME_ARN']
1718
+ client = boto3.client('bedrock-agentcore')
1719
+ initialize_request = json.dumps({
1720
+ 'jsonrpc': '2.0',
1721
+ 'id': 1,
1722
+ 'method': 'initialize',
1723
+ 'params': {
1724
+ 'protocolVersion': '2025-03-26',
1725
+ 'capabilities': {},
1726
+ 'clientInfo': {'name': 'readiness-probe', 'version': '1.0'},
1727
+ },
1728
+ })
1729
+
1730
+ deadline = time.time() + 5 * 60
1731
+ while True:
1732
+ try:
1733
+ client.invoke_agent_runtime(
1734
+ agentRuntimeArn=runtime_arn,
1735
+ runtimeSessionId=f'readiness-probe-{uuid.uuid4()}',
1736
+ contentType='application/json',
1737
+ accept='application/json, text/event-stream',
1738
+ payload=initialize_request,
1739
+ )
1740
+ break
1741
+ except Exception:
1742
+ if time.time() >= deadline:
1743
+ raise
1744
+ time.sleep(5)
1745
+
1746
+ print(f'Runtime {runtime_arn} is serving MCP')
1747
+ "
1748
+ EOT
1749
+ environment = {
1750
+ RUNTIME_ARN = self.triggers.runtime_arn
1751
+ }
1752
+ }
1753
+ }
1754
+
597
1755
  # Outputs
1756
+ locals {
1757
+ # For MCP runtimes the ARN flows through the readiness probe, so consumers
1758
+ # wait until the runtime serves MCP.
1759
+ ready_runtime_arn = var.server_protocol == "MCP" ? null_resource.runtime_ready[0].triggers.runtime_arn : aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
1760
+ }
1761
+
598
1762
  output "agent_core_runtime_role_arn" {
599
1763
  description = "ARN of the Agent Core Runtime IAM role"
600
1764
  value = aws_iam_role.agent_core_runtime_role.arn
@@ -611,8 +1775,13 @@ output "agent_runtime_name" {
611
1775
  }
612
1776
 
613
1777
  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
1778
+ 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."
1779
+ value = local.ready_runtime_arn
1780
+ }
1781
+
1782
+ output "invocation_url" {
1783
+ 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."
1784
+ value = "https://bedrock-agentcore.\${local.aws_region}.amazonaws.com/runtimes/\${urlencode(local.ready_runtime_arn)}/invocations\${var.server_protocol == "A2A" ? "/" : "?qualifier=DEFAULT"}"
616
1785
  }
617
1786
 
618
1787
  output "agent_runtime_id" {
@@ -624,11 +1793,21 @@ output "agent_runtime_version" {
624
1793
  description = "Version of the Bedrock Agent Core runtime"
625
1794
  value = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_version
626
1795
  }
1796
+
1797
+ output "security_group_id" {
1798
+ 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."
1799
+ value = var.enable_vpc ? aws_security_group.agent_core_runtime[0].id : null
1800
+ }
627
1801
  "
628
1802
  `;
629
1803
 
630
1804
  exports[`ts#agent generator > should match snapshot for generated files > agent-agent.ts 1`] = `
631
1805
  "import { Agent, tool } from '@strands-agents/sdk';
1806
+ import {
1807
+ ModelErrorLoggingPlugin,
1808
+ ToolErrorLoggingPlugin,
1809
+ } from '@proj/agent-connection';
1810
+ import { getSessionManager } from './session.js';
632
1811
  import { z } from 'zod';
633
1812
 
634
1813
  const multiply = tool({
@@ -641,13 +1820,17 @@ const multiply = tool({
641
1820
  callback: ({ a, b }) => a * b,
642
1821
  });
643
1822
 
644
- export const getAgent = async () =>
645
- new Agent({
1823
+ export const getAgent = async () => {
1824
+ const agent = new Agent({
646
1825
  systemPrompt: \`You are a mathematical wizard.
647
1826
  Use your tools for mathematical tasks.
648
1827
  Refer to tools as your 'spellbook'.\`,
649
1828
  tools: [multiply],
1829
+ sessionManager: await getSessionManager(),
1830
+ plugins: [new ModelErrorLoggingPlugin(), new ToolErrorLoggingPlugin()],
650
1831
  });
1832
+ return agent;
1833
+ };
651
1834
  "
652
1835
  `;
653
1836
 
@@ -930,7 +2113,7 @@ exports[`ts#agent generator > should match snapshot for generated files > agent-
930
2113
  "import { publicProcedure, t } from './init.js';
931
2114
  import { z } from 'zod';
932
2115
  import { zAsyncIterable } from './schema/z-async-iterable.js';
933
- import { enterSessionContext, withSessionId } from ':proj/agent-connection';
2116
+ import { enterSessionContext, withSessionId } from '@proj/agent-connection';
934
2117
  import { getAgent } from './agent.js';
935
2118
 
936
2119
  export const router = t.router;
@@ -939,7 +2122,7 @@ const agent = withSessionId(getAgent);
939
2122
 
940
2123
  export const appRouter = router({
941
2124
  invoke: publicProcedure
942
- .input(z.object({ message: z.string() }))
2125
+ .input(z.object({ prompt: z.string().max(100000) }))
943
2126
  .output(
944
2127
  zAsyncIterable({
945
2128
  yield: z.string(),
@@ -949,7 +2132,7 @@ export const appRouter = router({
949
2132
  .subscription(async function* (opts) {
950
2133
  // Bind the session ID for this subscription so downstream MCP / A2A clients forward it on outbound calls.
951
2134
  enterSessionContext(opts.ctx.sessionId);
952
- for await (const event of agent.stream(opts.input.message)) {
2135
+ for await (const event of agent.stream(opts.input.prompt)) {
953
2136
  if (
954
2137
  event.type === 'modelStreamUpdateEvent' &&
955
2138
  event.event.type === 'modelContentBlockDeltaEvent' &&
@@ -1048,3 +2231,275 @@ export function zAsyncIterable<
1048
2231
  }
1049
2232
  "
1050
2233
  `;
2234
+
2235
+ exports[`ts#agent generator > should not create session bucket infrastructure when session is in-memory (Terraform) > terraform-agent.tf (in-memory) 1`] = `
2236
+ "variable "env" {
2237
+ description = "Environment variables to pass to the agent core runtime"
2238
+ type = map(string)
2239
+ default = {}
2240
+ }
2241
+
2242
+ variable "additional_iam_policy_statements" {
2243
+ description = "Additional IAM policy statements to attach to the agent core runtime role"
2244
+ type = list(object({
2245
+ Effect = string
2246
+ Action = list(string)
2247
+ Resource = list(string)
2248
+ }))
2249
+ default = []
2250
+ }
2251
+
2252
+ variable "tags" {
2253
+ description = "Tags to apply to resources"
2254
+ type = map(string)
2255
+ default = {}
2256
+ }
2257
+
2258
+ # VPC Configuration (optional)
2259
+ variable "enable_vpc" {
2260
+ description = "Run the agent core runtime inside a VPC. Set alongside vpc_id/subnet_ids."
2261
+ type = bool
2262
+ default = false
2263
+ }
2264
+
2265
+ variable "vpc_id" {
2266
+ description = "VPC ID to run the agent core runtime in. Required when enable_vpc is true."
2267
+ type = string
2268
+ default = null
2269
+ }
2270
+
2271
+ variable "subnet_ids" {
2272
+ description = "Subnet IDs to run the agent core runtime in. Required when enable_vpc is true."
2273
+ type = list(string)
2274
+ default = null
2275
+ }
2276
+
2277
+ variable "appconfig_application_id" {
2278
+ 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."
2279
+ type = string
2280
+ }
2281
+
2282
+ variable "appconfig_application_arn" {
2283
+ 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."
2284
+ type = string
2285
+ }
2286
+
2287
+ module "agent_core_runtime" {
2288
+ source = "../../../core/agent-core"
2289
+ agent_runtime_name = "InMemoryTerraformAgent"
2290
+ docker_image_tag = "proj-in-memory-terraform-agent:latest"
2291
+ server_protocol = "HTTP"
2292
+ enable_vpc = var.enable_vpc
2293
+ vpc_id = var.vpc_id
2294
+ subnet_ids = var.subnet_ids
2295
+
2296
+ env = merge({
2297
+ RUNTIME_CONFIG_APP_ID = var.appconfig_application_id
2298
+ }, var.env)
2299
+ additional_iam_policy_statements = concat([
2300
+ {
2301
+ Effect = "Allow"
2302
+ Action = [
2303
+ "appconfig:StartConfigurationSession",
2304
+ "appconfig:GetLatestConfiguration"
2305
+ ]
2306
+ Resource = ["\${var.appconfig_application_arn}/*"]
2307
+ },
2308
+ # Grant access for the agent to invoke bedrock models
2309
+ {
2310
+ Effect = "Allow"
2311
+ Action = [
2312
+ "bedrock:InvokeModel",
2313
+ "bedrock:InvokeModelWithResponseStream"
2314
+ ]
2315
+ Resource = [
2316
+ "arn:aws:bedrock:*:*:foundation-model/*",
2317
+ "arn:aws:bedrock:*:*:inference-profile/*"
2318
+ ]
2319
+ }
2320
+ ], var.additional_iam_policy_statements)
2321
+ tags = var.tags
2322
+ }
2323
+
2324
+ # Add agent runtime ARN to runtime config
2325
+ module "add_agent_runtime_to_runtime_config" {
2326
+ source = "../../../core/runtime-config/entry"
2327
+
2328
+ namespace = "agentcore"
2329
+ key = "agentRuntimes"
2330
+ value = { "InMemoryTerraformAgent" = { arn = module.agent_core_runtime.agent_core_runtime_arn } }
2331
+
2332
+ depends_on = [module.agent_core_runtime]
2333
+ }
2334
+
2335
+ output "agent_core_runtime_role_arn" {
2336
+ description = "ARN of the agent core runtime role"
2337
+ value = module.agent_core_runtime.agent_core_runtime_role_arn
2338
+ }
2339
+
2340
+ output "agent_core_runtime_arn" {
2341
+ description = "ARN of the Bedrock Agent Core runtime"
2342
+ value = module.agent_core_runtime.agent_core_runtime_arn
2343
+ }
2344
+
2345
+ output "invocation_url" {
2346
+ description = "HTTPS invocation URL of the runtime"
2347
+ value = module.agent_core_runtime.invocation_url
2348
+ }
2349
+
2350
+ output "appconfig_application_id" {
2351
+ description = "AppConfig Application ID for runtime config (passthrough of the shared \`appconfig_application_id\` input)."
2352
+ value = var.appconfig_application_id
2353
+ }
2354
+
2355
+ output "security_group_id" {
2356
+ 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."
2357
+ value = module.agent_core_runtime.security_group_id
2358
+ }
2359
+ "
2360
+ `;
2361
+
2362
+ exports[`ts#agent generator > should not create session bucket infrastructure when session is in-memory > agent-construct.ts (in-memory) 1`] = `
2363
+ "import { Fn, Lazy, Names, Stack } from 'aws-cdk-lib';
2364
+ import { Platform } from 'aws-cdk-lib/aws-ecr-assets';
2365
+ import { Connections, IConnectable } from 'aws-cdk-lib/aws-ec2';
2366
+ import { Construct } from 'constructs';
2367
+ import * as path from 'path';
2368
+ import * as url from 'url';
2369
+ import {
2370
+ AgentRuntimeArtifact,
2371
+ ProtocolType,
2372
+ Runtime,
2373
+ RuntimeProps,
2374
+ } from 'aws-cdk-lib/aws-bedrockagentcore';
2375
+ import {
2376
+ PolicyStatement,
2377
+ IGrantable,
2378
+ IPrincipal,
2379
+ Grant,
2380
+ } from 'aws-cdk-lib/aws-iam';
2381
+ import { RuntimeConfig } from '../../../core/runtime-config.js';
2382
+ import { findWorkspaceRoot } from '../../../core/workspace.js';
2383
+
2384
+ export type InMemoryAgentProps = Omit<
2385
+ RuntimeProps,
2386
+ | 'runtimeName'
2387
+ | 'protocolConfiguration'
2388
+ | 'agentRuntimeArtifact'
2389
+ | 'authorizerConfiguration'
2390
+ >;
2391
+
2392
+ export class InMemoryAgent
2393
+ extends Construct
2394
+ implements IGrantable, IConnectable
2395
+ {
2396
+ public readonly dockerImage: AgentRuntimeArtifact;
2397
+ public readonly agentCoreRuntime: Runtime;
2398
+ /** Default Gateway target name for this agent. */
2399
+ public readonly agentName = 'in-memory-agent';
2400
+ /** Inbound auth — a fronting Gateway uses this to pick its outbound credential. */
2401
+ public readonly auth = 'iam';
2402
+
2403
+ constructor(scope: Construct, id: string, props?: InMemoryAgentProps) {
2404
+ super(scope, id);
2405
+
2406
+ const rc = RuntimeConfig.ensure(this);
2407
+
2408
+ // Resolve the bundle output directory containing the Dockerfile and built artifacts
2409
+ const bundleDir = path.join(
2410
+ findWorkspaceRoot(url.fileURLToPath(new URL(import.meta.url))),
2411
+ 'dist/apps/test-project/bundle/agent/in-memory-agent',
2412
+ );
2413
+
2414
+ this.dockerImage = AgentRuntimeArtifact.fromAsset(bundleDir, {
2415
+ platform: Platform.LINUX_ARM64,
2416
+ });
2417
+
2418
+ this.agentCoreRuntime = new Runtime(this, 'InMemoryAgent', {
2419
+ runtimeName: Lazy.string({
2420
+ produce: () =>
2421
+ Names.uniqueResourceName(this.agentCoreRuntime, { maxLength: 40 }),
2422
+ }),
2423
+ protocolConfiguration: ProtocolType.HTTP,
2424
+ agentRuntimeArtifact: this.dockerImage,
2425
+ ...props,
2426
+ environmentVariables: {
2427
+ RUNTIME_CONFIG_APP_ID: rc.appConfigApplicationId,
2428
+ ...props?.environmentVariables,
2429
+ },
2430
+ });
2431
+
2432
+ // Grant access for the agent to invoke bedrock models
2433
+ this.agentCoreRuntime.addToRolePolicy(
2434
+ new PolicyStatement({
2435
+ actions: [
2436
+ 'bedrock:InvokeModel',
2437
+ 'bedrock:InvokeModelWithResponseStream',
2438
+ ],
2439
+ resources: [
2440
+ 'arn:aws:bedrock:*:*:foundation-model/*',
2441
+ 'arn:aws:bedrock:*:*:inference-profile/*',
2442
+ ],
2443
+ }),
2444
+ );
2445
+
2446
+ rc.grantReadAppConfig(this.agentCoreRuntime);
2447
+
2448
+ rc.set('agentcore', 'agentRuntimes', {
2449
+ ...rc.get('agentcore').agentRuntimes,
2450
+ InMemoryAgent: {
2451
+ arn: this.agentCoreRuntime.agentRuntimeArn,
2452
+ },
2453
+ });
2454
+ }
2455
+
2456
+ /**
2457
+ * The principal to grant permissions to.
2458
+ */
2459
+ public get grantPrincipal(): IPrincipal {
2460
+ return this.agentCoreRuntime.grantPrincipal;
2461
+ }
2462
+
2463
+ /**
2464
+ * Network connections for this agent runtime.
2465
+ */
2466
+ public get connections(): Connections {
2467
+ return this.agentCoreRuntime.connections;
2468
+ }
2469
+
2470
+ /**
2471
+ * The HTTPS invocation URL of the runtime.
2472
+ */
2473
+ public get invocationUrl(): string {
2474
+ // The URL must URL-encode the runtime ARN (':' -> '%3A', '/' -> '%2F').
2475
+ // The ARN is a CDK token, so encode at deploy time via Fn.join/Fn.split.
2476
+ const encodedArn = Fn.join(
2477
+ '%2F',
2478
+ Fn.split(
2479
+ '/',
2480
+ Fn.join('%3A', Fn.split(':', this.agentCoreRuntime.agentRuntimeArn)),
2481
+ ),
2482
+ );
2483
+ return \`https://bedrock-agentcore.\${Stack.of(this).region}.amazonaws.com/runtimes/\${encodedArn}/invocations?qualifier=DEFAULT\`;
2484
+ }
2485
+
2486
+ /**
2487
+ * Grants IAM permissions to invoke this agent runtime.
2488
+ *
2489
+ * @param grantee - The IAM principal to grant permissions to
2490
+ */
2491
+ public grantInvokeAccess(grantee: IGrantable) {
2492
+ this.agentCoreRuntime.grantInvoke(grantee);
2493
+
2494
+ Grant.addToPrincipal({
2495
+ grantee,
2496
+ actions: ['bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream'],
2497
+ resourceArns: [
2498
+ this.agentCoreRuntime.agentRuntimeArn,
2499
+ \`\${this.agentCoreRuntime.agentRuntimeArn}/*\`,
2500
+ ],
2501
+ });
2502
+ }
2503
+ }
2504
+ "
2505
+ `;