@aws/nx-plugin 1.0.0-rc.3 → 1.0.0-rc.31

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 (1017) hide show
  1. package/LICENSE-THIRD-PARTY +6746 -6133
  2. package/README.md +7 -7
  3. package/executors.json +9 -0
  4. package/generators.json +100 -1
  5. package/package.json +35 -17
  6. package/src/agentcore-gateway/attach-upstream.d.ts +33 -0
  7. package/src/agentcore-gateway/attach-upstream.js +38 -0
  8. package/src/agentcore-gateway/attach-upstream.js.map +1 -0
  9. package/src/agentcore-gateway/files/cedar/policies/README.md +52 -0
  10. package/src/agentcore-gateway/files/cedar/policies/permit-all.cedar +11 -0
  11. package/src/agentcore-gateway/files/project/local-dev.ts.template +134 -0
  12. package/src/agentcore-gateway/gateway-connection/generator.d.ts +21 -0
  13. package/src/agentcore-gateway/gateway-connection/generator.js +101 -0
  14. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -0
  15. package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
  16. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
  17. package/src/agentcore-gateway/gateway-connection/schema.d.ts +13 -0
  18. package/src/agentcore-gateway/gateway-connection/schema.json +31 -0
  19. package/src/agentcore-gateway/generator.d.ts +25 -0
  20. package/src/agentcore-gateway/generator.js +149 -0
  21. package/src/agentcore-gateway/generator.js.map +1 -0
  22. package/src/agentcore-gateway/mcp-connection/generator.d.ts +19 -0
  23. package/src/agentcore-gateway/mcp-connection/generator.js +59 -0
  24. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -0
  25. package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
  26. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
  27. package/src/agentcore-gateway/mcp-connection/schema.d.ts +13 -0
  28. package/src/agentcore-gateway/mcp-connection/schema.json +31 -0
  29. package/src/agentcore-gateway/schema.d.js +6 -0
  30. package/src/agentcore-gateway/schema.d.js.map +1 -0
  31. package/src/agentcore-gateway/schema.d.ts +17 -0
  32. package/src/agentcore-gateway/schema.json +70 -0
  33. package/src/bin/aws-nx-mcp.js +14 -0
  34. package/src/bin/aws-nx-mcp.js.map +1 -0
  35. package/src/connection/{agent-serve-local.d.ts → agent-local-dev.d.ts} +7 -7
  36. package/src/connection/agent-local-dev.js +42 -0
  37. package/src/connection/agent-local-dev.js.map +1 -0
  38. package/src/connection/agent-runtime-config.d.ts +1 -1
  39. package/src/connection/agent-runtime-config.js +9 -14
  40. package/src/connection/agent-runtime-config.js.map +1 -1
  41. package/src/connection/generator.d.ts +7 -14
  42. package/src/connection/generator.js +158 -177
  43. package/src/connection/generator.js.map +1 -1
  44. package/src/connection/local-dev.d.ts +15 -0
  45. package/src/connection/local-dev.js +37 -0
  46. package/src/connection/local-dev.js.map +1 -0
  47. package/src/connection/schema.d.js +6 -0
  48. package/src/connection/schema.d.js.map +1 -0
  49. package/src/connection/schema.d.ts +1 -0
  50. package/src/connection/schema.json +5 -0
  51. package/src/connection/supported-connections.d.ts +98 -0
  52. package/src/connection/supported-connections.js +138 -0
  53. package/src/connection/supported-connections.js.map +1 -0
  54. package/src/index.js +2 -5
  55. package/src/index.js.map +1 -1
  56. package/src/infra/app/__snapshots__/generator.spec.ts.snap +51 -81
  57. package/src/infra/app/generator.d.ts +3 -3
  58. package/src/infra/app/generator.js +141 -123
  59. package/src/infra/app/generator.js.map +1 -1
  60. package/src/infra/app/schema.d.js +6 -0
  61. package/src/infra/app/schema.d.js.map +1 -0
  62. package/src/infra/app/schema.d.ts +1 -1
  63. package/src/infra/app/schema.json +5 -0
  64. package/src/license/__snapshots__/config.spec.ts.snap +23 -0
  65. package/src/license/config-types.d.ts +18 -1
  66. package/src/license/config-types.js +8 -2
  67. package/src/license/config-types.js.map +1 -1
  68. package/src/license/config.d.ts +65 -7
  69. package/src/license/config.js +442 -109
  70. package/src/license/config.js.map +1 -1
  71. package/src/license/dependency-check/check.d.ts +16 -0
  72. package/src/license/dependency-check/check.js +116 -0
  73. package/src/license/dependency-check/check.js.map +1 -0
  74. package/src/license/dependency-check/collectors/collector.d.ts +21 -0
  75. package/src/license/dependency-check/collectors/collector.js +46 -0
  76. package/src/license/dependency-check/collectors/collector.js.map +1 -0
  77. package/src/license/dependency-check/collectors/npm-collector.d.ts +10 -0
  78. package/src/license/dependency-check/collectors/npm-collector.js +68 -0
  79. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -0
  80. package/src/license/dependency-check/collectors/python-collector.d.ts +23 -0
  81. package/src/license/dependency-check/collectors/python-collector.js +114 -0
  82. package/src/license/dependency-check/collectors/python-collector.js.map +1 -0
  83. package/src/license/dependency-check/evaluator.d.ts +9 -0
  84. package/src/license/dependency-check/evaluator.js +94 -0
  85. package/src/license/dependency-check/evaluator.js.map +1 -0
  86. package/src/license/dependency-check/executor-schema.json +6 -0
  87. package/src/license/dependency-check/executor.d.ts +9 -0
  88. package/src/license/dependency-check/executor.js +51 -0
  89. package/src/license/dependency-check/executor.js.map +1 -0
  90. package/src/license/dependency-check/pre-approved.d.ts +6 -0
  91. package/src/license/dependency-check/pre-approved.js +1893 -0
  92. package/src/license/dependency-check/pre-approved.js.map +1 -0
  93. package/src/license/dependency-check/types.d.ts +45 -0
  94. package/src/license/dependency-check/types.js +6 -0
  95. package/src/license/dependency-check/types.js.map +1 -0
  96. package/src/license/generator.d.ts +3 -3
  97. package/src/license/generator.js +127 -30
  98. package/src/license/generator.js.map +1 -1
  99. package/src/license/index.d.ts +8 -0
  100. package/src/license/index.js +7 -0
  101. package/src/license/index.js.map +1 -0
  102. package/src/license/known-exceptions.d.ts +7 -0
  103. package/src/license/known-exceptions.js +39 -0
  104. package/src/license/known-exceptions.js.map +1 -0
  105. package/src/license/schema.d.js +6 -0
  106. package/src/license/schema.d.js.map +1 -0
  107. package/src/license/schema.d.ts +7 -0
  108. package/src/license/schema.json +11 -0
  109. package/src/license/sync/generator.d.ts +2 -2
  110. package/src/license/sync/generator.js +100 -125
  111. package/src/license/sync/generator.js.map +1 -1
  112. package/src/license/sync/project-file-sync.d.ts +3 -3
  113. package/src/license/sync/project-file-sync.js +28 -35
  114. package/src/license/sync/project-file-sync.js.map +1 -1
  115. package/src/mcp-server/generator-info.d.ts +5 -1
  116. package/src/mcp-server/generator-info.js +130 -160
  117. package/src/mcp-server/generator-info.js.map +1 -1
  118. package/src/mcp-server/guide-pipeline.d.ts +1 -1
  119. package/src/mcp-server/guide-pipeline.js +184 -206
  120. package/src/mcp-server/guide-pipeline.js.map +1 -1
  121. package/src/mcp-server/guide-render.js +10 -25
  122. package/src/mcp-server/guide-render.js.map +1 -1
  123. package/src/mcp-server/index.js +6 -10
  124. package/src/mcp-server/index.js.map +1 -1
  125. package/src/mcp-server/mdx-ast.js +42 -56
  126. package/src/mcp-server/mdx-ast.js.map +1 -1
  127. package/src/mcp-server/option-filter.js +33 -47
  128. package/src/mcp-server/option-filter.js.map +1 -1
  129. package/src/mcp-server/schema-registry.d.ts +9 -3
  130. package/src/mcp-server/schema-registry.js +41 -38
  131. package/src/mcp-server/schema-registry.js.map +1 -1
  132. package/src/mcp-server/schema.js +9 -7
  133. package/src/mcp-server/schema.js.map +1 -1
  134. package/src/mcp-server/server.js +20 -24
  135. package/src/mcp-server/server.js.map +1 -1
  136. package/src/mcp-server/tools/create-workspace-command.d.ts +1 -1
  137. package/src/mcp-server/tools/create-workspace-command.js +23 -24
  138. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  139. package/src/mcp-server/tools/general-guidance.d.ts +2 -2
  140. package/src/mcp-server/tools/general-guidance.js +46 -25
  141. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  142. package/src/mcp-server/tools/generator-guide.d.ts +2 -2
  143. package/src/mcp-server/tools/generator-guide.js +29 -37
  144. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  145. package/src/mcp-server/tools/list-generators.d.ts +2 -2
  146. package/src/mcp-server/tools/list-generators.js +19 -25
  147. package/src/mcp-server/tools/list-generators.js.map +1 -1
  148. package/src/open-api/ts-client/__snapshots__/generator.additional-properties.spec.ts.snap +147 -33
  149. package/src/open-api/ts-client/__snapshots__/generator.arrays.spec.ts.snap +308 -75
  150. package/src/open-api/ts-client/__snapshots__/generator.complex-types.spec.ts.snap +286 -62
  151. package/src/open-api/ts-client/__snapshots__/generator.composite-types.spec.ts.snap +674 -93
  152. package/src/open-api/ts-client/__snapshots__/generator.content-type.spec.ts.snap +147 -33
  153. package/src/open-api/ts-client/__snapshots__/generator.duplicate-types.spec.ts.snap +196 -44
  154. package/src/open-api/ts-client/__snapshots__/generator.edge-cases.spec.ts.snap +5507 -0
  155. package/src/open-api/ts-client/__snapshots__/generator.fast-api.spec.ts.snap +219 -60
  156. package/src/open-api/ts-client/__snapshots__/generator.primitive-types.spec.ts.snap +351 -80
  157. package/src/open-api/ts-client/__snapshots__/generator.request.spec.ts.snap +170 -49
  158. package/src/open-api/ts-client/__snapshots__/generator.reserved-keywords.spec.ts.snap +99 -23
  159. package/src/open-api/ts-client/__snapshots__/generator.response.spec.ts.snap +147 -33
  160. package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +392 -88
  161. package/src/open-api/ts-client/__snapshots__/generator.tags.spec.ts.snap +196 -44
  162. package/src/open-api/ts-client/files/client.gen.ts.template +130 -18
  163. package/src/open-api/ts-client/files/types.gen.ts.template +4 -4
  164. package/src/open-api/ts-client/generator.d.ts +3 -3
  165. package/src/open-api/ts-client/generator.js +16 -26
  166. package/src/open-api/ts-client/generator.js.map +1 -1
  167. package/src/open-api/ts-client/schema.d.js +6 -0
  168. package/src/open-api/ts-client/schema.d.js.map +1 -0
  169. package/src/open-api/ts-hooks/files/options-proxy.gen.ts.template +5 -0
  170. package/src/open-api/ts-hooks/generator.d.ts +3 -3
  171. package/src/open-api/ts-hooks/generator.js +13 -21
  172. package/src/open-api/ts-hooks/generator.js.map +1 -1
  173. package/src/open-api/ts-hooks/generator.spec.tsx +84 -14
  174. package/src/open-api/ts-hooks/schema.d.js +6 -0
  175. package/src/open-api/ts-hooks/schema.d.js.map +1 -0
  176. package/src/open-api/ts-metadata/generator.d.ts +3 -3
  177. package/src/open-api/ts-metadata/generator.js +12 -20
  178. package/src/open-api/ts-metadata/generator.js.map +1 -1
  179. package/src/open-api/ts-metadata/schema.d.js +6 -0
  180. package/src/open-api/ts-metadata/schema.d.js.map +1 -0
  181. package/src/open-api/utils/codegen-data/languages.d.ts +3 -5
  182. package/src/open-api/utils/codegen-data/languages.js +53 -66
  183. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  184. package/src/open-api/utils/codegen-data/types.d.ts +240 -10
  185. package/src/open-api/utils/codegen-data/types.js +54 -30
  186. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  187. package/src/open-api/utils/codegen-data.d.ts +8 -4
  188. package/src/open-api/utils/codegen-data.js +398 -674
  189. package/src/open-api/utils/codegen-data.js.map +1 -1
  190. package/src/open-api/utils/normalise.d.ts +5 -1
  191. package/src/open-api/utils/normalise.js +386 -247
  192. package/src/open-api/utils/normalise.js.map +1 -1
  193. package/src/open-api/utils/parse.d.ts +2 -2
  194. package/src/open-api/utils/parse.js +11 -13
  195. package/src/open-api/utils/parse.js.map +1 -1
  196. package/src/open-api/utils/parser.d.ts +55 -0
  197. package/src/open-api/utils/parser.js +743 -0
  198. package/src/open-api/utils/parser.js.map +1 -0
  199. package/src/open-api/utils/refs.d.ts +1 -1
  200. package/src/open-api/utils/refs.js +12 -22
  201. package/src/open-api/utils/refs.js.map +1 -1
  202. package/src/open-api/utils/types.d.ts +15 -0
  203. package/src/open-api/utils/types.js +5 -2
  204. package/src/open-api/utils/types.js.map +1 -1
  205. package/src/preset/__snapshots__/generator.spec.ts.snap +160 -17
  206. package/src/preset/generator.d.ts +4 -4
  207. package/src/preset/generator.js +140 -112
  208. package/src/preset/generator.js.map +1 -1
  209. package/src/preset/schema.d.js +6 -0
  210. package/src/preset/schema.d.js.map +1 -0
  211. package/src/preset/schema.d.ts +4 -2
  212. package/src/preset/schema.json +10 -5
  213. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +304 -0
  214. package/src/py/agent/__snapshots__/generator.frameworks.spec.ts.snap +734 -0
  215. package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.protocols.spec.ts.snap} +80 -314
  216. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +189 -0
  217. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +30 -0
  218. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +28 -0
  219. package/src/py/agent/a2a-connection/generator.d.ts +3 -3
  220. package/src/py/agent/a2a-connection/generator.js +113 -85
  221. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  222. package/src/py/agent/a2a-connection/schema.d.js +8 -0
  223. package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
  224. package/src/py/agent/a2a-connection/schema.d.ts +1 -0
  225. package/src/py/agent/a2a-connection/schema.json +5 -0
  226. package/src/py/agent/files/a2a-langchain/main.py.template +89 -0
  227. package/src/py/agent/files/ag-ui-langchain/main.py.template +83 -0
  228. package/src/py/agent/files/common/agent.py.template +2 -0
  229. package/src/py/agent/files/common-langchain/agent.py.template +30 -0
  230. package/src/py/agent/files/http/init.py.template +7 -25
  231. package/src/py/agent/files/http/main.py.template +2 -3
  232. package/src/py/agent/files/http-langchain/main.py.template +84 -0
  233. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +184 -0
  234. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +35 -0
  235. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +34 -0
  236. package/src/py/agent/gateway-connection/generator.d.ts +10 -0
  237. package/src/py/agent/gateway-connection/generator.js +119 -0
  238. package/src/py/agent/gateway-connection/generator.js.map +1 -0
  239. package/src/py/agent/gateway-connection/schema.d.js +6 -0
  240. package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
  241. package/src/py/agent/gateway-connection/schema.d.ts +13 -0
  242. package/src/py/agent/gateway-connection/schema.json +31 -0
  243. package/src/py/agent/generator.d.ts +3 -3
  244. package/src/py/agent/generator.js +280 -180
  245. package/src/py/agent/generator.js.map +1 -1
  246. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +153 -89
  247. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +30 -0
  248. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +30 -0
  249. package/src/py/agent/mcp-connection/generator.d.ts +3 -3
  250. package/src/py/agent/mcp-connection/generator.js +65 -126
  251. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  252. package/src/py/agent/mcp-connection/schema.d.js +8 -0
  253. package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
  254. package/src/py/agent/mcp-connection/schema.d.ts +1 -0
  255. package/src/py/agent/mcp-connection/schema.json +5 -0
  256. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +11 -19
  257. package/src/py/agent/react-connection/generator.d.ts +4 -4
  258. package/src/py/agent/react-connection/generator.js +55 -59
  259. package/src/py/agent/react-connection/generator.js.map +1 -1
  260. package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +6 -6
  261. package/src/py/agent/react-connection/local-dev.js +36 -0
  262. package/src/py/agent/react-connection/local-dev.js.map +1 -0
  263. package/src/py/agent/react-connection/schema.d.js +8 -0
  264. package/src/py/agent/react-connection/schema.d.js.map +1 -0
  265. package/src/py/agent/react-connection/schema.d.ts +1 -0
  266. package/src/py/agent/react-connection/schema.json +5 -0
  267. package/src/py/agent/schema.d.js +6 -0
  268. package/src/py/agent/schema.d.js.map +1 -0
  269. package/src/py/agent/schema.d.ts +2 -1
  270. package/src/py/agent/schema.json +6 -1
  271. package/src/py/api/generator.d.ts +3 -3
  272. package/src/py/api/generator.js +12 -11
  273. package/src/py/api/generator.js.map +1 -1
  274. package/src/py/api/schema.d.js +6 -0
  275. package/src/py/api/schema.d.js.map +1 -0
  276. package/src/py/api/schema.d.ts +1 -0
  277. package/src/py/api/schema.json +5 -0
  278. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +1526 -0
  279. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
  280. package/src/py/dynamodb/agent-connection/generator.d.ts +10 -0
  281. package/src/py/dynamodb/agent-connection/generator.js +39 -0
  282. package/src/py/dynamodb/agent-connection/generator.js.map +1 -0
  283. package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
  284. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
  285. package/src/py/dynamodb/agent-connection/schema.d.ts +15 -0
  286. package/src/py/dynamodb/agent-connection/schema.json +27 -0
  287. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +23 -0
  288. package/src/py/dynamodb/fast-api-connection/generator.d.ts +10 -0
  289. package/src/py/dynamodb/fast-api-connection/generator.js +37 -0
  290. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -0
  291. package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
  292. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
  293. package/src/py/dynamodb/fast-api-connection/schema.d.ts +13 -0
  294. package/src/py/dynamodb/fast-api-connection/schema.json +23 -0
  295. package/src/py/dynamodb/files/__name__/__init__.py.template +6 -0
  296. package/src/py/dynamodb/files/__name__/client.py.template +39 -0
  297. package/src/py/dynamodb/files/__name__/entities/__init__.py.template +4 -0
  298. package/src/py/dynamodb/files/__name__/entities/base.py.template +63 -0
  299. package/src/py/dynamodb/files/__name__/entities/example.py.template +64 -0
  300. package/src/py/dynamodb/files/config.json.template +24 -0
  301. package/src/py/dynamodb/generator.d.ts +10 -0
  302. package/src/py/dynamodb/generator.js +110 -0
  303. package/src/py/dynamodb/generator.js.map +1 -0
  304. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
  305. package/src/py/dynamodb/mcp-server-connection/generator.d.ts +10 -0
  306. package/src/py/dynamodb/mcp-server-connection/generator.js +39 -0
  307. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -0
  308. package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
  309. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  310. package/src/py/dynamodb/mcp-server-connection/schema.d.ts +15 -0
  311. package/src/py/dynamodb/mcp-server-connection/schema.json +27 -0
  312. package/src/py/dynamodb/schema.d.js +6 -0
  313. package/src/py/dynamodb/schema.d.js.map +1 -0
  314. package/src/py/dynamodb/schema.d.ts +16 -0
  315. package/src/py/dynamodb/schema.json +75 -0
  316. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +212 -4678
  317. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +4833 -0
  318. package/src/py/fast-api/files/app/__name__/init.py.template +5 -22
  319. package/src/py/fast-api/files/app/__name__/main.py.template +4 -1
  320. package/src/py/fast-api/generator.d.ts +3 -3
  321. package/src/py/fast-api/generator.js +90 -87
  322. package/src/py/fast-api/generator.js.map +1 -1
  323. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +4 -3
  324. package/src/py/fast-api/react/generator.d.ts +4 -4
  325. package/src/py/fast-api/react/generator.js +25 -25
  326. package/src/py/fast-api/react/generator.js.map +1 -1
  327. package/src/py/fast-api/react/open-api.d.ts +1 -1
  328. package/src/py/fast-api/react/open-api.js +31 -29
  329. package/src/py/fast-api/react/open-api.js.map +1 -1
  330. package/src/py/fast-api/react/schema.d.js +6 -0
  331. package/src/py/fast-api/react/schema.d.js.map +1 -0
  332. package/src/py/fast-api/react/schema.d.ts +1 -0
  333. package/src/py/fast-api/react/schema.json +5 -0
  334. package/src/py/fast-api/schema.d.js +6 -0
  335. package/src/py/fast-api/schema.d.js.map +1 -0
  336. package/src/py/fast-api/schema.d.ts +1 -0
  337. package/src/py/fast-api/schema.json +5 -0
  338. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  339. package/src/py/lambda-function/generator.d.ts +3 -3
  340. package/src/py/lambda-function/generator.js +60 -59
  341. package/src/py/lambda-function/generator.js.map +1 -1
  342. package/src/py/lambda-function/schema.d.js +6 -0
  343. package/src/py/lambda-function/schema.d.js.map +1 -0
  344. package/src/py/lambda-function/schema.d.ts +1 -0
  345. package/src/py/lambda-function/schema.json +5 -0
  346. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +87 -17
  347. package/src/py/mcp-server/generator.d.ts +3 -3
  348. package/src/py/mcp-server/generator.js +152 -125
  349. package/src/py/mcp-server/generator.js.map +1 -1
  350. package/src/py/mcp-server/schema.d.js +6 -0
  351. package/src/py/mcp-server/schema.d.js.map +1 -0
  352. package/src/py/mcp-server/schema.d.ts +1 -0
  353. package/src/py/mcp-server/schema.json +5 -0
  354. package/src/py/project/generator.d.ts +17 -4
  355. package/src/py/project/generator.js +205 -127
  356. package/src/py/project/generator.js.map +1 -1
  357. package/src/py/project/schema.d.js +6 -0
  358. package/src/py/project/schema.d.js.map +1 -0
  359. package/src/py/project/schema.d.ts +1 -0
  360. package/src/py/project/schema.json +5 -0
  361. package/src/sdk/agentcore-gateway.d.ts +6 -0
  362. package/src/sdk/agentcore-gateway.js +7 -0
  363. package/src/sdk/agentcore-gateway.js.map +1 -0
  364. package/src/sdk/connection.d.ts +6 -0
  365. package/src/sdk/connection.js +6 -0
  366. package/src/sdk/connection.js.map +1 -0
  367. package/src/sdk/license.d.ts +8 -0
  368. package/src/sdk/license.js +7 -0
  369. package/src/sdk/license.js.map +1 -0
  370. package/src/sdk/open-api.d.ts +10 -0
  371. package/src/sdk/open-api.js +8 -0
  372. package/src/sdk/open-api.js.map +1 -0
  373. package/src/sdk/py.d.ts +14 -0
  374. package/src/sdk/py.js +10 -0
  375. package/src/sdk/py.js.map +1 -0
  376. package/src/sdk/terraform.d.ts +6 -0
  377. package/src/sdk/terraform.js +7 -0
  378. package/src/sdk/terraform.js.map +1 -0
  379. package/src/sdk/ts.d.ts +33 -0
  380. package/src/sdk/ts.js +35 -0
  381. package/src/sdk/ts.js.map +1 -0
  382. package/{sdk → src/sdk}/utils/ast.d.ts +1 -2
  383. package/src/sdk/utils/ast.js +6 -0
  384. package/src/sdk/utils/ast.js.map +1 -0
  385. package/{sdk → src/sdk}/utils/format.d.ts +1 -1
  386. package/src/sdk/utils/format.js +6 -0
  387. package/src/sdk/utils/format.js.map +1 -0
  388. package/{sdk → src/sdk}/utils/test.d.ts +1 -1
  389. package/src/sdk/utils/test.js +6 -0
  390. package/src/sdk/utils/test.js.map +1 -0
  391. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +19 -24
  392. package/src/smithy/project/files/build.Dockerfile.template +1 -4
  393. package/src/smithy/project/files/src/operations/echo.smithy.template +1 -0
  394. package/src/smithy/project/generator.d.ts +3 -3
  395. package/src/smithy/project/generator.js +64 -57
  396. package/src/smithy/project/generator.js.map +1 -1
  397. package/src/smithy/project/schema.d.js +6 -0
  398. package/src/smithy/project/schema.d.js.map +1 -0
  399. package/src/smithy/project/schema.d.ts +1 -0
  400. package/src/smithy/project/schema.json +5 -0
  401. package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +1 -1
  402. package/src/smithy/react-connection/generator.d.ts +3 -3
  403. package/src/smithy/react-connection/generator.js +39 -47
  404. package/src/smithy/react-connection/generator.js.map +1 -1
  405. package/src/smithy/react-connection/schema.d.js +6 -0
  406. package/src/smithy/react-connection/schema.d.js.map +1 -0
  407. package/src/smithy/react-connection/schema.d.ts +1 -0
  408. package/src/smithy/react-connection/schema.json +5 -0
  409. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +409 -106
  410. package/src/smithy/ts/api/generator.d.ts +3 -3
  411. package/src/smithy/ts/api/generator.js +127 -106
  412. package/src/smithy/ts/api/generator.js.map +1 -1
  413. package/src/smithy/ts/api/schema.d.js +6 -0
  414. package/src/smithy/ts/api/schema.d.js.map +1 -0
  415. package/src/smithy/ts/api/schema.d.ts +1 -0
  416. package/src/smithy/ts/api/schema.json +5 -0
  417. package/src/terraform/project/files/application/src/main.tf.template +6 -1
  418. package/src/terraform/project/files/application/src/providers.tf.template +1 -1
  419. package/src/terraform/project/generator.d.ts +3 -3
  420. package/src/terraform/project/generator.js +156 -104
  421. package/src/terraform/project/generator.js.map +1 -1
  422. package/src/terraform/project/schema.d.js +9 -0
  423. package/src/terraform/project/schema.d.js.map +1 -0
  424. package/src/terraform/project/schema.d.ts +1 -0
  425. package/src/terraform/project/schema.json +5 -0
  426. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +499 -110
  427. package/src/trpc/backend/files/src/procedures/echo.ts.template +1 -1
  428. package/src/trpc/backend/files/src/schema/echo.ts.template +2 -2
  429. package/src/trpc/backend/generator.d.ts +4 -4
  430. package/src/trpc/backend/generator.js +97 -85
  431. package/src/trpc/backend/generator.js.map +1 -1
  432. package/src/trpc/backend/schema.d.js +6 -0
  433. package/src/trpc/backend/schema.d.js.map +1 -0
  434. package/src/trpc/backend/schema.d.ts +3 -2
  435. package/src/trpc/backend/schema.json +5 -0
  436. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +4 -4
  437. package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +3 -3
  438. package/src/trpc/react/generator.d.ts +4 -4
  439. package/src/trpc/react/generator.js +63 -58
  440. package/src/trpc/react/generator.js.map +1 -1
  441. package/src/trpc/react/schema.d.js +6 -0
  442. package/src/trpc/react/schema.d.js.map +1 -0
  443. package/src/trpc/react/schema.d.ts +1 -0
  444. package/src/trpc/react/schema.json +5 -0
  445. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +656 -18
  446. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +256 -0
  447. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +23 -0
  448. package/src/ts/agent/a2a-connection/generator.d.ts +3 -3
  449. package/src/ts/agent/a2a-connection/generator.js +63 -56
  450. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  451. package/src/ts/agent/a2a-connection/schema.d.js +8 -0
  452. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
  453. package/src/ts/agent/a2a-connection/schema.d.ts +1 -0
  454. package/src/ts/agent/a2a-connection/schema.json +5 -0
  455. package/src/ts/agent/files/common/agent.ts.template +6 -2
  456. package/src/ts/agent/files/http/router.ts.template +1 -1
  457. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +220 -0
  458. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +30 -0
  459. package/src/ts/agent/gateway-connection/generator.d.ts +10 -0
  460. package/src/ts/agent/gateway-connection/generator.js +114 -0
  461. package/src/ts/agent/gateway-connection/generator.js.map +1 -0
  462. package/src/ts/agent/gateway-connection/schema.d.js +6 -0
  463. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
  464. package/src/ts/agent/gateway-connection/schema.d.ts +13 -0
  465. package/src/ts/agent/gateway-connection/schema.json +31 -0
  466. package/src/ts/agent/generator.d.ts +3 -3
  467. package/src/ts/agent/generator.js +188 -144
  468. package/src/ts/agent/generator.js.map +1 -1
  469. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +192 -111
  470. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +22 -0
  471. package/src/ts/agent/mcp-connection/generator.d.ts +3 -3
  472. package/src/ts/agent/mcp-connection/generator.js +53 -60
  473. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  474. package/src/ts/agent/mcp-connection/schema.d.js +8 -0
  475. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
  476. package/src/ts/agent/mcp-connection/schema.d.ts +1 -0
  477. package/src/ts/agent/mcp-connection/schema.json +5 -0
  478. package/src/ts/agent/react-connection/generator.d.ts +4 -4
  479. package/src/ts/agent/react-connection/generator.js +86 -80
  480. package/src/ts/agent/react-connection/generator.js.map +1 -1
  481. package/src/ts/agent/react-connection/local-dev.d.ts +13 -0
  482. package/src/ts/agent/react-connection/local-dev.js +17 -0
  483. package/src/ts/agent/react-connection/local-dev.js.map +1 -0
  484. package/src/ts/agent/react-connection/schema.d.js +8 -0
  485. package/src/ts/agent/react-connection/schema.d.js.map +1 -0
  486. package/src/ts/agent/react-connection/schema.d.ts +1 -0
  487. package/src/ts/agent/react-connection/schema.json +5 -0
  488. package/src/ts/agent/schema.d.js +6 -0
  489. package/src/ts/agent/schema.d.js.map +1 -0
  490. package/src/ts/agent/schema.d.ts +1 -0
  491. package/src/ts/agent/schema.json +5 -0
  492. package/src/ts/api/generator.d.ts +3 -3
  493. package/src/ts/api/generator.js +16 -16
  494. package/src/ts/api/generator.js.map +1 -1
  495. package/src/ts/api/schema.d.js +6 -0
  496. package/src/ts/api/schema.d.js.map +1 -0
  497. package/src/ts/api/schema.d.ts +3 -1
  498. package/src/ts/api/schema.json +5 -0
  499. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +15 -16
  500. package/src/ts/astro-docs/generator.d.ts +3 -3
  501. package/src/ts/astro-docs/generator.js +69 -54
  502. package/src/ts/astro-docs/generator.js.map +1 -1
  503. package/src/ts/astro-docs/schema.d.js +6 -0
  504. package/src/ts/astro-docs/schema.d.js.map +1 -0
  505. package/src/ts/astro-docs/schema.d.ts +2 -2
  506. package/src/ts/astro-docs/schema.json +3 -3
  507. package/src/ts/docs/generator.d.ts +3 -3
  508. package/src/ts/docs/generator.js +10 -10
  509. package/src/ts/docs/generator.js.map +1 -1
  510. package/src/ts/docs/schema.d.js +6 -0
  511. package/src/ts/docs/schema.d.js.map +1 -0
  512. package/src/ts/docs/schema.d.ts +1 -4
  513. package/src/ts/docs/schema.json +3 -3
  514. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +1390 -0
  515. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
  516. package/src/ts/dynamodb/agent-connection/generator.d.ts +10 -0
  517. package/src/ts/dynamodb/agent-connection/generator.js +30 -0
  518. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -0
  519. package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
  520. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
  521. package/src/ts/dynamodb/agent-connection/schema.d.ts +15 -0
  522. package/src/ts/dynamodb/agent-connection/schema.json +27 -0
  523. package/src/ts/dynamodb/files/config.json.template +24 -0
  524. package/src/ts/dynamodb/files/src/client.ts.template +61 -0
  525. package/src/ts/dynamodb/files/src/entities/example.ts.template +47 -0
  526. package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -0
  527. package/src/ts/dynamodb/files/src/index.ts.template +2 -0
  528. package/src/ts/dynamodb/generator.d.ts +10 -0
  529. package/src/ts/dynamodb/generator.js +116 -0
  530. package/src/ts/dynamodb/generator.js.map +1 -0
  531. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
  532. package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +10 -0
  533. package/src/ts/dynamodb/mcp-server-connection/generator.js +30 -0
  534. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -0
  535. package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
  536. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  537. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +15 -0
  538. package/src/ts/dynamodb/mcp-server-connection/schema.json +27 -0
  539. package/src/ts/dynamodb/schema.d.js +6 -0
  540. package/src/ts/dynamodb/schema.d.js.map +1 -0
  541. package/src/ts/dynamodb/schema.d.ts +16 -0
  542. package/src/ts/dynamodb/schema.json +75 -0
  543. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +23 -0
  544. package/src/ts/dynamodb/smithy-connection/generator.d.ts +10 -0
  545. package/src/ts/dynamodb/smithy-connection/generator.js +28 -0
  546. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -0
  547. package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
  548. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
  549. package/src/ts/dynamodb/smithy-connection/schema.d.ts +13 -0
  550. package/src/ts/dynamodb/smithy-connection/schema.json +23 -0
  551. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +23 -0
  552. package/src/ts/dynamodb/trpc-connection/generator.d.ts +10 -0
  553. package/src/ts/dynamodb/trpc-connection/generator.js +28 -0
  554. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -0
  555. package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
  556. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
  557. package/src/ts/dynamodb/trpc-connection/schema.d.ts +13 -0
  558. package/src/ts/dynamodb/trpc-connection/schema.json +23 -0
  559. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  560. package/src/ts/lambda-function/generator.d.ts +3 -3
  561. package/src/ts/lambda-function/generator.js +59 -56
  562. package/src/ts/lambda-function/generator.js.map +1 -1
  563. package/src/ts/lambda-function/io.js +83 -52
  564. package/src/ts/lambda-function/io.js.map +1 -1
  565. package/src/ts/lambda-function/schema.d.js +6 -0
  566. package/src/ts/lambda-function/schema.d.js.map +1 -0
  567. package/src/ts/lambda-function/schema.d.ts +1 -0
  568. package/src/ts/lambda-function/schema.json +5 -0
  569. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +53 -99
  570. package/src/ts/lib/__snapshots__/vitest.spec.ts.snap +24 -0
  571. package/src/ts/lib/biome.d.ts +7 -0
  572. package/src/ts/lib/biome.js +58 -0
  573. package/src/ts/lib/biome.js.map +1 -0
  574. package/src/ts/lib/generator.d.ts +3 -3
  575. package/src/ts/lib/generator.js +96 -96
  576. package/src/ts/lib/generator.js.map +1 -1
  577. package/src/ts/lib/grit/vitest-pass-with-no-tests.grit +1 -4
  578. package/src/ts/lib/schema.d.js +6 -0
  579. package/src/ts/lib/schema.d.js.map +1 -0
  580. package/src/ts/lib/schema.d.ts +1 -1
  581. package/src/ts/lib/schema.json +5 -0
  582. package/src/ts/lib/ts-project-utils.d.ts +12 -2
  583. package/src/ts/lib/ts-project-utils.js +80 -65
  584. package/src/ts/lib/ts-project-utils.js.map +1 -1
  585. package/src/ts/lib/types.js +5 -2
  586. package/src/ts/lib/types.js.map +1 -1
  587. package/src/ts/lib/vitest.d.ts +2 -2
  588. package/src/ts/lib/vitest.js +29 -26
  589. package/src/ts/lib/vitest.js.map +1 -1
  590. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +83 -13
  591. package/src/ts/mcp-server/generator.d.ts +3 -3
  592. package/src/ts/mcp-server/generator.js +164 -120
  593. package/src/ts/mcp-server/generator.js.map +1 -1
  594. package/src/ts/mcp-server/schema.d.js +6 -0
  595. package/src/ts/mcp-server/schema.d.js.map +1 -0
  596. package/src/ts/mcp-server/schema.d.ts +1 -0
  597. package/src/ts/mcp-server/schema.json +5 -0
  598. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +46 -26
  599. package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
  600. package/src/ts/nx-generator/files/common/schema.json.template +5 -0
  601. package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
  602. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +6 -7
  603. package/src/ts/nx-generator/generator.d.ts +2 -2
  604. package/src/ts/nx-generator/generator.js +111 -74
  605. package/src/ts/nx-generator/generator.js.map +1 -1
  606. package/src/ts/nx-generator/schema.d.js +6 -0
  607. package/src/ts/nx-generator/schema.d.js.map +1 -0
  608. package/src/ts/nx-generator/schema.d.ts +1 -0
  609. package/src/ts/nx-generator/schema.json +5 -0
  610. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +30 -18
  611. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  612. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  613. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  614. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  615. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  616. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +3 -3
  617. package/src/ts/nx-plugin/generator.d.ts +3 -3
  618. package/src/ts/nx-plugin/generator.js +60 -51
  619. package/src/ts/nx-plugin/generator.js.map +1 -1
  620. package/src/ts/nx-plugin/schema.d.js +9 -0
  621. package/src/ts/nx-plugin/schema.d.js.map +1 -0
  622. package/src/ts/nx-plugin/schema.json +5 -0
  623. package/src/ts/nx-plugin/utils.d.ts +1 -1
  624. package/src/ts/nx-plugin/utils.js +32 -38
  625. package/src/ts/nx-plugin/utils.js.map +1 -1
  626. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +312 -482
  627. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +6 -6
  628. package/src/ts/rdb/agent-connection/generator.d.ts +3 -3
  629. package/src/ts/rdb/agent-connection/generator.js +38 -39
  630. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  631. package/src/ts/rdb/agent-connection/schema.d.js +8 -0
  632. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
  633. package/src/ts/rdb/agent-connection/schema.d.ts +1 -0
  634. package/src/ts/rdb/agent-connection/schema.json +5 -0
  635. package/src/ts/rdb/files/config.json.template +14 -0
  636. package/src/ts/rdb/files/prisma.config.ts.template +6 -5
  637. package/src/ts/rdb/files/src/create-db-user-handler.ts.template +7 -9
  638. package/src/ts/rdb/files/src/index.ts.template +0 -1
  639. package/src/ts/rdb/files/src/migration-handler.ts.template +1 -28
  640. package/src/ts/rdb/files/src/prisma.ts.template +28 -23
  641. package/src/ts/rdb/files/src/utils.ts.template +3 -0
  642. package/src/ts/rdb/generator.d.ts +3 -7
  643. package/src/ts/rdb/generator.js +158 -130
  644. package/src/ts/rdb/generator.js.map +1 -1
  645. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +6 -6
  646. package/src/ts/rdb/mcp-server-connection/generator.d.ts +3 -3
  647. package/src/ts/rdb/mcp-server-connection/generator.js +36 -37
  648. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  649. package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
  650. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
  651. package/src/ts/rdb/mcp-server-connection/schema.d.ts +1 -0
  652. package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
  653. package/src/ts/rdb/schema.d.js +6 -0
  654. package/src/ts/rdb/schema.d.js.map +1 -0
  655. package/src/ts/rdb/schema.d.ts +1 -0
  656. package/src/ts/rdb/schema.json +5 -0
  657. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
  658. package/src/ts/rdb/smithy-connection/generator.d.ts +3 -3
  659. package/src/ts/rdb/smithy-connection/generator.js +46 -43
  660. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  661. package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
  662. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
  663. package/src/ts/rdb/smithy-connection/schema.d.ts +1 -0
  664. package/src/ts/rdb/smithy-connection/schema.json +5 -0
  665. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
  666. package/src/ts/rdb/trpc-connection/generator.d.ts +3 -3
  667. package/src/ts/rdb/trpc-connection/generator.js +36 -31
  668. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  669. package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
  670. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
  671. package/src/ts/rdb/trpc-connection/schema.d.ts +1 -0
  672. package/src/ts/rdb/trpc-connection/schema.json +5 -0
  673. package/src/ts/rdb/utils.d.ts +1 -1
  674. package/src/ts/rdb/utils.js +9 -11
  675. package/src/ts/rdb/utils.js.map +1 -1
  676. package/src/ts/react-website/agui/files/common/src/hooks/useAgui__agentNameClassName__.tsx.template +1 -16
  677. package/src/ts/react-website/agui/generator.d.ts +1 -1
  678. package/src/ts/react-website/agui/generator.js +69 -62
  679. package/src/ts/react-website/agui/generator.js.map +1 -1
  680. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +626 -612
  681. package/src/ts/react-website/app/generator.d.ts +4 -4
  682. package/src/ts/react-website/app/generator.js +217 -192
  683. package/src/ts/react-website/app/generator.js.map +1 -1
  684. package/src/ts/react-website/app/schema.d.js +6 -0
  685. package/src/ts/react-website/app/schema.d.js.map +1 -0
  686. package/src/ts/react-website/app/schema.d.ts +1 -1
  687. package/src/ts/react-website/app/schema.json +11 -6
  688. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +129 -18
  689. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +36 -10
  690. package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
  691. package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
  692. package/src/ts/react-website/cognito-auth/generator.d.ts +4 -4
  693. package/src/ts/react-website/cognito-auth/generator.js +64 -63
  694. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  695. package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +8 -6
  696. package/src/ts/react-website/cognito-auth/grit/cognito-auth-wrapper.grit +1 -1
  697. package/src/ts/react-website/cognito-auth/grit/none-auth-menu.grit +1 -0
  698. package/src/ts/react-website/cognito-auth/grit/shadcn-auth-menu.grit +3 -1
  699. package/src/ts/react-website/cognito-auth/grit/shadcn-state-declarations.grit +3 -1
  700. package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
  701. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
  702. package/src/ts/react-website/cognito-auth/schema.d.ts +1 -0
  703. package/src/ts/react-website/cognito-auth/schema.json +5 -0
  704. package/src/ts/react-website/cognito-auth/utils.d.ts +1 -1
  705. package/src/ts/react-website/cognito-auth/utils.js +34 -32
  706. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  707. package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
  708. package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
  709. package/src/ts/react-website/runtime-config/generator.d.ts +3 -3
  710. package/src/ts/react-website/runtime-config/generator.js +29 -31
  711. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  712. package/src/ts/react-website/runtime-config/schema.d.js +6 -0
  713. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
  714. package/src/ts/react-website/runtime-config/schema.d.ts +1 -0
  715. package/src/ts/react-website/runtime-config/schema.json +5 -0
  716. package/src/ts/sync/generator.d.ts +3 -3
  717. package/src/ts/sync/generator.js +60 -59
  718. package/src/ts/sync/generator.js.map +1 -1
  719. package/src/ts/website/app/generator.d.ts +3 -3
  720. package/src/ts/website/app/generator.js +10 -10
  721. package/src/ts/website/app/generator.js.map +1 -1
  722. package/src/ts/website/app/schema.d.js +6 -0
  723. package/src/ts/website/app/schema.d.js.map +1 -0
  724. package/src/ts/website/app/schema.d.ts +1 -1
  725. package/src/ts/website/app/schema.json +11 -6
  726. package/src/ts/website/auth/generator.d.ts +4 -4
  727. package/src/ts/website/auth/generator.js +11 -10
  728. package/src/ts/website/auth/generator.js.map +1 -1
  729. package/src/ts/website/auth/schema.d.js +6 -0
  730. package/src/ts/website/auth/schema.d.js.map +1 -0
  731. package/src/ts/website/auth/schema.d.ts +1 -0
  732. package/src/ts/website/auth/schema.json +5 -0
  733. package/src/utils/agent-chat/agent-chat.d.ts +31 -0
  734. package/src/utils/agent-chat/agent-chat.js +29 -0
  735. package/src/utils/agent-chat/agent-chat.js.map +1 -0
  736. package/src/utils/agent-chat/files/a2a/chat.ts.template +33 -0
  737. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +17 -0
  738. package/src/utils/agent-chat/files/common/agentcore.ts.template +81 -0
  739. package/src/utils/agent-chat/files/http-py/chat.ts.template +43 -0
  740. package/src/utils/agent-chat/files/http-ts/chat.ts.template +54 -0
  741. package/src/utils/agent-connection/agent-connection.d.ts +117 -25
  742. package/src/utils/agent-connection/agent-connection.js +411 -103
  743. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  744. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client-config.ts.template +93 -0
  745. package/src/utils/agent-connection/files/core-auth/agentcore-endpoints.ts.template +37 -0
  746. package/src/utils/agent-connection/files/core-auth/agentcore-fetch.ts.template +54 -0
  747. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +41 -0
  748. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-transport.ts.template +70 -0
  749. package/src/utils/agent-connection/files/core-runtime-config/runtime-config.ts.template +22 -32
  750. package/src/utils/agent-connection/files/core-shared/agentcore-transport.ts.template +39 -0
  751. package/src/utils/agent-connection/files/core-strands/a2a/agentcore-a2a-client-strands.ts.template +61 -0
  752. package/src/utils/agent-connection/files/core-strands/base/model-errors-strands.ts.template +36 -0
  753. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +26 -0
  754. package/src/utils/agent-connection/files/core-strands/mcp/agentcore-mcp-client-strands.ts.template +27 -0
  755. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client_config.py.template +43 -0
  756. package/src/utils/agent-connection/files/py-core-auth/agentcore_endpoints.py.template +47 -0
  757. package/src/utils/agent-connection/files/py-core-auth/auth/session.py.template +51 -0
  758. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +28 -0
  759. package/src/utils/agent-connection/files/py-core-langchain/a2a/agentcore_a2a_client_langchain.py.template +99 -0
  760. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +57 -0
  761. package/src/utils/agent-connection/files/py-core-langchain/mcp/agentcore_mcp_client_langchain.py.template +64 -0
  762. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_transport.py.template +34 -0
  763. package/src/utils/agent-connection/files/py-core-runtime-config/runtime_config.py.template +5 -18
  764. package/src/utils/agent-connection/files/py-core-shared/agentcore_transport.py.template +40 -0
  765. package/src/utils/agent-connection/files/py-core-strands/a2a/agentcore_a2a_client_strands.py.template +66 -0
  766. package/src/utils/agent-connection/files/py-core-strands/base/model_errors_strands.py.template +40 -0
  767. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +22 -0
  768. package/src/utils/agent-connection/files/py-core-strands/mcp/agentcore_mcp_client_strands.py.template +30 -0
  769. package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +11 -3
  770. package/src/utils/agent-core-constructs/agent-core-constructs.js +86 -38
  771. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  772. package/src/utils/agent-core-constructs/files/cdk/app/agent-core/__nameKebabCase__/__nameKebabCase__.ts.template +4 -0
  773. package/src/utils/agent-core-constructs/files/cdk/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.ts.template +50 -0
  774. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/agentcore-gateway.ts.template +487 -0
  775. package/src/utils/agent-core-constructs/files/cdk/core/agentcore-gateway/readiness-probe/index.js.template +55 -0
  776. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +449 -0
  777. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/render-cedar.cjs.template +13 -0
  778. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +80 -12
  779. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +14 -0
  780. package/src/utils/api-constructs/api-constructs.d.ts +2 -2
  781. package/src/utils/api-constructs/api-constructs.js +30 -31
  782. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  783. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +3 -0
  784. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +23 -6
  785. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +58 -0
  786. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
  787. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +51 -15
  788. package/src/utils/api-constructs/files/cdk/core/api/utils/utils.ts.template +61 -7
  789. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +1 -8
  790. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +94 -4
  791. package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
  792. package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
  793. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
  794. package/src/utils/api-constructs/open-api-metadata.d.ts +2 -2
  795. package/src/utils/api-constructs/open-api-metadata.js +22 -22
  796. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  797. package/src/utils/ast/website.d.ts +5 -1
  798. package/src/utils/ast/website.js +18 -20
  799. package/src/utils/ast/website.js.map +1 -1
  800. package/src/utils/ast.d.ts +33 -1
  801. package/src/utils/ast.js +130 -70
  802. package/src/utils/ast.js.map +1 -1
  803. package/src/utils/bundle/bundle.d.ts +1 -1
  804. package/src/utils/bundle/bundle.js +50 -47
  805. package/src/utils/bundle/bundle.js.map +1 -1
  806. package/src/utils/commands.js +47 -26
  807. package/src/utils/commands.js.map +1 -1
  808. package/src/utils/config/index.d.ts +5 -5
  809. package/src/utils/config/index.js +5 -4
  810. package/src/utils/config/index.js.map +1 -1
  811. package/src/utils/config/utils.d.ts +13 -3
  812. package/src/utils/config/utils.js +65 -43
  813. package/src/utils/config/utils.js.map +1 -1
  814. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +1 -1
  815. package/src/utils/connection/open-api/react.d.ts +6 -6
  816. package/src/utils/connection/open-api/react.js +81 -77
  817. package/src/utils/connection/open-api/react.js.map +1 -1
  818. package/src/utils/containers.d.ts +1 -1
  819. package/src/utils/containers.js +22 -23
  820. package/src/utils/containers.js.map +1 -1
  821. package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +18 -0
  822. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +48 -0
  823. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -0
  824. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +43 -0
  825. package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +105 -0
  826. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +72 -0
  827. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +155 -0
  828. package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +195 -0
  829. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +13 -0
  830. package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +106 -0
  831. package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/cdk-command.ts.template +6 -3
  832. package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
  833. package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
  834. package/src/utils/files/common/scripts/src/rdb/shared/pull-image.ts.template +16 -0
  835. package/src/utils/files/common/scripts/src/rdb/shared/start-container.ts.template +117 -0
  836. package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +2 -2
  837. package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
  838. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +12 -6
  839. package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
  840. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +9 -4
  841. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
  842. package/src/utils/format.d.ts +45 -2
  843. package/src/utils/format.js +323 -81
  844. package/src/utils/format.js.map +1 -1
  845. package/src/utils/fs.d.ts +1 -1
  846. package/src/utils/fs.js +14 -13
  847. package/src/utils/fs.js.map +1 -1
  848. package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
  849. package/src/utils/function-constructs/function-constructs.d.ts +2 -2
  850. package/src/utils/function-constructs/function-constructs.js +21 -26
  851. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  852. package/src/utils/generators.d.ts +4 -0
  853. package/src/utils/generators.js +18 -20
  854. package/src/utils/generators.js.map +1 -1
  855. package/src/utils/git.d.ts +1 -1
  856. package/src/utils/git.js +19 -34
  857. package/src/utils/git.js.map +1 -1
  858. package/src/utils/iac-providers.js +5 -5
  859. package/src/utils/iac-providers.js.map +1 -1
  860. package/src/utils/iac.d.ts +1 -1
  861. package/src/utils/iac.js +12 -14
  862. package/src/utils/iac.js.map +1 -1
  863. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +123 -14
  864. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +28 -9
  865. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +106 -6
  866. package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
  867. package/src/utils/identity-constructs/identity-constructs.d.ts +2 -2
  868. package/src/utils/identity-constructs/identity-constructs.js +24 -28
  869. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  870. package/src/utils/install.d.ts +32 -0
  871. package/src/utils/install.js +56 -0
  872. package/src/utils/install.js.map +1 -0
  873. package/src/utils/js.d.ts +4 -0
  874. package/src/utils/js.js +27 -20
  875. package/src/utils/js.js.map +1 -1
  876. package/src/utils/mcp.d.ts +25 -0
  877. package/src/utils/mcp.js +74 -0
  878. package/src/utils/mcp.js.map +1 -0
  879. package/src/utils/metrics.d.ts +9 -3
  880. package/src/utils/metrics.js +61 -46
  881. package/src/utils/metrics.js.map +1 -1
  882. package/src/utils/mock-project-graph.js +8 -12
  883. package/src/utils/mock-project-graph.js.map +1 -1
  884. package/src/utils/names.d.ts +22 -0
  885. package/src/utils/names.js +44 -48
  886. package/src/utils/names.js.map +1 -1
  887. package/src/utils/npm-scope.d.ts +1 -1
  888. package/src/utils/npm-scope.js +9 -17
  889. package/src/utils/npm-scope.js.map +1 -1
  890. package/src/utils/nx.d.ts +25 -4
  891. package/src/utils/nx.js +144 -75
  892. package/src/utils/nx.js.map +1 -1
  893. package/src/utils/nxlv-python.d.ts +1 -1
  894. package/src/utils/nxlv-python.js +27 -15
  895. package/src/utils/nxlv-python.js.map +1 -1
  896. package/src/utils/object.js +5 -11
  897. package/src/utils/object.js.map +1 -1
  898. package/src/utils/paths.d.ts +1 -1
  899. package/src/utils/paths.js +11 -15
  900. package/src/utils/paths.js.map +1 -1
  901. package/src/utils/pkg-manager.js +4 -9
  902. package/src/utils/pkg-manager.js.map +1 -1
  903. package/src/utils/pnpm-workspace.d.ts +1 -1
  904. package/src/utils/pnpm-workspace.js +22 -22
  905. package/src/utils/pnpm-workspace.js.map +1 -1
  906. package/src/utils/port.d.ts +31 -3
  907. package/src/utils/port.js +72 -12
  908. package/src/utils/port.js.map +1 -1
  909. package/src/utils/py.d.ts +16 -3
  910. package/src/utils/py.js +72 -47
  911. package/src/utils/py.js.map +1 -1
  912. package/src/utils/rdb-constructs/files/cdk/app/dbs/__nameKebabCase__.ts.template +12 -2
  913. package/src/utils/rdb-constructs/files/cdk/core/rdb/aurora.ts.template +35 -16
  914. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +42 -48
  915. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +31 -16
  916. package/src/utils/rdb-constructs/rdb-constructs.d.ts +5 -4
  917. package/src/utils/rdb-constructs/rdb-constructs.js +31 -41
  918. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  919. package/src/utils/shared-constructs-constants.d.ts +1 -0
  920. package/src/utils/shared-constructs-constants.js +16 -15
  921. package/src/utils/shared-constructs-constants.js.map +1 -1
  922. package/src/utils/shared-constructs.d.ts +2 -2
  923. package/src/utils/shared-constructs.js +57 -54
  924. package/src/utils/shared-constructs.js.map +1 -1
  925. package/src/utils/shared-dynamodb-scripts.d.ts +11 -0
  926. package/src/utils/shared-dynamodb-scripts.js +25 -0
  927. package/src/utils/shared-dynamodb-scripts.js.map +1 -0
  928. package/src/utils/shared-infra-config.d.ts +1 -1
  929. package/src/utils/shared-infra-config.js +30 -31
  930. package/src/utils/shared-infra-config.js.map +1 -1
  931. package/src/utils/shared-infra-scripts.d.ts +11 -0
  932. package/src/utils/shared-infra-scripts.js +40 -0
  933. package/src/utils/shared-infra-scripts.js.map +1 -0
  934. package/src/utils/shared-rdb-scripts.d.ts +16 -0
  935. package/src/utils/shared-rdb-scripts.js +28 -0
  936. package/src/utils/shared-rdb-scripts.js.map +1 -0
  937. package/src/utils/shared-scripts.d.ts +2 -5
  938. package/src/utils/shared-scripts.js +12 -38
  939. package/src/utils/shared-scripts.js.map +1 -1
  940. package/src/utils/shared-shadcn.d.ts +1 -1
  941. package/src/utils/shared-shadcn.js +64 -72
  942. package/src/utils/shared-shadcn.js.map +1 -1
  943. package/src/utils/test.d.ts +13 -1
  944. package/src/utils/test.js +35 -23
  945. package/src/utils/test.js.map +1 -1
  946. package/src/utils/toml.d.ts +1 -1
  947. package/src/utils/toml.js +10 -14
  948. package/src/utils/toml.js.map +1 -1
  949. package/src/utils/versions.d.ts +116 -84
  950. package/src/utils/versions.js +124 -102
  951. package/src/utils/versions.js.map +1 -1
  952. package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +73 -5
  953. package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +1 -1
  954. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +68 -19
  955. package/src/utils/website-constructs/website-constructs.d.ts +2 -2
  956. package/src/utils/website-constructs/website-constructs.js +31 -30
  957. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  958. package/bin/aws-nx-mcp.js +0 -17
  959. package/bin/aws-nx-mcp.js.map +0 -1
  960. package/sdk/connection.d.ts +0 -6
  961. package/sdk/connection.js +0 -10
  962. package/sdk/connection.js.map +0 -1
  963. package/sdk/open-api.d.ts +0 -10
  964. package/sdk/open-api.js +0 -15
  965. package/sdk/open-api.js.map +0 -1
  966. package/sdk/py.d.ts +0 -14
  967. package/sdk/py.js +0 -18
  968. package/sdk/py.js.map +0 -1
  969. package/sdk/terraform.d.ts +0 -6
  970. package/sdk/terraform.js +0 -11
  971. package/sdk/terraform.js.map +0 -1
  972. package/sdk/ts.d.ts +0 -29
  973. package/sdk/ts.js +0 -47
  974. package/sdk/ts.js.map +0 -1
  975. package/sdk/utils/ast.js +0 -12
  976. package/sdk/utils/ast.js.map +0 -1
  977. package/sdk/utils/format.js +0 -10
  978. package/sdk/utils/format.js.map +0 -1
  979. package/sdk/utils/test.js +0 -10
  980. package/sdk/utils/test.js.map +0 -1
  981. package/src/connection/agent-serve-local.js +0 -48
  982. package/src/connection/agent-serve-local.js.map +0 -1
  983. package/src/connection/serve-local.d.ts +0 -15
  984. package/src/connection/serve-local.js +0 -41
  985. package/src/connection/serve-local.js.map +0 -1
  986. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client.py.template +0 -22
  987. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client.py.template +0 -22
  988. package/src/py/agent/react-connection/serve-local.js +0 -30
  989. package/src/py/agent/react-connection/serve-local.js.map +0 -1
  990. package/src/py/agent/scripts/http/chat.ts.template +0 -38
  991. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client.ts.template +0 -19
  992. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client.ts.template +0 -19
  993. package/src/ts/agent/react-connection/serve-local.d.ts +0 -13
  994. package/src/ts/agent/react-connection/serve-local.js +0 -19
  995. package/src/ts/agent/react-connection/serve-local.js.map +0 -1
  996. package/src/ts/agent/scripts/http/chat.ts.template +0 -35
  997. package/src/ts/lib/eslint.d.ts +0 -14
  998. package/src/ts/lib/eslint.js +0 -90
  999. package/src/ts/lib/eslint.js.map +0 -1
  1000. package/src/ts/lib/grit/eslint-dependency-checks-warn.grit +0 -1
  1001. package/src/ts/rdb/files/scripts/docker-pull.ts.template +0 -15
  1002. package/src/ts/rdb/files/scripts/docker-start.ts.template +0 -84
  1003. package/src/ts/rdb/files/scripts/wait-for-db.ts.template +0 -55
  1004. package/src/ts/rdb/files/src/constants.ts.template +0 -8
  1005. package/src/utils/agent-connection/files/core-a2a/agentcore-a2a-client.ts.template +0 -123
  1006. package/src/utils/agent-connection/files/core-mcp/agentcore-mcp-client.ts.template +0 -128
  1007. package/src/utils/agent-connection/files/py-core-a2a/agentcore_a2a_client.py.template +0 -120
  1008. package/src/utils/agent-connection/files/py-core-mcp/agentcore_mcp_client.py.template +0 -89
  1009. /package/{bin → src/bin}/aws-nx-mcp.d.ts +0 -0
  1010. /package/src/utils/agent-connection/files/{core-runtime-config/with-session-id.ts.template → core-strands/base/with-session-id-strands.ts.template} +0 -0
  1011. /package/src/utils/agent-connection/files/{py-core-runtime-config/with_session_id.py.template → py-core-strands/base/with_session_id_strands.py.template} +0 -0
  1012. /package/src/utils/files/common/scripts/src/{index.ts.template → infra/index.ts.template} +0 -0
  1013. /package/src/utils/files/common/scripts/src/{infra-deploy.ts.template → infra/infra-deploy.ts.template} +0 -0
  1014. /package/src/utils/files/common/scripts/src/{infra-destroy.ts.template → infra/infra-destroy.ts.template} +0 -0
  1015. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/credentials.ts.template +0 -0
  1016. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/run.ts.template +0 -0
  1017. /package/src/utils/files/common/scripts/src/{stage-credentials → infra/stage-credentials}/stage-parser.ts.template +0 -0
