@aws/agentcore 1.0.0-preview.3 → 1.0.0-preview.30

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 (330) hide show
  1. package/README.md +193 -33
  2. package/dist/agent-inspector/index.css +1 -1
  3. package/dist/agent-inspector/index.js +99 -84
  4. package/dist/assets/README.md +6 -2
  5. package/dist/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap +3344 -366
  6. package/dist/assets/__tests__/__snapshots__/dockerfile-render.test.ts.snap +6 -2
  7. package/dist/assets/__tests__/assets.snapshot.test.ts +10 -24
  8. package/dist/assets/__tests__/googleadk-observability.test.ts +23 -0
  9. package/dist/assets/__tests__/googleadk-session-eviction.test.ts +87 -0
  10. package/dist/assets/__tests__/input-validation.test.ts +44 -0
  11. package/dist/assets/__tests__/summarization-namespace.test.ts +43 -0
  12. package/dist/assets/agents/AGENTS.md +91 -14
  13. package/dist/assets/cdk/bin/cdk.ts +109 -24
  14. package/dist/assets/cdk/lib/cdk-stack.ts +227 -19
  15. package/dist/assets/cdk/package.json +9 -9
  16. package/dist/assets/cdk/test/cdk.test.ts +4 -0
  17. package/dist/assets/container/python/Dockerfile +7 -1
  18. package/dist/assets/container/typescript/Dockerfile +25 -0
  19. package/dist/assets/container/typescript/dockerignore.template +24 -0
  20. package/dist/assets/datasets/predefined-v1.jsonl +3 -0
  21. package/dist/assets/datasets/simulated-v1.jsonl +3 -0
  22. package/dist/assets/evaluators/autoevals-lambda/execution-role-policy.json +15 -0
  23. package/dist/assets/evaluators/autoevals-lambda/lambda_function.py +37 -0
  24. package/dist/assets/evaluators/autoevals-lambda/pyproject.toml +22 -0
  25. package/dist/assets/evaluators/deepeval-lambda/execution-role-policy.json +15 -0
  26. package/dist/assets/evaluators/deepeval-lambda/lambda_function.py +29 -0
  27. package/dist/assets/evaluators/deepeval-lambda/pyproject.toml +19 -0
  28. package/dist/assets/mcp/python/pyproject.toml +1 -1
  29. package/dist/assets/python/a2a/googleadk/base/main.py +32 -18
  30. package/dist/assets/python/a2a/googleadk/base/pyproject.toml +6 -4
  31. package/dist/assets/python/a2a/langchain_langgraph/base/main.py +35 -21
  32. package/dist/assets/python/a2a/langchain_langgraph/base/pyproject.toml +4 -3
  33. package/dist/assets/python/a2a/strands/base/main.py +23 -17
  34. package/dist/assets/python/a2a/strands/base/pyproject.toml +3 -3
  35. package/dist/assets/python/a2a/strands/capabilities/memory/session.py +4 -1
  36. package/dist/assets/python/agui/googleadk/base/main.py +62 -2
  37. package/dist/assets/python/agui/googleadk/base/pyproject.toml +6 -5
  38. package/dist/assets/python/agui/langchain_langgraph/base/main.py +56 -0
  39. package/dist/assets/python/agui/langchain_langgraph/base/pyproject.toml +3 -2
  40. package/dist/assets/python/agui/strands/base/main.py +63 -1
  41. package/dist/assets/python/agui/strands/base/pyproject.toml +2 -2
  42. package/dist/assets/python/agui/strands/capabilities/memory/session.py +4 -1
  43. package/dist/assets/python/http/autogen/base/README.md +7 -1
  44. package/dist/assets/python/http/autogen/base/main.py +62 -29
  45. package/dist/assets/python/http/autogen/base/pyproject.toml +1 -1
  46. package/dist/assets/python/http/googleadk/base/README.md +7 -1
  47. package/dist/assets/python/http/googleadk/base/main.py +71 -24
  48. package/dist/assets/python/http/googleadk/base/mcp_client/client.py +7 -7
  49. package/dist/assets/python/http/googleadk/base/pyproject.toml +5 -3
  50. package/dist/assets/python/http/langchain_langgraph/base/README.md +7 -1
  51. package/dist/assets/python/http/langchain_langgraph/base/main.py +119 -24
  52. package/dist/assets/python/http/langchain_langgraph/base/mcp_client/client.py +10 -8
  53. package/dist/assets/python/http/langchain_langgraph/base/pyproject.toml +5 -4
  54. package/dist/assets/python/http/openaiagents/base/README.md +7 -1
  55. package/dist/assets/python/http/openaiagents/base/main.py +63 -32
  56. package/dist/assets/python/http/openaiagents/base/mcp_client/client.py +4 -4
  57. package/dist/assets/python/http/openaiagents/base/pyproject.toml +3 -3
  58. package/dist/assets/python/http/strands/base/README.md +8 -1
  59. package/dist/assets/python/http/strands/base/main.py +607 -47
  60. package/dist/assets/python/http/strands/base/mcp_client/client.py +49 -6
  61. package/dist/assets/python/http/strands/base/model/load.py +119 -3
  62. package/dist/assets/python/http/strands/base/model/mantle_compat.py +21 -0
  63. package/dist/assets/python/http/strands/base/pyproject.toml +11 -5
  64. package/dist/assets/python/http/strands/base/skills/fetcher.py +279 -0
  65. package/dist/assets/python/http/strands/capabilities/execution-limits/hooks/execution_limits.py +54 -0
  66. package/dist/assets/python/http/strands/capabilities/memory/session.py +4 -1
  67. package/dist/assets/python/http/strands/capabilities/payments/__init__.py +4 -0
  68. package/dist/assets/python/http/strands/capabilities/payments/payments.py +142 -0
  69. package/dist/assets/python/mcp/standalone/base/main.py +58 -0
  70. package/dist/assets/python/mcp/standalone/base/pyproject.toml +1 -1
  71. package/dist/assets/typescript/http/strands/base/README.md +42 -0
  72. package/dist/assets/typescript/http/strands/base/gitignore.template +22 -0
  73. package/dist/assets/typescript/http/strands/base/main.ts +149 -0
  74. package/dist/assets/typescript/http/strands/base/mcp_client/client.ts +11 -0
  75. package/dist/assets/typescript/http/strands/base/model/load.ts +102 -0
  76. package/dist/assets/typescript/http/strands/base/package.json +38 -0
  77. package/dist/assets/typescript/http/strands/base/tsconfig.json +19 -0
  78. package/dist/assets/typescript/http/strands/capabilities/memory/memory.ts +52 -0
  79. package/dist/assets/typescript/http/vercelai/base/README.md +42 -0
  80. package/dist/assets/typescript/http/vercelai/base/gitignore.template +22 -0
  81. package/dist/assets/typescript/http/vercelai/base/main.ts +70 -0
  82. package/dist/assets/typescript/http/vercelai/base/model/load.ts +121 -0
  83. package/dist/assets/typescript/http/vercelai/base/package.json +35 -0
  84. package/dist/assets/typescript/http/vercelai/base/tsconfig.json +19 -0
  85. package/dist/cli/index.mjs +1743 -627
  86. package/dist/lib/constants.d.ts +8 -4
  87. package/dist/lib/constants.d.ts.map +1 -1
  88. package/dist/lib/constants.js +13 -7
  89. package/dist/lib/constants.js.map +1 -1
  90. package/dist/lib/dependency-management/index.d.ts +5 -0
  91. package/dist/lib/dependency-management/index.d.ts.map +1 -0
  92. package/dist/lib/dependency-management/index.js +8 -0
  93. package/dist/lib/dependency-management/index.js.map +1 -0
  94. package/dist/lib/dependency-management/messages.d.ts +30 -0
  95. package/dist/lib/dependency-management/messages.d.ts.map +1 -0
  96. package/dist/lib/dependency-management/messages.js +86 -0
  97. package/dist/lib/dependency-management/messages.js.map +1 -0
  98. package/dist/lib/dependency-management/plan.d.ts +25 -0
  99. package/dist/lib/dependency-management/plan.d.ts.map +1 -0
  100. package/dist/lib/dependency-management/plan.js +67 -0
  101. package/dist/lib/dependency-management/plan.js.map +1 -0
  102. package/dist/lib/dependency-management/semver.d.ts +21 -0
  103. package/dist/lib/dependency-management/semver.d.ts.map +1 -0
  104. package/dist/lib/dependency-management/semver.js +51 -0
  105. package/dist/lib/dependency-management/semver.js.map +1 -0
  106. package/dist/lib/dependency-management/sync.d.ts +26 -0
  107. package/dist/lib/dependency-management/sync.d.ts.map +1 -0
  108. package/dist/lib/dependency-management/sync.js +141 -0
  109. package/dist/lib/dependency-management/sync.js.map +1 -0
  110. package/dist/lib/dependency-management/types.d.ts +85 -0
  111. package/dist/lib/dependency-management/types.d.ts.map +1 -0
  112. package/dist/lib/dependency-management/types.js +3 -0
  113. package/dist/lib/dependency-management/types.js.map +1 -0
  114. package/dist/lib/errors/index.d.ts +1 -1
  115. package/dist/lib/errors/index.d.ts.map +1 -1
  116. package/dist/lib/errors/index.js +1 -1
  117. package/dist/lib/errors/index.js.map +1 -1
  118. package/dist/lib/errors/types.d.ts +274 -0
  119. package/dist/lib/errors/types.d.ts.map +1 -0
  120. package/dist/lib/errors/types.js +423 -0
  121. package/dist/lib/errors/types.js.map +1 -0
  122. package/dist/lib/errors/zod.d.ts +8 -0
  123. package/dist/lib/errors/zod.d.ts.map +1 -0
  124. package/dist/lib/errors/{config.js → zod.js} +8 -81
  125. package/dist/lib/errors/zod.js.map +1 -0
  126. package/dist/lib/index.d.ts +3 -0
  127. package/dist/lib/index.d.ts.map +1 -1
  128. package/dist/lib/index.js +4 -1
  129. package/dist/lib/index.js.map +1 -1
  130. package/dist/lib/packaging/build-args.d.ts +6 -0
  131. package/dist/lib/packaging/build-args.d.ts.map +1 -1
  132. package/dist/lib/packaging/build-args.js +11 -2
  133. package/dist/lib/packaging/build-args.js.map +1 -1
  134. package/dist/lib/packaging/build-context-dockerignore.d.ts +23 -0
  135. package/dist/lib/packaging/build-context-dockerignore.d.ts.map +1 -0
  136. package/dist/lib/packaging/build-context-dockerignore.js +63 -0
  137. package/dist/lib/packaging/build-context-dockerignore.js.map +1 -0
  138. package/dist/lib/packaging/build-context.d.ts +21 -0
  139. package/dist/lib/packaging/build-context.d.ts.map +1 -0
  140. package/dist/lib/packaging/build-context.js +21 -0
  141. package/dist/lib/packaging/build-context.js.map +1 -0
  142. package/dist/lib/packaging/container.d.ts.map +1 -1
  143. package/dist/lib/packaging/container.js +20 -9
  144. package/dist/lib/packaging/container.js.map +1 -1
  145. package/dist/lib/packaging/helpers.d.ts +16 -0
  146. package/dist/lib/packaging/helpers.d.ts.map +1 -1
  147. package/dist/lib/packaging/helpers.js +127 -29
  148. package/dist/lib/packaging/helpers.js.map +1 -1
  149. package/dist/lib/packaging/index.d.ts +2 -1
  150. package/dist/lib/packaging/index.d.ts.map +1 -1
  151. package/dist/lib/packaging/index.js +9 -20
  152. package/dist/lib/packaging/index.js.map +1 -1
  153. package/dist/lib/packaging/node.d.ts +2 -2
  154. package/dist/lib/packaging/node.d.ts.map +1 -1
  155. package/dist/lib/packaging/node.js +83 -38
  156. package/dist/lib/packaging/node.js.map +1 -1
  157. package/dist/lib/packaging/python.js +12 -12
  158. package/dist/lib/packaging/python.js.map +1 -1
  159. package/dist/lib/result.d.ts +57 -0
  160. package/dist/lib/result.d.ts.map +1 -0
  161. package/dist/lib/result.js +62 -0
  162. package/dist/lib/result.js.map +1 -0
  163. package/dist/lib/schemas/io/config-io.d.ts +14 -0
  164. package/dist/lib/schemas/io/config-io.d.ts.map +1 -1
  165. package/dist/lib/schemas/io/config-io.js +89 -5
  166. package/dist/lib/schemas/io/config-io.js.map +1 -1
  167. package/dist/lib/schemas/io/global-config.d.ts +41 -0
  168. package/dist/lib/schemas/io/global-config.d.ts.map +1 -0
  169. package/dist/lib/schemas/io/global-config.js +119 -0
  170. package/dist/lib/schemas/io/global-config.js.map +1 -0
  171. package/dist/lib/schemas/io/index.d.ts +1 -2
  172. package/dist/lib/schemas/io/index.d.ts.map +1 -1
  173. package/dist/lib/schemas/io/index.js +1 -4
  174. package/dist/lib/schemas/io/index.js.map +1 -1
  175. package/dist/lib/schemas/io/path-resolver.d.ts +0 -6
  176. package/dist/lib/schemas/io/path-resolver.d.ts.map +1 -1
  177. package/dist/lib/schemas/io/path-resolver.js +3 -13
  178. package/dist/lib/schemas/io/path-resolver.js.map +1 -1
  179. package/dist/lib/secrets/cipher.d.ts +12 -0
  180. package/dist/lib/secrets/cipher.d.ts.map +1 -0
  181. package/dist/lib/secrets/cipher.js +54 -0
  182. package/dist/lib/secrets/cipher.js.map +1 -0
  183. package/dist/lib/secrets/index.d.ts +4 -0
  184. package/dist/lib/secrets/index.d.ts.map +1 -0
  185. package/dist/lib/secrets/index.js +15 -0
  186. package/dist/lib/secrets/index.js.map +1 -0
  187. package/dist/lib/secrets/key-provider.d.ts +16 -0
  188. package/dist/lib/secrets/key-provider.d.ts.map +1 -0
  189. package/dist/lib/secrets/key-provider.js +191 -0
  190. package/dist/lib/secrets/key-provider.js.map +1 -0
  191. package/dist/lib/secrets/sensitive-keys.d.ts +21 -0
  192. package/dist/lib/secrets/sensitive-keys.d.ts.map +1 -0
  193. package/dist/lib/secrets/sensitive-keys.js +67 -0
  194. package/dist/lib/secrets/sensitive-keys.js.map +1 -0
  195. package/dist/lib/time-constants.d.ts +5 -0
  196. package/dist/lib/time-constants.d.ts.map +1 -0
  197. package/dist/lib/time-constants.js +8 -0
  198. package/dist/lib/time-constants.js.map +1 -0
  199. package/dist/lib/utils/env.d.ts +8 -2
  200. package/dist/lib/utils/env.d.ts.map +1 -1
  201. package/dist/lib/utils/env.js +65 -17
  202. package/dist/lib/utils/env.js.map +1 -1
  203. package/dist/lib/utils/index.d.ts +3 -2
  204. package/dist/lib/utils/index.d.ts.map +1 -1
  205. package/dist/lib/utils/index.js +6 -1
  206. package/dist/lib/utils/index.js.map +1 -1
  207. package/dist/lib/utils/polling.d.ts +31 -0
  208. package/dist/lib/utils/polling.d.ts.map +1 -0
  209. package/dist/lib/utils/polling.js +61 -0
  210. package/dist/lib/utils/polling.js.map +1 -0
  211. package/dist/lib/utils/subprocess.d.ts +4 -1
  212. package/dist/lib/utils/subprocess.d.ts.map +1 -1
  213. package/dist/lib/utils/subprocess.js +11 -57
  214. package/dist/lib/utils/subprocess.js.map +1 -1
  215. package/dist/lib/utils/zod.d.ts +16 -0
  216. package/dist/lib/utils/zod.d.ts.map +1 -1
  217. package/dist/lib/utils/zod.js +45 -0
  218. package/dist/lib/utils/zod.js.map +1 -1
  219. package/dist/schema/constants.d.ts +56 -2
  220. package/dist/schema/constants.d.ts.map +1 -1
  221. package/dist/schema/constants.js +82 -7
  222. package/dist/schema/constants.js.map +1 -1
  223. package/dist/schema/schemas/agent-env.d.ts +187 -7
  224. package/dist/schema/schemas/agent-env.d.ts.map +1 -1
  225. package/dist/schema/schemas/agent-env.js +323 -27
  226. package/dist/schema/schemas/agent-env.js.map +1 -1
  227. package/dist/schema/schemas/agentcore-project.d.ts +519 -12
  228. package/dist/schema/schemas/agentcore-project.d.ts.map +1 -1
  229. package/dist/schema/schemas/agentcore-project.js +342 -13
  230. package/dist/schema/schemas/agentcore-project.js.map +1 -1
  231. package/dist/schema/schemas/auth.d.ts +174 -0
  232. package/dist/schema/schemas/auth.d.ts.map +1 -1
  233. package/dist/schema/schemas/auth.js +127 -3
  234. package/dist/schema/schemas/auth.js.map +1 -1
  235. package/dist/schema/schemas/aws-targets.d.ts +18 -0
  236. package/dist/schema/schemas/aws-targets.d.ts.map +1 -1
  237. package/dist/schema/schemas/aws-targets.js +6 -0
  238. package/dist/schema/schemas/aws-targets.js.map +1 -1
  239. package/dist/schema/schemas/connections.d.ts +185 -0
  240. package/dist/schema/schemas/connections.d.ts.map +1 -0
  241. package/dist/schema/schemas/connections.js +176 -0
  242. package/dist/schema/schemas/connections.js.map +1 -0
  243. package/dist/schema/schemas/deployed-state.d.ts +392 -5
  244. package/dist/schema/schemas/deployed-state.d.ts.map +1 -1
  245. package/dist/schema/schemas/deployed-state.js +112 -2
  246. package/dist/schema/schemas/deployed-state.js.map +1 -1
  247. package/dist/schema/schemas/index.d.ts +3 -0
  248. package/dist/schema/schemas/index.d.ts.map +1 -1
  249. package/dist/schema/schemas/index.js +5 -0
  250. package/dist/schema/schemas/index.js.map +1 -1
  251. package/dist/schema/schemas/mcp-defs.d.ts +2 -1
  252. package/dist/schema/schemas/mcp-defs.d.ts.map +1 -1
  253. package/dist/schema/schemas/mcp-defs.js +3 -2
  254. package/dist/schema/schemas/mcp-defs.js.map +1 -1
  255. package/dist/schema/schemas/mcp.d.ts +197 -0
  256. package/dist/schema/schemas/mcp.d.ts.map +1 -1
  257. package/dist/schema/schemas/mcp.js +334 -5
  258. package/dist/schema/schemas/mcp.js.map +1 -1
  259. package/dist/schema/schemas/primitives/ab-test.d.ts +135 -0
  260. package/dist/schema/schemas/primitives/ab-test.d.ts.map +1 -0
  261. package/dist/schema/schemas/primitives/ab-test.js +95 -0
  262. package/dist/schema/schemas/primitives/ab-test.js.map +1 -0
  263. package/dist/schema/schemas/primitives/capacity-provider.d.ts +237 -0
  264. package/dist/schema/schemas/primitives/capacity-provider.d.ts.map +1 -0
  265. package/dist/schema/schemas/primitives/capacity-provider.js +220 -0
  266. package/dist/schema/schemas/primitives/capacity-provider.js.map +1 -0
  267. package/dist/schema/schemas/primitives/config-bundle.d.ts +32 -0
  268. package/dist/schema/schemas/primitives/config-bundle.d.ts.map +1 -0
  269. package/dist/schema/schemas/primitives/config-bundle.js +41 -0
  270. package/dist/schema/schemas/primitives/config-bundle.js.map +1 -0
  271. package/dist/schema/schemas/primitives/dataset.d.ts +48 -0
  272. package/dist/schema/schemas/primitives/dataset.d.ts.map +1 -0
  273. package/dist/schema/schemas/primitives/dataset.js +58 -0
  274. package/dist/schema/schemas/primitives/dataset.js.map +1 -0
  275. package/dist/schema/schemas/primitives/evaluator.d.ts +22 -0
  276. package/dist/schema/schemas/primitives/evaluator.d.ts.map +1 -1
  277. package/dist/schema/schemas/primitives/evaluator.js +28 -3
  278. package/dist/schema/schemas/primitives/evaluator.js.map +1 -1
  279. package/dist/schema/schemas/primitives/harness.d.ts +377 -19
  280. package/dist/schema/schemas/primitives/harness.d.ts.map +1 -1
  281. package/dist/schema/schemas/primitives/harness.js +379 -24
  282. package/dist/schema/schemas/primitives/harness.js.map +1 -1
  283. package/dist/schema/schemas/primitives/index.d.ts +17 -9
  284. package/dist/schema/schemas/primitives/index.d.ts.map +1 -1
  285. package/dist/schema/schemas/primitives/index.js +62 -1
  286. package/dist/schema/schemas/primitives/index.js.map +1 -1
  287. package/dist/schema/schemas/primitives/knowledge-base.d.ts +104 -0
  288. package/dist/schema/schemas/primitives/knowledge-base.d.ts.map +1 -0
  289. package/dist/schema/schemas/primitives/knowledge-base.js +99 -0
  290. package/dist/schema/schemas/primitives/knowledge-base.js.map +1 -0
  291. package/dist/schema/schemas/primitives/memory.d.ts +22 -4
  292. package/dist/schema/schemas/primitives/memory.d.ts.map +1 -1
  293. package/dist/schema/schemas/primitives/memory.js +57 -16
  294. package/dist/schema/schemas/primitives/memory.js.map +1 -1
  295. package/dist/schema/schemas/primitives/online-eval-config.d.ts +21 -2
  296. package/dist/schema/schemas/primitives/online-eval-config.d.ts.map +1 -1
  297. package/dist/schema/schemas/primitives/online-eval-config.js +45 -5
  298. package/dist/schema/schemas/primitives/online-eval-config.js.map +1 -1
  299. package/dist/schema/schemas/primitives/payment.d.ts +86 -0
  300. package/dist/schema/schemas/primitives/payment.d.ts.map +1 -0
  301. package/dist/schema/schemas/primitives/payment.js +88 -0
  302. package/dist/schema/schemas/primitives/payment.js.map +1 -0
  303. package/dist/schema/schemas/primitives/policy.d.ts +26 -0
  304. package/dist/schema/schemas/primitives/policy.d.ts.map +1 -1
  305. package/dist/schema/schemas/primitives/policy.js +5 -1
  306. package/dist/schema/schemas/primitives/policy.js.map +1 -1
  307. package/npm-shrinkwrap.json +16874 -0
  308. package/package.json +49 -21
  309. package/scripts/bump-version.ts +4 -4
  310. package/scripts/bundle.mjs +70 -41
  311. package/scripts/extract-cli-model.mjs +269 -0
  312. package/scripts/extract-cli-model.test.mjs +43 -0
  313. package/scripts/render_adoc.py +350 -0
  314. package/scripts/run-e2e-dev.sh +56 -0
  315. package/scripts/run-e2e-local.sh +145 -0
  316. package/scripts/safe-junit-reporter.ts +7 -0
  317. package/scripts/sanitize-test-artifacts.ts +65 -0
  318. package/scripts/sync-vended-cdk.ts +49 -0
  319. package/scripts/test_render_adoc.py +38 -0
  320. package/dist/lib/errors/config.d.ts +0 -49
  321. package/dist/lib/errors/config.d.ts.map +0 -1
  322. package/dist/lib/errors/config.js.map +0 -1
  323. package/dist/lib/packaging/errors.d.ts +0 -16
  324. package/dist/lib/packaging/errors.d.ts.map +0 -1
  325. package/dist/lib/packaging/errors.js +0 -36
  326. package/dist/lib/packaging/errors.js.map +0 -1
  327. package/dist/lib/schemas/io/cli-config.d.ts +0 -12
  328. package/dist/lib/schemas/io/cli-config.d.ts.map +0 -1
  329. package/dist/lib/schemas/io/cli-config.js +0 -35
  330. package/dist/lib/schemas/io/cli-config.js.map +0 -1
