@aws/nx-plugin 1.0.0-rc.96 → 1.0.0-rc.98

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 (313) hide show
  1. package/LICENSE-THIRD-PARTY +9 -9
  2. package/migrations.json +124 -84
  3. package/package.json +3 -3
  4. package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +2 -2
  5. package/src/agentcore-gateway/generator.js +6 -0
  6. package/src/agentcore-gateway/generator.js.map +1 -1
  7. package/src/agentcore-gateway/react-connection/__snapshots__/generator.spec.ts.snap +4 -1
  8. package/src/agentcore-harness/__snapshots__/generator.spec.ts.snap +68 -4
  9. package/src/agentcore-harness/generator.js +6 -0
  10. package/src/agentcore-harness/generator.js.map +1 -1
  11. package/src/connection/gateway-runtime-config.js +1 -1
  12. package/src/connection/gateway-runtime-config.js.map +1 -1
  13. package/src/infra/app/__snapshots__/generator.spec.ts.snap +10 -10
  14. package/src/infra/app/generator.js +39 -9
  15. package/src/infra/app/generator.js.map +1 -1
  16. package/src/init/generator.d.ts +1 -1
  17. package/src/init/generator.js +8 -6
  18. package/src/init/generator.js.map +1 -1
  19. package/src/init/schema.d.js.map +1 -1
  20. package/src/init/schema.d.ts +1 -0
  21. package/src/init/schema.json +5 -0
  22. package/src/internal/test-matrix/generator.js +2 -2
  23. package/src/internal/test-matrix/generator.js.map +1 -1
  24. package/src/license/sync/generator.d.ts +10 -0
  25. package/src/license/sync/generator.js +1 -1
  26. package/src/license/sync/generator.js.map +1 -1
  27. package/src/mcp-server/server.js +2 -0
  28. package/src/mcp-server/server.js.map +1 -1
  29. package/src/mcp-server/tools/best-practices.d.ts +28 -0
  30. package/src/mcp-server/tools/best-practices.js +43 -0
  31. package/src/mcp-server/tools/best-practices.js.map +1 -0
  32. package/src/mcp-server/tools/general-guidance.d.ts +1 -1
  33. package/src/mcp-server/tools/general-guidance.js +13 -4
  34. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  35. package/src/migrations/latest/sandbox-pattern-nested-stacks/metadata.json +3 -0
  36. package/src/migrations/latest/sandbox-pattern-nested-stacks/migration.js +68 -0
  37. package/src/migrations/latest/sandbox-pattern-nested-stacks/migration.js.map +1 -0
  38. package/src/migrations/latest/shadcn-cn-package/metadata.json +3 -0
  39. package/src/migrations/latest/shadcn-cn-package/migration.js +114 -0
  40. package/src/migrations/latest/shadcn-cn-package/migration.js.map +1 -0
  41. package/src/migrations/v1.0.0-rc.90/0001-dev-target-depends-on-pull-image/migration.js.map +1 -0
  42. package/src/migrations/v1.0.0-rc.90/0002-open-api-codegen-executor/migration.js.map +1 -0
  43. package/src/migrations/v1.0.0-rc.90/0003-terraform-provider-plugin-cache/migration.js.map +1 -0
  44. package/src/migrations/v1.0.0-rc.90/0004-python-test-input-scoping/migration.js.map +1 -0
  45. package/src/migrations/v1.0.0-rc.90/0005-vitest-coverage-output-dir/migration.js.map +1 -0
  46. package/src/migrations/v1.0.0-rc.90/0006-add-assemble-target/migration.js.map +1 -0
  47. package/src/migrations/v1.0.0-rc.90/0007-docker-target-cache-soundness/migration.js.map +1 -0
  48. package/src/migrations/v1.0.0-rc.90/0008-declare-cacheable-target-inputs/migration.js.map +1 -0
  49. package/src/migrations/v1.0.0-rc.90/0009-terraform-fmt-check/migration.js.map +1 -0
  50. package/src/migrations/v1.0.0-rc.92/0001-react-website-unique-dev-ports/migration.js.map +1 -0
  51. package/src/migrations/v1.0.0-rc.94/0001-infra-deploy-express-mode/metadata.json +3 -0
  52. package/src/migrations/{latest/infra-deploy-express-mode → v1.0.0-rc.94/0001-infra-deploy-express-mode}/migration.js +26 -28
  53. package/src/migrations/v1.0.0-rc.94/0001-infra-deploy-express-mode/migration.js.map +1 -0
  54. package/src/migrations/v1.0.0-rc.94/0002-shx-fs-commands/migration.js.map +1 -0
  55. package/src/migrations/v1.0.0-rc.94/0003-agent-core-vendor-target/migration.js.map +1 -0
  56. package/src/migrations/v1.0.0-rc.95/0001-rolldown-config-bundle-transient/migration.d.ts +6 -0
  57. package/src/migrations/v1.0.0-rc.95/0001-rolldown-config-bundle-transient/migration.js.map +1 -0
  58. package/src/migrations/v1.0.0-rc.95/0002-agent-connection-pin-strands-peers/migration.js.map +1 -0
  59. package/src/migrations/v1.0.0-rc.95/0003-ignore-package-manager-temp-files/migration.js.map +1 -0
  60. package/src/migrations/v1.0.0-rc.95/0004-shadcn-package-imports-exports/migration.d.ts +6 -0
  61. package/src/migrations/v1.0.0-rc.95/0004-shadcn-package-imports-exports/migration.js.map +1 -0
  62. package/src/migrations/v1.0.0-rc.97/0001-gateway-url-accessor/__snapshots__/migration.spec.ts.snap +84 -0
  63. package/src/migrations/v1.0.0-rc.97/0001-gateway-url-accessor/metadata.json +3 -0
  64. package/src/migrations/v1.0.0-rc.97/0001-gateway-url-accessor/migration.d.ts +6 -0
  65. package/src/migrations/v1.0.0-rc.97/0001-gateway-url-accessor/migration.js +94 -0
  66. package/src/migrations/v1.0.0-rc.97/0001-gateway-url-accessor/migration.js.map +1 -0
  67. package/src/migrations/v1.0.0-rc.97/0002-checkov-scan-cache-inputs/metadata.json +3 -0
  68. package/src/migrations/v1.0.0-rc.97/0002-checkov-scan-cache-inputs/migration.d.ts +6 -0
  69. package/src/migrations/v1.0.0-rc.97/0002-checkov-scan-cache-inputs/migration.js +58 -0
  70. package/src/migrations/v1.0.0-rc.97/0002-checkov-scan-cache-inputs/migration.js.map +1 -0
  71. package/src/migrations/v1.0.0-rc.97/0003-terraform-validate-without-backend/metadata.json +3 -0
  72. package/src/migrations/v1.0.0-rc.97/0003-terraform-validate-without-backend/migration.d.ts +6 -0
  73. package/src/migrations/v1.0.0-rc.97/0003-terraform-validate-without-backend/migration.js +84 -0
  74. package/src/migrations/v1.0.0-rc.97/0003-terraform-validate-without-backend/migration.js.map +1 -0
  75. package/src/migrations/v1.0.0-rc.97/0004-py-lambda-powertools-context/metadata.json +3 -0
  76. package/src/migrations/v1.0.0-rc.97/0004-py-lambda-powertools-context/migration.d.ts +6 -0
  77. package/src/migrations/v1.0.0-rc.97/0004-py-lambda-powertools-context/migration.js +58 -0
  78. package/src/migrations/v1.0.0-rc.97/0004-py-lambda-powertools-context/migration.js.map +1 -0
  79. package/src/migrations/v1.0.0-rc.97/0005-smithy-extension-trait-aliases/__snapshots__/migration.spec.ts.snap +25 -0
  80. package/src/migrations/v1.0.0-rc.97/0005-smithy-extension-trait-aliases/metadata.json +3 -0
  81. package/src/migrations/v1.0.0-rc.97/0005-smithy-extension-trait-aliases/migration.d.ts +28 -0
  82. package/src/migrations/v1.0.0-rc.97/0005-smithy-extension-trait-aliases/migration.js +75 -0
  83. package/src/migrations/v1.0.0-rc.97/0005-smithy-extension-trait-aliases/migration.js.map +1 -0
  84. package/src/migrations/v1.0.0-rc.97/0006-script-project-quality-gates/metadata.json +3 -0
  85. package/src/migrations/v1.0.0-rc.97/0006-script-project-quality-gates/migration.d.ts +6 -0
  86. package/src/migrations/v1.0.0-rc.97/0006-script-project-quality-gates/migration.js +53 -0
  87. package/src/migrations/v1.0.0-rc.97/0006-script-project-quality-gates/migration.js.map +1 -0
  88. package/src/preset/__snapshots__/generator.spec.ts.snap +2 -2
  89. package/src/preset/generator.js +4 -25
  90. package/src/preset/generator.js.map +1 -1
  91. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +2 -2
  92. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +4 -4
  93. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +4 -4
  94. package/src/py/agent/a2a-connection/generator.d.ts +1 -1
  95. package/src/py/agent/gateway-connection/generator.d.ts +1 -1
  96. package/src/py/agent/mcp-connection/generator.d.ts +1 -1
  97. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +4 -1
  98. package/src/py/agent/react-connection/generator.d.ts +1 -7
  99. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +10 -12
  100. package/src/py/dynamodb/generator.js +34 -7
  101. package/src/py/dynamodb/generator.js.map +1 -1
  102. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +12 -12
  103. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -3
  104. package/src/py/lambda-function/files/handler/__lambdaFunctionSnakeCase__.py.template +2 -1
  105. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +3 -3
  106. package/src/py/project/schema.json +3 -1
  107. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +31 -15
  108. package/src/py/rdb/files/Dockerfile.create-db-user.template +7 -3
  109. package/src/py/rdb/files/Dockerfile.migration.template +7 -3
  110. package/src/py/rdb/generator.js +29 -28
  111. package/src/py/rdb/generator.js.map +1 -1
  112. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +5 -5
  113. package/src/smithy/react-connection/files/model/extensions.smithy.template +3 -3
  114. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +8 -8
  115. package/src/smithy/ts/api/generator.js +7 -2
  116. package/src/smithy/ts/api/generator.js.map +1 -1
  117. package/src/terraform/project/generator.js +34 -10
  118. package/src/terraform/project/generator.js.map +1 -1
  119. package/src/terraform/project/schema.d.js +0 -3
  120. package/src/terraform/project/schema.d.js.map +1 -1
  121. package/src/terraform/project/schema.d.ts +0 -4
  122. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +12 -12
  123. package/src/trpc/backend/generator.js +7 -1
  124. package/src/trpc/backend/generator.js.map +1 -1
  125. package/src/trpc/react/generator.js +6 -0
  126. package/src/trpc/react/generator.js.map +1 -1
  127. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +4 -4
  128. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +2 -2
  129. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +2 -2
  130. package/src/ts/agent/generator.js +3 -3
  131. package/src/ts/agent/generator.js.map +1 -1
  132. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +2 -2
  133. package/src/ts/agent/react-connection/generator.d.ts +1 -9
  134. package/src/ts/astro-docs/files/translation/scripts/translate.ts.template +47 -2
  135. package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +1 -1
  136. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +6 -4
  137. package/src/ts/dynamodb/generator.js +30 -6
  138. package/src/ts/dynamodb/generator.js.map +1 -1
  139. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +2 -2
  140. package/src/ts/lib/biome.d.ts +15 -1
  141. package/src/ts/lib/biome.js +79 -63
  142. package/src/ts/lib/biome.js.map +1 -1
  143. package/src/ts/lib/generator.js +11 -7
  144. package/src/ts/lib/generator.js.map +1 -1
  145. package/src/ts/lib/ts-project-utils.d.ts +14 -0
  146. package/src/ts/lib/ts-project-utils.js +24 -0
  147. package/src/ts/lib/ts-project-utils.js.map +1 -1
  148. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +3 -3
  149. package/src/ts/mcp-server/files/app/http.ts.template +1 -1
  150. package/src/ts/mcp-server/generator.js +3 -3
  151. package/src/ts/mcp-server/generator.js.map +1 -1
  152. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +2 -2
  153. package/src/ts/nx-generator/files/local/generator.spec.ts.template +2 -2
  154. package/src/ts/nx-migration/generator.js +3 -1
  155. package/src/ts/nx-migration/generator.js.map +1 -1
  156. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +1 -25
  157. package/src/ts/nx-plugin/generator.js +19 -17
  158. package/src/ts/nx-plugin/generator.js.map +1 -1
  159. package/src/ts/nx-plugin/utils.d.ts +21 -0
  160. package/src/ts/nx-plugin/utils.js +41 -1
  161. package/src/ts/nx-plugin/utils.js.map +1 -1
  162. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +13 -8
  163. package/src/ts/rdb/files/Dockerfile.template +5 -0
  164. package/src/ts/rdb/generator.d.ts +8 -0
  165. package/src/ts/rdb/generator.js +28 -24
  166. package/src/ts/rdb/generator.js.map +1 -1
  167. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +39 -0
  168. package/src/ts/rdb/trpc-connection/generator.js +13 -0
  169. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  170. package/src/ts/react-website/agui/files/common/src/components/__agentNameKebabCase__-chat.tsx.template +9 -0
  171. package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +4 -1
  172. package/src/ts/react-website/agui/generator.d.ts +1 -5
  173. package/src/ts/react-website/agui/generator.js +6 -2
  174. package/src/ts/react-website/agui/generator.js.map +1 -1
  175. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +26 -26
  176. package/src/ts/react-website/app/generator.d.ts +1 -5
  177. package/src/ts/react-website/app/generator.js +3 -8
  178. package/src/ts/react-website/app/generator.js.map +1 -1
  179. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +2 -2
  180. package/src/utils/agent-connection/agent-connection.d.ts +2 -1
  181. package/src/utils/agent-connection/agent-connection.js +6 -1
  182. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  183. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +11 -7
  184. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +14 -6
  185. package/src/utils/agent-core-packaging.js +5 -5
  186. package/src/utils/agent-core-packaging.js.map +1 -1
  187. package/src/utils/api-constructs/api-constructs.d.ts +5 -0
  188. package/src/utils/api-constructs/api-constructs.js +8 -0
  189. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  190. package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +4 -2
  191. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +4 -2
  192. package/src/utils/ast.d.ts +10 -0
  193. package/src/utils/ast.js +87 -15
  194. package/src/utils/ast.js.map +1 -1
  195. package/src/utils/dependencies.d.ts +10 -0
  196. package/src/utils/dependencies.js +93 -1
  197. package/src/utils/dependencies.js.map +1 -1
  198. package/src/utils/docker.d.ts +11 -0
  199. package/src/utils/docker.js +16 -3
  200. package/src/utils/docker.js.map +1 -1
  201. package/src/utils/dynamodb-config.d.ts +48 -0
  202. package/src/utils/dynamodb-config.js +44 -0
  203. package/src/utils/dynamodb-config.js.map +1 -0
  204. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +8 -4
  205. package/src/utils/files/common/shadcn/src/components/ui/alert.tsx.template +1 -2
  206. package/src/utils/files/common/shadcn/src/components/ui/avatar.tsx.template +1 -2
  207. package/src/utils/files/common/shadcn/src/components/ui/breadcrumb.tsx.template +1 -2
  208. package/src/utils/files/common/shadcn/src/components/ui/button.tsx.template +1 -2
  209. package/src/utils/files/common/shadcn/src/components/ui/card.tsx.template +1 -2
  210. package/src/utils/files/common/shadcn/src/components/ui/input.tsx.template +1 -2
  211. package/src/utils/files/common/shadcn/src/components/ui/separator.tsx.template +1 -2
  212. package/src/utils/files/common/shadcn/src/components/ui/sheet.tsx.template +1 -2
  213. package/src/utils/files/common/shadcn/src/components/ui/sidebar.tsx.template +1 -1
  214. package/src/utils/files/common/shadcn/src/components/ui/skeleton.tsx.template +1 -1
  215. package/src/utils/files/common/shadcn/src/components/ui/spinner.tsx.template +1 -2
  216. package/src/utils/files/common/shadcn/src/components/ui/textarea.tsx.template +1 -2
  217. package/src/utils/files/common/shadcn/src/components/ui/tooltip.tsx.template +1 -2
  218. package/src/utils/files/common/shadcn/src/lib/utils.ts.template +1 -6
  219. package/src/utils/git-secrets.d.ts +28 -0
  220. package/src/utils/git-secrets.js +66 -0
  221. package/src/utils/git-secrets.js.map +1 -0
  222. package/src/utils/init.js +7 -6
  223. package/src/utils/init.js.map +1 -1
  224. package/src/utils/local-project-dependency.d.ts +28 -0
  225. package/src/utils/local-project-dependency.js +40 -0
  226. package/src/utils/local-project-dependency.js.map +1 -0
  227. package/src/utils/nx.d.ts +14 -0
  228. package/src/utils/nx.js +30 -0
  229. package/src/utils/nx.js.map +1 -1
  230. package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +11 -6
  231. package/src/utils/script-project-targets.d.ts +26 -0
  232. package/src/utils/script-project-targets.js +75 -0
  233. package/src/utils/script-project-targets.js.map +1 -0
  234. package/src/utils/shared-shadcn.d.ts +1 -3
  235. package/src/utils/shared-shadcn.js +1 -4
  236. package/src/utils/shared-shadcn.js.map +1 -1
  237. package/src/utils/versions.d.ts +52 -50
  238. package/src/utils/versions.js +55 -49
  239. package/src/utils/versions.js.map +1 -1
  240. package/src/utils/website-constructs/files/cdk/app/static-websites/__websiteNameKebabCase__.ts.template +8 -4
  241. package/src/migrations/latest/add-assemble-target/migration.js.map +0 -1
  242. package/src/migrations/latest/agent-connection-pin-strands-peers/migration.js.map +0 -1
  243. package/src/migrations/latest/agent-core-vendor-target/migration.js.map +0 -1
  244. package/src/migrations/latest/declare-cacheable-target-inputs/migration.js.map +0 -1
  245. package/src/migrations/latest/dev-target-depends-on-pull-image/migration.js.map +0 -1
  246. package/src/migrations/latest/docker-target-cache-soundness/migration.js.map +0 -1
  247. package/src/migrations/latest/ignore-package-manager-temp-files/migration.js.map +0 -1
  248. package/src/migrations/latest/infra-deploy-express-mode/metadata.json +0 -3
  249. package/src/migrations/latest/infra-deploy-express-mode/migration.js.map +0 -1
  250. package/src/migrations/latest/open-api-codegen-executor/migration.js.map +0 -1
  251. package/src/migrations/latest/python-test-input-scoping/migration.js.map +0 -1
  252. package/src/migrations/latest/react-website-unique-dev-ports/migration.js.map +0 -1
  253. package/src/migrations/latest/rolldown-config-bundle-transient/migration.js.map +0 -1
  254. package/src/migrations/latest/shadcn-package-imports-exports/migration.js.map +0 -1
  255. package/src/migrations/latest/shx-fs-commands/migration.js.map +0 -1
  256. package/src/migrations/latest/terraform-fmt-check/migration.js.map +0 -1
  257. package/src/migrations/latest/terraform-provider-plugin-cache/migration.js.map +0 -1
  258. package/src/migrations/latest/vitest-coverage-output-dir/migration.js.map +0 -1
  259. package/src/py/dynamodb/files/__name__/__init__.py.template +0 -6
  260. package/src/py/dynamodb/files/__name__/entities/__init__.py.template +0 -4
  261. package/src/py/dynamodb/files/config.json.template +0 -24
  262. package/src/ts/dynamodb/files/config.json.template +0 -24
  263. package/src/ts/dynamodb/files/src/entities/index.ts.template +0 -1
  264. package/src/ts/dynamodb/files/src/index.ts.template +0 -2
  265. /package/src/migrations/latest/{add-assemble-target → sandbox-pattern-nested-stacks}/migration.d.ts +0 -0
  266. /package/src/migrations/latest/{agent-core-vendor-target → shadcn-cn-package}/migration.d.ts +0 -0
  267. /package/src/migrations/{latest/dev-target-depends-on-pull-image → v1.0.0-rc.90/0001-dev-target-depends-on-pull-image}/metadata.json +0 -0
  268. /package/src/migrations/{latest/declare-cacheable-target-inputs → v1.0.0-rc.90/0001-dev-target-depends-on-pull-image}/migration.d.ts +0 -0
  269. /package/src/migrations/{latest/dev-target-depends-on-pull-image → v1.0.0-rc.90/0001-dev-target-depends-on-pull-image}/migration.js +0 -0
  270. /package/src/migrations/{latest/open-api-codegen-executor → v1.0.0-rc.90/0002-open-api-codegen-executor}/metadata.json +0 -0
  271. /package/src/migrations/{latest/dev-target-depends-on-pull-image → v1.0.0-rc.90/0002-open-api-codegen-executor}/migration.d.ts +0 -0
  272. /package/src/migrations/{latest/open-api-codegen-executor → v1.0.0-rc.90/0002-open-api-codegen-executor}/migration.js +0 -0
  273. /package/src/migrations/{latest/terraform-provider-plugin-cache → v1.0.0-rc.90/0003-terraform-provider-plugin-cache}/metadata.json +0 -0
  274. /package/src/migrations/{latest/docker-target-cache-soundness → v1.0.0-rc.90/0003-terraform-provider-plugin-cache}/migration.d.ts +0 -0
  275. /package/src/migrations/{latest/terraform-provider-plugin-cache → v1.0.0-rc.90/0003-terraform-provider-plugin-cache}/migration.js +0 -0
  276. /package/src/migrations/{latest/python-test-input-scoping → v1.0.0-rc.90/0004-python-test-input-scoping}/metadata.json +0 -0
  277. /package/src/migrations/{latest/infra-deploy-express-mode → v1.0.0-rc.90/0004-python-test-input-scoping}/migration.d.ts +0 -0
  278. /package/src/migrations/{latest/python-test-input-scoping → v1.0.0-rc.90/0004-python-test-input-scoping}/migration.js +0 -0
  279. /package/src/migrations/{latest/vitest-coverage-output-dir → v1.0.0-rc.90/0005-vitest-coverage-output-dir}/metadata.json +0 -0
  280. /package/src/migrations/{latest/open-api-codegen-executor → v1.0.0-rc.90/0005-vitest-coverage-output-dir}/migration.d.ts +0 -0
  281. /package/src/migrations/{latest/vitest-coverage-output-dir → v1.0.0-rc.90/0005-vitest-coverage-output-dir}/migration.js +0 -0
  282. /package/src/migrations/{latest/add-assemble-target → v1.0.0-rc.90/0006-add-assemble-target}/metadata.json +0 -0
  283. /package/src/migrations/{latest/python-test-input-scoping → v1.0.0-rc.90/0006-add-assemble-target}/migration.d.ts +0 -0
  284. /package/src/migrations/{latest/add-assemble-target → v1.0.0-rc.90/0006-add-assemble-target}/migration.js +0 -0
  285. /package/src/migrations/{latest/docker-target-cache-soundness → v1.0.0-rc.90/0007-docker-target-cache-soundness}/metadata.json +0 -0
  286. /package/src/migrations/{latest/react-website-unique-dev-ports → v1.0.0-rc.90/0007-docker-target-cache-soundness}/migration.d.ts +0 -0
  287. /package/src/migrations/{latest/docker-target-cache-soundness → v1.0.0-rc.90/0007-docker-target-cache-soundness}/migration.js +0 -0
  288. /package/src/migrations/{latest/declare-cacheable-target-inputs → v1.0.0-rc.90/0008-declare-cacheable-target-inputs}/metadata.json +0 -0
  289. /package/src/migrations/{latest/rolldown-config-bundle-transient → v1.0.0-rc.90/0008-declare-cacheable-target-inputs}/migration.d.ts +0 -0
  290. /package/src/migrations/{latest/declare-cacheable-target-inputs → v1.0.0-rc.90/0008-declare-cacheable-target-inputs}/migration.js +0 -0
  291. /package/src/migrations/{latest/terraform-fmt-check → v1.0.0-rc.90/0009-terraform-fmt-check}/metadata.json +0 -0
  292. /package/src/migrations/{latest/shadcn-package-imports-exports → v1.0.0-rc.90/0009-terraform-fmt-check}/migration.d.ts +0 -0
  293. /package/src/migrations/{latest/terraform-fmt-check → v1.0.0-rc.90/0009-terraform-fmt-check}/migration.js +0 -0
  294. /package/src/migrations/{latest/react-website-unique-dev-ports → v1.0.0-rc.92/0001-react-website-unique-dev-ports}/metadata.json +0 -0
  295. /package/src/migrations/{latest/shx-fs-commands → v1.0.0-rc.92/0001-react-website-unique-dev-ports}/migration.d.ts +0 -0
  296. /package/src/migrations/{latest/react-website-unique-dev-ports → v1.0.0-rc.92/0001-react-website-unique-dev-ports}/migration.js +0 -0
  297. /package/src/migrations/{latest/terraform-fmt-check → v1.0.0-rc.94/0001-infra-deploy-express-mode}/migration.d.ts +0 -0
  298. /package/src/migrations/{latest/shx-fs-commands → v1.0.0-rc.94/0002-shx-fs-commands}/metadata.json +0 -0
  299. /package/src/migrations/{latest/terraform-provider-plugin-cache → v1.0.0-rc.94/0002-shx-fs-commands}/migration.d.ts +0 -0
  300. /package/src/migrations/{latest/shx-fs-commands → v1.0.0-rc.94/0002-shx-fs-commands}/migration.js +0 -0
  301. /package/src/migrations/{latest/agent-core-vendor-target → v1.0.0-rc.94/0003-agent-core-vendor-target}/metadata.json +0 -0
  302. /package/src/migrations/{latest/vitest-coverage-output-dir → v1.0.0-rc.94/0003-agent-core-vendor-target}/migration.d.ts +0 -0
  303. /package/src/migrations/{latest/agent-core-vendor-target → v1.0.0-rc.94/0003-agent-core-vendor-target}/migration.js +0 -0
  304. /package/src/migrations/{latest/rolldown-config-bundle-transient → v1.0.0-rc.95/0001-rolldown-config-bundle-transient}/metadata.json +0 -0
  305. /package/src/migrations/{latest/rolldown-config-bundle-transient → v1.0.0-rc.95/0001-rolldown-config-bundle-transient}/migration.js +0 -0
  306. /package/src/migrations/{latest/agent-connection-pin-strands-peers → v1.0.0-rc.95/0002-agent-connection-pin-strands-peers}/metadata.json +0 -0
  307. /package/src/migrations/{latest/agent-connection-pin-strands-peers → v1.0.0-rc.95/0002-agent-connection-pin-strands-peers}/migration.d.ts +0 -0
  308. /package/src/migrations/{latest/agent-connection-pin-strands-peers → v1.0.0-rc.95/0002-agent-connection-pin-strands-peers}/migration.js +0 -0
  309. /package/src/migrations/{latest/ignore-package-manager-temp-files → v1.0.0-rc.95/0003-ignore-package-manager-temp-files}/metadata.json +0 -0
  310. /package/src/migrations/{latest/ignore-package-manager-temp-files → v1.0.0-rc.95/0003-ignore-package-manager-temp-files}/migration.d.ts +0 -0
  311. /package/src/migrations/{latest/ignore-package-manager-temp-files → v1.0.0-rc.95/0003-ignore-package-manager-temp-files}/migration.js +0 -0
  312. /package/src/migrations/{latest/shadcn-package-imports-exports → v1.0.0-rc.95/0004-shadcn-package-imports-exports}/metadata.json +0 -0
  313. /package/src/migrations/{latest/shadcn-package-imports-exports → v1.0.0-rc.95/0004-shadcn-package-imports-exports}/migration.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/agent/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 joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addTsDependencies } from '../../utils/add-dependencies.js';\nimport { addAgentChatScripts } from '../../utils/agent-chat/agent-chat.js';\nimport {\n AGENT_CONNECTION_DEPENDENCIES,\n addTypeScriptFrameworkBase,\n ensureTypeScriptAgentConnectionProject,\n} from '../../utils/agent-connection/agent-connection.js';\nimport {\n AGENT_CORE_CONSTRUCTS_PY_DEPENDENCIES,\n type AgentCoreArtifact,\n addAgentInfra,\n} from '../../utils/agent-core-constructs/agent-core-constructs.js';\nimport {\n addTypeScriptCodePackageTarget,\n agentCoreNodeRuntime,\n CODE_PACKAGE_DEPENDENCIES,\n isAgentCoreHosted,\n isContainerHosted,\n} from '../../utils/agent-core-packaging.js';\nimport {\n addTypeScriptBundleTarget,\n BUNDLE_DEPENDENCIES,\n} from '../../utils/bundle/bundle.js';\nimport { resolveContainers } from '../../utils/containers.js';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies.js';\nimport {\n ADOT_IMAGE_DEPENDENCIES,\n addDockerScanTarget,\n DOCKER_DEPENDENCIES,\n IMAGE_BUILD_CACHE,\n NODE_IMAGE_DEPENDENCIES,\n nodeImageVersions,\n} from '../../utils/docker.js';\nimport { formatFilesInSubtree } from '../../utils/format.js';\nimport { FS_DEPENDENCIES, FsCommands } from '../../utils/fs.js';\nimport { resolveIac } from '../../utils/iac.js';\nimport { installDependencies } from '../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics.js';\nimport { esmVars } from '../../utils/module-format.js';\nimport { kebabCase, toClassName } from '../../utils/names.js';\nimport { getNpmScope } from '../../utils/npm-scope.js';\nimport {\n addArtifactDependencyToTargets,\n addComponentDevTarget,\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n readProjectConfigurationUnqualified,\n} from '../../utils/nx.js';\nimport { sortObjectKeys } from '../../utils/object.js';\nimport { getRelativePathToRootByDirectory } from '../../utils/paths.js';\nimport { assignPort } from '../../utils/port.js';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs.js';\nimport type { IacMetadata } from '../../utils/shared-constructs-constants.js';\nimport { BASE_IMAGES, TS_VERSIONS } from '../../utils/versions.js';\nimport type { TsAgentGeneratorSchema, TsAgentInfra } from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface TsAgentMetadata extends IacMetadata {\n readonly port: number;\n readonly rc: string;\n readonly auth: string;\n readonly protocol: string;\n readonly session: string;\n /**\n * How this component is packaged and hosted, so a consumer can tell a\n * code-packaged runtime from a container-packaged one without re-deriving it.\n */\n readonly infra: TsAgentInfra;\n}\n\n// Each entry names the branch it belongs to, so the same declaration drives both\n// adding and the version sync.\nexport const DEPENDENCIES = declareDependencies<TsAgentMetadata>()({\n ts: [\n { name: 'zod' },\n { name: '@strands-agents/sdk' },\n { name: '@aws-sdk/credential-providers' },\n { name: '@aws-sdk/client-appconfigdata' },\n { name: '@aws-lambda-powertools/parameters' },\n { name: '@modelcontextprotocol/sdk' },\n { name: '@aws-sdk/client-s3', when: (m) => m.session === 's3' },\n { name: 'express', when: (m) => m.protocol !== 'http' },\n { name: '@a2a-js/sdk', when: (m) => m.protocol === 'a2a' },\n { name: '@ag-ui/aws-strands', when: (m) => m.protocol === 'ag-ui' },\n // @ag-ui/aws-strands declares these as peer dependencies but statically\n // imports them, so they must be installed for the bundler to inline them.\n { name: '@ag-ui/a2ui-toolkit', when: (m) => m.protocol === 'ag-ui' },\n { name: '@ag-ui/client', when: (m) => m.protocol === 'ag-ui' },\n { name: '@ag-ui/core', when: (m) => m.protocol === 'ag-ui' },\n { name: '@ag-ui/encoder', when: (m) => m.protocol === 'ag-ui' },\n { name: '@trpc/server', when: (m) => m.protocol === 'http' },\n { name: '@trpc/client', when: (m) => m.protocol === 'http' },\n { name: 'ws', when: (m) => m.protocol === 'http' },\n { name: 'cors', when: (m) => m.protocol !== 'a2a' },\n { name: 'aws4fetch', when: (m) => m.protocol === 'http' },\n { name: 'aws4fetch', when: (m) => m.auth === 'iam', dev: true },\n {\n name: '@aws-sdk/credential-providers',\n when: (m) => m.auth === 'iam',\n dev: true,\n },\n { name: '@types/node', dev: true },\n // The chat CLI runs standalone via tsx and resolves the deployed agent from\n // AppConfig when `RUNTIME_CONFIG_APP_ID` is set.\n { name: 'agent-chat-cli', dev: true },\n { name: '@aws-lambda-powertools/parameters', dev: true },\n { name: '@aws-sdk/client-appconfigdata', dev: true },\n // A2A chat builds a signed @a2a-js client factory for the deployed agent.\n { name: '@a2a-js/sdk', when: (m) => m.protocol === 'a2a', dev: true },\n { name: '@types/express', when: (m) => m.protocol !== 'http', dev: true },\n { name: '@types/ws', when: (m) => m.protocol === 'http', dev: true },\n { name: '@types/cors', dev: true },\n { name: 'tsx', dev: true, root: true },\n ...ownedElsewhere(AGENT_CONNECTION_DEPENDENCIES),\n ...ownedElsewhere(BUNDLE_DEPENDENCIES),\n ...ownedElsewhere(FS_DEPENDENCIES),\n ...ownedElsewhere(DOCKER_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(NODE_IMAGE_DEPENDENCIES),\n ...ownedElsewhere(ADOT_IMAGE_DEPENDENCIES),\n ...ownedElsewhere(CODE_PACKAGE_DEPENDENCIES),\n ],\n py: ownedElsewhere(AGENT_CORE_CONSTRUCTS_PY_DEPENDENCIES),\n});\n\nexport const TS_AGENT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsAgentGenerator = async (\n tree: Tree,\n options: TsAgentGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const project = readProjectConfigurationUnqualified(tree, options.project);\n\n if (!tree.exists(joinPathFragments(project.root, 'tsconfig.json'))) {\n throw new Error(\n `Unsupported project ${options.project}. Expected a TypeScript project (with a tsconfig.json)`,\n );\n }\n\n const defaultName = `${kebabCase(project.name.split('/').pop())}-agent`;\n const name = kebabCase(options.name || defaultName);\n const agentNameClassName = toClassName(name);\n const agentTargetPrefix = options.name ? name : 'agent';\n const targetSourceDirRelativeToProjectRoot = joinPathFragments(\n 'src',\n agentTargetPrefix,\n );\n const targetSourceDir = joinPathFragments(\n project.root,\n targetSourceDirRelativeToProjectRoot,\n );\n const relativeSourceDir = targetSourceDir.replace(project.root + '/', './');\n const distDir = joinPathFragments('dist', project.root);\n\n const infra = options.infra ?? 'agentcore';\n const protocol = options.protocol ?? 'http';\n\n // Recorded in the metadata below so the version sync can tell a CDK\n // project from a Terraform one; undefined when no infrastructure was\n // generated, in which case neither provider's packages were added.\n const iac =\n infra !== 'none' ? await resolveIac(tree, options.iac) : undefined;\n\n if (infra === 'none' && options.auth && options.auth !== 'iam') {\n console.warn(\n 'Warning: auth is ignored when no infrastructure is configured (no infrastructure is generated)',\n );\n }\n\n const auth = options.auth ?? 'iam';\n\n const session = options.session ?? 's3';\n\n if (infra === 'none' && session !== 'in-memory') {\n console.warn(\n 'Warning: session is ignored when no infrastructure is configured (no infrastructure is generated)',\n );\n }\n\n // Local-dev session storage lives at the workspace root\n // (`tmp/agents/strands/<agent-name>`), not inside the project, so each agent\n // gets its own storage directory. The `-dev`/`-serve` targets run with\n // cwd={projectRoot}, so compute that directory relative to the project root\n // here rather than resolving it at runtime (e.g. via import.meta.url),\n // which would need an extra runtime helper.\n const localSessionsDir = joinPathFragments(\n getRelativePathToRootByDirectory(project.root),\n `tmp/agents/strands/${name}`,\n );\n\n // Ensure the shared agent-connection project exists so the server entry\n // point can import `runWithSessionId` and propagate the AgentCore session\n // ID to any downstream MCP / A2A clients a later connection generator\n // wires into this agent.\n await ensureTypeScriptAgentConnectionProject(tree, DEPENDENCIES);\n // The agent server imports the framework base helpers (session cache + model\n // error logging) regardless of whether a connection client is wired in.\n await addTypeScriptFrameworkBase(tree, DEPENDENCIES);\n\n const templateContext = {\n name,\n agentNameClassName,\n distDir,\n protocol,\n session,\n localSessionsDir,\n agentConnectionImport: `@${getNpmScope(tree)}/agent-connection`,\n ...esmVars(tree),\n };\n\n // Generate common files shared by both protocols\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common'),\n targetSourceDir,\n templateContext,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Generate protocol-specific files\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', protocol.toLowerCase()),\n targetSourceDir,\n templateContext,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // AG-UI and A2A both mount an Express app and share the same session-id\n // middleware; HTTP relies on tRPC's createContext instead and has no\n // Express dependency to support it.\n if (protocol === 'ag-ui' || protocol === 'a2a') {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common-express'),\n targetSourceDir,\n templateContext,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n }\n\n if (isAgentCoreHosted(infra)) {\n const container = isContainerHosted(infra);\n const containers = await resolveContainers(tree, 'inherit');\n const dockerImageTag = `${getNpmScope(tree)}-${name}:latest`;\n\n // Add bundle target\n await addTypeScriptBundleTarget(\n tree,\n project,\n {\n targetFilePath: `${targetSourceDirRelativeToProjectRoot}/index.ts`,\n bundleOutputDir: joinPathFragments('agent', name),\n },\n DEPENDENCIES,\n );\n\n const bundleOutputDir = joinPathFragments(\n 'dist',\n project.root,\n 'bundle',\n 'agent',\n name,\n );\n\n let artifact: AgentCoreArtifact;\n\n if (container) {\n // Add the Dockerfile\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'deploy'),\n targetSourceDir,\n {\n distDir,\n name,\n protocol,\n adotVersion:\n TS_VERSIONS[\n '@aws/aws-distro-opentelemetry-node-autoinstrumentation'\n ],\n jaegerVersion: TS_VERSIONS['@opentelemetry/propagator-jaeger'],\n nodeBaseImage: BASE_IMAGES.node,\n ...nodeImageVersions(),\n ...esmVars(tree),\n },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n const dockerTargetName = `${agentTargetPrefix}-docker`;\n\n const fs = new FsCommands(tree, DEPENDENCIES);\n project.targets[dockerTargetName] = {\n cache: IMAGE_BUILD_CACHE,\n executor: 'nx:run-commands',\n options: {\n commands: [\n fs.cpFile(\n `${targetSourceDir}/Dockerfile`,\n `${bundleOutputDir}/Dockerfile`,\n ),\n `${containers} build --platform linux/arm64 -t ${dockerImageTag} ${bundleOutputDir}`,\n ],\n parallel: false,\n },\n dependsOn: ['bundle'],\n };\n\n addDependencyToTargetIfNotPresent(project, 'docker', dockerTargetName);\n addArtifactDependencyToTargets(project, 'docker');\n\n addDockerScanTarget(\n tree,\n {\n project,\n containerEngine: containers,\n trivyTargetName: `${agentTargetPrefix}-trivy`,\n dockerTargetName,\n imageTags: [dockerImageTag],\n },\n DEPENDENCIES,\n );\n\n artifact = {\n type: 'container',\n dockerImageTag,\n outputDir: bundleOutputDir,\n };\n } else {\n const packageOutputDir = joinPathFragments(\n 'dist',\n project.root,\n 'package',\n 'agent',\n name,\n );\n addTypeScriptCodePackageTarget(\n tree,\n {\n project,\n targetName: `${agentTargetPrefix}-package`,\n bundleTargetName: 'bundle',\n bundleOutputDir,\n packageOutputDir,\n },\n DEPENDENCIES,\n );\n\n artifact = {\n type: 'code',\n outputDir: packageOutputDir,\n runtime: agentCoreNodeRuntime(),\n entryPoint: 'index.js',\n };\n }\n\n // Add shared constructs\n await sharedConstructsGenerator(tree, { iac }, DEPENDENCIES);\n\n // AG-UI uses HTTP as the AgentCore protocol type (AG-UI is HTTP-based with SSE over POST).\n const infraProtocol: 'http' | 'a2a' =\n protocol === 'ag-ui' ? 'http' : (protocol as 'http' | 'a2a');\n\n await addAgentInfra(tree, {\n agentNameKebabCase: name,\n agentNameClassName,\n projectName: project.name,\n artifact,\n iac,\n auth,\n session,\n serverProtocol: infraProtocol,\n containers,\n });\n }\n\n // A2A servers use port 9000 as per the Strands A2A SDK default and AgentCore A2A contract.\n // HTTP and AG-UI agents use port 8081+ to avoid conflict with VS Code server on 8080.\n const localDevPortStart = protocol === 'a2a' ? 9000 : 8081;\n const localDevPort = assignPort(tree, project, localDevPortStart, {\n component: { info: TS_AGENT_GENERATOR_INFO, name: agentTargetPrefix },\n });\n\n // Recorded below and read by the declaration's predicates, so the packages\n // added here are exactly the ones the version sync will own.\n const metadata: TsAgentMetadata = {\n infra,\n port: localDevPort,\n rc: agentNameClassName,\n auth,\n protocol,\n session,\n ...(iac ? { iac } : {}),\n };\n\n addTsDependencies(tree, DEPENDENCIES, {\n metadata,\n projectRoot: project.root,\n });\n\n // Every protocol gets a standalone `chat.ts`. It connects to the local\n // `dev` server by default, or to the deployed agent (with the\n // appropriate auth) when `RUNTIME_CONFIG_APP_ID` is set.\n const scriptsDir = joinPathFragments(\n project.root,\n 'scripts',\n agentTargetPrefix,\n );\n addAgentChatScripts(tree, {\n scriptsDir,\n protocol,\n language: 'ts',\n agentNameClassName,\n auth,\n relativeAgentImport: `../../${targetSourceDirRelativeToProjectRoot}`,\n });\n\n const chatUrl =\n protocol === 'http'\n ? `ws://localhost:${localDevPort}/ws`\n : protocol === 'ag-ui'\n ? `http://localhost:${localDevPort}/invocations`\n : `http://localhost:${localDevPort}`;\n const chatCommand = `tsx ./scripts/${agentTargetPrefix}/chat.ts`;\n\n const agentTargets = {\n ...project.targets,\n [`${agentTargetPrefix}-serve`]: {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n commands: [`tsx --watch ${relativeSourceDir}/index.ts`],\n cwd: '{projectRoot}',\n env: {\n PORT: `${localDevPort}`,\n },\n },\n },\n [`${agentTargetPrefix}-dev`]: {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n commands: [`tsx --watch ${relativeSourceDir}/index.ts`],\n cwd: '{projectRoot}',\n env: {\n PORT: `${localDevPort}`,\n LOCAL_DEV: 'true',\n },\n },\n },\n [`${agentTargetPrefix}-chat`]: {\n executor: 'nx:run-commands',\n options: {\n commands: [chatCommand],\n cwd: '{projectRoot}',\n env: {\n URL: chatUrl,\n },\n },\n },\n };\n\n // Aggregate `<agent>-dev` under the project-level `dev` target.\n addComponentDevTarget(agentTargets, `${agentTargetPrefix}-dev`);\n\n updateProjectConfiguration(tree, project.name, {\n ...project,\n // Sort targets so their order is stable regardless of insertion order on\n // first run vs re-run.\n targets: sortObjectKeys(agentTargets),\n });\n\n addComponentGeneratorMetadata(\n tree,\n project.name,\n TS_AGENT_GENERATOR_INFO,\n targetSourceDirRelativeToProjectRoot,\n agentTargetPrefix,\n metadata,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [TS_AGENT_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsAgentGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","addTsDependencies","addAgentChatScripts","AGENT_CONNECTION_DEPENDENCIES","addTypeScriptFrameworkBase","ensureTypeScriptAgentConnectionProject","AGENT_CORE_CONSTRUCTS_PY_DEPENDENCIES","addAgentInfra","addTypeScriptCodePackageTarget","agentCoreNodeRuntime","CODE_PACKAGE_DEPENDENCIES","isAgentCoreHosted","isContainerHosted","addTypeScriptBundleTarget","BUNDLE_DEPENDENCIES","resolveContainers","declareDependencies","ownedElsewhere","ADOT_IMAGE_DEPENDENCIES","addDockerScanTarget","DOCKER_DEPENDENCIES","IMAGE_BUILD_CACHE","NODE_IMAGE_DEPENDENCIES","nodeImageVersions","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","esmVars","kebabCase","toClassName","getNpmScope","addArtifactDependencyToTargets","addComponentDevTarget","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","readProjectConfigurationUnqualified","sortObjectKeys","getRelativePathToRootByDirectory","assignPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","BASE_IMAGES","TS_VERSIONS","DEPENDENCIES","ts","name","when","m","session","protocol","auth","dev","root","py","TS_AGENT_GENERATOR_INFO","filename","tsAgentGenerator","tree","options","project","exists","Error","defaultName","split","pop","agentNameClassName","agentTargetPrefix","targetSourceDirRelativeToProjectRoot","targetSourceDir","relativeSourceDir","replace","distDir","infra","iac","undefined","console","warn","localSessionsDir","templateContext","agentConnectionImport","dirname","overwriteStrategy","KeepExisting","toLowerCase","container","containers","dockerImageTag","targetFilePath","bundleOutputDir","artifact","adotVersion","jaegerVersion","nodeBaseImage","node","dockerTargetName","fs","targets","cache","executor","commands","cpFile","parallel","dependsOn","containerEngine","trivyTargetName","imageTags","type","outputDir","packageOutputDir","targetName","bundleTargetName","runtime","entryPoint","infraProtocol","agentNameKebabCase","projectName","serverProtocol","localDevPortStart","localDevPort","component","info","metadata","port","rc","projectRoot","scriptsDir","language","relativeAgentImport","chatUrl","chatCommand","agentTargets","continuous","cwd","env","PORT","LOCAL_DEV","URL","preferInstallDependencies","languages"],"mappings":"AAAA;;;CAGC,GACD,SAEEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EAEjBC,0BAA0B,QACrB,aAAa;AACpB,SAASC,iBAAiB,QAAQ,kCAAkC;AACpE,SAASC,mBAAmB,QAAQ,uCAAuC;AAC3E,SACEC,6BAA6B,EAC7BC,0BAA0B,EAC1BC,sCAAsC,QACjC,mDAAmD;AAC1D,SACEC,qCAAqC,EAErCC,aAAa,QACR,6DAA6D;AACpE,SACEC,8BAA8B,EAC9BC,oBAAoB,EACpBC,yBAAyB,EACzBC,iBAAiB,EACjBC,iBAAiB,QACZ,sCAAsC;AAC7C,SACEC,yBAAyB,EACzBC,mBAAmB,QACd,+BAA+B;AACtC,SAASC,iBAAiB,QAAQ,4BAA4B;AAC9D,SACEC,mBAAmB,EACnBC,cAAc,QACT,uCAAuC;AAC9C,SACEC,uBAAuB,EACvBC,mBAAmB,EACnBC,mBAAmB,EACnBC,iBAAiB,EACjBC,uBAAuB,EACvBC,iBAAiB,QACZ,wBAAwB;AAC/B,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,eAAe,EAAEC,UAAU,QAAQ,oBAAoB;AAChE,SAASC,UAAU,QAAQ,qBAAqB;AAChD,SAASC,mBAAmB,QAAQ,yBAAyB;AAC7D,SAASC,+BAA+B,QAAQ,yBAAyB;AACzE,SAASC,OAAO,QAAQ,+BAA+B;AACvD,SAASC,SAAS,EAAEC,WAAW,QAAQ,uBAAuB;AAC9D,SAASC,WAAW,QAAQ,2BAA2B;AACvD,SACEC,8BAA8B,EAC9BC,qBAAqB,EACrBC,6BAA6B,EAC7BC,iCAAiC,EACjCC,gBAAgB,EAEhBC,mCAAmC,QAC9B,oBAAoB;AAC3B,SAASC,cAAc,QAAQ,wBAAwB;AACvD,SAASC,gCAAgC,QAAQ,uBAAuB;AACxE,SAASC,UAAU,QAAQ,sBAAsB;AACjD,SACEC,8BAA8B,EAC9BC,yBAAyB,QACpB,mCAAmC;AAE1C,SAASC,WAAW,EAAEC,WAAW,QAAQ,0BAA0B;AAiBnE,iFAAiF;AACjF,+BAA+B;AAC/B,OAAO,MAAMC,eAAe/B,sBAAuC;IACjEgC,IAAI;QACF;YAAEC,MAAM;QAAM;QACd;YAAEA,MAAM;QAAsB;QAC9B;YAAEA,MAAM;QAAgC;QACxC;YAAEA,MAAM;QAAgC;QACxC;YAAEA,MAAM;QAAoC;QAC5C;YAAEA,MAAM;QAA4B;QACpC;YAAEA,MAAM;YAAsBC,MAAM,CAACC,IAAMA,EAAEC,OAAO,KAAK;QAAK;QAC9D;YAAEH,MAAM;YAAWC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAO;QACtD;YAAEJ,MAAM;YAAeC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAM;QACzD;YAAEJ,MAAM;YAAsBC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAQ;QAClE,wEAAwE;QACxE,0EAA0E;QAC1E;YAAEJ,MAAM;YAAuBC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAQ;QACnE;YAAEJ,MAAM;YAAiBC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAQ;QAC7D;YAAEJ,MAAM;YAAeC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAQ;QAC3D;YAAEJ,MAAM;YAAkBC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAQ;QAC9D;YAAEJ,MAAM;YAAgBC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAO;QAC3D;YAAEJ,MAAM;YAAgBC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAO;QAC3D;YAAEJ,MAAM;YAAMC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAO;QACjD;YAAEJ,MAAM;YAAQC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAM;QAClD;YAAEJ,MAAM;YAAaC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;QAAO;QACxD;YAAEJ,MAAM;YAAaC,MAAM,CAACC,IAAMA,EAAEG,IAAI,KAAK;YAAOC,KAAK;QAAK;QAC9D;YACEN,MAAM;YACNC,MAAM,CAACC,IAAMA,EAAEG,IAAI,KAAK;YACxBC,KAAK;QACP;QACA;YAAEN,MAAM;YAAeM,KAAK;QAAK;QACjC,4EAA4E;QAC5E,iDAAiD;QACjD;YAAEN,MAAM;YAAkBM,KAAK;QAAK;QACpC;YAAEN,MAAM;YAAqCM,KAAK;QAAK;QACvD;YAAEN,MAAM;YAAiCM,KAAK;QAAK;QACnD,0EAA0E;QAC1E;YAAEN,MAAM;YAAeC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;YAAOE,KAAK;QAAK;QACpE;YAAEN,MAAM;YAAkBC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;YAAQE,KAAK;QAAK;QACxE;YAAEN,MAAM;YAAaC,MAAM,CAACC,IAAMA,EAAEE,QAAQ,KAAK;YAAQE,KAAK;QAAK;QACnE;YAAEN,MAAM;YAAeM,KAAK;QAAK;QACjC;YAAEN,MAAM;YAAOM,KAAK;YAAMC,MAAM;QAAK;WAClCvC,eAAed;WACfc,eAAeH;WACfG,eAAeQ;WACfR,eAAeG;WACfH,eAAe0B;WACf1B,eAAeK;WACfL,eAAeC;WACfD,eAAeP;KACnB;IACD+C,IAAIxC,eAAeX;AACrB,GAAG;AAEH,OAAO,MAAMoD,0BAA2CpB,iBACtD,YAAYqB,QAAQ,EACpB;AAEF,OAAO,MAAMC,mBAAmB,OAC9BC,MACAC;IAEA,MAAMC,UAAUxB,oCAAoCsB,MAAMC,QAAQC,OAAO;IAEzE,IAAI,CAACF,KAAKG,MAAM,CAAClE,kBAAkBiE,QAAQP,IAAI,EAAE,mBAAmB;QAClE,MAAM,IAAIS,MACR,CAAC,oBAAoB,EAAEH,QAAQC,OAAO,CAAC,sDAAsD,CAAC;IAElG;IAEA,MAAMG,cAAc,GAAGnC,UAAUgC,QAAQd,IAAI,CAACkB,KAAK,CAAC,KAAKC,GAAG,IAAI,MAAM,CAAC;IACvE,MAAMnB,OAAOlB,UAAU+B,QAAQb,IAAI,IAAIiB;IACvC,MAAMG,qBAAqBrC,YAAYiB;IACvC,MAAMqB,oBAAoBR,QAAQb,IAAI,GAAGA,OAAO;IAChD,MAAMsB,uCAAuCzE,kBAC3C,OACAwE;IAEF,MAAME,kBAAkB1E,kBACtBiE,QAAQP,IAAI,EACZe;IAEF,MAAME,oBAAoBD,gBAAgBE,OAAO,CAACX,QAAQP,IAAI,GAAG,KAAK;IACtE,MAAMmB,UAAU7E,kBAAkB,QAAQiE,QAAQP,IAAI;IAEtD,MAAMoB,QAAQd,QAAQc,KAAK,IAAI;IAC/B,MAAMvB,WAAWS,QAAQT,QAAQ,IAAI;IAErC,oEAAoE;IACpE,qEAAqE;IACrE,mEAAmE;IACnE,MAAMwB,MACJD,UAAU,SAAS,MAAMjD,WAAWkC,MAAMC,QAAQe,GAAG,IAAIC;IAE3D,IAAIF,UAAU,UAAUd,QAAQR,IAAI,IAAIQ,QAAQR,IAAI,KAAK,OAAO;QAC9DyB,QAAQC,IAAI,CACV;IAEJ;IAEA,MAAM1B,OAAOQ,QAAQR,IAAI,IAAI;IAE7B,MAAMF,UAAUU,QAAQV,OAAO,IAAI;IAEnC,IAAIwB,UAAU,UAAUxB,YAAY,aAAa;QAC/C2B,QAAQC,IAAI,CACV;IAEJ;IAEA,wDAAwD;IACxD,6EAA6E;IAC7E,uEAAuE;IACvE,4EAA4E;IAC5E,uEAAuE;IACvE,4CAA4C;IAC5C,MAAMC,mBAAmBnF,kBACvB2C,iCAAiCsB,QAAQP,IAAI,GAC7C,CAAC,mBAAmB,EAAEP,MAAM;IAG9B,wEAAwE;IACxE,0EAA0E;IAC1E,sEAAsE;IACtE,yBAAyB;IACzB,MAAM5C,uCAAuCwD,MAAMd;IACnD,6EAA6E;IAC7E,wEAAwE;IACxE,MAAM3C,2BAA2ByD,MAAMd;IAEvC,MAAMmC,kBAAkB;QACtBjC;QACAoB;QACAM;QACAtB;QACAD;QACA6B;QACAE,uBAAuB,CAAC,CAAC,EAAElD,YAAY4B,MAAM,iBAAiB,CAAC;QAC/D,GAAG/B,QAAQ+B,KAAK;IAClB;IAEA,iDAAiD;IACjDhE,cACEgE,MACA/D,kBAAkB,YAAYsF,OAAO,EAAE,SAAS,WAChDZ,iBACAU,iBACA;QAAEG,mBAAmBtF,kBAAkBuF,YAAY;IAAC;IAGtD,mCAAmC;IACnCzF,cACEgE,MACA/D,kBAAkB,YAAYsF,OAAO,EAAE,SAAS/B,SAASkC,WAAW,KACpEf,iBACAU,iBACA;QAAEG,mBAAmBtF,kBAAkBuF,YAAY;IAAC;IAGtD,wEAAwE;IACxE,qEAAqE;IACrE,oCAAoC;IACpC,IAAIjC,aAAa,WAAWA,aAAa,OAAO;QAC9CxD,cACEgE,MACA/D,kBAAkB,YAAYsF,OAAO,EAAE,SAAS,mBAChDZ,iBACAU,iBACA;YAAEG,mBAAmBtF,kBAAkBuF,YAAY;QAAC;IAExD;IAEA,IAAI3E,kBAAkBiE,QAAQ;QAC5B,MAAMY,YAAY5E,kBAAkBgE;QACpC,MAAMa,aAAa,MAAM1E,kBAAkB8C,MAAM;QACjD,MAAM6B,iBAAiB,GAAGzD,YAAY4B,MAAM,CAAC,EAAEZ,KAAK,OAAO,CAAC;QAE5D,oBAAoB;QACpB,MAAMpC,0BACJgD,MACAE,SACA;YACE4B,gBAAgB,GAAGpB,qCAAqC,SAAS,CAAC;YAClEqB,iBAAiB9F,kBAAkB,SAASmD;QAC9C,GACAF;QAGF,MAAM6C,kBAAkB9F,kBACtB,QACAiE,QAAQP,IAAI,EACZ,UACA,SACAP;QAGF,IAAI4C;QAEJ,IAAIL,WAAW;YACb,qBAAqB;YACrB3F,cACEgE,MACA/D,kBAAkB,YAAYsF,OAAO,EAAE,SAAS,WAChDZ,iBACA;gBACEG;gBACA1B;gBACAI;gBACAyC,aACEhD,WAAW,CACT,yDACD;gBACHiD,eAAejD,WAAW,CAAC,mCAAmC;gBAC9DkD,eAAenD,YAAYoD,IAAI;gBAC/B,GAAG1E,mBAAmB;gBACtB,GAAGO,QAAQ+B,KAAK;YAClB,GACA;gBAAEwB,mBAAmBtF,kBAAkBuF,YAAY;YAAC;YAGtD,MAAMY,mBAAmB,GAAG5B,kBAAkB,OAAO,CAAC;YAEtD,MAAM6B,KAAK,IAAIzE,WAAWmC,MAAMd;YAChCgB,QAAQqC,OAAO,CAACF,iBAAiB,GAAG;gBAClCG,OAAOhF;gBACPiF,UAAU;gBACVxC,SAAS;oBACPyC,UAAU;wBACRJ,GAAGK,MAAM,CACP,GAAGhC,gBAAgB,WAAW,CAAC,EAC/B,GAAGoB,gBAAgB,WAAW,CAAC;wBAEjC,GAAGH,WAAW,iCAAiC,EAAEC,eAAe,CAAC,EAAEE,iBAAiB;qBACrF;oBACDa,UAAU;gBACZ;gBACAC,WAAW;oBAAC;iBAAS;YACvB;YAEArE,kCAAkC0B,SAAS,UAAUmC;YACrDhE,+BAA+B6B,SAAS;YAExC5C,oBACE0C,MACA;gBACEE;gBACA4C,iBAAiBlB;gBACjBmB,iBAAiB,GAAGtC,kBAAkB,MAAM,CAAC;gBAC7C4B;gBACAW,WAAW;oBAACnB;iBAAe;YAC7B,GACA3C;YAGF8C,WAAW;gBACTiB,MAAM;gBACNpB;gBACAqB,WAAWnB;YACb;QACF,OAAO;YACL,MAAMoB,mBAAmBlH,kBACvB,QACAiE,QAAQP,IAAI,EACZ,WACA,SACAP;YAEFzC,+BACEqD,MACA;gBACEE;gBACAkD,YAAY,GAAG3C,kBAAkB,QAAQ,CAAC;gBAC1C4C,kBAAkB;gBAClBtB;gBACAoB;YACF,GACAjE;YAGF8C,WAAW;gBACTiB,MAAM;gBACNC,WAAWC;gBACXG,SAAS1G;gBACT2G,YAAY;YACd;QACF;QAEA,wBAAwB;QACxB,MAAMxE,0BAA0BiB,MAAM;YAAEgB;QAAI,GAAG9B;QAE/C,2FAA2F;QAC3F,MAAMsE,gBACJhE,aAAa,UAAU,SAAUA;QAEnC,MAAM9C,cAAcsD,MAAM;YACxByD,oBAAoBrE;YACpBoB;YACAkD,aAAaxD,QAAQd,IAAI;YACzB4C;YACAhB;YACAvB;YACAF;YACAoE,gBAAgBH;YAChB5B;QACF;IACF;IAEA,2FAA2F;IAC3F,sFAAsF;IACtF,MAAMgC,oBAAoBpE,aAAa,QAAQ,OAAO;IACtD,MAAMqE,eAAehF,WAAWmB,MAAME,SAAS0D,mBAAmB;QAChEE,WAAW;YAAEC,MAAMlE;YAAyBT,MAAMqB;QAAkB;IACtE;IAEA,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAMuD,WAA4B;QAChCjD;QACAkD,MAAMJ;QACNK,IAAI1D;QACJf;QACAD;QACAD;QACA,GAAIyB,MAAM;YAAEA;QAAI,IAAI,CAAC,CAAC;IACxB;IAEA5E,kBAAkB4D,MAAMd,cAAc;QACpC8E;QACAG,aAAajE,QAAQP,IAAI;IAC3B;IAEA,uEAAuE;IACvE,8DAA8D;IAC9D,yDAAyD;IACzD,MAAMyE,aAAanI,kBACjBiE,QAAQP,IAAI,EACZ,WACAc;IAEFpE,oBAAoB2D,MAAM;QACxBoE;QACA5E;QACA6E,UAAU;QACV7D;QACAf;QACA6E,qBAAqB,CAAC,MAAM,EAAE5D,sCAAsC;IACtE;IAEA,MAAM6D,UACJ/E,aAAa,SACT,CAAC,eAAe,EAAEqE,aAAa,GAAG,CAAC,GACnCrE,aAAa,UACX,CAAC,iBAAiB,EAAEqE,aAAa,YAAY,CAAC,GAC9C,CAAC,iBAAiB,EAAEA,cAAc;IAC1C,MAAMW,cAAc,CAAC,cAAc,EAAE/D,kBAAkB,QAAQ,CAAC;IAEhE,MAAMgE,eAAe;QACnB,GAAGvE,QAAQqC,OAAO;QAClB,CAAC,GAAG9B,kBAAkB,MAAM,CAAC,CAAC,EAAE;YAC9BgC,UAAU;YACViC,YAAY;YACZzE,SAAS;gBACPyC,UAAU;oBAAC,CAAC,YAAY,EAAE9B,kBAAkB,SAAS,CAAC;iBAAC;gBACvD+D,KAAK;gBACLC,KAAK;oBACHC,MAAM,GAAGhB,cAAc;gBACzB;YACF;QACF;QACA,CAAC,GAAGpD,kBAAkB,IAAI,CAAC,CAAC,EAAE;YAC5BgC,UAAU;YACViC,YAAY;YACZzE,SAAS;gBACPyC,UAAU;oBAAC,CAAC,YAAY,EAAE9B,kBAAkB,SAAS,CAAC;iBAAC;gBACvD+D,KAAK;gBACLC,KAAK;oBACHC,MAAM,GAAGhB,cAAc;oBACvBiB,WAAW;gBACb;YACF;QACF;QACA,CAAC,GAAGrE,kBAAkB,KAAK,CAAC,CAAC,EAAE;YAC7BgC,UAAU;YACVxC,SAAS;gBACPyC,UAAU;oBAAC8B;iBAAY;gBACvBG,KAAK;gBACLC,KAAK;oBACHG,KAAKR;gBACP;YACF;QACF;IACF;IAEA,gEAAgE;IAChEjG,sBAAsBmG,cAAc,GAAGhE,kBAAkB,IAAI,CAAC;IAE9DtE,2BAA2B6D,MAAME,QAAQd,IAAI,EAAE;QAC7C,GAAGc,OAAO;QACV,yEAAyE;QACzE,uBAAuB;QACvBqC,SAAS5D,eAAe8F;IAC1B;IAEAlG,8BACEyB,MACAE,QAAQd,IAAI,EACZS,yBACAa,sCACAD,mBACAuD;IAGF,MAAMhG,gCAAgCgC,MAAM;QAACH;KAAwB;IAErE,MAAMlC,qBAAqBqC;IAC3B,OAAO,IACLjC,oBAAoBiC,MAAMC,QAAQ+E,yBAAyB,EAAE;YAC3DC,WAAW;gBAAC;aAAa;QAC3B;AACJ,EAAE;AAEF,eAAelF,iBAAiB"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/agent/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 joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addTsDependencies } from '../../utils/add-dependencies.js';\nimport { addAgentChatScripts } from '../../utils/agent-chat/agent-chat.js';\nimport {\n AGENT_CONNECTION_DEPENDENCIES,\n addTypeScriptFrameworkBase,\n ensureTypeScriptAgentConnectionProject,\n} from '../../utils/agent-connection/agent-connection.js';\nimport {\n AGENT_CORE_CONSTRUCTS_PY_DEPENDENCIES,\n type AgentCoreArtifact,\n addAgentInfra,\n} from '../../utils/agent-core-constructs/agent-core-constructs.js';\nimport {\n addTypeScriptCodePackageTarget,\n agentCoreNodeRuntime,\n CODE_PACKAGE_DEPENDENCIES,\n isAgentCoreHosted,\n isContainerHosted,\n} from '../../utils/agent-core-packaging.js';\nimport {\n addTypeScriptBundleTarget,\n BUNDLE_DEPENDENCIES,\n} from '../../utils/bundle/bundle.js';\nimport { resolveContainers } from '../../utils/containers.js';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies.js';\nimport {\n ADOT_IMAGE_DEPENDENCIES,\n addDockerScanTarget,\n DOCKER_DEPENDENCIES,\n IMAGE_BUILD_CACHE,\n NODE_IMAGE_DEPENDENCIES,\n nodeImageVersions,\n} from '../../utils/docker.js';\nimport { formatFilesInSubtree } from '../../utils/format.js';\nimport { FS_DEPENDENCIES, FsCommands } from '../../utils/fs.js';\nimport { resolveIac } from '../../utils/iac.js';\nimport { installDependencies } from '../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics.js';\nimport { esmVars } from '../../utils/module-format.js';\nimport { kebabCase, toClassName } from '../../utils/names.js';\nimport { getNpmScope } from '../../utils/npm-scope.js';\nimport {\n addArtifactDependencyToTargets,\n addComponentDevTarget,\n addComponentGeneratorMetadata,\n addDependencyToTargetIfNotPresent,\n getGeneratorInfo,\n type NxGeneratorInfo,\n normalizeTargetKeyOrder,\n readProjectConfigurationUnqualified,\n} from '../../utils/nx.js';\nimport { sortObjectKeys } from '../../utils/object.js';\nimport { getRelativePathToRootByDirectory } from '../../utils/paths.js';\nimport { assignPort } from '../../utils/port.js';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs.js';\nimport type { IacMetadata } from '../../utils/shared-constructs-constants.js';\nimport { BASE_IMAGES, TS_VERSIONS } from '../../utils/versions.js';\nimport type { TsAgentGeneratorSchema, TsAgentInfra } from './schema';\n\n/** The metadata this generator records, which its predicates read. */\nexport interface TsAgentMetadata extends IacMetadata {\n readonly port: number;\n readonly rc: string;\n readonly auth: string;\n readonly protocol: string;\n readonly session: string;\n /**\n * How this component is packaged and hosted, so a consumer can tell a\n * code-packaged runtime from a container-packaged one without re-deriving it.\n */\n readonly infra: TsAgentInfra;\n}\n\n// Each entry names the branch it belongs to, so the same declaration drives both\n// adding and the version sync.\nexport const DEPENDENCIES = declareDependencies<TsAgentMetadata>()({\n ts: [\n { name: 'zod' },\n { name: '@strands-agents/sdk' },\n { name: '@aws-sdk/credential-providers' },\n { name: '@aws-sdk/client-appconfigdata' },\n { name: '@aws-lambda-powertools/parameters' },\n { name: '@modelcontextprotocol/sdk' },\n { name: '@aws-sdk/client-s3', when: (m) => m.session === 's3' },\n { name: 'express', when: (m) => m.protocol !== 'http' },\n { name: '@a2a-js/sdk', when: (m) => m.protocol === 'a2a' },\n { name: '@ag-ui/aws-strands', when: (m) => m.protocol === 'ag-ui' },\n // @ag-ui/aws-strands declares these as peer dependencies but statically\n // imports them, so they must be installed for the bundler to inline them.\n { name: '@ag-ui/a2ui-toolkit', when: (m) => m.protocol === 'ag-ui' },\n { name: '@ag-ui/client', when: (m) => m.protocol === 'ag-ui' },\n { name: '@ag-ui/core', when: (m) => m.protocol === 'ag-ui' },\n { name: '@ag-ui/encoder', when: (m) => m.protocol === 'ag-ui' },\n { name: '@trpc/server', when: (m) => m.protocol === 'http' },\n { name: '@trpc/client', when: (m) => m.protocol === 'http' },\n { name: 'ws', when: (m) => m.protocol === 'http' },\n { name: 'cors', when: (m) => m.protocol !== 'a2a' },\n { name: 'aws4fetch', when: (m) => m.protocol === 'http' },\n { name: 'aws4fetch', when: (m) => m.auth === 'iam', dev: true },\n {\n name: '@aws-sdk/credential-providers',\n when: (m) => m.auth === 'iam',\n dev: true,\n },\n { name: '@types/node', dev: true },\n // The chat CLI runs standalone via tsx and resolves the deployed agent from\n // AppConfig when `RUNTIME_CONFIG_APP_ID` is set.\n { name: 'agent-chat-cli', dev: true },\n { name: '@aws-lambda-powertools/parameters', dev: true },\n { name: '@aws-sdk/client-appconfigdata', dev: true },\n // A2A chat builds a signed @a2a-js client factory for the deployed agent.\n { name: '@a2a-js/sdk', when: (m) => m.protocol === 'a2a', dev: true },\n { name: '@types/express', when: (m) => m.protocol !== 'http', dev: true },\n { name: '@types/ws', when: (m) => m.protocol === 'http', dev: true },\n { name: '@types/cors', dev: true },\n { name: 'tsx', dev: true, root: true },\n ...ownedElsewhere(AGENT_CONNECTION_DEPENDENCIES),\n ...ownedElsewhere(BUNDLE_DEPENDENCIES),\n ...ownedElsewhere(FS_DEPENDENCIES),\n ...ownedElsewhere(DOCKER_DEPENDENCIES),\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(NODE_IMAGE_DEPENDENCIES),\n ...ownedElsewhere(ADOT_IMAGE_DEPENDENCIES),\n ...ownedElsewhere(CODE_PACKAGE_DEPENDENCIES),\n ],\n py: ownedElsewhere(AGENT_CORE_CONSTRUCTS_PY_DEPENDENCIES),\n});\n\nexport const TS_AGENT_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsAgentGenerator = async (\n tree: Tree,\n options: TsAgentGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const project = readProjectConfigurationUnqualified(tree, options.project);\n\n if (!tree.exists(joinPathFragments(project.root, 'tsconfig.json'))) {\n throw new Error(\n `Unsupported project ${options.project}. Expected a TypeScript project (with a tsconfig.json)`,\n );\n }\n\n const defaultName = `${kebabCase(project.name.split('/').pop())}-agent`;\n const name = kebabCase(options.name || defaultName);\n const agentNameClassName = toClassName(name);\n const agentTargetPrefix = options.name ? name : 'agent';\n const targetSourceDirRelativeToProjectRoot = joinPathFragments(\n 'src',\n agentTargetPrefix,\n );\n const targetSourceDir = joinPathFragments(\n project.root,\n targetSourceDirRelativeToProjectRoot,\n );\n const relativeSourceDir = targetSourceDir.replace(project.root + '/', './');\n const distDir = joinPathFragments('dist', project.root);\n\n const infra = options.infra ?? 'agentcore';\n const protocol = options.protocol ?? 'http';\n\n // Recorded in the metadata below so the version sync can tell a CDK\n // project from a Terraform one; undefined when no infrastructure was\n // generated, in which case neither provider's packages were added.\n const iac =\n infra !== 'none' ? await resolveIac(tree, options.iac) : undefined;\n\n if (infra === 'none' && options.auth && options.auth !== 'iam') {\n console.warn(\n 'Warning: auth is ignored when no infrastructure is configured (no infrastructure is generated)',\n );\n }\n\n const auth = options.auth ?? 'iam';\n\n const session = options.session ?? 's3';\n\n if (infra === 'none' && session !== 'in-memory') {\n console.warn(\n 'Warning: session is ignored when no infrastructure is configured (no infrastructure is generated)',\n );\n }\n\n // Local-dev session storage lives at the workspace root\n // (`tmp/agents/strands/<agent-name>`), not inside the project, so each agent\n // gets its own storage directory. The `-dev`/`-serve` targets run with\n // cwd={projectRoot}, so compute that directory relative to the project root\n // here rather than resolving it at runtime (e.g. via import.meta.url),\n // which would need an extra runtime helper.\n const localSessionsDir = joinPathFragments(\n getRelativePathToRootByDirectory(project.root),\n `tmp/agents/strands/${name}`,\n );\n\n // Ensure the shared agent-connection project exists so the server entry\n // point can import `runWithSessionId` and propagate the AgentCore session\n // ID to any downstream MCP / A2A clients a later connection generator\n // wires into this agent.\n await ensureTypeScriptAgentConnectionProject(tree, DEPENDENCIES);\n // The agent server imports the framework base helpers (session cache + model\n // error logging) regardless of whether a connection client is wired in.\n await addTypeScriptFrameworkBase(tree, DEPENDENCIES);\n\n const templateContext = {\n name,\n agentNameClassName,\n distDir,\n protocol,\n session,\n localSessionsDir,\n agentConnectionImport: `@${getNpmScope(tree)}/agent-connection`,\n ...esmVars(tree),\n };\n\n // Generate common files shared by both protocols\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common'),\n targetSourceDir,\n templateContext,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Generate protocol-specific files\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', protocol.toLowerCase()),\n targetSourceDir,\n templateContext,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // AG-UI and A2A both mount an Express app and share the same session-id\n // middleware; HTTP relies on tRPC's createContext instead and has no\n // Express dependency to support it.\n if (protocol === 'ag-ui' || protocol === 'a2a') {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common-express'),\n targetSourceDir,\n templateContext,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n }\n\n if (isAgentCoreHosted(infra)) {\n const container = isContainerHosted(infra);\n const containers = await resolveContainers(tree, 'inherit');\n const dockerImageTag = `${getNpmScope(tree)}-${name}:latest`;\n\n // Add bundle target\n await addTypeScriptBundleTarget(\n tree,\n project,\n {\n targetFilePath: `${targetSourceDirRelativeToProjectRoot}/index.ts`,\n bundleOutputDir: joinPathFragments('agent', name),\n },\n DEPENDENCIES,\n );\n\n const bundleOutputDir = joinPathFragments(\n 'dist',\n project.root,\n 'bundle',\n 'agent',\n name,\n );\n\n let artifact: AgentCoreArtifact;\n\n if (container) {\n // Add the Dockerfile\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'deploy'),\n targetSourceDir,\n {\n distDir,\n name,\n protocol,\n adotVersion:\n TS_VERSIONS[\n '@aws/aws-distro-opentelemetry-node-autoinstrumentation'\n ],\n jaegerVersion: TS_VERSIONS['@opentelemetry/propagator-jaeger'],\n nodeBaseImage: BASE_IMAGES.node,\n ...nodeImageVersions(),\n ...esmVars(tree),\n },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n const dockerTargetName = `${agentTargetPrefix}-docker`;\n\n const fs = new FsCommands(tree, DEPENDENCIES);\n project.targets[dockerTargetName] = normalizeTargetKeyOrder({\n cache: IMAGE_BUILD_CACHE,\n executor: 'nx:run-commands',\n options: {\n commands: [\n fs.cpFile(\n `${targetSourceDir}/Dockerfile`,\n `${bundleOutputDir}/Dockerfile`,\n ),\n `${containers} build --platform linux/arm64 -t ${dockerImageTag} ${bundleOutputDir}`,\n ],\n parallel: false,\n },\n dependsOn: ['bundle'],\n });\n\n addDependencyToTargetIfNotPresent(project, 'docker', dockerTargetName);\n addArtifactDependencyToTargets(project, 'docker');\n\n addDockerScanTarget(\n tree,\n {\n project,\n containerEngine: containers,\n trivyTargetName: `${agentTargetPrefix}-trivy`,\n dockerTargetName,\n imageTags: [dockerImageTag],\n },\n DEPENDENCIES,\n );\n\n artifact = {\n type: 'container',\n dockerImageTag,\n outputDir: bundleOutputDir,\n };\n } else {\n const packageOutputDir = joinPathFragments(\n 'dist',\n project.root,\n 'package',\n 'agent',\n name,\n );\n addTypeScriptCodePackageTarget(\n tree,\n {\n project,\n targetName: `${agentTargetPrefix}-package`,\n bundleTargetName: 'bundle',\n bundleOutputDir,\n packageOutputDir,\n },\n DEPENDENCIES,\n );\n\n artifact = {\n type: 'code',\n outputDir: packageOutputDir,\n runtime: agentCoreNodeRuntime(),\n entryPoint: 'index.js',\n };\n }\n\n // Add shared constructs\n await sharedConstructsGenerator(tree, { iac }, DEPENDENCIES);\n\n // AG-UI uses HTTP as the AgentCore protocol type (AG-UI is HTTP-based with SSE over POST).\n const infraProtocol: 'http' | 'a2a' =\n protocol === 'ag-ui' ? 'http' : (protocol as 'http' | 'a2a');\n\n await addAgentInfra(tree, {\n agentNameKebabCase: name,\n agentNameClassName,\n projectName: project.name,\n artifact,\n iac,\n auth,\n session,\n serverProtocol: infraProtocol,\n containers,\n });\n }\n\n // A2A servers use port 9000 as per the Strands A2A SDK default and AgentCore A2A contract.\n // HTTP and AG-UI agents use port 8081+ to avoid conflict with VS Code server on 8080.\n const localDevPortStart = protocol === 'a2a' ? 9000 : 8081;\n const localDevPort = assignPort(tree, project, localDevPortStart, {\n component: { info: TS_AGENT_GENERATOR_INFO, name: agentTargetPrefix },\n });\n\n // Recorded below and read by the declaration's predicates, so the packages\n // added here are exactly the ones the version sync will own.\n const metadata: TsAgentMetadata = {\n infra,\n port: localDevPort,\n rc: agentNameClassName,\n auth,\n protocol,\n session,\n ...(iac ? { iac } : {}),\n };\n\n addTsDependencies(tree, DEPENDENCIES, {\n metadata,\n projectRoot: project.root,\n });\n\n // Every protocol gets a standalone `chat.ts`. It connects to the local\n // `dev` server by default, or to the deployed agent (with the\n // appropriate auth) when `RUNTIME_CONFIG_APP_ID` is set.\n const scriptsDir = joinPathFragments(\n project.root,\n 'scripts',\n agentTargetPrefix,\n );\n addAgentChatScripts(tree, {\n scriptsDir,\n protocol,\n language: 'ts',\n agentNameClassName,\n auth,\n relativeAgentImport: `../../${targetSourceDirRelativeToProjectRoot}`,\n });\n\n const chatUrl =\n protocol === 'http'\n ? `ws://localhost:${localDevPort}/ws`\n : protocol === 'ag-ui'\n ? `http://localhost:${localDevPort}/invocations`\n : `http://localhost:${localDevPort}`;\n const chatCommand = `tsx ./scripts/${agentTargetPrefix}/chat.ts`;\n\n const agentTargets = {\n ...project.targets,\n [`${agentTargetPrefix}-serve`]: {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n commands: [`tsx --watch ${relativeSourceDir}/index.ts`],\n cwd: '{projectRoot}',\n env: {\n PORT: `${localDevPort}`,\n },\n },\n },\n [`${agentTargetPrefix}-dev`]: {\n executor: 'nx:run-commands',\n continuous: true,\n options: {\n commands: [`tsx --watch ${relativeSourceDir}/index.ts`],\n cwd: '{projectRoot}',\n env: {\n PORT: `${localDevPort}`,\n LOCAL_DEV: 'true',\n },\n },\n },\n [`${agentTargetPrefix}-chat`]: {\n executor: 'nx:run-commands',\n options: {\n commands: [chatCommand],\n cwd: '{projectRoot}',\n env: {\n URL: chatUrl,\n },\n },\n },\n };\n\n // Aggregate `<agent>-dev` under the project-level `dev` target.\n addComponentDevTarget(agentTargets, `${agentTargetPrefix}-dev`);\n\n updateProjectConfiguration(tree, project.name, {\n ...project,\n // Sort targets so their order is stable regardless of insertion order on\n // first run vs re-run.\n targets: sortObjectKeys(agentTargets),\n });\n\n addComponentGeneratorMetadata(\n tree,\n project.name,\n TS_AGENT_GENERATOR_INFO,\n targetSourceDirRelativeToProjectRoot,\n agentTargetPrefix,\n metadata,\n );\n\n await addGeneratorMetricsIfApplicable(tree, [TS_AGENT_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsAgentGenerator;\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateProjectConfiguration","addTsDependencies","addAgentChatScripts","AGENT_CONNECTION_DEPENDENCIES","addTypeScriptFrameworkBase","ensureTypeScriptAgentConnectionProject","AGENT_CORE_CONSTRUCTS_PY_DEPENDENCIES","addAgentInfra","addTypeScriptCodePackageTarget","agentCoreNodeRuntime","CODE_PACKAGE_DEPENDENCIES","isAgentCoreHosted","isContainerHosted","addTypeScriptBundleTarget","BUNDLE_DEPENDENCIES","resolveContainers","declareDependencies","ownedElsewhere","ADOT_IMAGE_DEPENDENCIES","addDockerScanTarget","DOCKER_DEPENDENCIES","IMAGE_BUILD_CACHE","NODE_IMAGE_DEPENDENCIES","nodeImageVersions","formatFilesInSubtree","FS_DEPENDENCIES","FsCommands","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","esmVars","kebabCase","toClassName","getNpmScope","addArtifactDependencyToTargets","addComponentDevTarget","addComponentGeneratorMetadata","addDependencyToTargetIfNotPresent","getGeneratorInfo","normalizeTargetKeyOrder","readProjectConfigurationUnqualified","sortObjectKeys","getRelativePathToRootByDirectory","assignPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","BASE_IMAGES","TS_VERSIONS","DEPENDENCIES","ts","name","when","m","session","protocol","auth","dev","root","py","TS_AGENT_GENERATOR_INFO","filename","tsAgentGenerator","tree","options","project","exists","Error","defaultName","split","pop","agentNameClassName","agentTargetPrefix","targetSourceDirRelativeToProjectRoot","targetSourceDir","relativeSourceDir","replace","distDir","infra","iac","undefined","console","warn","localSessionsDir","templateContext","agentConnectionImport","dirname","overwriteStrategy","KeepExisting","toLowerCase","container","containers","dockerImageTag","targetFilePath","bundleOutputDir","artifact","adotVersion","jaegerVersion","nodeBaseImage","node","dockerTargetName","fs","targets","cache","executor","commands","cpFile","parallel","dependsOn","containerEngine","trivyTargetName","imageTags","type","outputDir","packageOutputDir","targetName","bundleTargetName","runtime","entryPoint","infraProtocol","agentNameKebabCase","projectName","serverProtocol","localDevPortStart","localDevPort","component","info","metadata","port","rc","projectRoot","scriptsDir","language","relativeAgentImport","chatUrl","chatCommand","agentTargets","continuous","cwd","env","PORT","LOCAL_DEV","URL","preferInstallDependencies","languages"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