@@ -281,7 +281,7 @@ import { EchoInputSchema, EchoOutputSchema } from '../schema/index.js';
281
281
  export const echo = publicProcedure
282
282
  .input(EchoInputSchema)
283
283
  .output(EchoOutputSchema)
284
- .query((opts) => ({ result: opts.input.message }));
284
+ .query((opts) => ({ message: opts.input.message }));
285
285
  "
286
286
  `;
287
287
 
@@ -303,13 +303,13 @@ exports[`trpc backend generator > should generate the project > apps/test-api/sr
303
303
  "import { z } from 'zod';
304
304
 
305
305
  export const EchoInputSchema = z.object({
306
- message: z.string(),
306
+ message: z.string().max(1024),
307
307
  });
308
308
 
309
309
  export type IEchoInput = z.TypeOf<typeof EchoInputSchema>;
310
310
 
311
311
  export const EchoOutputSchema = z.object({
312
- result: z.string(),
312
+ message: z.string().max(1024),
313
313
  });
314
314
 
315
315
  export type IEchoOutput = z.TypeOf<typeof EchoOutputSchema>;
@@ -478,6 +478,9 @@ export class TestApi<
478
478
  authorizer: new CognitoUserPoolsAuthorizer(scope, 'TestApiAuthorizer', {
479
479
  cognitoUserPools: [props.identity.userPool],
480
480
  }),