@@ -29,9 +29,13 @@ export declare const CONTAINER_INTERNAL_PORT = 8080;
29
29
  export type ContainerRuntime = 'docker' | 'podman' | 'finch';
30
30
  export declare const CONTAINER_RUNTIMES: ContainerRuntime[];
31
31
  /**
32
- * Get the Dockerfile path for a given code location.
33
- * @param codeLocation - Directory containing the Dockerfile
34
- * @param dockerfile - Custom Dockerfile name (default: 'Dockerfile')
32
+ * Resolve the Dockerfile path against the Docker build context.
33
+ * @param buildContext - The build context directory (`buildContextPath` when set, else `codeLocation`)
34
+ * @param dockerfile - Dockerfile name or relative subpath within the context (default: 'Dockerfile')
35
+ *
36
+ * `dockerfile` may be a filename ('Dockerfile') or a forward-slash relative subpath
37
+ * ('docker/Dockerfile'); absolute paths, backslashes, and `..` traversal are rejected so it can
38
+ * never escape the build context.
35
39
  */
36
- export declare function getDockerfilePath(codeLocation: string, dockerfile?: string): string;
40
+ export declare function getDockerfilePath(buildContext: string, dockerfile?: string): string;
37
41
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAGA,cAAc,WAAW,CAAC;AAG1B,eAAO,MAAM,UAAU,cAAc,CAAC;AAGtC,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,cAAc,QAAQ,CAAC;AAGpC,eAAO,MAAM,WAAW,cAAc,CAAC;AAGvC,eAAO,MAAM,cAAc,SAAS,CAAC;AACrC,eAAO,MAAM,YAAY,SAAS,CAAC;AAEnC,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,QAAQ,eAAe,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,eAAO,MAAM,eAAe,gGACmE,CAAC;AAChG,eAAO,MAAM,gBAAgB,wEAAwE,CAAC;AACtG,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAG/D,eAAO,MAAM,MAAM,QAAqB,CAAC;AACzC,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,2DAA2D;AAC3D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC7D,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAAkC,CAAC;AAEpF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAMnF"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAIA,cAAc,WAAW,CAAC;AAG1B,eAAO,MAAM,UAAU,cAAc,CAAC;AAGtC,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,cAAc,QAAQ,CAAC;AAGpC,eAAO,MAAM,WAAW,cAAc,CAAC;AAGvC,eAAO,MAAM,cAAc,SAAS,CAAC;AACrC,eAAO,MAAM,YAAY,SAAS,CAAC;AAEnC,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,QAAQ,eAAe,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,eAAO,MAAM,eAAe,gGACmE,CAAC;AAChG,eAAO,MAAM,gBAAgB,wEAAwE,CAAC;AACtG,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAG/D,eAAO,MAAM,MAAM,QAAqB,CAAC;AACzC,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,2DAA2D;AAC3D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC7D,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAAkC,CAAC;AAEpF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CASnF"}
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.CONTAINER_RUNTIMES = exports.CONTAINER_INTERNAL_PORT = exports.DOCKERFILE_NAME = exports.ONE_GB = exports.DEFAULT_PYTHON_PLATFORM = exports.NPM_INSTALL_HINT = exports.UV_INSTALL_HINT = exports.ENV_FILE = exports.CONFIG_FILES = exports.CLI_LOGS_DIR = exports.CLI_SYSTEM_DIR = exports.HARNESS_DIR = exports.MCP_APP_SUBDIR = exports.APP_DIR = exports.CONFIG_DIR = void 0;
18
18
  exports.getArtifactZipName = getArtifactZipName;
