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

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 (774) hide show
  1. package/LICENSE-THIRD-PARTY +3643 -1208
  2. package/package.json +30 -15
  3. package/src/agentcore-gateway/attach-upstream.d.ts +7 -7
  4. package/src/agentcore-gateway/attach-upstream.js +19 -22
  5. package/src/agentcore-gateway/attach-upstream.js.map +1 -1
  6. package/src/agentcore-gateway/gateway-connection/generator.d.ts +4 -4
  7. package/src/agentcore-gateway/gateway-connection/generator.js +45 -46
  8. package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
  9. package/src/agentcore-gateway/gateway-connection/schema.d.js +6 -0
  10. package/src/agentcore-gateway/gateway-connection/schema.d.js.map +1 -0
  11. package/src/agentcore-gateway/gateway-connection/schema.d.ts +1 -0
  12. package/src/agentcore-gateway/gateway-connection/schema.json +5 -0
  13. package/src/agentcore-gateway/generator.js +93 -73
  14. package/src/agentcore-gateway/generator.js.map +1 -1
  15. package/src/agentcore-gateway/mcp-connection/generator.d.ts +3 -3
  16. package/src/agentcore-gateway/mcp-connection/generator.js +27 -31
  17. package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
  18. package/src/agentcore-gateway/mcp-connection/schema.d.js +6 -0
  19. package/src/agentcore-gateway/mcp-connection/schema.d.js.map +1 -0
  20. package/src/agentcore-gateway/mcp-connection/schema.d.ts +1 -0
  21. package/src/agentcore-gateway/mcp-connection/schema.json +5 -0
  22. package/src/agentcore-gateway/schema.d.js +6 -0
  23. package/src/agentcore-gateway/schema.d.js.map +1 -0
  24. package/src/agentcore-gateway/schema.d.ts +1 -0
  25. package/src/agentcore-gateway/schema.json +5 -0
  26. package/src/bin/aws-nx-mcp.js +14 -0
  27. package/src/bin/aws-nx-mcp.js.map +1 -0
  28. package/src/connection/{agent-serve-local.d.ts → agent-local-dev.d.ts} +5 -5
  29. package/src/connection/agent-local-dev.js +42 -0
  30. package/src/connection/agent-local-dev.js.map +1 -0
  31. package/src/connection/agent-runtime-config.js +9 -14
  32. package/src/connection/agent-runtime-config.js.map +1 -1
  33. package/src/connection/generator.d.ts +1 -0
  34. package/src/connection/generator.js +265 -206
  35. package/src/connection/generator.js.map +1 -1
  36. package/src/connection/{serve-local.d.ts → local-dev.d.ts} +3 -3
  37. package/src/connection/local-dev.js +37 -0
  38. package/src/connection/local-dev.js.map +1 -0
  39. package/src/connection/schema.d.js +6 -0
  40. package/src/connection/schema.d.js.map +1 -0
  41. package/src/connection/schema.d.ts +1 -0
  42. package/src/connection/schema.json +5 -0
  43. package/src/index.js +2 -5
  44. package/src/index.js.map +1 -1
  45. package/src/infra/app/__snapshots__/generator.spec.ts.snap +33 -47
  46. package/src/infra/app/generator.js +140 -124
  47. package/src/infra/app/generator.js.map +1 -1
  48. package/src/infra/app/schema.d.js +6 -0
  49. package/src/infra/app/schema.d.js.map +1 -0
  50. package/src/infra/app/schema.d.ts +1 -1
  51. package/src/infra/app/schema.json +5 -0
  52. package/src/license/config-types.js +5 -3
  53. package/src/license/config-types.js.map +1 -1
  54. package/src/license/config.d.ts +1 -1
  55. package/src/license/config.js +267 -242
  56. package/src/license/config.js.map +1 -1
  57. package/src/license/dependency-check/check.js +51 -46
  58. package/src/license/dependency-check/check.js.map +1 -1
  59. package/src/license/dependency-check/collectors/collector.js +41 -71
  60. package/src/license/dependency-check/collectors/collector.js.map +1 -1
  61. package/src/license/dependency-check/collectors/npm-collector.js +34 -41
  62. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -1
  63. package/src/license/dependency-check/collectors/python-collector.js +55 -62
  64. package/src/license/dependency-check/collectors/python-collector.js.map +1 -1
  65. package/src/license/dependency-check/evaluator.js +40 -68
  66. package/src/license/dependency-check/evaluator.js.map +1 -1
  67. package/src/license/dependency-check/executor.js +30 -22
  68. package/src/license/dependency-check/executor.js.map +1 -1
  69. package/src/license/dependency-check/pre-approved.js +949 -336
  70. package/src/license/dependency-check/pre-approved.js.map +1 -1
  71. package/src/license/dependency-check/types.js +2 -3
  72. package/src/license/dependency-check/types.js.map +1 -1
  73. package/src/license/generator.js +55 -60
  74. package/src/license/generator.js.map +1 -1
  75. package/src/license/index.js +3 -9
  76. package/src/license/index.js.map +1 -1
  77. package/src/license/known-exceptions.js +14 -13
  78. package/src/license/known-exceptions.js.map +1 -1
  79. package/src/license/schema.d.js +6 -0
  80. package/src/license/schema.d.js.map +1 -0
  81. package/src/license/schema.d.ts +2 -0
  82. package/src/license/schema.json +5 -0
  83. package/src/license/sync/generator.js +94 -119
  84. package/src/license/sync/generator.js.map +1 -1
  85. package/src/license/sync/project-file-sync.js +28 -35
  86. package/src/license/sync/project-file-sync.js.map +1 -1
  87. package/src/mcp-server/generator-info.js +130 -160
  88. package/src/mcp-server/generator-info.js.map +1 -1
  89. package/src/mcp-server/guide-pipeline.js +184 -206
  90. package/src/mcp-server/guide-pipeline.js.map +1 -1
  91. package/src/mcp-server/guide-render.js +10 -25
  92. package/src/mcp-server/guide-render.js.map +1 -1
  93. package/src/mcp-server/index.js +6 -10
  94. package/src/mcp-server/index.js.map +1 -1
  95. package/src/mcp-server/mdx-ast.js +39 -57
  96. package/src/mcp-server/mdx-ast.js.map +1 -1
  97. package/src/mcp-server/option-filter.js +33 -47
  98. package/src/mcp-server/option-filter.js.map +1 -1
  99. package/src/mcp-server/schema-registry.js +27 -40
  100. package/src/mcp-server/schema-registry.js.map +1 -1
  101. package/src/mcp-server/schema.js +9 -7
  102. package/src/mcp-server/schema.js.map +1 -1
  103. package/src/mcp-server/server.js +20 -24
  104. package/src/mcp-server/server.js.map +1 -1
  105. package/src/mcp-server/tools/create-workspace-command.js +23 -24
  106. package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
  107. package/src/mcp-server/tools/general-guidance.js +45 -25
  108. package/src/mcp-server/tools/general-guidance.js.map +1 -1
  109. package/src/mcp-server/tools/generator-guide.js +29 -37
  110. package/src/mcp-server/tools/generator-guide.js.map +1 -1
  111. package/src/mcp-server/tools/list-generators.js +19 -25
  112. package/src/mcp-server/tools/list-generators.js.map +1 -1
  113. package/src/open-api/ts-client/generator.js +16 -26
  114. package/src/open-api/ts-client/generator.js.map +1 -1
  115. package/src/open-api/ts-client/schema.d.js +6 -0
  116. package/src/open-api/ts-client/schema.d.js.map +1 -0
  117. package/src/open-api/ts-hooks/generator.js +13 -21
  118. package/src/open-api/ts-hooks/generator.js.map +1 -1
  119. package/src/open-api/ts-hooks/schema.d.js +6 -0
  120. package/src/open-api/ts-hooks/schema.d.js.map +1 -0
  121. package/src/open-api/ts-metadata/generator.js +12 -20
  122. package/src/open-api/ts-metadata/generator.js.map +1 -1
  123. package/src/open-api/ts-metadata/schema.d.js +6 -0
  124. package/src/open-api/ts-metadata/schema.d.js.map +1 -0
  125. package/src/open-api/utils/codegen-data/languages.js +42 -60
  126. package/src/open-api/utils/codegen-data/languages.js.map +1 -1
  127. package/src/open-api/utils/codegen-data/types.js +31 -30
  128. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  129. package/src/open-api/utils/codegen-data.js +253 -269
  130. package/src/open-api/utils/codegen-data.js.map +1 -1
  131. package/src/open-api/utils/normalise.js +242 -241
  132. package/src/open-api/utils/normalise.js.map +1 -1
  133. package/src/open-api/utils/parse.js +8 -14
  134. package/src/open-api/utils/parse.js.map +1 -1
  135. package/src/open-api/utils/refs.js +12 -22
  136. package/src/open-api/utils/refs.js.map +1 -1
  137. package/src/open-api/utils/types.js +5 -2
  138. package/src/open-api/utils/types.js.map +1 -1
  139. package/src/preset/__snapshots__/generator.spec.ts.snap +32 -7
  140. package/src/preset/generator.d.ts +1 -1
  141. package/src/preset/generator.js +134 -113
  142. package/src/preset/generator.js.map +1 -1
  143. package/src/preset/schema.d.js +6 -0
  144. package/src/preset/schema.d.js.map +1 -0
  145. package/src/preset/schema.d.ts +1 -1
  146. package/src/preset/schema.json +5 -5
  147. package/src/py/agent/__snapshots__/generator.constructs.spec.ts.snap +304 -0
  148. package/src/py/agent/__snapshots__/{generator.spec.ts.snap → generator.frameworks.spec.ts.snap} +16 -853
  149. package/src/py/agent/__snapshots__/generator.protocols.spec.ts.snap +535 -0
  150. package/src/py/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -2
  151. package/src/py/agent/a2a-connection/files/agent-connection/app/__targetAgentSnakeCase___client_strands.py.template +1 -1
  152. package/src/py/agent/a2a-connection/files/langchain/agent-connection/app/__targetAgentSnakeCase___client_langchain.py.template +1 -1
  153. package/src/py/agent/a2a-connection/generator.js +74 -75
  154. package/src/py/agent/a2a-connection/generator.js.map +1 -1
  155. package/src/py/agent/a2a-connection/schema.d.js +8 -0
  156. package/src/py/agent/a2a-connection/schema.d.js.map +1 -0
  157. package/src/py/agent/a2a-connection/schema.d.ts +1 -0
  158. package/src/py/agent/a2a-connection/schema.json +5 -0
  159. package/src/py/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +6 -8
  160. package/src/py/agent/gateway-connection/files/agent-connection/app/__gatewaySnakeCase___client_strands.py.template +3 -3
  161. package/src/py/agent/gateway-connection/files/langchain/agent-connection/app/__gatewaySnakeCase___client_langchain.py.template +3 -3
  162. package/src/py/agent/gateway-connection/generator.js +65 -58
  163. package/src/py/agent/gateway-connection/generator.js.map +1 -1
  164. package/src/py/agent/gateway-connection/schema.d.js +6 -0
  165. package/src/py/agent/gateway-connection/schema.d.js.map +1 -0
  166. package/src/py/agent/gateway-connection/schema.d.ts +1 -0
  167. package/src/py/agent/gateway-connection/schema.json +5 -0
  168. package/src/py/agent/generator.js +230 -194
  169. package/src/py/agent/generator.js.map +1 -1
  170. package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +5 -12
  171. package/src/py/agent/mcp-connection/files/agent-connection/app/__mcpServerSnakeCase___client_strands.py.template +1 -1
  172. package/src/py/agent/mcp-connection/files/langchain/agent-connection/app/__mcpServerSnakeCase___client_langchain.py.template +1 -1
  173. package/src/py/agent/mcp-connection/generator.js +57 -52
  174. package/src/py/agent/mcp-connection/generator.js.map +1 -1
  175. package/src/py/agent/mcp-connection/schema.d.js +8 -0
  176. package/src/py/agent/mcp-connection/schema.d.js.map +1 -0
  177. package/src/py/agent/mcp-connection/schema.d.ts +1 -0
  178. package/src/py/agent/mcp-connection/schema.json +5 -0
  179. package/src/py/agent/react-connection/__snapshots__/generator.spec.ts.snap +3 -2
  180. package/src/py/agent/react-connection/generator.d.ts +1 -1
  181. package/src/py/agent/react-connection/generator.js +55 -59
  182. package/src/py/agent/react-connection/generator.js.map +1 -1
  183. package/src/py/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +4 -4
  184. package/src/py/agent/react-connection/local-dev.js +36 -0
  185. package/src/py/agent/react-connection/local-dev.js.map +1 -0
  186. package/src/py/agent/react-connection/schema.d.js +8 -0
  187. package/src/py/agent/react-connection/schema.d.js.map +1 -0
  188. package/src/py/agent/react-connection/schema.d.ts +1 -0
  189. package/src/py/agent/react-connection/schema.json +5 -0
  190. package/src/py/agent/schema.d.js +6 -0
  191. package/src/py/agent/schema.d.js.map +1 -0
  192. package/src/py/agent/schema.d.ts +1 -0
  193. package/src/py/agent/schema.json +5 -0
  194. package/src/py/api/generator.js +12 -11
  195. package/src/py/api/generator.js.map +1 -1
  196. package/src/py/api/schema.d.js +6 -0
  197. package/src/py/api/schema.d.js.map +1 -0
  198. package/src/py/api/schema.d.ts +1 -0
  199. package/src/py/api/schema.json +5 -0
  200. package/src/py/dynamodb/__snapshots__/generator.spec.ts.snap +68 -28
  201. package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
  202. package/src/py/dynamodb/agent-connection/generator.js +30 -30
  203. package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
  204. package/src/py/dynamodb/agent-connection/schema.d.js +8 -0
  205. package/src/py/dynamodb/agent-connection/schema.d.js.map +1 -0
  206. package/src/py/dynamodb/agent-connection/schema.d.ts +1 -0
  207. package/src/py/dynamodb/agent-connection/schema.json +5 -0
  208. package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +3 -3
  209. package/src/py/dynamodb/fast-api-connection/generator.js +29 -29
  210. package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
  211. package/src/py/dynamodb/fast-api-connection/schema.d.js +8 -0
  212. package/src/py/dynamodb/fast-api-connection/schema.d.js.map +1 -0
  213. package/src/py/dynamodb/fast-api-connection/schema.d.ts +1 -0
  214. package/src/py/dynamodb/fast-api-connection/schema.json +5 -0
  215. package/src/py/dynamodb/files/__name__/client.py.template +5 -5
  216. package/src/py/dynamodb/files/__name__/entities/base.py.template +2 -2
  217. package/src/py/dynamodb/files/config.json.template +1 -1
  218. package/src/py/dynamodb/generator.js +66 -62
  219. package/src/py/dynamodb/generator.js.map +1 -1
  220. package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
  221. package/src/py/dynamodb/mcp-server-connection/generator.js +30 -30
  222. package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
  223. package/src/py/dynamodb/mcp-server-connection/schema.d.js +8 -0
  224. package/src/py/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  225. package/src/py/dynamodb/mcp-server-connection/schema.d.ts +1 -0
  226. package/src/py/dynamodb/mcp-server-connection/schema.json +5 -0
  227. package/src/py/dynamodb/schema.d.js +6 -0
  228. package/src/py/dynamodb/schema.d.js.map +1 -0
  229. package/src/py/dynamodb/schema.d.ts +1 -0
  230. package/src/py/dynamodb/schema.json +5 -0
  231. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +45 -4632
  232. package/src/py/fast-api/__snapshots__/generator.terraform.spec.ts.snap +4833 -0
  233. package/src/py/fast-api/generator.js +82 -85
  234. package/src/py/fast-api/generator.js.map +1 -1
  235. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +3 -2
  236. package/src/py/fast-api/react/generator.d.ts +2 -2
  237. package/src/py/fast-api/react/generator.js +25 -25
  238. package/src/py/fast-api/react/generator.js.map +1 -1
  239. package/src/py/fast-api/react/open-api.js +28 -29
  240. package/src/py/fast-api/react/open-api.js.map +1 -1
  241. package/src/py/fast-api/react/schema.d.js +6 -0
  242. package/src/py/fast-api/react/schema.d.js.map +1 -0
  243. package/src/py/fast-api/react/schema.d.ts +1 -0
  244. package/src/py/fast-api/react/schema.json +5 -0
  245. package/src/py/fast-api/schema.d.js +6 -0
  246. package/src/py/fast-api/schema.d.js.map +1 -0
  247. package/src/py/fast-api/schema.d.ts +1 -0
  248. package/src/py/fast-api/schema.json +5 -0
  249. package/src/py/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  250. package/src/py/lambda-function/generator.js +60 -59
  251. package/src/py/lambda-function/generator.js.map +1 -1
  252. package/src/py/lambda-function/schema.d.js +6 -0
  253. package/src/py/lambda-function/schema.d.js.map +1 -0
  254. package/src/py/lambda-function/schema.d.ts +1 -0
  255. package/src/py/lambda-function/schema.json +5 -0
  256. package/src/py/mcp-server/__snapshots__/generator.spec.ts.snap +8 -8
  257. package/src/py/mcp-server/generator.js +152 -132
  258. package/src/py/mcp-server/generator.js.map +1 -1
  259. package/src/py/mcp-server/schema.d.js +6 -0
  260. package/src/py/mcp-server/schema.d.js.map +1 -0
  261. package/src/py/mcp-server/schema.d.ts +1 -0
  262. package/src/py/mcp-server/schema.json +5 -0
  263. package/src/py/project/generator.js +132 -90
  264. package/src/py/project/generator.js.map +1 -1
  265. package/src/py/project/schema.d.js +6 -0
  266. package/src/py/project/schema.d.js.map +1 -0
  267. package/src/py/project/schema.d.ts +1 -0
  268. package/src/py/project/schema.json +5 -0
  269. package/src/sdk/agentcore-gateway.d.ts +6 -0
  270. package/src/sdk/agentcore-gateway.js +7 -0
  271. package/src/sdk/agentcore-gateway.js.map +1 -0
  272. package/src/sdk/connection.d.ts +6 -0
  273. package/src/sdk/connection.js +6 -0
  274. package/src/sdk/connection.js.map +1 -0
  275. package/{sdk → src/sdk}/license.d.ts +4 -4
  276. package/src/sdk/license.js +7 -0
  277. package/src/sdk/license.js.map +1 -0
  278. package/src/sdk/open-api.d.ts +10 -0
  279. package/src/sdk/open-api.js +8 -0
  280. package/src/sdk/open-api.js.map +1 -0
  281. package/src/sdk/py.d.ts +14 -0
  282. package/src/sdk/py.js +10 -0
  283. package/src/sdk/py.js.map +1 -0
  284. package/src/sdk/terraform.d.ts +6 -0
  285. package/src/sdk/terraform.js +7 -0
  286. package/src/sdk/terraform.js.map +1 -0
  287. package/src/sdk/ts.d.ts +33 -0
  288. package/src/sdk/ts.js +35 -0
  289. package/src/sdk/ts.js.map +1 -0
  290. package/{sdk → src/sdk}/utils/ast.d.ts +1 -2
  291. package/src/sdk/utils/ast.js +6 -0
  292. package/src/sdk/utils/ast.js.map +1 -0
  293. package/{sdk → src/sdk}/utils/format.d.ts +1 -1
  294. package/src/sdk/utils/format.js +6 -0
  295. package/src/sdk/utils/format.js.map +1 -0
  296. package/{sdk → src/sdk}/utils/test.d.ts +1 -1
  297. package/src/sdk/utils/test.js +6 -0
  298. package/src/sdk/utils/test.js.map +1 -0
  299. package/src/smithy/project/__snapshots__/generator.spec.ts.snap +2 -8
  300. package/src/smithy/project/files/build.Dockerfile.template +1 -4
  301. package/src/smithy/project/generator.js +48 -43
  302. package/src/smithy/project/generator.js.map +1 -1
  303. package/src/smithy/project/schema.d.js +6 -0
  304. package/src/smithy/project/schema.d.js.map +1 -0
  305. package/src/smithy/project/schema.d.ts +1 -0
  306. package/src/smithy/project/schema.json +5 -0
  307. package/src/smithy/react-connection/generator.js +39 -47
  308. package/src/smithy/react-connection/generator.js.map +1 -1
  309. package/src/smithy/react-connection/schema.d.js +6 -0
  310. package/src/smithy/react-connection/schema.d.js.map +1 -0
  311. package/src/smithy/react-connection/schema.d.ts +1 -0
  312. package/src/smithy/react-connection/schema.json +5 -0
  313. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +395 -72
  314. package/src/smithy/ts/api/generator.js +125 -110
  315. package/src/smithy/ts/api/generator.js.map +1 -1
  316. package/src/smithy/ts/api/schema.d.js +6 -0
  317. package/src/smithy/ts/api/schema.d.js.map +1 -0
  318. package/src/smithy/ts/api/schema.d.ts +1 -0
  319. package/src/smithy/ts/api/schema.json +5 -0
  320. package/src/terraform/project/files/application/src/providers.tf.template +1 -1
  321. package/src/terraform/project/generator.js +151 -104
  322. package/src/terraform/project/generator.js.map +1 -1
  323. package/src/terraform/project/schema.d.js +9 -0
  324. package/src/terraform/project/schema.d.js.map +1 -0
  325. package/src/terraform/project/schema.d.ts +1 -0
  326. package/src/terraform/project/schema.json +5 -0
  327. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +336 -92
  328. package/src/trpc/backend/generator.d.ts +1 -1
  329. package/src/trpc/backend/generator.js +97 -86
  330. package/src/trpc/backend/generator.js.map +1 -1
  331. package/src/trpc/backend/schema.d.js +6 -0
  332. package/src/trpc/backend/schema.d.js.map +1 -0
  333. package/src/trpc/backend/schema.d.ts +1 -0
  334. package/src/trpc/backend/schema.json +5 -0
  335. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +1 -1
  336. package/src/trpc/react/generator.d.ts +1 -1
  337. package/src/trpc/react/generator.js +63 -58
  338. package/src/trpc/react/generator.js.map +1 -1
  339. package/src/trpc/react/schema.d.js +6 -0
  340. package/src/trpc/react/schema.d.js.map +1 -0
  341. package/src/trpc/react/schema.d.ts +1 -0
  342. package/src/trpc/react/schema.json +5 -0
  343. package/src/ts/agent/__snapshots__/generator.spec.ts.snap +11 -11
  344. package/src/ts/agent/a2a-connection/__snapshots__/generator.spec.ts.snap +1 -1
  345. package/src/ts/agent/a2a-connection/files/agent-connection/app/__targetAgentKebabCase__-client-strands.ts.template +1 -1
  346. package/src/ts/agent/a2a-connection/generator.js +62 -55
  347. package/src/ts/agent/a2a-connection/generator.js.map +1 -1
  348. package/src/ts/agent/a2a-connection/schema.d.js +8 -0
  349. package/src/ts/agent/a2a-connection/schema.d.js.map +1 -0
  350. package/src/ts/agent/a2a-connection/schema.d.ts +1 -0
  351. package/src/ts/agent/a2a-connection/schema.json +5 -0
  352. package/src/ts/agent/gateway-connection/__snapshots__/generator.spec.ts.snap +5 -5
  353. package/src/ts/agent/gateway-connection/files/agent-connection/app/__gatewayKebabCase__-client-strands.ts.template +3 -3
  354. package/src/ts/agent/gateway-connection/generator.js +61 -53
  355. package/src/ts/agent/gateway-connection/generator.js.map +1 -1
  356. package/src/ts/agent/gateway-connection/schema.d.js +6 -0
  357. package/src/ts/agent/gateway-connection/schema.d.js.map +1 -0
  358. package/src/ts/agent/gateway-connection/schema.d.ts +1 -0
  359. package/src/ts/agent/gateway-connection/schema.json +5 -0
  360. package/src/ts/agent/generator.js +169 -137
  361. package/src/ts/agent/generator.js.map +1 -1
  362. package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +1 -1
  363. package/src/ts/agent/mcp-connection/files/agent-connection/app/__mcpServerKebabCase__-client-strands.ts.template +1 -1
  364. package/src/ts/agent/mcp-connection/generator.js +52 -47
  365. package/src/ts/agent/mcp-connection/generator.js.map +1 -1
  366. package/src/ts/agent/mcp-connection/schema.d.js +8 -0
  367. package/src/ts/agent/mcp-connection/schema.d.js.map +1 -0
  368. package/src/ts/agent/mcp-connection/schema.d.ts +1 -0
  369. package/src/ts/agent/mcp-connection/schema.json +5 -0
  370. package/src/ts/agent/react-connection/generator.d.ts +1 -1
  371. package/src/ts/agent/react-connection/generator.js +86 -80
  372. package/src/ts/agent/react-connection/generator.js.map +1 -1
  373. package/src/ts/agent/react-connection/{serve-local.d.ts → local-dev.d.ts} +2 -2
  374. package/src/ts/agent/react-connection/local-dev.js +17 -0
  375. package/src/ts/agent/react-connection/local-dev.js.map +1 -0
  376. package/src/ts/agent/react-connection/schema.d.js +8 -0
  377. package/src/ts/agent/react-connection/schema.d.js.map +1 -0
  378. package/src/ts/agent/react-connection/schema.d.ts +1 -0
  379. package/src/ts/agent/react-connection/schema.json +5 -0
  380. package/src/ts/agent/schema.d.js +6 -0
  381. package/src/ts/agent/schema.d.js.map +1 -0
  382. package/src/ts/agent/schema.d.ts +1 -0
  383. package/src/ts/agent/schema.json +5 -0
  384. package/src/ts/api/generator.js +16 -16
  385. package/src/ts/api/generator.js.map +1 -1
  386. package/src/ts/api/schema.d.js +6 -0
  387. package/src/ts/api/schema.d.js.map +1 -0
  388. package/src/ts/api/schema.d.ts +1 -0
  389. package/src/ts/api/schema.json +5 -0
  390. package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +8 -8
  391. package/src/ts/astro-docs/generator.js +63 -51
  392. package/src/ts/astro-docs/generator.js.map +1 -1
  393. package/src/ts/astro-docs/schema.d.js +6 -0
  394. package/src/ts/astro-docs/schema.d.js.map +1 -0
  395. package/src/ts/astro-docs/schema.d.ts +2 -2
  396. package/src/ts/astro-docs/schema.json +3 -3
  397. package/src/ts/docs/generator.js +10 -10
  398. package/src/ts/docs/generator.js.map +1 -1
  399. package/src/ts/docs/schema.d.js +6 -0
  400. package/src/ts/docs/schema.d.js.map +1 -0
  401. package/src/ts/docs/schema.d.ts +1 -4
  402. package/src/ts/docs/schema.json +3 -3
  403. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +68 -30
  404. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +5 -5
  405. package/src/ts/dynamodb/agent-connection/generator.js +21 -23
  406. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
  407. package/src/ts/dynamodb/agent-connection/schema.d.js +8 -0
  408. package/src/ts/dynamodb/agent-connection/schema.d.js.map +1 -0
  409. package/src/ts/dynamodb/agent-connection/schema.d.ts +1 -0
  410. package/src/ts/dynamodb/agent-connection/schema.json +5 -0
  411. package/src/ts/dynamodb/files/config.json.template +1 -1
  412. package/src/ts/dynamodb/files/src/client.ts.template +7 -7
  413. package/src/ts/dynamodb/generator.js +68 -63
  414. package/src/ts/dynamodb/generator.js.map +1 -1
  415. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +5 -5
  416. package/src/ts/dynamodb/mcp-server-connection/generator.js +21 -23
  417. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
  418. package/src/ts/dynamodb/mcp-server-connection/schema.d.js +8 -0
  419. package/src/ts/dynamodb/mcp-server-connection/schema.d.js.map +1 -0
  420. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +1 -0
  421. package/src/ts/dynamodb/mcp-server-connection/schema.json +5 -0
  422. package/src/ts/dynamodb/schema.d.js +6 -0
  423. package/src/ts/dynamodb/schema.d.js.map +1 -0
  424. package/src/ts/dynamodb/schema.d.ts +1 -0
  425. package/src/ts/dynamodb/schema.json +5 -0
  426. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
  427. package/src/ts/dynamodb/smithy-connection/generator.js +20 -22
  428. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
  429. package/src/ts/dynamodb/smithy-connection/schema.d.js +8 -0
  430. package/src/ts/dynamodb/smithy-connection/schema.d.js.map +1 -0
  431. package/src/ts/dynamodb/smithy-connection/schema.d.ts +1 -0
  432. package/src/ts/dynamodb/smithy-connection/schema.json +5 -0
  433. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
  434. package/src/ts/dynamodb/trpc-connection/generator.js +20 -22
  435. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
  436. package/src/ts/dynamodb/trpc-connection/schema.d.js +8 -0
  437. package/src/ts/dynamodb/trpc-connection/schema.d.js.map +1 -0
  438. package/src/ts/dynamodb/trpc-connection/schema.d.ts +1 -0
  439. package/src/ts/dynamodb/trpc-connection/schema.json +5 -0
  440. package/src/ts/lambda-function/__snapshots__/generator.spec.ts.snap +4 -4
  441. package/src/ts/lambda-function/generator.js +59 -56
  442. package/src/ts/lambda-function/generator.js.map +1 -1
  443. package/src/ts/lambda-function/io.js +83 -52
  444. package/src/ts/lambda-function/io.js.map +1 -1
  445. package/src/ts/lambda-function/schema.d.js +6 -0
  446. package/src/ts/lambda-function/schema.d.js.map +1 -0
  447. package/src/ts/lambda-function/schema.d.ts +1 -0
  448. package/src/ts/lambda-function/schema.json +5 -0
  449. package/src/ts/lib/__snapshots__/generator.spec.ts.snap +23 -36
  450. package/src/ts/lib/biome.js +37 -37
  451. package/src/ts/lib/biome.js.map +1 -1
  452. package/src/ts/lib/generator.js +82 -80
  453. package/src/ts/lib/generator.js.map +1 -1
  454. package/src/ts/lib/schema.d.js +6 -0
  455. package/src/ts/lib/schema.d.js.map +1 -0
  456. package/src/ts/lib/schema.d.ts +1 -1
  457. package/src/ts/lib/schema.json +5 -0
  458. package/src/ts/lib/ts-project-utils.js +65 -70
  459. package/src/ts/lib/ts-project-utils.js.map +1 -1
  460. package/src/ts/lib/types.js +5 -2
  461. package/src/ts/lib/types.js.map +1 -1
  462. package/src/ts/lib/vitest.js +29 -26
  463. package/src/ts/lib/vitest.js.map +1 -1
  464. package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +5 -5
  465. package/src/ts/mcp-server/generator.js +161 -139
  466. package/src/ts/mcp-server/generator.js.map +1 -1
  467. package/src/ts/mcp-server/schema.d.js +6 -0
  468. package/src/ts/mcp-server/schema.d.js.map +1 -0
  469. package/src/ts/mcp-server/schema.d.ts +1 -0
  470. package/src/ts/mcp-server/schema.json +5 -0
  471. package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +27 -12
  472. package/src/ts/nx-generator/files/common/schema.d.ts.template +1 -0
  473. package/src/ts/nx-generator/files/common/schema.json.template +5 -0
  474. package/src/ts/nx-generator/files/local/generator.ts.template +3 -3
  475. package/src/ts/nx-generator/files/nx-plugin-for-aws/generator/generator.ts.template +6 -7
  476. package/src/ts/nx-generator/generator.js +88 -84
  477. package/src/ts/nx-generator/generator.js.map +1 -1
  478. package/src/ts/nx-generator/schema.d.js +6 -0
  479. package/src/ts/nx-generator/schema.d.js.map +1 -0
  480. package/src/ts/nx-generator/schema.d.ts +1 -0
  481. package/src/ts/nx-generator/schema.json +5 -0
  482. package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +30 -18
  483. package/src/ts/nx-plugin/files/mcp-server/server.ts.template +5 -5
  484. package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +2 -2
  485. package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +1 -1
  486. package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +2 -2
  487. package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +2 -2
  488. package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +3 -3
  489. package/src/ts/nx-plugin/generator.js +57 -49
  490. package/src/ts/nx-plugin/generator.js.map +1 -1
  491. package/src/ts/nx-plugin/schema.d.js +9 -0
  492. package/src/ts/nx-plugin/schema.d.js.map +1 -0
  493. package/src/ts/nx-plugin/schema.json +5 -0
  494. package/src/ts/nx-plugin/utils.js +32 -44
  495. package/src/ts/nx-plugin/utils.js.map +1 -1
  496. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +30 -30
  497. package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +6 -6
  498. package/src/ts/rdb/agent-connection/generator.js +38 -39
  499. package/src/ts/rdb/agent-connection/generator.js.map +1 -1
  500. package/src/ts/rdb/agent-connection/schema.d.js +8 -0
  501. package/src/ts/rdb/agent-connection/schema.d.js.map +1 -0
  502. package/src/ts/rdb/agent-connection/schema.d.ts +1 -0
  503. package/src/ts/rdb/agent-connection/schema.json +5 -0
  504. package/src/ts/rdb/files/config.json.template +1 -1
  505. package/src/ts/rdb/files/prisma.config.ts.template +2 -2
  506. package/src/ts/rdb/files/src/prisma.ts.template +7 -7
  507. package/src/ts/rdb/files/src/utils.ts.template +1 -0
  508. package/src/ts/rdb/generator.js +134 -117
  509. package/src/ts/rdb/generator.js.map +1 -1
  510. package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +6 -6
  511. package/src/ts/rdb/mcp-server-connection/generator.js +36 -37
  512. package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
  513. package/src/ts/rdb/mcp-server-connection/schema.d.js +8 -0
  514. package/src/ts/rdb/mcp-server-connection/schema.d.js.map +1 -0
  515. package/src/ts/rdb/mcp-server-connection/schema.d.ts +1 -0
  516. package/src/ts/rdb/mcp-server-connection/schema.json +5 -0
  517. package/src/ts/rdb/schema.d.js +6 -0
  518. package/src/ts/rdb/schema.d.js.map +1 -0
  519. package/src/ts/rdb/schema.d.ts +1 -0
  520. package/src/ts/rdb/schema.json +5 -0
  521. package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +3 -3
  522. package/src/ts/rdb/smithy-connection/generator.js +46 -43
  523. package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
  524. package/src/ts/rdb/smithy-connection/schema.d.js +8 -0
  525. package/src/ts/rdb/smithy-connection/schema.d.js.map +1 -0
  526. package/src/ts/rdb/smithy-connection/schema.d.ts +1 -0
  527. package/src/ts/rdb/smithy-connection/schema.json +5 -0
  528. package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +3 -3
  529. package/src/ts/rdb/trpc-connection/generator.js +36 -31
  530. package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
  531. package/src/ts/rdb/trpc-connection/schema.d.js +8 -0
  532. package/src/ts/rdb/trpc-connection/schema.d.js.map +1 -0
  533. package/src/ts/rdb/trpc-connection/schema.d.ts +1 -0
  534. package/src/ts/rdb/trpc-connection/schema.json +5 -0
  535. package/src/ts/rdb/utils.js +9 -11
  536. package/src/ts/rdb/utils.js.map +1 -1
  537. package/src/ts/react-website/agui/generator.js +69 -61
  538. package/src/ts/react-website/agui/generator.js.map +1 -1
  539. package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +178 -284
  540. package/src/ts/react-website/app/generator.d.ts +1 -1
  541. package/src/ts/react-website/app/generator.js +212 -191
  542. package/src/ts/react-website/app/generator.js.map +1 -1
  543. package/src/ts/react-website/app/schema.d.js +6 -0
  544. package/src/ts/react-website/app/schema.d.js.map +1 -0
  545. package/src/ts/react-website/app/schema.d.ts +1 -1
  546. package/src/ts/react-website/app/schema.json +11 -6
  547. package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +118 -4
  548. package/src/ts/react-website/cognito-auth/__snapshots__/generator.terraform.spec.ts.snap +10 -3
  549. package/src/ts/react-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +2 -2
  550. package/src/ts/react-website/cognito-auth/generator.d.ts +1 -1
  551. package/src/ts/react-website/cognito-auth/generator.js +64 -60
  552. package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
  553. package/src/ts/react-website/cognito-auth/schema.d.js +6 -0
  554. package/src/ts/react-website/cognito-auth/schema.d.js.map +1 -0
  555. package/src/ts/react-website/cognito-auth/schema.d.ts +1 -0
  556. package/src/ts/react-website/cognito-auth/schema.json +5 -0
  557. package/src/ts/react-website/cognito-auth/utils.js +34 -32
  558. package/src/ts/react-website/cognito-auth/utils.js.map +1 -1
  559. package/src/ts/react-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -2
  560. package/src/ts/react-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +2 -2
  561. package/src/ts/react-website/runtime-config/generator.js +29 -31
  562. package/src/ts/react-website/runtime-config/generator.js.map +1 -1
  563. package/src/ts/react-website/runtime-config/schema.d.js +6 -0
  564. package/src/ts/react-website/runtime-config/schema.d.js.map +1 -0
  565. package/src/ts/react-website/runtime-config/schema.d.ts +1 -0
  566. package/src/ts/react-website/runtime-config/schema.json +5 -0
  567. package/src/ts/sync/generator.js +60 -59
  568. package/src/ts/sync/generator.js.map +1 -1
  569. package/src/ts/website/app/generator.js +10 -10
  570. package/src/ts/website/app/generator.js.map +1 -1
  571. package/src/ts/website/app/schema.d.js +6 -0
  572. package/src/ts/website/app/schema.d.js.map +1 -0
  573. package/src/ts/website/app/schema.d.ts +1 -1
  574. package/src/ts/website/app/schema.json +11 -6
  575. package/src/ts/website/auth/generator.d.ts +1 -1
  576. package/src/ts/website/auth/generator.js +11 -10
  577. package/src/ts/website/auth/generator.js.map +1 -1
  578. package/src/ts/website/auth/schema.d.js +6 -0
  579. package/src/ts/website/auth/schema.d.js.map +1 -0
  580. package/src/ts/website/auth/schema.d.ts +1 -0
  581. package/src/ts/website/auth/schema.json +5 -0
  582. package/src/utils/agent-chat/agent-chat.d.ts +1 -1
  583. package/src/utils/agent-chat/agent-chat.js +11 -12
  584. package/src/utils/agent-chat/agent-chat.js.map +1 -1
  585. package/src/utils/agent-chat/files/a2a/chat.ts.template +1 -1
  586. package/src/utils/agent-chat/files/ag-ui/chat.ts.template +1 -1
  587. package/src/utils/agent-chat/files/http-py/chat.ts.template +1 -1
  588. package/src/utils/agent-chat/files/http-ts/chat.ts.template +1 -1
  589. package/src/utils/agent-connection/agent-connection.js +129 -146
  590. package/src/utils/agent-connection/agent-connection.js.map +1 -1
  591. package/src/utils/agent-connection/files/core-gateway/agentcore-gateway-mcp-transport.ts.template +1 -1
  592. package/src/utils/agent-connection/files/core-strands/gateway/agentcore-gateway-mcp-client-strands.ts.template +1 -1
  593. package/src/utils/agent-connection/files/py-core-gateway/agentcore_gateway_mcp_transport.py.template +1 -1
  594. package/src/utils/agent-connection/files/py-core-langchain/gateway/agentcore_gateway_mcp_client_langchain.py.template +1 -1
  595. package/src/utils/agent-connection/files/py-core-strands/gateway/agentcore_gateway_mcp_client_strands.py.template +1 -1
  596. package/src/utils/agent-core-constructs/agent-core-constructs.js +53 -50
  597. package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
  598. package/src/utils/agent-core-constructs/files/terraform/app/agentcore-gateway/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
  599. package/src/utils/agent-core-constructs/files/terraform/core/agent-core/runtime.tf.template +4 -4
  600. package/src/utils/agent-core-constructs/files/terraform/core/agentcore-gateway/gateway.tf.template +2 -2
  601. package/src/utils/api-constructs/api-constructs.js +30 -31
  602. package/src/utils/api-constructs/api-constructs.js.map +1 -1
  603. package/src/utils/api-constructs/files/cdk/core/api/http/http-api.ts.template +14 -6
  604. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account/index.js.template +58 -0
  605. package/src/utils/api-constructs/files/cdk/core/api/rest/api-gateway-account.ts.template +82 -0
  606. package/src/utils/api-constructs/files/cdk/core/api/rest/rest-api.ts.template +28 -14
  607. package/src/utils/api-constructs/files/terraform/app/apis/http/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +1 -8
  608. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +91 -4
  609. package/src/utils/api-constructs/files/terraform/core/api/http/http-api/http-api.tf.template +1 -1
  610. package/src/utils/api-constructs/files/terraform/core/api/rest/api-gateway-account/api-gateway-account.tf.template +83 -0
  611. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +5 -11
  612. package/src/utils/api-constructs/open-api-metadata.js +22 -22
  613. package/src/utils/api-constructs/open-api-metadata.js.map +1 -1
  614. package/src/utils/ast/website.js +17 -19
  615. package/src/utils/ast/website.js.map +1 -1
  616. package/src/utils/ast.js +72 -97
  617. package/src/utils/ast.js.map +1 -1
  618. package/src/utils/bundle/bundle.js +50 -47
  619. package/src/utils/bundle/bundle.js.map +1 -1
  620. package/src/utils/commands.js +47 -26
  621. package/src/utils/commands.js.map +1 -1
  622. package/src/utils/config/index.d.ts +2 -2
  623. package/src/utils/config/index.js +5 -4
  624. package/src/utils/config/index.js.map +1 -1
  625. package/src/utils/config/utils.js +48 -58
  626. package/src/utils/config/utils.js.map +1 -1
  627. package/src/utils/connection/open-api/react.d.ts +5 -5
  628. package/src/utils/connection/open-api/react.js +81 -77
  629. package/src/utils/connection/open-api/react.js.map +1 -1
  630. package/src/utils/containers.js +22 -23
  631. package/src/utils/containers.js.map +1 -1
  632. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +32 -33
  633. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
  634. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +12 -2
  635. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +1 -1
  636. package/src/utils/files/common/scripts/src/dynamodb/create-local-table.ts.template +2 -2
  637. package/src/utils/files/common/scripts/src/dynamodb/pull-image.ts.template +1 -1
  638. package/src/utils/files/common/scripts/src/dynamodb/start-container.ts.template +17 -2
  639. package/src/utils/files/common/scripts/src/infra/stage-credentials/cdk-command.ts.template +11 -3
  640. package/src/utils/files/common/scripts/src/rdb/mysql/wait-for-mysql-db.ts.template +32 -0
  641. package/src/utils/files/common/scripts/src/rdb/postgres/wait-for-postgres-db.ts.template +32 -0
  642. package/src/utils/files/common/scripts/src/rdb/{pull-image.ts.template → shared/pull-image.ts.template} +1 -1
  643. package/src/utils/files/common/scripts/src/rdb/{start-container.ts.template → shared/start-container.ts.template} +16 -1
  644. package/src/utils/files/terraform/src/core/asset-bucket/asset-bucket.tf.template +2 -2
  645. package/src/utils/files/terraform/src/core/runtime-config/appconfig/appconfig.tf.template +1 -1
  646. package/src/utils/files/terraform/src/core/runtime-config/appconfig-deployment/appconfig-deployment.tf.template +3 -3
  647. package/src/utils/files/terraform/src/core/runtime-config/entry/entry.tf.template +1 -1
  648. package/src/utils/files/terraform/src/core/runtime-config/read/read.tf.template +2 -2
  649. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +1 -1
  650. package/src/utils/format.js +153 -99
  651. package/src/utils/format.js.map +1 -1
  652. package/src/utils/fs.js +14 -13
  653. package/src/utils/fs.js.map +1 -1
  654. package/src/utils/function-constructs/files/terraform/app/lambda-functions/__nameKebabCase__/__nameKebabCase__.tf.template +2 -2
  655. package/src/utils/function-constructs/function-constructs.js +21 -26
  656. package/src/utils/function-constructs/function-constructs.js.map +1 -1
  657. package/src/utils/generators.js +18 -20
  658. package/src/utils/generators.js.map +1 -1
  659. package/src/utils/git.js +19 -34
  660. package/src/utils/git.js.map +1 -1
  661. package/src/utils/iac-providers.js +5 -5
  662. package/src/utils/iac-providers.js.map +1 -1
  663. package/src/utils/iac.js +12 -14
  664. package/src/utils/iac.js.map +1 -1
  665. package/src/utils/identity-constructs/files/cdk/core/user-identity.ts.template +112 -2
  666. package/src/utils/identity-constructs/files/terraform/core/user-identity/add-callback-url/add-callback-url.tf.template +2 -2
  667. package/src/utils/identity-constructs/files/terraform/core/user-identity/identity/identity.tf.template +104 -2
  668. package/src/utils/identity-constructs/files/terraform/core/user-identity/main.tf.template +7 -0
  669. package/src/utils/identity-constructs/identity-constructs.js +24 -28
  670. package/src/utils/identity-constructs/identity-constructs.js.map +1 -1
  671. package/src/utils/install.d.ts +32 -0
  672. package/src/utils/install.js +56 -0
  673. package/src/utils/install.js.map +1 -0
  674. package/src/utils/js.js +27 -20
  675. package/src/utils/js.js.map +1 -1
  676. package/src/utils/mcp.js +34 -41
  677. package/src/utils/mcp.js.map +1 -1
  678. package/src/utils/metrics.js +30 -45
  679. package/src/utils/metrics.js.map +1 -1
  680. package/src/utils/mock-project-graph.js +8 -12
  681. package/src/utils/mock-project-graph.js.map +1 -1
  682. package/src/utils/names.js +25 -51
  683. package/src/utils/names.js.map +1 -1
  684. package/src/utils/npm-scope.js +9 -17
  685. package/src/utils/npm-scope.js.map +1 -1
  686. package/src/utils/nx.d.ts +18 -2
  687. package/src/utils/nx.js +111 -74
  688. package/src/utils/nx.js.map +1 -1
  689. package/src/utils/nxlv-python.js +27 -15
  690. package/src/utils/nxlv-python.js.map +1 -1
  691. package/src/utils/object.js +5 -11
  692. package/src/utils/object.js.map +1 -1
  693. package/src/utils/paths.js +11 -15
  694. package/src/utils/paths.js.map +1 -1
  695. package/src/utils/pkg-manager.js +4 -9
  696. package/src/utils/pkg-manager.js.map +1 -1
  697. package/src/utils/pnpm-workspace.js +22 -22
  698. package/src/utils/pnpm-workspace.js.map +1 -1
  699. package/src/utils/port.js +26 -36
  700. package/src/utils/port.js.map +1 -1
  701. package/src/utils/py.js +43 -52
  702. package/src/utils/py.js.map +1 -1
  703. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
  704. package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +3 -3
  705. package/src/utils/rdb-constructs/rdb-constructs.js +31 -33
  706. package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
  707. package/src/utils/shared-constructs-constants.js +16 -16
  708. package/src/utils/shared-constructs-constants.js.map +1 -1
  709. package/src/utils/shared-constructs.js +57 -54
  710. package/src/utils/shared-constructs.js.map +1 -1
  711. package/src/utils/shared-dynamodb-scripts.js +16 -14
  712. package/src/utils/shared-dynamodb-scripts.js.map +1 -1
  713. package/src/utils/shared-infra-config.js +30 -31
  714. package/src/utils/shared-infra-config.js.map +1 -1
  715. package/src/utils/shared-infra-scripts.js +30 -25
  716. package/src/utils/shared-infra-scripts.js.map +1 -1
  717. package/src/utils/shared-rdb-scripts.d.ts +8 -3
  718. package/src/utils/shared-rdb-scripts.js +21 -13
  719. package/src/utils/shared-rdb-scripts.js.map +1 -1
  720. package/src/utils/shared-scripts.js +12 -17
  721. package/src/utils/shared-scripts.js.map +1 -1
  722. package/src/utils/shared-shadcn.js +64 -60
  723. package/src/utils/shared-shadcn.js.map +1 -1
  724. package/src/utils/test.d.ts +8 -0
  725. package/src/utils/test.js +33 -25
  726. package/src/utils/test.js.map +1 -1
  727. package/src/utils/toml.js +7 -15
  728. package/src/utils/toml.js.map +1 -1
  729. package/src/utils/versions.d.ts +93 -66
  730. package/src/utils/versions.js +102 -85
  731. package/src/utils/versions.js.map +1 -1
  732. package/src/utils/website-constructs/files/terraform/app/static-websites/__websiteNameKebabCase__/__websiteNameKebabCase__.tf.template +1 -1
  733. package/src/utils/website-constructs/files/terraform/core/static-website/static-website.tf.template +4 -4
  734. package/src/utils/website-constructs/website-constructs.js +31 -30
  735. package/src/utils/website-constructs/website-constructs.js.map +1 -1
  736. package/bin/aws-nx-mcp.js +0 -17
  737. package/bin/aws-nx-mcp.js.map +0 -1
  738. package/sdk/agentcore-gateway.d.ts +0 -6
  739. package/sdk/agentcore-gateway.js +0 -11
  740. package/sdk/agentcore-gateway.js.map +0 -1
  741. package/sdk/connection.d.ts +0 -6
  742. package/sdk/connection.js +0 -10
  743. package/sdk/connection.js.map +0 -1
  744. package/sdk/license.js +0 -14
  745. package/sdk/license.js.map +0 -1
  746. package/sdk/open-api.d.ts +0 -10
  747. package/sdk/open-api.js +0 -15
  748. package/sdk/open-api.js.map +0 -1
  749. package/sdk/py.d.ts +0 -14
  750. package/sdk/py.js +0 -18
  751. package/sdk/py.js.map +0 -1
  752. package/sdk/terraform.d.ts +0 -6
  753. package/sdk/terraform.js +0 -11
  754. package/sdk/terraform.js.map +0 -1
  755. package/sdk/ts.d.ts +0 -33
  756. package/sdk/ts.js +0 -53
  757. package/sdk/ts.js.map +0 -1
  758. package/sdk/utils/ast.js +0 -12
  759. package/sdk/utils/ast.js.map +0 -1
  760. package/sdk/utils/format.js +0 -10
  761. package/sdk/utils/format.js.map +0 -1
  762. package/sdk/utils/test.js +0 -10
  763. package/sdk/utils/test.js.map +0 -1
  764. package/src/connection/agent-serve-local.js +0 -48
  765. package/src/connection/agent-serve-local.js.map +0 -1
  766. package/src/connection/serve-local.js +0 -41
  767. package/src/connection/serve-local.js.map +0 -1
  768. package/src/py/agent/react-connection/serve-local.js +0 -38
  769. package/src/py/agent/react-connection/serve-local.js.map +0 -1
  770. package/src/ts/agent/react-connection/serve-local.js +0 -19
  771. package/src/ts/agent/react-connection/serve-local.js.map +0 -1
  772. package/src/utils/files/common/scripts/src/rdb/wait-for-db.ts.template +0 -59
  773. /package/src/agentcore-gateway/files/project/{serve-local.ts.template → local-dev.ts.template} +0 -0
  774. /package/{bin → src/bin}/aws-nx-mcp.d.ts +0 -0