481
+ // Accept access tokens from both sign-in flows: 'openid' (Cognito hosted UI)
482
+ // and 'aws.cognito.signin.user.admin' (Cognito admin/SRP auth APIs).
483
+ authorizationScopes: ['openid', 'aws.cognito.signin.user.admin'],
481
484
  },
482
485
  deployOptions: {
483
486
  tracingEnabled: true,
@@ -1199,15 +1202,18 @@ import {
1199
1202
  HttpApiIntegration,
1200
1203
  OperationDetails,
1201
1204
  } from './utils.js';
1202
- import { CfnOutput } from 'aws-cdk-lib';
1205
+ import { CfnOutput, Stack } from 'aws-cdk-lib';
1203
1206
  import {
1204
1207
  HttpApi as _HttpApi,
1205
1208
  HttpApiProps as _HttpApiProps,
1206
1209
  HttpMethod,
1207
1210
  HttpStage,
1208
1211
  LogGroupLogDestination,
1212
+ ThrottleSettings,
1209
1213
  } from 'aws-cdk-lib/aws-apigatewayv2';
1210
1214
  import { LogGroup } from 'aws-cdk-lib/aws-logs';
1215
+ import { Key } from 'aws-cdk-lib/aws-kms';
1216
+ import { ServicePrincipal } from 'aws-cdk-lib/aws-iam';
1211
1217
  import { suppressRules } from '../checkov.js';
1212
1218
 
1213
1219
  /**
@@ -1232,6 +1238,12 @@ export interface HttpApiProps<
1232
1238
  * Map of operation names to their API Gateway integrations
1233
1239
  */
1234
1240
  readonly integrations: TIntegrations;
1241
+ /**
1242
+ * Default throttling limits applied to the API's default stage.
1243
+ *
1244
+ * @default { rateLimit: 10000, burstLimit: 5000 }
1245
+ */
1246
+ readonly throttle?: ThrottleSettings;
1235
1247
  }