19
19
  exports.getDockerfilePath = getDockerfilePath;
20
+ const schema_1 = require("../schema");
20
21
  const path_1 = require("path");
21
22
  // Re-export all schema constants from schema
22
23
  __exportStar(require("../schema"), exports);
@@ -55,15 +56,20 @@ exports.DOCKERFILE_NAME = 'Dockerfile';
55
56
  exports.CONTAINER_INTERNAL_PORT = 8080;
56
57
  exports.CONTAINER_RUNTIMES = ['docker', 'podman', 'finch'];
57
58
  /**
58
- * Get the Dockerfile path for a given code location.
59
- * @param codeLocation - Directory containing the Dockerfile
60
- * @param dockerfile - Custom Dockerfile name (default: 'Dockerfile')
59
+ * Resolve the Dockerfile path against the Docker build context.
60
+ * @param buildContext - The build context directory (`buildContextPath` when set, else `codeLocation`)
61
+ * @param dockerfile - Dockerfile name or relative subpath within the context (default: 'Dockerfile')
62
+ *
63
+ * `dockerfile` may be a filename ('Dockerfile') or a forward-slash relative subpath
64
+ * ('docker/Dockerfile'); absolute paths, backslashes, and `..` traversal are rejected so it can
65
+ * never escape the build context.
61
66
  */
