@aws/nx-plugin 1.0.0-rc.23 → 1.0.0-rc.24

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 (652) hide show
  1. package/LICENSE-THIRD-PARTY +2088 -971
  2. package/package.json +25 -10
  3. package/src/agentcore-gateway/attach-upstream.d.ts +7 -7
  4. package/src/agentcore-gateway/attach-upstream.js +19 -22
  5. package/src/agentcore-gateway/attach-upstream.js.map +1 -1
  6. package/src/agentcore-gateway/gateway-connection/generator.d.ts +3 -3
  7. package/src/agentcore-gateway/gateway-connection/generator.js +42 -45
  8. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
  9. package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
  10. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
  11. package/src/agentcore-gateway/generator.js +89 -72
  12. package/src/agentcore-gateway/generator.js.map +1 -1
  13. package/src/agentcore-gateway/mcp-connection/generator.d.ts +2 -2
  14. package/src/agentcore-gateway/mcp-connection/generator.js +24 -30
  15. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
  16. package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
  17. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
  18. package/src/agentcore-gateway/schema.d.js +6 -0
  19. package/src/agentcore-gateway/schema.d.js.map +1 -0
  20. package/src/bin/aws-nx-mcp.js +14 -0
  21. package/src/bin/aws-nx-mcp.js.map +1 -0
  22. package/src/connection/{agent-serve-local.d.ts → agent-local-dev.d.ts} +5 -5
  23. package/src/connection/agent-local-dev.js +42 -0
  24. package/src/connection/agent-local-dev.js.map +1 -0
  25. package/src/connection/agent-runtime-config.js +9 -14
  26. package/src/connection/agent-runtime-config.js.map +1 -1
  27. package/src/connection/generator.js +262 -207
  28. package/src/connection/generator.js.map +1 -1
  29. package/src/connection/{serve-local.d.ts → local-dev.d.ts} +3 -3
  30. package/src/connection/local-dev.js +37 -0
  31. package/src/connection/local-dev.js.map +1 -0
  32. package/src/connection/schema.d.js +6 -0
  33. package/src/connection/schema.d.js.map +1 -0
  34. package/src/index.js +2 -5
  35. package/src/index.js.map +1 -1
  36. package/src/infra/app/__snapshots__/generator.spec.ts.snap +4 -26
  37. package/src/infra/app/generator.js +133 -123
  38. package/src/infra/app/generator.js.map +1 -1
  39. package/src/infra/app/schema.d.js +6 -0
  40. package/src/infra/app/schema.d.js.map +1 -0
  41. package/src/license/config-types.js +5 -3
  42. package/src/license/config-types.js.map +1 -1
  43. package/src/license/config.d.ts +1 -1
  44. package/src/license/config.js +267 -242
  45. package/src/license/config.js.map +1 -1
  46. package/src/license/dependency-check/check.js +51 -46
  47. package/src/license/dependency-check/check.js.map +1 -1
  48. package/src/license/dependency-check/collectors/collector.js +41 -71
  49. package/src/license/dependency-check/collectors/collector.js.map +1 -1
  50. package/src/license/dependency-check/collectors/npm-collector.js +34 -41
  51. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -1
  52. package/src/license/dependency-check/collectors/python-collector.js +55 -62
  53. package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
  54. package/src/license/dependency-check/evaluator.js +40 -68
  55. package/src/license/dependency-check/evaluator.js.map +1 -1
  56. package/src/license/dependency-check/executor.js +30 -22
  57. package/src/license/dependency-check/executor.js.map +1 -1
  58. package/src/license/dependency-check/pre-approved.js +949 -336
  59. package/src/license/dependency-check/pre-approved.js.map +1 -1
  60. package/src/license/dependency-check/types.js +2 -3
  61. package/src/license/dependency-check/types.js.map +1 -1
  62. package/src/license/generator.js +55 -60
  63. package/src/license/generator.js.map +1 -1
  64. package/src/license/index.js +3 -9
  65. package/src/license/index.js.map +1 -1
  66. package/src/license/known-exceptions.js +14 -13
  67. package/src/license/known-exceptions.js.map +1 -1
  68. package/src/license/schema.d.js +6 -0
  69. package/src/license/schema.d.js.map +1 -0
  70. package/src/license/sync/generator.js +94 -119
  71. package/src/license/sync/generator.js.map +1 -1
  72. package/src/license/sync/project-file-sync.js +28 -35
  73. package/src/license/sync/project-file-sync.js.map +1 -1
  74. package/src/mcp-server/generator-info.js +130 -160
  75. package/src/mcp-server/generator-info.js.map +1 -1
  76. package/src/mcp-server/guide-pipeline.js +184 -206
  77. package/src/mcp-server/guide-pipeline.js.map +1 -1
  78. package/src/mcp-server/guide-render.js +10 -25
  79. package/src/mcp-server/guide-render.js.map +1 -1
  80. package/src/mcp-server/index.js +6 -10
  81. package/src/mcp-server/index.js.map +1 -1
  82. package/src/mcp-server/mdx-ast.js +39 -57
  83. package/src/mcp-server/mdx-ast.js.map +1 -1
  84. package/src/mcp-server/option-filter.js +33 -47
  85. package/src/mcp-server/option-filter.js.map +1 -1
  86. package/src/mcp-server/schema-registry.js +27 -40
  87. package/src/mcp-server/schema-registry.js.map +1 -1
  88. package/src/mcp-server/schema.js +9 -7
  89. package/src/mcp-server/schema.js.map +1 -1
  90. package/src/mcp-server/server.js +20 -24
  91. package/src/mcp-server/server.js.map +1 -1
  92. package/src/mcp-server/tools/create-workspace-command.js +23 -24
  93. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  94. package/src/mcp-server/tools/general-guidance.js +28 -25
  95. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  96. package/src/mcp-server/tools/generator-guide.js +29 -37
  97. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  98. package/src/mcp-server/tools/list-generators.js +19 -25
  99. package/src/mcp-server/tools/list-generators.js.map +1 -1
  100. package/src/open-api/ts-client/generator.js +16 -26
  101. package/src/open-api/ts-client/generator.js.map +1 -1
  102. package/src/open-api/ts-client/schema.d.js +6 -0
  103. package/src/open-api/ts-client/schema.d.js.map +1 -0
  104. package/src/open-api/ts-hooks/generator.js +13 -21
  105. package/src/open-api/ts-hooks/generator.js.map +1 -1
  106. package/src/open-api/ts-hooks/schema.d.js +6 -0
  107. package/src/open-api/ts-hooks/schema.d.js.map +1 -0
  108. package/src/open-api/ts-metadata/generator.js +12 -20
  109. package/src/open-api/ts-metadata/generator.js.map +1 -1
  110. package/src/open-api/ts-metadata/schema.d.js +6 -0
  111. package/src/open-api/ts-metadata/schema.d.js.map +1 -0
  112. package/src/open-api/utils/codegen-data/languages.js +42 -60
  113. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  114. package/src/open-api/utils/codegen-data/types.js +31 -30
  115. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  116. package/src/open-api/utils/codegen-data.js +253 -269
  117. package/src/open-api/utils/codegen-data.js.map +1 -1
  118. package/src/open-api/utils/normalise.js +242 -241
  119. package/src/open-api/utils/normalise.js.map +1 -1
  120. package/src/open-api/utils/parse.js +8 -14
  121. package/src/open-api/utils/parse.js.map +1 -1
  122. package/src/open-api/utils/refs.js +12 -22
  123. package/src/open-api/utils/refs.js.map +1 -1
  124. package/src/open-api/utils/types.js +5 -2
  125. package/src/open-api/utils/types.js.map +1 -1
  126. package/src/preset/__snapshots__/generator.spec.ts.snap +31 -6
  127. package/src/preset/generator.d.ts +1 -1
  128. package/src/preset/generator.js +130 -112
  129. package/src/preset/generator.js.map +1 -1
  130. package/src/preset/schema.d.js +6 -0
  131. package/src/preset/schema.d.js.map +1 -0
  132. package/src/preset/schema.d.ts +0 -1
  133. package/src/preset/schema.json +0 -5
  134. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +304 -0
  135. package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.frameworks.spec.ts.snap} +6 -843
  136. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +535 -0
  137. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -2
  138. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +1 -1
  139. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +1 -1
  140. package/src/py/agent/a2a-connection/generator.js +70 -74
  141. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  142. package/src/py/agent/a2a-connection/schema.d.js +8 -0
  143. package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
  144. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +6 -8
  145. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +3 -3
  146. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +3 -3
  147. package/src/py/agent/gateway-connection/generator.js +61 -57
  148. package/src/py/agent/gateway-connection/generator.js.map +1 -1
  149. package/src/py/agent/gateway-connection/schema.d.js +6 -0
  150. package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
  151. package/src/py/agent/generator.js +227 -193
  152. package/src/py/agent/generator.js.map +1 -1
  153. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +5 -12
  154. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +1 -1
  155. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +1 -1
  156. package/src/py/agent/mcp-connection/generator.js +53 -51
  157. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  158. package/src/py/agent/mcp-connection/schema.d.js +8 -0
  159. package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
  160. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +3 -2
  161. package/src/py/agent/react-connection/generator.js +51 -58
  162. package/src/py/agent/react-connection/generator.js.map +1 -1
  163. package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +4 -4
  164. package/src/py/agent/react-connection/local-dev.js +36 -0
  165. package/src/py/agent/react-connection/local-dev.js.map +1 -0
  166. package/src/py/agent/react-connection/schema.d.js +8 -0
  167. package/src/py/agent/react-connection/schema.d.js.map +1 -0
  168. package/src/py/agent/schema.d.js +6 -0
  169. package/src/py/agent/schema.d.js.map +1 -0
  170. package/src/py/api/generator.js +12 -12
  171. package/src/py/api/generator.js.map +1 -1
  172. package/src/py/api/schema.d.js +6 -0
  173. package/src/py/api/schema.d.js.map +1 -0
  174. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +68 -28
  175. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
  176. package/src/py/dynamodb/agent-connection/generator.js +27 -29
  177. package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
  178. package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
  179. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
  180. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +3 -3
  181. package/src/py/dynamodb/fast-api-connection/generator.js +26 -28
  182. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
  183. package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
  184. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
  185. package/src/py/dynamodb/files/__name__/client.py.template +5 -5
  186. package/src/py/dynamodb/files/__name__/entities/base.py.template +2 -2
  187. package/src/py/dynamodb/files/config.json.template +1 -1
  188. package/src/py/dynamodb/generator.js +63 -62
  189. package/src/py/dynamodb/generator.js.map +1 -1
  190. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
  191. package/src/py/dynamodb/mcp-server-connection/generator.js +27 -29
  192. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
  193. package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
  194. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  195. package/src/py/dynamodb/schema.d.js +6 -0
  196. package/src/py/dynamodb/schema.d.js.map +1 -0
  197. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +45 -4632
  198. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +4833 -0
  199. package/src/py/fast-api/generator.js +79 -85
  200. package/src/py/fast-api/generator.js.map +1 -1
  201. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +3 -2
  202. package/src/py/fast-api/react/generator.js +22 -24
  203. package/src/py/fast-api/react/generator.js.map +1 -1
  204. package/src/py/fast-api/react/open-api.js +28 -29
  205. package/src/py/fast-api/react/open-api.js.map +1 -1
  206. package/src/py/fast-api/react/schema.d.js +6 -0
  207. package/src/py/fast-api/react/schema.d.js.map +1 -0
  208. package/src/py/fast-api/schema.d.js +6 -0
  209. package/src/py/fast-api/schema.d.js.map +1 -0
  210. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  211. package/src/py/lambda-function/generator.js +57 -58
  212. package/src/py/lambda-function/generator.js.map +1 -1
  213. package/src/py/lambda-function/schema.d.js +6 -0
  214. package/src/py/lambda-function/schema.d.js.map +1 -0
  215. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +4 -4
  216. package/src/py/mcp-server/generator.js +149 -131
  217. package/src/py/mcp-server/generator.js.map +1 -1
  218. package/src/py/mcp-server/schema.d.js +6 -0
  219. package/src/py/mcp-server/schema.d.js.map +1 -0
  220. package/src/py/project/generator.js +128 -89
  221. package/src/py/project/generator.js.map +1 -1
  222. package/src/py/project/schema.d.js +6 -0
  223. package/src/py/project/schema.d.js.map +1 -0
  224. package/src/sdk/agentcore-gateway.d.ts +6 -0
  225. package/src/sdk/agentcore-gateway.js +7 -0
  226. package/src/sdk/agentcore-gateway.js.map +1 -0
  227. package/src/sdk/connection.d.ts +6 -0
  228. package/src/sdk/connection.js +6 -0
  229. package/src/sdk/connection.js.map +1 -0
  230. package/{sdk → src/sdk}/license.d.ts +4 -4
  231. package/src/sdk/license.js +7 -0
  232. package/src/sdk/license.js.map +1 -0
  233. package/src/sdk/open-api.d.ts +10 -0
  234. package/src/sdk/open-api.js +8 -0
  235. package/src/sdk/open-api.js.map +1 -0
  236. package/src/sdk/py.d.ts +14 -0
  237. package/src/sdk/py.js +10 -0
  238. package/src/sdk/py.js.map +1 -0
  239. package/src/sdk/terraform.d.ts +6 -0
  240. package/src/sdk/terraform.js +7 -0
  241. package/src/sdk/terraform.js.map +1 -0
  242. package/src/sdk/ts.d.ts +33 -0
  243. package/src/sdk/ts.js +35 -0
  244. package/src/sdk/ts.js.map +1 -0
  245. package/{sdk → src/sdk}/utils/ast.d.ts +2 -2
  246. package/src/sdk/utils/ast.js +7 -0
  247. package/src/sdk/utils/ast.js.map +1 -0
  248. package/{sdk → src/sdk}/utils/format.d.ts +1 -1
  249. package/src/sdk/utils/format.js +6 -0
  250. package/src/sdk/utils/format.js.map +1 -0
  251. package/{sdk → src/sdk}/utils/test.d.ts +1 -1
  252. package/src/sdk/utils/test.js +6 -0
  253. package/src/sdk/utils/test.js.map +1 -0
  254. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +2 -8
  255. package/src/smithy/project/files/build.Dockerfile.template +1 -4
  256. package/src/smithy/project/generator.js +44 -42
  257. package/src/smithy/project/generator.js.map +1 -1
  258. package/src/smithy/project/schema.d.js +6 -0
  259. package/src/smithy/project/schema.d.js.map +1 -0
  260. package/src/smithy/react-connection/generator.js +35 -46
  261. package/src/smithy/react-connection/generator.js.map +1 -1
  262. package/src/smithy/react-connection/schema.d.js +6 -0
  263. package/src/smithy/react-connection/schema.d.js.map +1 -0
  264. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +395 -72
  265. package/src/smithy/ts/api/generator.js +121 -111
  266. package/src/smithy/ts/api/generator.js.map +1 -1
  267. package/src/smithy/ts/api/schema.d.js +6 -0
  268. package/src/smithy/ts/api/schema.d.js.map +1 -0
  269. package/src/terraform/project/files/application/src/providers.tf.template +1 -1
  270. package/src/terraform/project/generator.js +141 -103
  271. package/src/terraform/project/generator.js.map +1 -1
  272. package/src/terraform/project/schema.d.js +9 -0
  273. package/src/terraform/project/schema.d.js.map +1 -0
  274. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +336 -92
  275. package/src/trpc/backend/generator.js +93 -86
  276. package/src/trpc/backend/generator.js.map +1 -1
  277. package/src/trpc/backend/schema.d.js +6 -0
  278. package/src/trpc/backend/schema.d.js.map +1 -0
  279. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +1 -1
  280. package/src/trpc/react/generator.js +59 -58
  281. package/src/trpc/react/generator.js.map +1 -1
  282. package/src/trpc/react/schema.d.js +6 -0
  283. package/src/trpc/react/schema.d.js.map +1 -0
  284. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +10 -10
  285. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -1
  286. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +1 -1
  287. package/src/ts/agent/a2a-connection/generator.js +58 -54
  288. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  289. package/src/ts/agent/a2a-connection/schema.d.js +8 -0
  290. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
  291. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +5 -5
  292. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +3 -3
  293. package/src/ts/agent/gateway-connection/generator.js +57 -52
  294. package/src/ts/agent/gateway-connection/generator.js.map +1 -1
  295. package/src/ts/agent/gateway-connection/schema.d.js +6 -0
  296. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
  297. package/src/ts/agent/generator.js +165 -136
  298. package/src/ts/agent/generator.js.map +1 -1
  299. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +1 -1
  300. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +1 -1
  301. package/src/ts/agent/mcp-connection/generator.js +48 -46
  302. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  303. package/src/ts/agent/mcp-connection/schema.d.js +8 -0
  304. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
  305. package/src/ts/agent/react-connection/generator.js +79 -79
  306. package/src/ts/agent/react-connection/generator.js.map +1 -1
  307. package/src/ts/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +2 -2
  308. package/src/ts/agent/react-connection/local-dev.js +17 -0
  309. package/src/ts/agent/react-connection/local-dev.js.map +1 -0
  310. package/src/ts/agent/react-connection/schema.d.js +8 -0
  311. package/src/ts/agent/react-connection/schema.d.js.map +1 -0
  312. package/src/ts/agent/schema.d.js +6 -0
  313. package/src/ts/agent/schema.d.js.map +1 -0
  314. package/src/ts/api/generator.js +16 -18
  315. package/src/ts/api/generator.js.map +1 -1
  316. package/src/ts/api/schema.d.js +6 -0
  317. package/src/ts/api/schema.d.js.map +1 -0
  318. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +8 -8
  319. package/src/ts/astro-docs/generator.js +59 -48
  320. package/src/ts/astro-docs/generator.js.map +1 -1
  321. package/src/ts/astro-docs/schema.d.js +6 -0
  322. package/src/ts/astro-docs/schema.d.js.map +1 -0
  323. package/src/ts/docs/generator.js +10 -10
  324. package/src/ts/docs/generator.js.map +1 -1
  325. package/src/ts/docs/schema.d.js +6 -0
  326. package/src/ts/docs/schema.d.js.map +1 -0
  327. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +68 -30
  328. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
  329. package/src/ts/dynamodb/agent-connection/generator.js +21 -23
  330. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  331. package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
  332. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
  333. package/src/ts/dynamodb/files/config.json.template +1 -1
  334. package/src/ts/dynamodb/files/src/client.ts.template +7 -7
  335. package/src/ts/dynamodb/generator.js +64 -63
  336. package/src/ts/dynamodb/generator.js.map +1 -1
  337. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
  338. package/src/ts/dynamodb/mcp-server-connection/generator.js +21 -23
  339. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  340. package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
  341. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  342. package/src/ts/dynamodb/schema.d.js +6 -0
  343. package/src/ts/dynamodb/schema.d.js.map +1 -0
  344. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
  345. package/src/ts/dynamodb/smithy-connection/generator.js +20 -22
  346. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  347. package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
  348. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
  349. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
  350. package/src/ts/dynamodb/trpc-connection/generator.js +20 -22
  351. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  352. package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
  353. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
  354. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  355. package/src/ts/lambda-function/generator.js +55 -55
  356. package/src/ts/lambda-function/generator.js.map +1 -1
  357. package/src/ts/lambda-function/io.js +83 -52
  358. package/src/ts/lambda-function/io.js.map +1 -1
  359. package/src/ts/lambda-function/schema.d.js +6 -0
  360. package/src/ts/lambda-function/schema.d.js.map +1 -0
  361. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +23 -36
  362. package/src/ts/lib/biome.js +37 -37
  363. package/src/ts/lib/biome.js.map +1 -1
  364. package/src/ts/lib/generator.js +75 -77
  365. package/src/ts/lib/generator.js.map +1 -1
  366. package/src/ts/lib/schema.d.js +6 -0
  367. package/src/ts/lib/schema.d.js.map +1 -0
  368. package/src/ts/lib/ts-project-utils.js +65 -70
  369. package/src/ts/lib/ts-project-utils.js.map +1 -1
  370. package/src/ts/lib/types.js +5 -2
  371. package/src/ts/lib/types.js.map +1 -1
  372. package/src/ts/lib/vitest.js +29 -26
  373. package/src/ts/lib/vitest.js.map +1 -1
  374. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +4 -4
  375. package/src/ts/mcp-server/generator.js +157 -138
  376. package/src/ts/mcp-server/generator.js.map +1 -1
  377. package/src/ts/mcp-server/schema.d.js +6 -0
  378. package/src/ts/mcp-server/schema.d.js.map +1 -0
  379. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +14 -9
  380. package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
  381. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +4 -4
  382. package/src/ts/nx-generator/generator.js +84 -83
  383. package/src/ts/nx-generator/generator.js.map +1 -1
  384. package/src/ts/nx-generator/schema.d.js +6 -0
  385. package/src/ts/nx-generator/schema.d.js.map +1 -0
  386. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +30 -18
  387. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  388. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  389. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  390. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  391. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  392. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +3 -3
  393. package/src/ts/nx-plugin/generator.js +49 -48
  394. package/src/ts/nx-plugin/generator.js.map +1 -1
  395. package/src/ts/nx-plugin/schema.d.js +9 -0
  396. package/src/ts/nx-plugin/schema.d.js.map +1 -0
  397. package/src/ts/nx-plugin/utils.js +32 -44
  398. package/src/ts/nx-plugin/utils.js.map +1 -1
  399. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +30 -30
  400. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +6 -6
  401. package/src/ts/rdb/agent-connection/generator.js +38 -39
  402. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  403. package/src/ts/rdb/agent-connection/schema.d.js +8 -0
  404. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
  405. package/src/ts/rdb/files/config.json.template +1 -1
  406. package/src/ts/rdb/files/prisma.config.ts.template +2 -2
  407. package/src/ts/rdb/files/src/prisma.ts.template +7 -7
  408. package/src/ts/rdb/files/src/utils.ts.template +1 -0
  409. package/src/ts/rdb/generator.js +130 -117
  410. package/src/ts/rdb/generator.js.map +1 -1
  411. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +6 -6
  412. package/src/ts/rdb/mcp-server-connection/generator.js +36 -37
  413. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  414. package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
  415. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
  416. package/src/ts/rdb/schema.d.js +6 -0
  417. package/src/ts/rdb/schema.d.js.map +1 -0
  418. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
  419. package/src/ts/rdb/smithy-connection/generator.js +46 -43
  420. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  421. package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
  422. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
  423. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
  424. package/src/ts/rdb/trpc-connection/generator.js +36 -31
  425. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  426. package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
  427. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
  428. package/src/ts/rdb/utils.js +9 -11
  429. package/src/ts/rdb/utils.js.map +1 -1
  430. package/src/ts/react-website/agui/generator.js +69 -61
  431. package/src/ts/react-website/agui/generator.js.map +1 -1
  432. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +154 -260
  433. package/src/ts/react-website/app/generator.js +197 -188
  434. package/src/ts/react-website/app/generator.js.map +1 -1
  435. package/src/ts/react-website/app/schema.d.js +6 -0
  436. package/src/ts/react-website/app/schema.d.js.map +1 -0
  437. package/src/ts/react-website/app/schema.json +6 -6
  438. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +118 -4
  439. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +10 -3
  440. package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
  441. package/src/ts/react-website/cognito-auth/generator.js +60 -60
  442. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  443. package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
  444. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
  445. package/src/ts/react-website/cognito-auth/utils.js +34 -32
  446. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  447. package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
  448. package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
  449. package/src/ts/react-website/runtime-config/generator.js +29 -31
  450. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  451. package/src/ts/react-website/runtime-config/schema.d.js +6 -0
  452. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
  453. package/src/ts/sync/generator.js +60 -59
  454. package/src/ts/sync/generator.js.map +1 -1
  455. package/src/ts/website/app/generator.js +10 -10
  456. package/src/ts/website/app/generator.js.map +1 -1
  457. package/src/ts/website/app/schema.d.js +6 -0
  458. package/src/ts/website/app/schema.d.js.map +1 -0
  459. package/src/ts/website/app/schema.json +6 -6
  460. package/src/ts/website/auth/generator.js +11 -11
  461. package/src/ts/website/auth/generator.js.map +1 -1
  462. package/src/ts/website/auth/schema.d.js +6 -0
  463. package/src/ts/website/auth/schema.d.js.map +1 -0
  464. package/src/utils/agent-chat/agent-chat.d.ts +1 -1
  465. package/src/utils/agent-chat/agent-chat.js +11 -12
  466. package/src/utils/agent-chat/agent-chat.js.map +1 -1
  467. package/src/utils/agent-chat/files/a2a/chat.ts.template +1 -1
  468. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +1 -1
  469. package/src/utils/agent-chat/files/http-py/chat.ts.template +1 -1
  470. package/src/utils/agent-chat/files/http-ts/chat.ts.template +1 -1
  471. package/src/utils/agent-connection/agent-connection.js +129 -146
  472. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  473. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +1 -1
  474. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +1 -1
  475. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +1 -1
  476. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +1 -1
  477. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +1 -1
  478. package/src/utils/agent-core-constructs/agent-core-constructs.js +53 -50
  479. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  480. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
  481. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +4 -4
  482. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +2 -2
  483. package/src/utils/api-constructs/api-constructs.js +30 -31
  484. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  485. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +14 -6
  486. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +58 -0
  487. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
  488. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +28 -14
  489. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +1 -8
  490. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +91 -4
  491. package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
  492. package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
  493. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
  494. package/src/utils/api-constructs/open-api-metadata.js +22 -22
  495. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  496. package/src/utils/ast/website.js +17 -19
  497. package/src/utils/ast/website.js.map +1 -1
  498. package/src/utils/ast.js +72 -97
  499. package/src/utils/ast.js.map +1 -1
  500. package/src/utils/bundle/bundle.js +50 -47
  501. package/src/utils/bundle/bundle.js.map +1 -1
  502. package/src/utils/commands.js +47 -26
  503. package/src/utils/commands.js.map +1 -1
  504. package/src/utils/config/index.d.ts +2 -2
  505. package/src/utils/config/index.js +5 -4
  506. package/src/utils/config/index.js.map +1 -1
  507. package/src/utils/config/utils.js +48 -58
  508. package/src/utils/config/utils.js.map +1 -1
  509. package/src/utils/connection/open-api/react.d.ts +5 -5
  510. package/src/utils/connection/open-api/react.js +81 -77
  511. package/src/utils/connection/open-api/react.js.map +1 -1
  512. package/src/utils/containers.js +22 -23
  513. package/src/utils/containers.js.map +1 -1
  514. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +32 -33
  515. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  516. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +12 -2
  517. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +1 -1
  518. package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +2 -2
  519. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +1 -1
  520. package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +17 -2
  521. package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
  522. package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
  523. package/src/utils/files/common/scripts/src/rdb/{pull-image.ts.template → shared/pull-image.ts.template} +1 -1
  524. package/src/utils/files/common/scripts/src/rdb/{start-container.ts.template → shared/start-container.ts.template} +16 -1
  525. package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +2 -2
  526. package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
  527. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +3 -3
  528. package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
  529. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +2 -2
  530. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
  531. package/src/utils/format.js +153 -99
  532. package/src/utils/format.js.map +1 -1
  533. package/src/utils/fs.js +14 -13
  534. package/src/utils/fs.js.map +1 -1
  535. package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
  536. package/src/utils/function-constructs/function-constructs.js +21 -26
  537. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  538. package/src/utils/generators.js +18 -20
  539. package/src/utils/generators.js.map +1 -1
  540. package/src/utils/git.js +19 -34
  541. package/src/utils/git.js.map +1 -1
  542. package/src/utils/iac-providers.js +5 -5
  543. package/src/utils/iac-providers.js.map +1 -1
  544. package/src/utils/iac.js +12 -14
  545. package/src/utils/iac.js.map +1 -1
  546. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +112 -2
  547. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +2 -2
  548. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +104 -2
  549. package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
  550. package/src/utils/identity-constructs/identity-constructs.js +24 -28
  551. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  552. package/src/utils/js.js +27 -20
  553. package/src/utils/js.js.map +1 -1
  554. package/src/utils/mcp.js +34 -41
  555. package/src/utils/mcp.js.map +1 -1
  556. package/src/utils/metrics.js +30 -45
  557. package/src/utils/metrics.js.map +1 -1
  558. package/src/utils/mock-project-graph.js +8 -12
  559. package/src/utils/mock-project-graph.js.map +1 -1
  560. package/src/utils/names.js +25 -51
  561. package/src/utils/names.js.map +1 -1
  562. package/src/utils/npm-scope.js +9 -17
  563. package/src/utils/npm-scope.js.map +1 -1
  564. package/src/utils/nx.d.ts +18 -2
  565. package/src/utils/nx.js +111 -74
  566. package/src/utils/nx.js.map +1 -1
  567. package/src/utils/nxlv-python.js +27 -15
  568. package/src/utils/nxlv-python.js.map +1 -1
  569. package/src/utils/object.js +5 -11
  570. package/src/utils/object.js.map +1 -1
  571. package/src/utils/paths.js +11 -15
  572. package/src/utils/paths.js.map +1 -1
  573. package/src/utils/pkg-manager.js +4 -9
  574. package/src/utils/pkg-manager.js.map +1 -1
  575. package/src/utils/pnpm-workspace.js +22 -22
  576. package/src/utils/pnpm-workspace.js.map +1 -1
  577. package/src/utils/port.js +26 -36
  578. package/src/utils/port.js.map +1 -1
  579. package/src/utils/py.js +43 -52
  580. package/src/utils/py.js.map +1 -1
  581. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
  582. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +3 -3
  583. package/src/utils/rdb-constructs/rdb-constructs.js +31 -33
  584. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  585. package/src/utils/shared-constructs-constants.js +16 -16
  586. package/src/utils/shared-constructs-constants.js.map +1 -1
  587. package/src/utils/shared-constructs.js +57 -54
  588. package/src/utils/shared-constructs.js.map +1 -1
  589. package/src/utils/shared-dynamodb-scripts.js +16 -14
  590. package/src/utils/shared-dynamodb-scripts.js.map +1 -1
  591. package/src/utils/shared-infra-config.js +30 -31
  592. package/src/utils/shared-infra-config.js.map +1 -1
  593. package/src/utils/shared-infra-scripts.js +30 -25
  594. package/src/utils/shared-infra-scripts.js.map +1 -1
  595. package/src/utils/shared-rdb-scripts.d.ts +8 -3
  596. package/src/utils/shared-rdb-scripts.js +21 -13
  597. package/src/utils/shared-rdb-scripts.js.map +1 -1
  598. package/src/utils/shared-scripts.js +12 -17
  599. package/src/utils/shared-scripts.js.map +1 -1
  600. package/src/utils/shared-shadcn.js +64 -60
  601. package/src/utils/shared-shadcn.js.map +1 -1
  602. package/src/utils/test.d.ts +8 -0
  603. package/src/utils/test.js +33 -25
  604. package/src/utils/test.js.map +1 -1
  605. package/src/utils/toml.js +7 -15
  606. package/src/utils/toml.js.map +1 -1
  607. package/src/utils/versions.d.ts +31 -4
  608. package/src/utils/versions.js +40 -23
  609. package/src/utils/versions.js.map +1 -1
  610. package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +1 -1
  611. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +4 -4
  612. package/src/utils/website-constructs/website-constructs.js +31 -30
  613. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  614. package/bin/aws-nx-mcp.js +0 -17
  615. package/bin/aws-nx-mcp.js.map +0 -1
  616. package/sdk/agentcore-gateway.d.ts +0 -6
  617. package/sdk/agentcore-gateway.js +0 -11
  618. package/sdk/agentcore-gateway.js.map +0 -1
  619. package/sdk/connection.d.ts +0 -6
  620. package/sdk/connection.js +0 -10
  621. package/sdk/connection.js.map +0 -1
  622. package/sdk/license.js +0 -14
  623. package/sdk/license.js.map +0 -1
  624. package/sdk/open-api.d.ts +0 -10
  625. package/sdk/open-api.js +0 -15
  626. package/sdk/open-api.js.map +0 -1
  627. package/sdk/py.d.ts +0 -14
  628. package/sdk/py.js +0 -18
  629. package/sdk/py.js.map +0 -1
  630. package/sdk/terraform.d.ts +0 -6
  631. package/sdk/terraform.js +0 -11
  632. package/sdk/terraform.js.map +0 -1
  633. package/sdk/ts.d.ts +0 -33
  634. package/sdk/ts.js +0 -53
  635. package/sdk/ts.js.map +0 -1
  636. package/sdk/utils/ast.js +0 -12
  637. package/sdk/utils/ast.js.map +0 -1
  638. package/sdk/utils/format.js +0 -10
  639. package/sdk/utils/format.js.map +0 -1
  640. package/sdk/utils/test.js +0 -10
  641. package/sdk/utils/test.js.map +0 -1
  642. package/src/connection/agent-serve-local.js +0 -48
  643. package/src/connection/agent-serve-local.js.map +0 -1
  644. package/src/connection/serve-local.js +0 -41
  645. package/src/connection/serve-local.js.map +0 -1
  646. package/src/py/agent/react-connection/serve-local.js +0 -38
  647. package/src/py/agent/react-connection/serve-local.js.map +0 -1
  648. package/src/ts/agent/react-connection/serve-local.js +0 -19
  649. package/src/ts/agent/react-connection/serve-local.js.map +0 -1
  650. package/src/utils/files/common/scripts/src/rdb/wait-for-db.ts.template +0 -59
  651. /package/src/agentcore-gateway/files/project/{serve-local.ts.template → local-dev.ts.template} +0 -0
  652. /package/{bin → src/bin}/aws-nx-mcp.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/agent/gateway-connection/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/agent/gateway-connection/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n type GeneratorCallback,\n generateFiles,\n installPackagesTask,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { readAgentCoreGatewayMetadata } from '../../../agentcore-gateway/generator';\nimport {\n addPythonCoreClient,\n addPythonReExport,\n ensurePythonAgentConnectionProject,\n getPythonAgentConnectionModuleName,\n getPythonAgentConnectionProject,\n getPythonAgentConnectionProjectDir,\n PY_MCP_FAMILY_CONNECTIONS,\n resolveAgentFramework,\n} from '../../../utils/agent-connection/agent-connection';\nimport { addPythonDestructuredImport } from '../../../utils/ast';\nimport { formatFilesInSubtree } from '../../../utils/format';\nimport { addGeneratorMetricsIfApplicable } from '../../../utils/metrics';\nimport { snakeCase } from '../../../utils/names';\nimport {\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../../utils/nx';\nimport {\n addDependenciesToPyProjectToml,\n addWorkspaceDependencyToPyProject,\n} from '../../../utils/py';\nimport type { PyAgentGatewayConnectionGeneratorSchema } from './schema';\n\nexport const PY_AGENT_GATEWAY_CONNECTION_GENERATOR_INFO: NxGeneratorInfo =\n getGeneratorInfo(import.meta.filename);\n\nexport const pyAgentGatewayConnectionGenerator = async (\n tree: Tree,\n options: PyAgentGatewayConnectionGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const sourceProject = readProjectConfigurationUnqualified(\n tree,\n options.sourceProject,\n );\n const targetProject = readProjectConfigurationUnqualified(\n tree,\n options.targetProject,\n );\n\n const agentComponent = options.sourceComponent;\n if (!agentComponent) {\n throw new Error(\n 'sourceComponent must be provided for py#agent -> agentcore-gateway connections',\n );\n }\n const gateway = readAgentCoreGatewayMetadata(targetProject);\n\n if (gateway.protocol !== 'mcp') {\n throw new Error(\n `Gateway '${gateway.name}' has protocol='${gateway.protocol}'. Only MCP-protocol gateways are supported.`,\n );\n }\n if (gateway.auth !== 'iam') {\n throw new Error(\n `Gateway '${gateway.name}' uses auth='${gateway.auth}'. Only IAM-authenticated gateways are supported in v1.`,\n );\n }\n if (agentComponent.auth && agentComponent.auth !== 'iam') {\n throw new Error(\n `Agent '${agentComponent.name}' uses auth='${agentComponent.auth}'. Only IAM-authenticated agents can connect to IAM gateways.`,\n );\n }\n\n const gatewayClassName = gateway.rc;\n const gatewaySnakeCase = snakeCase(gatewayClassName);\n // A gateway is its own standalone project, so it exposes plain serve / dev.\n const gatewayServeTargetName = 'serve';\n const gatewayDevTargetName = 'dev';\n\n // The source agent's framework selects the client shape, dependencies and the\n // agent.py transform — see PY_MCP_FAMILY_CONNECTIONS (keyed by framework, not a\n // boolean, so a third framework is an additive entry there). A Gateway exposes\n // its tools over MCP, so it reuses the same wiring as an MCP server connection.\n const framework = resolveAgentFramework(agentComponent.framework);\n const connection = PY_MCP_FAMILY_CONNECTIONS[framework];\n\n await ensurePythonAgentConnectionProject(tree);\n await addPythonCoreClient(tree, 'gateway', framework);\n\n const agentConnectionProjectDir = getPythonAgentConnectionProjectDir(tree);\n const agentConnectionModuleName = getPythonAgentConnectionModuleName(tree);\n\n // Shared MCP transport + signed httpx auth deps, plus whatever extra deps the\n // framework's MCP client needs (e.g. langchain-mcp-adapters for LangChain).\n addDependenciesToPyProjectToml(tree, agentConnectionProjectDir, [\n 'boto3',\n 'httpx',\n 'mcp',\n ...connection.deps,\n ]);\n\n const appDir = joinPathFragments(\n agentConnectionProjectDir,\n agentConnectionModuleName,\n 'app',\n );\n // Local mode points at the gateway project's local gateway port.\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n connection.appTemplateSubdir,\n ),\n appDir,\n {\n gatewaySnakeCase,\n gatewayClassName,\n agentConnectionModuleName,\n gatewayPort: gateway.port,\n },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n const appInitPath = joinPathFragments(appDir, '__init__.py');\n if (!tree.exists(appInitPath)) {\n tree.write(appInitPath, '');\n }\n\n const moduleInitPath = joinPathFragments(\n agentConnectionProjectDir,\n agentConnectionModuleName,\n '__init__.py',\n );\n await addPythonReExport(\n tree,\n moduleInitPath,\n `.app.${gatewaySnakeCase}_client_${connection.clientModuleSuffix}`,\n `${gatewayClassName}Client${connection.clientClassSuffix}`,\n );\n\n const agentSourceDir = joinPathFragments(\n sourceProject.root,\n agentComponent.path ?? 'src',\n );\n const agentFilePath = joinPathFragments(agentSourceDir, 'agent.py');\n\n if (tree.exists(agentFilePath)) {\n const clientClassName = `${gatewayClassName}Client${connection.clientClassSuffix}`;\n const clientVarName = gatewaySnakeCase;\n\n await addPythonDestructuredImport(\n tree,\n agentFilePath,\n [clientClassName],\n agentConnectionModuleName,\n );\n await connection.wireClientIntoAgent(\n tree,\n agentFilePath,\n clientClassName,\n clientVarName,\n );\n }\n\n addWorkspaceDependencyToPyProject(\n tree,\n sourceProject,\n getPythonAgentConnectionProject(tree),\n );\n\n const agentName = agentComponent.name ?? 'agent';\n const serveTargetName = `${agentName}-serve`;\n const devTargetName = `${agentName}-dev`;\n let projectConfigChanged = false;\n if (sourceProject.targets?.[serveTargetName]) {\n addDependencyToTargetIfNotPresent(sourceProject, serveTargetName, {\n projects: [targetProject.name],\n target: gatewayServeTargetName,\n });\n projectConfigChanged = true;\n }\n if (sourceProject.targets?.[devTargetName]) {\n addDependencyToTargetIfNotPresent(sourceProject, devTargetName, {\n projects: [targetProject.name],\n target: gatewayDevTargetName,\n });\n projectConfigChanged = true;\n }\n if (projectConfigChanged) {\n updateProjectConfiguration(tree, sourceProject.name, sourceProject);\n }\n\n await addGeneratorMetricsIfApplicable(tree, [\n PY_AGENT_GATEWAY_CONNECTION_GENERATOR_INFO,\n ]);\n\n await formatFilesInSubtree(tree);\n return () => {\n installPackagesTask(tree);\n };\n};\n\nexport default pyAgentGatewayConnectionGenerator;\n"],"names":["generateFiles","installPackagesTask","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","readAgentCoreGatewayMetadata","addPythonCoreClient","addPythonReExport","ensurePythonAgentConnectionProject","getPythonAgentConnectionModuleName","getPythonAgentConnectionProject","getPythonAgentConnectionProjectDir","PY_MCP_FAMILY_CONNECTIONS","resolveAgentFramework","addPythonDestructuredImport","formatFilesInSubtree","addGeneratorMetricsIfApplicable","snakeCase","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","addDependenciesToPyProjectToml","addWorkspaceDependencyToPyProject","PY_AGENT_GATEWAY_CONNECTION_GENERATOR_INFO","filename","pyAgentGatewayConnectionGenerator","tree","options","sourceProject","targetProject","agentComponent","sourceComponent","Error","gateway","protocol","name","auth","gatewayClassName","rc","gatewaySnakeCase","gatewayServeTargetName","gatewayDevTargetName","framework","connection","agentConnectionProjectDir","agentConnectionModuleName","deps","appDir","dirname","appTemplateSubdir","gatewayPort","port","overwriteStrategy","KeepExisting","appInitPath","exists","write","moduleInitPath","clientModuleSuffix","clientClassSuffix","agentSourceDir","root","path","agentFilePath","clientClassName","clientVarName","wireClientIntoAgent","agentName","serveTargetName","devTargetName","projectConfigChanged","targets","projects","target"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */ export { };
5
+
6
+ //# sourceMappingURL=schema.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../packages/nx-plugin/src/py/agent/gateway-connection/schema.d.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { ComponentMetadata } from '../../../utils/nx';\n\nexport interface PyAgentGatewayConnectionGeneratorSchema {\n sourceProject: string;\n targetProject: string;\n sourceComponent?: ComponentMetadata;\n targetComponent?: ComponentMetadata;\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WAKC"}
@@ -1,37 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pyAgentGenerator = exports.PY_AGENT_GENERATOR_INFO = void 0;
4
1
  /**
5
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
3
  * SPDX-License-Identifier: Apache-2.0
7
- */
8
- const devkit_1 = require("@nx/devkit");
9
- const config_1 = require("../../license/config");
10
- const known_exceptions_1 = require("../../license/known-exceptions");
11
- const agent_chat_1 = require("../../utils/agent-chat/agent-chat");
12
- const agent_connection_1 = require("../../utils/agent-connection/agent-connection");
13
- const agent_core_constructs_1 = require("../../utils/agent-core-constructs/agent-core-constructs");
14
- const bundle_1 = require("../../utils/bundle/bundle");
15
- const containers_1 = require("../../utils/containers");
16
- const format_1 = require("../../utils/format");
17
- const fs_1 = require("../../utils/fs");
18
- const git_1 = require("../../utils/git");
19
- const iac_1 = require("../../utils/iac");
20
- const metrics_1 = require("../../utils/metrics");
21
- const names_1 = require("../../utils/names");
22
- const npm_scope_1 = require("../../utils/npm-scope");
23
- const nx_1 = require("../../utils/nx");
24
- const nxlv_python_1 = require("../../utils/nxlv-python");
25
- const object_1 = require("../../utils/object");
26
- const paths_1 = require("../../utils/paths");
27
- const port_1 = require("../../utils/port");
28
- const py_1 = require("../../utils/py");
29
- const shared_constructs_1 = require("../../utils/shared-constructs");
30
- const versions_1 = require("../../utils/versions");
31
- exports.PY_AGENT_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
32
- const pyAgentGenerator = async (tree, options) => {
33
- const project = (0, nx_1.readProjectConfigurationUnqualified)(tree, options.project);
34
- const pyProjectPath = (0, devkit_1.joinPathFragments)(project.root, 'pyproject.toml');
4
+ */ import { addDependenciesToPackageJson, generateFiles, installPackagesTask, joinPathFragments, OverwriteStrategy, updateProjectConfiguration } from "@nx/devkit";
5
+ import { ensureLicenseExceptions } from "../../license/config.js";
6
+ import { AG_UI_LANGGRAPH_EXCEPTIONS } from "../../license/known-exceptions.js";
7
+ import { addAgentChatScripts } from "../../utils/agent-chat/agent-chat.js";
8
+ import { addPythonFrameworkBase, ensurePythonAgentConnectionProject, getPythonAgentConnectionModuleName, getPythonAgentConnectionProject } from "../../utils/agent-connection/agent-connection.js";
9
+ import { addAgentInfra } from "../../utils/agent-core-constructs/agent-core-constructs.js";
10
+ import { addPythonBundleTarget } from "../../utils/bundle/bundle.js";
11
+ import { resolveContainers } from "../../utils/containers.js";
12
+ import { formatFilesInSubtree } from "../../utils/format.js";
13
+ import { FsCommands } from "../../utils/fs.js";
14
+ import { updateGitIgnore } from "../../utils/git.js";
15
+ import { resolveIac } from "../../utils/iac.js";
16
+ import { addGeneratorMetricsIfApplicable } from "../../utils/metrics.js";
17
+ import { kebabCase, toClassName, toSnakeCase } from "../../utils/names.js";
18
+ import { getNpmScope } from "../../utils/npm-scope.js";
19
+ import { addComponentDevTarget, addComponentGeneratorMetadata, addDependencyToTargetIfNotPresent, getGeneratorInfo, normalizeTargetKeyOrder, readProjectConfigurationUnqualified } from "../../utils/nx.js";
20
+ import { Logger, UVProvider } from "../../utils/nxlv-python.js";
21
+ import { sortObjectKeys } from "../../utils/object.js";
22
+ import { toProjectRelativePath } from "../../utils/paths.js";
23
+ import { assignPort } from "../../utils/port.js";
24
+ import { addDependenciesToDependencyGroupInPyProjectToml, addDependenciesToPyProjectToml, addWorkspaceDependencyToPyProject } from "../../utils/py.js";
25
+ import { sharedConstructsGenerator } from "../../utils/shared-constructs.js";
26
+ import { withVersions } from "../../utils/versions.js";
27
+ export const PY_AGENT_GENERATOR_INFO = getGeneratorInfo(import.meta.filename);
28
+ export const pyAgentGenerator = async (tree, options)=>{
29
+ const project = readProjectConfigurationUnqualified(tree, options.project);
30
+ const pyProjectPath = joinPathFragments(project.root, 'pyproject.toml');
35
31
  // Check if the project has a pyproject.toml file
36
32
  if (!pyProjectPath) {
37
33
  throw new Error(`Unsupported project ${options.project}. Expected a Python project (with a pyproject.toml)`);
@@ -42,11 +38,11 @@ const pyAgentGenerator = async (tree, options) => {
42
38
  // Module name is the last part of the source root,
43
39
  const sourceParts = project.sourceRoot.split('/');
44
40
  const moduleName = sourceParts[sourceParts.length - 1];
45
- const name = (0, names_1.kebabCase)(options.name || `${(0, names_1.kebabCase)(project.name.split('.').pop())}-agent`);
41
+ const name = kebabCase(options.name || `${kebabCase(project.name.split('.').pop())}-agent`);
46
42
  const agentTargetPrefix = options.name ? name : 'agent';
47
- const agentNameSnakeCase = (0, names_1.toSnakeCase)(options.name || 'agent');
48
- const agentNameClassName = (0, names_1.toClassName)(name);
49
- const targetSourceDir = (0, devkit_1.joinPathFragments)(project.sourceRoot, agentNameSnakeCase);
43
+ const agentNameSnakeCase = toSnakeCase(options.name || 'agent');
44
+ const agentNameClassName = toClassName(name);
45
+ const targetSourceDir = joinPathFragments(project.sourceRoot, agentNameSnakeCase);
50
46
  const infra = options.infra ?? 'agentcore';
51
47
  const protocol = options.protocol ?? 'http';
52
48
  const framework = options.framework ?? 'strands';
@@ -58,31 +54,35 @@ const pyAgentGenerator = async (tree, options) => {
58
54
  // point can import `session_id_context` and propagate the AgentCore
59
55
  // session ID to any downstream MCP / A2A clients a later connection
60
56
  // generator wires into this agent.
61
- await (0, agent_connection_1.ensurePythonAgentConnectionProject)(tree);
57
+ await ensurePythonAgentConnectionProject(tree);
62
58
  // The agent server imports the framework base helpers (session cache + model
63
59
  // error logging) regardless of whether a connection client is wired in. The
64
60
  // langchain framework has no base layer (its AG-UI foundation reuses only the
65
61
  // framework-agnostic session context), so this is a no-op for langchain.
66
- await (0, agent_connection_1.addPythonFrameworkBase)(tree, framework);
67
- const agentConnectionModuleName = (0, agent_connection_1.getPythonAgentConnectionModuleName)(tree);
68
- (0, py_1.addWorkspaceDependencyToPyProject)(tree, project, (0, agent_connection_1.getPythonAgentConnectionProject)(tree));
62
+ await addPythonFrameworkBase(tree, framework);
63
+ const agentConnectionModuleName = getPythonAgentConnectionModuleName(tree);
64
+ addWorkspaceDependencyToPyProject(tree, project, getPythonAgentConnectionProject(tree));
69
65
  const templateContext = {
70
66
  name,
71
67
  agentNameSnakeCase,
72
68
  agentNameClassName,
73
69
  moduleName,
74
70
  agentConnectionModuleName,
75
- framework,
71
+ framework
76
72
  };
77
73
  // Generate common files shared by both protocols. The agent module (agent.py)
78
74
  // is framework-specific (Strands yields a contextmanaged Agent; LangChain
79
75
  // returns a compiled create_agent graph), so it comes from a per-framework
80
76
  // dir. The package __init__.py is framework-agnostic (it stays in `common`).
81
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', framework === 'langchain' ? 'common-langchain' : 'common'), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
77
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', framework === 'langchain' ? 'common-langchain' : 'common'), targetSourceDir, templateContext, {
78
+ overwriteStrategy: OverwriteStrategy.KeepExisting
79
+ });
82
80
  if (framework === 'langchain') {
83
81
  // common-langchain only carries agent.py; the empty package __init__.py is
84
82
  // framework-agnostic, so emit it from the shared `common` dir.
85
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'common'), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
83
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'common'), targetSourceDir, templateContext, {
84
+ overwriteStrategy: OverwriteStrategy.KeepExisting
85
+ });
86
86
  }
87
87
  // Generate protocol-specific files. Each protocol's server entry point is
88
88
  // framework-specific (Strands yields a contextmanaged Agent; LangChain drives
@@ -90,70 +90,76 @@ const pyAgentGenerator = async (tree, options) => {
90
90
  // `<protocol>-langchain` for LangChain, or `<protocol>` for Strands.
91
91
  const protocolLower = protocol.toLowerCase();
92
92
  const protocolTemplateDir = framework === 'langchain' ? `${protocolLower}-langchain` : protocolLower;
93
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', protocolTemplateDir), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
93
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', protocolTemplateDir), targetSourceDir, templateContext, {
94
+ overwriteStrategy: OverwriteStrategy.KeepExisting
95
+ });
94
96
  // The HTTP server's init.py (the FastAPI app + JsonStreamingResponse) is
