@lesliechan721/aw 0.1.0-beta.7 → 0.1.0-beta.9

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 (341) hide show
  1. package/dist/authoring/scripts/add-skill.mjs +4 -4
  2. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  3. package/dist/authoring/scripts/init-plugin.mjs +8 -37
  4. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  5. package/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
  6. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -90
  7. package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -120
  8. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  9. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  10. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  11. package/dist/authoring/scripts/remove-plugin.mjs +2 -1
  12. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
  13. package/dist/authoring/scripts/validate-plugin.mjs +64 -758
  14. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  15. package/dist/scripts/aw-skill-eval-materializer.d.ts +24 -0
  16. package/dist/scripts/{plugin-eval-materializer.js → aw-skill-eval-materializer.js} +34 -145
  17. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
  18. package/dist/scripts/bundle-plugins.d.ts +1 -0
  19. package/dist/scripts/bundle-plugins.js +2 -1
  20. package/dist/scripts/bundle-plugins.js.map +1 -1
  21. package/dist/scripts/plugin-staging.d.ts +6 -8
  22. package/dist/scripts/plugin-staging.js +15 -28
  23. package/dist/scripts/plugin-staging.js.map +1 -1
  24. package/dist/scripts/test-plugin-scripts.js +2 -33
  25. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  26. package/dist/src/adapters/helpers.js +2 -2
  27. package/dist/src/adapters/helpers.js.map +1 -1
  28. package/dist/src/authoring/workspace-commands.d.ts +17 -1
  29. package/dist/src/authoring/workspace-commands.js +21 -4
  30. package/dist/src/authoring/workspace-commands.js.map +1 -1
  31. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  32. package/dist/src/commands/aw-capabilities.js +254 -0
  33. package/dist/src/commands/aw-capabilities.js.map +1 -0
  34. package/dist/src/commands/catalog-dev-source.d.ts +118 -0
  35. package/dist/src/commands/catalog-dev-source.js +417 -0
  36. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  37. package/dist/src/commands/catalog-generation.d.ts +13 -0
  38. package/dist/src/commands/catalog-generation.js +13 -0
  39. package/dist/src/commands/catalog-generation.js.map +1 -0
  40. package/dist/src/commands/catalog-publication-inspection.d.ts +29 -28
  41. package/dist/src/commands/catalog-publication-inspection.js +138 -50
  42. package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
  43. package/dist/src/commands/catalog-publication-journal.d.ts +49 -0
  44. package/dist/src/commands/catalog-publication-journal.js +147 -0
  45. package/dist/src/commands/catalog-publication-journal.js.map +1 -0
  46. package/dist/src/commands/catalog-publication-target.d.ts +18 -0
  47. package/dist/src/commands/catalog-publication-target.js +95 -0
  48. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  49. package/dist/src/commands/catalog-publish.d.ts +58 -15
  50. package/dist/src/commands/catalog-publish.js +590 -210
  51. package/dist/src/commands/catalog-publish.js.map +1 -1
  52. package/dist/src/commands/catalog-source.d.ts +12 -15
  53. package/dist/src/commands/catalog-source.js +61 -86
  54. package/dist/src/commands/catalog-source.js.map +1 -1
  55. package/dist/src/commands/catalog-status.d.ts +18 -22
  56. package/dist/src/commands/catalog-status.js +81 -115
  57. package/dist/src/commands/catalog-status.js.map +1 -1
  58. package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
  59. package/dist/src/commands/catalog-workspace-resolution.js +42 -0
  60. package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
  61. package/dist/src/commands/dependency-operation-plan.d.ts +88 -9
  62. package/dist/src/commands/dependency-operation-plan.js +331 -6
  63. package/dist/src/commands/dependency-operation-plan.js.map +1 -1
  64. package/dist/src/commands/init.d.ts +5 -11
  65. package/dist/src/commands/init.js +30 -51
  66. package/dist/src/commands/init.js.map +1 -1
  67. package/dist/src/commands/offline-cleanup-evidence.d.ts +43 -0
  68. package/dist/src/commands/offline-cleanup-evidence.js +116 -0
  69. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  70. package/dist/src/commands/options.d.ts +7 -1
  71. package/dist/src/commands/options.js +65 -6
  72. package/dist/src/commands/options.js.map +1 -1
  73. package/dist/src/commands/plugin-capabilities.js +5 -1
  74. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  75. package/dist/src/commands/rebuild-command.d.ts +27 -13
  76. package/dist/src/commands/rebuild-command.js +1472 -471
  77. package/dist/src/commands/rebuild-command.js.map +1 -1
  78. package/dist/src/commands/rebuild-integration.d.ts +63 -8
  79. package/dist/src/commands/rebuild-integration.js +761 -439
  80. package/dist/src/commands/rebuild-integration.js.map +1 -1
  81. package/dist/src/commands/rebuild-operations.d.ts +2 -8
  82. package/dist/src/commands/rebuild-operations.js +48 -132
  83. package/dist/src/commands/rebuild-operations.js.map +1 -1
  84. package/dist/src/commands/runtime.js +21 -34
  85. package/dist/src/commands/runtime.js.map +1 -1
  86. package/dist/src/commands/skill-eval.d.ts +33 -0
  87. package/dist/src/commands/skill-eval.js +363 -0
  88. package/dist/src/commands/skill-eval.js.map +1 -0
  89. package/dist/src/commands/status-v6.d.ts +202 -0
  90. package/dist/src/commands/status-v6.js +1938 -0
  91. package/dist/src/commands/status-v6.js.map +1 -0
  92. package/dist/src/commands/sync-command.d.ts +21 -0
  93. package/dist/src/commands/sync-command.js +206 -0
  94. package/dist/src/commands/sync-command.js.map +1 -0
  95. package/dist/src/commands/wizard.d.ts +2 -2
  96. package/dist/src/commands/wizard.js +2 -2
  97. package/dist/src/commands/wizard.js.map +1 -1
  98. package/dist/src/commands/write-commands.js +33 -19
  99. package/dist/src/commands/write-commands.js.map +1 -1
  100. package/dist/src/constants.d.ts +7 -1
  101. package/dist/src/constants.js +7 -1
  102. package/dist/src/constants.js.map +1 -1
  103. package/dist/src/eval/manifest-v1.d.ts +66 -0
  104. package/dist/src/eval/manifest-v1.js +326 -0
  105. package/dist/src/eval/manifest-v1.js.map +1 -0
  106. package/dist/src/generators/local-plugin.d.ts +3 -0
  107. package/dist/src/generators/local-plugin.js +167 -45
  108. package/dist/src/generators/local-plugin.js.map +1 -1
  109. package/dist/src/index.d.ts +6 -1
  110. package/dist/src/index.js +863 -126
  111. package/dist/src/index.js.map +1 -1
  112. package/dist/src/output/command-receipt.d.ts +58 -8
  113. package/dist/src/output/command-receipt.js +141 -11
  114. package/dist/src/output/command-receipt.js.map +1 -1
  115. package/dist/src/output/model.d.ts +3 -44
  116. package/dist/src/output/model.js +1 -144
  117. package/dist/src/output/model.js.map +1 -1
  118. package/dist/src/output/rebuild-progress.js +0 -3
  119. package/dist/src/output/rebuild-progress.js.map +1 -1
  120. package/dist/src/portable/commands.d.ts +6 -2
  121. package/dist/src/portable/commands.js +57 -6
  122. package/dist/src/portable/commands.js.map +1 -1
  123. package/dist/src/portable/materializer.d.ts +4 -4
  124. package/dist/src/portable/materializer.js +61 -12
  125. package/dist/src/portable/materializer.js.map +1 -1
  126. package/dist/src/tui/catalog-generation.d.ts +35 -0
  127. package/dist/src/tui/catalog-generation.js +85 -0
  128. package/dist/src/tui/catalog-generation.js.map +1 -0
  129. package/dist/src/tui/components.js +1 -2
  130. package/dist/src/tui/components.js.map +1 -1
  131. package/dist/src/tui/console-app-v4.d.ts +1 -1
  132. package/dist/src/tui/console-app-v4.js +647 -196
  133. package/dist/src/tui/console-app-v4.js.map +1 -1
  134. package/dist/src/tui/controller-runtime.d.ts +6 -2
  135. package/dist/src/tui/controller-runtime.js +646 -137
  136. package/dist/src/tui/controller-runtime.js.map +1 -1
  137. package/dist/src/tui/controller.d.ts +77 -15
  138. package/dist/src/tui/controller.js +647 -306
  139. package/dist/src/tui/controller.js.map +1 -1
  140. package/dist/src/tui/diagnostics.d.ts +1 -2
  141. package/dist/src/tui/diagnostics.js.map +1 -1
  142. package/dist/src/tui/index.d.ts +1 -0
  143. package/dist/src/tui/index.js +1 -0
  144. package/dist/src/tui/index.js.map +1 -1
  145. package/dist/src/tui/input-display.d.ts +8 -0
  146. package/dist/src/tui/input-display.js +36 -0
  147. package/dist/src/tui/input-display.js.map +1 -0
  148. package/dist/src/tui/model.d.ts +102 -14
  149. package/dist/src/tui/model.js +630 -139
  150. package/dist/src/tui/model.js.map +1 -1
  151. package/dist/src/tui/router.d.ts +35 -0
  152. package/dist/src/tui/router.js.map +1 -1
  153. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  154. package/dist/src/tui/source-ref-presets.js +11 -0
  155. package/dist/src/tui/source-ref-presets.js.map +1 -0
  156. package/dist/src/tui/views.js +31 -3
  157. package/dist/src/tui/views.js.map +1 -1
  158. package/dist/src/types.d.ts +104 -13
  159. package/dist/src/types.js.map +1 -1
  160. package/dist/src/utils/agent-version.d.ts +7 -1
  161. package/dist/src/utils/agent-version.js +41 -8
  162. package/dist/src/utils/agent-version.js.map +1 -1
  163. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  164. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  165. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  166. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  167. package/dist/src/utils/bundle-integrity.js +0 -25
  168. package/dist/src/utils/bundle-integrity.js.map +1 -1
  169. package/dist/src/utils/bundle-layout.js +8 -6
  170. package/dist/src/utils/bundle-layout.js.map +1 -1
  171. package/dist/src/utils/catalog-digests.d.ts +7 -0
  172. package/dist/src/utils/catalog-digests.js +40 -2
  173. package/dist/src/utils/catalog-digests.js.map +1 -1
  174. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  175. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  176. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  177. package/dist/src/utils/catalog-generation-error.d.ts +13 -0
  178. package/dist/src/utils/catalog-generation-error.js +28 -0
  179. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  180. package/dist/src/utils/catalog-generation-resolver.d.ts +20 -0
  181. package/dist/src/utils/catalog-generation-resolver.js +143 -0
  182. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  183. package/dist/src/utils/catalog-generation-service.d.ts +43 -0
  184. package/dist/src/utils/catalog-generation-service.js +306 -0
  185. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  186. package/dist/src/utils/catalog-generation-state.d.ts +17 -0
  187. package/dist/src/utils/catalog-generation-state.js +168 -0
  188. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  189. package/dist/src/utils/catalog-generation-store.d.ts +34 -0
  190. package/dist/src/utils/catalog-generation-store.js +251 -0
  191. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  192. package/dist/src/utils/catalog-manifest-v6.d.ts +5 -0
  193. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v6.js} +35 -43
  194. package/dist/src/utils/catalog-manifest-v6.js.map +1 -0
  195. package/dist/src/utils/catalog-operation-context.d.ts +20 -0
  196. package/dist/src/utils/catalog-operation-context.js +141 -0
  197. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  198. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  199. package/dist/src/utils/catalog-public-error.js +21 -8
  200. package/dist/src/utils/catalog-public-error.js.map +1 -1
  201. package/dist/src/utils/catalog-runtime-projection.d.ts +3 -0
  202. package/dist/src/utils/catalog-runtime-projection.js +5 -40
  203. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  204. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  205. package/dist/src/utils/catalog-snapshot.js +11 -3
  206. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  207. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  208. package/dist/src/utils/catalog-source-identity.js +21 -2
  209. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  210. package/dist/src/utils/catalog-source-references.d.ts +7 -0
  211. package/dist/src/utils/catalog-source-references.js +44 -55
  212. package/dist/src/utils/catalog-source-references.js.map +1 -1
  213. package/dist/src/utils/catalog-sources.d.ts +1 -0
  214. package/dist/src/utils/catalog-sources.js +55 -20
  215. package/dist/src/utils/catalog-sources.js.map +1 -1
  216. package/dist/src/utils/codex-config.d.ts +2 -0
  217. package/dist/src/utils/codex-config.js +26 -5
  218. package/dist/src/utils/codex-config.js.map +1 -1
  219. package/dist/src/utils/codex-manager.d.ts +81 -0
  220. package/dist/src/utils/codex-manager.js +810 -0
  221. package/dist/src/utils/codex-manager.js.map +1 -0
  222. package/dist/src/utils/codex-reconciler.d.ts +131 -0
  223. package/dist/src/utils/codex-reconciler.js +327 -0
  224. package/dist/src/utils/codex-reconciler.js.map +1 -0
  225. package/dist/src/utils/codex-shared-native.d.ts +56 -0
  226. package/dist/src/utils/codex-shared-native.js +87 -0
  227. package/dist/src/utils/codex-shared-native.js.map +1 -0
  228. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  229. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  230. package/dist/src/utils/codex-surface-analysis.d.ts +44 -0
  231. package/dist/src/utils/codex-surface-analysis.js +247 -0
  232. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  233. package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
  234. package/dist/src/utils/dynamic-skill-tree.js +35 -5
  235. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  236. package/dist/src/utils/git-catalog-provider.js +66 -140
  237. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  238. package/dist/src/utils/lifecycle-active-store.d.ts +0 -28
  239. package/dist/src/utils/lifecycle-active-store.js +35 -247
  240. package/dist/src/utils/lifecycle-active-store.js.map +1 -1
  241. package/dist/src/utils/manifest.d.ts +1 -3
  242. package/dist/src/utils/manifest.js +1 -3
  243. package/dist/src/utils/manifest.js.map +1 -1
  244. package/dist/src/utils/multi-source-catalog.d.ts +3 -9
  245. package/dist/src/utils/multi-source-catalog.js +53 -110
  246. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  247. package/dist/src/utils/native-cli.d.ts +49 -6
  248. package/dist/src/utils/native-cli.js +116 -33
  249. package/dist/src/utils/native-cli.js.map +1 -1
  250. package/dist/src/utils/orphan-marketplace-cleanup.js +1 -3
  251. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  252. package/dist/src/utils/ownership.d.ts +10 -11
  253. package/dist/src/utils/ownership.js +55 -112
  254. package/dist/src/utils/ownership.js.map +1 -1
  255. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  256. package/dist/src/utils/path-catalog-provider.js +52 -65
  257. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  258. package/dist/src/utils/paths.d.ts +0 -1
  259. package/dist/src/utils/paths.js +0 -1
  260. package/dist/src/utils/paths.js.map +1 -1
  261. package/dist/src/utils/plugin-config-write.js +18 -40
  262. package/dist/src/utils/plugin-config-write.js.map +1 -1
  263. package/dist/src/utils/plugin-config.d.ts +1 -12
  264. package/dist/src/utils/plugin-config.js +107 -226
  265. package/dist/src/utils/plugin-config.js.map +1 -1
  266. package/dist/src/utils/plugin-intent-state.d.ts +39 -0
  267. package/dist/src/utils/plugin-intent-state.js +325 -0
  268. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  269. package/dist/src/utils/plugin-scripts.d.ts +1 -1
  270. package/dist/src/utils/plugin-scripts.js +1 -1
  271. package/dist/src/utils/plugin-scripts.js.map +1 -1
  272. package/dist/src/utils/state-paths.js +7 -2
  273. package/dist/src/utils/state-paths.js.map +1 -1
  274. package/dist/src/utils/target-eligibility.d.ts +8 -2
  275. package/dist/src/utils/target-eligibility.js +9 -5
  276. package/dist/src/utils/target-eligibility.js.map +1 -1
  277. package/package.json +6 -4
  278. package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
  279. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  280. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  281. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  282. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  283. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  284. package/dist/scripts/codex-eval-app-server.d.ts +0 -89
  285. package/dist/scripts/codex-eval-app-server.js +0 -1228
  286. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  287. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  288. package/dist/scripts/codex-eval-isolation.js +0 -318
  289. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  290. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  291. package/dist/scripts/codex-eval-process-management.js +0 -69
  292. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  293. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  294. package/dist/scripts/codex-eval-process-tree.js +0 -803
  295. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  296. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  297. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  298. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  299. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  300. package/dist/scripts/codex-trigger-eval.js +0 -968
  301. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  302. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  303. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  304. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  305. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  306. package/dist/scripts/eval-plugin-skills.js +0 -1586
  307. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  308. package/dist/scripts/eval-run-layout.d.ts +0 -17
  309. package/dist/scripts/eval-run-layout.js +0 -26
  310. package/dist/scripts/eval-run-layout.js.map +0 -1
  311. package/dist/scripts/plugin-eval-contract.d.ts +0 -185
  312. package/dist/scripts/plugin-eval-contract.js +0 -695
  313. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  314. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  315. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  316. package/dist/scripts/skill-reporting.d.ts +0 -212
  317. package/dist/scripts/skill-reporting.js +0 -922
  318. package/dist/scripts/skill-reporting.js.map +0 -1
  319. package/dist/src/commands/status-v4.d.ts +0 -123
  320. package/dist/src/commands/status-v4.js +0 -905
  321. package/dist/src/commands/status-v4.js.map +0 -1
  322. package/dist/src/commands/status.d.ts +0 -93
  323. package/dist/src/commands/status.js +0 -442
  324. package/dist/src/commands/status.js.map +0 -1
  325. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  326. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  327. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  328. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  329. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  330. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  331. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
  332. package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
  333. package/dist/src/utils/catalog-source-cache.d.ts +0 -62
  334. package/dist/src/utils/catalog-source-cache.js +0 -296
  335. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  336. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  337. package/dist/src/utils/codex-project-surface.js +0 -49
  338. package/dist/src/utils/codex-project-surface.js.map +0 -1
  339. package/dist/src/utils/plugin-release.d.ts +0 -2
  340. package/dist/src/utils/plugin-release.js +0 -2
  341. package/dist/src/utils/plugin-release.js.map +0 -1
