@aws/nx-plugin 1.0.0-rc.7 → 1.0.0-rc.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1358) hide show
  1. package/LICENSE-THIRD-PARTY +7044 -6135
  2. package/README.md +9 -7
  3. package/generators.json +152 -10
  4. package/migrations.json +161 -0
  5. package/package.json +41 -22
  6. package/src/agentcore-gateway/__snapshots__/generator.spec.ts.snap +295 -0
  7. package/src/agentcore-gateway/agent-connection/generator.d.ts +19 -0
  8. package/src/agentcore-gateway/agent-connection/generator.js +95 -0
  9. package/src/agentcore-gateway/agent-connection/generator.js.map +1 -0
  10. package/src/agentcore-gateway/agent-connection/schema.d.js +6 -0
  11. package/src/agentcore-gateway/agent-connection/schema.d.js.map +1 -0
  12. package/src/agentcore-gateway/agent-connection/schema.d.ts +13 -0
  13. package/src/agentcore-gateway/agent-connection/schema.json +31 -0
  14. package/src/agentcore-gateway/attach-upstream.d.ts +49 -0
  15. package/src/agentcore-gateway/attach-upstream.js +59 -0
  16. package/src/agentcore-gateway/attach-upstream.js.map +1 -0
  17. package/src/agentcore-gateway/files/cedar/policies/README.md +61 -0
  18. package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +26 -0
  19. package/src/agentcore-gateway/files/project/http/local-dev.ts.template +77 -0
  20. package/src/agentcore-gateway/files/project/mcp/local-dev.ts.template +134 -0
  21. package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
  22. package/src/agentcore-gateway/gateway-connection/generator.js +103 -0
  23. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
  24. package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
  25. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
  26. package/src/agentcore-gateway/gateway-connection/schema.d.ts +13 -0
  27. package/src/agentcore-gateway/gateway-connection/schema.json +31 -0
  28. package/src/agentcore-gateway/generator.d.ts +89 -0
  29. package/src/agentcore-gateway/generator.js +212 -0
  30. package/src/agentcore-gateway/generator.js.map +1 -0
  31. package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
  32. package/src/agentcore-gateway/mcp-connection/generator.js +61 -0
  33. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
  34. package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
  35. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
  36. package/src/agentcore-gateway/mcp-connection/schema.d.ts +13 -0
  37. package/src/agentcore-gateway/mcp-connection/schema.json +31 -0
  38. package/src/agentcore-gateway/react-connection/__snapshots__/generator.spec.ts.snap +68 -0
  39. package/src/agentcore-gateway/react-connection/generator.d.ts +19 -0
  40. package/src/agentcore-gateway/react-connection/generator.js +119 -0
  41. package/src/agentcore-gateway/react-connection/generator.js.map +1 -0
  42. package/src/agentcore-gateway/react-connection/schema.d.js +6 -0
  43. package/src/agentcore-gateway/react-connection/schema.d.js.map +1 -0
  44. package/src/agentcore-gateway/react-connection/schema.d.ts +13 -0
  45. package/src/agentcore-gateway/react-connection/schema.json +31 -0
  46. package/src/agentcore-gateway/schema.d.js +6 -0
  47. package/src/agentcore-gateway/schema.d.js.map +1 -0
  48. package/src/agentcore-gateway/schema.d.ts +17 -0
  49. package/src/agentcore-gateway/schema.json +72 -0
  50. package/src/agentcore-harness/__snapshots__/generator.spec.ts.snap +238 -0
  51. package/src/agentcore-harness/files/project/README.md.template +83 -0
  52. package/src/agentcore-harness/files/project/scripts/chat.ts.template +99 -0
  53. package/src/agentcore-harness/files/project/src/PROMPT.md.template +16 -0
  54. package/src/agentcore-harness/generator.d.ts +62 -0
  55. package/src/agentcore-harness/generator.js +158 -0
  56. package/src/agentcore-harness/generator.js.map +1 -0
  57. package/src/agentcore-harness/schema.d.js +8 -0
  58. package/src/agentcore-harness/schema.d.js.map +1 -0
  59. package/src/agentcore-harness/schema.d.ts +17 -0
  60. package/src/agentcore-harness/schema.json +53 -0
  61. package/src/connection/agent-local-dev.d.ts +49 -0
  62. package/src/connection/agent-local-dev.js +84 -0
  63. package/src/connection/agent-local-dev.js.map +1 -0
  64. package/src/connection/agent-runtime-config.js +9 -14
  65. package/src/connection/agent-runtime-config.js.map +1 -1
  66. package/src/connection/gateway-runtime-config.d.ts +19 -0
  67. package/src/connection/gateway-runtime-config.js +47 -0
  68. package/src/connection/gateway-runtime-config.js.map +1 -0
  69. package/src/connection/generator.d.ts +3 -10
  70. package/src/connection/generator.js +172 -194
  71. package/src/connection/generator.js.map +1 -1
  72. package/src/connection/{serve-local.d.ts → local-dev.d.ts} +3 -3
  73. package/src/connection/local-dev.js +37 -0
  74. package/src/connection/local-dev.js.map +1 -0
  75. package/src/connection/scaffold-catalog.d.ts +267 -0
  76. package/src/connection/scaffold-catalog.js +347 -0
  77. package/src/connection/scaffold-catalog.js.map +1 -0
  78. package/src/connection/schema-resolver.d.ts +5 -0
  79. package/src/connection/schema-resolver.js +27 -0
  80. package/src/connection/schema-resolver.js.map +1 -0
  81. package/src/connection/schema.d.js +6 -0
  82. package/src/connection/schema.d.js.map +1 -0
  83. package/src/connection/schema.d.ts +1 -0
  84. package/src/connection/schema.json +5 -0
  85. package/src/connection/supported-connections.d.ts +116 -0
  86. package/src/connection/supported-connections.js +163 -0
  87. package/src/connection/supported-connections.js.map +1 -0
  88. package/src/index.js +2 -5
  89. package/src/index.js.map +1 -1
  90. package/src/infra/app/__snapshots__/generator.spec.ts.snap +119 -72
  91. package/src/infra/app/files/app/README.md.template +8 -4
  92. package/src/infra/app/files/app/src/main.ts.template +5 -1
  93. package/src/infra/app/files/app/src/stages/application-stage.ts.template +1 -1
  94. package/src/infra/app/generator.d.ts +43 -0
  95. package/src/infra/app/generator.js +195 -127
  96. package/src/infra/app/generator.js.map +1 -1
  97. package/src/infra/app/schema.d.js +6 -0
  98. package/src/infra/app/schema.d.js.map +1 -0
  99. package/src/infra/app/schema.d.ts +1 -1
  100. package/src/infra/app/schema.json +5 -0
  101. package/src/init/generator.d.ts +31 -0
  102. package/src/init/generator.js +46 -0
  103. package/src/init/generator.js.map +1 -0
  104. package/src/init/schema.d.js +6 -0
  105. package/src/init/schema.d.js.map +1 -0
  106. package/src/init/schema.d.ts +16 -0
  107. package/src/init/schema.json +35 -0
  108. package/src/internal/test-matrix/generator.d.ts +29 -0
  109. package/src/internal/test-matrix/generator.js +698 -0
  110. package/src/internal/test-matrix/generator.js.map +1 -0
  111. package/src/internal/test-matrix/schema.d.js +6 -0
  112. package/src/internal/test-matrix/schema.d.js.map +1 -0
  113. package/src/internal/test-matrix/schema.d.ts +12 -0
  114. package/src/internal/test-matrix/schema.json +21 -0
  115. package/src/license/config-types.js +5 -3
  116. package/src/license/config-types.js.map +1 -1
  117. package/src/license/config.d.ts +1 -1
  118. package/src/license/config.js +267 -242
  119. package/src/license/config.js.map +1 -1
  120. package/src/license/dependency-check/check.js +51 -46
  121. package/src/license/dependency-check/check.js.map +1 -1
  122. package/src/license/dependency-check/collectors/collector.js +41 -71
  123. package/src/license/dependency-check/collectors/collector.js.map +1 -1
  124. package/src/license/dependency-check/collectors/npm-collector.js +34 -41
  125. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -1
  126. package/src/license/dependency-check/collectors/python-collector.js +55 -62
  127. package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
  128. package/src/license/dependency-check/evaluator.js +40 -68
  129. package/src/license/dependency-check/evaluator.js.map +1 -1
  130. package/src/license/dependency-check/executor.js +30 -22
  131. package/src/license/dependency-check/executor.js.map +1 -1
  132. package/src/license/dependency-check/pre-approved.js +949 -336
  133. package/src/license/dependency-check/pre-approved.js.map +1 -1
  134. package/src/license/dependency-check/types.js +2 -3
  135. package/src/license/dependency-check/types.js.map +1 -1
  136. package/src/license/generator.js +65 -68
  137. package/src/license/generator.js.map +1 -1
  138. package/src/license/index.js +3 -9
  139. package/src/license/index.js.map +1 -1
  140. package/src/license/known-exceptions.d.ts +1 -1
  141. package/src/license/known-exceptions.js +19 -13
  142. package/src/license/known-exceptions.js.map +1 -1
  143. package/src/license/schema.d.js +6 -0
  144. package/src/license/schema.d.js.map +1 -0
  145. package/src/license/schema.d.ts +2 -0
  146. package/src/license/schema.json +5 -0
  147. package/src/license/sync/generator.js +94 -119
  148. package/src/license/sync/generator.js.map +1 -1
  149. package/src/license/sync/project-file-sync.js +28 -35
  150. package/src/license/sync/project-file-sync.js.map +1 -1
  151. package/src/mcp-server/dev-server.d.ts +1 -0
  152. package/src/mcp-server/dev-server.js +18 -0
  153. package/src/mcp-server/dev-server.js.map +1 -0
  154. package/src/mcp-server/generator-info.js +149 -165
  155. package/src/mcp-server/generator-info.js.map +1 -1
  156. package/src/mcp-server/guide-pipeline.js +199 -206
  157. package/src/mcp-server/guide-pipeline.js.map +1 -1
  158. package/src/mcp-server/guide-render.js +10 -25
  159. package/src/mcp-server/guide-render.js.map +1 -1
  160. package/src/mcp-server/index.js +6 -10
  161. package/src/mcp-server/index.js.map +1 -1
  162. package/src/mcp-server/mdx-ast.js +39 -57
  163. package/src/mcp-server/mdx-ast.js.map +1 -1
  164. package/src/mcp-server/option-filter.js +33 -47
  165. package/src/mcp-server/option-filter.js.map +1 -1
  166. package/src/mcp-server/schema-registry.d.ts +9 -3
  167. package/src/mcp-server/schema-registry.js +41 -38
  168. package/src/mcp-server/schema-registry.js.map +1 -1
  169. package/src/mcp-server/schema.d.ts +1 -1
  170. package/src/mcp-server/schema.js +9 -7
  171. package/src/mcp-server/schema.js.map +1 -1
  172. package/src/mcp-server/server.js +24 -24
  173. package/src/mcp-server/server.js.map +1 -1
  174. package/src/mcp-server/tools/add-to-existing-project.d.ts +12 -0
  175. package/src/mcp-server/tools/add-to-existing-project.js +36 -0
  176. package/src/mcp-server/tools/add-to-existing-project.js.map +1 -0
  177. package/src/mcp-server/tools/create-workspace-command.js +23 -24
  178. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  179. package/src/mcp-server/tools/general-guidance.d.ts +1 -1
  180. package/src/mcp-server/tools/general-guidance.js +55 -32
  181. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  182. package/src/mcp-server/tools/generator-guide.js +29 -37
  183. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  184. package/src/mcp-server/tools/list-generators.js +19 -25
  185. package/src/mcp-server/tools/list-generators.js.map +1 -1
  186. package/src/mcp-server/tools/upgrade-workspace.d.ts +11 -0
  187. package/src/mcp-server/tools/upgrade-workspace.js +32 -0
  188. package/src/mcp-server/tools/upgrade-workspace.js.map +1 -0
  189. package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/metadata.json +3 -0
  190. package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.d.ts +6 -0
  191. package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.js +329 -0
  192. package/src/migrations/latest/py-agent-a2a-httpx-client-per-call/migration.js.map +1 -0
  193. package/src/migrations/latest/py-agent-a2a-lifespan-construction/metadata.json +3 -0
  194. package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.d.ts +6 -0
  195. package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.js +234 -0
  196. package/src/migrations/latest/py-agent-a2a-lifespan-construction/migration.js.map +1 -0
  197. package/src/migrations/latest/smithy-server-package-rename/metadata.json +3 -0
  198. package/src/migrations/latest/smithy-server-package-rename/migration.d.ts +6 -0
  199. package/src/migrations/latest/smithy-server-package-rename/migration.js +123 -0
  200. package/src/migrations/latest/smithy-server-package-rename/migration.js.map +1 -0
  201. package/src/migrations/latest/translate-script-whole-file-writes/files/build-system-prompt.ts.fixture +23 -0
  202. package/src/migrations/latest/translate-script-whole-file-writes/files/build-user-prompt.ts.fixture +96 -0
  203. package/src/migrations/latest/translate-script-whole-file-writes/files/config-path.ts.fixture +1 -0
  204. package/src/migrations/latest/translate-script-whole-file-writes/files/file-to-translate.ts.fixture +10 -0
  205. package/src/migrations/latest/translate-script-whole-file-writes/files/get-files-to-translate.ts.fixture +96 -0
  206. package/src/migrations/latest/translate-script-whole-file-writes/files/header.ts.fixture +15 -0
  207. package/src/migrations/latest/translate-script-whole-file-writes/files/log.ts.fixture +18 -0
  208. package/src/migrations/latest/translate-script-whole-file-writes/files/main-call.ts.fixture +6 -0
  209. package/src/migrations/latest/translate-script-whole-file-writes/files/main.ts.fixture +79 -0
  210. package/src/migrations/latest/translate-script-whole-file-writes/files/project-root.ts.fixture +1 -0
  211. package/src/migrations/latest/translate-script-whole-file-writes/files/run-with-concurrency.ts.fixture +57 -0
  212. package/src/migrations/latest/translate-script-whole-file-writes/files/scripts-dir.ts.fixture +1 -0
  213. package/src/migrations/latest/translate-script-whole-file-writes/files/translate-file-for-language.ts.fixture +61 -0
  214. package/src/migrations/latest/translate-script-whole-file-writes/grit/already-migrated.grit +1 -0
  215. package/src/migrations/latest/translate-script-whole-file-writes/grit/build-system-prompt.grit +6 -0
  216. package/src/migrations/latest/translate-script-whole-file-writes/grit/build-user-prompt.grit +6 -0
  217. package/src/migrations/latest/translate-script-whole-file-writes/grit/config-path.grit +1 -0
  218. package/src/migrations/latest/translate-script-whole-file-writes/grit/file-to-translate.grit +11 -0
  219. package/src/migrations/latest/translate-script-whole-file-writes/grit/get-files-to-translate.grit +7 -0
  220. package/src/migrations/latest/translate-script-whole-file-writes/grit/log.grit +3 -0
  221. package/src/migrations/latest/translate-script-whole-file-writes/grit/main-call.grit +1 -0
  222. package/src/migrations/latest/translate-script-whole-file-writes/grit/main.grit +8 -0
  223. package/src/migrations/latest/translate-script-whole-file-writes/grit/project-root.grit +1 -0
  224. package/src/migrations/latest/translate-script-whole-file-writes/grit/run-with-concurrency.grit +6 -0
  225. package/src/migrations/latest/translate-script-whole-file-writes/grit/translate-file-for-language.grit +6 -0
  226. package/src/migrations/latest/translate-script-whole-file-writes/metadata.json +3 -0
  227. package/src/migrations/latest/translate-script-whole-file-writes/migration.d.ts +2 -0
  228. package/src/migrations/latest/translate-script-whole-file-writes/migration.js +103 -0
  229. package/src/migrations/latest/translate-script-whole-file-writes/migration.js.map +1 -0
  230. package/src/migrations/latest/translate-script-whole-file-writes/test-fixtures/released-script-first.ts.fixture +430 -0
  231. package/src/migrations/latest/translate-script-whole-file-writes/test-fixtures/released-script.ts.fixture +431 -0
  232. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/metadata.json +3 -0
  233. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.d.ts +6 -0
  234. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js +65 -0
  235. package/src/migrations/v1.0.0-rc.50/0001-modernize-function-props-cast/migration.js.map +1 -0
  236. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/metadata.json +3 -0
  237. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.d.ts +6 -0
  238. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js +108 -0
  239. package/src/migrations/v1.0.0-rc.50/0002-restrict-cors-to-custom-domains/migration.js.map +1 -0
  240. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/metadata.json +3 -0
  241. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.d.ts +6 -0
  242. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js +128 -0
  243. package/src/migrations/v1.0.0-rc.50/0003-terraform-bootstrap-adopt-existing-bucket/migration.js.map +1 -0
  244. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/metadata.json +3 -0
  245. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.d.ts +6 -0
  246. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js +215 -0
  247. package/src/migrations/v1.0.0-rc.52/0001-user-identity-waf-allow-localhost-callback/migration.js.map +1 -0
  248. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/metadata.json +3 -0
  249. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.d.ts +6 -0
  250. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js +93 -0
  251. package/src/migrations/v1.0.0-rc.54/0001-order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
  252. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/metadata.json +3 -0
  253. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.d.ts +96 -0
  254. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js +670 -0
  255. package/src/migrations/v1.0.0-rc.55/0001-backfill-generator-metadata/migration.js.map +1 -0
  256. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/metadata.json +3 -0
  257. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.d.ts +6 -0
  258. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js +89 -0
  259. package/src/migrations/v1.0.0-rc.56/0001-dynamodb-local-remove-optimize-flag/migration.js.map +1 -0
  260. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/metadata.json +3 -0
  261. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.d.ts +6 -0
  262. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js +449 -0
  263. package/src/migrations/v1.0.0-rc.57/0001-ts-agent-session-management-support/migration.js.map +1 -0
  264. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/metadata.json +3 -0
  265. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.d.ts +6 -0
  266. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js +78 -0
  267. package/src/migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/migration.js.map +1 -0
  268. package/src/{smithy/project/files/build.Dockerfile.template → migrations/v1.0.0-rc.58/0001-smithy-ssdk-bundle-pins/rc57-service.Dockerfile.fixture} +1 -4
  269. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/__snapshots__/migration.spec.ts.snap +223 -0
  270. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/metadata.json +3 -0
  271. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.d.ts +6 -0
  272. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js +217 -0
  273. package/src/migrations/v1.0.0-rc.59/0001-gateway-agent-targets/migration.js.map +1 -0
  274. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/__snapshots__/migration.spec.ts.snap +149 -0
  275. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/metadata.json +3 -0
  276. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.d.ts +6 -0
  277. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js +195 -0
  278. package/src/migrations/v1.0.0-rc.60/0001-gateway-cognito-passthrough/migration.js.map +1 -0
  279. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/__snapshots__/migration.spec.ts.snap +57 -0
  280. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/metadata.json +3 -0
  281. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.d.ts +6 -0
  282. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js +77 -0
  283. package/src/migrations/v1.0.0-rc.60/0002-waf-log-group-removal/migration.js.map +1 -0
  284. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/__snapshots__/migration.spec.ts.snap +48 -0
  285. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/metadata.json +3 -0
  286. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.d.ts +6 -0
  287. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js +91 -0
  288. package/src/migrations/v1.0.0-rc.60/0003-strip-pip-from-python-images/migration.js.map +1 -0
  289. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/metadata.json +3 -0
  290. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.d.ts +6 -0
  291. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js +412 -0
  292. package/src/migrations/v1.0.0-rc.61/0001-py-agent-lifespan-construction/migration.js.map +1 -0
  293. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/metadata.json +3 -0
  294. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.d.ts +6 -0
  295. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js +33 -0
  296. package/src/migrations/v1.0.0-rc.62/0001-rename-load-runtime-config-target/migration.js.map +1 -0
  297. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/metadata.json +3 -0
  298. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.d.ts +6 -0
  299. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js +83 -0
  300. package/src/migrations/v1.0.0-rc.63/0001-add-deploy-sandbox-target/migration.js.map +1 -0
  301. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/legacy-service.Dockerfile.fixture +95 -0
  302. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/metadata.json +3 -0
  303. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.d.ts +6 -0
  304. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js +154 -0
  305. package/src/migrations/v1.0.0-rc.64/0001-smithy-build-without-docker/migration.js.map +1 -0
  306. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/metadata.json +3 -0
  307. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.d.ts +6 -0
  308. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js +71 -0
  309. package/src/migrations/v1.0.0-rc.65/0001-vite-config-import-meta-dirname/migration.js.map +1 -0
  310. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/metadata.json +3 -0
  311. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.d.ts +6 -0
  312. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js +57 -0
  313. package/src/migrations/v1.0.0-rc.65/0002-rolldown-code-splitting/migration.js.map +1 -0
  314. package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +147 -33
  315. package/src/open-api/ts-client/__snapshots__/generator.arrays.spec.ts.snap +308 -75
  316. package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +298 -74
  317. package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +748 -103
  318. package/src/open-api/ts-client/__snapshots__/generator.content-type.spec.ts.snap +230 -37
  319. package/src/open-api/ts-client/__snapshots__/generator.duplicate-types.spec.ts.snap +249 -52
  320. package/src/open-api/ts-client/__snapshots__/generator.edge-cases.spec.ts.snap +5535 -0
  321. package/src/open-api/ts-client/__snapshots__/generator.fast-api-gaps.spec.ts.snap +736 -0
  322. package/src/open-api/ts-client/__snapshots__/generator.fast-api.spec.ts.snap +305 -71
  323. package/src/open-api/ts-client/__snapshots__/generator.multipart.spec.ts.snap +298 -0
  324. package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +353 -82
  325. package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +176 -55
  326. package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +100 -24
  327. package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +147 -33
  328. package/src/open-api/ts-client/__snapshots__/generator.spec-compliance.spec.ts.snap +1883 -0
  329. package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +392 -88
  330. package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +200 -48
  331. package/src/open-api/ts-client/files/client.gen.ts.template +358 -24
  332. package/src/open-api/ts-client/files/types.gen.ts.template +6 -4
  333. package/src/open-api/ts-client/generator.js +41 -26
  334. package/src/open-api/ts-client/generator.js.map +1 -1
  335. package/src/open-api/ts-client/schema.d.js +6 -0
  336. package/src/open-api/ts-client/schema.d.js.map +1 -0
  337. package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +7 -2
  338. package/src/open-api/ts-hooks/generator.js +17 -21
  339. package/src/open-api/ts-hooks/generator.js.map +1 -1
  340. package/src/open-api/ts-hooks/generator.spec.tsx +70 -0
  341. package/src/open-api/ts-hooks/schema.d.js +6 -0
  342. package/src/open-api/ts-hooks/schema.d.js.map +1 -0
  343. package/src/open-api/ts-metadata/generator.js +12 -20
  344. package/src/open-api/ts-metadata/generator.js.map +1 -1
  345. package/src/open-api/ts-metadata/schema.d.js +6 -0
  346. package/src/open-api/ts-metadata/schema.d.js.map +1 -0
  347. package/src/open-api/utils/codegen-data/languages.d.ts +0 -6
  348. package/src/open-api/utils/codegen-data/languages.js +59 -66
  349. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  350. package/src/open-api/utils/codegen-data/types.d.ts +255 -10
  351. package/src/open-api/utils/codegen-data/types.js +54 -30
  352. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  353. package/src/open-api/utils/codegen-data.d.ts +2 -2
  354. package/src/open-api/utils/codegen-data.js +494 -674
  355. package/src/open-api/utils/codegen-data.js.map +1 -1
  356. package/src/open-api/utils/normalise.js +437 -246
  357. package/src/open-api/utils/normalise.js.map +1 -1
  358. package/src/open-api/utils/parse.js +8 -14
  359. package/src/open-api/utils/parse.js.map +1 -1
  360. package/src/open-api/utils/parser.d.ts +55 -0
  361. package/src/open-api/utils/parser.js +787 -0
  362. package/src/open-api/utils/parser.js.map +1 -0
  363. package/src/open-api/utils/refs.js +12 -22
  364. package/src/open-api/utils/refs.js.map +1 -1
  365. package/src/open-api/utils/types.d.ts +18 -0
  366. package/src/open-api/utils/types.js +5 -2
  367. package/src/open-api/utils/types.js.map +1 -1
  368. package/src/preset/__snapshots__/generator.spec.ts.snap +101 -20
  369. package/src/preset/generator.d.ts +14 -1
  370. package/src/preset/generator.js +76 -151
  371. package/src/preset/generator.js.map +1 -1
  372. package/src/preset/schema.d.js +6 -0
  373. package/src/preset/schema.d.js.map +1 -0
  374. package/src/preset/schema.d.ts +4 -1
  375. package/src/preset/schema.json +16 -5
  376. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +326 -0
  377. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +738 -0
  378. package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.protocols.spec.ts.snap} +191 -315
  379. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +231 -0
  380. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +29 -0
  381. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +29 -0
  382. package/src/py/agent/a2a-connection/generator.d.ts +24 -0
  383. package/src/py/agent/a2a-connection/generator.js +145 -88
  384. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  385. package/src/py/agent/a2a-connection/schema.d.js +8 -0
  386. package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
  387. package/src/py/agent/a2a-connection/schema.d.ts +1 -0
  388. package/src/py/agent/a2a-connection/schema.json +5 -0
  389. package/src/py/agent/files/deploy/Dockerfile.template +8 -1
  390. package/src/py/agent/files/langchain/a2a/main.py.template +94 -0
  391. package/src/py/agent/files/langchain/ag-ui/main.py.template +87 -0
  392. package/src/py/agent/files/langchain/common/agent.py.template +30 -0
  393. package/src/py/agent/files/{http → langchain/http}/init.py.template +17 -25
  394. package/src/py/agent/files/langchain/http/main.py.template +81 -0
  395. package/src/py/agent/files/{a2a → strands/a2a}/main.py.template +33 -15
  396. package/src/py/agent/files/strands/ag-ui/main.py.template +89 -0
  397. package/src/py/agent/files/{common → strands/common}/agent.py.template +2 -0
  398. package/src/py/agent/files/strands/http/init.py.template +97 -0
  399. package/src/py/agent/files/{http → strands/http}/main.py.template +4 -13
  400. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +184 -0
  401. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
  402. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +34 -0
  403. package/src/py/agent/gateway-connection/generator.d.ts +33 -0
  404. package/src/py/agent/gateway-connection/generator.js +153 -0
  405. package/src/py/agent/gateway-connection/generator.js.map +1 -0
  406. package/src/py/agent/gateway-connection/schema.d.js +6 -0
  407. package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
  408. package/src/py/agent/gateway-connection/schema.d.ts +13 -0
  409. package/src/py/agent/gateway-connection/schema.json +31 -0
  410. package/src/py/agent/generator.d.ts +154 -1
  411. package/src/py/agent/generator.js +396 -197
  412. package/src/py/agent/generator.js.map +1 -1
  413. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +154 -89
  414. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +31 -0
  415. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +31 -0
  416. package/src/py/agent/mcp-connection/generator.d.ts +23 -0
  417. package/src/py/agent/mcp-connection/generator.js +103 -130
  418. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  419. package/src/py/agent/mcp-connection/schema.d.js +8 -0
  420. package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
  421. package/src/py/agent/mcp-connection/schema.d.ts +1 -0
  422. package/src/py/agent/mcp-connection/schema.json +5 -0
  423. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +17 -19
  424. package/src/py/agent/react-connection/generator.d.ts +150 -1
  425. package/src/py/agent/react-connection/generator.js +105 -65
  426. package/src/py/agent/react-connection/generator.js.map +1 -1
  427. package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +4 -4
  428. package/src/py/agent/react-connection/local-dev.js +36 -0
  429. package/src/py/agent/react-connection/local-dev.js.map +1 -0
  430. package/src/py/agent/react-connection/schema.d.js +8 -0
  431. package/src/py/agent/react-connection/schema.d.js.map +1 -0
  432. package/src/py/agent/react-connection/schema.d.ts +1 -0
  433. package/src/py/agent/react-connection/schema.json +5 -0
  434. package/src/py/agent/schema.d.js +6 -0
  435. package/src/py/agent/schema.d.js.map +1 -0
  436. package/src/py/agent/schema.d.ts +5 -1
  437. package/src/py/agent/schema.json +15 -1
  438. package/src/py/api/generator.js +12 -11
  439. package/src/py/api/generator.js.map +1 -1
  440. package/src/py/api/schema.d.js +6 -0
  441. package/src/py/api/schema.d.js.map +1 -0
  442. package/src/py/api/schema.d.ts +1 -0
  443. package/src/py/api/schema.json +5 -0
  444. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1520 -0
  445. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +63 -0
  446. package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
  447. package/src/py/dynamodb/agent-connection/generator.js +45 -0
  448. package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
  449. package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
  450. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
  451. package/src/py/dynamodb/agent-connection/schema.d.ts +15 -0
  452. package/src/py/dynamodb/agent-connection/schema.json +27 -0
  453. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +32 -0
  454. package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
  455. package/src/py/dynamodb/fast-api-connection/generator.js +39 -0
  456. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
  457. package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
  458. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
  459. package/src/py/dynamodb/fast-api-connection/schema.d.ts +13 -0
  460. package/src/py/dynamodb/fast-api-connection/schema.json +23 -0
  461. package/src/py/dynamodb/files/__name__/__init__.py.template +6 -0
  462. package/src/py/dynamodb/files/__name__/client.py.template +39 -0
  463. package/src/py/dynamodb/files/__name__/entities/__init__.py.template +4 -0
  464. package/src/py/dynamodb/files/__name__/entities/base.py.template +63 -0
  465. package/src/py/dynamodb/files/__name__/entities/example.py.template +64 -0
  466. package/src/py/dynamodb/files/config.json.template +24 -0
  467. package/src/py/dynamodb/generator.d.ts +39 -0
  468. package/src/py/dynamodb/generator.js +130 -0
  469. package/src/py/dynamodb/generator.js.map +1 -0
  470. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +63 -0
  471. package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
  472. package/src/py/dynamodb/mcp-server-connection/generator.js +45 -0
  473. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
  474. package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
  475. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  476. package/src/py/dynamodb/mcp-server-connection/schema.d.ts +15 -0
  477. package/src/py/dynamodb/mcp-server-connection/schema.json +27 -0
  478. package/src/py/dynamodb/schema.d.js +6 -0
  479. package/src/py/dynamodb/schema.d.js.map +1 -0
  480. package/src/py/dynamodb/schema.d.ts +16 -0
  481. package/src/py/dynamodb/schema.json +76 -0
  482. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +240 -4693
  483. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +5409 -0
  484. package/src/py/fast-api/files/app/__name__/init.py.template +5 -22
  485. package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
  486. package/src/py/fast-api/generator.d.ts +72 -0
  487. package/src/py/fast-api/generator.js +134 -95
  488. package/src/py/fast-api/generator.js.map +1 -1
  489. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +4 -3
  490. package/src/py/fast-api/react/generator.d.ts +16 -1
  491. package/src/py/fast-api/react/generator.js +38 -26
  492. package/src/py/fast-api/react/generator.js.map +1 -1
  493. package/src/py/fast-api/react/open-api.js +31 -29
  494. package/src/py/fast-api/react/open-api.js.map +1 -1
  495. package/src/py/fast-api/react/schema.d.js +6 -0
  496. package/src/py/fast-api/react/schema.d.js.map +1 -0
  497. package/src/py/fast-api/react/schema.d.ts +1 -0
  498. package/src/py/fast-api/react/schema.json +5 -0
  499. package/src/py/fast-api/schema.d.js +6 -0
  500. package/src/py/fast-api/schema.d.js.map +1 -0
  501. package/src/py/fast-api/schema.d.ts +1 -0
  502. package/src/py/fast-api/schema.json +6 -0
  503. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  504. package/src/py/lambda-function/generator.d.ts +21 -0
  505. package/src/py/lambda-function/generator.js +82 -62
  506. package/src/py/lambda-function/generator.js.map +1 -1
  507. package/src/py/lambda-function/schema.d.js +6 -0
  508. package/src/py/lambda-function/schema.d.js.map +1 -0
  509. package/src/py/lambda-function/schema.d.ts +1 -0
  510. package/src/py/lambda-function/schema.json +5 -0
  511. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +221 -21
  512. package/src/py/mcp-server/files/deploy/Dockerfile.template +8 -1
  513. package/src/py/mcp-server/generator.d.ts +68 -0
  514. package/src/py/mcp-server/generator.js +204 -131
  515. package/src/py/mcp-server/generator.js.map +1 -1
  516. package/src/py/mcp-server/schema.d.js +6 -0
  517. package/src/py/mcp-server/schema.d.js.map +1 -0
  518. package/src/py/mcp-server/schema.d.ts +1 -0
  519. package/src/py/mcp-server/schema.json +6 -0
  520. package/src/py/project/generator.d.ts +27 -1
  521. package/src/py/project/generator.js +248 -130
  522. package/src/py/project/generator.js.map +1 -1
  523. package/src/py/project/schema.d.js +6 -0
  524. package/src/py/project/schema.d.js.map +1 -0
  525. package/src/py/project/schema.d.ts +1 -0
  526. package/src/py/project/schema.json +5 -0
  527. package/src/py/rdb/__snapshots__/generator.spec.ts.snap +2070 -0
  528. package/src/py/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +123 -0
  529. package/src/py/rdb/agent-connection/generator.d.ts +10 -0
  530. package/src/py/rdb/agent-connection/generator.js +52 -0
  531. package/src/py/rdb/agent-connection/generator.js.map +1 -0
  532. package/src/py/rdb/agent-connection/schema.d.js +8 -0
  533. package/src/py/rdb/agent-connection/schema.d.js.map +1 -0
  534. package/src/py/rdb/agent-connection/schema.d.ts +15 -0
  535. package/src/py/rdb/agent-connection/schema.json +27 -0
  536. package/src/py/rdb/fast-api-connection/__snapshots__/generator.spec.ts.snap +51 -0
  537. package/src/py/rdb/fast-api-connection/files/__apiModuleName__/dependencies/__rdbNameSnake__.py.template +14 -0
  538. package/src/py/rdb/fast-api-connection/generator.d.ts +10 -0
  539. package/src/py/rdb/fast-api-connection/generator.js +56 -0
  540. package/src/py/rdb/fast-api-connection/generator.js.map +1 -0
  541. package/src/py/rdb/fast-api-connection/schema.d.js +8 -0
  542. package/src/py/rdb/fast-api-connection/schema.d.js.map +1 -0
  543. package/src/py/rdb/fast-api-connection/schema.d.ts +13 -0
  544. package/src/py/rdb/fast-api-connection/schema.json +23 -0
  545. package/src/py/rdb/files/Dockerfile.create-db-user.template +14 -0
  546. package/src/py/rdb/files/Dockerfile.migration.template +14 -0
  547. package/src/py/rdb/files/__name__/__init__.py.template +3 -0
  548. package/src/py/rdb/files/__name__/connection.py.template +55 -0
  549. package/src/py/rdb/files/__name__/create_db_user_handler.py.template +97 -0
  550. package/src/py/rdb/files/__name__/migration_handler.py.template +36 -0
  551. package/src/py/rdb/files/__name__/models/__init__.py.template +3 -0
  552. package/src/py/rdb/files/__name__/models/example.py.template +8 -0
  553. package/src/py/rdb/files/__name__/utils.py.template +104 -0
  554. package/src/py/rdb/files/alembic.ini.template +38 -0
  555. package/src/py/rdb/files/config.json.template +14 -0
  556. package/src/py/rdb/files/migrations/env.py.template +80 -0
  557. package/src/py/rdb/files/migrations/script.py.mako.template +28 -0
  558. package/src/py/rdb/generator.d.ts +103 -0
  559. package/src/py/rdb/generator.js +328 -0
  560. package/src/py/rdb/generator.js.map +1 -0
  561. package/src/py/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +119 -0
  562. package/src/py/rdb/mcp-server-connection/generator.d.ts +10 -0
  563. package/src/py/rdb/mcp-server-connection/generator.js +52 -0
  564. package/src/py/rdb/mcp-server-connection/generator.js.map +1 -0
  565. package/src/py/rdb/mcp-server-connection/schema.d.js +8 -0
  566. package/src/py/rdb/mcp-server-connection/schema.d.js.map +1 -0
  567. package/src/py/rdb/mcp-server-connection/schema.d.ts +15 -0
  568. package/src/py/rdb/mcp-server-connection/schema.json +27 -0
  569. package/src/py/rdb/schema.d.js +6 -0
  570. package/src/py/rdb/schema.d.js.map +1 -0
  571. package/src/py/rdb/schema.d.ts +16 -0
  572. package/src/py/rdb/schema.json +78 -0
  573. package/src/py/rdb/utils.d.ts +6 -0
  574. package/src/py/rdb/utils.js +16 -0
  575. package/src/py/rdb/utils.js.map +1 -0
  576. package/src/sdk/agentcore-gateway.d.ts +6 -0
  577. package/src/sdk/agentcore-gateway.js +7 -0
  578. package/src/sdk/agentcore-gateway.js.map +1 -0
  579. package/src/sdk/connection.d.ts +6 -0
  580. package/src/sdk/connection.js +6 -0
  581. package/src/sdk/connection.js.map +1 -0
  582. package/src/sdk/license.d.ts +8 -0
  583. package/src/sdk/license.js +7 -0
  584. package/src/sdk/license.js.map +1 -0
  585. package/src/sdk/open-api.d.ts +10 -0
  586. package/src/sdk/open-api.js +8 -0
  587. package/src/sdk/open-api.js.map +1 -0
  588. package/src/sdk/py.d.ts +18 -0
  589. package/src/sdk/py.js +12 -0
  590. package/src/sdk/py.js.map +1 -0
  591. package/src/sdk/terraform.d.ts +6 -0
  592. package/src/sdk/terraform.js +7 -0
  593. package/src/sdk/terraform.js.map +1 -0
  594. package/src/sdk/ts.d.ts +39 -0
  595. package/src/sdk/ts.js +41 -0
  596. package/src/sdk/ts.js.map +1 -0
  597. package/{sdk/utils/format.d.ts → src/sdk/utils/ast.d.ts} +1 -1
  598. package/src/sdk/utils/ast.js +6 -0
  599. package/src/sdk/utils/ast.js.map +1 -0
  600. package/{sdk/utils/ast.d.ts → src/sdk/utils/format.d.ts} +1 -2
  601. package/src/sdk/utils/format.js +6 -0
  602. package/src/sdk/utils/format.js.map +1 -0
  603. package/{sdk → src/sdk}/utils/test.d.ts +1 -1
  604. package/src/sdk/utils/test.js +6 -0
  605. package/src/sdk/utils/test.js.map +1 -0
  606. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +245 -242
  607. package/src/smithy/project/files/{smithy-build.json.template → service/smithy-build.json.template} +5 -5
  608. package/src/smithy/project/files/{src → service/src}/operations/echo.smithy.template +1 -0
  609. package/src/smithy/project/files/shapes/smithy-build.json.template +7 -0
  610. package/src/smithy/project/files/shapes/src/main.smithy.template +11 -0
  611. package/src/smithy/project/files/ssdk-bundle/ssdk.rolldown.config.mjs.template +52 -0
  612. package/src/smithy/project/generator.d.ts +90 -0
  613. package/src/smithy/project/generator.js +223 -56
  614. package/src/smithy/project/generator.js.map +1 -1
  615. package/src/smithy/project/schema.d.js +6 -0
  616. package/src/smithy/project/schema.d.js.map +1 -0
  617. package/src/smithy/project/schema.d.ts +2 -0
  618. package/src/smithy/project/schema.json +28 -1
  619. package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
  620. package/src/smithy/react-connection/generator.d.ts +15 -0
  621. package/src/smithy/react-connection/generator.js +54 -48
  622. package/src/smithy/react-connection/generator.js.map +1 -1
  623. package/src/smithy/react-connection/schema.d.js +6 -0
  624. package/src/smithy/react-connection/schema.d.js.map +1 -0
  625. package/src/smithy/react-connection/schema.d.ts +1 -0
  626. package/src/smithy/react-connection/schema.json +5 -0
  627. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +871 -109
  628. package/src/smithy/ts/api/files/handler.ts.template +3 -3
  629. package/src/smithy/ts/api/files/local-server.ts.template +3 -3
  630. package/src/smithy/ts/api/files/operations/echo.ts.template +2 -2
  631. package/src/smithy/ts/api/files/service.ts.template +3 -3
  632. package/src/smithy/ts/api/generator.d.ts +88 -0
  633. package/src/smithy/ts/api/generator.js +187 -114
  634. package/src/smithy/ts/api/generator.js.map +1 -1
  635. package/src/smithy/ts/api/schema.d.js +6 -0
  636. package/src/smithy/ts/api/schema.d.js.map +1 -0
  637. package/src/smithy/ts/api/schema.d.ts +1 -0
  638. package/src/smithy/ts/api/schema.json +6 -0
  639. package/src/terraform/project/files/application/scripts/bootstrap.ts.template +40 -1
  640. package/src/terraform/project/files/application/src/main.tf.template +6 -1
  641. package/src/terraform/project/files/application/src/providers.tf.template +1 -1
  642. package/src/terraform/project/generator.d.ts +50 -0
  643. package/src/terraform/project/generator.js +212 -111
  644. package/src/terraform/project/generator.js.map +1 -1
  645. package/src/terraform/project/schema.d.js +9 -0
  646. package/src/terraform/project/schema.d.js.map +1 -0
  647. package/src/terraform/project/schema.d.ts +1 -0
  648. package/src/terraform/project/schema.json +5 -0
  649. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +1182 -184
  650. package/src/trpc/backend/files/src/client/index.ts.template +1 -1
  651. package/src/trpc/backend/files/src/handler.ts.template +1 -1
  652. package/src/trpc/backend/files/src/index.ts.template +5 -5
  653. package/src/trpc/backend/files/src/init.ts.template +1 -1
  654. package/src/trpc/backend/files/src/local-server.ts.template +1 -1
  655. package/src/trpc/backend/files/src/middleware/index.ts.template +7 -7
  656. package/src/trpc/backend/files/src/procedures/echo.ts.template +3 -3
  657. package/src/trpc/backend/files/src/router.ts.template +2 -2
  658. package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
  659. package/src/trpc/backend/files/src/schema/index.ts.template +1 -1
  660. package/src/trpc/backend/generator.d.ts +90 -1
  661. package/src/trpc/backend/generator.js +177 -100
  662. package/src/trpc/backend/generator.js.map +1 -1
  663. package/src/trpc/backend/schema.d.js +6 -0
  664. package/src/trpc/backend/schema.d.js.map +1 -0
  665. package/src/trpc/backend/schema.d.ts +1 -0
  666. package/src/trpc/backend/schema.json +6 -0
  667. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +4 -4
  668. package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
  669. package/src/trpc/react/generator.d.ts +38 -1
  670. package/src/trpc/react/generator.js +105 -63
  671. package/src/trpc/react/generator.js.map +1 -1
  672. package/src/trpc/react/schema.d.js +6 -0
  673. package/src/trpc/react/schema.d.js.map +1 -0
  674. package/src/trpc/react/schema.d.ts +1 -0
  675. package/src/trpc/react/schema.json +5 -0
  676. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +1452 -25
  677. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +258 -0
  678. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +23 -0
  679. package/src/ts/agent/a2a-connection/generator.d.ts +46 -0
  680. package/src/ts/agent/a2a-connection/generator.js +110 -63
  681. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  682. package/src/ts/agent/a2a-connection/schema.d.js +8 -0
  683. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
  684. package/src/ts/agent/a2a-connection/schema.d.ts +1 -0
  685. package/src/ts/agent/a2a-connection/schema.json +5 -0
  686. package/src/ts/agent/files/a2a/index.ts.template +1 -1
  687. package/src/ts/agent/files/ag-ui/index.ts.template +36 -11
  688. package/src/ts/agent/files/common/agent.ts.template +15 -2
  689. package/src/ts/agent/files/common/session.ts.template +43 -0
  690. package/src/ts/agent/files/deploy/Dockerfile.template +13 -2
  691. package/src/ts/agent/files/http/client.ts.template +2 -2
  692. package/src/ts/agent/files/http/index.ts.template +2 -2
  693. package/src/ts/agent/files/http/router.ts.template +5 -5
  694. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +222 -0
  695. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +30 -0
  696. package/src/ts/agent/gateway-connection/generator.d.ts +47 -0
  697. package/src/ts/agent/gateway-connection/generator.js +144 -0
  698. package/src/ts/agent/gateway-connection/generator.js.map +1 -0
  699. package/src/ts/agent/gateway-connection/schema.d.js +6 -0
  700. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
  701. package/src/ts/agent/gateway-connection/schema.d.ts +13 -0
  702. package/src/ts/agent/gateway-connection/schema.json +31 -0
  703. package/src/ts/agent/generator.d.ts +205 -0
  704. package/src/ts/agent/generator.js +339 -156
  705. package/src/ts/agent/generator.js.map +1 -1
  706. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +194 -113
  707. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +23 -0
  708. package/src/ts/agent/mcp-connection/generator.d.ts +37 -0
  709. package/src/ts/agent/mcp-connection/generator.js +88 -65
  710. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  711. package/src/ts/agent/mcp-connection/schema.d.js +8 -0
  712. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
  713. package/src/ts/agent/mcp-connection/schema.d.ts +1 -0
  714. package/src/ts/agent/mcp-connection/schema.json +5 -0
  715. package/src/ts/agent/react-connection/__snapshots__/generator.spec.ts.snap +8 -4
  716. package/src/ts/agent/react-connection/files/src/components/__agentNameClassName__AgentClientProvider.tsx.template +2 -1
  717. package/src/ts/agent/react-connection/generator.d.ts +202 -1
  718. package/src/ts/agent/react-connection/generator.js +158 -99
  719. package/src/ts/agent/react-connection/generator.js.map +1 -1
  720. package/src/ts/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +2 -2
  721. package/src/ts/agent/react-connection/local-dev.js +17 -0
  722. package/src/ts/agent/react-connection/local-dev.js.map +1 -0
  723. package/src/ts/agent/react-connection/schema.d.js +8 -0
  724. package/src/ts/agent/react-connection/schema.d.js.map +1 -0
  725. package/src/ts/agent/react-connection/schema.d.ts +1 -0
  726. package/src/ts/agent/react-connection/schema.json +5 -0
  727. package/src/ts/agent/schema.d.js +6 -0
  728. package/src/ts/agent/schema.d.js.map +1 -0
  729. package/src/ts/agent/schema.d.ts +4 -0
  730. package/src/ts/agent/schema.json +14 -0
  731. package/src/ts/api/generator.js +16 -16
  732. package/src/ts/api/generator.js.map +1 -1
  733. package/src/ts/api/schema.d.js +6 -0
  734. package/src/ts/api/schema.d.js.map +1 -0
  735. package/src/ts/api/schema.d.ts +1 -0
  736. package/src/ts/api/schema.json +5 -0
  737. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +28 -14
  738. package/src/ts/astro-docs/files/base/src/content/docs/en/index.mdx.template +2 -2
  739. package/src/ts/astro-docs/files/base/src/content.config.ts.template +4 -4
  740. package/src/ts/astro-docs/files/translation/scripts/translate.ts.template +272 -150
  741. package/src/ts/astro-docs/generator.d.ts +38 -0
  742. package/src/ts/astro-docs/generator.js +126 -61
  743. package/src/ts/astro-docs/generator.js.map +1 -1
  744. package/src/ts/astro-docs/schema.d.js +6 -0
  745. package/src/ts/astro-docs/schema.d.js.map +1 -0
  746. package/src/ts/astro-docs/schema.d.ts +2 -2
  747. package/src/ts/astro-docs/schema.json +3 -3
  748. package/src/ts/dcr-proxy/__snapshots__/generator.spec.ts.snap +982 -0
  749. package/src/ts/dcr-proxy/generator.d.ts +34 -0
  750. package/src/ts/dcr-proxy/generator.js +115 -0
  751. package/src/ts/dcr-proxy/generator.js.map +1 -0
  752. package/src/ts/dcr-proxy/schema.d.js +6 -0
  753. package/src/ts/dcr-proxy/schema.d.js.map +1 -0
  754. package/src/ts/dcr-proxy/schema.d.ts +13 -0
  755. package/src/ts/dcr-proxy/schema.json +44 -0
  756. package/src/ts/docs/generator.js +10 -10
  757. package/src/ts/docs/generator.js.map +1 -1
  758. package/src/ts/docs/schema.d.js +6 -0
  759. package/src/ts/docs/schema.d.js.map +1 -0
  760. package/src/ts/docs/schema.d.ts +1 -4
  761. package/src/ts/docs/schema.json +3 -3
  762. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +400 -518
  763. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +23 -5
  764. package/src/ts/dynamodb/agent-connection/generator.js +27 -23
  765. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  766. package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
  767. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
  768. package/src/ts/dynamodb/agent-connection/schema.d.ts +1 -0
  769. package/src/ts/dynamodb/agent-connection/schema.json +5 -0
  770. package/src/ts/dynamodb/files/config.json.template +24 -0
  771. package/src/ts/dynamodb/files/src/client.ts.template +30 -11
  772. package/src/ts/dynamodb/files/src/entities/example.ts.template +1 -1
  773. package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -1
  774. package/src/ts/dynamodb/files/src/index.ts.template +2 -11
  775. package/src/ts/dynamodb/generator.d.ts +41 -0
  776. package/src/ts/dynamodb/generator.js +106 -64
  777. package/src/ts/dynamodb/generator.js.map +1 -1
  778. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +23 -5
  779. package/src/ts/dynamodb/mcp-server-connection/generator.js +27 -23
  780. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  781. package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
  782. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  783. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +1 -0
  784. package/src/ts/dynamodb/mcp-server-connection/schema.json +5 -0
  785. package/src/ts/dynamodb/schema.d.js +6 -0
  786. package/src/ts/dynamodb/schema.d.js.map +1 -0
  787. package/src/ts/dynamodb/schema.d.ts +2 -0
  788. package/src/ts/dynamodb/schema.json +26 -2
  789. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +12 -3
  790. package/src/ts/dynamodb/smithy-connection/generator.js +22 -22
  791. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  792. package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
  793. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
  794. package/src/ts/dynamodb/smithy-connection/schema.d.ts +1 -0
  795. package/src/ts/dynamodb/smithy-connection/schema.json +5 -0
  796. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
  797. package/src/ts/dynamodb/trpc-connection/generator.js +22 -22
  798. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  799. package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
  800. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
  801. package/src/ts/dynamodb/trpc-connection/schema.d.ts +1 -0
  802. package/src/ts/dynamodb/trpc-connection/schema.json +5 -0
  803. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +8 -6
  804. package/src/ts/lambda-function/files/handler/__lambdaFunctionKebabCase__.ts.template +2 -1
  805. package/src/ts/lambda-function/generator.d.ts +38 -0
  806. package/src/ts/lambda-function/generator.js +98 -65
  807. package/src/ts/lambda-function/generator.js.map +1 -1
  808. package/src/ts/lambda-function/io.js +83 -52
  809. package/src/ts/lambda-function/io.js.map +1 -1
  810. package/src/ts/lambda-function/schema.d.js +6 -0
  811. package/src/ts/lambda-function/schema.d.js.map +1 -0
  812. package/src/ts/lambda-function/schema.d.ts +1 -0
  813. package/src/ts/lambda-function/schema.json +5 -0
  814. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +83 -45
  815. package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +1 -1
  816. package/src/ts/lib/biome.js +71 -35
  817. package/src/ts/lib/biome.js.map +1 -1
  818. package/src/ts/lib/generator.d.ts +7 -0
  819. package/src/ts/lib/generator.js +115 -103
  820. package/src/ts/lib/generator.js.map +1 -1
  821. package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
  822. package/src/ts/lib/schema.d.js +6 -0
  823. package/src/ts/lib/schema.d.js.map +1 -0
  824. package/src/ts/lib/schema.d.ts +1 -1
  825. package/src/ts/lib/schema.json +5 -0
  826. package/src/ts/lib/ts-project-utils.d.ts +13 -1
  827. package/src/ts/lib/ts-project-utils.js +96 -71
  828. package/src/ts/lib/ts-project-utils.js.map +1 -1
  829. package/src/ts/lib/types.d.ts +6 -0
  830. package/src/ts/lib/types.js +5 -2
  831. package/src/ts/lib/types.js.map +1 -1
  832. package/src/ts/lib/vitest.d.ts +10 -1
  833. package/src/ts/lib/vitest.js +54 -26
  834. package/src/ts/lib/vitest.js.map +1 -1
  835. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +221 -44
  836. package/src/ts/mcp-server/files/Dockerfile.template +13 -2
  837. package/src/ts/mcp-server/generator.d.ts +110 -0
  838. package/src/ts/mcp-server/generator.js +231 -148
  839. package/src/ts/mcp-server/generator.js.map +1 -1
  840. package/src/ts/mcp-server/schema.d.js +6 -0
  841. package/src/ts/mcp-server/schema.d.js.map +1 -0
  842. package/src/ts/mcp-server/schema.d.ts +1 -0
  843. package/src/ts/mcp-server/schema.json +6 -0
  844. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +28 -13
  845. package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
  846. package/src/ts/nx-generator/files/common/schema.json.template +5 -0
  847. package/src/ts/nx-generator/files/local/generator.spec.ts.template +1 -1
  848. package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
  849. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +6 -7
  850. package/src/ts/nx-generator/generator.d.ts +3 -0
  851. package/src/ts/nx-generator/generator.js +124 -73
  852. package/src/ts/nx-generator/generator.js.map +1 -1
  853. package/src/ts/nx-generator/schema.d.js +6 -0
  854. package/src/ts/nx-generator/schema.d.js.map +1 -0
  855. package/src/ts/nx-generator/schema.d.ts +1 -0
  856. package/src/ts/nx-generator/schema.json +5 -0
  857. package/src/ts/nx-migration/files/migration.spec.ts.template +26 -0
  858. package/src/ts/nx-migration/files/migration.ts.template +65 -0
  859. package/src/ts/nx-migration/files/prompt.md.template +46 -0
  860. package/src/ts/nx-migration/generator.d.ts +27 -0
  861. package/src/ts/nx-migration/generator.js +147 -0
  862. package/src/ts/nx-migration/generator.js.map +1 -0
  863. package/src/ts/nx-migration/schema.d.js +6 -0
  864. package/src/ts/nx-migration/schema.d.js.map +1 -0
  865. package/src/ts/nx-migration/schema.d.ts +13 -0
  866. package/src/ts/nx-migration/schema.json +63 -0
  867. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +36 -25
  868. package/src/ts/nx-plugin/files/mcp-server/resources/GENERAL_GUIDANCE.md.template +5 -6
  869. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  870. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  871. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  872. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  873. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  874. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +4 -4
  875. package/src/ts/nx-plugin/generator.d.ts +3 -0
  876. package/src/ts/nx-plugin/generator.js +67 -50
  877. package/src/ts/nx-plugin/generator.js.map +1 -1
  878. package/src/ts/nx-plugin/schema.d.js +9 -0
  879. package/src/ts/nx-plugin/schema.d.js.map +1 -0
  880. package/src/ts/nx-plugin/schema.json +5 -0
  881. package/src/ts/nx-plugin/utils.d.ts +27 -2
  882. package/src/ts/nx-plugin/utils.js +66 -51
  883. package/src/ts/nx-plugin/utils.js.map +1 -1
  884. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +553 -644
  885. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +16 -6
  886. package/src/ts/rdb/agent-connection/generator.js +44 -39
  887. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  888. package/src/ts/rdb/agent-connection/schema.d.js +8 -0
  889. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
  890. package/src/ts/rdb/agent-connection/schema.d.ts +1 -0
  891. package/src/ts/rdb/agent-connection/schema.json +5 -0
  892. package/src/ts/rdb/files/Dockerfile.template +19 -1
  893. package/src/ts/rdb/files/config.json.template +14 -0
  894. package/src/ts/rdb/files/prisma.config.ts.template +6 -5
  895. package/src/ts/rdb/files/src/create-db-user-handler.ts.template +9 -11
  896. package/src/ts/rdb/files/src/index.ts.template +1 -2
  897. package/src/ts/rdb/files/src/migration-handler.ts.template +5 -30
  898. package/src/ts/rdb/files/src/prisma.ts.template +33 -25
  899. package/src/ts/rdb/files/src/utils.ts.template +3 -0
  900. package/src/ts/rdb/generator.d.ts +117 -4
  901. package/src/ts/rdb/generator.js +257 -138
  902. package/src/ts/rdb/generator.js.map +1 -1
  903. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +16 -6
  904. package/src/ts/rdb/mcp-server-connection/generator.js +42 -37
  905. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  906. package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
  907. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
  908. package/src/ts/rdb/mcp-server-connection/schema.d.ts +1 -0
  909. package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
  910. package/src/ts/rdb/schema.d.js +6 -0
  911. package/src/ts/rdb/schema.d.js.map +1 -0
  912. package/src/ts/rdb/schema.d.ts +1 -0
  913. package/src/ts/rdb/schema.json +7 -1
  914. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +18 -9
  915. package/src/ts/rdb/smithy-connection/generator.js +48 -43
  916. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  917. package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
  918. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
  919. package/src/ts/rdb/smithy-connection/schema.d.ts +1 -0
  920. package/src/ts/rdb/smithy-connection/schema.json +5 -0
  921. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +12 -3
  922. package/src/ts/rdb/trpc-connection/generator.js +37 -31
  923. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  924. package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
  925. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
  926. package/src/ts/rdb/trpc-connection/schema.d.ts +1 -0
  927. package/src/ts/rdb/trpc-connection/schema.json +5 -0
  928. package/src/ts/rdb/utils.js +9 -11
  929. package/src/ts/rdb/utils.js.map +1 -1
  930. package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +17 -16
  931. package/src/ts/react-website/agui/generator.d.ts +97 -0
  932. package/src/ts/react-website/agui/generator.js +114 -67
  933. package/src/ts/react-website/agui/generator.js.map +1 -1
  934. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +1391 -644
  935. package/src/ts/react-website/app/files/app/common/README.md.template +1 -1
  936. package/src/ts/react-website/app/generator.d.ts +142 -2
  937. package/src/ts/react-website/app/generator.js +333 -209
  938. package/src/ts/react-website/app/generator.js.map +1 -1
  939. package/src/ts/react-website/app/schema.d.js +6 -0
  940. package/src/ts/react-website/app/schema.d.js.map +1 -0
  941. package/src/ts/react-website/app/schema.d.ts +1 -1
  942. package/src/ts/react-website/app/schema.json +12 -6
  943. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +161 -26
  944. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +48 -12
  945. package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
  946. package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
  947. package/src/ts/react-website/cognito-auth/generator.d.ts +25 -1
  948. package/src/ts/react-website/cognito-auth/generator.js +79 -64
  949. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  950. package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +3 -1
  951. package/src/ts/react-website/cognito-auth/grit/none-auth-menu.grit +1 -0
  952. package/src/ts/react-website/cognito-auth/grit/shadcn-auth-menu.grit +3 -1
  953. package/src/ts/react-website/cognito-auth/grit/shadcn-state-declarations.grit +3 -1
  954. package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
  955. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
  956. package/src/ts/react-website/cognito-auth/schema.d.ts +1 -0
  957. package/src/ts/react-website/cognito-auth/schema.json +5 -0
  958. package/src/ts/react-website/cognito-auth/utils.js +34 -32
  959. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  960. package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
  961. package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
  962. package/src/ts/react-website/runtime-config/generator.js +29 -31
  963. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  964. package/src/ts/react-website/runtime-config/schema.d.js +6 -0
  965. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
  966. package/src/ts/react-website/runtime-config/schema.d.ts +1 -0
  967. package/src/ts/react-website/runtime-config/schema.json +5 -0
  968. package/src/ts/sync/generator.js +137 -60
  969. package/src/ts/sync/generator.js.map +1 -1
  970. package/src/ts/website/app/generator.js +10 -10
  971. package/src/ts/website/app/generator.js.map +1 -1
  972. package/src/ts/website/app/schema.d.js +6 -0
  973. package/src/ts/website/app/schema.d.js.map +1 -0
  974. package/src/ts/website/app/schema.d.ts +1 -1
  975. package/src/ts/website/app/schema.json +11 -6
  976. package/src/ts/website/auth/generator.d.ts +1 -1
  977. package/src/ts/website/auth/generator.js +11 -10
  978. package/src/ts/website/auth/generator.js.map +1 -1
  979. package/src/ts/website/auth/schema.d.js +6 -0
  980. package/src/ts/website/auth/schema.d.js.map +1 -0
  981. package/src/ts/website/auth/schema.d.ts +1 -0
  982. package/src/ts/website/auth/schema.json +5 -0
  983. package/src/utils/__snapshots__/shared-constructs.spec.ts.snap +21 -0
  984. package/src/utils/add-dependencies.d.ts +38 -0
  985. package/src/utils/add-dependencies.js +83 -0
  986. package/src/utils/add-dependencies.js.map +1 -0
  987. package/src/utils/agent-chat/agent-chat.d.ts +31 -0
  988. package/src/utils/agent-chat/agent-chat.js +31 -0
  989. package/src/utils/agent-chat/agent-chat.js.map +1 -0
  990. package/src/utils/agent-chat/files/a2a/chat.ts.template +33 -0
  991. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +17 -0
  992. package/src/utils/agent-chat/files/common/agentcore.ts.template +81 -0
  993. package/src/utils/agent-chat/files/http-py/chat.ts.template +43 -0
  994. package/src/utils/agent-chat/files/http-ts/chat.ts.template +54 -0
  995. package/src/utils/agent-connection/agent-connection.d.ts +139 -26
  996. package/src/utils/agent-connection/agent-connection.js +500 -103
  997. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  998. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
  999. package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
  1000. package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
  1001. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
  1002. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
  1003. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +33 -33
  1004. package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
  1005. package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
  1006. package/src/utils/agent-connection/files/core-strands/base/model-errors-strands.ts.template +47 -0
  1007. package/src/utils/agent-connection/files/core-strands/base/tool-errors-strands.ts.template +29 -0
  1008. package/src/utils/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +1 -1
  1009. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
  1010. package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
  1011. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
  1012. package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
  1013. package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
  1014. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
  1015. package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +105 -0
  1016. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
  1017. package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
  1018. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
  1019. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +6 -18
  1020. package/src/utils/agent-connection/files/py-core-runtime-config/session_context.py.template +2 -2
  1021. package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
  1022. package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +111 -0
  1023. package/src/utils/agent-connection/files/py-core-strands/base/model_errors_strands.py.template +40 -0
  1024. package/src/utils/agent-connection/files/{py-core-runtime-config/with_session_id.py.template → py-core-strands/base/with_session_id_strands.py.template} +2 -2
  1025. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
  1026. package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
  1027. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +79 -0
  1028. package/src/utils/agent-core-constructs/agent-core-constructs.js +212 -38
  1029. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  1030. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +170 -6
  1031. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +87 -0
  1032. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.ts.template +366 -0
  1033. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +624 -0
  1034. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
  1035. package/src/utils/agent-core-constructs/files/terraform/app/agent-core/__nameKebabCase__/__nameKebabCase__.tf.template +212 -1
  1036. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +521 -0
  1037. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
  1038. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-harness/__nameKebabCase__/__nameKebabCase__.tf.template +282 -0
  1039. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +159 -13
  1040. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
  1041. package/src/utils/api-constructs/api-constructs.d.ts +30 -2
  1042. package/src/utils/api-constructs/api-constructs.js +82 -32
  1043. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  1044. package/src/utils/api-constructs/files/cdk/app/apis/http/__apiNameKebabCase__.ts.template +20 -15
  1045. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +24 -16
  1046. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +26 -9
  1047. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +70 -0
  1048. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
  1049. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +56 -17
  1050. package/src/utils/api-constructs/files/cdk/core/api/trpc/trpc-utils.ts.template +1 -1
  1051. package/src/utils/api-constructs/files/cdk/core/api/utils/utils.ts.template +61 -7
  1052. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +101 -12
  1053. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +194 -8
  1054. package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
  1055. package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
  1056. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
  1057. package/src/utils/api-constructs/open-api-metadata.js +22 -22
  1058. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  1059. package/src/utils/ast/website.js +18 -20
  1060. package/src/utils/ast/website.js.map +1 -1
  1061. package/src/utils/ast.d.ts +9 -0
  1062. package/src/utils/ast.js +125 -86
  1063. package/src/utils/ast.js.map +1 -1
  1064. package/src/utils/base-tsconfig.d.ts +30 -0
  1065. package/src/utils/base-tsconfig.js +32 -0
  1066. package/src/utils/base-tsconfig.js.map +1 -0
  1067. package/src/utils/bundle/bundle.d.ts +6 -1
  1068. package/src/utils/bundle/bundle.js +58 -48
  1069. package/src/utils/bundle/bundle.js.map +1 -1
  1070. package/src/utils/commands.d.ts +14 -3
  1071. package/src/utils/commands.js +83 -28
  1072. package/src/utils/commands.js.map +1 -1
  1073. package/src/utils/config/index.d.ts +18 -2
  1074. package/src/utils/config/index.js +5 -4
  1075. package/src/utils/config/index.js.map +1 -1
  1076. package/src/utils/config/utils.d.ts +8 -2
  1077. package/src/utils/config/utils.js +56 -59
  1078. package/src/utils/config/utils.js.map +1 -1
  1079. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +16 -3
  1080. package/src/utils/connection/open-api/react.d.ts +31 -5
  1081. package/src/utils/connection/open-api/react.js +106 -76
  1082. package/src/utils/connection/open-api/react.js.map +1 -1
  1083. package/src/utils/containers.js +22 -23
  1084. package/src/utils/containers.js.map +1 -1
  1085. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.d.ts +38 -0
  1086. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js +93 -0
  1087. package/src/utils/dcr-proxy-constructs/dcr-proxy-constructs.js.map +1 -0
  1088. package/src/utils/dcr-proxy-constructs/files/cdk/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.ts.template +227 -0
  1089. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorization-server-metadata.ts.template +39 -0
  1090. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/authorize.ts.template +26 -0
  1091. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/mcp-proxy.ts.template +89 -0
  1092. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/protected-resource-metadata.ts.template +13 -0
  1093. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/register.ts.template +70 -0
  1094. package/src/utils/dcr-proxy-constructs/files/project/src/handlers/token.ts.template +75 -0
  1095. package/src/utils/dcr-proxy-constructs/files/terraform/app/dcr-proxies/__nameKebabCase__/__nameKebabCase__.tf.template +410 -0
  1096. package/src/utils/declared-dependencies.d.ts +140 -0
  1097. package/src/utils/declared-dependencies.js +64 -0
  1098. package/src/utils/declared-dependencies.js.map +1 -0
  1099. package/src/utils/dependencies.d.ts +18 -0
  1100. package/src/utils/dependencies.js +206 -0
  1101. package/src/utils/dependencies.js.map +1 -0
  1102. package/src/utils/docker.d.ts +89 -0
  1103. package/src/utils/docker.js +125 -0
  1104. package/src/utils/docker.js.map +1 -0
  1105. package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +1 -1
  1106. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +39 -41
  1107. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  1108. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +18 -5
  1109. package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +1 -1
  1110. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +24 -17
  1111. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +1 -1
  1112. package/src/utils/files/common/constructs/src/core/cloudfront.ts.template +14 -0
  1113. package/src/utils/files/common/constructs/src/core/index.ts.template +5 -4
  1114. package/src/utils/files/common/constructs/src/index.ts.template +2 -2
  1115. package/src/utils/files/common/infra-config/src/index.ts.template +3 -3
  1116. package/src/utils/files/common/infra-config/src/resolve-stage.ts.template +2 -2
  1117. package/src/utils/files/common/infra-config/src/stages.config.ts.template +1 -1
  1118. package/src/{ts/dynamodb/files/scripts → utils/files/common/scripts/src/dynamodb}/create-local-table.ts.template +65 -31
  1119. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +13 -0
  1120. package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +103 -0
  1121. package/src/utils/files/common/scripts/src/infra/infra-deploy.ts.template +2 -0
  1122. package/src/utils/files/common/scripts/src/infra/infra-destroy.ts.template +2 -0
  1123. package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/cdk-command.ts.template +6 -3
  1124. package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/run.ts.template +3 -3
  1125. package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
  1126. package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
  1127. package/src/utils/files/common/scripts/src/rdb/shared/pull-image.ts.template +16 -0
  1128. package/src/utils/files/common/scripts/src/rdb/shared/start-container.ts.template +115 -0
  1129. package/src/utils/files/common/shadcn/readme/README.md.template +3 -3
  1130. package/src/utils/files/common/shadcn/src/index.ts.template +2 -2
  1131. package/src/utils/files/shadcn/components.json.template +1 -1
  1132. package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +63 -72
  1133. package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
  1134. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +12 -6
  1135. package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
  1136. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +9 -4
  1137. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
  1138. package/src/utils/format.d.ts +39 -4
  1139. package/src/utils/format.js +318 -198
  1140. package/src/utils/format.js.map +1 -1
  1141. package/src/utils/fs.d.ts +24 -5
  1142. package/src/utils/fs.js +40 -15
  1143. package/src/utils/fs.js.map +1 -1
  1144. package/src/utils/function-constructs/files/cdk/app/lambda-functions/__nameKebabCase__.ts.template +1 -1
  1145. package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
  1146. package/src/utils/function-constructs/function-constructs.js +22 -25
  1147. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  1148. package/src/utils/generators.js +18 -20
  1149. package/src/utils/generators.js.map +1 -1
  1150. package/src/utils/git.js +19 -34
  1151. package/src/utils/git.js.map +1 -1
  1152. package/src/utils/iac-providers.js +5 -5
  1153. package/src/utils/iac-providers.js.map +1 -1
  1154. package/src/utils/iac.js +12 -14
  1155. package/src/utils/iac.js.map +1 -1
  1156. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +153 -24
  1157. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +28 -9
  1158. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +129 -12
  1159. package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
  1160. package/src/utils/identity-constructs/identity-constructs.d.ts +10 -0
  1161. package/src/utils/identity-constructs/identity-constructs.js +52 -31
  1162. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  1163. package/src/utils/init.d.ts +72 -0
  1164. package/src/utils/init.js +300 -0
  1165. package/src/utils/init.js.map +1 -0
  1166. package/src/utils/install.d.ts +32 -0
  1167. package/src/utils/install.js +58 -0
  1168. package/src/utils/install.js.map +1 -0
  1169. package/src/utils/js.js +27 -20
  1170. package/src/utils/js.js.map +1 -1
  1171. package/src/utils/mcp.d.ts +9 -0
  1172. package/src/utils/mcp.js +42 -41
  1173. package/src/utils/mcp.js.map +1 -1
  1174. package/src/utils/metrics.d.ts +7 -1
  1175. package/src/utils/metrics.js +61 -46
  1176. package/src/utils/metrics.js.map +1 -1
  1177. package/src/utils/migration-manifest.d.ts +58 -0
  1178. package/src/utils/migration-manifest.js +76 -0
  1179. package/src/utils/migration-manifest.js.map +1 -0
  1180. package/src/utils/migration-versions.d.ts +145 -0
  1181. package/src/utils/migration-versions.js +250 -0
  1182. package/src/utils/migration-versions.js.map +1 -0
  1183. package/src/utils/mock-project-graph.js +8 -12
  1184. package/src/utils/mock-project-graph.js.map +1 -1
  1185. package/src/utils/module-format.d.ts +25 -0
  1186. package/src/utils/module-format.js +45 -0
  1187. package/src/utils/module-format.js.map +1 -0
  1188. package/src/utils/names.d.ts +22 -0
  1189. package/src/utils/names.js +44 -48
  1190. package/src/utils/names.js.map +1 -1
  1191. package/src/utils/npm-scope.d.ts +0 -4
  1192. package/src/utils/npm-scope.js +7 -20
  1193. package/src/utils/npm-scope.js.map +1 -1
  1194. package/src/utils/nx.d.ts +74 -3
  1195. package/src/utils/nx.js +196 -75
  1196. package/src/utils/nx.js.map +1 -1
  1197. package/src/utils/nxlv-python.js +27 -15
  1198. package/src/utils/nxlv-python.js.map +1 -1
  1199. package/src/utils/object.js +5 -11
  1200. package/src/utils/object.js.map +1 -1
  1201. package/src/utils/paths.js +11 -15
  1202. package/src/utils/paths.js.map +1 -1
  1203. package/src/utils/pkg-manager.js +4 -9
  1204. package/src/utils/pkg-manager.js.map +1 -1
  1205. package/src/utils/pnpm-workspace.d.ts +1 -12
  1206. package/src/utils/pnpm-workspace.js +16 -43
  1207. package/src/utils/pnpm-workspace.js.map +1 -1
  1208. package/src/utils/port.d.ts +28 -6
  1209. package/src/utils/port.js +67 -28
  1210. package/src/utils/port.js.map +1 -1
  1211. package/src/utils/project-package-json.d.ts +39 -0
  1212. package/src/utils/project-package-json.js +119 -0
  1213. package/src/utils/project-package-json.js.map +1 -0
  1214. package/src/utils/py.d.ts +17 -3
  1215. package/src/utils/py.js +73 -48
  1216. package/src/utils/py.js.map +1 -1
  1217. package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +72 -18
  1218. package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +112 -88
  1219. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +127 -53
  1220. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +60 -53
  1221. package/src/utils/rdb-constructs/rdb-constructs.d.ts +12 -1
  1222. package/src/utils/rdb-constructs/rdb-constructs.js +38 -41
  1223. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  1224. package/src/utils/ruff.d.ts +59 -0
  1225. package/src/utils/ruff.js +140 -0
  1226. package/src/utils/ruff.js.map +1 -0
  1227. package/src/utils/shared-constructs-constants.d.ts +46 -4
  1228. package/src/utils/shared-constructs-constants.js +50 -15
  1229. package/src/utils/shared-constructs-constants.js.map +1 -1
  1230. package/src/utils/shared-constructs.d.ts +4 -1
  1231. package/src/utils/shared-constructs.js +62 -67
  1232. package/src/utils/shared-constructs.js.map +1 -1
  1233. package/src/utils/shared-dynamodb-scripts.d.ts +18 -0
  1234. package/src/utils/shared-dynamodb-scripts.js +35 -0
  1235. package/src/utils/shared-dynamodb-scripts.js.map +1 -0
  1236. package/src/utils/shared-infra-config.js +31 -30
  1237. package/src/utils/shared-infra-config.js.map +1 -1
  1238. package/src/utils/shared-infra-scripts.d.ts +26 -0
  1239. package/src/utils/shared-infra-scripts.js +58 -0
  1240. package/src/utils/shared-infra-scripts.js.map +1 -0
  1241. package/src/utils/shared-rdb-scripts.d.ts +27 -0
  1242. package/src/utils/shared-rdb-scripts.js +59 -0
  1243. package/src/utils/shared-rdb-scripts.js.map +1 -0
  1244. package/src/utils/shared-scripts.d.ts +1 -4
  1245. package/src/utils/shared-scripts.js +12 -38
  1246. package/src/utils/shared-scripts.js.map +1 -1
  1247. package/src/utils/shared-shadcn.d.ts +26 -1
  1248. package/src/utils/shared-shadcn.js +93 -67
  1249. package/src/utils/shared-shadcn.js.map +1 -1
  1250. package/src/utils/smithy.d.ts +59 -0
  1251. package/src/utils/smithy.js +73 -0
  1252. package/src/utils/smithy.js.map +1 -0
  1253. package/src/utils/test-git.d.ts +39 -0
  1254. package/src/utils/test-git.js +117 -0
  1255. package/src/utils/test-git.js.map +1 -0
  1256. package/src/utils/test.d.ts +10 -0
  1257. package/src/utils/test.js +44 -25
  1258. package/src/utils/test.js.map +1 -1
  1259. package/src/utils/toml.d.ts +5 -0
  1260. package/src/utils/toml.js +17 -15
  1261. package/src/utils/toml.js.map +1 -1
  1262. package/src/utils/version-upgrade-migration/migration.d.ts +14 -0
  1263. package/src/utils/version-upgrade-migration/migration.js +16 -0
  1264. package/src/utils/version-upgrade-migration/migration.js.map +1 -0
  1265. package/src/utils/version-upgrade-migration/nx-package-updates.d.ts +45 -0
  1266. package/src/utils/version-upgrade-migration/nx-package-updates.js +50 -0
  1267. package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -0
  1268. package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +76 -0
  1269. package/src/utils/version-upgrade-migration/owned-dependencies.js +146 -0
  1270. package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -0
  1271. package/src/utils/version-upgrade-migration/register.d.ts +29 -0
  1272. package/src/utils/version-upgrade-migration/register.js +42 -0
  1273. package/src/utils/version-upgrade-migration/register.js.map +1 -0
  1274. package/src/utils/version-upgrade-migration/sync-embedded-versions.d.ts +26 -0
  1275. package/src/utils/version-upgrade-migration/sync-embedded-versions.js +352 -0
  1276. package/src/utils/version-upgrade-migration/sync-embedded-versions.js.map +1 -0
  1277. package/src/utils/version-upgrade-migration/sync-metrics-version.d.ts +13 -0
  1278. package/src/utils/version-upgrade-migration/sync-metrics-version.js +33 -0
  1279. package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -0
  1280. package/src/utils/version-upgrade-migration/sync-vended-versions.d.ts +10 -0
  1281. package/src/utils/version-upgrade-migration/sync-vended-versions.js +518 -0
  1282. package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -0
  1283. package/src/utils/version-upgrade-migration/vended-upgrade.d.ts +14 -0
  1284. package/src/utils/version-upgrade-migration/vended-upgrade.js +40 -0
  1285. package/src/utils/version-upgrade-migration/vended-upgrade.js.map +1 -0
  1286. package/src/utils/versions.d.ts +240 -108
  1287. package/src/utils/versions.js +265 -121
  1288. package/src/utils/versions.js.map +1 -1
  1289. package/src/utils/website-constructs/files/cdk/app/static-websites/__websiteNameKebabCase__.ts.template +2 -2
  1290. package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +207 -41
  1291. package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +1 -1
  1292. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +145 -93
  1293. package/src/utils/website-constructs/website-constructs.d.ts +11 -0
  1294. package/src/utils/website-constructs/website-constructs.js +49 -30
  1295. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  1296. package/bin/aws-nx-mcp.d.ts +0 -2
  1297. package/bin/aws-nx-mcp.js +0 -17
  1298. package/bin/aws-nx-mcp.js.map +0 -1
  1299. package/sdk/connection.d.ts +0 -6
  1300. package/sdk/connection.js +0 -10
  1301. package/sdk/connection.js.map +0 -1
  1302. package/sdk/license.d.ts +0 -8
  1303. package/sdk/license.js +0 -13
  1304. package/sdk/license.js.map +0 -1
  1305. package/sdk/open-api.d.ts +0 -10
  1306. package/sdk/open-api.js +0 -15
  1307. package/sdk/open-api.js.map +0 -1
  1308. package/sdk/py.d.ts +0 -14
  1309. package/sdk/py.js +0 -18
  1310. package/sdk/py.js.map +0 -1
  1311. package/sdk/terraform.d.ts +0 -6
  1312. package/sdk/terraform.js +0 -11
  1313. package/sdk/terraform.js.map +0 -1
  1314. package/sdk/ts.d.ts +0 -29
  1315. package/sdk/ts.js +0 -47
  1316. package/sdk/ts.js.map +0 -1
  1317. package/sdk/utils/ast.js +0 -12
  1318. package/sdk/utils/ast.js.map +0 -1
  1319. package/sdk/utils/format.js +0 -10
  1320. package/sdk/utils/format.js.map +0 -1
  1321. package/sdk/utils/test.js +0 -10
  1322. package/sdk/utils/test.js.map +0 -1
  1323. package/src/connection/agent-serve-local.d.ts +0 -33
  1324. package/src/connection/agent-serve-local.js +0 -48
  1325. package/src/connection/agent-serve-local.js.map +0 -1
  1326. package/src/connection/serve-local.js +0 -41
  1327. package/src/connection/serve-local.js.map +0 -1
  1328. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
  1329. package/src/py/agent/files/ag-ui/main.py.template +0 -37
  1330. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
  1331. package/src/py/agent/react-connection/serve-local.js +0 -30
  1332. package/src/py/agent/react-connection/serve-local.js.map +0 -1
  1333. package/src/py/agent/scripts/http/chat.ts.template +0 -38
  1334. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +0 -19
  1335. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +0 -19
  1336. package/src/ts/agent/react-connection/serve-local.js +0 -19
  1337. package/src/ts/agent/react-connection/serve-local.js.map +0 -1
  1338. package/src/ts/agent/scripts/http/chat.ts.template +0 -35
  1339. package/src/ts/dynamodb/files/scripts/pull-image.ts.template +0 -15
  1340. package/src/ts/dynamodb/files/scripts/start-container.ts.template +0 -81
  1341. package/src/ts/dynamodb/files/src/constants.ts.template +0 -9
  1342. package/src/ts/dynamodb/files/src/gsi.ts.template +0 -14
  1343. package/src/ts/rdb/files/scripts/pull-image.ts.template +0 -15
  1344. package/src/ts/rdb/files/scripts/start-container.ts.template +0 -84
  1345. package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
  1346. package/src/ts/rdb/files/src/constants.ts.template +0 -8
  1347. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
  1348. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
  1349. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
  1350. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
  1351. package/src/utils/files/common/scripts/src/infra-deploy.ts.template +0 -2
  1352. package/src/utils/files/common/scripts/src/infra-destroy.ts.template +0 -2
  1353. package/src/utils/files/terraform/scripts/reset-runtime-config.ts.template +0 -25
  1354. /package/src/py/agent/files/{common → strands/common}/__init__.py.template +0 -0
  1355. /package/src/smithy/project/files/{src → service/src}/main.smithy.template +0 -0
  1356. /package/src/utils/files/common/scripts/src/{index.ts.template → infra/index.ts.template} +0 -0
  1357. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/credentials.ts.template +0 -0
  1358. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
