@aws/nx-plugin 1.0.0-rc.2 → 1.0.0-rc.21

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 (633) hide show
  1. package/LICENSE-THIRD-PARTY +3552 -4179
  2. package/README.md +8 -8
  3. package/executors.json +9 -0
  4. package/generators.json +100 -1
  5. package/package.json +16 -12
  6. package/sdk/agentcore-gateway.d.ts +6 -0
  7. package/sdk/agentcore-gateway.js +11 -0
  8. package/sdk/agentcore-gateway.js.map +1 -0
  9. package/sdk/license.d.ts +8 -0
  10. package/sdk/license.js +14 -0
  11. package/sdk/license.js.map +1 -0
  12. package/sdk/py.d.ts +6 -6
  13. package/sdk/py.js +7 -7
  14. package/sdk/py.js.map +1 -1
  15. package/sdk/ts.d.ts +18 -14
  16. package/sdk/ts.js +38 -32
  17. package/sdk/ts.js.map +1 -1
  18. package/src/agentcore-gateway/attach-upstream.d.ts +33 -0
  19. package/src/agentcore-gateway/attach-upstream.js +41 -0
  20. package/src/agentcore-gateway/attach-upstream.js.map +1 -0
  21. package/src/agentcore-gateway/files/cedar/policies/README.md +52 -0
  22. package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +11 -0
  23. package/src/agentcore-gateway/files/project/serve-local.ts.template +134 -0
  24. package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
  25. package/src/agentcore-gateway/gateway-connection/generator.js +102 -0
  26. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
  27. package/src/agentcore-gateway/gateway-connection/schema.d.ts +12 -0
  28. package/src/agentcore-gateway/gateway-connection/schema.json +26 -0
  29. package/src/agentcore-gateway/generator.d.ts +25 -0
  30. package/src/agentcore-gateway/generator.js +129 -0
  31. package/src/agentcore-gateway/generator.js.map +1 -0
  32. package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
  33. package/src/agentcore-gateway/mcp-connection/generator.js +63 -0
  34. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
  35. package/src/agentcore-gateway/mcp-connection/schema.d.ts +12 -0
  36. package/src/agentcore-gateway/mcp-connection/schema.json +26 -0
  37. package/src/agentcore-gateway/schema.d.ts +16 -0
  38. package/src/agentcore-gateway/schema.json +65 -0
  39. package/src/connection/agent-runtime-config.d.ts +1 -1
  40. package/src/connection/agent-runtime-config.js.map +1 -1
  41. package/src/connection/agent-serve-local.d.ts +2 -2
  42. package/src/connection/agent-serve-local.js +1 -1
  43. package/src/connection/agent-serve-local.js.map +1 -1
  44. package/src/connection/generator.d.ts +5 -5
  45. package/src/connection/generator.js +93 -37
  46. package/src/connection/generator.js.map +1 -1
  47. package/src/connection/serve-local.d.ts +1 -1
  48. package/src/connection/serve-local.js +1 -1
  49. package/src/connection/serve-local.js.map +1 -1
  50. package/src/infra/app/__snapshots__/generator.spec.ts.snap +47 -58
  51. package/src/infra/app/generator.d.ts +3 -3
  52. package/src/infra/app/generator.js +19 -17
  53. package/src/infra/app/generator.js.map +1 -1
  54. package/src/license/__snapshots__/config.spec.ts.snap +23 -0
  55. package/src/license/config-types.d.ts +18 -1
  56. package/src/license/config-types.js +4 -0
  57. package/src/license/config-types.js.map +1 -1
  58. package/src/license/config.d.ts +65 -7
  59. package/src/license/config.js +315 -7
  60. package/src/license/config.js.map +1 -1
  61. package/src/license/dependency-check/check.d.ts +16 -0
  62. package/src/license/dependency-check/check.js +111 -0
  63. package/src/license/dependency-check/check.js.map +1 -0
  64. package/src/license/dependency-check/collectors/collector.d.ts +21 -0
  65. package/src/license/dependency-check/collectors/collector.js +76 -0
  66. package/src/license/dependency-check/collectors/collector.js.map +1 -0
  67. package/src/license/dependency-check/collectors/npm-collector.d.ts +10 -0
  68. package/src/license/dependency-check/collectors/npm-collector.js +75 -0
  69. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -0
  70. package/src/license/dependency-check/collectors/python-collector.d.ts +23 -0
  71. package/src/license/dependency-check/collectors/python-collector.js +121 -0
  72. package/src/license/dependency-check/collectors/python-collector.js.map +1 -0
  73. package/src/license/dependency-check/evaluator.d.ts +9 -0
  74. package/src/license/dependency-check/evaluator.js +122 -0
  75. package/src/license/dependency-check/evaluator.js.map +1 -0
  76. package/src/license/dependency-check/executor-schema.json +6 -0
  77. package/src/license/dependency-check/executor.d.ts +9 -0
  78. package/src/license/dependency-check/executor.js +43 -0
  79. package/src/license/dependency-check/executor.js.map +1 -0
  80. package/src/license/dependency-check/pre-approved.d.ts +6 -0
  81. package/src/license/dependency-check/pre-approved.js +1280 -0
  82. package/src/license/dependency-check/pre-approved.js.map +1 -0
  83. package/src/license/dependency-check/types.d.ts +45 -0
  84. package/src/license/dependency-check/types.js +7 -0
  85. package/src/license/dependency-check/types.js.map +1 -0
  86. package/src/license/generator.d.ts +3 -3
  87. package/src/license/generator.js +102 -14
  88. package/src/license/generator.js.map +1 -1
  89. package/src/license/index.d.ts +8 -0
  90. package/src/license/index.js +13 -0
  91. package/src/license/index.js.map +1 -0
  92. package/src/license/known-exceptions.d.ts +6 -0
  93. package/src/license/known-exceptions.js +26 -0
  94. package/src/license/known-exceptions.js.map +1 -0
  95. package/src/license/schema.d.ts +5 -0
  96. package/src/license/schema.json +6 -0
  97. package/src/license/sync/generator.d.ts +2 -2
  98. package/src/license/sync/generator.js +15 -15
  99. package/src/license/sync/generator.js.map +1 -1
  100. package/src/license/sync/project-file-sync.d.ts +3 -3
  101. package/src/license/sync/project-file-sync.js.map +1 -1
  102. package/src/mcp-server/generator-info.d.ts +5 -1
  103. package/src/mcp-server/generator-info.js +7 -7
  104. package/src/mcp-server/generator-info.js.map +1 -1
  105. package/src/mcp-server/guide-pipeline.d.ts +1 -1
  106. package/src/mcp-server/guide-pipeline.js +2 -2
  107. package/src/mcp-server/guide-pipeline.js.map +1 -1
  108. package/src/mcp-server/mdx-ast.js +4 -0
  109. package/src/mcp-server/mdx-ast.js.map +1 -1
  110. package/src/mcp-server/schema-registry.d.ts +9 -3
  111. package/src/mcp-server/schema-registry.js +22 -6
  112. package/src/mcp-server/schema-registry.js.map +1 -1
  113. package/src/mcp-server/server.js +3 -3
  114. package/src/mcp-server/server.js.map +1 -1
  115. package/src/mcp-server/tools/create-workspace-command.d.ts +1 -1
  116. package/src/mcp-server/tools/create-workspace-command.js +4 -4
  117. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  118. package/src/mcp-server/tools/general-guidance.d.ts +2 -2
  119. package/src/mcp-server/tools/general-guidance.js +2 -2
  120. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  121. package/src/mcp-server/tools/generator-guide.d.ts +2 -2
  122. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  123. package/src/mcp-server/tools/list-generators.d.ts +2 -2
  124. package/src/mcp-server/tools/list-generators.js +1 -1
  125. package/src/mcp-server/tools/list-generators.js.map +1 -1
  126. package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +1 -1
  127. package/src/open-api/ts-client/generator.d.ts +3 -3
  128. package/src/open-api/ts-client/generator.js +2 -2
  129. package/src/open-api/ts-client/generator.js.map +1 -1
  130. package/src/open-api/ts-hooks/generator.d.ts +3 -3
  131. package/src/open-api/ts-hooks/generator.js +2 -2
  132. package/src/open-api/ts-hooks/generator.js.map +1 -1
  133. package/src/open-api/ts-hooks/generator.spec.tsx +14 -14
  134. package/src/open-api/ts-metadata/generator.d.ts +3 -3
  135. package/src/open-api/ts-metadata/generator.js +1 -1
  136. package/src/open-api/ts-metadata/generator.js.map +1 -1
  137. package/src/open-api/utils/codegen-data/languages.d.ts +5 -1
  138. package/src/open-api/utils/codegen-data/languages.js +4 -4
  139. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  140. package/src/open-api/utils/codegen-data.d.ts +6 -2
  141. package/src/open-api/utils/codegen-data.js +6 -6
  142. package/src/open-api/utils/codegen-data.js.map +1 -1
  143. package/src/open-api/utils/normalise.d.ts +5 -1
  144. package/src/open-api/utils/normalise.js +5 -5
  145. package/src/open-api/utils/normalise.js.map +1 -1
  146. package/src/open-api/utils/parse.d.ts +2 -2
  147. package/src/open-api/utils/parse.js +4 -0
  148. package/src/open-api/utils/parse.js.map +1 -1
  149. package/src/open-api/utils/refs.d.ts +1 -1
  150. package/src/preset/__snapshots__/generator.spec.ts.snap +131 -13
  151. package/src/preset/generator.d.ts +4 -4
  152. package/src/preset/generator.js +21 -14
  153. package/src/preset/generator.js.map +1 -1
  154. package/src/preset/schema.d.ts +3 -1
  155. package/src/preset/schema.json +5 -0
  156. package/src/py/agent/__snapshots__/generator.spec.ts.snap +659 -21
  157. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +201 -0
  158. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +30 -0
  159. package/src/py/agent/a2a-connection/generator.d.ts +3 -3
  160. package/src/py/agent/a2a-connection/generator.js +11 -10
  161. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  162. package/src/py/agent/files/common/agent.py.template +2 -0
  163. package/src/py/agent/files/http/init.py.template +7 -25
  164. package/src/py/agent/files/http/main.py.template +2 -3
  165. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +197 -0
  166. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
  167. package/src/py/agent/gateway-connection/generator.d.ts +10 -0
  168. package/src/py/agent/gateway-connection/generator.js +106 -0
  169. package/src/py/agent/gateway-connection/generator.js.map +1 -0
  170. package/src/py/agent/gateway-connection/schema.d.ts +12 -0
  171. package/src/py/agent/gateway-connection/schema.json +26 -0
  172. package/src/py/agent/generator.d.ts +3 -3
  173. package/src/py/agent/generator.js +47 -38
  174. package/src/py/agent/generator.js.map +1 -1
  175. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +167 -81
  176. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +30 -0
  177. package/src/py/agent/mcp-connection/generator.d.ts +3 -3
  178. package/src/py/agent/mcp-connection/generator.js +11 -81
  179. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  180. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +8 -17
  181. package/src/py/agent/react-connection/generator.d.ts +3 -3
  182. package/src/py/agent/react-connection/generator.js +4 -4
  183. package/src/py/agent/react-connection/generator.js.map +1 -1
  184. package/src/py/agent/react-connection/serve-local.d.ts +2 -2
  185. package/src/py/agent/react-connection/serve-local.js.map +1 -1
  186. package/src/py/api/generator.d.ts +3 -3
  187. package/src/py/api/generator.js.map +1 -1
  188. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1486 -0
  189. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
  190. package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
  191. package/src/py/dynamodb/agent-connection/generator.js +39 -0
  192. package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
  193. package/src/py/dynamodb/agent-connection/schema.d.ts +14 -0
  194. package/src/py/dynamodb/agent-connection/schema.json +22 -0
  195. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +23 -0
  196. package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
  197. package/src/py/dynamodb/fast-api-connection/generator.js +37 -0
  198. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
  199. package/src/py/dynamodb/fast-api-connection/schema.d.ts +12 -0
  200. package/src/py/dynamodb/fast-api-connection/schema.json +18 -0
  201. package/src/py/dynamodb/files/__name__/__init__.py.template +6 -0
  202. package/src/py/dynamodb/files/__name__/client.py.template +39 -0
  203. package/src/py/dynamodb/files/__name__/entities/__init__.py.template +4 -0
  204. package/src/py/dynamodb/files/__name__/entities/base.py.template +63 -0
  205. package/src/py/dynamodb/files/__name__/entities/example.py.template +64 -0
  206. package/src/py/dynamodb/files/config.json.template +24 -0
  207. package/src/py/dynamodb/generator.d.ts +10 -0
  208. package/src/py/dynamodb/generator.js +106 -0
  209. package/src/py/dynamodb/generator.js.map +1 -0
  210. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
  211. package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
  212. package/src/py/dynamodb/mcp-server-connection/generator.js +39 -0
  213. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
  214. package/src/py/dynamodb/mcp-server-connection/schema.d.ts +14 -0
  215. package/src/py/dynamodb/mcp-server-connection/schema.json +22 -0
  216. package/src/py/dynamodb/schema.d.ts +15 -0
  217. package/src/py/dynamodb/schema.json +70 -0
  218. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +167 -39
  219. package/src/py/fast-api/files/app/__name__/init.py.template +5 -22
  220. package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
  221. package/src/py/fast-api/generator.d.ts +3 -3
  222. package/src/py/fast-api/generator.js +23 -17
  223. package/src/py/fast-api/generator.js.map +1 -1
  224. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +1 -1
  225. package/src/py/fast-api/react/generator.d.ts +3 -3
  226. package/src/py/fast-api/react/generator.js +2 -2
  227. package/src/py/fast-api/react/generator.js.map +1 -1
  228. package/src/py/fast-api/react/open-api.d.ts +1 -1
  229. package/src/py/fast-api/react/open-api.js +5 -2
  230. package/src/py/fast-api/react/open-api.js.map +1 -1
  231. package/src/py/lambda-function/generator.d.ts +3 -3
  232. package/src/py/lambda-function/generator.js +11 -11
  233. package/src/py/lambda-function/generator.js.map +1 -1
  234. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +83 -13
  235. package/src/py/mcp-server/generator.d.ts +3 -3
  236. package/src/py/mcp-server/generator.js +33 -26
  237. package/src/py/mcp-server/generator.js.map +1 -1
  238. package/src/py/project/generator.d.ts +3 -3
  239. package/src/py/project/generator.js +96 -70
  240. package/src/py/project/generator.js.map +1 -1
  241. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +19 -16
  242. package/src/smithy/project/files/build.Dockerfile.template +1 -0
  243. package/src/smithy/project/files/src/operations/echo.smithy.template +1 -0
  244. package/src/smithy/project/generator.d.ts +3 -3
  245. package/src/smithy/project/generator.js +30 -28
  246. package/src/smithy/project/generator.js.map +1 -1
  247. package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
  248. package/src/smithy/react-connection/generator.d.ts +3 -3
  249. package/src/smithy/react-connection/generator.js +3 -3
  250. package/src/smithy/react-connection/generator.js.map +1 -1
  251. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +14 -34
  252. package/src/smithy/ts/api/generator.d.ts +3 -3
  253. package/src/smithy/ts/api/generator.js +18 -12
  254. package/src/smithy/ts/api/generator.js.map +1 -1
  255. package/src/terraform/project/files/application/src/main.tf.template +6 -1
  256. package/src/terraform/project/generator.d.ts +3 -3
  257. package/src/terraform/project/generator.js +13 -8
  258. package/src/terraform/project/generator.js.map +1 -1
  259. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +163 -18
  260. package/src/trpc/backend/files/src/procedures/echo.ts.template +1 -1
  261. package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
  262. package/src/trpc/backend/generator.d.ts +3 -3
  263. package/src/trpc/backend/generator.js +11 -10
  264. package/src/trpc/backend/generator.js.map +1 -1
  265. package/src/trpc/backend/schema.d.ts +2 -2
  266. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +3 -3
  267. package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
  268. package/src/trpc/react/generator.d.ts +3 -3
  269. package/src/trpc/react/generator.js +5 -5
  270. package/src/trpc/react/generator.js.map +1 -1
  271. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +652 -14
  272. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +256 -0
  273. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +23 -0
  274. package/src/ts/agent/a2a-connection/generator.d.ts +3 -3
  275. package/src/ts/agent/a2a-connection/generator.js +8 -8
  276. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  277. package/src/ts/agent/files/common/agent.ts.template +6 -2
  278. package/src/ts/agent/files/http/router.ts.template +1 -1
  279. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +220 -0
  280. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +30 -0
  281. package/src/ts/agent/gateway-connection/generator.d.ts +10 -0
  282. package/src/ts/agent/gateway-connection/generator.js +106 -0
  283. package/src/ts/agent/gateway-connection/generator.js.map +1 -0
  284. package/src/ts/agent/gateway-connection/schema.d.ts +12 -0
  285. package/src/ts/agent/gateway-connection/schema.json +26 -0
  286. package/src/ts/agent/generator.d.ts +3 -3
  287. package/src/ts/agent/generator.js +44 -32
  288. package/src/ts/agent/generator.js.map +1 -1
  289. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +191 -110
  290. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +22 -0
  291. package/src/ts/agent/mcp-connection/generator.d.ts +3 -3
  292. package/src/ts/agent/mcp-connection/generator.js +9 -21
  293. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  294. package/src/ts/agent/react-connection/generator.d.ts +3 -3
  295. package/src/ts/agent/react-connection/generator.js +9 -9
  296. package/src/ts/agent/react-connection/generator.js.map +1 -1
  297. package/src/ts/agent/react-connection/serve-local.d.ts +2 -2
  298. package/src/ts/api/generator.d.ts +3 -3
  299. package/src/ts/api/generator.js +4 -4
  300. package/src/ts/api/generator.js.map +1 -1
  301. package/src/ts/api/schema.d.ts +2 -1
  302. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +7 -8
  303. package/src/ts/astro-docs/generator.d.ts +3 -3
  304. package/src/ts/astro-docs/generator.js +14 -11
  305. package/src/ts/astro-docs/generator.js.map +1 -1
  306. package/src/ts/docs/generator.d.ts +3 -3
  307. package/src/ts/docs/generator.js.map +1 -1
  308. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +1352 -0
  309. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
  310. package/src/ts/dynamodb/agent-connection/generator.d.ts +10 -0
  311. package/src/ts/dynamodb/agent-connection/generator.js +32 -0
  312. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -0
  313. package/src/ts/dynamodb/agent-connection/schema.d.ts +14 -0
  314. package/src/ts/dynamodb/agent-connection/schema.json +22 -0
  315. package/src/ts/dynamodb/files/config.json.template +24 -0
  316. package/src/ts/dynamodb/files/src/client.ts.template +61 -0
  317. package/src/ts/dynamodb/files/src/entities/example.ts.template +47 -0
  318. package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -0
  319. package/src/ts/dynamodb/files/src/index.ts.template +2 -0
  320. package/src/ts/dynamodb/generator.d.ts +10 -0
  321. package/src/ts/dynamodb/generator.js +111 -0
  322. package/src/ts/dynamodb/generator.js.map +1 -0
  323. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
  324. package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +10 -0
  325. package/src/ts/dynamodb/mcp-server-connection/generator.js +32 -0
  326. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -0
  327. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +14 -0
  328. package/src/ts/dynamodb/mcp-server-connection/schema.json +22 -0
  329. package/src/ts/dynamodb/schema.d.ts +15 -0
  330. package/src/ts/dynamodb/schema.json +70 -0
  331. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +23 -0
  332. package/src/ts/dynamodb/smithy-connection/generator.d.ts +10 -0
  333. package/src/ts/dynamodb/smithy-connection/generator.js +30 -0
  334. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -0
  335. package/src/ts/dynamodb/smithy-connection/schema.d.ts +12 -0
  336. package/src/ts/dynamodb/smithy-connection/schema.json +18 -0
  337. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +23 -0
  338. package/src/ts/dynamodb/trpc-connection/generator.d.ts +10 -0
  339. package/src/ts/dynamodb/trpc-connection/generator.js +30 -0
  340. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -0
  341. package/src/ts/dynamodb/trpc-connection/schema.d.ts +12 -0
  342. package/src/ts/dynamodb/trpc-connection/schema.json +18 -0
  343. package/src/ts/lambda-function/generator.d.ts +3 -3
  344. package/src/ts/lambda-function/generator.js +8 -8
  345. package/src/ts/lambda-function/generator.js.map +1 -1
  346. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +32 -65
  347. package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +24 -0
  348. package/src/ts/lib/biome.d.ts +7 -0
  349. package/src/ts/lib/biome.js +58 -0
  350. package/src/ts/lib/biome.js.map +1 -0
  351. package/src/ts/lib/generator.d.ts +3 -3
  352. package/src/ts/lib/generator.js +27 -29
  353. package/src/ts/lib/generator.js.map +1 -1
  354. package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
  355. package/src/ts/lib/ts-project-utils.d.ts +12 -2
  356. package/src/ts/lib/ts-project-utils.js +30 -10
  357. package/src/ts/lib/ts-project-utils.js.map +1 -1
  358. package/src/ts/lib/vitest.d.ts +2 -2
  359. package/src/ts/lib/vitest.js +1 -1
  360. package/src/ts/lib/vitest.js.map +1 -1
  361. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +82 -12
  362. package/src/ts/mcp-server/generator.d.ts +3 -3
  363. package/src/ts/mcp-server/generator.js +34 -12
  364. package/src/ts/mcp-server/generator.js.map +1 -1
  365. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +19 -14
  366. package/src/ts/nx-generator/generator.d.ts +2 -2
  367. package/src/ts/nx-generator/generator.js +52 -19
  368. package/src/ts/nx-generator/generator.js.map +1 -1
  369. package/src/ts/nx-plugin/generator.d.ts +3 -3
  370. package/src/ts/nx-plugin/generator.js +10 -9
  371. package/src/ts/nx-plugin/generator.js.map +1 -1
  372. package/src/ts/nx-plugin/utils.d.ts +1 -1
  373. package/src/ts/nx-plugin/utils.js +10 -4
  374. package/src/ts/nx-plugin/utils.js.map +1 -1
  375. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +252 -388
  376. package/src/ts/rdb/agent-connection/generator.d.ts +3 -3
  377. package/src/ts/rdb/agent-connection/generator.js +4 -4
  378. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  379. package/src/ts/rdb/files/config.json.template +14 -0
  380. package/src/ts/rdb/files/prisma.config.ts.template +5 -4
  381. package/src/ts/rdb/files/src/index.ts.template +0 -1
  382. package/src/ts/rdb/files/src/prisma.ts.template +26 -21
  383. package/src/ts/rdb/generator.d.ts +3 -7
  384. package/src/ts/rdb/generator.js +52 -41
  385. package/src/ts/rdb/generator.js.map +1 -1
  386. package/src/ts/rdb/mcp-server-connection/generator.d.ts +3 -3
  387. package/src/ts/rdb/mcp-server-connection/generator.js +4 -4
  388. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  389. package/src/ts/rdb/smithy-connection/generator.d.ts +3 -3
  390. package/src/ts/rdb/smithy-connection/generator.js +4 -4
  391. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  392. package/src/ts/rdb/trpc-connection/generator.d.ts +3 -3
  393. package/src/ts/rdb/trpc-connection/generator.js +3 -3
  394. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  395. package/src/ts/rdb/utils.d.ts +1 -1
  396. package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +1 -16
  397. package/src/ts/react-website/agui/generator.d.ts +1 -1
  398. package/src/ts/react-website/agui/generator.js +4 -5
  399. package/src/ts/react-website/agui/generator.js.map +1 -1
  400. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +530 -367
  401. package/src/ts/react-website/app/generator.d.ts +3 -3
  402. package/src/ts/react-website/app/generator.js +21 -17
  403. package/src/ts/react-website/app/generator.js.map +1 -1
  404. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +1 -7
  405. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +9 -3
  406. package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
  407. package/src/ts/react-website/cognito-auth/generator.d.ts +3 -3
  408. package/src/ts/react-website/cognito-auth/generator.js +10 -13
  409. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  410. package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +8 -6
  411. package/src/ts/react-website/cognito-auth/grit/cognito-auth-wrapper.grit +1 -1
  412. package/src/ts/react-website/cognito-auth/grit/none-auth-menu.grit +1 -0
  413. package/src/ts/react-website/cognito-auth/grit/shadcn-auth-menu.grit +3 -1
  414. package/src/ts/react-website/cognito-auth/grit/shadcn-state-declarations.grit +3 -1
  415. package/src/ts/react-website/cognito-auth/utils.d.ts +1 -1
  416. package/src/ts/react-website/cognito-auth/utils.js +1 -1
  417. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  418. package/src/ts/react-website/runtime-config/generator.d.ts +3 -3
  419. package/src/ts/react-website/runtime-config/generator.js +4 -4
  420. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  421. package/src/ts/sync/generator.d.ts +3 -3
  422. package/src/ts/sync/generator.js +2 -2
  423. package/src/ts/sync/generator.js.map +1 -1
  424. package/src/ts/website/app/generator.d.ts +3 -3
  425. package/src/ts/website/app/generator.js +1 -1
  426. package/src/ts/website/app/generator.js.map +1 -1
  427. package/src/ts/website/auth/generator.d.ts +3 -3
  428. package/src/ts/website/auth/generator.js +1 -1
  429. package/src/ts/website/auth/generator.js.map +1 -1
  430. package/src/utils/agent-chat/agent-chat.d.ts +31 -0
  431. package/src/utils/agent-chat/agent-chat.js +30 -0
  432. package/src/utils/agent-chat/agent-chat.js.map +1 -0
  433. package/src/utils/agent-chat/files/a2a/chat.ts.template +33 -0
  434. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +17 -0
  435. package/src/utils/agent-chat/files/common/agentcore.ts.template +81 -0
  436. package/src/utils/agent-chat/files/http-py/chat.ts.template +43 -0
  437. package/src/utils/agent-chat/files/http-ts/chat.ts.template +54 -0
  438. package/src/utils/agent-connection/agent-connection.d.ts +67 -24
  439. package/src/utils/agent-connection/agent-connection.js +236 -44
  440. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  441. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
  442. package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
  443. package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
  444. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
  445. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
  446. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +22 -32
  447. package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
  448. package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
  449. package/src/utils/agent-connection/files/core-strands/base/model-errors-strands.ts.template +36 -0
  450. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
  451. package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
  452. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
  453. package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
  454. package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
  455. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
  456. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
  457. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +5 -18
  458. package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
  459. package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +66 -0
  460. package/src/utils/agent-connection/files/py-core-strands/base/model_errors_strands.py.template +40 -0
  461. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
  462. package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
  463. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +11 -3
  464. package/src/utils/agent-core-constructs/agent-core-constructs.js +57 -12
  465. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  466. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +4 -0
  467. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +40 -0
  468. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +375 -0
  469. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
  470. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +335 -0
  471. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
  472. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +77 -9
  473. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
  474. package/src/utils/api-constructs/api-constructs.d.ts +2 -2
  475. package/src/utils/api-constructs/api-constructs.js +1 -1
  476. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  477. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +3 -0
  478. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +9 -0
  479. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +23 -1
  480. package/src/utils/api-constructs/files/cdk/core/api/utils/utils.ts.template +61 -7
  481. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +3 -0
  482. package/src/utils/api-constructs/open-api-metadata.d.ts +2 -2
  483. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  484. package/src/utils/ast/website.d.ts +5 -1
  485. package/src/utils/ast/website.js +3 -3
  486. package/src/utils/ast/website.js.map +1 -1
  487. package/src/utils/ast.d.ts +33 -1
  488. package/src/utils/ast.js +89 -4
  489. package/src/utils/ast.js.map +1 -1
  490. package/src/utils/bundle/bundle.d.ts +1 -1
  491. package/src/utils/bundle/bundle.js +2 -2
  492. package/src/utils/bundle/bundle.js.map +1 -1
  493. package/src/utils/config/index.d.ts +5 -5
  494. package/src/utils/config/utils.d.ts +13 -3
  495. package/src/utils/config/utils.js +37 -5
  496. package/src/utils/config/utils.js.map +1 -1
  497. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +1 -1
  498. package/src/utils/connection/open-api/react.d.ts +1 -1
  499. package/src/utils/connection/open-api/react.js +4 -4
  500. package/src/utils/connection/open-api/react.js.map +1 -1
  501. package/src/utils/containers.d.ts +1 -1
  502. package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +18 -0
  503. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +49 -0
  504. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -0
  505. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +43 -0
  506. package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +105 -0
  507. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +62 -0
  508. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +155 -0
  509. package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +195 -0
  510. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +13 -0
  511. package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +91 -0
  512. package/src/utils/files/common/scripts/src/rdb/pull-image.ts.template +16 -0
  513. package/src/utils/files/common/scripts/src/rdb/start-container.ts.template +102 -0
  514. package/src/utils/files/common/scripts/src/rdb/wait-for-db.ts.template +59 -0
  515. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +9 -3
  516. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +7 -2
  517. package/src/utils/format.d.ts +45 -2
  518. package/src/utils/format.js +167 -46
  519. package/src/utils/format.js.map +1 -1
  520. package/src/utils/fs.d.ts +1 -1
  521. package/src/utils/fs.js.map +1 -1
  522. package/src/utils/function-constructs/function-constructs.d.ts +2 -2
  523. package/src/utils/function-constructs/function-constructs.js +1 -1
  524. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  525. package/src/utils/generators.d.ts +4 -0
  526. package/src/utils/generators.js +4 -4
  527. package/src/utils/generators.js.map +1 -1
  528. package/src/utils/git.d.ts +1 -1
  529. package/src/utils/git.js.map +1 -1
  530. package/src/utils/iac.d.ts +1 -1
  531. package/src/utils/iac.js.map +1 -1
  532. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +1 -5
  533. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +9 -3
  534. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +2 -4
  535. package/src/utils/identity-constructs/identity-constructs.d.ts +2 -2
  536. package/src/utils/identity-constructs/identity-constructs.js +1 -1
  537. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  538. package/src/utils/js.d.ts +4 -0
  539. package/src/utils/js.js +4 -4
  540. package/src/utils/js.js.map +1 -1
  541. package/src/utils/mcp.d.ts +25 -0
  542. package/src/utils/mcp.js +81 -0
  543. package/src/utils/mcp.js.map +1 -0
  544. package/src/utils/metrics.d.ts +9 -3
  545. package/src/utils/metrics.js +58 -28
  546. package/src/utils/metrics.js.map +1 -1
  547. package/src/utils/npm-scope.d.ts +1 -1
  548. package/src/utils/npm-scope.js.map +1 -1
  549. package/src/utils/nx.d.ts +7 -2
  550. package/src/utils/nx.js +46 -14
  551. package/src/utils/nx.js.map +1 -1
  552. package/src/utils/nxlv-python.d.ts +1 -1
  553. package/src/utils/paths.d.ts +1 -1
  554. package/src/utils/pnpm-workspace.d.ts +1 -1
  555. package/src/utils/pnpm-workspace.js.map +1 -1
  556. package/src/utils/port.d.ts +31 -3
  557. package/src/utils/port.js +74 -4
  558. package/src/utils/port.js.map +1 -1
  559. package/src/utils/py.d.ts +2 -2
  560. package/src/utils/py.js +13 -6
  561. package/src/utils/py.js.map +1 -1
  562. package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +12 -2
  563. package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +30 -1
  564. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +38 -16
  565. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +28 -13
  566. package/src/utils/rdb-constructs/rdb-constructs.d.ts +5 -4
  567. package/src/utils/rdb-constructs/rdb-constructs.js +3 -11
  568. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  569. package/src/utils/shared-constructs-constants.d.ts +1 -0
  570. package/src/utils/shared-constructs-constants.js +2 -1
  571. package/src/utils/shared-constructs-constants.js.map +1 -1
  572. package/src/utils/shared-constructs.d.ts +2 -2
  573. package/src/utils/shared-constructs.js +7 -7
  574. package/src/utils/shared-constructs.js.map +1 -1
  575. package/src/utils/shared-dynamodb-scripts.d.ts +11 -0
  576. package/src/utils/shared-dynamodb-scripts.js +23 -0
  577. package/src/utils/shared-dynamodb-scripts.js.map +1 -0
  578. package/src/utils/shared-infra-config.d.ts +1 -1
  579. package/src/utils/shared-infra-config.js +1 -1
  580. package/src/utils/shared-infra-config.js.map +1 -1
  581. package/src/utils/shared-infra-scripts.d.ts +11 -0
  582. package/src/utils/shared-infra-scripts.js +35 -0
  583. package/src/utils/shared-infra-scripts.js.map +1 -0
  584. package/src/utils/shared-rdb-scripts.d.ts +11 -0
  585. package/src/utils/shared-rdb-scripts.js +20 -0
  586. package/src/utils/shared-rdb-scripts.js.map +1 -0
  587. package/src/utils/shared-scripts.d.ts +2 -5
  588. package/src/utils/shared-scripts.js +2 -23
  589. package/src/utils/shared-scripts.js.map +1 -1
  590. package/src/utils/shared-shadcn.d.ts +1 -1
  591. package/src/utils/shared-shadcn.js +1 -13
  592. package/src/utils/shared-shadcn.js.map +1 -1
  593. package/src/utils/test.d.ts +5 -1
  594. package/src/utils/test.js +9 -5
  595. package/src/utils/test.js.map +1 -1
  596. package/src/utils/toml.d.ts +1 -1
  597. package/src/utils/toml.js +4 -0
  598. package/src/utils/toml.js.map +1 -1
  599. package/src/utils/versions.d.ts +82 -83
  600. package/src/utils/versions.js +81 -82
  601. package/src/utils/versions.js.map +1 -1
  602. package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +72 -5
  603. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +63 -15
  604. package/src/utils/website-constructs/website-constructs.d.ts +2 -2
  605. package/src/utils/website-constructs/website-constructs.js +1 -1
  606. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  607. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
  608. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
  609. package/src/py/agent/scripts/http/chat.ts.template +0 -38
  610. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +0 -19
  611. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +0 -19
  612. package/src/ts/agent/scripts/http/chat.ts.template +0 -35
  613. package/src/ts/lib/eslint.d.ts +0 -14
  614. package/src/ts/lib/eslint.js +0 -90
  615. package/src/ts/lib/eslint.js.map +0 -1
  616. package/src/ts/lib/grit/eslint-dependency-checks-warn.grit +0 -1
  617. package/src/ts/rdb/files/scripts/docker-pull.ts.template +0 -15
  618. package/src/ts/rdb/files/scripts/docker-start.ts.template +0 -84
  619. package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
  620. package/src/ts/rdb/files/src/constants.ts.template +0 -8
  621. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
  622. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
  623. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
  624. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
  625. /package/src/utils/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +0 -0
  626. /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} +0 -0
  627. /package/src/utils/files/common/scripts/src/{index.ts.template → infra/index.ts.template} +0 -0
  628. /package/src/utils/files/common/scripts/src/{infra-deploy.ts.template → infra/infra-deploy.ts.template} +0 -0
  629. /package/src/utils/files/common/scripts/src/{infra-destroy.ts.template → infra/infra-destroy.ts.template} +0 -0
  630. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/cdk-command.ts.template +0 -0
  631. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/credentials.ts.template +0 -0
  632. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/run.ts.template +0 -0
  633. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