@@ -1202,7 +1202,7 @@ import {
1202
1202
  HttpApiIntegration,
1203
1203
  OperationDetails,
1204
1204
  } from './utils.js';
1205
- import { CfnOutput } from 'aws-cdk-lib';
1205
+ import { CfnOutput, Stack } from 'aws-cdk-lib';
1206
1206
  import {
1207
1207
  HttpApi as _HttpApi,
1208
1208
  HttpApiProps as _HttpApiProps,
@@ -1212,6 +1212,8 @@ import {
1212
1212
  ThrottleSettings,
1213
1213
  } from 'aws-cdk-lib/aws-apigatewayv2';
1214
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';
1215
1217
  import { suppressRules } from '../checkov.js';
1216
1218
 
1217
1219
  /**
@@ -1288,12 +1290,18 @@ export class HttpApi<
1288
1290
  ...props,
1289
1291
  });
1290
1292
 
1291
- const accessLogGroup = new LogGroup(this, 'AccessLogs');
1292
- suppressRules(
1293
- accessLogGroup,
1294
- ['CKV_AWS_158'],
1295
- '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\`),
1296
1300
  );
1301
+
1302
+ const accessLogGroup = new LogGroup(this, 'AccessLogs', {
1303
+ encryptionKey: logsKey,
1304
+ });
1297
1305
  suppressRules(
1298
1306
  accessLogGroup,
1299
1307
  ['CKV_AWS_66', 'CKV_AWS_338'],
@@ -2079,7 +2087,9 @@ export class IntegrationBuilder<
2079
2087
  exports[`trpc backend generator > should set up shared constructs for rest > rest-api.ts 1`] = `
2080
2088
  "import { Construct, IConstruct } from 'constructs';
2081
2089
  import {
2090
+ AccessLogFormat,
2082
2091
  Cors,
2092
+ LogGroupLogDestination,
2083
2093
  Resource,
2084
2094
  RestApi as _RestApi,
2085
2095
  RestApiProps as _RestApiProps,
@@ -2087,14 +2097,17 @@ import {
2087
2097
  Stage,
2088
2098
  ThrottleSettings,
2089
2099
  } from 'aws-cdk-lib/aws-apigateway';
2090
- import { IAspect, RemovalPolicy } from 'aws-cdk-lib';
2100
+ import { IAspect, Stack } from 'aws-cdk-lib';
2091
2101
  import {
2092
2102
  CfnLoggingConfiguration,
2093
2103
  CfnWebACL,
2094
2104
  CfnWebACLAssociation,
2095
2105
  } from 'aws-cdk-lib/aws-wafv2';
2096
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';
2097
2109
  import { RuntimeConfig } from '../runtime-config.js';
2110
+ import { ApiGatewayAccount } from './api-gateway-account.js';
2098
2111
  import {
2099
2112
  ApiIntegrations,
2100
2113
  OperationDetails,
@@ -2179,10 +2192,28 @@ export class RestApi<
2179
2192
  super(scope, id);
2180
2193
  this.integrations = integrations;
2181
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
+
2182
2211
  // Create the API Gateway REST API
2183
2212
  this.api = new _RestApi(this, 'Api', {
2184
2213
  ...props,
2185
2214
  deployOptions: {
2215
+ accessLogDestination: new LogGroupLogDestination(accessLogs),
2216
+ accessLogFormat: AccessLogFormat.jsonWithStandardFields(),
2186
2217
  ...props.deployOptions,
2187
2218
  methodOptions: {
2188
2219
  ...props.deployOptions?.methodOptions,
@@ -2195,6 +2226,8 @@ export class RestApi<
2195
2226
  },
2196
2227
  },
2197
2228
  });
2229
+ // Ensure the account-level role is configured before the stage is created
2230
+ this.api.deploymentStage.node.addDependency(account.resource);
2198
2231
 
2199
2232
  if (enableWaf) {
2200
2233
  this.webAcl = new CfnWebACL(this, 'WebAcl', {
@@ -2261,14 +2294,9 @@ export class RestApi<
2261
2294
  // \`aws-waf-logs-\` to satisfy the WAFv2 logging destination requirement.
2262
2295
  const wafLogGroup = new LogGroup(this, 'WebAclLogs', {
2263
2296
  logGroupName: \`aws-waf-logs-\${apiName}-\${this.node.addr.slice(-8)}\`,
2264
- retention: RetentionDays.ONE_MONTH,
2265
- removalPolicy: RemovalPolicy.DESTROY,
2297
+ retention: RetentionDays.ONE_YEAR,
2298
+ encryptionKey: logsKey,
2266
2299
  });
2267
- suppressRules(
2268
- wafLogGroup,
2269
- ['CKV_AWS_158'],
2270
- 'Using default CloudWatch log encryption for WAF logs',
2271
- );
2272
2300
 
2273
2301
  new CfnLoggingConfiguration(this, 'WebAclLoggingConfig', {
2274
2302
  resourceArn: this.webAcl.attrArn,
@@ -2282,12 +2310,6 @@ export class RestApi<
2282
2310
  'Caching not required for this use case',
2283
2311
  (c) => c instanceof Stage,
2284
2312
  );
2285
- suppressRules(
2286
- this.api,
2287
- ['CKV_AWS_76'],
2288
- 'API Gateway access logging disabled due to account-level CloudWatch Logs role ARN requirement',
2289
- (c) => c instanceof Stage,
2290
- );
2291
2313
 
2292
2314
  // Resolve the integration for a given operation.
2293
2315
  // If the operation has a dedicated integration, use it; otherwise fall back to $router.
@@ -3120,7 +3142,7 @@ terraform {
3120
3142
  required_providers {
3121
3143
  aws = {
3122
3144
  source = "hashicorp/aws"
3123
- version = "~> 6.0"
3145
+ version = "6.52.0"
3124
3146
  }
3125
3147
  }
3126
3148
  }
@@ -3367,7 +3389,7 @@ output "api_log_group_arn" {
3367
3389
  required_providers {
3368
3390
  aws = {
3369
3391
  source = "hashicorp/aws"
3370
- version = "~> 6.0"
3392
+ version = "6.52.0"
3371
3393
  }
3372
3394
  }
3373
3395
  }
@@ -3435,12 +3457,6 @@ variable "cors_expose_headers" {
3435
3457
  default = []
3436
3458
  }
3437
3459
 
3438
- variable "cors_max_age" {
3439
- description = "Maximum age for CORS preflight requests in seconds"
3440
- type = number
3441
- default = 0
3442
- }
3443
-
3444
3460
  # Tags
3445
3461
  variable "tags" {
3446
3462
  description = "Tags to apply to all resources"
@@ -3491,7 +3507,6 @@ module "http_api" {
3491
3507
  cors_allow_methods = var.cors_allow_methods
3492
3508
  cors_allow_origins = var.cors_allow_origins
3493
3509
  cors_expose_headers = var.cors_expose_headers
3494
- cors_max_age = var.cors_max_age
3495
3510
 
3496
3511
  # Tags
3497
3512
  tags = var.tags
@@ -3773,7 +3788,7 @@ terraform {
3773
3788
  required_providers {
3774
3789
  aws = {
3775
3790
  source = "hashicorp/aws"
3776
- version = "~> 6.0"
3791
+ version = "6.52.0"
3777
3792
  }
3778
3793
  }
3779
3794
  }
@@ -4020,7 +4035,7 @@ output "api_log_group_arn" {
4020
4035
  required_providers {
4021
4036
  aws = {
4022
4037
  source = "hashicorp/aws"
4023
- version = "~> 6.0"
4038
+ version = "6.52.0"
4024
4039
  }
4025
4040
  }
4026
4041
  }
@@ -4078,12 +4093,6 @@ variable "cors_expose_headers" {
4078
4093
  default = []
4079
4094
  }
4080
4095
 
4081
- variable "cors_max_age" {
4082
- description = "Maximum age for CORS preflight requests in seconds"
4083
- type = number
4084
- default = 0
4085
- }
4086
-
4087
4096
  # Tags
4088
4097
  variable "tags" {
4089
4098
  description = "Tags to apply to all resources"
@@ -4134,7 +4143,6 @@ module "http_api" {
4134
4143
  cors_allow_methods = var.cors_allow_methods
4135
4144
  cors_allow_origins = var.cors_allow_origins
4136
4145
  cors_expose_headers = var.cors_expose_headers
4137
- cors_max_age = var.cors_max_age
4138
4146
 
4139
4147
  # Tags
4140
4148
  tags = var.tags
@@ -4498,7 +4506,7 @@ terraform {
4498
4506
  required_providers {
4499
4507
  aws = {
4500
4508
  source = "hashicorp/aws"
4501
- version = "~> 6.0"
4509
+ version = "6.52.0"
4502
4510
  }
4503
4511
  }
4504
4512
  }
@@ -4745,7 +4753,7 @@ output "api_log_group_arn" {
4745
4753
  required_providers {
4746
4754
  aws = {
4747
4755
  source = "hashicorp/aws"
4748
- version = "~> 6.0"
4756
+ version = "6.52.0"
4749
4757
  }
4750
4758
  }
4751
4759
  }
@@ -4803,12 +4811,6 @@ variable "cors_expose_headers" {
4803
4811
  default = []
4804
4812
  }
4805
4813
 
4806
- variable "cors_max_age" {
4807
- description = "Maximum age for CORS preflight requests in seconds"
4808
- type = number
4809
- default = 0
4810
- }
4811
-
4812
4814
  # Tags
4813
4815
  variable "tags" {
4814
4816
  description = "Tags to apply to all resources"
@@ -4859,7 +4861,6 @@ module "http_api" {
4859
4861
  cors_allow_methods = var.cors_allow_methods
4860
4862
  cors_allow_origins = var.cors_allow_origins
4861
4863
  cors_expose_headers = var.cors_expose_headers
4862
- cors_max_age = var.cors_max_age
4863
4864
 
4864
4865
  # Tags
4865
4866
  tags = var.tags
@@ -5128,11 +5129,11 @@ terraform {
5128
5129
  required_providers {
5129
5130
  aws = {
5130
5131
  source = "hashicorp/aws"
5131
- version = "~> 6.33"
5132
+ version = "6.52.0"
5132
5133
  }
5133
5134
  random = {
5134
5135
  source = "hashicorp/random"
5135
- version = "~> 3.1"
5136
+ version = "3.9.0"
5136
5137
  }
5137
5138
  }
5138
5139
  }
@@ -5202,8 +5203,6 @@ data "aws_caller_identity" "current" {}
5202
5203
 
5203
5204
  # Resources
5204
5205
 
5205
- # Note: CloudWatch logging removed due to account-level CloudWatch Logs role ARN requirement
5206
-
5207
5206
  # REST API Gateway
5208
5207
  resource "aws_api_gateway_rest_api" "rest_api" {
5209
5208
  name = var.api_name
@@ -5220,10 +5219,8 @@ resource "aws_api_gateway_rest_api" "rest_api" {
5220
5219
  tags = var.tags
5221
5220
  }
5222
5221
 
5223
- # Note: Deployment and stage are created in the consuming module (e.g., foo-api.tf)
5224
- # after all methods and integrations are defined
5225
-
5226
- # 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
5227
5224
 
5228
5225
  # Gateway Response for CORS (4XX errors)
5229
5226
  resource "aws_api_gateway_gateway_response" "cors_4xx" {
@@ -5381,16 +5378,14 @@ output "waf_web_acl_arn" {
5381
5378
  value = var.enable_waf ? aws_wafv2_web_acl.api_waf[0].arn : null
5382
5379
  }
5383
5380
 
5384
- # Note: Stage and deployment outputs are provided by the consuming module
5385
-
5386
- # 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",
5387
5382
  "test-api.tf": "terraform {
5388
5383
  required_version = ">= 1.0"
5389
5384
 
5390
5385
  required_providers {
5391
5386
  aws = {
5392
5387
  source = "hashicorp/aws"
5393
- version = "~> 6.33"
5388
+ version = "6.52.0"
5394
5389
  }
5395
5390
  }
5396
5391
  }
@@ -5489,6 +5484,11 @@ resource "aws_s3_object" "lambda_zip" {
5489
5484
  }
5490
5485
 
5491
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
+
5492
5492
  module "rest_api" {
5493
5493
  source = "../../../core/api/rest-api"
5494
5494
 
@@ -5733,11 +5733,63 @@ resource "aws_api_gateway_deployment" "api_deployment" {
5733
5733
  ]
5734
5734
  }
5735
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
+
5736
5789
  # API Gateway stage
5737
5790
  resource "aws_api_gateway_stage" "api_stage" {
5738
5791
  #checkov:skip=CKV_AWS_120:API Gateway caching not required for this use case
5739
- #checkov:skip=CKV_AWS_76:API Gateway access logging disabled due to account-level CloudWatch Logs role ARN requirement
5740
- #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
5741
5793
  #checkov:skip=CKV2_AWS_51:Client certificate authentication not required for this use case
5742
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
5743
5795
  deployment_id = aws_api_gateway_deployment.api_deployment.id
@@ -5745,9 +5797,39 @@ resource "aws_api_gateway_stage" "api_stage" {
5745
5797
  stage_name = "prod"
5746
5798
  xray_tracing_enabled = true
5747
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
+
5748
5816
  tags = var.tags
5749
5817
 
5750
- 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
+ }
5751
5833
  }
5752
5834
 
5753
5835
  # API Gateway Resource Policy
@@ -5927,11 +6009,11 @@ terraform {
5927
6009
  required_providers {
5928
6010
  aws = {
5929
6011
  source = "hashicorp/aws"
5930
- version = "~> 6.33"
6012
+ version = "6.52.0"
5931
6013
  }
5932
6014
  random = {
5933
6015
  source = "hashicorp/random"
5934
- version = "~> 3.1"
6016
+ version = "3.9.0"
5935
6017
  }
5936
6018
  }
5937
6019
  }
@@ -6001,8 +6083,6 @@ data "aws_caller_identity" "current" {}
6001
6083
 
6002
6084
  # Resources
6003
6085
 
6004
- # Note: CloudWatch logging removed due to account-level CloudWatch Logs role ARN requirement
6005
-
6006
6086
  # REST API Gateway
6007
6087
  resource "aws_api_gateway_rest_api" "rest_api" {
6008
6088
  name = var.api_name
@@ -6019,10 +6099,8 @@ resource "aws_api_gateway_rest_api" "rest_api" {
6019
6099
  tags = var.tags
6020
6100
  }
6021
6101
 
6022
- # Note: Deployment and stage are created in the consuming module (e.g., foo-api.tf)
6023
- # after all methods and integrations are defined
6024
-
6025
- # 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
6026
6104
 
6027
6105
  # Gateway Response for CORS (4XX errors)
6028
6106
  resource "aws_api_gateway_gateway_response" "cors_4xx" {
@@ -6180,16 +6258,14 @@ output "waf_web_acl_arn" {
6180
6258
  value = var.enable_waf ? aws_wafv2_web_acl.api_waf[0].arn : null
6181
6259
  }
6182
6260
 
6183
- # Note: Stage and deployment outputs are provided by the consuming module
6184
-
6185
- # 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",
6186
6262
  "test-api.tf": "terraform {
6187
6263
  required_version = ">= 1.0"
6188
6264
 
6189
6265
  required_providers {
6190
6266
  aws = {
6191
6267
  source = "hashicorp/aws"
6192
- version = "~> 6.33"
6268
+ version = "6.52.0"
6193
6269
  }
6194
6270
  }
6195
6271
  }
@@ -6278,6 +6354,11 @@ resource "aws_s3_object" "lambda_zip" {
6278
6354
  }
6279
6355
 
6280
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
+
6281
6362
  module "rest_api" {
6282
6363
  source = "../../../core/api/rest-api"
6283
6364
 
@@ -6510,11 +6591,63 @@ resource "aws_api_gateway_deployment" "api_deployment" {
6510
6591
  ]
6511
6592
  }
6512
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
+
6513
6647
  # API Gateway stage
6514
6648
  resource "aws_api_gateway_stage" "api_stage" {
6515
6649
  #checkov:skip=CKV_AWS_120:API Gateway caching not required for this use case
6516
- #checkov:skip=CKV_AWS_76:API Gateway access logging disabled due to account-level CloudWatch Logs role ARN requirement
6517
- #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
6518
6651
  #checkov:skip=CKV2_AWS_51:Client certificate authentication not required for this use case
6519
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
6520
6653
  deployment_id = aws_api_gateway_deployment.api_deployment.id
@@ -6522,9 +6655,39 @@ resource "aws_api_gateway_stage" "api_stage" {
6522
6655
  stage_name = "prod"
6523
6656
  xray_tracing_enabled = true
6524
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
+
6525
6674
  tags = var.tags
6526
6675
 
6527
- 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
+ }
6528
6691
  }
6529
6692
 
6530
6693
  # API Gateway Resource Policy
@@ -6715,11 +6878,11 @@ terraform {
6715
6878
  required_providers {
6716
6879
  aws = {
6717
6880
  source = "hashicorp/aws"
6718
- version = "~> 6.33"
6881
+ version = "6.52.0"
6719
6882
  }
6720
6883
  random = {
6721
6884
  source = "hashicorp/random"
6722
- version = "~> 3.1"
6885
+ version = "3.9.0"
6723
6886
  }
6724
6887
  }
6725
6888
  }
@@ -6789,8 +6952,6 @@ data "aws_caller_identity" "current" {}
6789
6952
 
6790
6953
  # Resources
6791
6954
 
6792
- # Note: CloudWatch logging removed due to account-level CloudWatch Logs role ARN requirement
6793
-
6794
6955
  # REST API Gateway
6795
6956
  resource "aws_api_gateway_rest_api" "rest_api" {
6796
6957
  name = var.api_name
@@ -6807,10 +6968,8 @@ resource "aws_api_gateway_rest_api" "rest_api" {
6807
6968
  tags = var.tags
6808
6969
  }
6809
6970
 
6810
- # Note: Deployment and stage are created in the consuming module (e.g., foo-api.tf)
6811
- # after all methods and integrations are defined
6812
-
6813
- # 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
6814
6973
 
6815
6974
  # Gateway Response for CORS (4XX errors)
6816
6975
  resource "aws_api_gateway_gateway_response" "cors_4xx" {
@@ -6968,16 +7127,14 @@ output "waf_web_acl_arn" {
6968
7127
  value = var.enable_waf ? aws_wafv2_web_acl.api_waf[0].arn : null
6969
7128
  }
6970
7129
 
6971
- # Note: Stage and deployment outputs are provided by the consuming module
6972
-
6973
- # 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",
6974
7131
  "test-api.tf": "terraform {
6975
7132
  required_version = ">= 1.0"
6976
7133
 
6977
7134
  required_providers {
6978
7135
  aws = {
6979
7136
  source = "hashicorp/aws"
6980
- version = "~> 6.33"
7137
+ version = "6.52.0"
6981
7138
  }
6982
7139
  }
6983
7140
  }
@@ -7066,6 +7223,11 @@ resource "aws_s3_object" "lambda_zip" {
7066
7223
  }
7067
7224
 
7068
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
+
7069
7231
  module "rest_api" {
7070
7232
  source = "../../../core/api/rest-api"
7071
7233
 
@@ -7392,11 +7554,63 @@ resource "aws_api_gateway_deployment" "api_deployment" {
7392
7554
  ]
7393
7555
  }
7394
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
+
7395
7610
  # API Gateway stage
7396
7611
  resource "aws_api_gateway_stage" "api_stage" {
7397
7612
  #checkov:skip=CKV_AWS_120:API Gateway caching not required for this use case
7398
- #checkov:skip=CKV_AWS_76:API Gateway access logging disabled due to account-level CloudWatch Logs role ARN requirement
7399
- #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
7400
7614
  #checkov:skip=CKV2_AWS_51:Client certificate authentication not required for this use case
7401
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
7402
7616
  deployment_id = aws_api_gateway_deployment.api_deployment.id
@@ -7404,9 +7618,39 @@ resource "aws_api_gateway_stage" "api_stage" {
7404
7618
  stage_name = "prod"
7405
7619
  xray_tracing_enabled = true
7406
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
+
7407
7637
  tags = var.tags
7408
7638
 
7409
- 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
+ }
7410
7654
  }
7411
7655
 
7412
7656
  # API Gateway Resource Policy