@@ -0,0 +1,251 @@
1
+ import crypto from 'node:crypto';
2
+ import path from 'node:path';
3
+ import fs from 'fs-extra';
4
+ import { CATALOG_STORE_DIRECTORY, CATALOG_STORE_METADATA_FILE } from '../constants.js';
5
+ import { CatalogGenerationError } from './catalog-generation-error.js';
6
+ import { validateCatalogSnapshotTransport } from './catalog-snapshot.js';
7
+ import { normalizeAwCapabilities, parseStrictSemVer } from './manifest.js';
8
+ import { canonicalizePathThroughExistingAncestorSync, ensureRegularDirectoryPath, resolveAwHome, } from './state-paths.js';
9
+ const DIGEST_PATTERN = /^sha256:([0-9a-f]{64})$/u;
10
+ function metadataError(message, cause) {
11
+ return new CatalogGenerationError({
12
+ code: 'catalogGenerationMetadataInvalid',
13
+ message: `${message} Remove the damaged store entry and run aw catalog source sync.`,
14
+ cause,
15
+ });
16
+ }
17
+ function digestHex(value, name) {
18
+ const match = DIGEST_PATTERN.exec(value);
19
+ if (!match)
20
+ throw metadataError(`Invalid ${name}: expected a SHA-256 digest.`);
21
+ return match[1];
22
+ }
23
+ function logicalIdentitySegment(value) {
24
+ if (typeof value !== 'string' || value.trim() === '' || value !== value.trim()) {
25
+ throw metadataError('Invalid Catalog logical identity.');
26
+ }
27
+ try {
28
+ if (value === '.')
29
+ return '%2E';
30
+ if (value === '..')
31
+ return '%2E%2E';
32
+ const segment = encodeURIComponent(value);
33
+ if (segment === '.' || segment === '..' || /[\\/]/u.test(segment)) {
34
+ throw metadataError('Invalid Catalog logical identity.');
35
+ }
36
+ return segment;
37
+ }
38
+ catch (error) {
39
+ if (error instanceof CatalogGenerationError)
40
+ throw error;
41
+ throw metadataError('Invalid Catalog logical identity.', error);
42
+ }
43
+ }
44
+ function resolveStrictStoreDescendant(storeRootDir, ...segments) {
45
+ const candidate = path.resolve(storeRootDir, ...segments);
46
+ const relative = path.relative(storeRootDir, candidate);
47
+ if (relative === ''
48
+ || path.isAbsolute(relative)
49
+ || relative === '..'
50
+ || relative.startsWith(`..${path.sep}`))
51
+ throw metadataError('Invalid Catalog store path.');
52
+ return candidate;
53
+ }
54
+ export function createCatalogStoreKey(logicalIdentity, snapshotDigest) {
55
+ return `${logicalIdentitySegment(logicalIdentity)}/${digestHex(snapshotDigest, 'snapshot digest')}`;
56
+ }
57
+ export function resolveCatalogStoreLocation(options) {
58
+ const awHomeDir = canonicalizePathThroughExistingAncestorSync(resolveAwHome(options.env ?? process.env));
59
+ const storeRootDir = path.join(awHomeDir, CATALOG_STORE_DIRECTORY);
60
+ const logicalIdentity = logicalIdentitySegment(options.logicalIdentity);
61
+ const digest = digestHex(options.snapshotDigest, 'snapshot digest');
62
+ const storeKey = `${logicalIdentity}/${digest}`;
63
+ const logicalIdentityDirectory = resolveStrictStoreDescendant(storeRootDir, logicalIdentity);
64
+ const entryDir = resolveStrictStoreDescendant(storeRootDir, logicalIdentity, digest);
65
+ return {
66
+ awHomeDir,
67
+ storeRootDir,
68
+ logicalIdentityDirectory,
69
+ entryDir,
70
+ metadataPath: path.join(entryDir, CATALOG_STORE_METADATA_FILE),
71
+ snapshotRoot: path.join(entryDir, 'snapshot'),
72
+ storeKey,
73
+ };
74
+ }
75
+ function strictRecord(value, keys) {
76
+ if (!value || typeof value !== 'object' || Array.isArray(value))
77
+ return false;
78
+ const actual = Object.keys(value).sort();
79
+ const expected = [...keys].sort();
80
+ return actual.length === expected.length
81
+ && actual.every((key, index) => key === expected[index]);
82
+ }
83
+ function parseMetadata(value) {
84
+ if (!strictRecord(value, [
85
+ 'schemaVersion', 'logicalIdentity', 'catalogVersion', 'channel', 'manifestDigest',
86
+ 'snapshotDigest', 'requiredAwCapabilities',
87
+ ]))
88
+ throw metadataError('Invalid Catalog store metadata.');
89
+ if (value.schemaVersion !== 1
90
+ || typeof value.logicalIdentity !== 'string'
91
+ || value.logicalIdentity.trim() === ''
92
+ || value.logicalIdentity !== value.logicalIdentity.trim()
93
+ || typeof value.catalogVersion !== 'string'
94
+ || (value.channel !== 'latest' && value.channel !== 'beta')
95
+ || typeof value.manifestDigest !== 'string'
96
+ || !DIGEST_PATTERN.test(value.manifestDigest)
97
+ || typeof value.snapshotDigest !== 'string'
98
+ || !DIGEST_PATTERN.test(value.snapshotDigest)
99
+ || !Array.isArray(value.requiredAwCapabilities)
100
+ || value.requiredAwCapabilities.some((entry) => typeof entry !== 'string'))
101
+ throw metadataError('Invalid Catalog store metadata.');
102
+ try {
103
+ parseStrictSemVer(value.catalogVersion, 'Catalog store catalogVersion');
104
+ if (JSON.stringify(normalizeAwCapabilities(value.requiredAwCapabilities))
105
+ !== JSON.stringify(value.requiredAwCapabilities)) {
106
+ throw new Error('Capabilities are not normalized.');
107
+ }
108
+ }
109
+ catch (error) {
110
+ throw metadataError('Invalid Catalog store metadata.', error);
111
+ }
112
+ return value;
113
+ }
114
+ export async function readCatalogSnapshotLogicalIdentity(snapshotRoot) {
115
+ try {
116
+ const markerPath = path.join(snapshotRoot, '.aw-generated.json');
117
+ const stat = await fs.lstat(markerPath).catch((error) => {
118
+ if (error.code === 'ENOENT')
119
+ return null;
120
+ throw error;
121
+ });
122
+ if (!stat?.isFile() || stat.isSymbolicLink())
123
+ throw metadataError('Catalog marker is missing or unsafe.');
124
+ const marker = await fs.readJson(markerPath);
125
+ if (!strictRecord(marker, ['schemaVersion', 'kind', 'workspaceIdentity', 'sourceIdentity'])
126
+ || marker.schemaVersion !== 1
127
+ || marker.kind !== 'catalog'
128
+ || typeof marker.workspaceIdentity !== 'string'
129
+ || marker.workspaceIdentity.trim() === '') {
130
+ throw metadataError('Catalog marker is invalid.');
131
+ }
132
+ return marker.workspaceIdentity;
133
+ }
134
+ catch (error) {
135
+ if (error instanceof CatalogGenerationError)
136
+ throw error;
137
+ throw metadataError('Catalog marker is unreadable.', error);
138
+ }
139
+ }
140
+ async function validateEntry(options) {
141
+ try {
142
+ const stat = await fs.lstat(options.location.entryDir).catch((error) => {
143
+ if (error.code === 'ENOENT')
144
+ return null;
145
+ throw error;
146
+ });
147
+ if (!stat?.isDirectory() || stat.isSymbolicLink())
148
+ throw metadataError('Catalog store entry is missing or unsafe.');
149
+ const metadataStat = await fs.lstat(options.location.metadataPath).catch((error) => error.code === 'ENOENT' ? null : Promise.reject(error));
150
+ if (!metadataStat?.isFile() || metadataStat.isSymbolicLink()) {
151
+ throw metadataError('Catalog store metadata is missing or unsafe.');
152
+ }
153
+ const metadata = parseMetadata(await fs.readJson(options.location.metadataPath));
154
+ const validation = await validateCatalogSnapshotTransport(options.location.snapshotRoot)
155
+ .catch((error) => { throw metadataError('Catalog store snapshot is damaged.', error); });
156
+ if (createCatalogStoreKey(metadata.logicalIdentity, metadata.snapshotDigest) !== options.location.storeKey
157
+ || validation.manifestDigest !== metadata.manifestDigest
158
+ || validation.snapshotDigest !== metadata.snapshotDigest
159
+ || validation.manifest.catalogVersion !== metadata.catalogVersion
160
+ || validation.manifest.channel !== metadata.channel
161
+ || JSON.stringify(normalizeAwCapabilities(validation.manifest.requires.aw.capabilities ?? []))
162
+ !== JSON.stringify(metadata.requiredAwCapabilities)
163
+ || await readCatalogSnapshotLogicalIdentity(options.location.snapshotRoot) !== metadata.logicalIdentity)
164
+ throw metadataError('Catalog store content does not match its immutable identity.');
165
+ return {
166
+ entryDir: options.location.entryDir,
167
+ snapshotRoot: options.location.snapshotRoot,
168
+ metadata,
169
+ manifest: validation.manifest,
170
+ reused: true,
171
+ };
172
+ }
173
+ catch (error) {
174
+ if (error instanceof CatalogGenerationError)
175
+ throw error;
176
+ throw metadataError('Catalog store entry is unreadable.', error);
177
+ }
178
+ }
179
+ export async function publishCatalogStoreEntry(options) {
180
+ options.signal?.throwIfAborted();
181
+ const logicalIdentity = await readCatalogSnapshotLogicalIdentity(options.resolution.rootDir);
182
+ const location = resolveCatalogStoreLocation({
183
+ logicalIdentity,
184
+ snapshotDigest: options.resolution.snapshotDigest,
185
+ env: options.env,
186
+ });
187
+ await ensureRegularDirectoryPath(location.storeRootDir, 'Catalog store');
188
+ await ensureRegularDirectoryPath(location.logicalIdentityDirectory, 'Catalog logical identity store');
189
+ if (await fs.pathExists(location.entryDir))
190
+ return validateEntry({ location });
191
+ const stagingDir = resolveStrictStoreDescendant(location.storeRootDir, path.basename(location.logicalIdentityDirectory), `.staging-${crypto.randomUUID()}.tmp`);
192
+ try {
193
+ await fs.mkdir(stagingDir);
194
+ const snapshotRoot = path.join(stagingDir, 'snapshot');
195
+ await fs.copy(options.resolution.rootDir, snapshotRoot, {
196
+ dereference: false,
197
+ preserveTimestamps: true,
198
+ filter: () => {
199
+ options.signal?.throwIfAborted();
200
+ return true;
201
+ },
202
+ });
203
+ const validation = await validateCatalogSnapshotTransport(snapshotRoot);
204
+ if (validation.manifestDigest !== options.resolution.manifestDigest
205
+ || validation.snapshotDigest !== options.resolution.snapshotDigest
206
+ || await readCatalogSnapshotLogicalIdentity(snapshotRoot) !== logicalIdentity)
207
+ throw new CatalogGenerationError({
208
+ code: 'catalogGenerationPublishFailed',
209
+ sourceId: options.resolution.sourceId,
210
+ message: `Catalog source "${options.resolution.sourceId}" changed before store publication. Run source sync again.`,
211
+ });
212
+ const metadata = {
213
+ schemaVersion: 1,
214
+ logicalIdentity,
215
+ catalogVersion: validation.manifest.catalogVersion,
216
+ channel: validation.manifest.channel,
217
+ manifestDigest: validation.manifestDigest,
218
+ snapshotDigest: validation.snapshotDigest,
219
+ requiredAwCapabilities: normalizeAwCapabilities(validation.manifest.requires.aw.capabilities ?? []),
220
+ };
221
+ await fs.writeFile(path.join(stagingDir, CATALOG_STORE_METADATA_FILE), `${JSON.stringify(metadata, null, 2)}\n`, { flag: 'wx', mode: 0o600 });
222
+ options.signal?.throwIfAborted();
223
+ try {
224
+ await fs.rename(stagingDir, location.entryDir);
225
+ }
226
+ catch (error) {
227
+ const code = error.code;
228
+ if (code !== 'EEXIST' && code !== 'ENOTEMPTY')
229
+ throw error;
230
+ return validateEntry({ location });
231
+ }
232
+ return { entryDir: location.entryDir, snapshotRoot: location.snapshotRoot, metadata, manifest: validation.manifest, reused: false };
233
+ }
234
+ catch (error) {
235
+ if (error instanceof CatalogGenerationError)
236
+ throw error;
237
+ throw new CatalogGenerationError({
238
+ code: 'catalogGenerationPublishFailed',
239
+ sourceId: options.resolution.sourceId,
240
+ message: `Cannot publish Catalog store entry for source "${options.resolution.sourceId}". The previous Active entry is unchanged.`,
241
+ cause: error,
242
+ });
243
+ }
244
+ finally {
245
+ await fs.remove(stagingDir).catch(() => undefined);
246
+ }
247
+ }
248
+ export async function readCatalogStoreEntry(options) {
249
+ return validateEntry({ location: resolveCatalogStoreLocation(options) });
250
+ }
251
+ //# sourceMappingURL=catalog-generation-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-generation-store.js","sourceRoot":"","sources":["../../../src/utils/catalog-generation-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { CatalogManifestV6, CatalogManifestV6Entry, PluginMeta } from '../types.js';
2
+ export declare const CATALOG_SCHEMA_6_CAPABILITY = "aw.catalog-snapshot.v6";
3
+ export declare function validateCatalogManifestV6(rawManifest: unknown): CatalogManifestV6;
4
+ export declare function createCatalogManifestV6(manifest: Omit<CatalogManifestV6, 'schemaVersion'>): CatalogManifestV6;
5
+ export declare function createCatalogManifestV6Entry(plugin: PluginMeta, pluginRoot: string): Promise<CatalogManifestV6Entry>;
@@ -1,8 +1,10 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'node:path';
1
3
  import { calculateCatalogEntryArtifactDigest, calculateCatalogEntryContentDigest, calculateCatalogEntryManifestDigest, } from './catalog-digests.js';