1236
1248
 
1237
1249
  /**
@@ -1265,6 +1277,7 @@ export class HttpApi<
1265
1277
  apiName,
1266
1278
  operations,
1267
1279
  integrations,
1280
+ throttle = { rateLimit: 10000, burstLimit: 5000 },
1268
1281
  ...props
1269
1282
  }: HttpApiProps<TIntegrations, TOperation>,
1270
1283
  ) {
@@ -1277,12 +1290,18 @@ export class HttpApi<
1277
1290
  ...props,
1278
1291
  });
1279
1292
 
1280
- const accessLogGroup = new LogGroup(this, 'AccessLogs');
1281
- suppressRules(
1282
- accessLogGroup,
1283
- ['CKV_AWS_158'],
1284
- 'Using default CloudWatch log encryption',
1293
+ // Customer-managed key for access log encryption at rest
1294
+ const logsKey = new Key(this, 'AccessLogsKey', {
1295
+ enableKeyRotation: true,
1296
+ });
1297
+ const stack = Stack.of(this);
1298
+ logsKey.grantEncryptDecrypt(
1299
+ new ServicePrincipal(\`logs.\${stack.region}.amazonaws.com\`),
1285
1300
  );
1301
+
1302
+ const accessLogGroup = new LogGroup(this, 'AccessLogs', {
1303
+ encryptionKey: logsKey,
1304
+ });
1286
1305
  suppressRules(
1287
1306
  accessLogGroup,
1288
1307
  ['CKV_AWS_66', 'CKV_AWS_338'],
@@ -1292,6 +1311,7 @@ export class HttpApi<
1292
1311
  this.defaultStage = new HttpStage(this, 'DefaultStage', {
1293
1312
  httpApi: this.api,
1294
1313
  autoDeploy: true,
1314
+ throttle,
1295
1315
  accessLogSettings: {
1296
1316
  destination: new LogGroupLogDestination(accessLogGroup),
1297
1317
  },
@@ -1751,6 +1771,8 @@ export type ApiIntegrations<TOperation extends string, TBaseIntegration> =
1751
1771
  * @template TDefaultIntegrationProps - Type for default integration properties
1752
1772
  * @template TDefaultIntegration - Type for default integration implementation
1753
1773
  * @template TPattern - The integration pattern ('shared' or 'isolated')
1774
+ * @template TOverridden - Union of operation names that have been overridden
1775
+ * @template TOperationOptioned - Union of operation names with per-operation options
1754
1776
  */