95
97
  // framework-agnostic and the LangChain http main.py reuses it, so emit it
96
98
  // from the shared `http` dir. Emitted after the langchain main.py above so
97
99
  // KeepExisting preserves that main.py and only adds init.py (the shared dir's
98
100
  // own Strands main.py is skipped).
99
101
  if (protocolLower === 'http' && framework === 'langchain') {
100
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'http'), targetSourceDir, templateContext, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
102
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'http'), targetSourceDir, templateContext, {
103
+ overwriteStrategy: OverwriteStrategy.KeepExisting
104
+ });
101
105
  }
102
- (0, py_1.addDependenciesToPyProjectToml)(tree, project.root, [
106
+ addDependenciesToPyProjectToml(tree, project.root, [
103
107
  'aws-lambda-powertools',
104
108
  'aws-opentelemetry-distro',
105
109
  'bedrock-agentcore',
106
110
  'boto3',
107
111
  'fastapi',
108
112
  'mcp',
109
- ...(framework === 'langchain'
110
- ? // langchain pulls no Strands dependencies the langchain model binding
111
- // (langchain, langchain-aws, langgraph) plus the per-protocol server
112
- // adapter: ag-ui-langgraph for AG-UI, a2a-sdk for A2A, nothing extra for
113
- // HTTP (FastAPI is added above for every agent).
114
- [
115
- 'langchain',
116
- 'langchain-aws',
117
- 'langgraph',
118
- ...(protocol === 'ag-ui'
119
- ? ['ag-ui-protocol', 'ag-ui-langgraph']
120
- : protocol === 'a2a'
121
- ? ['a2a-sdk']
122
- : []),
123
- ]
124
- : protocol === 'a2a'
125
- ? ['strands-agents[a2a]', 'strands-agents-tools']
126
- : protocol === 'ag-ui'
127
- ? [
128
- 'strands-agents',
129
- 'strands-agents-tools',
130
- 'ag-ui-protocol',
131
- 'ag-ui-strands',
132
- ]
133
- : ['strands-agents', 'strands-agents-tools']),
134
- 'uvicorn',
113
+ ...framework === 'langchain' ? // (langchain, langchain-aws, langgraph) plus the per-protocol server
114
+ // adapter: ag-ui-langgraph for AG-UI, a2a-sdk for A2A, nothing extra for
115
+ // HTTP (FastAPI is added above for every agent).
116
+ [
117
+ 'langchain',
118
+ 'langchain-aws',
119
+ 'langgraph',
120
+ ...protocol === 'ag-ui' ? [
121
+ 'ag-ui-protocol',
122
+ 'ag-ui-langgraph'
123
+ ] : protocol === 'a2a' ? [
124
+ 'a2a-sdk'
125
+ ] : []
126
+ ] : protocol === 'a2a' ? [
127
+ 'strands-agents[a2a]',
128
+ 'strands-agents-tools'
129
+ ] : protocol === 'ag-ui' ? [
130
+ 'strands-agents',
131
+ 'strands-agents-tools',
132
+ 'ag-ui-protocol',
133
+ 'ag-ui-strands'
134
+ ] : [
135
+ 'strands-agents',
136
+ 'strands-agents-tools'
137
+ ],
138
+ 'uvicorn'
135
139
  ]);
136
- (0, py_1.addDependenciesToDependencyGroupInPyProjectToml)(tree, project.root, 'dev', [
137
- 'fastapi[standard]',
140
+ addDependenciesToDependencyGroupInPyProjectToml(tree, project.root, 'dev', [
141
+ 'fastapi[standard]'
138
142
  ]);
139
143
  if (infra === 'agentcore') {
140
- const containers = await (0, containers_1.resolveContainers)(tree, 'inherit');
141
- const dockerImageTag = `${(0, npm_scope_1.getNpmScope)(tree)}-${name}:latest`;
144
+ const containers = await resolveContainers(tree, 'inherit');
145
+ const dockerImageTag = `${getNpmScope(tree)}-${name}:latest`;
142
146
  // Add bundle target
143
- const { bundleTargetName, bundleOutputDir } = (0, bundle_1.addPythonBundleTarget)(project, {
144
- pythonPlatform: 'aarch64-manylinux_2_28',
147
+ const { bundleTargetName, bundleOutputDir } = addPythonBundleTarget(project, {
148
+ pythonPlatform: 'aarch64-manylinux_2_28'
145
149
  });
146
150
  // Add the Dockerfile
147
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'deploy'), targetSourceDir, {
151
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', 'deploy'), targetSourceDir, {
148
152
  agentNameSnakeCase,
149
153
  moduleName,
150
154
  bundleOutputDir,
151
- protocol,
152
- }, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
153
- const dockerOutputDir = (0, devkit_1.joinPathFragments)('dist', project.root, 'docker', name);
155
+ protocol
156
+ }, {
157
+ overwriteStrategy: OverwriteStrategy.KeepExisting
158
+ });
159
+ const dockerOutputDir = joinPathFragments('dist', project.root, 'docker', name);
154
160
  const dockerTargetName = `${agentTargetPrefix}-docker`;
155
161
  // Add a docker target that prepares the docker context and builds the image
156
- const fs = new fs_1.FsCommands(tree);
162
+ const fs = new FsCommands(tree);
157
163
  project.targets[dockerTargetName] = {
158
164
  cache: true,
159
165
  executor: 'nx:run-commands',
@@ -163,21 +169,25 @@ const pyAgentGenerator = async (tree, options) => {
163
169
  fs.mkdir(dockerOutputDir),
164
170
  fs.cp(bundleOutputDir, dockerOutputDir),
165
171
  fs.cp(`${targetSourceDir}/Dockerfile`, `${dockerOutputDir}/Dockerfile`),
166
- `${containers} build --platform linux/arm64 -t ${dockerImageTag} ${dockerOutputDir}`,
172
+ `${containers} build --platform linux/arm64 -t ${dockerImageTag} ${dockerOutputDir}`
167
173
  ],
168
- parallel: false,
174
+ parallel: false
169
175
  },
170
- dependsOn: [bundleTargetName],
176
+ dependsOn: [
177
+ bundleTargetName
178
+ ]
171
179
  };
172
- (0, nx_1.addDependencyToTargetIfNotPresent)(project, 'docker', dockerTargetName);
173
- (0, nx_1.addDependencyToTargetIfNotPresent)(project, 'build', 'docker');
180
+ addDependencyToTargetIfNotPresent(project, 'docker', dockerTargetName);
181
+ addDependencyToTargetIfNotPresent(project, 'build', 'docker');
174
182
  // Add shared constructs
175
- const iac = await (0, iac_1.resolveIac)(tree, options.iac);
176
- await (0, shared_constructs_1.sharedConstructsGenerator)(tree, { iac });
183
+ const iac = await resolveIac(tree, options.iac);
184
+ await sharedConstructsGenerator(tree, {
185
+ iac
186
+ });
177
187
  // Add the construct to deploy the agent.
178
188
  // AG-UI uses HTTP as the AgentCore protocol type (AG-UI is HTTP-based with SSE over POST).
179
189
  const infraProtocol = protocol === 'ag-ui' ? 'http' : protocol;
180
- await (0, agent_core_constructs_1.addAgentInfra)(tree, {
190
+ await addAgentInfra(tree, {
181
191
  agentNameKebabCase: name,
182
192
  agentNameClassName,
183
193
  dockerImageTag,
@@ -186,14 +196,17 @@ const pyAgentGenerator = async (tree, options) => {
186
196
  projectName: project.name,
187
197
  auth,
188
198
  serverProtocol: infraProtocol,
189
- containers,
199
+ containers
190
200
  });
191
201
  }
192
202
  // A2A servers use port 9000 as per the Strands A2A SDK default and AgentCore A2A contract.
193
203
  // HTTP and AG-UI agents use port 8081+ to avoid conflict with VS Code server on 8080.
194
204
  const localDevPortStart = protocol === 'a2a' ? 9000 : 8081;
195
- const localDevPort = (0, port_1.assignPort)(tree, project, localDevPortStart, {
196
- component: { info: exports.PY_AGENT_GENERATOR_INFO, name: agentTargetPrefix },
205
+ const localDevPort = assignPort(tree, project, localDevPortStart, {
206
+ component: {
207
+ info: PY_AGENT_GENERATOR_INFO,
208
+ name: agentTargetPrefix
209
+ }
197
210
  });
198
211
  // All protocols use fastapi dev for hot reload:
199
212
  // - HTTP: FastAPI app directly defined in init.py
@@ -206,146 +219,167 @@ const pyAgentGenerator = async (tree, options) => {
206
219
  // we can run `agent-chat-cli` directly as a binary.
207
220
  const openApiTargetName = `${agentTargetPrefix}-openapi`;
208
221
  const clientGenTargetName = `${agentTargetPrefix}-generate-client`;
209
- const scriptsDir = (0, devkit_1.joinPathFragments)(project.root, 'scripts', agentTargetPrefix);
222
+ const scriptsDir = joinPathFragments(project.root, 'scripts', agentTargetPrefix);
210
223
  if (protocol === 'http') {
211
224
  // Emit the OpenAPI spec generator script (shared with react-connection)
212
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'react-connection', 'files', 'agent'), project.root, {
225
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'react-connection', 'files', 'agent'), project.root, {
213
226
  moduleName,
214
- agentNameSnakeCase,
215
- }, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
227
+ agentNameSnakeCase
228
+ }, {
229
+ overwriteStrategy: OverwriteStrategy.KeepExisting
230
+ });
216
231
  // Ignore the generated client directory
217
- (0, git_1.updateGitIgnore)(tree, project.root, (patterns) => [
218
- ...patterns,
219
- `scripts/${agentTargetPrefix}/generated/`,
220
- ]);
232
+ updateGitIgnore(tree, project.root, (patterns)=>[
233
+ ...patterns,
234
+ `scripts/${agentTargetPrefix}/generated/`
235
+ ]);
221
236
  }
222
237
  // Every protocol gets a standalone `chat.ts`. It connects to the local
223
- // `serve-local` server by default, or to the deployed agent (with the
238
+ // `dev` server by default, or to the deployed agent (with the
224
239
  // appropriate auth) when `RUNTIME_CONFIG_APP_ID` is set.
225
- (0, agent_chat_1.addAgentChatScripts)(tree, {
240
+ addAgentChatScripts(tree, {
226
241
  scriptsDir,
227
242
  protocol,
228
243
  language: 'py',
229
244
  agentNameClassName,
230
- auth,
245
+ auth
231
246
  });
232
247
  // TypeScript deps for the chat CLI, which runs standalone via tsx for every
233
248
  // protocol and resolves the deployed agent from AppConfig. `agent-chat-cli`
234
249
  // transitively bundles the protocol clients (@a2a-js/sdk, @ag-ui/client).
235
- (0, devkit_1.addDependenciesToPackageJson)(tree, {}, (0, versions_1.withVersions)([
250
+ addDependenciesToPackageJson(tree, {}, withVersions([
236
251
  'agent-chat-cli',
237
252
  'tsx',
238
253
  '@types/node',
239
254
  '@aws-lambda-powertools/parameters',
240
255
  '@aws-sdk/client-appconfigdata',
241
- ...(auth === 'iam'
242
- ? ['aws4fetch', '@aws-sdk/credential-providers']
243
- : []),
244
- ...(protocol === 'a2a' ? ['@a2a-js/sdk'] : []),
256
+ ...auth === 'iam' ? [
257
+ 'aws4fetch',
258
+ '@aws-sdk/credential-providers'
259
+ ] : [],
260
+ ...protocol === 'a2a' ? [
261
+ '@a2a-js/sdk'
262
+ ] : []
245
263
  ]));
246
- const chatUrl = protocol === 'ag-ui'
247
- ? `http://localhost:${localDevPort}/invocations`
248
- : `http://localhost:${localDevPort}`;
264
+ const chatUrl = protocol === 'ag-ui' ? `http://localhost:${localDevPort}/invocations` : `http://localhost:${localDevPort}`;
249
265
  const chatCommand = `tsx ./scripts/${agentTargetPrefix}/chat.ts`;
250
- const httpOnlyTargets = protocol === 'http'
251
- ? {
252
- [openApiTargetName]: {
253
- cache: true,
254
- executor: 'nx:run-commands',
255
- outputs: [
256
- `{workspaceRoot}/dist/{projectRoot}/openapi/${agentNameSnakeCase}`,
266
+ const httpOnlyTargets = protocol === 'http' ? {
267
+ [openApiTargetName]: {
268
+ cache: true,
269
+ executor: 'nx:run-commands',
270
+ outputs: [
271
+ `{workspaceRoot}/dist/{projectRoot}/openapi/${agentNameSnakeCase}`
272
+ ],
273
+ options: {
274
+ commands: [
275
+ `uv run python {projectRoot}/scripts/${agentNameSnakeCase}_openapi.py "dist/{projectRoot}/openapi/${agentNameSnakeCase}/openapi.json"`
276
+ ]
277
+ }
278
+ },
279
+ [clientGenTargetName]: {
280
+ cache: true,
281
+ executor: 'nx:run-commands',
282
+ dependsOn: [
283
+ openApiTargetName
284
+ ],
285
+ inputs: [
286
+ {
287
+ dependentTasksOutputFiles: '**/*.json'
288
+ }
289
+ ],
290
+ outputs: [
291
+ `{projectRoot}/scripts/${agentTargetPrefix}/generated`
292
+ ],
293
+ options: {
294
+ commands: [
295
+ `nx g @aws/nx-plugin:open-api#ts-client --openApiSpecPath="dist/${project.root}/openapi/${agentNameSnakeCase}/openapi.json" --outputPath="${project.root}/scripts/${agentTargetPrefix}/generated" --no-interactive`
296
+ ]
297
+ }
298
+ }
299
+ } : {};
300
+ const agentTargets = {
301
+ ...project.targets,
302
+ ...httpOnlyTargets,
303
+ [`${agentTargetPrefix}-serve`]: {
304
+ executor: 'nx:run-commands',
305
+ continuous: true,
306
+ options: {
307
+ commands: [
308
+ serveCommand
257
309
  ],
258
- options: {
259
- commands: [
260
- `uv run python {projectRoot}/scripts/${agentNameSnakeCase}_openapi.py "dist/{projectRoot}/openapi/${agentNameSnakeCase}/openapi.json"`,
261
- ],
262
- },
263
- },
264
- [clientGenTargetName]: {
265
- cache: true,
266
- executor: 'nx:run-commands',
267
- inputs: [
268
- {
269
- dependentTasksOutputFiles: '**/*.json',
270
- },
310
+ cwd: '{projectRoot}',
311
+ env: {
312
+ PORT: `${localDevPort}`
313
+ }
314
+ }
315
+ },
316
+ [`${agentTargetPrefix}-dev`]: {
317
+ executor: 'nx:run-commands',
318
+ continuous: true,
319
+ options: {
320
+ commands: [
321
+ serveCommand
322
+ ],
323
+ cwd: '{projectRoot}',
324
+ env: {
325
+ PORT: `${localDevPort}`,
326
+ LOCAL_DEV: 'true'
327
+ }
328
+ }
329
+ },
330
+ // HTTP chat imports the generated client, so ensure it's built first.
331
+ // No dev dependency — chat runs standalone against a local or
332
+ // deployed agent. normalizeTargetKeyOrder keeps the conditional dependsOn
333
+ // in Nx 23's serialization order so re-runs stay byte-identical.
334
+ [`${agentTargetPrefix}-chat`]: normalizeTargetKeyOrder({
335
+ executor: 'nx:run-commands',
336
+ options: {
337
+ commands: [
338
+ chatCommand
271
339
  ],
272
- outputs: [`{projectRoot}/scripts/${agentTargetPrefix}/generated`],
273
- options: {
274
- commands: [
275
- `nx g @aws/nx-plugin:open-api#ts-client --openApiSpecPath="dist/${project.root}/openapi/${agentNameSnakeCase}/openapi.json" --outputPath="${project.root}/scripts/${agentTargetPrefix}/generated" --no-interactive`,
276
- ],
277
- },
278
- dependsOn: [openApiTargetName],
340
+ cwd: '{projectRoot}',
341
+ env: {
342
+ URL: chatUrl
343
+ }
279
344
  },
280
- }
281
- : {};
282
- (0, devkit_1.updateProjectConfiguration)(tree, project.name, {
345
+ ...protocol === 'http' ? {
346
+ dependsOn: [
347
+ clientGenTargetName
348
+ ]
349
+ } : {}
350
+ })
351
+ };
352
+ // Aggregate `<agent>-dev` under the project-level `dev` target.
353
+ addComponentDevTarget(agentTargets, `${agentTargetPrefix}-dev`);
354
+ updateProjectConfiguration(tree, project.name, {
283
355
  ...project,
284
- targets: (0, object_1.sortObjectKeys)({
285
- ...project.targets,
286
- ...httpOnlyTargets,
287
- [`${agentTargetPrefix}-serve`]: {
288
- executor: 'nx:run-commands',
289
- options: {
290
- commands: [serveCommand],
291
- cwd: '{projectRoot}',
292
- env: {
293
- PORT: `${localDevPort}`,
294
- },
295
- },
296
- continuous: true,
297
- },
298
- [`${agentTargetPrefix}-serve-local`]: {
299
- executor: 'nx:run-commands',
300
- options: {
301
- commands: [serveCommand],
302
- cwd: '{projectRoot}',
303
- env: {
304
- PORT: `${localDevPort}`,
305
- SERVE_LOCAL: 'true',
306
- },
307
- },
308
- continuous: true,
309
- },
310
- [`${agentTargetPrefix}-chat`]: {
311
- executor: 'nx:run-commands',
312
- options: {
313
- commands: [chatCommand],
314
- cwd: '{projectRoot}',
315
- env: {
316
- URL: chatUrl,
317
- },
318
- },
319
- // HTTP chat imports the generated client, so ensure it's built first.
320
- // No serve-local dependency — chat runs standalone against a local or
321
- // deployed agent.
322
- ...(protocol === 'http' ? { dependsOn: [clientGenTargetName] } : {}),
323
- },
324
- }),
356
+ targets: sortObjectKeys(agentTargets)
325
357
  });
326
- (0, nx_1.addComponentGeneratorMetadata)(tree, project.name, exports.PY_AGENT_GENERATOR_INFO, (0, paths_1.toProjectRelativePath)(project, targetSourceDir), agentTargetPrefix, {
358
+ addComponentGeneratorMetadata(tree, project.name, PY_AGENT_GENERATOR_INFO, toProjectRelativePath(project, targetSourceDir), agentTargetPrefix, {
327
359
  port: localDevPort,
328
360
  rc: agentNameClassName,
329
361
  auth,
330
362
  protocol,
331
363
  // The mcp / gateway connection generators dispatch on this field to pick
332
364
  // the Strands vs LangChain Layer-2 client + agent.py transform.
333
- framework,
365
+ framework
334
366
  });
335
- await (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [exports.PY_AGENT_GENERATOR_INFO]);
367
+ await addGeneratorMetricsIfApplicable(tree, [
368
+ PY_AGENT_GENERATOR_INFO
369
+ ]);
336
370
  // langchain-core (pulled by every langchain agent regardless of protocol)
337
371
  // brings jsonpatch/jsonpointer, whose wheels ship without resolvable SPDX
338
372
  // license metadata, so register those exceptions so the workspace license
339
373
  // check still passes.
340
374
  if (framework === 'langchain') {
341
- await (0, config_1.ensureLicenseExceptions)(tree, known_exceptions_1.AG_UI_LANGGRAPH_EXCEPTIONS);
375
+ await ensureLicenseExceptions(tree, AG_UI_LANGGRAPH_EXCEPTIONS);
342
376
  }
343
- await (0, format_1.formatFilesInSubtree)(tree);
344
- return async () => {
345
- (0, devkit_1.installPackagesTask)(tree);
346
- await new nxlv_python_1.UVProvider(tree.root, new nxlv_python_1.Logger(), tree).install();
377
+ await formatFilesInSubtree(tree);
378
+ return async ()=>{
379
+ installPackagesTask(tree);
380
+ await new UVProvider(tree.root, new Logger(), tree).install();
347
381
  };
348
382
  };
349
- exports.pyAgentGenerator = pyAgentGenerator;
350
- exports.default = exports.pyAgentGenerator;
383
+ export default pyAgentGenerator;
384
+
351
385
  //# sourceMappingURL=generator.js.map