62
- function getDockerfilePath(codeLocation, dockerfile) {
67
+ function getDockerfilePath(buildContext, dockerfile) {
63
68
  const name = dockerfile ?? exports.DOCKERFILE_NAME;
64
- if (name.includes('/') || name.includes('\\') || name.includes('..')) {
65
- throw new Error(`Invalid dockerfile name: must be a filename without path separators or traversal`);
69
+ if (!(0, schema_1.isValidDockerfilePath)(name)) {
70
+ throw new Error(`Invalid dockerfile path "${name}": must be a relative path within the build context (a filename or ` +
71
+ `forward-slash subpath; no leading slash, backslash, empty segments, or ".." traversal)`);
66
72
  }
67
- return (0, path_1.join)(codeLocation, name);
73
+ return (0, path_1.join)(buildContext, name);
68
74
  }
69
75
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAkCA,gDAEC;AAqBD,8CAMC;AA/DD,+BAA4B;AAE5B,6CAA6C;AAC7C,4CAA0B;AAE1B,yCAAyC;AAC5B,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC,kEAAkE;AACrD,QAAA,OAAO,GAAG,KAAK,CAAC;AAChB,QAAA,cAAc,GAAG,KAAK,CAAC;AAEpC,sBAAsB;AACT,QAAA,WAAW,GAAG,WAAW,CAAC;AAEvC,8CAA8C;AACjC,QAAA,cAAc,GAAG,MAAM,CAAC;AACxB,QAAA,YAAY,GAAG,MAAM,CAAC;AAEtB,QAAA,YAAY,GAAG;IAC1B,SAAS,EAAE,gBAAgB;IAC3B,WAAW,EAAE,kBAAkB;IAC/B,cAAc,EAAE,qBAAqB;IACrC,QAAQ,EAAE,eAAe;CACjB,CAAC;AAEX,gFAAgF;AACnE,QAAA,QAAQ,GAAG,YAAY,CAAC;AAErC;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,OAAO,GAAG,IAAI,MAAM,CAAC;AACvB,CAAC;AAEY,QAAA,eAAe,GAC1B,6FAA6F,CAAC;AACnF,QAAA,gBAAgB,GAAG,qEAAqE,CAAC;AACzF,QAAA,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,sBAAsB;AACT,QAAA,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5B,QAAA,eAAe,GAAG,YAAY,CAAC;AAC/B,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAI/B,QAAA,kBAAkB,GAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEpF;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,YAAoB,EAAE,UAAmB;IACzE,MAAM,IAAI,GAAG,UAAU,IAAI,uBAAe,CAAC;IAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,IAAA,WAAI,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmCA,gDAEC;AAyBD,8CASC;AAvED,sCAAkD;AAClD,+BAA4B;AAE5B,6CAA6C;AAC7C,4CAA0B;AAE1B,yCAAyC;AAC5B,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC,kEAAkE;AACrD,QAAA,OAAO,GAAG,KAAK,CAAC;AAChB,QAAA,cAAc,GAAG,KAAK,CAAC;AAEpC,sBAAsB;AACT,QAAA,WAAW,GAAG,WAAW,CAAC;AAEvC,8CAA8C;AACjC,QAAA,cAAc,GAAG,MAAM,CAAC;AACxB,QAAA,YAAY,GAAG,MAAM,CAAC;AAEtB,QAAA,YAAY,GAAG;IAC1B,SAAS,EAAE,gBAAgB;IAC3B,WAAW,EAAE,kBAAkB;IAC/B,cAAc,EAAE,qBAAqB;IACrC,QAAQ,EAAE,eAAe;CACjB,CAAC;AAEX,gFAAgF;AACnE,QAAA,QAAQ,GAAG,YAAY,CAAC;AAErC;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,OAAO,GAAG,IAAI,MAAM,CAAC;AACvB,CAAC;AAEY,QAAA,eAAe,GAC1B,6FAA6F,CAAC;AACnF,QAAA,gBAAgB,GAAG,qEAAqE,CAAC;AACzF,QAAA,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,sBAAsB;AACT,QAAA,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5B,QAAA,eAAe,GAAG,YAAY,CAAC;AAC/B,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAI/B,QAAA,kBAAkB,GAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEpF;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,YAAoB,EAAE,UAAmB;IACzE,MAAM,IAAI,GAAG,UAAU,IAAI,uBAAe,CAAC;IAC3C,IAAI,CAAC,IAAA,8BAAqB,EAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,qEAAqE;YACnG,wFAAwF,CAC3F,CAAC;IACJ,CAAC;IACD,OAAO,IAAA,WAAI,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { syncManagedDependencies } from './sync';
2
+ export { computeSyncPlan } from './plan';
3
+ export type { SkewFinding, SyncPlan } from './plan';
4
+ export type { DependencyChange, DependencySyncOutcome, DependencySyncResult, PackageManifest, RestoredDependency, SkippedDependency, SyncManagedDependenciesOptions, } from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/dependency-management/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACpD,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeSyncPlan = exports.syncManagedDependencies = void 0;
4
+ var sync_1 = require("./sync");
5
+ Object.defineProperty(exports, "syncManagedDependencies", { enumerable: true, get: function () { return sync_1.syncManagedDependencies; } });
6
+ var plan_1 = require("./plan");
7
+ Object.defineProperty(exports, "computeSyncPlan", { enumerable: true, get: function () { return plan_1.computeSyncPlan; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/dependency-management/index.ts"],"names":[],"mappings":";;;AAAA,+BAAiD;AAAxC,+GAAA,uBAAuB,OAAA;AAChC,+BAAyC;AAAhC,uGAAA,eAAe,OAAA"}
@@ -0,0 +1,30 @@
1
+ import type { SkewFinding } from './plan';
2
+ import type { DependencyChange, RestoredDependency, SkippedDependency } from './types';
3
+ /**
4
+ * Single source of user-facing wording for dependency management, so the
5
+ * headless and TUI deploy paths (and any future CLI) can't drift apart.
6
+ */
7
+ /**
8
+ * Fallback CLI install command when the caller doesn't thread one in. The CLI layer
9
+ * passes `getDistroConfig().installCommand` (dist-tag/registry aware); this default
10
+ * keeps the lib module usable standalone.
11
+ */
12
+ export declare const DEFAULT_CLI_INSTALL_COMMAND = "npm install -g @aws/agentcore@latest";
13
+ export declare const OPT_OUT_HINT = "To manage these versions yourself: agentcore config disableDependencyManagement true";
14
+ /**
15
+ * Error text for newer-than-CLI skew. Names the skewed dependencies, gives the
16
+ * distro-correct upgrade command, and — because the skew may be a deliberate manual
17
+ * bump rather than a newer CLI — points at the opt-out as the alternative.
18
+ */
19
+ export declare function formatCliUpgradeError(skew: SkewFinding[], installCommand: string): string;
20
+ export declare function formatSyncNotice(options: {
21
+ migratedFromCaret: boolean;
22
+ changes: DependencyChange[];
23
+ restored: RestoredDependency[];
24
+ reinstalled: boolean;
25
+ /** False in check mode — nothing was written, so speak in the future tense. */
26
+ applied: boolean;
27
+ }): string | null;
28
+ export declare function formatSkewWarning(skew: SkewFinding[], installCommand: string): string;
29
+ export declare function formatSkippedWarning(skipped: SkippedDependency): string;
30
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/lib/dependency-management/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEvF;;;GAGG;AAEH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAElF,eAAO,MAAM,YAAY,yFAAyF,CAAC;AAiBnH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAUzF;AAYD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,MAAM,GAAG,IAAI,CA6BhB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAEvE"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OPT_OUT_HINT = exports.DEFAULT_CLI_INSTALL_COMMAND = void 0;
4
+ exports.formatCliUpgradeError = formatCliUpgradeError;
5
+ exports.formatSyncNotice = formatSyncNotice;
6
+ exports.formatSkewWarning = formatSkewWarning;
7
+ exports.formatSkippedWarning = formatSkippedWarning;
8
+ /**
9
+ * Single source of user-facing wording for dependency management, so the
10
+ * headless and TUI deploy paths (and any future CLI) can't drift apart.
11
+ */
12
+ /**
13
+ * Fallback CLI install command when the caller doesn't thread one in. The CLI layer
14
+ * passes `getDistroConfig().installCommand` (dist-tag/registry aware); this default
15
+ * keeps the lib module usable standalone.
16
+ */
17
+ exports.DEFAULT_CLI_INSTALL_COMMAND = 'npm install -g @aws/agentcore@latest';
18
+ exports.OPT_OUT_HINT = 'To manage these versions yourself: agentcore config disableDependencyManagement true';
19
+ const MIGRATION_PREAMBLE = 'Your project was created before the AgentCore CLI managed dependency versions.\n' +
20
+ "We've updated agentcore/cdk/package.json so the CLI keeps these dependencies\n" +
21
+ 'on versions it has been tested with (patch updates still apply automatically):';
22
+ // Check-mode variant: nothing was written, so the wording must promise rather than claim.
23
+ const MIGRATION_PREAMBLE_PENDING = 'Your project was created before the AgentCore CLI managed dependency versions.\n' +
24
+ 'agentcore/cdk/package.json will be updated on the next deploy so the CLI keeps these\n' +
25
+ 'dependencies on versions it has been tested with (patch updates still apply automatically):';
26
+ function formatSkewList(skew) {
27
+ return skew.map(s => `${s.name} (${s.declared}, CLI expects ${s.expected})`).join(', ');
28
+ }
29
+ /**
30
+ * Error text for newer-than-CLI skew. Names the skewed dependencies, gives the
31
+ * distro-correct upgrade command, and — because the skew may be a deliberate manual
32
+ * bump rather than a newer CLI — points at the opt-out as the alternative.
33
+ */
34
+ function formatCliUpgradeError(skew, installCommand) {
35
+ const plural = skew.length > 1;
36
+ return (`This project requires a newer version of the AgentCore CLI: ${formatSkewList(skew)} ` +
37
+ `${plural ? 'are' : 'is'} newer than this CLI was tested with. ` +
38
+ `Run \`${installCommand}\` and retry.\n` +
39
+ `If you intentionally updated ${plural ? 'these dependencies' : 'this dependency'} yourself, ` +
40
+ 'you can disable managed dependency versions instead:\n' +
41
+ exports.OPT_OUT_HINT);
42
+ }
43
+ function formatChangeTable(changes, restored) {
44
+ const rows = [
45
+ ...changes.map(c => ({ name: c.name, from: c.from, to: c.to })),
46
+ ...restored.map(r => ({ name: r.name, from: '(removed)', to: r.to })),
47
+ ];
48
+ const nameWidth = Math.max(...rows.map(r => r.name.length));
49
+ const fromWidth = Math.max(...rows.map(r => r.from.length));
50
+ return rows.map(r => ` ${r.name.padEnd(nameWidth)} ${r.from.padEnd(fromWidth)} → ${r.to}`).join('\n');
51
+ }
52
+ function formatSyncNotice(options) {
53
+ const { migratedFromCaret, changes, restored, reinstalled, applied } = options;
54
+ if (changes.length === 0 && restored.length === 0)
55
+ return null;
56
+ const lines = [];
57
+ if (migratedFromCaret) {
58
+ lines.push(applied ? MIGRATION_PREAMBLE : MIGRATION_PREAMBLE_PENDING);
59
+ }
60
+ else {
61
+ lines.push(applied
62
+ ? 'Updated managed dependencies in agentcore/cdk/package.json:'
63
+ : 'Managed dependencies in agentcore/cdk/package.json will be updated on the next deploy:');
64
+ }
65
+ lines.push('');
66
+ lines.push(formatChangeTable(changes, restored));
67
+ lines.push('');
68
+ if (reinstalled) {
69
+ lines.push('Ran npm install in agentcore/cdk to apply the updates.');
70
+ }
71
+ lines.push(applied
72
+ ? 'Dependencies you added yourself were not changed.'
73
+ : 'Dependencies you added yourself will not be changed.');
74
+ if (migratedFromCaret) {
75
+ lines.push(exports.OPT_OUT_HINT);
76
+ }
77
+ return lines.join('\n');
78
+ }
79
+ function formatSkewWarning(skew, installCommand) {
80
+ return (`${formatSkewList(skew)} ${skew.length === 1 ? 'is' : 'are'} newer than this CLI was tested with; ` +
81
+ `deploy may fail — upgrade the CLI with \`${installCommand}\`. ${exports.OPT_OUT_HINT}`);
82
+ }
83
+ function formatSkippedWarning(skipped) {
84
+ return `${skipped.name} (${skipped.raw}) ${skipped.reason}.`;
85
+ }
86
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/lib/dependency-management/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { DependencyChange, PackageManifest, RestoredDependency, SkippedDependency } from './types';
2
+ /**
3
+ * Pure policy computation for managed-dependency syncing. No I/O.
4
+ *
5
+ * A dependency is "managed" iff its name appears in the vended manifest
6
+ * (dependencies or devDependencies). The vended specifier is authoritative:
7
+ * the sync copies it verbatim, so the pinning policy (tilde for stable deps,
8
+ * exact for L3 constructs) lives entirely in the vended asset.
9
+ */
10
+ export interface SkewFinding {
11
+ name: string;
12
+ declared: string;
13
+ expected: string;
14
+ }
15
+ export interface SyncPlan {
16
+ /** Managed deps where the project declares a newer minor/major than the CLI expects. */
17
+ skew: SkewFinding[];
18
+ changes: DependencyChange[];
19
+ restored: RestoredDependency[];
20
+ skipped: SkippedDependency[];
21
+ /** True when any managed dep had a caret range — the project predates pinning. */
22
+ migratedFromCaret: boolean;
23
+ }
24
+ export declare function computeSyncPlan(vended: PackageManifest, project: PackageManifest): SyncPlan;
25
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/lib/dependency-management/plan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAGjB;;;;;;;GAOG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,wFAAwF;IACxF,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,kFAAkF;IAClF,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AA2BD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,GAAG,QAAQ,CAuC3F"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeSyncPlan = computeSyncPlan;
4
+ const semver_1 = require("./semver");
5
+ const semver_2 = require("semver");
6
+ const SECTIONS = ['dependencies', 'devDependencies'];
7
+ function findDeclared(manifest, name) {
8
+ for (const section of SECTIONS) {
9
+ const raw = manifest[section]?.[name];
10
+ if (raw !== undefined)
11
+ return { section, raw };
12
+ }
13
+ return null;
14
+ }
15
+ /**
16
+ * Skew exists when the project's declared base version is ahead of the CLI's
17
+ * expectation in a way patch-floating can't explain: a higher major.minor for
18
+ * ranged deps, or any prerelease-aware greater-than for exact pins (so an
19
+ * alpha.20 project is never silently downgraded to an alpha.19 CLI's pin).
20
+ */
21
+ function isSkewed(declared, expected) {
22
+ if (declared.kind === 'unsupported' || expected.kind === 'unsupported')
23
+ return false;
24
+ const d = declared.version;
25
+ const e = expected.version;
26
+ if (expected.kind === 'exact')
27
+ return (0, semver_2.compare)(d, e) > 0;
28
+ if (d.major !== e.major)
29
+ return d.major > e.major;
30
+ return d.minor > e.minor;
31
+ }
32
+ function computeSyncPlan(vended, project) {
33
+ const plan = { skew: [], changes: [], restored: [], skipped: [], migratedFromCaret: false };
34
+ for (const section of SECTIONS) {
35
+ for (const [name, expectedRaw] of Object.entries(vended[section] ?? {})) {
36
+ const expected = (0, semver_1.parseSpecifier)(expectedRaw);
37
+ const declared = findDeclared(project, name);
38
+ if (!declared) {
39
+ // Managed dep deleted by the user — the vended CDK app can't build without it.
40
+ plan.restored.push({ name, section, to: expectedRaw });
41
+ continue;
42
+ }
43
+ if (declared.raw === expectedRaw)
44
+ continue;
45
+ const declaredSpec = (0, semver_1.parseSpecifier)(declared.raw);
46
+ if (declaredSpec.kind === 'unsupported') {
47
+ // file:/git:/tag/range specifiers (incl. the bundled-tarball override) are
48
+ // deliberate local overrides — never rewrite, never skew-check.
49
+ plan.skipped.push({
50
+ name,
51
+ raw: declared.raw,
52
+ reason: 'uses a non-semver specifier and was left unmanaged',
53
+ });
54
+ continue;
55
+ }
56
+ if (isSkewed(declaredSpec, expected)) {
57
+ plan.skew.push({ name, declared: declared.raw, expected: expectedRaw });
58
+ continue;
59
+ }
60
+ if (declaredSpec.kind === 'caret')
61
+ plan.migratedFromCaret = true;
62
+ plan.changes.push({ name, section: declared.section, from: declared.raw, to: expectedRaw });
63
+ }
64
+ }
65
+ return plan;
66
+ }
67
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/lib/dependency-management/plan.ts"],"names":[],"mappings":";;AA6DA,0CAuCC;AApGD,qCAA0C;AAS1C,mCAAiC;AA2BjC,MAAM,QAAQ,GAAwB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAE1E,SAAS,YAAY,CAAC,QAAyB,EAAE,IAAY;IAC3D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,QAAyB,EAAE,QAAyB;IACpE,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,KAAK,CAAC;IACrF,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC3B,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAA,gBAAO,EAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAClD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3B,CAAC;AAED,SAAgB,eAAe,CAAC,MAAuB,EAAE,OAAwB;IAC/E,MAAM,IAAI,GAAa,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAEtG,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACxE,MAAM,QAAQ,GAAG,IAAA,uBAAc,EAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,+EAA+E;gBAC/E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBACvD,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,CAAC,GAAG,KAAK,WAAW;gBAAE,SAAS;YAE3C,MAAM,YAAY,GAAG,IAAA,uBAAc,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,YAAY,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACxC,2EAA2E;gBAC3E,gEAAgE;gBAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChB,IAAI;oBACJ,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,MAAM,EAAE,oDAAoD;iBAC7D,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;gBACxE,SAAS;YACX,CAAC;YAED,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO;gBAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACjE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { SemVer } from 'semver';
2
+ /** A parsed version: node-semver's SemVer (major / minor / patch / prerelease). */
3
+ export type ParsedVersion = SemVer;
4
+ export type SpecifierKind = 'exact' | 'tilde' | 'caret';
5
+ export type ParsedSpecifier = {
6
+ kind: SpecifierKind;
7
+ version: ParsedVersion;
8
+ raw: string;
9
+ } | {
10
+ kind: 'unsupported';
11
+ raw: string;
12
+ };
13
+ export declare function parseVersion(version: string): ParsedVersion | null;
14
+ /**
15
+ * Parse an npm dependency specifier into exact / tilde / caret + base version.
16
+ * Anything else (file:, git:, workspace:, URLs, wildcards, compound ranges, tags)
17
+ * is 'unsupported' — the sync skips those rather than guessing. Strict parsing
18
+ * (no loose/coerce) keeps `1.x`, `*`, `latest`, and `>=1.2.3` unsupported.
19
+ */
20
+ export declare function parseSpecifier(raw: string): ParsedSpecifier;
21
+ //# sourceMappingURL=semver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../../src/lib/dependency-management/semver.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAExD,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAKlE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAkB3D"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseVersion = parseVersion;
4
+ exports.parseSpecifier = parseSpecifier;
5
+ /**
6
+ * Semver parsing and comparison for managed-dependency syncing.
7
+ *
8
+ * Version parsing and comparison are delegated to node-semver (the `semver`
9
+ * package), which implements full semver precedence including prerelease
10
+ * ordering (0.1.0-alpha.19 < 0.1.0-alpha.20 < 0.1.0) — the dependency-check
11
+ * parser in src/cli/external-requirements/versions.ts does not, as it drops
12
+ * prerelease tags, which here would make an alpha downgrade look like a no-op.
13
+ * The specifier classifier stays hand-rolled because the sync policy needs to
14
+ * know whether a declared range was written as tilde, caret, or an exact pin,
15
+ * and node-semver's Range API erases that distinction (it expands `~`/`^` into
16
+ * plain comparators).
17
+ */
18
+ const semver_1 = require("semver");
19
+ function parseVersion(version) {
20
+ // npm accepts a single leading 'v' or 'V' on version strings (v1.2.3, ~v1.2.3);
21
+ // node-semver only recognizes the lowercase form, so normalize before parsing.
22
+ const normalized = version.trim().replace(/^V/, 'v');
23
+ return (0, semver_1.parse)(normalized, { loose: false });
24
+ }
25
+ /**
26
+ * Parse an npm dependency specifier into exact / tilde / caret + base version.
27
+ * Anything else (file:, git:, workspace:, URLs, wildcards, compound ranges, tags)
28
+ * is 'unsupported' — the sync skips those rather than guessing. Strict parsing
29
+ * (no loose/coerce) keeps `1.x`, `*`, `latest`, and `>=1.2.3` unsupported.
30
+ */
31
+ function parseSpecifier(raw) {
32
+ const trimmed = raw.trim();
33
+ let kind = 'exact';
34
+ let versionPart = trimmed;
35
+ if (trimmed.startsWith('~')) {
36
+ kind = 'tilde';
37
+ versionPart = trimmed.slice(1);
38
+ }
39
+ else if (trimmed.startsWith('^')) {
40
+ kind = 'caret';
41
+ versionPart = trimmed.slice(1);
42
+ }
43
+ else if (trimmed.startsWith('=')) {
44
+ versionPart = trimmed.slice(1);
45
+ }
46
+ const version = parseVersion(versionPart);
47
+ if (!version)
48
+ return { kind: 'unsupported', raw };
49
+ return { kind, version, raw };
50
+ }
51
+ //# sourceMappingURL=semver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../../src/lib/dependency-management/semver.ts"],"names":[],"mappings":";;AAyBA,oCAKC;AAQD,wCAkBC;AAxDD;;;;;;;;;;;;GAYG;AACH,mCAA+B;AAY/B,SAAgB,YAAY,CAAC,OAAe;IAC1C,gFAAgF;IAChF,+EAA+E;IAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,IAAA,cAAK,EAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAkB,OAAO,CAAC;IAClC,IAAI,WAAW,GAAG,OAAO,CAAC;IAE1B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,GAAG,OAAO,CAAC;QACf,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,OAAO,CAAC;QACf,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;IAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { DependencySyncResult, SyncManagedDependenciesOptions } from './types';
2
+ /**
3
+ * Sync the managed dependencies of a vended CDK project to the versions this CLI
4
+ * release was tested with.
5
+ *
6
+ * The vended asset package.json is the source of truth: every dependency named in it
7
+ * is managed and rewritten to its vended specifier (tilde for stable deps so patches
8
+ * float, exact for the L3 constructs); everything else in the user's file is untouched.
9
+ * Projects that predate pinning (caret ranges) are migrated automatically. If the
10
+ * project declares a managed dependency newer than this CLI expects, the project was
11
+ * updated by a newer CLI (or the user bumped it manually) and this throws
12
+ * CliVersionTooOldError (downgraded to a warning when `disabled` or
13
+ * `treatSkewAsWarning`). When anything changed — or node_modules is missing —
14
+ * `npm install` reconciles the edited package.json against the existing lockfile
15
+ * incrementally; node_modules and the lockfile are never deleted, so user-added deps
16
+ * keep their resolved versions. If the install fails, the pre-rewrite package.json is
17
+ * restored so a retry recomputes the same plan and re-attempts the install.
18
+ *
19
+ * `mode: 'check'` computes the same plan/warnings/notice without writing or
20
+ * installing, for preview flows that must not mutate the working tree.
21
+ *
22
+ * All user-facing wording is returned on the result (`notice`, `warnings`) — callers
23
+ * only display it. Throws CliVersionTooOldError | DependencySyncError; never exits.
24
+ */
25
+ export declare function syncManagedDependencies(options: SyncManagedDependenciesOptions): Promise<DependencySyncResult>;
26
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/lib/dependency-management/sync.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,oBAAoB,EAAmB,8BAA8B,EAAE,MAAM,SAAS,CAAC;AAsBrG;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAkHpH"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncManagedDependencies = syncManagedDependencies;
4
+ const types_1 = require("../errors/types");
5
+ const subprocess_1 = require("../utils/subprocess");
6
+ const messages_1 = require("./messages");
7
+ const plan_1 = require("./plan");
8
+ const node_fs_1 = require("node:fs");
9
+ const promises_1 = require("node:fs/promises");
10
+ const node_path_1 = require("node:path");
11
+ async function readManifest(path, fileDescription) {
12
+ let raw;
13
+ try {
14
+ raw = await (0, promises_1.readFile)(path, 'utf-8');
15
+ }
16
+ catch (err) {
17
+ throw new types_1.DependencySyncError(`Could not read ${fileDescription} at ${path}: ${String(err)}`, { cause: err });
18
+ }
19
+ try {
20
+ return { manifest: JSON.parse(raw), raw };
21
+ }
22
+ catch (err) {
23
+ throw new types_1.DependencySyncError(`Could not parse ${fileDescription} at ${path}: ${String(err)}`, { cause: err });
24
+ }
25
+ }
26
+ /**
27
+ * Sync the managed dependencies of a vended CDK project to the versions this CLI
28
+ * release was tested with.
29
+ *
30
+ * The vended asset package.json is the source of truth: every dependency named in it
31
+ * is managed and rewritten to its vended specifier (tilde for stable deps so patches
32
+ * float, exact for the L3 constructs); everything else in the user's file is untouched.
33
+ * Projects that predate pinning (caret ranges) are migrated automatically. If the
34
+ * project declares a managed dependency newer than this CLI expects, the project was
35
+ * updated by a newer CLI (or the user bumped it manually) and this throws
36
+ * CliVersionTooOldError (downgraded to a warning when `disabled` or
37
+ * `treatSkewAsWarning`). When anything changed — or node_modules is missing —
38
+ * `npm install` reconciles the edited package.json against the existing lockfile
39
+ * incrementally; node_modules and the lockfile are never deleted, so user-added deps
40
+ * keep their resolved versions. If the install fails, the pre-rewrite package.json is
41
+ * restored so a retry recomputes the same plan and re-attempts the install.
42
+ *
43
+ * `mode: 'check'` computes the same plan/warnings/notice without writing or
44
+ * installing, for preview flows that must not mutate the working tree.
45
+ *
46
+ * All user-facing wording is returned on the result (`notice`, `warnings`) — callers
47
+ * only display it. Throws CliVersionTooOldError | DependencySyncError; never exits.
48
+ */
49
+ async function syncManagedDependencies(options) {
50
+ const { vendedPackageJsonPath, projectDir, disabled = false, mode = 'apply', treatSkewAsWarning = false, installCommand = messages_1.DEFAULT_CLI_INSTALL_COMMAND, } = options;
51
+ const checkOnly = mode === 'check';
52
+ const projectPackageJsonPath = (0, node_path_1.join)(projectDir, 'package.json');
53
+ const { manifest: vended } = await readManifest(vendedPackageJsonPath, 'the vended CDK package.json');
54
+ // Keep the raw pre-rewrite text: it's restored verbatim if npm install fails, so a
55
+ // retry recomputes the same plan instead of seeing an already-matching manifest.
56
+ const { manifest: project, raw: projectRaw } = await readManifest(projectPackageJsonPath, "the project's CDK package.json");
57
+ const plan = (0, plan_1.computeSyncPlan)(vended, project);
58
+ // `disabled` wins over check mode: an opted-out sync never writes regardless of mode.
59
+ const outcome = disabled ? 'opted-out' : checkOnly ? 'check-only' : 'synced';
60
+ const result = {
61
+ outcome,
62
+ optedOut: disabled,
63
+ checkOnly,
64
+ migratedFromCaret: plan.migratedFromCaret,
65
+ reinstalled: false,
66
+ skewWarning: false,
67
+ changes: plan.changes,
68
+ restored: plan.restored,
69
+ skipped: plan.skipped,
70
+ warnings: plan.skipped.map(messages_1.formatSkippedWarning),
71
+ notice: null,
72
+ };
73
+ if (plan.skew.length > 0) {
74
+ if (!disabled && !treatSkewAsWarning && !checkOnly) {
75
+ throw new types_1.CliVersionTooOldError((0, messages_1.formatCliUpgradeError)(plan.skew, installCommand));
76
+ }
77
+ result.skewWarning = true;
78
+ result.warnings.push((0, messages_1.formatSkewWarning)(plan.skew, installCommand));
79
+ }
80
+ if (disabled) {
81
+ return result;
82
+ }
83
+ const hasPlannedChanges = plan.changes.length > 0 || plan.restored.length > 0;
84
+ if (checkOnly) {
85
+ // Report what WOULD change without touching the working tree (future-tense wording).
86
+ result.notice = (0, messages_1.formatSyncNotice)({
87
+ migratedFromCaret: result.migratedFromCaret,
88
+ changes: result.changes,
89
+ restored: result.restored,
90
+ reinstalled: false,
91
+ applied: false,
92
+ });
93
+ return result;
94
+ }
95
+ if (hasPlannedChanges) {
96
+ // Mutate the parsed manifest in place so user key order and unknown fields survive.
97
+ for (const change of plan.changes) {
98
+ (project[change.section] ??= {})[change.name] = change.to;
99
+ }
100
+ for (const restoredDep of plan.restored) {
101
+ const section = (project[restoredDep.section] ??= {});
102
+ section[restoredDep.name] = restoredDep.to;
103
+ }
104
+ try {
105
+ await (0, promises_1.writeFile)(projectPackageJsonPath, JSON.stringify(project, null, 2) + '\n', 'utf-8');
106
+ }
107
+ catch (err) {
108
+ throw new types_1.DependencySyncError(`Failed to update the CDK project's dependencies: ${String(err)}`, { cause: err });
109
+ }
110
+ }
111
+ // Install when the manifest changed OR node_modules is missing (e.g. the user deleted it, or
112
+ // `create --no-install` never populated it). npm >=7 reconciles the edited package.json
113
+ // against the existing lockfile incrementally, so we never delete node_modules or the
114
+ // lockfile: user-added deps keep their resolved versions and installs stay warm.
115
+ const needsInstall = hasPlannedChanges || !(0, node_fs_1.existsSync)((0, node_path_1.join)(projectDir, 'node_modules'));
116
+ if (!needsInstall) {
117
+ return result;
118
+ }
119
+ const installResult = await (0, subprocess_1.runSubprocessCapture)('npm', ['install'], { cwd: projectDir });
120
+ if (installResult.code !== 0) {
121
+ // Restore the pre-rewrite package.json before failing. Without this, the retry would see a
122
+ // manifest that already matches the pins and an existing node_modules (a failed install
123
+ // doesn't remove it), skip the install, and deploy against the stale installed tree — the
124
+ // exact skew this sync exists to prevent. Restoring makes the retry recompute the same plan
125
+ // and re-attempt the install. Best-effort: a restore failure must not mask the install error.
126
+ if (hasPlannedChanges) {
127
+ await (0, promises_1.writeFile)(projectPackageJsonPath, projectRaw, 'utf-8').catch(() => undefined);
128
+ }
129
+ throw new types_1.DependencySyncError(`npm install failed after updating managed dependencies (exit ${String(installResult.code)}): ${installResult.stderr}`);
130
+ }
131
+ result.reinstalled = true;
132
+ result.notice = (0, messages_1.formatSyncNotice)({
133
+ migratedFromCaret: result.migratedFromCaret,
134
+ changes: result.changes,
135
+ restored: result.restored,
136
+ reinstalled: result.reinstalled,
137
+ applied: true,
138
+ });
139
+ return result;
140
+ }
141
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/lib/dependency-management/sync.ts"],"names":[],"mappings":";;AAuDA,0DAkHC;AAzKD,2CAA6E;AAC7E,oDAA2D;AAC3D,yCAMoB;AACpB,iCAAyC;AAEzC,qCAAqC;AACrC,+CAAuD;AACvD,yCAAiC;AAEjC,KAAK,UAAU,YAAY,CACzB,IAAY,EACZ,eAAuB;IAEvB,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,2BAAmB,CAAC,kBAAkB,eAAe,OAAO,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,CAAC;QACH,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,EAAE,GAAG,EAAE,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,2BAAmB,CAAC,mBAAmB,eAAe,OAAO,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACjH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACI,KAAK,UAAU,uBAAuB,CAAC,OAAuC;IACnF,MAAM,EACJ,qBAAqB,EACrB,UAAU,EACV,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,OAAO,EACd,kBAAkB,GAAG,KAAK,EAC1B,cAAc,GAAG,sCAA2B,GAC7C,GAAG,OAAO,CAAC;IACZ,MAAM,SAAS,GAAG,IAAI,KAAK,OAAO,CAAC;IACnC,MAAM,sBAAsB,GAAG,IAAA,gBAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAEhE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,qBAAqB,EAAE,6BAA6B,CAAC,CAAC;IACtG,mFAAmF;IACnF,iFAAiF;IACjF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,CAC/D,sBAAsB,EACtB,gCAAgC,CACjC,CAAC;IAEF,MAAM,IAAI,GAAG,IAAA,sBAAe,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9C,sFAAsF;IACtF,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7E,MAAM,MAAM,GAAyB;QACnC,OAAO;QACP,QAAQ,EAAE,QAAQ;QAClB,SAAS;QACT,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,+BAAoB,CAAC;QAChD,MAAM,EAAE,IAAI;KACb,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,EAAE,CAAC;YACnD,MAAM,IAAI,6BAAqB,CAAC,IAAA,gCAAqB,EAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAA,4BAAiB,EAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAE9E,IAAI,SAAS,EAAE,CAAC;QACd,qFAAqF;QACrF,MAAM,CAAC,MAAM,GAAG,IAAA,2BAAgB,EAAC;YAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,oFAAoF;QACpF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;QAC5D,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAA,oBAAS,EAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,2BAAmB,CAAC,oDAAoD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACnH,CAAC;IACH,CAAC;IAED,6FAA6F;IAC7F,wFAAwF;IACxF,sFAAsF;IACtF,iFAAiF;IACjF,MAAM,YAAY,GAAG,iBAAiB,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IACxF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,IAAA,iCAAoB,EAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1F,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,2FAA2F;QAC3F,wFAAwF;QACxF,0FAA0F;QAC1F,4FAA4F;QAC5F,8FAA8F;QAC9F,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,IAAA,oBAAS,EAAC,sBAAsB,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,IAAI,2BAAmB,CAC3B,gEAAgE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,CACvH,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IAE1B,MAAM,CAAC,MAAM,GAAG,IAAA,2BAAgB,EAAC;QAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}