1755
1777
  export class IntegrationBuilder<
1756
1778
  TOperation extends string,
@@ -1759,6 +1781,8 @@ export class IntegrationBuilder<
1759
1781
  TDefaultIntegrationProps extends object,
1760
1782
  TDefaultIntegration extends TBaseIntegration,
1761
1783
  TPattern extends 'shared' | 'isolated',
1784
+ TOverridden extends string = never,
1785
+ TOperationOptioned extends string = never,
1762
1786
  > {
1763
1787
  /** Options for the integration builder */
1764
1788
  private options: IntegrationBuilderProps<
@@ -1771,6 +1795,11 @@ export class IntegrationBuilder<
1771
1795
  /** Map of operation names to their custom integrations */
1772
1796
  private integrations: Partial<TIntegrations> = {};
1773
1797
 
1798
+ /** Map of default integration keys to per-operation default option overrides */
1799
+ private perOperationOptions: Partial<
1800
+ Record<string, Partial<TDefaultIntegrationProps>>
1801
+ > = {};
1802
+
1774
1803
  /**
1775
1804
  * Create an Integration Builder for an HTTP API with a shared pattern
1776
1805
  */
@@ -1925,11 +1954,16 @@ export class IntegrationBuilder<
1925
1954
  /**
1926
1955
  * Overrides default integrations with custom implementations for specific operations.
1927
1956
  *
1957
+ * Operations which have per-operation options set via withOperationOptions cannot be
1958
+ * overridden, since these still use the default integration.
1959
+ *
1928
1960
  * @param overrides - Map of operation names to their custom integration implementations
1929
1961
  * @returns The builder instance with updated type information reflecting the overrides
1930
1962
  */
1931
1963
  public withOverrides<
1932
- TOverrideIntegrations extends Partial<Record<TOperation, TBaseIntegration>>,
1964
+ TOverrideIntegrations extends Partial<
1965
+ Record<Exclude<TOperation, TOperationOptioned>, TBaseIntegration>
1966
+ >,
1933
1967
  >(overrides: TOverrideIntegrations) {
1934
1968
  this.integrations = { ...this.integrations, ...overrides };
1935
1969
  // Re-type to include the overridden integration types.
@@ -1945,7 +1979,9 @@ export class IntegrationBuilder<
1945
1979
  MergedIntegrations,
1946
1980
  TDefaultIntegrationProps,
1947
1981
  TDefaultIntegration,
1948
- TPattern
1982
+ TPattern,
1983
+ TOverridden | Extract<keyof TOverrideIntegrations, string>,
1984
+ TOperationOptioned
1949
1985
  >;
1950
1986
  }
1951
1987
 
@@ -1964,6 +2000,43 @@ export class IntegrationBuilder<
1964
2000
  return this;
1965
2001
  }
1966
2002
 
2003
+ /**
2004
+ * Updates the default integration options for specific operations, without
2005
+ * affecting the others. The given options are merged with the defaults (and
2006
+ * any options set via withDefaultOptions) when building each default integration.
2007
+ *
2008
+ * Operations which have been replaced via withOverrides cannot be targeted, since
2009
+ * they no longer use the default integration.
2010
+ *
2011
+ * @param options - Map of operation names to partial default integration options
2012
+ * @returns The builder instance
2013
+ */
2014
+ public withOperationOptions<
2015
+ TOptions extends Partial<
2016
+ Record<
2017
+ Exclude<DefaultIntegrationKeys<TPattern, TOperation>, TOverridden>,
2018
+ Partial<TDefaultIntegrationProps>
2019
+ >
2020
+ >,
2021
+ >(options: TOptions) {
2022
+ Object.entries(options).forEach(([op, opOptions]) => {
2023
+ this.perOperationOptions[op] = {
2024
+ ...this.perOperationOptions[op],
2025
+ ...(opOptions as Partial<TDefaultIntegrationProps>),
2026
+ };
2027
+ });
2028
+ return this as unknown as IntegrationBuilder<
2029
+ TOperation,
2030
+ TBaseIntegration,
2031
+ TIntegrations,
2032
+ TDefaultIntegrationProps,
2033
+ TDefaultIntegration,
2034
+ TPattern,
2035
+ TOverridden,
2036
+ TOperationOptioned | Extract<keyof TOptions, string>
2037
+ >;
2038
+ }
2039
+
1967
2040
  /**
1968
2041
  * Builds and returns the complete set of integrations.
1969
2042
  *
@@ -1978,6 +2051,10 @@ export class IntegrationBuilder<
1978
2051
  */