3
  exports[`ts#agent#mcp-connection generator > should match snapshot for agent-connection src files > agent-connection-index.ts 1`] = `
4
- "export * from './app/inventory-mcp-client-strands.js';
4
+ "// Export your library code here
5
+ export * from './app/inventory-mcp-client-strands.js';
5
6
  export * from './core/tool-errors-strands.js';
6
7
  export * from './core/model-errors-strands.js';
7
8
  export * from './core/with-session-id-strands.js';
8
9
  export * from './core/runtime-config.js';
9
10
  export * from './core/session-context.js';
10
- // Export your library code here
11
11
  "
12
12
  `;
13
13
 
@@ -127,15 +127,7 @@ export declare const DEPENDENCIES: import("../../../utils/declared-dependencies.
127
127
  } & {
128
128
  versionOnly: true;
129
129
  }, Omit<{
130
- readonly name: "clsx";
131
- } & {
132
- versionOnly: true;
133
- }, "when"> & {
134
- when: (m: TsAgentReactConnectionMetadata) => boolean;
135
- } & {
136
- versionOnly: true;
137
- }, Omit<{
138
- readonly name: "tailwind-merge";
130
+ readonly name: "cn";
139
131
  } & {
140
132
  versionOnly: true;
141
133
  }, "when"> & {
@@ -237,7 +237,9 @@ Translate the prose. Everything else is copied from the source exactly as it is:
237
237
  Two things do change:
238
238
 
239
239
  - In frontmatter, translate only \`title\` and \`description\`. Leave every other key and value alone. Frontmatter is YAML, so wrap a value in double quotes whenever it would otherwise begin with a character YAML reserves — for example a title starting with \`@aws/nx-plugin\` must be written as \`"@aws/nx-plugin ..."\`.
240
- - Rewrite link paths that embed the source locale (\`/${config.sourceLanguage}/foo\` becomes \`/${targetLang}/foo\`), and make a \`parentHeading\` match the translated heading it sits under.
240
+ - A \`parentHeading\` matches the translated heading it sits under.
241
+
242
+ One thing that looks like it should change does not: a \`<Link path="...">\` value is locale-agnostic — the component resolves it against the reader's locale — so copy it exactly and never prepend \`${targetLang}\` to it.
241
243
 
242
244
  Write the finished file in one \`create\` call, and never with \`str_replace\` — a partial replacement silently duplicates or splices sections. Do not wrap the file in triple backticks.
243
245
 
@@ -332,6 +334,43 @@ async function restoreCodeBlocks(
332
334
  await fs.writeFile(targetAbsPath, merged.join('\n'), 'utf-8');
333
335
  }
334
336
 
337
+ /**
338
+ * Drop a leading locale segment from every `<Link path>` in the translation.
339
+ *
340
+ * The component resolves `path` against the reader's locale, so a value that
341
+ * already names one renders a doubled segment (`/jp/jp/...`) and 404s. The
342
+ * prompt says to copy these verbatim; this makes it so regardless.
343
+ *
344
+ * Only fenced code is skipped — a snippet demonstrating the component is
345
+ * documentation, not a link to resolve.
346
+ */
347
+ async function stripLocaleFromLinkPaths(
348
+ targetAbsPath: string,
349
+ locales: string[],
350
+ ): Promise<void> {
351
+ const linkPath = new RegExp(
352
+ `(<Link\\b[^>]*?\\bpath=")/?(?:${locales.join('|')})(/|")`,
353
+ 'g',
354
+ );
355
+
356
+ const original = await fs.readFile(targetAbsPath, 'utf-8');
357
+ const { prose, code } = splitOnFences(original);
358
+ const stripped = prose.map((chunk) =>
359
+ chunk.replace(linkPath, (_match, before: string, after: string) =>
360
+ // A bare locale is the locale's landing page, which is the docs root.
361
+ after === '"' ? `${before}"` : `${before}${after}`,
362
+ ),
363
+ );
364
+
365
+ const merged = stripped.flatMap((chunk, i) =>
366
+ i < code.length ? [chunk, code[i]] : [chunk],
367
+ );
368
+ const result = merged.join('\n');
369
+ if (result !== original) {
370
+ await fs.writeFile(targetAbsPath, result, 'utf-8');
371
+ }
372
+ }
373
+
335
374
  /**
336
375
  * Number of times to retry a single (file x language) translation. Large files
337
376
  * occasionally hit transient Bedrock streaming errors; a fresh agent invocation
@@ -344,6 +383,7 @@ const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
344
383
  async function translateFileForLanguage(
345
384
  file: FileToTranslate,
346
385
  targetLang: string,
386
+ locales: string[],
347
387
  ): Promise<void> {
348
388
  const targetAbsPath = path.join(DOCS_DIR, targetLang, file.relativePath);
349
389
 
@@ -384,6 +424,7 @@ async function translateFileForLanguage(
384
424
  try {
385
425
  assertFrontmatterIsParseable(await fs.readFile(targetAbsPath, 'utf-8'));
386
426
  await restoreCodeBlocks(file.sourceAbsPath, targetAbsPath);
427
+ await stripLocaleFromLinkPaths(targetAbsPath, locales);
387
428
  return;
388
429
  } catch (err) {
389
430
  lastError = err;
@@ -510,6 +551,10 @@ async function main() {
510
551
  return;
511
552
  }
512
553
 
554
+ // Every configured locale, not just the requested ones — a `<Link path>` can
555
+ // pick up any of them, whichever languages this run happens to cover.
556
+ const locales = [config.sourceLanguage, ...config.targetLanguages];
557
+
513
558
  // Build one task per (file × target language) — each is a fresh agent invocation,
514
559
  // so context windows stay small no matter how big the docs site is. A single
515
560
  // failing translation records its error rather than aborting the whole run, so
@@ -519,7 +564,7 @@ async function main() {
519
564
  files.map((file) => async () => {
520
565
  log.info(` ${file.relativePath} → ${lang}`);
521
566
  try {
522
- await translateFileForLanguage(file, lang);
567
+ await translateFileForLanguage(file, lang, locales);
523
568
  } catch (err) {
524
569
  log.error(
525
570
  `${file.relativePath} → ${lang}: ${err instanceof Error ? err.message : String(err)}`,
@@ -579,7 +579,7 @@ terraform {
579
579
  required_providers {
580
580
  aws = {
581
581
  source = "hashicorp/aws"
582
- version = "6.62.0"
582
+ version = "6.63.0"
583
583
  }
584
584
  archive = {
585
585
  source = "hashicorp/archive"
@@ -35,7 +35,7 @@ exports[`ts#dynamodb generator > should generate terraform modules when iac is t
35
35
  required_providers {
36
36
  aws = {
37
37
  source = "hashicorp/aws"
38
- version = "6.62.0"
38
+ version = "6.63.0"
39
39
  }
40
40
  }
41
41
  }
@@ -232,7 +232,7 @@ exports[`ts#dynamodb generator > should generate terraform modules when iac is t
232
232
  required_providers {
233
233
  aws = {
234
234
  source = "hashicorp/aws"
235
- version = "6.62.0"
235
+ version = "6.63.0"
236
236
  }
237
237
  random = {
238
238
  source = "hashicorp/random"
@@ -797,7 +797,8 @@ exports[`ts#dynamodb generator > should generate the dynamodb project > packages
797
797
  `;
798
798
 
799
799
  exports[`ts#dynamodb generator > should generate the dynamodb project > packages/my-table/src/index.ts 1`] = `
800
- "export { getDynamoDBClient, resolveTableName } from './client.js';
800
+ "// Export your library code here
801
+ export { getDynamoDBClient, resolveTableName } from './client.js';
801
802
  export * from './entities/index.js';
802
803
  "
803
804
  `;
@@ -1450,7 +1451,8 @@ exports[`ts#dynamodb generator > should generate with infra=none then upgrade to
1450
1451
  `;
1451
1452
 
1452
1453
  exports[`ts#dynamodb generator > should generate with infra=none then upgrade to infra=dynamodb > packages/my-table/src/index.ts 1`] = `
1453
- "export { getDynamoDBClient, resolveTableName } from './client.js';
1454
+ "// Export your library code here
1455
+ export { getDynamoDBClient, resolveTableName } from './client.js';
1454
1456
  export * from './entities/index.js';
1455
1457
  "
1456
1458
  `;
@@ -2,10 +2,12 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */ import { relative } from "node:path";
5
- import { generateFiles, joinPathFragments, readProjectConfiguration, updateProjectConfiguration } from "@nx/devkit";
5
+ import { generateFiles, joinPathFragments, OverwriteStrategy, readProjectConfiguration, updateProjectConfiguration } from "@nx/devkit";
6
6
  import { addTsDependencies } from "../../utils/add-dependencies.js";