@@ -1,770 +1,590 @@
1
- "use strict";
2
1
  /**
3
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
3
  * SPDX-License-Identifier: Apache-2.0
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.buildOpenApiCodeGenData = void 0;
8
- const tslib_1 = require("tslib");
9
- const gen = tslib_1.__importStar(require("@hey-api/openapi-ts"));
10
- const lodash_camelcase_1 = tslib_1.__importDefault(require("lodash.camelcase"));
11
- const lodash_orderby_1 = tslib_1.__importDefault(require("lodash.orderby"));
12
- const lodash_trim_1 = tslib_1.__importDefault(require("lodash.trim"));
13
- const lodash_uniqby_1 = tslib_1.__importDefault(require("lodash.uniqby"));
14
- const names_1 = require("../../utils/names");
15
- const languages_1 = require("./codegen-data/languages");
16
- const types_1 = require("./codegen-data/types");
17
- const normalise_1 = require("./normalise");
18
- const refs_1 = require("./refs");
4
+ */ import orderBy from "lodash.orderby";
5
+ import trim from "lodash.trim";
6
+ import uniqBy from "lodash.uniqby";
7
+ import { camelCase, pascalCase, snakeCase, toClassName, upperFirst } from "../../utils/names.js";
8
+ import { toPythonName, toPythonType, toTypeScriptModelName, toTypeScriptName, toTypeScriptType } from "./codegen-data/languages.js";
9
+ import { COLLECTION_TYPES, COMPOSED_SCHEMA_TYPES, createModel, DEFAULT_SERVICE_NAME, indexModelsByName, PRIMITIVE_TYPES, STREAMING_CONTENT_TYPES, VENDOR_EXTENSIONS } from "./codegen-data/types.js";
10
+ import { normaliseOpenApiSpecForCodeGen } from "./normalise.js";
11
+ import { buildClientData, buildInlineModel, compositeMemberSchemas, getSpecOperation, getSpecParametersByKey, getSpecPathParameters, linkModel, specParameterKey } from "./parser.js";
12
+ import { isRef, resolveIfRef, splitRef } from "./refs.js";
19
13
  /**
20
- * Builds a data structure from an OpenAPI spec which can be used to generate code
21
- */
22
- const buildOpenApiCodeGenData = async (inSpec) => {
23
- // Ensure spec is ready for codegen
24
- const spec = (0, normalise_1.normaliseOpenApiSpecForCodeGen)(inSpec);
25
- // Build the initial data, which we will augment with additional information
26
- const data = await buildInitialCodeGenData(spec);
27
- // Ensure the models have their links set when they are arrays/dictionaries
28
- ensureModelLinks(spec, data);
29
- // Mutate the models with enough data to render composite models in the templates
30
- ensureCompositeModels(data);
31
- const modelsByName = Object.fromEntries(data.models.map((m) => [m.name, m]));
32
- // Augment operations with additional data
33
- for (const service of data.services) {
34
- // Keep track of the request and response models we need the service (ie api client) to import
35
- const requestModelImports = [];
36
- const responseModelImports = [];
37
- for (const op of service.operations) {
38
- // Extract the operation back from the openapi spec
39
- const specOp = spec?.paths?.[op.path]?.[op.method.toLowerCase()];
40
- op.name = op.id ?? op.name;
41
- op.uniqueName = op.name;
42
- if (specOp['x-aws-nx-deduplicated-op-id']) {
43
- op.uniqueName = specOp['x-aws-nx-deduplicated-op-id'];
44
- }
45
- if (specOp['x-aws-nx-deduplicated-dot-op-id']) {
46
- op.dotNotationName = specOp['x-aws-nx-deduplicated-dot-op-id'];
47
- }
48
- // Add vendor extensions
49
- op.vendorExtensions = op.vendorExtensions ?? {};
50
- copyVendorExtensions(specOp ?? {}, op.vendorExtensions);
51
- if (specOp) {
52
- // Add all response models to the response model imports
53
- responseModelImports.push(...op.responses
54
- .filter((r) => r.export === 'reference')
55
- .map((r) => r.type));
56
- for (const response of op.responses) {
57
- // Validate that the response is not a composite schema of primitives since we cannot determine what
58
- // the type of the response is (it all comes back as text!)
59
- if (response.export === 'reference' &&
60
- types_1.COMPOSED_SCHEMA_TYPES.has(modelsByName[response.type]?.export)) {
61
- const composedPrimitives = modelsByName[response.type].composedPrimitives.filter((p) => !['array', 'dictionary'].includes(p.export));
62
- if (composedPrimitives.length > 0) {
63
- throw new Error(`Operation "${op.method} ${op.path}" returns a composite schema of primitives with ${(0, lodash_camelcase_1.default)(modelsByName[response.type].export)}, which cannot be distinguished at runtime`);
64
- }
65
- }
66
- const matchingSpecResponse = specOp.responses[`${response.code}`];
67
- // @hey-api/openapi-ts does not distinguish between returning an "any" or returning "void"
68
- // We distinguish this by looking back at each response in the spec, and checking whether it
69
- // has content
70
- if (matchingSpecResponse) {
71
- // Resolve the ref if necessary
72
- const specResponse = (0, refs_1.resolveIfRef)(spec, matchingSpecResponse);
73
- // When there's no content, we set the type to 'void'
74
- if (!specResponse.content) {
75
- response.type = 'void';
76
- }
77
- else {
78
- // Add the response media types
79
- const mediaTypes = Object.keys(specResponse.content);
80
- response.mediaTypes = mediaTypes;
81
- for (const mediaType of mediaTypes) {
82
- const responseContent = specResponse.content?.[mediaType] ??
83
- Object.values(specResponse.content)[0];
84
- const responseSchema = (0, refs_1.resolveIfRef)(spec, responseContent.schema);
85
- if (responseSchema) {
86
- await mutateWithOpenapiSchemaProperties(spec, response, responseSchema, modelsByName);
87
- }
88
- if (types_1.STREAMING_CONTENT_TYPES.has(mediaType) &&
89
- 'itemSchema' in responseContent) {
90
- response.isJsonlStreaming = true;
91
- response.itemSchemaModel =
92
- await buildOrReferenceModel(spec, modelsByName, responseContent.itemSchema);
93
- }
94
- }
95
- }
96
- }
97
- }
98
- }
99
- const specParametersByName = Object.fromEntries((specOp?.parameters ?? []).map((p) => {
100
- const param = (0, refs_1.resolveIfRef)(spec, p);
101
- return [param.name, param];
102
- }));
103
- // Loop through the parameters
104
- for (const parameter of op.parameters) {
105
- // Add the request model import
106
- if (parameter.export === 'reference') {
107
- requestModelImports.push(parameter.type);
108
- }
109
- const specParameter = specParametersByName[parameter.prop];
110
- const specParameterSchema = (0, refs_1.resolveIfRef)(spec, specParameter?.schema);
111
- if (specParameterSchema) {
112
- await mutateWithOpenapiSchemaProperties(spec, parameter, specParameterSchema, modelsByName);
113
- }
114
- if (parameter.in === 'body' || parameter.in === 'formData') {
115
- // Parameter name for the body is 'body'. `formData` bodies arrive
116
- // under a synthetic `formData` param (hey-api convention) that's
117
- // logically the body — normalise both shapes to `in === 'body'`
118
- // so every downstream consumer (including ts-client's request-
119
- // type composition) sees a single body kind.
120
- parameter.name = 'body';
121
- parameter.prop = 'body';
122
- parameter.in = 'body';
123
- // The request body is not in the "parameters" section of the openapi spec so we won't have added the schema
124
- // properties above. Find it here.
125
- const specBody = (0, refs_1.resolveIfRef)(spec, specOp?.requestBody);
126
- if (specBody) {
127
- if (parameter.mediaType) {
128
- const bodySchema = (0, refs_1.resolveIfRef)(spec, specBody.content?.[parameter.mediaType]?.schema);
129
- if (bodySchema) {
130
- await mutateWithOpenapiSchemaProperties(spec, parameter, bodySchema, modelsByName);
131
- }
132
- }
133
- // Track all the media types that can be accepted in the request body
134
- parameter.mediaTypes = Object.keys(specBody.content);
135
- }
136
- }
137
- else if (['query', 'header'].includes(parameter.in) &&
138
- specParameter) {
139
- // Translate style/explode to OpenAPI v2 style collectionFormat
140
- // https://spec.openapis.org/oas/v3.0.3.html#style-values
141
- const style = specParameter.style ??
142
- (parameter.in === 'query' ? 'form' : 'simple');
143
- const explode = specParameter.explode ?? style === 'form';
144
- if (parameter.in === 'query') {
145
- parameter.collectionFormat = explode
146
- ? 'multi'
147
- : ({
148
- spaceDelimited: 'ssv',
149
- pipeDelimited: 'tsv',
150
- simple: 'csv',
151
- form: 'csv',
152
- }[style] ?? 'multi');
153
- }
154
- else {
155
- // parameter.in === "header"
156
- parameter.collectionFormat = explode ? 'multi' : 'csv';
157
- }
158
- }
159
- mutateModelWithAdditionalTypes(parameter);
160
- }
161
- // Add language types to response models
162
- (op.responses ?? []).forEach(mutateModelWithAdditionalTypes);
163
- // Sort responses by code
164
- op.responses = (0, lodash_orderby_1.default)(op.responses, (r) => r.code);
165
- // Result is the lowest successful response, otherwise is the 2XX or default response
166
- const result = op.responses.find((r) => typeof r.code === 'number' && r.code >= 200 && r.code < 300);
167
- op.result =
168
- result ??
169
- op.responses.find((r) => r.code === '2XX' || r.code === 'default');
170
- // Add variants of operation name
171
- op.operationIdPascalCase = (0, names_1.pascalCase)(op.uniqueName);
172
- op.operationIdKebabCase = (0, names_1.kebabCase)(op.uniqueName);
173
- op.operationIdSnakeCase = (0, languages_1.toPythonName)('operation', op.uniqueName);
174
- // Add request type name (after operationIdPascalCase is set)
175
- if (op.parameters && op.parameters.length > 0) {
176
- const baseRequestTypeName = `${op.operationIdPascalCase}Request`;
177
- const hasConflict = !!spec.components?.schemas?.[baseRequestTypeName];
178
- if (hasConflict) {
179
- // Use OperationRequest suffix when there's a conflict
180
- op.requestTypeName =
181
- `${op.operationIdPascalCase}OperationRequest`;
182
- }
183
- else {
184
- // Use standard Request suffix when no conflict
185
- op.requestTypeName = baseRequestTypeName;
186
- }
187
- }
188
- mutateOperationWithAdditionalData(op);
189
- }
190
- // Lexicographical ordering of operations
191
- service.operations = (0, lodash_orderby_1.default)(service.operations, (op) => op.uniqueName);
192
- // Add the models to import
193
- service.modelImports = (0, lodash_orderby_1.default)((0, lodash_uniqby_1.default)([...service.imports, ...requestModelImports, ...responseModelImports], (x) => x));
194
- // Add the service class name
195
- service.className = `${service.name}Api`;
196
- service.classNameSnakeCase = (0, names_1.snakeCase)(service.className);
197
- service.nameSnakeCase = (0, names_1.snakeCase)(service.name);
198
- }
199
- // All operations across all services
200
- const allOperations = (0, lodash_uniqby_1.default)(data.services.flatMap((s) => s.operations), (o) => o.uniqueName);
201
- // Add additional models for operation parameters
14
+ * Build the data structure used to generate code from an OpenAPI spec.
15
+ */ export const buildOpenApiCodeGenData = (inSpec)=>{
16
+ const spec = normaliseOpenApiSpecForCodeGen(inSpec);
17
+ const data = buildClientData(spec);
18
+ const modelsByName = indexModelsByName(data.models);
19
+ for (const service of data.services){
20
+ augmentService(spec, service, modelsByName);
21
+ }
22
+ const allOperations = uniqBy(data.services.flatMap((s)=>s.operations), (o)=>o.uniqueName);
23
+ // A model per operation request parameter position (query/path/body/...).
202
24
  data.models = [
203
25
  ...data.models,
204
- ...allOperations.flatMap((op) => {
205
- if (op.parameters && op.parameters.length > 0) {
206
- // Build a collection of request parameter models to create based on their position (ie 'in' in the openapi spec, eg body, query, path, header, etc)
207
- const parametersByPosition = {};
208
- op.parameters
209
- .filter(
210
- // We filter out (return false for) request bodies which we "inline" - ie we don't create a property which points to the body, the request will only be the body itself
211
- (p) => {
212
- // Always create models for non-body parameters
213
- if (p.in !== 'body') {
214
- return true;
215
- }
216
- // If the body is the only parameter, we can inline it no matter the type
217
- if (op.parameters.length === 1) {
218
- return false;
219
- }
220
- // We inline object bodies, so long as they aren't dictionaries (as dictionary keys could clash with other parameters),
221
- // and so long as they don't have a property name that clashes with another parameter
222
- const hasClashingPropertyName = (modelsByName?.[p.type]?.properties ?? []).some((prop) => op.parameters.some((param) => param.name === prop.name));
223
- if (p.export === 'reference' &&
224
- modelsByName?.[p.type]?.export !== 'dictionary' &&
225
- !hasClashingPropertyName) {
226
- return false;
227
- }
228
- // Don't inline anything else
229
- return true;
230
- })
231
- .forEach((parameter) => {
232
- parametersByPosition[parameter.in] = [
233
- ...(parametersByPosition[parameter.in] ?? []),
234
- parameter,
235
- ];
236
- });
237
- // Ensure that if we have an explicit body parameter, it's called "body"
238
- const requestBodyParameter = parametersByPosition['body']?.[0];
239
- if (requestBodyParameter) {
240
- requestBodyParameter.name = 'body';
241
- requestBodyParameter.prop = 'body';
242
- }
243
- op.explicitRequestBodyParameter = requestBodyParameter;
244
- return Object.entries(parametersByPosition).map(([position, parameters]) => {
245
- const name = `${op.operationIdPascalCase}Request${(0, names_1.upperFirst)(position)}Parameters`;
246
- return {
247
- $refs: [],
248
- base: name,
249
- description: op.description,
250
- enum: null,
251
- enums: null,
252
- export: 'interface',
253
- imports: [],
254
- in: '',
255
- link: undefined,
256
- name,
257
- properties: parameters,
258
- template: '',
259
- type: name,
260
- isDefinition: false,
261
- isNullable: false,
262
- isReadOnly: false,
263
- isRequired: true,
264
- };
265
- });
266
- }
267
- return [];
268
- }),
26
+ ...allOperations.flatMap((op)=>buildRequestParameterModels(op, modelsByName))
269
27
  ];
270
- // Augment models with additional data
271
- for (const model of data.models) {
272
- // Add a snake_case name
273
- model.nameSnakeCase = (0, languages_1.toPythonName)('model', model.name);
274
- const matchingSpecModel = spec?.components?.schemas?.[model.name];
275
- if (matchingSpecModel) {
276
- const specModel = (0, refs_1.resolveIfRef)(spec, matchingSpecModel);
277
- await mutateWithOpenapiSchemaProperties(spec, model, specModel, modelsByName);
278
- // Add unique imports
279
- model.uniqueImports = (0, lodash_orderby_1.default)((0, lodash_uniqby_1.default)([
280
- ...model.imports,
281
- // Include property imports, if any
282
- ...model.properties
283
- .filter((p) => p.export === 'reference')
284
- .map((p) => p.type),
285
- ], (x) => x)).filter((modelImport) => modelImport !== model.name); // Filter out self for recursive model references
286
- // Add deprecated flag if present
287
- model.deprecated = specModel.deprecated || false;
288
- // Augment properties with additional data
289
- for (const property of model.properties) {
290
- const matchingSpecProperty = specModel.properties?.[property.name];
291
- if (matchingSpecProperty) {
292
- const specProperty = (0, refs_1.resolveIfRef)(spec, matchingSpecProperty);
293
- await mutateWithOpenapiSchemaProperties(spec, property, specProperty, modelsByName);
294
- }
295
- }
296
- }
297
- // Augment properties with additional data
298
- model.properties.forEach((property) => {
299
- // Add language-specific names/types
300
- mutateModelWithAdditionalTypes(property);
301
- });
28
+ for (const model of data.models){
29
+ augmentModel(spec, model, modelsByName);
302
30
  }
303
- for (const model of data.models) {
304
- // Set the model's typescript name and type
305
- model.typescriptName = (0, languages_1.toTypeScriptModelName)(model.name);
31
+ for (const model of data.models){
32
+ model.typescriptName = toTypeScriptModelName(model.name);
306
33
  model.typescriptType = model.typescriptName;
307
34
  }
308
- // Order models lexicographically by name
309
- data.models = (0, lodash_orderby_1.default)(data.models, (d) => d.name);
310
- // Order services so default appears first, then otherwise by name
311
- data.services = (0, lodash_orderby_1.default)(data.services, (s) => s.name === 'Default' ? '' : s.name);
312
- // All operations by tags
313
- const operationsByTag = {};
314
- const untaggedOperations = [];
315
- allOperations.forEach((op) => {
316
- const tags = op.tags;
317
- if (tags && tags.length > 0) {
318
- tags.map(lodash_camelcase_1.default).forEach((tag) => {
319
- operationsByTag[tag] = [...(operationsByTag[tag] ?? []), op];
320
- });
321
- }
322
- else {
323
- untaggedOperations.push(op);
324
- }
325
- });
326
- // Add top level vendor extensions
327
- const vendorExtensions = {};
328
- copyVendorExtensions(spec ?? {}, vendorExtensions);
35
+ for (const model of data.models){
36
+ assertNoClashingPropertyNames(model);
37
+ assertNoConflictingUnionMemberMarshalling(model);
38
+ }
39
+ for (const op of allOperations){
40
+ assertEncodableUrlEncodedBody(op);
41
+ }
42
+ data.models = orderBy(data.models, (d)=>d.name);
43
+ // Default service first, then by name.
44
+ data.services = orderBy(data.services, (s)=>s.name === DEFAULT_SERVICE_NAME ? '' : s.name);
45
+ const { operationsByTag, untaggedOperations } = groupOperationsByTag(allOperations);
329
46
  return {
330
47
  ...data,
331
48
  operationsByTag,
332
49
  untaggedOperations,
333
50
  info: spec.info,
334
51
  allOperations,
335
- vendorExtensions,
336
- className: (0, names_1.toClassName)(spec.info.title),
52
+ vendorExtensions: vendorExtensionsOf(spec),
53
+ className: toClassName(spec.info.title)
337
54
  };
338
55
  };
339
- exports.buildOpenApiCodeGenData = buildOpenApiCodeGenData;
340
- const buildInitialCodeGenData = async (spec) => {
341
- let data;
342
- // We create a plugin which will capture the client data
343
- const plugin = () => ({
344
- name: 'plugin',
345
- // eslint-disable-next-line @typescript-eslint/no-empty-function
346
- _handler: () => { },
347
- _handlerLegacy: ({ client }) => {
348
- data = client;
349
- },
350
- });
351
- // Use @hey-api/openapi-ts to build the initial data structure that we'll generate clients from
352
- await gen.createClient({
353
- experimentalParser: false,
354
- input: {
355
- path: spec,
356
- },
357
- output: 'unused',
358
- plugins: [plugin()],
359
- dryRun: true,
360
- logs: { level: 'silent' },
361
- });
362
- if (!data) {
363
- // If this happens it indicates an update to @hey-api/openapi-ts which has removed the legacy parser
364
- throw new Error('Failed to build code generation data');
56
+ /**
57
+ * Augment a service and each of its operations with the data needed for code
58
+ * generation (names, imports, result/request types, behavioural flags), and
59
+ * compute the set of models the service (ie API client) needs to import.
60
+ */ const augmentService = (spec, service, modelsByName)=>{
61
+ const modelImports = service.operations.flatMap((op)=>augmentOperation(spec, op, modelsByName));
62
+ service.operations = orderBy(service.operations, (op)=>op.uniqueName);
63
+ service.modelImports = orderBy(uniqBy([
64
+ ...service.imports,
65
+ ...modelImports
66
+ ], (x)=>x));
67
+ service.className = `${service.name}Api`;
68
+ service.nameSnakeCase = snakeCase(service.name);
69
+ };
70
+ /**
71
+ * Augment a single operation with all the data the templates need, returning
72
+ * the names of the models it references (for the service's import list).
73
+ */ const augmentOperation = (spec, op, modelsByName)=>{
74
+ const specOp = getSpecOperation(spec, op);
75
+ assignOperationNames(op, specOp);
76
+ op.vendorExtensions = vendorExtensionsOf(specOp);
77
+ const modelImports = [
78
+ ...specOp ? augmentResponses(spec, op, specOp, modelsByName) : [],
79
+ ...augmentParameters(spec, op, specOp, modelsByName)
80
+ ];
81
+ op.responses.forEach(addLanguageTypes);
82
+ op.responses = orderBy(op.responses, (r)=>r.code);
83
+ // Result is the lowest successful response, otherwise the 2XX or default.
84
+ op.result = op.responses.find((r)=>typeof r.code === 'number' && r.code >= 200 && r.code < 300) ?? op.responses.find((r)=>r.code === '2XX' || r.code === 'default');
85
+ op.operationIdPascalCase = pascalCase(op.uniqueName);
86
+ op.operationIdSnakeCase = toPythonName('operation', op.uniqueName);
87
+ if (op.parameters.length > 0) {
88
+ const baseRequestTypeName = `${op.operationIdPascalCase}Request`;
89
+ // Use the OperationRequest suffix when the standard Request name clashes
90
+ // with an existing schema.
91
+ op.requestTypeName = spec.components?.schemas?.[baseRequestTypeName] ? `${op.operationIdPascalCase}OperationRequest` : baseRequestTypeName;
365
92
  }
366
- return data;
93
+ augmentOperationBehaviour(op);
94
+ return modelImports;
367
95
  };
368
96
  /**
369
- * Build a model for a particular primitive schema.
370
- * Only primitives are supported since we only return one model.
371
- * For non-primitives, it assumes all referenced subschemas are already models
372
- */
373
- const buildModelForPrimitive = async (originalSpec, schema) => {
374
- const targetSchemaName = '___aws_nx_plugin_openapi_tmp_schema___';
375
- const spec = {
376
- openapi: '3.1.0',
377
- info: { title: 'tmp', version: '1.0.0' },
378
- paths: {},
379
- components: {
380
- schemas: {
381
- ...originalSpec.components?.schemas,
382
- [targetSchemaName]: schema,
383
- },
384
- },
385
- };
386
- const data = await buildInitialCodeGenData(spec);
387
- const model = data.models.find((m) => m.name === targetSchemaName);
388
- if (!model) {
389
- throw new Error(`Failed to construct model for schema ${JSON.stringify(schema)}`);
97
+ * Set an operation's name and its deduplicated variants from the vendor
98
+ * extensions the normaliser added.
99
+ */ const assignOperationNames = (op, specOp)=>{
100
+ const deduplicatedOpId = specOp?.['x-aws-nx-deduplicated-op-id'];
101
+ const dotNotationOpId = specOp?.['x-aws-nx-deduplicated-dot-op-id'];
102
+ op.name = op.id ?? op.name;
103
+ op.uniqueName = deduplicatedOpId ?? op.name;
104
+ if (dotNotationOpId) {
105
+ op.dotNotationName = dotNotationOpId;
390
106
  }
391
- ensureModelLinks(spec, data);
392
- await mutateWithOpenapiSchemaProperties(spec, model, schema, Object.fromEntries(data.models.map((m) => [m.name, m])));
393
- return model;
394
107
  };
395
- const buildOrReferenceModel = async (spec, modelsByName, schema) => {
396
- if ((0, refs_1.isRef)(schema)) {
397
- const name = (0, refs_1.splitRef)(schema.$ref)[2];
398
- return modelsByName[name];
108
+ /**
109
+ * Augment an operation's response models with schema-derived data, resolving
110
+ * void responses and streaming item schemas. Returns the response model names
111
+ * to import.
112
+ */ const augmentResponses = (spec, op, specOp, modelsByName)=>{
113
+ const modelImports = op.responses.filter((r)=>r.export === 'reference').map((r)=>r.type);
114
+ for (const response of op.responses){
115
+ // We cannot distinguish a composite of primitives at runtime (it all comes
116
+ // back as text), so validate this away.
117
+ if (response.export === 'reference' && COMPOSED_SCHEMA_TYPES.has(modelsByName[response.type]?.export)) {
118
+ const composedPrimitives = (modelsByName[response.type].composedPrimitives ?? []).filter((p)=>!COLLECTION_TYPES.has(p.export));
119
+ if (composedPrimitives.length > 0) {
120
+ throw new Error(`Operation "${op.method} ${op.path}" returns a composite schema of primitives with ${camelCase(modelsByName[response.type].export)}, which cannot be distinguished at runtime`);
121
+ }
122
+ }
123
+ const matchingSpecResponse = specOp.responses[`${response.code}`];
124
+ if (!matchingSpecResponse) continue;
125
+ const specResponse = resolveIfRef(spec, matchingSpecResponse);
126
+ // When there's no content, the response type is 'void'
127
+ if (!specResponse.content) {
128
+ response.type = 'void';
129
+ continue;
130
+ }
131
+ const mediaTypes = Object.keys(specResponse.content);
132
+ response.mediaTypes = mediaTypes;
133
+ for (const mediaType of mediaTypes){
134
+ const responseContent = specResponse.content[mediaType];
135
+ const responseSchema = resolveIfRef(spec, responseContent.schema);
136
+ if (responseSchema) {
137
+ augmentModelFromSchema(spec, response, responseSchema, modelsByName);
138
+ }
139
+ if (STREAMING_CONTENT_TYPES.has(mediaType) && 'itemSchema' in responseContent) {
140
+ response.isJsonlStreaming = true;
141
+ response.itemSchemaModel = buildOrReferenceModel(spec, modelsByName, responseContent.itemSchema);
142
+ }
143
+ }
399
144
  }
400
- // Non referenced schemas won't have a model created as they are primitives and aren't covered by @heyapi
401
- // So we build the model here
402
- return await buildModelForPrimitive(spec, schema);
145
+ return modelImports;
403
146
  };
404
147
  /**
405
- * Copy vendor extensions from the first parameter to the second
406
- */
407
- const copyVendorExtensions = (object, vendorExtensions) => {
408
- Object.entries(object ?? {}).forEach(([key, value]) => {
409
- if (key.startsWith('x-')) {
410
- vendorExtensions[key] = value;
148
+ * Augment an operation's parameter models with schema-derived data, resolving
149
+ * request bodies and query/header collection formats. Returns the parameter
150
+ * model names to import.
151
+ */ const augmentParameters = (spec, op, specOp, modelsByName)=>{
152
+ const specParametersByKey = getSpecParametersByKey(spec, specOp, getSpecPathParameters(spec, op));
153
+ const modelImports = [];
154
+ for (const parameter of op.parameters){
155
+ if (parameter.export === 'reference') {
156
+ modelImports.push(parameter.type);
411
157
  }
158
+ const specParameter = specParametersByKey[specParameterKey({
159
+ in: parameter.in,
160
+ name: parameter.prop
161
+ })];
162
+ const specParameterSchema = resolveIfRef(spec, specParameter?.schema);
163
+ if (specParameterSchema) {
164
+ augmentModelFromSchema(spec, parameter, specParameterSchema, modelsByName);
165
+ }
166
+ if (parameter.in === 'body') {
167
+ augmentBodyParameter(spec, parameter, specOp, modelsByName);
168
+ } else if ((parameter.in === 'query' || parameter.in === 'header') && specParameter) {
169
+ parameter.collectionFormat = getCollectionFormat(parameter.in, specParameter);
170
+ if (parameter.in === 'query' && specParameter.allowReserved) {
171
+ parameter.allowReserved = true;
172
+ }
173
+ } else if (parameter.in === 'path' && specParameter) {
174
+ const style = specParameter.style;
175
+ if (style === 'matrix' || style === 'label') {
176
+ parameter.pathStyle = style;
177
+ parameter.pathExplode = !!specParameter.explode;
178
+ }
179
+ }
180
+ addLanguageTypes(parameter);
181
+ }
182
+ return modelImports;
183
+ };
184
+ /**
185
+ * Augment a request body parameter with its schema (the body is not in the
186
+ * spec's `parameters`, so it is resolved from `requestBody` here) and record
187
+ * its acceptable media types.
188
+ */ const augmentBodyParameter = (spec, parameter, specOp, modelsByName)=>{
189
+ // The request body parameter is named 'body' downstream.
190
+ parameter.name = 'body';
191
+ parameter.prop = 'body';
192
+ const specBody = resolveIfRef(spec, specOp?.requestBody);
193
+ if (!specBody) return;
194
+ if (parameter.mediaType) {
195
+ const bodySchema = resolveIfRef(spec, specBody.content?.[parameter.mediaType]?.schema);
196
+ if (bodySchema) {
197
+ augmentModelFromSchema(spec, parameter, bodySchema, modelsByName);
198
+ }
199
+ }
200
+ // Track all the media types that can be accepted in the request body
201
+ parameter.mediaTypes = Object.keys(specBody.content);
202
+ };
203
+ /**
204
+ * Translate an OpenAPI v3 parameter's style/explode into a v2-style
205
+ * collectionFormat used when serialising array parameters.
206
+ * @see https://spec.openapis.org/oas/v3.0.3.html#style-values
207
+ */ const getCollectionFormat = (position, specParameter)=>{
208
+ const style = specParameter.style ?? (position === 'query' ? 'form' : 'simple');
209
+ const explode = specParameter.explode ?? style === 'form';
210
+ if (position === 'header') {
211
+ return explode ? 'multi' : 'csv';
212
+ }
213
+ // `deepObject` serialises an object as `key[prop]=value` pairs regardless of
214
+ // explode; the object shape (not array collection) drives its serialisation.
215
+ if (style === 'deepObject') {
216
+ return 'deepObject';
217
+ }
218
+ return explode ? 'multi' : ({
219
+ spaceDelimited: 'ssv',
220
+ pipeDelimited: 'pipes',
221
+ simple: 'csv',
222
+ form: 'csv'
223
+ })[style] ?? 'multi';
224
+ };
225
+ /**
226
+ * Build the request parameter models for an operation — one model per parameter
227
+ * position (query/path/header/cookie/body), named e.g.
228
+ * `FooRequestQueryParameters`. Request bodies that can be represented directly
229
+ * (the sole parameter, or a non-clashing object reference) are inlined rather
230
+ * than given a wrapper model, and recorded on `op.explicitRequestBodyParameter`.
231
+ */ const buildRequestParameterModels = (op, modelsByName)=>{
232
+ if (!op.parameters || op.parameters.length === 0) {
233
+ return [];
234
+ }
235
+ // Whether the request body can be represented directly, without a wrapper
236
+ // model (ie the request will be the body itself).
237
+ const canInlineBody = (body)=>{
238
+ // If the body is the only parameter, we can inline it no matter the type
239
+ if (op.parameters.length === 1) {
240
+ return true;
241
+ }
242
+ // We inline object bodies, so long as they aren't dictionaries (as
243
+ // dictionary keys could clash with other parameters), and so long as they
244
+ // don't have a property name that clashes with another parameter
245
+ const hasClashingPropertyName = (modelsByName?.[body.type]?.properties ?? []).some((prop)=>op.parameters.some((param)=>param.name === prop.name));
246
+ return body.export === 'reference' && modelsByName?.[body.type]?.export !== 'dictionary' && !hasClashingPropertyName;
247
+ };
248
+ // Group parameters by their position (`in`: query/path/header/cookie/body),
249
+ // dropping any body that can be inlined.
250
+ const parametersByPosition = op.parameters.filter((p)=>!(p.in === 'body' && canInlineBody(p))).reduce((acc, p)=>({
251
+ ...acc,
252
+ [p.in]: [
253
+ ...acc[p.in] ?? [],
254
+ p
255
+ ]
256
+ }), {});
257
+ // The body parameter was already renamed to "body" by augmentBodyParameter.
258
+ op.explicitRequestBodyParameter = parametersByPosition['body']?.[0];
259
+ return Object.entries(parametersByPosition).map(([position, parameters])=>{
260
+ const name = `${op.operationIdPascalCase}Request${upperFirst(position)}Parameters`;
261
+ return createModel({
262
+ description: op.description,
263
+ export: 'interface',
264
+ name,
265
+ properties: parameters,
266
+ type: name,
267
+ isRequired: true
268
+ });
412
269
  });
413
270
  };
414
- const mutateWithOpenapiSchemaProperties = async (spec, model, schema, modelsByName, visited = new Set()) => {
271
+ /**
272
+ * Augment a single model with schema-derived data (from its matching spec
273
+ * schema, if any) and language-specific names and types.
274
+ */ const augmentModel = (spec, model, modelsByName)=>{
275
+ model.nameSnakeCase = toPythonName('model', model.name);
276
+ const matchingSpecModel = spec?.components?.schemas?.[model.name];
277
+ if (matchingSpecModel) {
278
+ const specModel = resolveIfRef(spec, matchingSpecModel);
279
+ augmentModelFromSchema(spec, model, specModel, modelsByName);
280
+ for (const property of model.properties){
281
+ const matchingSpecProperty = specModel.properties?.[property.name];
282
+ if (matchingSpecProperty) {
283
+ const specProperty = resolveIfRef(spec, matchingSpecProperty);
284
+ augmentModelFromSchema(spec, property, specProperty, modelsByName);
285
+ }
286
+ }
287
+ }
288
+ model.properties.forEach(addLanguageTypes);
289
+ // Resolve the discriminator's TypeScript property name for marshalling.
290
+ if (model.discriminator) {
291
+ model.discriminator.typescriptPropertyName = toTypeScriptName(model.discriminator.propertyName);
292
+ }
293
+ };
294
+ /**
295
+ * Ensure no two properties/parameters of an object model collapse onto the same
296
+ * TypeScript identifier (e.g. `foo-bar` and `foo_bar` both camelCase to
297
+ * `fooBar`, or a query and header parameter sharing a name within one request
298
+ * position). Such a clash would emit a type with duplicate members that does
299
+ * not compile, so fail fast with an actionable error instead.
300
+ */ const assertNoClashingPropertyNames = (model)=>{
301
+ const seen = new Map();
302
+ for (const property of model.properties){
303
+ // Composite members are unnamed (their names are empty); skip them.
304
+ if (!property.name) continue;
305
+ const existing = seen.get(property.typescriptName);
306
+ if (existing !== undefined && existing !== property.name) {
307
+ throw new Error(`Property name conflict in "${model.name}": "${existing}" and "${property.name}" both map to the TypeScript name "${property.typescriptName}". Please rename one of these in your OpenAPI specification.`);
308
+ }
309
+ seen.set(property.typescriptName, property.name);
310
+ }
311
+ };
312
+ /**
313
+ * The marshalling semantics of a property — two properties with the same key
314
+ * convert identically on the wire (so either branch's conversion is safe).
315
+ */ const marshallingKey = (m)=>{
316
+ if ([
317
+ 'date',
318
+ 'date-time'
319
+ ].includes(m.format ?? '')) return 'date';
320
+ if (m.type === 'binary') return 'binary';
321
+ // Enums serialise as their bare primitive (no conversion).
322
+ if (m.isEnum || m.export === 'enum') return 'plain';
323
+ if (COLLECTION_TYPES.has(m.export)) {
324
+ return `${m.export}<${m.link ? marshallingKey(m.link) : 'plain'}>`;
325
+ }
326
+ if (m.export === 'tuple') {
327
+ return `tuple<${m.properties.map(marshallingKey).join(',')}>`;
328
+ }
329
+ if (m.export === 'reference' && !PRIMITIVE_TYPES.has(m.type)) {
330
+ return `ref:${m.type}`;
331
+ }
332
+ return 'plain';
333
+ };
334
+ /**
335
+ * A non-discriminated `oneOf`/`anyOf` of object members marshals by composing
336
+ * every member, taking only the properties present on the value. That is sound
337
+ * exactly when no wire property is claimed by two members with different
338
+ * marshalling (e.g. a `date-time` in one and a plain string in another) —
339
+ * otherwise the branch cannot be determined without guessing, so fail fast and
340
+ * ask for a discriminator rather than corrupt data at runtime.
341
+ */ const assertNoConflictingUnionMemberMarshalling = (model)=>{
342
+ if (model.export !== 'one-of' && model.export !== 'any-of' || model.discriminator) {
343
+ return;
344
+ }
345
+ const seen = new Map();
346
+ for (const member of model.composedModels ?? []){
347
+ for (const property of member.properties){
348
+ if (!property.name) continue;
349
+ const key = marshallingKey(property);
350
+ const existing = seen.get(property.name);
351
+ if (existing && existing.key !== key) {
352
+ throw new Error(`Schema "${model.name}" is a non-discriminated ${camelCase(model.export)} of "${existing.memberName}" and "${member.name}", which both declare a property "${property.name}" with different types, so the correct conversion cannot be determined. Add a discriminator to the union in your OpenAPI specification (e.g. with Pydantic, Field(discriminator=...)).`);
353
+ }
354
+ if (!existing) {
355
+ seen.set(property.name, {
356
+ memberName: member.name,
357
+ key
358
+ });
359
+ }
360
+ }
361
+ }
362
+ };
363
+ /**
364
+ * An `application/x-www-form-urlencoded` body is form-encoded as `key=value`
365
+ * pairs, so the wire form is only defined for a schema with named properties
366
+ * (an object) or a primitive sent verbatim. A top-level array or tuple has no
367
+ * property names to key on — encoding it would emit index keys (`0=a&1=b`) that
368
+ * no form parser can decode — so fail fast rather than generate a client that
369
+ * is silently wrong on the wire.
370
+ */ const assertEncodableUrlEncodedBody = (op)=>{
371
+ const body = op.parametersBody;
372
+ if (!body?.mediaTypes) return;
373
+ const mediaTypes = Array.isArray(body.mediaTypes) ? body.mediaTypes : [
374
+ body.mediaTypes
375
+ ];
376
+ // Match the wire media type the client actually sends: JSON is preferred, so
377
+ // an array body offering both JSON and urlencoded is sent as JSON and is fine.
378
+ const chosenMediaType = mediaTypes.find((mt)=>mt === 'application/json' || mt.endsWith('+json')) ?? mediaTypes[0];
379
+ if (chosenMediaType !== 'application/x-www-form-urlencoded') return;
380
+ if (body.isPrimitive) return;
381
+ if (body.export === 'array' || body.export === 'tuple') {
382
+ throw new Error(`Operation ${op.method} ${op.path} has an application/x-www-form-urlencoded request body whose schema is a ${body.export}, which has no defined form encoding. Use an object schema (its properties become the form fields) or a primitive schema (sent verbatim) in your OpenAPI specification.`);
383
+ }
384
+ };
385
+ /**
386
+ * Group operations by their (camelCased) tags, collecting any untagged
387
+ * operations separately.
388
+ */ const groupOperationsByTag = (allOperations)=>{
389
+ const isTagged = (op)=>!!op.tags && op.tags.length > 0;
390
+ const operationsByTag = allOperations.filter(isTagged).flatMap((op)=>op.tags.map((tag)=>[
391
+ camelCase(tag),
392
+ op
393
+ ])).reduce((acc, [tag, op])=>({
394
+ ...acc,
395
+ [tag]: [
396
+ ...acc[tag] ?? [],
397
+ op
398
+ ]
399
+ }), {});
400
+ return {
401
+ operationsByTag,
402
+ untaggedOperations: allOperations.filter((op)=>!isTagged(op))
403
+ };
404
+ };
405
+ /**
406
+ * Resolve a schema to its model: an existing named model for a `$ref`, or a
407
+ * freshly built-and-augmented model for an inline (nested value) schema.
408
+ */ const buildOrReferenceModel = (spec, modelsByName, schema)=>{
409
+ if (isRef(schema)) {
410
+ const name = splitRef(schema.$ref)[2];
411
+ return modelsByName[name];
412
+ }
413
+ const model = buildInlineModel(spec, schema);
414
+ linkModel(spec, modelsByName, model, schema);
415
+ augmentModelFromSchema(spec, model, schema, modelsByName);
416
+ return model;
417
+ };
418
+ /**
419
+ * The `x-*` vendor extensions declared on an object.
420
+ */ const vendorExtensionsOf = (object)=>Object.fromEntries(Object.entries(object ?? {}).filter(([key])=>key.startsWith('x-')));
421
+ const augmentModelFromSchema = (spec, model, schema, modelsByName, visited = new Set())=>{
415
422
  model.format = schema.format;
416
- model.isInteger = schema.type === 'integer';
417
- model.isShort = schema.format === 'int32';
418
- model.isLong = schema.format === 'int64';
419
423
  model.deprecated = !!schema.deprecated;
420
424
  model.openapiType = schema.type;
421
- model.isNotSchema = !!schema.not;
422
425
  model.isEnum = !!schema.enum && schema.enum.length > 0;
423
- // Copy any schema vendor extensions
424
- model.vendorExtensions = {};
425
- copyVendorExtensions(schema, model.vendorExtensions);
426
- // Use our added vendor extension
427
- model.isHoisted = !!model.vendorExtensions?.['x-aws-nx-hoisted'];
428
- // Ensure models with additional properties are handled correctly
426
+ model.vendorExtensions = vendorExtensionsOf(schema);
427
+ // A "dictionary" has only additional properties; an "interface" may mix
428
+ // explicit and additional properties.
429
429
  if (schema.additionalProperties) {
430
- const additionalPropertiesModel = await buildOrReferenceModel(spec, modelsByName, schema.additionalProperties === true ? {} : schema.additionalProperties);
431
- // The original models treat _some_ objects with additional properties as a "dictionary", and others as an "interface"
432
- // For the purposes of our code generation, we define a "dictionary" to be a model with no explicit properties, only
433
- // additional properties. Interfaces can have a mixture of explicit properties and additional properties.
430
+ const additionalPropertiesModel = buildOrReferenceModel(spec, modelsByName, schema.additionalProperties === true ? {} : schema.additionalProperties);
434
431
  if (model.export === 'dictionary') {
435
- // Dictionaries contain a special property which is the model itself. Other properties are explicit properties.
436
- const explicitProperties = model.properties.filter((p) => !(p.export === 'dictionary' && p.name === model.name));
432
+ // A dictionary carries a self-referential property; the rest are explicit
433
+ const explicitProperties = model.properties.filter((p)=>!(p.export === 'dictionary' && p.name === model.name));
434
+ // Explicit properties make this an interface rather than a dictionary
437
435
  if (explicitProperties.length > 0 || schema.patternProperties) {
438
- // Treat this model as an interface instead of a dictionary, since this has
439
- // explicit properties
440
436
  model.export = 'interface';
441
437
  model.hasAdditionalProperties = true;
442
438
  model.additionalPropertiesModel = additionalPropertiesModel;
443
439
  model.properties = explicitProperties;
444
440
  }
445
- }
446
- else {
441
+ } else {
447
442
  model.hasAdditionalProperties = true;
448
443
  model.additionalPropertiesModel = additionalPropertiesModel;
449
- // There's a special property named [key: string] which is the definition of the additional properties
450
- // We remove this so we don't render it as a regular property.
451
- model.properties = (model.properties ?? []).filter((p) => p.name !== '[key: string]');
452
444
  }
453
445
  }
454
- // Ensure models with pattern properties are handled correctly
446
+ // Pattern properties can have different value types per pattern, so the model
447
+ // is an interface rather than a dictionary.
455
448
  if (schema.patternProperties) {
456
- const patternProperties = (0, refs_1.resolveIfRef)(spec, schema.patternProperties);
457
- const patternPropertiesModels = [];
458
- // When there are pattern properties, we don't want to treat models as dictionaries since there can be more than one type of "value"
459
- // depending on what pattern the key matches
449
+ const patternProperties = resolveIfRef(spec, schema.patternProperties);
460
450
  if (model.export === 'dictionary') {
461
451
  model.export = 'interface';
462
452
  }
463
- for (const [pattern, patternProperty] of Object.entries(patternProperties)) {
464
- const patternPropertyModel = await buildOrReferenceModel(spec, modelsByName, patternProperty);
465
- if (patternPropertyModel) {
466
- patternPropertiesModels.push({
467
- pattern,
468
- model: patternPropertyModel,
469
- });
470
- }
471
- }
472
453
  model.hasPatternProperties = true;
473
- model.patternPropertiesModels = patternPropertiesModels;
454
+ model.patternPropertiesModels = Object.entries(patternProperties).map(([pattern, patternProperty])=>({
455
+ pattern,
456
+ model: buildOrReferenceModel(spec, modelsByName, patternProperty)
457
+ })).filter((entry)=>!!entry.model);
474
458
  }
475
- mutateModelWithAdditionalTypes(model);
459
+ addLanguageTypes(model);
476
460
  visited.add(model);
477
- const modelLink = (0, types_1.flattenModelLink)(model.link);
478
- // Also apply to array items recursively
479
- if (model.export === 'array' &&
480
- modelLink &&
481
- 'items' in schema &&
482
- schema.items &&
483
- !visited.has(modelLink)) {
484
- const subSchema = (0, refs_1.resolveIfRef)(spec, schema.items);
485
- await mutateWithOpenapiSchemaProperties(spec, modelLink, subSchema, modelsByName, visited);
486
- }
487
- // Also apply to object properties recursively
488
- if (model.export === 'dictionary' &&
489
- model.link &&
490
- 'additionalProperties' in schema &&
491
- schema.additionalProperties &&
492
- !visited.has(modelLink)) {
493
- const subSchema = (0, refs_1.resolveIfRef)(spec, schema.additionalProperties);
494
- // Additional properties can be "true" rather than a type
495
- if (subSchema !== true) {
496
- await mutateWithOpenapiSchemaProperties(spec, modelLink, subSchema, modelsByName, visited);
497
- }
498
- }
499
- for (const property of model.properties.filter((p) => !visited.has(p) && schema.properties?.[(0, lodash_trim_1.default)(p.name, `"'`)])) {
500
- const subSchema = (0, refs_1.resolveIfRef)(spec, schema.properties[(0, lodash_trim_1.default)(property.name, `"'`)]);
501
- await mutateWithOpenapiSchemaProperties(spec, property, subSchema, modelsByName, visited);
461
+ const recurse = (target, subSchema)=>augmentModelFromSchema(spec, target, subSchema, modelsByName, visited);
462
+ // Array element type.
463
+ if (model.export === 'array' && model.link && 'items' in schema && schema.items && !visited.has(model.link)) {
464
+ recurse(model.link, resolveIfRef(spec, schema.items));
502
465
  }
503
- if (types_1.COMPOSED_SCHEMA_TYPES.has(model.export)) {
504
- for (let i = 0; i < model.properties.length; i++) {
505
- const subSchema = (0, refs_1.resolveIfRef)(spec, schema[(0, lodash_camelcase_1.default)(model.export)]?.[i]);
506
- if (subSchema) {
507
- await mutateWithOpenapiSchemaProperties(spec, model.properties[i], subSchema, modelsByName, visited);
508
- }
466
+ // Dictionary value type (additionalProperties may be `true` rather than a
467
+ // schema).
468
+ if (model.export === 'dictionary' && model.link && 'additionalProperties' in schema && schema.additionalProperties && !visited.has(model.link)) {
469
+ const subSchema = resolveIfRef(spec, schema.additionalProperties);
470
+ if (subSchema !== true) {
471
+ recurse(model.link, subSchema);
509
472
  }
510
473
  }
511
- };
512
- /**
513
- * Ensure that the "link" property of all dictionary/array models and properties are set recursively
514
- */
515
- const ensureModelLinks = (spec, data) => {
516
- const modelsByName = Object.fromEntries(data.models.map((m) => [m.name, m]));
517
- const visited = new Set();
518
- // Ensure set for all models
519
- data.models.forEach((model) => {
520
- const schema = (0, refs_1.resolveIfRef)(spec, spec?.components?.schemas?.[model.name]);
521
- if (schema) {
522
- // Object schemas should be typed as the model we will create
523
- if (schema.type === 'object' &&
524
- (schema.properties || schema.patternProperties)) {
525
- model.type = model.name;
474
+ // Tuple element types (3.1 `prefixItems`), positionally.
475
+ if (model.export === 'tuple' && 'prefixItems' in schema) {
476
+ const memberSchemas = schema.prefixItems ?? [];
477
+ model.properties.forEach((member, i)=>{
478
+ const subSchema = resolveIfRef(spec, memberSchemas[i]);
479
+ if (subSchema && !visited.has(member)) {
480
+ recurse(member, subSchema);
526
481
  }
527
- _ensureModelLinks(spec, modelsByName, model, schema, visited);
528
- }
529
- });
530
- // Ensure set for all parameters and responses
531
- data.services.forEach((service) => {
532
- service.operations.forEach((op) => {
533
- const specOp = spec?.paths?.[op.path]?.[op.method.toLowerCase()];
534
- const specParametersByName = Object.fromEntries((specOp?.parameters ?? []).map((p) => {
535
- const param = (0, refs_1.resolveIfRef)(spec, p);
536
- return [param.name, param];
537
- }));
538
- op.parameters.forEach((parameter) => {
539
- const specParameter = specParametersByName[parameter.prop];
540
- const specParameterSchema = (0, refs_1.resolveIfRef)(spec, specParameter?.schema);
541
- if (specParameterSchema) {
542
- _ensureModelLinks(spec, modelsByName, parameter, specParameterSchema, visited);
543
- }
544
- else if (parameter.in === 'body') {
545
- // Body is not in the "parameters" section of the OpenAPI spec so we handle it in an explicit case here
546
- const specBody = (0, refs_1.resolveIfRef)(spec, specOp?.requestBody);
547
- const specBodySchema = (0, refs_1.resolveIfRef)(spec, specBody?.content?.[parameter.mediaType]?.schema);
548
- if (specBodySchema) {
549
- _ensureModelLinks(spec, modelsByName, parameter, specBodySchema, visited);
550
- }
551
- }
552
- });
553
- op.responses.forEach((response) => {
554
- const specResponse = (0, refs_1.resolveIfRef)(spec, specOp?.responses?.[response.code]);
555
- const mediaTypes = Object.keys(specResponse?.content ?? {});
556
- mediaTypes.forEach((mediaType) => {
557
- const responseSchema = (0, refs_1.resolveIfRef)(spec, specResponse?.content?.[mediaType]?.schema);
558
- if (responseSchema) {
559
- _ensureModelLinks(spec, modelsByName, response, responseSchema, visited);
560
- }
561
- });
562
- });
563
482
  });
564
- });
565
- };
566
- const _ensureModelLinks = (spec, modelsByName, model, schema, visited) => {
567
- if (visited.has(model)) {
568
- return;
569
- }
570
- visited.add(model);
571
- if (model.export === 'dictionary' &&
572
- 'additionalProperties' in schema &&
573
- schema.additionalProperties) {
574
- if ((0, refs_1.isRef)(schema.additionalProperties)) {
575
- const name = (0, refs_1.splitRef)(schema.additionalProperties.$ref)[2];
576
- if (modelsByName[name] && !model.link) {
577
- model.link = modelsByName[name];
578
- }
579
- }
580
- else if (model.link && typeof schema.additionalProperties !== 'boolean') {
581
- _ensureModelLinks(spec, modelsByName, (0, types_1.flattenModelLink)(model.link), schema.additionalProperties, visited);
582
- }
583
- }
584
- else if (model.export === 'array' && 'items' in schema && schema.items) {
585
- if ((0, refs_1.isRef)(schema.items)) {
586
- const name = (0, refs_1.splitRef)(schema.items.$ref)[2];
587
- if (modelsByName[name] && !model.link) {
588
- model.link = modelsByName[name];
589
- }
590
- }
591
- else if (model.link) {
592
- _ensureModelLinks(spec, modelsByName, (0, types_1.flattenModelLink)(model.link), schema.items, visited);
593
- }
594
483
  }
595
- model.properties
596
- .filter((p) => !visited.has(p) && schema.properties?.[(0, lodash_trim_1.default)(p.name, `"'`)])
597
- .forEach((property) => {
598
- const subSchema = (0, refs_1.resolveIfRef)(spec, schema.properties[(0, lodash_trim_1.default)(property.name, `"'`)]);
599
- _ensureModelLinks(spec, modelsByName, property, subSchema, visited);
600
- });
601
- if (types_1.COMPOSED_SCHEMA_TYPES.has(model.export)) {
602
- model.properties.forEach((property, i) => {
603
- const subSchema = (0, refs_1.resolveIfRef)(spec, schema[(0, lodash_camelcase_1.default)(model.export)]?.[i]);
484
+ model.properties.filter((p)=>!visited.has(p) && schema.properties?.[trim(p.name, `"'`)]).forEach((property)=>recurse(property, resolveIfRef(spec, schema.properties[trim(property.name, `"'`)])));
485
+ if (COMPOSED_SCHEMA_TYPES.has(model.export)) {
486
+ const memberSchemas = compositeMemberSchemas(schema, model.export);
487
+ model.properties.forEach((property, i)=>{
488
+ const subSchema = resolveIfRef(spec, memberSchemas[i]);
604
489
  if (subSchema) {
605
- _ensureModelLinks(spec, modelsByName, property, subSchema, visited);
490
+ recurse(property, subSchema);
606
491
  }
607
492
  });
608
493
  }
609
494
  };
610
- /**
611
- * Mutates the given data to ensure composite models (ie allOf, oneOf, anyOf) have the necessary
612
- * properties for representing them in generated code. Adds `composedModels` and `composedPrimitives`
613
- * which contain the models and primitive types that each model is composed of.
614
- */
615
- const ensureCompositeModels = (data) => {
616
- const visited = new Set();
617
- data.models.forEach((model) => mutateModelWithCompositeProperties(data, model, visited));
618
- };
619
- const mutateModelWithCompositeProperties = (data, model, visited) => {
620
- if (types_1.COMPOSED_SCHEMA_TYPES.has(model.export) && !visited.has(model)) {
621
- visited.add(model);
622
- // Find the models/primitives which this is composed from
623
- const composedModelReferences = model.properties.filter((p) => !p.name && p.export === 'reference');
624
- const composedPrimitives = model.properties.filter((p) => !p.name && p.export !== 'reference');
625
- const modelsByName = Object.fromEntries(data.models.map((m) => [m.name, m]));
626
- let composedModels = composedModelReferences.flatMap((r) => modelsByName[r.type] ? [modelsByName[r.type]] : []);
627
- // Recursively resolve composed properties of properties, to ensure mixins for all-of include all recursive all-of properties
628
- composedModels.forEach((m) => mutateModelWithCompositeProperties(data, m, visited));
629
- // Enums are models, however they are serialised as primitives and so should be moved to the primitives list
630
- composedPrimitives.push(...composedModels.filter((m) => m.export === 'enum'));
631
- composedModels = composedModels.filter((m) => m.export !== 'enum');
632
- // When multiple arrays of non-primitives are composed using allOf/oneOf/anyOf, it's not possible to distinguish at runtime which
633
- // type it is, and so we validate this away.
634
- // TODO: consider honouring more advanced OpenAPI spec features like "discriminators" which can help for this case, but in practice
635
- // users are unlikely to model their API this way
636
- const isPrimitiveArray = (m) => {
637
- if (m.link && ['array', 'dictionary'].includes(m.export)) {
638
- return isPrimitiveArray((0, types_1.flattenModelLink)(m.link));
639
- }
640
- return (types_1.PRIMITIVE_TYPES.has(m.type) && !['date', 'date-time'].includes(m.format));
641
- };
642
- const arrayComposedModels = composedPrimitives.filter((m) => m.export === 'array' && !isPrimitiveArray(m));
643
- if (arrayComposedModels.length > 1) {
644
- throw new Error(`Schema "${model.name}" defines ${(0, lodash_camelcase_1.default)(model.export)} with multiple array types which cannot be distinguished at runtime.`);
645
- }
646
- // For all-of models, we include all composed model properties.
647
- if (model.export === 'all-of') {
648
- if (composedPrimitives.length > 0) {
649
- throw new Error(`Schema "${model.name}" defines allOf with non-object types. allOf may only compose object types in the OpenAPI specification.`);
650
- }
651
- }
652
- model.composedModels = composedModels;
653
- model.composedPrimitives = composedPrimitives;
654
- }
655
- };
656
- /**
657
- * Mutates the given model to add language specific types and names
658
- */
659
- const mutateModelWithAdditionalTypes = (model) => {
660
- // Trim any surrounding quotes from name
661
- model.name = (0, lodash_trim_1.default)(model.name, `"'`);
662
- model.typescriptName = (0, languages_1.toTypeScriptName)(model.name);
663
- model.typescriptType = (0, languages_1.toTypeScriptType)(model);
664
- model.pythonName = (0, languages_1.toPythonName)('property', model.name);
665
- model.pythonType = (0, languages_1.toPythonType)(model);
666
- model.isPrimitive =
667
- types_1.PRIMITIVE_TYPES.has(model.type) &&
668
- !types_1.COMPOSED_SCHEMA_TYPES.has(model.export) &&
669
- !types_1.COLLECTION_TYPES.has(model.export);
495
+ const addLanguageTypes = (model)=>{
496
+ model.name = trim(model.name, `"'`);
497
+ model.typescriptName = toTypeScriptName(model.name);
498
+ model.typescriptType = toTypeScriptType(model);
499
+ model.pythonName = toPythonName('property', model.name);
500
+ model.pythonType = toPythonType(model);
501
+ model.isPrimitive = PRIMITIVE_TYPES.has(model.type) && !COMPOSED_SCHEMA_TYPES.has(model.export) && !COLLECTION_TYPES.has(model.export);
670
502
  };
671
- /**
672
- * Determine whether or not an operation is a mutation
673
- */
674
- const isOperationMutation = (op) => {
675
- // Let the user override whether an operation is a query or mutation using x-mutation/x-query
503
+ const isOperationMutation = (op)=>{
504
+ // x-mutation/x-query override the HTTP-method default.
676
505
  const { vendorExtensions } = op;
677
- if (vendorExtensions?.[types_1.VENDOR_EXTENSIONS.MUTATION]) {
506
+ if (vendorExtensions?.[VENDOR_EXTENSIONS.MUTATION]) {
678
507
  return true;
679
- }
680
- else if (vendorExtensions?.[types_1.VENDOR_EXTENSIONS.QUERY]) {
508
+ } else if (vendorExtensions?.[VENDOR_EXTENSIONS.QUERY]) {
681
509
  return false;
682
510
  }
683
- // Assume a restful API and treat mutative HTTP methods as mutations
684
- return ['PATCH', 'POST', 'PUT', 'DELETE'].includes(op.method);
511
+ return [
512
+ 'PATCH',
513
+ 'POST',
514
+ 'PUT',
515
+ 'DELETE'
516
+ ].includes(op.method);
685
517
  };
686
- /**
687
- * Add infinite query details to the operation
688
- */
689
- const mutateOperationWithInfiniteQueryDetails = (op) => {
518
+ const augmentInfiniteQuery = (op)=>{
690
519
  const { paginationDisabled, cursorPropertyName } = getCursorOptions(op);
691
- // Allow users to customise the "cursor" property used for paginated requests
692
- const cursorProperty = op.parameters.find((p) => p.name === cursorPropertyName);
693
- // The operation is an infinite query if:
694
- // - x-cursor is not set to 'false' (this allows users to disable infinite queries for operations that accept a 'cursor')
695
- // - the operation accepts a parameter named 'cursor', or a parameter named as the user specified with x-cursor
520
+ const cursorProperty = op.parameters.find((p)=>p.name === cursorPropertyName);
521
+ // An infinite query is a paginated operation that accepts the cursor parameter
696
522
  op.isInfiniteQuery = !paginationDisabled && !!cursorProperty;
697
523
  if (op.isInfiniteQuery) {
698
524
  op.infiniteQueryCursorProperty = cursorProperty;
699
525
  }
700
526
  };
701
527
  /**
702
- * Extracts the cursor options for this operation based on the vendor extensions
703
- *
704
- * Valid usage of x-cursor:
528
+ * Resolve the pagination cursor options from an operation's `x-cursor` vendor
529
+ * extension. Accepted forms (object variants exist because Smithy vendor
530
+ * extensions must be objects):
705
531
  *
706
- * x-cursor: 'property' - customises the input property used for pagination
707
- * x-cursor: false - disables pagination for the operation (ie the operation would have pagination by default as an input 'cursor' property exists)
708
- *
709
- * We also support object equivalents of the above, since Smithy vendor extensions can only be objects
710
- *
711
- * x-cursor: { inputToken: 'property' }
712
- * x-cursor: { enabled: false }
713
- */
714
- const getCursorOptions = (op) => {
715
- const { vendorExtensions } = op;
716
- const cursorExtension = vendorExtensions?.[types_1.VENDOR_EXTENSIONS.CURSOR];
717
- // By default pagination isn't explicitly disabled and the cursor property to look for is 'cursor'
718
- let paginationDisabled = false;
719
- let cursorPropertyName = 'cursor';
720
- if (typeof cursorExtension === 'boolean' && cursorExtension === false) {
721
- paginationDisabled = true;
722
- }
723
- else if (typeof cursorExtension === 'string') {
724
- cursorPropertyName = cursorExtension;
725
- }
726
- else if (typeof cursorExtension === 'object') {
727
- if (cursorExtension?.enabled === false) {
728
- paginationDisabled = true;
729
- }
730
- if (cursorExtension?.inputToken &&
731
- typeof cursorExtension.inputToken === 'string') {
732
- cursorPropertyName = cursorExtension.inputToken;
733
- }
532
+ * - `'property'` / `{ inputToken: 'property' }` the input property to page on
533
+ * - `false` / `{ enabled: false }` disable pagination
534
+ */ const getCursorOptions = (op)=>{
535
+ const cursor = op.vendorExtensions?.[VENDOR_EXTENSIONS.CURSOR];
536
+ // Defaults: pagination enabled, paging on a property named 'cursor'.
537
+ if (cursor === false) {
538
+ return {
539
+ paginationDisabled: true,
540
+ cursorPropertyName: 'cursor'
541
+ };
542
+ }
543
+ if (typeof cursor === 'string') {
544
+ return {
545
+ paginationDisabled: false,
546
+ cursorPropertyName: cursor
547
+ };
734
548
  }
735
- // x-cursor can be: a string (indicating pagination is enabled and the property name to use)
549
+ const options = cursor ?? {};
736
550
  return {
737
- paginationDisabled,
738
- cursorPropertyName,
551
+ paginationDisabled: options.enabled === false,
552
+ cursorPropertyName: typeof options.inputToken === 'string' ? options.inputToken : 'cursor'
739
553
  };
740
554
  };
741
555
  /**
742
- * Add additional data to an operation for code generation decisions
743
- */
744
- const mutateOperationWithAdditionalData = (op) => {
745
- // Add mutation/query details
556
+ * Add query/mutation, streaming and infinite-query flags to an operation.
557
+ */ const augmentOperationBehaviour = (op)=>{
746
558
  const isMutation = isOperationMutation(op);
747
559
  op.isMutation = isMutation;
748
560
  op.isQuery = !isMutation;
749
- // Streaming responses
750
- op.isStreaming =
751
- !!op.vendorExtensions?.[types_1.VENDOR_EXTENSIONS.STREAMING] ||
752
- op.responses.some((res) => res.isJsonlStreaming);
753
- // Set the result type for the client method to the item schema so that
754
- // it will resolve to AsyncIterableIterator<{itemSchemaModel.name}>
755
- const jsonlResponse = op.responses.find((res) => res.isJsonlStreaming);
561
+ op.isStreaming = !!op.vendorExtensions?.[VENDOR_EXTENSIONS.STREAMING] || op.responses.some((res)=>res.isJsonlStreaming);
562
+ // For JSON-lines streaming, the result is each streamed item, so the client
563
+ // method returns AsyncIterableIterator<itemSchemaModel>. Named (hoisted)
564
+ // item schemas become references; inline primitives keep their own type.
565
+ const jsonlResponse = op.responses.find((res)=>res.isJsonlStreaming);
756
566
  if (jsonlResponse) {
757
567
  const itemSchemaModel = jsonlResponse.itemSchemaModel;
758
568
  const result = op.result;
759
569
  if (result && itemSchemaModel) {
760
- result.type = itemSchemaModel.name;
761
- result.typescriptType = itemSchemaModel.name;
762
- result.export = 'reference';
570
+ if (itemSchemaModel.name) {
571
+ result.type = itemSchemaModel.name;
572
+ result.typescriptType = itemSchemaModel.name;
573
+ result.export = 'reference';
574
+ } else {
575
+ result.type = itemSchemaModel.type;
576
+ result.typescriptType = itemSchemaModel.typescriptType;
577
+ result.export = itemSchemaModel.export;
578
+ result.format = itemSchemaModel.format;
579
+ result.link = itemSchemaModel.link;
580
+ result.isPrimitive = itemSchemaModel.isPrimitive;
581
+ }
763
582
  }
764
583
  }
765
584
  // Add infinite query details if applicable
766
585
  if (!isMutation) {
767
- mutateOperationWithInfiniteQueryDetails(op);
586
+ augmentInfiniteQuery(op);
768
587
  }
769
588
  };
589
+
770
590
  //# sourceMappingURL=codegen-data.js.map