1979
2052
  public build(): TIntegrations {
1980
2053
  const options = this.options;
2054
+ const buildOptionsFor = (op: string): TDefaultIntegrationProps => ({
2055
+ ...options.defaultIntegrationOptions,
2056
+ ...this.perOperationOptions[op],
2057
+ });
1981
2058
  return {
1982
2059
  ...Object.fromEntries(
1983
2060
  options.pattern === 'shared'
@@ -1986,7 +2063,7 @@ export class IntegrationBuilder<
1986
2063
  '$router',
1987
2064
  options.buildDefaultIntegration(
1988
2065
  '$router',
1989
- options.defaultIntegrationOptions,
2066
+ buildOptionsFor('$router'),
1990
2067
  ),
1991
2068
  ],
1992
2069
  ]
@@ -1997,10 +2074,7 @@ export class IntegrationBuilder<
1997
2074
  )
1998
2075
  .map((op) => [
1999
2076
  op,
2000
- options.buildDefaultIntegration(
2001
- op,
2002
- options.defaultIntegrationOptions,
2003
- ),
2077
+ options.buildDefaultIntegration(op, buildOptionsFor(op)),
2004
2078
  ]),
2005
2079
  ),
2006
2080
  ...this.integrations,
@@ -2013,21 +2087,27 @@ export class IntegrationBuilder<
2013
2087
  exports[`trpc backend generator > should set up shared constructs for rest > rest-api.ts 1`] = `
2014
2088
  "import { Construct, IConstruct } from 'constructs';
2015
2089
  import {
2090
+ AccessLogFormat,
2016
2091
  Cors,
2092
+ LogGroupLogDestination,
2017
2093
  Resource,
2018
2094
  RestApi as _RestApi,
2019
2095
  RestApiProps as _RestApiProps,
2020
2096
  IResource,
2021
2097
  Stage,
2098
+ ThrottleSettings,
2022
2099
  } from 'aws-cdk-lib/aws-apigateway';
2023
- import { IAspect, RemovalPolicy } from 'aws-cdk-lib';
2100
+ import { IAspect, Stack } from 'aws-cdk-lib';
2024
2101
  import {
2025
2102
  CfnLoggingConfiguration,
2026
2103
  CfnWebACL,
2027
2104
  CfnWebACLAssociation,
2028
2105
  } from 'aws-cdk-lib/aws-wafv2';
2029
2106
  import { LogGroup, RetentionDays } from 'aws-cdk-lib/aws-logs';
2107
+ import { Key } from 'aws-cdk-lib/aws-kms';
2108
+ import { ServicePrincipal } from 'aws-cdk-lib/aws-iam';
2030
2109
  import { RuntimeConfig } from '../runtime-config.js';
2110
+ import { ApiGatewayAccount } from './api-gateway-account.js';
2031
2111
  import {
2032
2112
  ApiIntegrations,
2033
2113
  OperationDetails,
@@ -2065,6 +2145,12 @@ export interface RestApiProps<
2065
2145
  * @default true
2066
2146
  */
2067
2147
  readonly enableWaf?: boolean;
2148
+ /**
2149
+ * Default throttling limits applied to all methods on the API's default stage.
2150
+ *
2151
+ * @default { rateLimit: 10000, burstLimit: 5000 }
2152
+ */
2153
+ readonly throttle?: ThrottleSettings;
2068
2154
  }
2069
2155
 
2070
2156
  /**
@@ -2099,14 +2185,49 @@ export class RestApi<
2099
2185
  operations,
2100
2186
  integrations,
2101
2187
  enableWaf = true,
2188
+ throttle = { rateLimit: 10000, burstLimit: 5000 },
2102
2189
  ...props
2103
2190
  }: RestApiProps<TIntegrations, TOperation>,
2104
2191
  ) {
2105
2192
  super(scope, id);
2106
2193
  this.integrations = integrations;
2107
2194
 
2195
+ // Account-level CloudWatch role required for REST API access logging
2196
+ const account = ApiGatewayAccount.ensure(this);
2197
+
2198
+ // KMS key for encrypting logs at rest, usable by CloudWatch Logs
2199
+ const logsKey = new Key(this, 'LogsKey', {
2200
+ enableKeyRotation: true,
2201
+ });
2202
+ logsKey.grantEncryptDecrypt(
2203
+ new ServicePrincipal(\`logs.\${Stack.of(this).region}.amazonaws.com\`),
2204
+ );
2205
+
2206
+ const accessLogs = new LogGroup(this, 'AccessLogs', {
2207
+ retention: RetentionDays.ONE_YEAR,
2208
+ encryptionKey: logsKey,
2209
+ });
2210
+
2108
2211
  // Create the API Gateway REST API
2109
- this.api = new _RestApi(this, 'Api', props);
2212
+ this.api = new _RestApi(this, 'Api', {
2213
+ ...props,
2214
+ deployOptions: {
2215
+ accessLogDestination: new LogGroupLogDestination(accessLogs),
2216
+ accessLogFormat: AccessLogFormat.jsonWithStandardFields(),
2217
+ ...props.deployOptions,
2218
+ methodOptions: {
2219
+ ...props.deployOptions?.methodOptions,
2220
+ // Default throttling applied to all resource paths and methods
2221
+ '/*/*': {
2222
+ throttlingRateLimit: throttle.rateLimit,
2223
+ throttlingBurstLimit: throttle.burstLimit,
2224
+ ...props.deployOptions?.methodOptions?.['/*/*'],
2225
+ },
2226
+ },
2227
+ },
2228
+ });
2229
+ // Ensure the account-level role is configured before the stage is created
2230
+ this.api.deploymentStage.node.addDependency(account.resource);
2110
2231
 
2111
2232
  if (enableWaf) {
2112
2233
  this.webAcl = new CfnWebACL(this, 'WebAcl', {
@@ -2173,14 +2294,9 @@ export class RestApi<
2173
2294
  // \`aws-waf-logs-\` to satisfy the WAFv2 logging destination requirement.
2174
2295
  const wafLogGroup = new LogGroup(this, 'WebAclLogs', {
2175
2296
  logGroupName: \`aws-waf-logs-\${apiName}-\${this.node.addr.slice(-8)}\`,
2176
- retention: RetentionDays.ONE_MONTH,
2177
- removalPolicy: RemovalPolicy.DESTROY,
2297
+ retention: RetentionDays.ONE_YEAR,
2298
+ encryptionKey: logsKey,
2178
2299
  });
2179
- suppressRules(
2180
- wafLogGroup,
2181
- ['CKV_AWS_158'],
2182
- 'Using default CloudWatch log encryption for WAF logs',
2183
- );
2184
2300
 
2185
2301
  new CfnLoggingConfiguration(this, 'WebAclLoggingConfig', {
2186
2302
  resourceArn: this.webAcl.attrArn,
@@ -2194,12 +2310,6 @@ export class RestApi<
2194
2310
  'Caching not required for this use case',
2195
2311
  (c) => c instanceof Stage,
2196
2312
  );
2197
- suppressRules(
2198
- this.api,
2199
- ['CKV_AWS_76'],
2200
- 'API Gateway access logging disabled due to account-level CloudWatch Logs role ARN requirement',
2201
- (c) => c instanceof Stage,
2202
- );
2203
2313
 
2204
2314
  // Resolve the integration for a given operation.
2205
2315
  // If the operation has a dedicated integration, use it; otherwise fall back to $router.
@@ -2708,6 +2818,8 @@ export type ApiIntegrations<TOperation extends string, TBaseIntegration> =
2708
2818
  * @template TDefaultIntegrationProps - Type for default integration properties
2709
2819
  * @template TDefaultIntegration - Type for default integration implementation
2710
2820
  * @template TPattern - The integration pattern ('shared' or 'isolated')
2821
+ * @template TOverridden - Union of operation names that have been overridden
2822
+ * @template TOperationOptioned - Union of operation names with per-operation options
2711
2823
  */
2712
2824
  export class IntegrationBuilder<
2713
2825
  TOperation extends string,
@@ -2716,6 +2828,8 @@ export class IntegrationBuilder<
2716
2828
  TDefaultIntegrationProps extends object,
2717
2829
  TDefaultIntegration extends TBaseIntegration,
2718
2830
  TPattern extends 'shared' | 'isolated',
2831
+ TOverridden extends string = never,
2832
+ TOperationOptioned extends string = never,
2719
2833
  > {
2720
2834
  /** Options for the integration builder */
2721
2835
  private options: IntegrationBuilderProps<
@@ -2728,6 +2842,11 @@ export class IntegrationBuilder<
2728
2842
  /** Map of operation names to their custom integrations */
2729
2843
  private integrations: Partial<TIntegrations> = {};
2730
2844
 
2845
+ /** Map of default integration keys to per-operation default option overrides */
2846
+ private perOperationOptions: Partial<
2847
+ Record<string, Partial<TDefaultIntegrationProps>>
2848
+ > = {};
2849
+
2731
2850
  /**
2732
2851
  * Create an Integration Builder for an HTTP API with a shared pattern
2733
2852
  */
@@ -2882,11 +3001,16 @@ export class IntegrationBuilder<
2882
3001
  /**
2883
3002
  * Overrides default integrations with custom implementations for specific operations.
2884
3003
  *
3004
+ * Operations which have per-operation options set via withOperationOptions cannot be
3005
+ * overridden, since these still use the default integration.
3006
+ *
2885
3007
  * @param overrides - Map of operation names to their custom integration implementations
2886
3008
  * @returns The builder instance with updated type information reflecting the overrides
2887
3009
  */
2888
3010
  public withOverrides<
2889
- TOverrideIntegrations extends Partial<Record<TOperation, TBaseIntegration>>,
3011
+ TOverrideIntegrations extends Partial<
3012
+ Record<Exclude<TOperation, TOperationOptioned>, TBaseIntegration>
3013
+ >,
2890
3014
  >(overrides: TOverrideIntegrations) {
2891
3015
  this.integrations = { ...this.integrations, ...overrides };
2892
3016
  // Re-type to include the overridden integration types.
@@ -2902,7 +3026,9 @@ export class IntegrationBuilder<
2902
3026
  MergedIntegrations,
2903
3027
  TDefaultIntegrationProps,
2904
3028
  TDefaultIntegration,
2905
- TPattern
3029
+ TPattern,
3030
+ TOverridden | Extract<keyof TOverrideIntegrations, string>,
3031
+ TOperationOptioned
2906
3032
  >;
2907
3033
  }
2908
3034
 
@@ -2921,6 +3047,43 @@ export class IntegrationBuilder<
2921
3047
  return this;
2922
3048
  }
2923
3049
 
3050
+ /**
3051
+ * Updates the default integration options for specific operations, without
3052
+ * affecting the others. The given options are merged with the defaults (and
3053
+ * any options set via withDefaultOptions) when building each default integration.
3054
+ *
3055
+ * Operations which have been replaced via withOverrides cannot be targeted, since
3056
+ * they no longer use the default integration.
3057
+ *
3058
+ * @param options - Map of operation names to partial default integration options
3059
+ * @returns The builder instance
3060
+ */
3061
+ public withOperationOptions<
3062
+ TOptions extends Partial<
3063
+ Record<
3064
+ Exclude<DefaultIntegrationKeys<TPattern, TOperation>, TOverridden>,
3065
+ Partial<TDefaultIntegrationProps>
3066
+ >
3067
+ >,
3068
+ >(options: TOptions) {
3069
+ Object.entries(options).forEach(([op, opOptions]) => {
3070
+ this.perOperationOptions[op] = {
3071
+ ...this.perOperationOptions[op],
3072
+ ...(opOptions as Partial<TDefaultIntegrationProps>),
3073
+ };
3074
+ });
3075
+ return this as unknown as IntegrationBuilder<
3076
+ TOperation,
3077
+ TBaseIntegration,
3078
+ TIntegrations,
3079
+ TDefaultIntegrationProps,
3080
+ TDefaultIntegration,
3081
+ TPattern,
3082
+ TOverridden,
3083
+ TOperationOptioned | Extract<keyof TOptions, string>
3084
+ >;
3085
+ }
3086
+
2924
3087
  /**
2925
3088
  * Builds and returns the complete set of integrations.
2926
3089
  *
@@ -2935,6 +3098,10 @@ export class IntegrationBuilder<
2935
3098
  */
2936
3099
  public build(): TIntegrations {
2937
3100
  const options = this.options;
3101
+ const buildOptionsFor = (op: string): TDefaultIntegrationProps => ({
3102
+ ...options.defaultIntegrationOptions,
3103
+ ...this.perOperationOptions[op],
3104
+ });
2938
3105
  return {
2939
3106
  ...Object.fromEntries(
2940
3107
  options.pattern === 'shared'
@@ -2943,7 +3110,7 @@ export class IntegrationBuilder<
2943
3110
  '$router',
2944
3111
  options.buildDefaultIntegration(
2945
3112
  '$router',
2946
- options.defaultIntegrationOptions,
3113
+ buildOptionsFor('$router'),
2947
3114
  ),
2948
3115
  ],
2949
3116
  ]
@@ -2954,10 +3121,7 @@ export class IntegrationBuilder<
2954
3121
  )
2955
3122
  .map((op) => [
2956
3123
  op,
2957
- options.buildDefaultIntegration(
2958
- op,
2959
- options.defaultIntegrationOptions,
2960
- ),
3124
+ options.buildDefaultIntegration(op, buildOptionsFor(op)),
2961
3125
  ]),
2962
3126
  ),
2963
3127
  ...this.integrations,
@@ -2978,7 +3142,7 @@ terraform {
2978
3142
  required_providers {
2979
3143
  aws = {
2980
3144
  source = "hashicorp/aws"
2981
- version = "~> 6.0"
3145
+ version = "6.52.0"
2982
3146
  }
2983
3147
  }
2984
3148
  }
@@ -3225,7 +3389,7 @@ output "api_log_group_arn" {
3225
3389
  required_providers {
3226
3390
  aws = {
3227
3391
  source = "hashicorp/aws"
3228
- version = "~> 6.0"
3392
+ version = "6.52.0"
3229
3393
  }
3230
3394
  }
3231
3395
  }
@@ -3293,12 +3457,6 @@ variable "cors_expose_headers" {
3293
3457
  default = []
3294
3458
  }
3295
3459
 
3296
- variable "cors_max_age" {
3297
- description = "Maximum age for CORS preflight requests in seconds"
3298
- type = number
3299
- default = 0
3300
- }
3301
-
3302
3460
  # Tags
3303
3461
  variable "tags" {
3304
3462
  description = "Tags to apply to all resources"
@@ -3349,7 +3507,6 @@ module "http_api" {
3349
3507
  cors_allow_methods = var.cors_allow_methods
3350
3508
  cors_allow_origins = var.cors_allow_origins
3351
3509
  cors_expose_headers = var.cors_expose_headers
3352
- cors_max_age = var.cors_max_age
3353
3510
 
3354
3511
  # Tags
3355
3512
  tags = var.tags
@@ -3631,7 +3788,7 @@ terraform {
3631
3788
  required_providers {
3632
3789
  aws = {
3633
3790
  source = "hashicorp/aws"
3634
- version = "~> 6.0"
3791
+ version = "6.52.0"
3635
3792
  }
3636
3793
  }
3637
3794
  }
@@ -3878,7 +4035,7 @@ output "api_log_group_arn" {
3878
4035
  required_providers {
3879
4036
  aws = {
3880
4037
  source = "hashicorp/aws"
3881
- version = "~> 6.0"
4038
+ version = "6.52.0"
3882
4039
  }
3883
4040
  }
3884
4041
  }
@@ -3936,12 +4093,6 @@ variable "cors_expose_headers" {
3936
4093
  default = []
3937
4094
  }
3938
4095
 
3939
- variable "cors_max_age" {
3940
- description = "Maximum age for CORS preflight requests in seconds"
3941
- type = number
3942
- default = 0
3943
- }
3944
-
3945
4096
  # Tags
3946
4097
  variable "tags" {
3947
4098
  description = "Tags to apply to all resources"
@@ -3992,7 +4143,6 @@ module "http_api" {
3992
4143
  cors_allow_methods = var.cors_allow_methods
3993
4144
  cors_allow_origins = var.cors_allow_origins
3994
4145
  cors_expose_headers = var.cors_expose_headers
3995
- cors_max_age = var.cors_max_age
3996
4146
 
3997
4147
  # Tags
3998
4148
  tags = var.tags
@@ -4356,7 +4506,7 @@ terraform {
4356
4506
  required_providers {
4357
4507
  aws = {
4358
4508
  source = "hashicorp/aws"
4359
- version = "~> 6.0"
4509
+ version = "6.52.0"
4360
4510
  }
4361
4511
  }
4362
4512
  }
@@ -4603,7 +4753,7 @@ output "api_log_group_arn" {
4603
4753
  required_providers {
4604
4754
  aws = {
4605
4755
  source = "hashicorp/aws"
4606
- version = "~> 6.0"
4756
+ version = "6.52.0"
4607
4757
  }
4608
4758
  }
4609
4759
  }
@@ -4661,12 +4811,6 @@ variable "cors_expose_headers" {
4661
4811
  default = []
4662
4812
  }
4663
4813
 
4664
- variable "cors_max_age" {
4665
- description = "Maximum age for CORS preflight requests in seconds"
4666
- type = number
4667
- default = 0
4668
- }
4669
-
4670
4814
  # Tags
4671
4815
  variable "tags" {
4672
4816
  description = "Tags to apply to all resources"
@@ -4717,7 +4861,6 @@ module "http_api" {
4717
4861
  cors_allow_methods = var.cors_allow_methods
4718
4862
  cors_allow_origins = var.cors_allow_origins
4719
4863
  cors_expose_headers = var.cors_expose_headers
4720
- cors_max_age = var.cors_max_age
4721
4864
 
4722
4865
  # Tags
4723
4866
  tags = var.tags
@@ -4986,11 +5129,11 @@ terraform {
4986
5129
  required_providers {
4987
5130
  aws = {
4988
5131
  source = "hashicorp/aws"
4989
- version = "~> 6.33"
5132
+ version = "6.52.0"
4990
5133
  }
4991
5134
  random = {
4992
5135
  source = "hashicorp/random"
4993
- version = "~> 3.1"
5136
+ version = "3.9.0"
4994
5137
  }
4995
5138
  }
4996
5139
  }
@@ -5060,8 +5203,6 @@ data "aws_caller_identity" "current" {}
5060
5203
 
5061
5204
  # Resources
5062
5205
 
5063
- # Note: CloudWatch logging removed due to account-level CloudWatch Logs role ARN requirement
5064
-
5065
5206
  # REST API Gateway
5066
5207
  resource "aws_api_gateway_rest_api" "rest_api" {
5067
5208
  name = var.api_name
@@ -5078,10 +5219,8 @@ resource "aws_api_gateway_rest_api" "rest_api" {
5078
5219
  tags = var.tags
5079
5220
  }
5080
5221
 
5081
- # Note: Deployment and stage are created in the consuming module (e.g., foo-api.tf)
5082
- # after all methods and integrations are defined
5083
-
5084
- # Note: CloudWatch Log Group removed due to account-level CloudWatch Logs role ARN requirement
5222
+ # Note: Deployment, stage and access logging are created in the consuming module
5223
+ # (e.g., foo-api.tf) after all methods and integrations are defined
5085
5224
 
5086
5225
  # Gateway Response for CORS (4XX errors)
5087
5226
  resource "aws_api_gateway_gateway_response" "cors_4xx" {
@@ -5239,16 +5378,14 @@ output "waf_web_acl_arn" {
5239
5378
  value = var.enable_waf ? aws_wafv2_web_acl.api_waf[0].arn : null
5240
5379
  }
5241
5380
 
5242
- # Note: Stage and deployment outputs are provided by the consuming module
5243
-
5244
- # Note: CloudWatch log group outputs removed due to account-level CloudWatch Logs role ARN requirement",
5381
+ # Note: Stage, deployment and access log outputs are provided by the consuming module",
5245
5382
  "test-api.tf": "terraform {
5246
5383
  required_version = ">= 1.0"
5247
5384
 
5248
5385
  required_providers {
5249
5386
  aws = {
5250
5387
  source = "hashicorp/aws"
5251
- version = "~> 6.33"
5388
+ version = "6.52.0"
5252
5389
  }
5253
5390
  }
5254
5391
  }
@@ -5347,6 +5484,11 @@ resource "aws_s3_object" "lambda_zip" {
5347
5484
  }
5348
5485
 
5349
5486
  # Use the core REST API module
5487
+ # Account-level CloudWatch role required for REST API access logging
5488
+ module "account" {
5489
+ source = "../../../core/api/api-gateway-account"
5490
+ }
5491
+
5350
5492
  module "rest_api" {
5351
5493
  source = "../../../core/api/rest-api"
5352
5494
 
@@ -5502,6 +5644,9 @@ resource "aws_api_gateway_method" "proxy_method" {
5502
5644
 
5503
5645
  authorization = "COGNITO_USER_POOLS"
5504
5646
  authorizer_id = aws_api_gateway_authorizer.cognito_authorizer.id
5647
+ # Accept access tokens from both sign-in flows: 'openid' (Cognito hosted UI)
5648
+ # and 'aws.cognito.signin.user.admin' (Cognito admin/SRP auth APIs).
5649
+ authorization_scopes = ["openid", "aws.cognito.signin.user.admin"]
5505
5650
 
5506
5651
  request_parameters = {
5507
5652
  "method.request.path.proxy" = true
@@ -5588,11 +5733,63 @@ resource "aws_api_gateway_deployment" "api_deployment" {
5588
5733
  ]
5589
5734
  }
5590
5735
 
5736
+ # KMS key for encrypting access logs at rest
5737
+ resource "aws_kms_key" "access_logs" {
5738
+ description = "TestApi API access log encryption"
5739
+ deletion_window_in_days = 7
5740
+ enable_key_rotation = true
5741
+
5742
+ policy = jsonencode({
5743
+ Version = "2012-10-17"
5744
+ Statement = [
5745
+ {
5746
+ Sid = "Enable IAM User Permissions"
5747
+ Effect = "Allow"
5748
+ Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
5749
+ Action = "kms:*"
5750
+ Resource = "*"
5751
+ },
5752
+ {
5753
+ Sid = "Allow CloudWatch Logs"
5754
+ Effect = "Allow"
5755
+ Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
5756
+ Action = [
5757
+ "kms:Encrypt",
5758
+ "kms:Decrypt",
5759
+ "kms:ReEncrypt*",
5760
+ "kms:GenerateDataKey*",
5761
+ "kms:DescribeKey"
5762
+ ]
5763
+ Resource = "*"
5764
+ Condition = {
5765
+ ArnEquals = {
5766
+ "kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/test-api-\${random_string.suffix.result}/access"
5767
+ }
5768
+ }
5769
+ }
5770
+ ]
5771
+ })
5772
+
5773
+ tags = var.tags
5774
+ }
5775
+
5776
+ resource "aws_kms_alias" "access_logs" {
5777
+ name = "alias/test-api-\${random_string.suffix.result}-access-logs"
5778
+ target_key_id = aws_kms_key.access_logs.key_id
5779
+ }
5780
+
5781
+ # Access logs for the API Gateway stage
5782
+ resource "aws_cloudwatch_log_group" "access_logs" {
5783
+ name = "/aws/apigateway/test-api-\${random_string.suffix.result}/access"
5784
+ retention_in_days = 365
5785
+ kms_key_id = aws_kms_key.access_logs.arn
5786
+ tags = var.tags
5787
+ }
5788
+
5591
5789
  # API Gateway stage
5592
5790
  resource "aws_api_gateway_stage" "api_stage" {
5593
5791
  #checkov:skip=CKV_AWS_120:API Gateway caching not required for this use case
5594
- #checkov:skip=CKV_AWS_76:API Gateway access logging disabled due to account-level CloudWatch Logs role ARN requirement
5595
- #checkov:skip=CKV2_AWS_4:API Gateway logging level not applicable as access logging is disabled
5792
+ #checkov:skip=CKV2_AWS_4:Access logging is enabled below; verbose execution logging is intentionally not enabled
5596
5793
  #checkov:skip=CKV2_AWS_51:Client certificate authentication not required for this use case
5597
5794
  #checkov:skip=CKV2_AWS_77:WAFv2 Web ACL is attached via aws_wafv2_web_acl_association when var.enable_waf is true (default) and includes AWSManagedRulesKnownBadInputsRuleSet for Log4j protection; Checkov does not track the association across modules
5598
5795
  deployment_id = aws_api_gateway_deployment.api_deployment.id
@@ -5600,9 +5797,39 @@ resource "aws_api_gateway_stage" "api_stage" {
5600
5797
  stage_name = "prod"
5601
5798
  xray_tracing_enabled = true
5602
5799
 
5800
+ access_log_settings {
5801
+ destination_arn = aws_cloudwatch_log_group.access_logs.arn
5802
+ format = jsonencode({
5803
+ requestId = "$context.requestId"
5804
+ ip = "$context.identity.sourceIp"
5805
+ caller = "$context.identity.caller"
5806
+ user = "$context.identity.user"
5807
+ requestTime = "$context.requestTime"
5808
+ httpMethod = "$context.httpMethod"
5809
+ resourcePath = "$context.resourcePath"
5810
+ status = "$context.status"
5811
+ protocol = "$context.protocol"
5812
+ responseLength = "$context.responseLength"
5813
+ })
5814
+ }
5815
+
5603
5816
  tags = var.tags
5604
5817
 
5605
- depends_on = [aws_api_gateway_deployment.api_deployment]
5818
+ # Ensure the account-level role is configured before the stage is created
5819
+ depends_on = [aws_api_gateway_deployment.api_deployment, module.account]
5820
+ }
5821
+
5822
+ # Default throttling applied to all resource paths and methods
5823
+ resource "aws_api_gateway_method_settings" "throttling" {
5824
+ #checkov:skip=CKV_AWS_225:API Gateway caching not required for this use case
5825
+ rest_api_id = module.rest_api.api_id
5826
+ stage_name = aws_api_gateway_stage.api_stage.stage_name
5827
+ method_path = "*/*"
5828
+
5829
+ settings {
5830
+ throttling_rate_limit = 10000
5831
+ throttling_burst_limit = 5000
5832
+ }
5606
5833
  }
5607
5834
 
5608
5835
  # API Gateway Resource Policy
@@ -5782,11 +6009,11 @@ terraform {
5782
6009
  required_providers {
5783
6010
  aws = {
5784
6011
  source = "hashicorp/aws"
5785
- version = "~> 6.33"
6012
+ version = "6.52.0"
5786
6013
  }
5787
6014
  random = {
5788
6015
  source = "hashicorp/random"
5789
- version = "~> 3.1"
6016
+ version = "3.9.0"
5790
6017
  }
5791
6018
  }
5792
6019
  }
@@ -5856,8 +6083,6 @@ data "aws_caller_identity" "current" {}
5856
6083
 
5857
6084
  # Resources
5858
6085
 
5859
- # Note: CloudWatch logging removed due to account-level CloudWatch Logs role ARN requirement
5860
-
5861
6086
  # REST API Gateway
5862
6087
  resource "aws_api_gateway_rest_api" "rest_api" {
5863
6088
  name = var.api_name
@@ -5874,10 +6099,8 @@ resource "aws_api_gateway_rest_api" "rest_api" {
5874
6099
  tags = var.tags
5875
6100
  }
5876
6101
 
5877
- # Note: Deployment and stage are created in the consuming module (e.g., foo-api.tf)
5878
- # after all methods and integrations are defined
5879
-
5880
- # Note: CloudWatch Log Group removed due to account-level CloudWatch Logs role ARN requirement
6102
+ # Note: Deployment, stage and access logging are created in the consuming module
6103
+ # (e.g., foo-api.tf) after all methods and integrations are defined
5881
6104
 
5882
6105
  # Gateway Response for CORS (4XX errors)
5883
6106
  resource "aws_api_gateway_gateway_response" "cors_4xx" {
@@ -6035,16 +6258,14 @@ output "waf_web_acl_arn" {
6035
6258
  value = var.enable_waf ? aws_wafv2_web_acl.api_waf[0].arn : null
6036
6259
  }
6037
6260
 
6038
- # Note: Stage and deployment outputs are provided by the consuming module
6039
-
6040
- # Note: CloudWatch log group outputs removed due to account-level CloudWatch Logs role ARN requirement",
6261
+ # Note: Stage, deployment and access log outputs are provided by the consuming module",
6041
6262
  "test-api.tf": "terraform {
6042
6263
  required_version = ">= 1.0"
6043
6264
 
6044
6265
  required_providers {
6045
6266
  aws = {
6046
6267
  source = "hashicorp/aws"
6047
- version = "~> 6.33"
6268
+ version = "6.52.0"
6048
6269
  }
6049
6270
  }
6050
6271
  }
@@ -6133,6 +6354,11 @@ resource "aws_s3_object" "lambda_zip" {
6133
6354
  }
6134
6355
 
6135
6356
  # Use the core REST API module
6357
+ # Account-level CloudWatch role required for REST API access logging
6358
+ module "account" {
6359
+ source = "../../../core/api/api-gateway-account"
6360
+ }
6361
+
6136
6362
  module "rest_api" {
6137
6363
  source = "../../../core/api/rest-api"
6138
6364
 
@@ -6365,11 +6591,63 @@ resource "aws_api_gateway_deployment" "api_deployment" {
6365
6591
  ]
6366
6592
  }
6367
6593
 
6594
+ # KMS key for encrypting access logs at rest
6595
+ resource "aws_kms_key" "access_logs" {
6596
+ description = "TestApi API access log encryption"
6597
+ deletion_window_in_days = 7
6598
+ enable_key_rotation = true
6599
+
6600
+ policy = jsonencode({
6601
+ Version = "2012-10-17"
6602
+ Statement = [
6603
+ {
6604
+ Sid = "Enable IAM User Permissions"
6605
+ Effect = "Allow"
6606
+ Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
6607
+ Action = "kms:*"
6608
+ Resource = "*"
6609
+ },
6610
+ {
6611
+ Sid = "Allow CloudWatch Logs"
6612
+ Effect = "Allow"
6613
+ Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
6614
+ Action = [
6615
+ "kms:Encrypt",
6616
+ "kms:Decrypt",
6617
+ "kms:ReEncrypt*",
6618
+ "kms:GenerateDataKey*",
6619
+ "kms:DescribeKey"
6620
+ ]
6621
+ Resource = "*"
6622
+ Condition = {
6623
+ ArnEquals = {
6624
+ "kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/test-api-\${random_string.suffix.result}/access"
6625
+ }
6626
+ }
6627
+ }
6628
+ ]
6629
+ })
6630
+
6631
+ tags = var.tags
6632
+ }
6633
+
6634
+ resource "aws_kms_alias" "access_logs" {
6635
+ name = "alias/test-api-\${random_string.suffix.result}-access-logs"
6636
+ target_key_id = aws_kms_key.access_logs.key_id
6637
+ }
6638
+
6639
+ # Access logs for the API Gateway stage
6640
+ resource "aws_cloudwatch_log_group" "access_logs" {
6641
+ name = "/aws/apigateway/test-api-\${random_string.suffix.result}/access"
6642
+ retention_in_days = 365
6643
+ kms_key_id = aws_kms_key.access_logs.arn
6644
+ tags = var.tags
6645
+ }
6646
+
6368
6647
  # API Gateway stage
6369
6648
  resource "aws_api_gateway_stage" "api_stage" {
6370
6649
  #checkov:skip=CKV_AWS_120:API Gateway caching not required for this use case
6371
- #checkov:skip=CKV_AWS_76:API Gateway access logging disabled due to account-level CloudWatch Logs role ARN requirement
6372
- #checkov:skip=CKV2_AWS_4:API Gateway logging level not applicable as access logging is disabled
6650
+ #checkov:skip=CKV2_AWS_4:Access logging is enabled below; verbose execution logging is intentionally not enabled
6373
6651
  #checkov:skip=CKV2_AWS_51:Client certificate authentication not required for this use case
6374
6652
  #checkov:skip=CKV2_AWS_77:WAFv2 Web ACL is attached via aws_wafv2_web_acl_association when var.enable_waf is true (default) and includes AWSManagedRulesKnownBadInputsRuleSet for Log4j protection; Checkov does not track the association across modules
6375
6653
  deployment_id = aws_api_gateway_deployment.api_deployment.id
@@ -6377,9 +6655,39 @@ resource "aws_api_gateway_stage" "api_stage" {
6377
6655
  stage_name = "prod"
6378
6656
  xray_tracing_enabled = true
6379
6657
 
6658
+ access_log_settings {
6659
+ destination_arn = aws_cloudwatch_log_group.access_logs.arn
6660
+ format = jsonencode({
6661
+ requestId = "$context.requestId"
6662
+ ip = "$context.identity.sourceIp"
6663
+ caller = "$context.identity.caller"
6664
+ user = "$context.identity.user"
6665
+ requestTime = "$context.requestTime"
6666
+ httpMethod = "$context.httpMethod"
6667
+ resourcePath = "$context.resourcePath"
6668
+ status = "$context.status"
6669
+ protocol = "$context.protocol"
6670
+ responseLength = "$context.responseLength"
6671
+ })
6672
+ }
6673
+
6380
6674
  tags = var.tags
6381
6675
 
6382
- depends_on = [aws_api_gateway_deployment.api_deployment]
6676
+ # Ensure the account-level role is configured before the stage is created
6677
+ depends_on = [aws_api_gateway_deployment.api_deployment, module.account]
6678
+ }
6679
+
6680
+ # Default throttling applied to all resource paths and methods
6681
+ resource "aws_api_gateway_method_settings" "throttling" {
6682
+ #checkov:skip=CKV_AWS_225:API Gateway caching not required for this use case
6683
+ rest_api_id = module.rest_api.api_id
6684
+ stage_name = aws_api_gateway_stage.api_stage.stage_name
6685
+ method_path = "*/*"
6686
+
6687
+ settings {
6688
+ throttling_rate_limit = 10000
6689
+ throttling_burst_limit = 5000
6690
+ }
6383
6691
  }
6384
6692
 
6385
6693
  # API Gateway Resource Policy
@@ -6570,11 +6878,11 @@ terraform {
6570
6878
  required_providers {
6571
6879
  aws = {
6572
6880
  source = "hashicorp/aws"
6573
- version = "~> 6.33"
6881
+ version = "6.52.0"
6574
6882
  }
6575
6883
  random = {
6576
6884
  source = "hashicorp/random"
6577
- version = "~> 3.1"
6885
+ version = "3.9.0"
6578
6886
  }
6579
6887
  }
6580
6888
  }
@@ -6644,8 +6952,6 @@ data "aws_caller_identity" "current" {}
6644
6952
 
6645
6953
  # Resources
6646
6954
 
6647
- # Note: CloudWatch logging removed due to account-level CloudWatch Logs role ARN requirement
6648
-
6649
6955
  # REST API Gateway
6650
6956
  resource "aws_api_gateway_rest_api" "rest_api" {
6651
6957
  name = var.api_name
@@ -6662,10 +6968,8 @@ resource "aws_api_gateway_rest_api" "rest_api" {
6662
6968
  tags = var.tags
6663
6969
  }
6664
6970
 
6665
- # Note: Deployment and stage are created in the consuming module (e.g., foo-api.tf)
6666
- # after all methods and integrations are defined
6667
-
6668
- # Note: CloudWatch Log Group removed due to account-level CloudWatch Logs role ARN requirement
6971
+ # Note: Deployment, stage and access logging are created in the consuming module
6972
+ # (e.g., foo-api.tf) after all methods and integrations are defined
6669
6973
 
6670
6974
  # Gateway Response for CORS (4XX errors)
6671
6975
  resource "aws_api_gateway_gateway_response" "cors_4xx" {
@@ -6823,16 +7127,14 @@ output "waf_web_acl_arn" {
6823
7127
  value = var.enable_waf ? aws_wafv2_web_acl.api_waf[0].arn : null
6824
7128
  }
6825
7129
 
6826
- # Note: Stage and deployment outputs are provided by the consuming module
6827
-
6828
- # Note: CloudWatch log group outputs removed due to account-level CloudWatch Logs role ARN requirement",
7130
+ # Note: Stage, deployment and access log outputs are provided by the consuming module",
6829
7131
  "test-api.tf": "terraform {
6830
7132
  required_version = ">= 1.0"
6831
7133
 
6832
7134
  required_providers {
6833
7135
  aws = {
6834
7136
  source = "hashicorp/aws"
6835
- version = "~> 6.33"
7137
+ version = "6.52.0"
6836
7138
  }
6837
7139
  }
6838
7140
  }
@@ -6921,6 +7223,11 @@ resource "aws_s3_object" "lambda_zip" {
6921
7223
  }
6922
7224
 
6923
7225
  # Use the core REST API module
7226
+ # Account-level CloudWatch role required for REST API access logging
7227
+ module "account" {
7228
+ source = "../../../core/api/api-gateway-account"
7229
+ }
7230
+
6924
7231
  module "rest_api" {
6925
7232
  source = "../../../core/api/rest-api"
6926
7233
 
@@ -7247,11 +7554,63 @@ resource "aws_api_gateway_deployment" "api_deployment" {
7247
7554
  ]
7248
7555
  }
7249
7556
 
7557
+ # KMS key for encrypting access logs at rest
7558
+ resource "aws_kms_key" "access_logs" {
7559
+ description = "TestApi API access log encryption"
7560
+ deletion_window_in_days = 7
7561
+ enable_key_rotation = true
7562
+
7563
+ policy = jsonencode({
7564
+ Version = "2012-10-17"
7565
+ Statement = [
7566
+ {
7567
+ Sid = "Enable IAM User Permissions"
7568
+ Effect = "Allow"
7569
+ Principal = { AWS = "arn:aws:iam::\${data.aws_caller_identity.current.account_id}:root" }
7570
+ Action = "kms:*"
7571
+ Resource = "*"
7572
+ },
7573
+ {
7574
+ Sid = "Allow CloudWatch Logs"
7575
+ Effect = "Allow"
7576
+ Principal = { Service = "logs.\${data.aws_region.current.region}.amazonaws.com" }
7577
+ Action = [
7578
+ "kms:Encrypt",
7579
+ "kms:Decrypt",
7580
+ "kms:ReEncrypt*",
7581
+ "kms:GenerateDataKey*",
7582
+ "kms:DescribeKey"
7583
+ ]
7584
+ Resource = "*"
7585
+ Condition = {
7586
+ ArnEquals = {
7587
+ "kms:EncryptionContext:aws:logs:arn" = "arn:aws:logs:\${data.aws_region.current.region}:\${data.aws_caller_identity.current.account_id}:log-group:/aws/apigateway/test-api-\${random_string.suffix.result}/access"
7588
+ }
7589
+ }
7590
+ }
7591
+ ]
7592
+ })
7593
+
7594
+ tags = var.tags
7595
+ }
7596
+
7597
+ resource "aws_kms_alias" "access_logs" {
7598
+ name = "alias/test-api-\${random_string.suffix.result}-access-logs"
7599
+ target_key_id = aws_kms_key.access_logs.key_id
7600
+ }
7601
+
7602
+ # Access logs for the API Gateway stage
7603
+ resource "aws_cloudwatch_log_group" "access_logs" {
7604
+ name = "/aws/apigateway/test-api-\${random_string.suffix.result}/access"
7605
+ retention_in_days = 365
7606
+ kms_key_id = aws_kms_key.access_logs.arn
7607
+ tags = var.tags
7608
+ }
7609
+
7250
7610
  # API Gateway stage
7251
7611
  resource "aws_api_gateway_stage" "api_stage" {
7252
7612
  #checkov:skip=CKV_AWS_120:API Gateway caching not required for this use case
7253
- #checkov:skip=CKV_AWS_76:API Gateway access logging disabled due to account-level CloudWatch Logs role ARN requirement
7254
- #checkov:skip=CKV2_AWS_4:API Gateway logging level not applicable as access logging is disabled
7613
+ #checkov:skip=CKV2_AWS_4:Access logging is enabled below; verbose execution logging is intentionally not enabled
7255
7614
  #checkov:skip=CKV2_AWS_51:Client certificate authentication not required for this use case
7256
7615
  #checkov:skip=CKV2_AWS_77:WAFv2 Web ACL is attached via aws_wafv2_web_acl_association when var.enable_waf is true (default) and includes AWSManagedRulesKnownBadInputsRuleSet for Log4j protection; Checkov does not track the association across modules
7257
7616
  deployment_id = aws_api_gateway_deployment.api_deployment.id
@@ -7259,9 +7618,39 @@ resource "aws_api_gateway_stage" "api_stage" {
7259
7618
  stage_name = "prod"
7260
7619
  xray_tracing_enabled = true
7261
7620
 
7621
+ access_log_settings {
7622
+ destination_arn = aws_cloudwatch_log_group.access_logs.arn
7623
+ format = jsonencode({
7624
+ requestId = "$context.requestId"
7625
+ ip = "$context.identity.sourceIp"
7626
+ caller = "$context.identity.caller"
7627
+ user = "$context.identity.user"
7628
+ requestTime = "$context.requestTime"
7629
+ httpMethod = "$context.httpMethod"
7630
+ resourcePath = "$context.resourcePath"
7631
+ status = "$context.status"
7632
+ protocol = "$context.protocol"
7633
+ responseLength = "$context.responseLength"
7634
+ })
7635
+ }
7636
+
7262
7637
  tags = var.tags
7263
7638
 
7264
- depends_on = [aws_api_gateway_deployment.api_deployment]
7639
+ # Ensure the account-level role is configured before the stage is created
7640
+ depends_on = [aws_api_gateway_deployment.api_deployment, module.account]
7641
+ }
7642
+
7643
+ # Default throttling applied to all resource paths and methods
7644
+ resource "aws_api_gateway_method_settings" "throttling" {
7645
+ #checkov:skip=CKV_AWS_225:API Gateway caching not required for this use case
7646
+ rest_api_id = module.rest_api.api_id
7647
+ stage_name = aws_api_gateway_stage.api_stage.stage_name
7648
+ method_path = "*/*"
7649
+
7650
+ settings {
7651
+ throttling_rate_limit = 10000
7652
+ throttling_burst_limit = 5000
7653
+ }
7265
7654
  }
7266
7655
 
7267
7656
  # API Gateway Resource Policy