7
+ import { addNamedExport, addStarExport } from "../../utils/ast.js";
7
8
  import { resolveContainers } from "../../utils/containers.js";
8
9
  import { declareDependencies, ownedElsewhere } from "../../utils/declared-dependencies.js";
10
+ import { DYNAMODB_LOCAL_IMAGE, writeDynamoDBConfig } from "../../utils/dynamodb-config.js";
9
11
  import { addDynamoDBInfra } from "../../utils/dynamodb-constructs/dynamodb-constructs.js";
10
12
  import { formatFilesInSubtree } from "../../utils/format.js";
11
13
  import { resolveIac } from "../../utils/iac.js";
@@ -83,13 +85,35 @@ export const tsDynamoDBGenerator = async (tree, options)=>{
83
85
  const containerName = `${getNpmScope(tree)}-dynamodb`;
84
86
  const templateOptions = {
85
87
  runtimeConfigKey: nameClassName,
86
- localDynamoDBPort,
87
- localTableName,
88
- containerName,
89
- containerEngine,
90
88
  ...esmVars(tree)
91
89
  };
92
- generateFiles(tree, joinPathFragments(import.meta.dirname, 'files'), dir, templateOptions);
90
+ // The entities and the client are the user's to author — the guide walks
91
+ // through adding entity files under `src/entities` — so a re-run leaves them
92
+ // alone.
93
+ generateFiles(tree, joinPathFragments(import.meta.dirname, 'files'), dir, templateOptions, {
94
+ overwriteStrategy: OverwriteStrategy.KeepExisting
95
+ });
96
+ // The barrels re-export the generated example entity and the client. Adding to
97
+ // whatever is already there registers them without discarding the user's own
98
+ // entity exports on a re-run.
99
+ await addNamedExport(tree, joinPathFragments(dir, 'src', 'entities', 'index.ts'), [
100
+ 'createExampleEntity'
101
+ ], './example.js');
102
+ await addStarExport(tree, joinPathFragments(dir, 'src', 'index.ts'), './entities/index.js');
103
+ await addNamedExport(tree, joinPathFragments(dir, 'src', 'index.ts'), [
104
+ 'getDynamoDBClient',
105
+ 'resolveTableName'
106
+ ], './client.js');
107
+ writeDynamoDBConfig(tree, dir, {
108
+ runtimeConfigKey: nameClassName,
109
+ localDev: {
110
+ port: localDynamoDBPort,
111
+ tableName: localTableName,
112
+ image: DYNAMODB_LOCAL_IMAGE,
113
+ containerName,
114
+ containerEngine
115
+ }
116
+ });
93
117
  await sharedDynamoDBScriptsGenerator(tree, DEPENDENCIES);
94
118
  const scriptsDir = relative(dir, joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'src', 'dynamodb'));