2
- import { createMarketplaceManifestEntry, normalizeCatalogManifestBase, normalizeCatalogManifestEntries, normalizeCatalogMarketplaceIdentity, compareStrictSemVer, } from './manifest.js';
4
+ import { createMarketplaceManifestEntry, normalizeCatalogManifestBase, normalizeCatalogManifestEntries, normalizeCatalogMarketplaceIdentity, normalizeAwCapabilities, } from './manifest.js';
3
5
  const DIGEST_PATTERN = /^sha256:[0-9a-f]{64}$/;
4
6
  const SOURCE_HEAD_PATTERN = /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/;
5
- export const CATALOG_SCHEMA_4_CLI_FLOOR = '0.0.0';
7
+ export const CATALOG_SCHEMA_6_CAPABILITY = 'aw.catalog-snapshot.v6';
6
8
  function assertObject(value, fieldName) {
7
9
  if (typeof value !== 'object' || value === null || Array.isArray(value)) {
8
10
  throw new Error(`Invalid ${fieldName}: expected an object.`);
@@ -22,85 +24,75 @@ function digest(value, fieldName) {
22
24
  return value;
23
25
  }
24
26
  function normalizeRelease(raw) {
25
- const release = assertObject(raw, 'catalog manifest v4.release');
27
+ const release = assertObject(raw, 'catalog manifest v6.release');
26
28
  if (release.state === 'development') {
27
- assertAllowedKeys(release, 'catalog manifest v4.release', ['state']);
29
+ assertAllowedKeys(release, 'catalog manifest v6.release', ['state']);
28
30
  return { state: 'development' };
29
31
  }
30
32
  if (release.state !== 'published') {
31
- throw new Error('Invalid catalog manifest v4.release.state.');
32
- }
33
- assertAllowedKeys(release, 'catalog manifest v4.release', [
34
- 'state', 'targetVersion', 'planId', 'sourceHead', 'contentDigest',
35
- ]);
36
- if (typeof release.targetVersion !== 'string' || !/^\d+\.\d+\.\d+$/u.test(release.targetVersion)) {
37
- throw new Error('Invalid catalog manifest v4.release.targetVersion: expected a stable version.');
33
+ throw new Error('Invalid catalog manifest v6.release.state.');
38
34
  }
35
+ assertAllowedKeys(release, 'catalog manifest v6.release', ['state', 'sourceHead']);
39
36
  if (typeof release.sourceHead !== 'string' || !SOURCE_HEAD_PATTERN.test(release.sourceHead)) {
40
- throw new Error('Invalid catalog manifest v4.release.sourceHead.');
37
+ throw new Error('Invalid catalog manifest v6.release.sourceHead.');
41
38
  }
42
39
  return {
43
40
  state: 'published',
44
- targetVersion: release.targetVersion,
45
- planId: digest(release.planId, 'catalog manifest v4.release.planId'),
46
41
  sourceHead: release.sourceHead,
47
- contentDigest: digest(release.contentDigest, 'catalog manifest v4.release.contentDigest'),
48
42
  };
49
43
  }
50
- export function validateCatalogManifestV4(rawManifest) {
51
- const input = assertObject(rawManifest, 'catalog manifest v4');
52
- assertAllowedKeys(input, 'catalog manifest v4', [
53
- 'schemaVersion', 'catalogVersion', 'channel', 'compatibility', 'marketplace', 'release', 'entries',
44
+ export function validateCatalogManifestV6(rawManifest) {
45
+ const input = assertObject(rawManifest, 'catalog manifest v6');
46
+ assertAllowedKeys(input, 'catalog manifest v6', [
47
+ 'schemaVersion', 'catalogVersion', 'channel', 'requires', 'marketplace', 'release', 'entries',
54
48
  ]);
55
- if (input.schemaVersion !== 4) {
56
- throw new Error('Invalid catalog manifest v4.schemaVersion: expected 4.');
49
+ if (input.schemaVersion !== 6) {
50
+ throw new Error('Invalid catalog manifest v6.schemaVersion: expected 6.');
57
51
  }
58
52
  if (!Array.isArray(input.entries)) {
59
- throw new Error('Invalid catalog manifest v4.entries: expected an array.');
53
+ throw new Error('Invalid catalog manifest v6.entries: expected an array.');
60
54
  }
61
55
  const contentDigests = [];
62
56
  const entryInputs = input.entries.map((rawEntry, index) => {
63
- const entry = assertObject(rawEntry, `catalog manifest v4.entries[${index}]`);
64
- contentDigests.push(digest(entry.contentDigest, `catalog manifest v4.entries[${index}].contentDigest`));
57
+ const entry = assertObject(rawEntry, `catalog manifest v6.entries[${index}]`);
58
+ contentDigests.push(digest(entry.contentDigest, `catalog manifest v6.entries[${index}].contentDigest`));
65
59
  const entryInput = { ...entry };
66
60
  delete entryInput.contentDigest;
67
61
  return entryInput;
68
62
  });
69
- const base = normalizeCatalogManifestBase(input, 'catalog manifest v4');
63
+ const base = normalizeCatalogManifestBase(input, 'catalog manifest v6');
70
64
  const marketplace = normalizeCatalogMarketplaceIdentity(input.marketplace);
71
- if (compareStrictSemVer(base.compatibility.aw.minVersion, CATALOG_SCHEMA_4_CLI_FLOOR) < 0) {
72
- throw new Error(`Invalid catalog manifest v4.compatibility.aw.minVersion: schema 4 requires ${CATALOG_SCHEMA_4_CLI_FLOOR} or newer.`);
65
+ if (!(base.requires.aw.capabilities ?? []).includes(CATALOG_SCHEMA_6_CAPABILITY)) {
66
+ throw new Error(`Invalid catalog manifest v6.requires.aw.capabilities: expected ${CATALOG_SCHEMA_6_CAPABILITY}.`);
73
67
  }
74
- const entries = normalizeCatalogManifestEntries(entryInputs, base, 'catalog manifest v4');
68
+ const entries = normalizeCatalogManifestEntries(entryInputs, base, 'catalog manifest v6');
75
69
  const release = normalizeRelease(input.release);
76
- if (release.state === 'published'
77
- && release.targetVersion !== base.catalogVersion.replace(/-beta\.[1-9]\d*$/u, '')) {
78
- throw new Error('Invalid catalog manifest v4.release.targetVersion: must equal the stable catalogVersion core.');
79
- }
80
70
  return {
81
- schemaVersion: 4,
71
+ schemaVersion: 6,
82
72
  catalogVersion: base.catalogVersion,
83
73
  channel: base.channel,
84
- compatibility: base.compatibility,
74
+ requires: base.requires,
85
75
  marketplace,
86
76
  release,
87
77
  entries: entries.map((entry, index) => ({ ...entry, contentDigest: contentDigests[index] })),
88
78
  };
89
79
  }
90
- export function createCatalogManifestV4(manifest) {
91
- return validateCatalogManifestV4({ schemaVersion: 4, ...manifest });
80
+ export function createCatalogManifestV6(manifest) {
81
+ return validateCatalogManifestV6({ schemaVersion: 6, ...manifest });
92
82
  }
93
- export async function createCatalogManifestV4Entry(plugin, pluginRoot) {
94
- if (!plugin.manifest.compatibility) {
95
- throw new Error(`Plugin "${plugin.manifest.name}" is missing compatibility metadata.`);
96
- }
83
+ export async function createCatalogManifestV6Entry(plugin, pluginRoot) {
97
84
  return {
98
85
  ...createMarketplaceManifestEntry(plugin),
99
86
  version: plugin.manifest.version,
100
- compatibility: plugin.manifest.compatibility,
87
+ dependencies: [...(plugin.manifest.dependencies ?? [])].sort(),
88
+ requires: {
89
+ aw: {
90
+ capabilities: normalizeAwCapabilities(plugin.manifest.requires?.aw.capabilities ?? []),
91
+ },
92
+ },
101
93
  artifactDigest: await calculateCatalogEntryArtifactDigest(pluginRoot),
102
- manifestDigest: calculateCatalogEntryManifestDigest(plugin.manifest),
94
+ manifestDigest: calculateCatalogEntryManifestDigest(await fs.readJson(path.join(pluginRoot, '.agents-plugin', 'plugin.json'))),
103
95
  contentDigest: await calculateCatalogEntryContentDigest(pluginRoot),
104
96
  };
105
97
  }
106
- //# sourceMappingURL=catalog-manifest-v4.js.map
98
+ //# sourceMappingURL=catalog-manifest-v6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-manifest-v6.js","sourceRoot":"","sources":["../../../src/utils/catalog-manifest-v6.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { CatalogGenerationSet, CatalogSourceId } from '../types.js';
2
+ import type { CatalogStoreEntry } from './catalog-generation-store.js';
3
+ import type { CatalogSourcesConfigSnapshot } from './catalog-sources.js';
4
+ import type { MultiSourceCatalogResolution } from './multi-source-catalog.js';
5
+ export interface CatalogOperationContext {
6
+ generationSet: CatalogGenerationSet;
7
+ generationSetDigest: string;
8
+ catalog: MultiSourceCatalogResolution;
9
+ }
10
+ export interface ResolveCatalogOperationContextOptions {
11
+ sourceIds?: CatalogSourceId[];
12
+ configSnapshot?: CatalogSourcesConfigSnapshot;
13
+ env?: NodeJS.ProcessEnv;
14
+ signal?: AbortSignal;
15
+ validatedStoreEntries?: Map<string, CatalogStoreEntry>;
16
+ validatingStoreEntries?: Map<string, Promise<CatalogStoreEntry>>;
17
+ }
18
+ export declare function selectCatalogOperationContext(context: CatalogOperationContext, sourceIds: CatalogSourceId[]): CatalogOperationContext;
19
+ export declare function resolveCatalogOperationContext(options?: ResolveCatalogOperationContextOptions): Promise<CatalogOperationContext>;
20
+ export declare function resolvePartialCatalogOperationContext(options?: ResolveCatalogOperationContextOptions): Promise<CatalogOperationContext>;
@@ -0,0 +1,141 @@
1
+ import { CatalogGenerationError } from './catalog-generation-error.js';
2
+ import { calculateCatalogGenerationSetDigest, resolveCatalogGenerationSet, } from './catalog-generation-resolver.js';
3
+ import { readCatalogGenerationControlSnapshot, } from './catalog-generation-control-snapshot.js';
4
+ export function selectCatalogOperationContext(context, sourceIds) {
5
+ const requested = new Set(sourceIds);
6
+ const missing = sourceIds.find((sourceId) => !context.generationSet.sources.some((source) => source.sourceId === sourceId));
7
+ if (missing)
8
+ throw new CatalogGenerationError({
9
+ code: 'catalogGenerationUnavailable',
10
+ sourceId: missing,
11
+ message: `Catalog source "${missing}" was unavailable when this operation context was bound. Run aw catalog source sync ${missing}, then retry.`,
12
+ });
13
+ const sources = context.generationSet.sources.filter((source) => requested.has(source.sourceId));
14
+ const generationSetDigest = calculateCatalogGenerationSetDigest(context.generationSet.configDigest, context.generationSet.primarySourceId, sources);
15
+ return {
16
+ generationSet: { ...context.generationSet, sources, generationSetDigest },
17
+ generationSetDigest,
18
+ catalog: {
19
+ ...context.catalog,
20
+ sources: context.catalog.sources.filter((source) => requested.has(source.sourceId)),
21
+ compositeDigest: generationSetDigest,
22
+ },
23
+ };
24
+ }
25
+ function selectedSourceIds(snapshot, sourceIds) {
26
+ if (!sourceIds)
27
+ return snapshot.config.sources.map((source) => source.id);
28
+ const configured = new Set(snapshot.config.sources.map((source) => source.id));
29
+ const unknown = sourceIds.find((sourceId) => !configured.has(sourceId));
30
+ if (unknown)
31
+ throw new CatalogGenerationError({
32
+ code: 'catalogGenerationSourceMissing',
33
+ sourceId: unknown,
34
+ message: `Catalog source "${unknown}" is not configured.`,
35
+ });
36
+ const requested = new Set(sourceIds);
37
+ return snapshot.config.sources.filter((source) => requested.has(source.id)).map((source) => source.id);
38
+ }
39
+ async function createContext(options) {
40
+ const configured = new Map(options.control.configSnapshot.config.sources.map((source) => [source.id, source]));
41
+ const sources = options.generationSet.sources.map((generation) => {
42
+ options.signal?.throwIfAborted();
43
+ const source = configured.get(generation.sourceId);
44
+ const active = options.control.generationState.sources[generation.sourceId]?.active;
45
+ if (!source || !active
46
+ || active.snapshotDigest !== generation.snapshotDigest
47
+ || active.sourceIdentity !== generation.sourceIdentity) {
48
+ throw new CatalogGenerationError({
49
+ code: 'catalogGenerationIdentityMismatch',
50
+ sourceId: generation.sourceId,
51
+ message: `Active Catalog snapshot for source "${generation.sourceId}" changed while the operation context was being resolved. Retry the operation.`,
52
+ });
53
+ }
54
+ const resolution = {
55
+ sourceId: generation.sourceId,
56
+ sourceIdentity: generation.sourceIdentity,
57
+ requestedRef: active.requestedRef,
58
+ resolvedCommit: generation.resolvedCommit,
59
+ rootDir: generation.snapshotPath,
60
+ manifest: generation.manifest,
61
+ manifestDigest: generation.manifestDigest,
62
+ snapshotDigest: generation.snapshotDigest,
63
+ transport: source.type,
64
+ async cleanup() { },
65
+ };
66
+ return { sourceId: generation.sourceId, resolution };
67
+ });
68
+ return {
69
+ generationSet: options.generationSet,
70
+ generationSetDigest: options.generationSet.generationSetDigest,
71
+ catalog: {
72
+ sources,
73
+ primarySourceId: options.generationSet.primarySourceId,
74
+ configDigest: options.generationSet.configDigest,
75
+ compositeDigest: options.generationSet.generationSetDigest,
76
+ },
77
+ };
78
+ }
79
+ export async function resolveCatalogOperationContext(options = {}) {
80
+ const env = options.env ?? process.env;
81
+ options.signal?.throwIfAborted();
82
+ const control = await readCatalogGenerationControlSnapshot({
83
+ env,
84
+ configSnapshot: options.configSnapshot,
85
+ });
86
+ const generationSet = await resolveCatalogGenerationSet({
87
+ sourceIds: selectedSourceIds(control.configSnapshot, options.sourceIds),
88
+ env,
89
+ controlSnapshot: control,
90
+ validatedStoreEntries: options.validatedStoreEntries,
91
+ validatingStoreEntries: options.validatingStoreEntries,
92
+ });
93
+ return createContext({ generationSet, control, signal: options.signal });
94
+ }
95
+ export async function resolvePartialCatalogOperationContext(options = {}) {
96
+ const env = options.env ?? process.env;
97
+ const control = await readCatalogGenerationControlSnapshot({
98
+ env,
99
+ configSnapshot: options.configSnapshot,
100
+ });
101
+ const sourceIds = selectedSourceIds(control.configSnapshot, options.sourceIds);
102
+ const results = await Promise.all(sourceIds.map(async (sourceId) => {
103
+ try {
104
+ const generationSet = await resolveCatalogGenerationSet({
105
+ sourceIds: [sourceId],
106
+ env,
107
+ controlSnapshot: control,
108
+ validatedStoreEntries: options.validatedStoreEntries,
109
+ validatingStoreEntries: options.validatingStoreEntries,
110
+ });
111
+ return { sourceId, context: await createContext({ generationSet, control, signal: options.signal }) };
112
+ }
113
+ catch (error) {
114
+ if (options.signal?.aborted)
115
+ throw error;
116
+ return { sourceId, error: error };
117
+ }
118
+ }));
119
+ const sources = results.flatMap((result) => result.context?.generationSet.sources ?? [])
120
+ .sort((left, right) => left.sourceId.localeCompare(right.sourceId));
121
+ const primarySourceId = control.configSnapshot.config.sources.find((source) => source.primary).id;
122
+ const generationSetDigest = calculateCatalogGenerationSetDigest(control.configSnapshot.digest, primarySourceId, sources);
123
+ return {
124
+ generationSet: {
125
+ generationSetDigest,
126
+ configDigest: control.configSnapshot.digest,
127
+ primarySourceId,
128
+ sources,
129
+ },
130
+ generationSetDigest,
131
+ catalog: {
132
+ sources: results.map((result) => result.context
133
+ ? result.context.catalog.sources[0]
134
+ : { sourceId: result.sourceId, error: result.error }),
135
+ primarySourceId,
136
+ configDigest: control.configSnapshot.digest,
137
+ compositeDigest: generationSetDigest,
138
+ },
139
+ };
140
+ }
141
+ //# sourceMappingURL=catalog-operation-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-operation-context.js","sourceRoot":"","sources":["../../../src/utils/catalog-operation-context.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
- export type CatalogProviderCompatibilityErrorCode = 'awVersionTooLow' | 'explicitCatalogIncompatible';
1
+ export type CatalogProviderCompatibilityErrorCode = 'awCapabilityUnsupported';
2
2
  export declare class CatalogProviderCompatibilityError extends Error {
3
3
  readonly sourceId: string;
4
4
  readonly code: CatalogProviderCompatibilityErrorCode;
5
+ readonly requiredCapabilities: string[];
6
+ readonly missingCapabilities: string[];
7
+ readonly availableCapabilities: string[];
5
8
  constructor(options: {
6
9
  sourceId: string;
7
- minAwVersion: string;
8
- selection: 'cliChannel' | 'explicit';
10
+ requiredCapabilities: readonly string[];
11
+ missingCapabilities: readonly string[];
12
+ availableCapabilities: readonly string[];
9
13
  });
10
14
  }
11
15
  export declare function sanitizeCatalogSourceErrorMessage(message: string, env?: NodeJS.ProcessEnv, sensitiveRoots?: readonly string[]): string;