@@ -1,5 +1,574 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
+ exports[`py#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, string> };
33
+ const arn = config?.agentRuntimes?.['TestProjectAgent'];
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[`py#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
+ // \`serve-local\` 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[`py#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, string> };
135
+ const arn = config?.agentRuntimes?.['TestProjectAgent'];
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[`py#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
+ // \`serve-local\` 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[`py#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, string> };
228
+ const arn = config?.agentRuntimes?.['TestProjectAgent'];
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[`py#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
+ // \`serve-local\` 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[`py#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, string> };
312
+ const arn = config?.agentRuntimes?.['TestProjectAgent'];
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[`py#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
+ // \`serve-local\` 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[`py#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, string> };
387
+ const arn = config?.agentRuntimes?.['TestProjectAgent'];
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[`py#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 (Python FastAPI / JSONL streaming), using the
422
+ // generated client. Connects to the local \`serve-local\` server, or the deployed
423
+ // agent when \`RUNTIME_CONFIG_APP_ID\` is set.
424
+ import { chatLoop, type ChatAdapter } from 'agent-chat-cli';
425
+ import { TestProjectAgent } from './generated/client.gen.js';
426
+ import {
427
+ createAgentCoreFetch,
428
+ resolveRemoteAgent,
429
+ SESSION_ID,
430
+ } from './agentcore.js';
431
+
432
+ const SESSION_ID_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
433
+
434
+ const remote = await resolveRemoteAgent();
435
+
436
+ class TestProjectAgentAdapter implements ChatAdapter {
437
+ private client!: TestProjectAgent;
438
+
439
+ async connect(url: string) {
440
+ this.client = remote
441
+ ? new TestProjectAgent({
442
+ url: \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}\`,
443
+ fetch: createAgentCoreFetch(),
444
+ })
445
+ : new TestProjectAgent({
446
+ url,
447
+ fetch: (input, init) => {
448
+ const headers = new Headers(init?.headers);
449
+ headers.set(SESSION_ID_HEADER, SESSION_ID);
450
+ return fetch(input, { ...init, headers });
451
+ },
452
+ });
453
+ return { agentName: 'TestProjectAgent' };
454
+ }
455
+
456
+ async *sendMessage(text: string): AsyncIterable<string> {
457
+ for await (const chunk of this.client.invoke({ message: text })) {
458
+ if (typeof chunk.content === 'string') yield chunk.content;
459
+ }
460
+ }
461
+ }
462
+
463
+ await chatLoop(new TestProjectAgentAdapter(), process.env.URL ?? '');
464
+ "
465
+ `;
466
+
467
+ exports[`py#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with iam auth > agentcore.ts (http, iam) 1`] = `
468
+ "// Resolves the deployed TestProjectAgent agent from runtime config and authenticates requests to it.
469
+ import { randomUUID } from 'node:crypto';
470
+ import { getAppConfig } from '@aws-lambda-powertools/parameters/appconfig';
471
+ import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
472
+ import { AwsClient } from 'aws4fetch';
473
+
474
+ const SESSION_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
475
+
476
+ // AgentCore session ids must be at least 33 characters.
477
+ export const SESSION_ID = randomUUID().replaceAll('-', '').padEnd(33, '0');
478
+
479
+ export interface RemoteAgent {
480
+ /** ARN of the deployed Bedrock AgentCore runtime. */
481
+ arn: string;
482
+ /** AWS region parsed from the runtime ARN. */
483
+ region: string;
484
+ }
485
+
486
+ // Returns the deployed agent when \`RUNTIME_CONFIG_APP_ID\` is set, otherwise \`undefined\` to chat locally.
487
+ export const resolveRemoteAgent = async (): Promise<
488
+ RemoteAgent | undefined
489
+ > => {
490
+ const application = process.env.RUNTIME_CONFIG_APP_ID;
491
+ if (!application) {
492
+ return undefined;
493
+ }
494
+ const config = (await getAppConfig('agentcore', {
495
+ application,
496
+ environment: 'default',
497
+ transform: 'json',
498
+ })) as { agentRuntimes?: Record<string, string> };
499
+ const arn = config?.agentRuntimes?.['TestProjectAgent'];
500
+ if (!arn) {
501
+ throw new Error(
502
+ \`No deployed agent named 'TestProjectAgent' found in runtime configuration (application \${application}).\`,
503
+ );
504
+ }
505
+ return { arn, region: arn.split(':')[3] };
506
+ };
507
+
508
+ // A \`fetch\` that authenticates requests to the deployed agent and forwards the session id.
509
+ export const createAgentCoreFetch = (region: string): typeof fetch => {
510
+ const credentialProvider = fromNodeProviderChain();
511
+ return async (input, init) => {
512
+ const headers = new Headers(init?.headers);
513
+ headers.set(SESSION_HEADER, SESSION_ID);
514
+ const client = new AwsClient({
515
+ ...(await credentialProvider()),
516
+ service: 'bedrock-agentcore',
517
+ region,
518
+ });
519
+ return client.fetch(input, { ...init, headers });
520
+ };
521
+ };
522
+ "
523
+ `;
524
+
525
+ exports[`py#agent generator > chat scripts for http protocol > should match snapshot for chat scripts with iam auth > chat.ts (http, iam) 1`] = `
526
+ "// Chat CLI for TestProjectAgent (Python FastAPI / JSONL streaming), using the
527
+ // generated client. Connects to the local \`serve-local\` server, or the deployed
528
+ // agent when \`RUNTIME_CONFIG_APP_ID\` is set.
529
+ import { chatLoop, type ChatAdapter } from 'agent-chat-cli';
530
+ import { TestProjectAgent } from './generated/client.gen.js';
531
+ import {
532
+ createAgentCoreFetch,
533
+ resolveRemoteAgent,
534
+ SESSION_ID,
535
+ } from './agentcore.js';
536
+
537
+ const SESSION_ID_HEADER = 'X-Amzn-Bedrock-AgentCore-Runtime-Session-Id';
538
+
539
+ const remote = await resolveRemoteAgent();
540
+
541
+ class TestProjectAgentAdapter implements ChatAdapter {
542
+ private client!: TestProjectAgent;
543
+
544
+ async connect(url: string) {
545
+ this.client = remote
546
+ ? new TestProjectAgent({
547
+ url: \`https://bedrock-agentcore.\${remote.region}.amazonaws.com/runtimes/\${encodeURIComponent(remote.arn)}\`,
548
+ fetch: createAgentCoreFetch(remote.region),
549
+ })
550
+ : new TestProjectAgent({
551
+ url,
552
+ fetch: (input, init) => {
553
+ const headers = new Headers(init?.headers);
554
+ headers.set(SESSION_ID_HEADER, SESSION_ID);
555
+ return fetch(input, { ...init, headers });
556
+ },
557
+ });
558
+ return { agentName: 'TestProjectAgent' };
559
+ }
560
+
561
+ async *sendMessage(text: string): AsyncIterable<string> {
562
+ for await (const chunk of this.client.invoke({ message: text })) {
563
+ if (typeof chunk.content === 'string') yield chunk.content;
564
+ }
565
+ }
566
+ }
567
+
568
+ await chatLoop(new TestProjectAgentAdapter(), process.env.URL ?? '');
569
+ "
570
+ `;
571
+
3
572
  exports[`py#agent generator > should match snapshot for BedrockAgentCoreRuntime generated constructs files > agent-Dockerfile 1`] = `
4
573
  "FROM public.ecr.aws/docker/library/python:3.14-slim
5
574
 
@@ -353,8 +922,7 @@ resource "aws_ecr_repository" "agent_core_repository" {
353
922
  #checkov:skip=CKV_AWS_136:AES256 encryption is sufficient for ECR repositories
354
923
  name = "\${lower(var.agent_runtime_name)}_repository_\${random_id.unique_suffix.hex}"
355
924
 
356
- #checkov:skip=CKV_AWS_51:Image tag is reused for latest deployments
357
- image_tag_mutability = "MUTABLE"
925
+ image_tag_mutability = "IMMUTABLE"
358
926
  force_delete = true
359
927
 
360
928
  image_scanning_configuration {
@@ -528,25 +1096,37 @@ data "external" "docker_digest" {
528
1096
  program = ["sh", "-c", "echo '{\\"digest\\":\\"'$(docker inspect \${var.docker_image_tag} --format '{{.Id}}')'\\"}' "]
529
1097
  }
530
1098
 
1099
+ locals {
1100
+ # Content-based, immutable image tag derived from the local image digest
1101
+ image_tag = replace(data.external.docker_digest.result.digest, "sha256:", "")
1102
+ }
1103
+
531
1104
  # Null resource for container image publish
532
1105
  resource "null_resource" "docker_publish" {
533
1106
  triggers = {
534
1107
  docker_digest = data.external.docker_digest.result.digest
535
1108
  repository_url = aws_ecr_repository.agent_core_repository.repository_url
536
1109
  docker_image_tag = var.docker_image_tag
1110
+ image_tag = local.image_tag
537
1111
  }
538
1112
 
539
1113
  provisioner "local-exec" {
540
1114
  command = <<-EOT
541
1115
  # Get ECR login token
542
- aws ecr get-login-password --region \${local.aws_region} | docker login --username AWS --password-stdin \${self.triggers.repository_url}
1116
+ aws ecr get-login-password --region "$AWS_REGION" | docker login --username AWS --password-stdin "$REPOSITORY_URL"
543
1117
 
544
- # Tag the image
545
- docker tag \${self.triggers.docker_image_tag} \${self.triggers.repository_url}:latest
1118
+ # Tag the image with the immutable content-based tag
1119
+ docker tag "$DOCKER_IMAGE_TAG" "$REPOSITORY_URL:$IMAGE_TAG"
546
1120
 
547
1121
  # Push the image
548
- docker push \${self.triggers.repository_url}:latest
1122
+ docker push "$REPOSITORY_URL:$IMAGE_TAG"
549
1123
  EOT
1124
+ environment = {
1125
+ AWS_REGION = local.aws_region
1126
+ REPOSITORY_URL = self.triggers.repository_url
1127
+ DOCKER_IMAGE_TAG = self.triggers.docker_image_tag
1128
+ IMAGE_TAG = self.triggers.image_tag
1129
+ }
550
1130
  }
551
1131
 
552
1132
  depends_on = [aws_ecr_repository_policy.agent_core_ecr_policy]
@@ -560,7 +1140,7 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
560
1140
 
561
1141
  agent_runtime_artifact {
562
1142
  container_configuration {
563
- container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}:latest"
1143
+ container_uri = "\${aws_ecr_repository.agent_core_repository.repository_url}:\${local.image_tag}"
564
1144
  }
565
1145
  }
566
1146
 
@@ -593,6 +1173,63 @@ resource "aws_bedrockagentcore_agent_runtime" "agent_runtime" {
593
1173
  ]
594
1174
  }
595
1175
 
1176
+ # MCP consumers (e.g. gateway targets, which fetch tools at creation) can race
1177
+ # the runtime's first cold start, so probe it until it serves MCP. The ARN
1178
+ # output is routed through this resource so consumers wait for readiness.
1179
+ resource "null_resource" "runtime_ready" {
1180
+ count = var.server_protocol == "MCP" ? 1 : 0
1181
+
1182
+ triggers = {
1183
+ runtime_arn = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
1184
+ }
1185
+
1186
+ provisioner "local-exec" {
1187
+ command = <<-EOT
1188
+ uv run --with boto3 python -c "
1189
+ import boto3
1190
+ import json
1191
+ import os
1192
+ import time
1193
+ import uuid
1194
+
1195
+ runtime_arn = os.environ['RUNTIME_ARN']
1196
+ client = boto3.client('bedrock-agentcore')
1197
+ initialize_request = json.dumps({
1198
+ 'jsonrpc': '2.0',
1199
+ 'id': 1,
1200
+ 'method': 'initialize',
1201
+ 'params': {
1202
+ 'protocolVersion': '2025-03-26',
1203
+ 'capabilities': {},
1204
+ 'clientInfo': {'name': 'readiness-probe', 'version': '1.0'},
1205
+ },
1206
+ })
1207
+
1208
+ deadline = time.time() + 3 * 60
1209
+ while True:
1210
+ try:
1211
+ client.invoke_agent_runtime(
1212
+ agentRuntimeArn=runtime_arn,
1213
+ runtimeSessionId=f'readiness-probe-{uuid.uuid4()}',
1214
+ contentType='application/json',
1215
+ accept='application/json, text/event-stream',
1216
+ payload=initialize_request,
1217
+ )
1218
+ break
1219
+ except Exception:
1220
+ if time.time() >= deadline:
1221
+ raise
1222
+ time.sleep(5)
1223
+
1224
+ print(f'Runtime {runtime_arn} is serving MCP')
1225
+ "
1226
+ EOT
1227
+ environment = {
1228
+ RUNTIME_ARN = self.triggers.runtime_arn
1229
+ }
1230
+ }
1231
+ }
1232
+
596
1233
  # Outputs
597
1234
  output "agent_core_runtime_role_arn" {
598
1235
  description = "ARN of the Agent Core Runtime IAM role"
@@ -610,8 +1247,8 @@ output "agent_runtime_name" {
610
1247
  }
611
1248
 
612
1249
  output "agent_core_runtime_arn" {
613
- description = "ARN of the Bedrock Agent Core runtime"
614
- value = aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
1250
+ 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."
1251
+ value = var.server_protocol == "MCP" ? null_resource.runtime_ready[0].triggers.runtime_arn : aws_bedrockagentcore_agent_runtime.agent_runtime.agent_runtime_arn
615
1252
  }
616
1253
 
617
1254
  output "agent_runtime_id" {
@@ -633,6 +1270,7 @@ exports[`py#agent generator > should match snapshot for generated files > agent-
633
1270
 
634
1271
  from strands import Agent, tool
635
1272
  from strands_tools import current_time
1273
+ from proj_agent_connection import log_model_errors
636
1274
 
637
1275
 
638
1276
  @tool
@@ -651,6 +1289,7 @@ Use your tools for mathematical tasks.
651
1289
  Refer to tools as your 'spellbook'.
652
1290
  """,
653
1291
  tools=[subtract, current_time],
1292
+ hooks=[log_model_errors],
654
1293
  )
655
1294
  "
656
1295
  `;
@@ -661,7 +1300,7 @@ exports[`py#agent generator > should match snapshot for generated files > agent-
661
1300
  import uvicorn
662
1301
  from bedrock_agentcore.runtime.models import PingStatus
663
1302
  from fastapi import Request
664
- from pydantic import BaseModel
1303
+ from pydantic import BaseModel, Field
665
1304
  from starlette.middleware.base import BaseHTTPMiddleware
666
1305
  from proj_agent_connection import session_id_context, with_session_id
667
1306
 
@@ -679,7 +1318,7 @@ _agent = _agent_ctx.__enter__()
679
1318
 
680
1319
 
681
1320
  class InvokeInput(BaseModel):
682
- message: str
1321
+ message: str = Field(max_length=100000)
683
1322
 
684
1323
 
685
1324
  class StreamChunk(BaseModel):
@@ -690,7 +1329,6 @@ async def handle_invoke(input: InvokeInput):
690
1329
  """Streaming handler for agent invocation"""
691
1330
  stream = _agent.stream_async(input.message)
692
1331
  async for event in stream:
693
- print(event)
694
1332
  text = (
695
1333
  event.get("event", {})
696
1334
  .get("contentBlockDelta", {})
@@ -747,18 +1385,18 @@ version = "0.1.0"
747
1385
  dependencies = [
748
1386
  "proj.agent_connection",
749
1387
  "aws-lambda-powertools==3.29.0",
750
- "aws-opentelemetry-distro==0.17.0",
751
- "bedrock-agentcore==1.11.0",
752
- "boto3==1.43.14",
753
- "fastapi==0.136.3",
754
- "mcp==1.27.1",
755
- "strands-agents==1.41.0",
756
- "strands-agents-tools==0.6.0",
757
- "uvicorn==0.48.0"
1388
+ "aws-opentelemetry-distro==0.17.1",
1389
+ "bedrock-agentcore==1.14.1",
1390
+ "boto3==1.43.29",
1391
+ "fastapi==0.137.1",
1392
+ "mcp==1.27.2",
1393
+ "strands-agents==1.43.0",
1394
+ "strands-agents-tools==0.8.0",
1395
+ "uvicorn==0.49.0"
758
1396
  ]
759
1397
 
760
1398
  [dependency-groups]
761
- dev = [ "fastapi[standard]==0.136.3" ]
1399
+ dev = [ "fastapi[standard]==0.137.1" ]
762
1400
 
763
1401
  [tool.uv]
764
1402
  dev-dependencies = [ ]