95
119
  projectConfig.targets['pull-image'] = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/dynamodb/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { relative } from 'node:path';\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addTsDependencies } from '../../utils/add-dependencies.js';\nimport { resolveContainers } from '../../utils/containers.js';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies.js';\nimport { addDynamoDBInfra } from '../../utils/dynamodb-constructs/dynamodb-constructs.js';\nimport { formatFilesInSubtree } from '../../utils/format.js';\nimport { resolveIac } from '../../utils/iac.js';\nimport { installDependencies } from '../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics.js';\nimport { esmVars } from '../../utils/module-format.js';\nimport { kebabCase, toClassName } from '../../utils/names.js';\nimport { getNpmScope } from '../../utils/npm-scope.js';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../utils/nx.js';\nimport { assignSharedPort } from '../../utils/port.js';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs.js';\nimport {\n DYNAMODB_GENERATOR_IDS,\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from '../../utils/shared-constructs-constants.js';\nimport {\n SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES,\n sharedDynamoDBScriptsGenerator,\n} from '../../utils/shared-dynamodb-scripts.js';\nimport tsProjectGenerator, { getTsLibDetails } from '../lib/generator.js';\nimport type { TsDynamoDBGeneratorSchema } from './schema';\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [\n { name: '@aws-sdk/client-dynamodb' },\n { name: 'electrodb' },\n { name: '@aws-lambda-powertools/parameters' },\n { name: '@aws-sdk/client-appconfigdata' },\n { name: '@types/aws-lambda', dev: true },\n { name: '@types/node', dev: true },\n // tsx runs the local-dev scripts from the workspace root.\n { name: 'tsx', dev: true, root: true },\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES),\n ],\n});\n\nexport const TS_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsDynamoDBGenerator = async (\n tree: Tree,\n options: TsDynamoDBGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const nameKebabCase = kebabCase(options.name);\n const nameClassName = toClassName(options.name);\n const localTableName = `${getNpmScope(tree)}-${kebabCase(options.tableName ?? options.name)}`;\n const containerEngine = await resolveContainers(tree, 'inherit');\n const { fullyQualifiedName, dir } = getTsLibDetails(tree, {\n name: options.name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n });\n\n let projectExists: boolean;\n try {\n readProjectConfiguration(tree, fullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await tsProjectGenerator(tree, {\n name: options.name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n\n const localDynamoDBPort = assignSharedPort(\n tree,\n projectConfig,\n DYNAMODB_GENERATOR_IDS,\n 8000,\n );\n\n const containerName = `${getNpmScope(tree)}-dynamodb`;\n\n const templateOptions = {\n runtimeConfigKey: nameClassName,\n localDynamoDBPort,\n localTableName,\n containerName,\n containerEngine,\n ...esmVars(tree),\n };\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files'),\n dir,\n templateOptions,\n );\n\n await sharedDynamoDBScriptsGenerator(tree, DEPENDENCIES);\n\n const scriptsDir = relative(\n dir,\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'src', 'dynamodb'),\n );\n\n projectConfig.targets['pull-image'] = {\n executor: 'nx:run-commands',\n options: {\n command: `tsx ${scriptsDir}/pull-image.ts`,\n cwd: '{projectRoot}',\n },\n };\n projectConfig.targets['dev'] = {\n executor: 'nx:run-commands',\n dependsOn: ['pull-image'],\n continuous: true,\n options: {\n commands: [\n `tsx ${scriptsDir}/start-container.ts`,\n `tsx ${scriptsDir}/create-local-table.ts`,\n ],\n parallel: true,\n cwd: '{projectRoot}',\n },\n };\n\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);\n // Recorded so the version sync can tell a CDK project from a Terraform one;\n // undefined when no infrastructure was generated.\n const iac =\n options.infra !== 'none' ? await resolveIac(tree, options.iac) : undefined;\n\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n TS_DYNAMODB_GENERATOR_INFO,\n iac ? { iac } : {},\n );\n\n if (options.infra !== 'none') {\n await sharedConstructsGenerator(tree, { iac }, DEPENDENCIES);\n await addDynamoDBInfra(tree, {\n iac,\n projectName: fullyQualifiedName,\n nameClassName,\n nameKebabCase,\n tableName: localTableName,\n projectRoot: dir,\n });\n }\n\n addTsDependencies(tree, DEPENDENCIES, { projectRoot: dir });\n\n await addGeneratorMetricsIfApplicable(tree, [TS_DYNAMODB_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsDynamoDBGenerator;\n"],"names":["relative","generateFiles","joinPathFragments","readProjectConfiguration","updateProjectConfiguration","addTsDependencies","resolveContainers","declareDependencies","ownedElsewhere","addDynamoDBInfra","formatFilesInSubtree","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","esmVars","kebabCase","toClassName","getNpmScope","addGeneratorMetadata","getGeneratorInfo","assignSharedPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","DYNAMODB_GENERATOR_IDS","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES","sharedDynamoDBScriptsGenerator","tsProjectGenerator","getTsLibDetails","DEPENDENCIES","ts","name","dev","root","TS_DYNAMODB_GENERATOR_INFO","filename","tsDynamoDBGenerator","tree","options","nameKebabCase","nameClassName","localTableName","tableName","containerEngine","fullyQualifiedName","dir","directory","subDirectory","projectExists","preferInstallDependencies","projectConfig","localDynamoDBPort","containerName","templateOptions","runtimeConfigKey","dirname","scriptsDir","targets","executor","command","cwd","dependsOn","continuous","commands","parallel","iac","infra","undefined","projectName","projectRoot","languages"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../packages/nx-plugin/src/ts/dynamodb/generator.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { relative } from 'node:path';\nimport {\n type GeneratorCallback,\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n readProjectConfiguration,\n type Tree,\n updateProjectConfiguration,\n} from '@nx/devkit';\nimport { addTsDependencies } from '../../utils/add-dependencies.js';\nimport { addNamedExport, addStarExport } from '../../utils/ast.js';\nimport { resolveContainers } from '../../utils/containers.js';\nimport {\n declareDependencies,\n ownedElsewhere,\n} from '../../utils/declared-dependencies.js';\nimport {\n DYNAMODB_LOCAL_IMAGE,\n writeDynamoDBConfig,\n} from '../../utils/dynamodb-config.js';\nimport { addDynamoDBInfra } from '../../utils/dynamodb-constructs/dynamodb-constructs.js';\nimport { formatFilesInSubtree } from '../../utils/format.js';\nimport { resolveIac } from '../../utils/iac.js';\nimport { installDependencies } from '../../utils/install.js';\nimport { addGeneratorMetricsIfApplicable } from '../../utils/metrics.js';\nimport { esmVars } from '../../utils/module-format.js';\nimport { kebabCase, toClassName } from '../../utils/names.js';\nimport { getNpmScope } from '../../utils/npm-scope.js';\nimport {\n addGeneratorMetadata,\n getGeneratorInfo,\n type NxGeneratorInfo,\n} from '../../utils/nx.js';\nimport { assignSharedPort } from '../../utils/port.js';\nimport {\n SHARED_CONSTRUCTS_DEPENDENCIES,\n sharedConstructsGenerator,\n} from '../../utils/shared-constructs.js';\nimport {\n DYNAMODB_GENERATOR_IDS,\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from '../../utils/shared-constructs-constants.js';\nimport {\n SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES,\n sharedDynamoDBScriptsGenerator,\n} from '../../utils/shared-dynamodb-scripts.js';\nimport tsProjectGenerator, { getTsLibDetails } from '../lib/generator.js';\nimport type { TsDynamoDBGeneratorSchema } from './schema';\n\nexport const DEPENDENCIES = declareDependencies()({\n ts: [\n { name: '@aws-sdk/client-dynamodb' },\n { name: 'electrodb' },\n { name: '@aws-lambda-powertools/parameters' },\n { name: '@aws-sdk/client-appconfigdata' },\n { name: '@types/aws-lambda', dev: true },\n { name: '@types/node', dev: true },\n // tsx runs the local-dev scripts from the workspace root.\n { name: 'tsx', dev: true, root: true },\n ...ownedElsewhere(SHARED_CONSTRUCTS_DEPENDENCIES),\n ...ownedElsewhere(SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES),\n ],\n});\n\nexport const TS_DYNAMODB_GENERATOR_INFO: NxGeneratorInfo = getGeneratorInfo(\n import.meta.filename,\n);\n\nexport const tsDynamoDBGenerator = async (\n tree: Tree,\n options: TsDynamoDBGeneratorSchema,\n): Promise<GeneratorCallback> => {\n const nameKebabCase = kebabCase(options.name);\n const nameClassName = toClassName(options.name);\n const localTableName = `${getNpmScope(tree)}-${kebabCase(options.tableName ?? options.name)}`;\n const containerEngine = await resolveContainers(tree, 'inherit');\n const { fullyQualifiedName, dir } = getTsLibDetails(tree, {\n name: options.name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n });\n\n let projectExists: boolean;\n try {\n readProjectConfiguration(tree, fullyQualifiedName);\n projectExists = true;\n } catch {\n projectExists = false;\n }\n\n if (!projectExists) {\n await tsProjectGenerator(tree, {\n name: options.name,\n directory: options.directory,\n subDirectory: options.subDirectory,\n preferInstallDependencies: false,\n });\n }\n\n const projectConfig = readProjectConfiguration(tree, fullyQualifiedName);\n\n const localDynamoDBPort = assignSharedPort(\n tree,\n projectConfig,\n DYNAMODB_GENERATOR_IDS,\n 8000,\n );\n\n const containerName = `${getNpmScope(tree)}-dynamodb`;\n\n const templateOptions = {\n runtimeConfigKey: nameClassName,\n ...esmVars(tree),\n };\n\n // The entities and the client are the user's to author — the guide walks\n // through adding entity files under `src/entities` — so a re-run leaves them\n // alone.\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files'),\n dir,\n templateOptions,\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // The barrels re-export the generated example entity and the client. Adding to\n // whatever is already there registers them without discarding the user's own\n // entity exports on a re-run.\n await addNamedExport(\n tree,\n joinPathFragments(dir, 'src', 'entities', 'index.ts'),\n ['createExampleEntity'],\n './example.js',\n );\n await addStarExport(\n tree,\n joinPathFragments(dir, 'src', 'index.ts'),\n './entities/index.js',\n );\n await addNamedExport(\n tree,\n joinPathFragments(dir, 'src', 'index.ts'),\n ['getDynamoDBClient', 'resolveTableName'],\n './client.js',\n );\n\n writeDynamoDBConfig(tree, dir, {\n runtimeConfigKey: nameClassName,\n localDev: {\n port: localDynamoDBPort,\n tableName: localTableName,\n image: DYNAMODB_LOCAL_IMAGE,\n containerName,\n containerEngine,\n },\n });\n\n await sharedDynamoDBScriptsGenerator(tree, DEPENDENCIES);\n\n const scriptsDir = relative(\n dir,\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'src', 'dynamodb'),\n );\n\n projectConfig.targets['pull-image'] = {\n executor: 'nx:run-commands',\n options: {\n command: `tsx ${scriptsDir}/pull-image.ts`,\n cwd: '{projectRoot}',\n },\n };\n projectConfig.targets['dev'] = {\n executor: 'nx:run-commands',\n dependsOn: ['pull-image'],\n continuous: true,\n options: {\n commands: [\n `tsx ${scriptsDir}/start-container.ts`,\n `tsx ${scriptsDir}/create-local-table.ts`,\n ],\n parallel: true,\n cwd: '{projectRoot}',\n },\n };\n\n updateProjectConfiguration(tree, fullyQualifiedName, projectConfig);\n // Recorded so the version sync can tell a CDK project from a Terraform one;\n // undefined when no infrastructure was generated.\n const iac =\n options.infra !== 'none' ? await resolveIac(tree, options.iac) : undefined;\n\n addGeneratorMetadata(\n tree,\n fullyQualifiedName,\n TS_DYNAMODB_GENERATOR_INFO,\n iac ? { iac } : {},\n );\n\n if (options.infra !== 'none') {\n await sharedConstructsGenerator(tree, { iac }, DEPENDENCIES);\n await addDynamoDBInfra(tree, {\n iac,\n projectName: fullyQualifiedName,\n nameClassName,\n nameKebabCase,\n tableName: localTableName,\n projectRoot: dir,\n });\n }\n\n addTsDependencies(tree, DEPENDENCIES, { projectRoot: dir });\n\n await addGeneratorMetricsIfApplicable(tree, [TS_DYNAMODB_GENERATOR_INFO]);\n\n await formatFilesInSubtree(tree);\n return () =>\n installDependencies(tree, options.preferInstallDependencies, {\n languages: ['typescript'],\n });\n};\n\nexport default tsDynamoDBGenerator;\n"],"names":["relative","generateFiles","joinPathFragments","OverwriteStrategy","readProjectConfiguration","updateProjectConfiguration","addTsDependencies","addNamedExport","addStarExport","resolveContainers","declareDependencies","ownedElsewhere","DYNAMODB_LOCAL_IMAGE","writeDynamoDBConfig","addDynamoDBInfra","formatFilesInSubtree","resolveIac","installDependencies","addGeneratorMetricsIfApplicable","esmVars","kebabCase","toClassName","getNpmScope","addGeneratorMetadata","getGeneratorInfo","assignSharedPort","SHARED_CONSTRUCTS_DEPENDENCIES","sharedConstructsGenerator","DYNAMODB_GENERATOR_IDS","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES","sharedDynamoDBScriptsGenerator","tsProjectGenerator","getTsLibDetails","DEPENDENCIES","ts","name","dev","root","TS_DYNAMODB_GENERATOR_INFO","filename","tsDynamoDBGenerator","tree","options","nameKebabCase","nameClassName","localTableName","tableName","containerEngine","fullyQualifiedName","dir","directory","subDirectory","projectExists","preferInstallDependencies","projectConfig","localDynamoDBPort","containerName","templateOptions","runtimeConfigKey","dirname","overwriteStrategy","KeepExisting","localDev","port","image","scriptsDir","targets","executor","command","cwd","dependsOn","continuous","commands","parallel","iac","infra","undefined","projectName","projectRoot","languages"],"mappings":"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"}
@@ -141,7 +141,7 @@ exports[`ts-lambda-function generator > terraform iac > should generate terrafor
141
141
  required_providers {
142
142
  aws = {
143
143
  source = "hashicorp/aws"
144
- version = "6.62.0"
144
+ version = "6.63.0"
145
145
  }
146
146
  archive = {
147
147
  source = "hashicorp/archive"
@@ -326,7 +326,7 @@ exports[`ts-lambda-function generator > terraform iac > should match snapshot fo
326
326
  required_providers {
327
327
  aws = {
328
328
  source = "hashicorp/aws"
329
- version = "6.62.0"
329
+ version = "6.63.0"
330
330
  }
331
331
  archive = {
332
332
  source = "hashicorp/archive"
@@ -2,6 +2,20 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { type Tree } from '@nx/devkit';
5
+ import { type TargetConfiguration, type Tree } from '@nx/devkit';
6
6
  import type { ConfigureProjectOptions } from './types.js';
7
+ /**
8
+ * The `format` and `lint` targets every Biome-linted project gets, so a project
9
+ * that isn't scaffolded by `ts#project` (e.g. an AgentCore Gateway hosting only
10
+ * `local-dev.ts`) is linted identically rather than by its own copy.
11
+ *
12
+ * When there's no root Biome configuration (eg the user removed it), the targets
13
+ * are no-ops rather than failing on a missing config.
14
+ */
15
+ export declare const biomeTargets: (tree: Tree) => Record<"format" | "lint", TargetConfiguration>;
16
+ /**
17
+ * Register the `biome` named input so lint targets are cache-invalidated when
18
+ * the root biome.json changes.
19
+ */
20
+ export declare const registerBiomeNamedInput: (tree: Tree) => void;
7
21
  export declare const configureBiomeLint: (tree: Tree, options: ConfigureProjectOptions) => Promise<void>;