@lesliechan721/aw 0.1.0-beta.6 → 0.1.0-beta.60

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 (621) hide show
  1. package/dist/authoring/assets/aw-config.mjs +100 -501
  2. package/dist/authoring/assets/aw-config.mjs.map +1 -1
  3. package/dist/authoring/assets/aw-runtime-config.d.mts +13 -0
  4. package/dist/authoring/assets/aw-runtime-config.mjs +199 -0
  5. package/dist/authoring/assets/aw-runtime-config.mjs.map +1 -0
  6. package/dist/authoring/scripts/add-skill.mjs +4 -4
  7. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  8. package/dist/authoring/scripts/init-plugin.mjs +67 -97
  9. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  10. package/dist/authoring/scripts/lib/plugin-root.mjs +4 -4
  11. package/dist/authoring/scripts/lib/plugin-root.mjs.map +1 -1
  12. package/dist/authoring/scripts/lib/plugin-version-check.d.mts +1 -0
  13. package/dist/authoring/scripts/lib/plugin-version-check.mjs +229 -8
  14. package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
  15. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -92
  16. package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -124
  17. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  18. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  19. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  20. package/dist/authoring/scripts/remove-plugin.mjs +3 -2
  21. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
  22. package/dist/authoring/scripts/validate-plugin.mjs +552 -1142
  23. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  24. package/dist/native-runtime/reader-runtime.mjs +34 -0
  25. package/dist/native-runtime/reader.d.mts +6 -0
  26. package/dist/native-runtime/reader.mjs +11 -0
  27. package/dist/scripts/aw-skill-eval-materializer.d.ts +26 -0
  28. package/dist/scripts/aw-skill-eval-materializer.js +306 -0
  29. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
  30. package/dist/scripts/bundle-plugins.d.ts +1 -0
  31. package/dist/scripts/bundle-plugins.js +19 -8
  32. package/dist/scripts/bundle-plugins.js.map +1 -1
  33. package/dist/scripts/plugin-staging.d.ts +7 -9
  34. package/dist/scripts/plugin-staging.js +18 -29
  35. package/dist/scripts/plugin-staging.js.map +1 -1
  36. package/dist/scripts/plugin-test-reporter.d.mts +2 -0
  37. package/dist/scripts/plugin-test-reporter.mjs +21 -0
  38. package/dist/scripts/plugin-test-reporter.mjs.map +1 -0
  39. package/dist/scripts/test-plugin-scripts.d.ts +5 -0
  40. package/dist/scripts/test-plugin-scripts.js +208 -89
  41. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  42. package/dist/scripts/test-workers.d.mts +24 -0
  43. package/dist/scripts/test-workers.mjs +59 -0
  44. package/dist/scripts/test-workers.mjs.map +1 -0
  45. package/dist/src/adapters/helpers.d.ts +7 -0
  46. package/dist/src/adapters/helpers.js +2 -2
  47. package/dist/src/adapters/helpers.js.map +1 -1
  48. package/dist/src/authoring/workspace-commands.d.ts +19 -1
  49. package/dist/src/authoring/workspace-commands.js +24 -5
  50. package/dist/src/authoring/workspace-commands.js.map +1 -1
  51. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  52. package/dist/src/commands/aw-capabilities.js +266 -0
  53. package/dist/src/commands/aw-capabilities.js.map +1 -0
  54. package/dist/src/commands/catalog-dev-source.d.ts +154 -0
  55. package/dist/src/commands/catalog-dev-source.js +655 -0
  56. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  57. package/dist/src/commands/catalog-generation.d.ts +21 -0
  58. package/dist/src/commands/catalog-generation.js +9 -0
  59. package/dist/src/commands/catalog-generation.js.map +1 -0
  60. package/dist/src/commands/catalog-publication-inspection.d.ts +71 -30
  61. package/dist/src/commands/catalog-publication-inspection.js +475 -63
  62. package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
  63. package/dist/src/commands/catalog-publication-journal.d.ts +68 -0
  64. package/dist/src/commands/catalog-publication-journal.js +292 -0
  65. package/dist/src/commands/catalog-publication-journal.js.map +1 -0
  66. package/dist/src/commands/catalog-publication-target.d.ts +18 -0
  67. package/dist/src/commands/catalog-publication-target.js +95 -0
  68. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  69. package/dist/src/commands/catalog-publish.d.ts +73 -15
  70. package/dist/src/commands/catalog-publish.js +701 -212
  71. package/dist/src/commands/catalog-publish.js.map +1 -1
  72. package/dist/src/commands/catalog-source.d.ts +60 -22
  73. package/dist/src/commands/catalog-source.js +311 -91
  74. package/dist/src/commands/catalog-source.js.map +1 -1
  75. package/dist/src/commands/catalog-status.d.ts +18 -22
  76. package/dist/src/commands/catalog-status.js +81 -115
  77. package/dist/src/commands/catalog-status.js.map +1 -1
  78. package/dist/src/commands/catalog-store.d.ts +104 -0
  79. package/dist/src/commands/catalog-store.js +685 -0
  80. package/dist/src/commands/catalog-store.js.map +1 -0
  81. package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
  82. package/dist/src/commands/catalog-workspace-resolution.js +42 -0
  83. package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
  84. package/dist/src/commands/console.js +28 -17
  85. package/dist/src/commands/console.js.map +1 -1
  86. package/dist/src/commands/dependency-operation-plan.d.ts +52 -15
  87. package/dist/src/commands/dependency-operation-plan.js +289 -7
  88. package/dist/src/commands/dependency-operation-plan.js.map +1 -1
  89. package/dist/src/commands/init.d.ts +5 -11
  90. package/dist/src/commands/init.js +30 -51
  91. package/dist/src/commands/init.js.map +1 -1
  92. package/dist/src/commands/managed-commands.d.ts +28 -0
  93. package/dist/src/commands/managed-commands.js +315 -0
  94. package/dist/src/commands/managed-commands.js.map +1 -0
  95. package/dist/src/commands/offline-cleanup-evidence.d.ts +67 -0
  96. package/dist/src/commands/offline-cleanup-evidence.js +181 -0
  97. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  98. package/dist/src/commands/operation-plan.d.ts +182 -0
  99. package/dist/src/commands/operation-plan.js +71 -0
  100. package/dist/src/commands/operation-plan.js.map +1 -0
  101. package/dist/src/commands/operation-planner.d.ts +47 -0
  102. package/dist/src/commands/operation-planner.js +142 -0
  103. package/dist/src/commands/operation-planner.js.map +1 -0
  104. package/dist/src/commands/options.d.ts +9 -7
  105. package/dist/src/commands/options.js +83 -21
  106. package/dist/src/commands/options.js.map +1 -1
  107. package/dist/src/commands/plugin-capabilities.js +65 -4
  108. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  109. package/dist/src/commands/rebuild-command.d.ts +78 -31
  110. package/dist/src/commands/rebuild-command.js +5229 -942
  111. package/dist/src/commands/rebuild-command.js.map +1 -1
  112. package/dist/src/commands/rebuild-integration.d.ts +143 -21
  113. package/dist/src/commands/rebuild-integration.js +3384 -1342
  114. package/dist/src/commands/rebuild-integration.js.map +1 -1
  115. package/dist/src/commands/rebuild-operations.d.ts +60 -30
  116. package/dist/src/commands/rebuild-operations.js +267 -320
  117. package/dist/src/commands/rebuild-operations.js.map +1 -1
  118. package/dist/src/commands/reconcile-operation-plan.d.ts +28 -0
  119. package/dist/src/commands/reconcile-operation-plan.js +47 -0
  120. package/dist/src/commands/reconcile-operation-plan.js.map +1 -0
  121. package/dist/src/commands/review-inspection.d.ts +60 -0
  122. package/dist/src/commands/review-inspection.js +422 -0
  123. package/dist/src/commands/review-inspection.js.map +1 -0
  124. package/dist/src/commands/review-preparation.d.ts +49 -0
  125. package/dist/src/commands/review-preparation.js +427 -0
  126. package/dist/src/commands/review-preparation.js.map +1 -0
  127. package/dist/src/commands/runtime.d.ts +1 -5
  128. package/dist/src/commands/runtime.js +27 -53
  129. package/dist/src/commands/runtime.js.map +1 -1
  130. package/dist/src/commands/skill-eval.d.ts +39 -0
  131. package/dist/src/commands/skill-eval.js +400 -0
  132. package/dist/src/commands/skill-eval.js.map +1 -0
  133. package/dist/src/commands/status-v6.d.ts +279 -0
  134. package/dist/src/commands/status-v6.js +2785 -0
  135. package/dist/src/commands/status-v6.js.map +1 -0
  136. package/dist/src/commands/sync-command.d.ts +40 -0
  137. package/dist/src/commands/sync-command.js +254 -0
  138. package/dist/src/commands/sync-command.js.map +1 -0
  139. package/dist/src/commands/wizard.d.ts +8 -5
  140. package/dist/src/commands/wizard.js +6 -4
  141. package/dist/src/commands/wizard.js.map +1 -1
  142. package/dist/src/commands/write-commands.d.ts +9 -3
  143. package/dist/src/commands/write-commands.js +136 -31
  144. package/dist/src/commands/write-commands.js.map +1 -1
  145. package/dist/src/constants.d.ts +7 -2
  146. package/dist/src/constants.js +7 -2
  147. package/dist/src/constants.js.map +1 -1
  148. package/dist/src/eval/manifest-v1.d.ts +68 -0
  149. package/dist/src/eval/manifest-v1.js +353 -0
  150. package/dist/src/eval/manifest-v1.js.map +1 -0
  151. package/dist/src/generators/local-plugin.d.ts +5 -1
  152. package/dist/src/generators/local-plugin.js +261 -109
  153. package/dist/src/generators/local-plugin.js.map +1 -1
  154. package/dist/src/generators/permissions.d.ts +5 -2
  155. package/dist/src/generators/permissions.js +28 -15
  156. package/dist/src/generators/permissions.js.map +1 -1
  157. package/dist/src/index.d.ts +10 -4
  158. package/dist/src/index.js +1774 -609
  159. package/dist/src/index.js.map +1 -1
  160. package/dist/src/output/command-receipt.d.ts +47 -46
  161. package/dist/src/output/command-receipt.js +277 -79
  162. package/dist/src/output/command-receipt.js.map +1 -1
  163. package/dist/src/output/model.d.ts +3 -44
  164. package/dist/src/output/model.js +1 -144
  165. package/dist/src/output/model.js.map +1 -1
  166. package/dist/src/output/rebuild-progress.js +15 -13
  167. package/dist/src/output/rebuild-progress.js.map +1 -1
  168. package/dist/src/portable/commands.d.ts +46 -7
  169. package/dist/src/portable/commands.js +349 -37
  170. package/dist/src/portable/commands.js.map +1 -1
  171. package/dist/src/portable/materializer.d.ts +17 -4
  172. package/dist/src/portable/materializer.js +186 -41
  173. package/dist/src/portable/materializer.js.map +1 -1
  174. package/dist/src/portable/skills-cli.d.ts +15 -7
  175. package/dist/src/portable/skills-cli.js +74 -20
  176. package/dist/src/portable/skills-cli.js.map +1 -1
  177. package/dist/src/review/eval-source-input.d.ts +43 -0
  178. package/dist/src/review/eval-source-input.js +207 -0
  179. package/dist/src/review/eval-source-input.js.map +1 -0
  180. package/dist/src/review/review-profile.d.ts +17 -0
  181. package/dist/src/review/review-profile.js +234 -0
  182. package/dist/src/review/review-profile.js.map +1 -0
  183. package/dist/src/review/review-selection.d.ts +30 -0
  184. package/dist/src/review/review-selection.js +527 -0
  185. package/dist/src/review/review-selection.js.map +1 -0
  186. package/dist/src/review/review-types.d.ts +68 -0
  187. package/dist/src/review/review-types.js +16 -0
  188. package/dist/src/review/review-types.js.map +1 -0
  189. package/dist/src/review/skill-materialization.d.ts +26 -0
  190. package/dist/src/review/skill-materialization.js +217 -0
  191. package/dist/src/review/skill-materialization.js.map +1 -0
  192. package/dist/src/review/source-binding.d.ts +183 -0
  193. package/dist/src/review/source-binding.js +708 -0
  194. package/dist/src/review/source-binding.js.map +1 -0
  195. package/dist/src/tui/catalog-freshness.d.ts +1 -0
  196. package/dist/src/tui/catalog-freshness.js +2 -0
  197. package/dist/src/tui/catalog-freshness.js.map +1 -0
  198. package/dist/src/tui/catalog-generation.d.ts +21 -0
  199. package/dist/src/tui/catalog-generation.js +156 -0
  200. package/dist/src/tui/catalog-generation.js.map +1 -0
  201. package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
  202. package/dist/src/tui/catalog-sources/projection.js +17 -0
  203. package/dist/src/tui/catalog-sources/projection.js.map +1 -0
  204. package/dist/src/tui/catalog-sources/review.d.ts +3 -0
  205. package/dist/src/tui/catalog-sources/review.js +13 -0
  206. package/dist/src/tui/catalog-sources/review.js.map +1 -0
  207. package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
  208. package/dist/src/tui/catalog-sources/screens.js +40 -0
  209. package/dist/src/tui/catalog-sources/screens.js.map +1 -0
  210. package/dist/src/tui/catalog-sources/session.d.ts +32 -0
  211. package/dist/src/tui/catalog-sources/session.js +300 -0
  212. package/dist/src/tui/catalog-sources/session.js.map +1 -0
  213. package/dist/src/tui/catalog-sources/types.d.ts +54 -0
  214. package/dist/src/tui/catalog-sources/types.js +2 -0
  215. package/dist/src/tui/catalog-sources/types.js.map +1 -0
  216. package/dist/src/tui/catalog-store-task.d.ts +16 -0
  217. package/dist/src/tui/catalog-store-task.js +19 -0
  218. package/dist/src/tui/catalog-store-task.js.map +1 -0
  219. package/dist/src/tui/clipboard.d.ts +13 -0
  220. package/dist/src/tui/clipboard.js +95 -0
  221. package/dist/src/tui/clipboard.js.map +1 -0
  222. package/dist/src/tui/components.d.ts +110 -3
  223. package/dist/src/tui/components.js +183 -36
  224. package/dist/src/tui/components.js.map +1 -1
  225. package/dist/src/tui/config-array-draft.d.ts +29 -0
  226. package/dist/src/tui/config-array-draft.js +48 -0
  227. package/dist/src/tui/config-array-draft.js.map +1 -0
  228. package/dist/src/tui/config-leaf-editor.d.ts +19 -0
  229. package/dist/src/tui/config-leaf-editor.js +212 -0
  230. package/dist/src/tui/config-leaf-editor.js.map +1 -0
  231. package/dist/src/tui/config-references.d.ts +34 -0
  232. package/dist/src/tui/config-references.js +70 -0
  233. package/dist/src/tui/config-references.js.map +1 -0
  234. package/dist/src/tui/config-value-presentation.d.ts +20 -0
  235. package/dist/src/tui/config-value-presentation.js +104 -0
  236. package/dist/src/tui/config-value-presentation.js.map +1 -0
  237. package/dist/src/tui/console-app-v4.d.ts +14 -4
  238. package/dist/src/tui/console-app-v4.js +9205 -1951
  239. package/dist/src/tui/console-app-v4.js.map +1 -1
  240. package/dist/src/tui/content-item-card.d.ts +13 -0
  241. package/dist/src/tui/content-item-card.js +51 -0
  242. package/dist/src/tui/content-item-card.js.map +1 -0
  243. package/dist/src/tui/controller-runtime.d.ts +10 -2
  244. package/dist/src/tui/controller-runtime.js +3289 -388
  245. package/dist/src/tui/controller-runtime.js.map +1 -1
  246. package/dist/src/tui/controller.d.ts +622 -45
  247. package/dist/src/tui/controller.js +3589 -768
  248. package/dist/src/tui/controller.js.map +1 -1
  249. package/dist/src/tui/dependency-graph-view.d.ts +39 -0
  250. package/dist/src/tui/dependency-graph-view.js +121 -0
  251. package/dist/src/tui/dependency-graph-view.js.map +1 -0
  252. package/dist/src/tui/dependency-graph.d.ts +81 -0
  253. package/dist/src/tui/dependency-graph.js +452 -0
  254. package/dist/src/tui/dependency-graph.js.map +1 -0
  255. package/dist/src/tui/diagnostic-projection.d.ts +23 -0
  256. package/dist/src/tui/diagnostic-projection.js +595 -0
  257. package/dist/src/tui/diagnostic-projection.js.map +1 -0
  258. package/dist/src/tui/diagnostics.d.ts +3 -3
  259. package/dist/src/tui/diagnostics.js +14 -2
  260. package/dist/src/tui/diagnostics.js.map +1 -1
  261. package/dist/src/tui/entity-cards.d.ts +55 -0
  262. package/dist/src/tui/entity-cards.js +220 -0
  263. package/dist/src/tui/entity-cards.js.map +1 -0
  264. package/dist/src/tui/glossary.d.ts +23 -0
  265. package/dist/src/tui/glossary.js +42 -0
  266. package/dist/src/tui/glossary.js.map +1 -0
  267. package/dist/src/tui/index.d.ts +6 -1
  268. package/dist/src/tui/index.js +5 -1
  269. package/dist/src/tui/index.js.map +1 -1
  270. package/dist/src/tui/input-display.d.ts +9 -0
  271. package/dist/src/tui/input-display.js +58 -0
  272. package/dist/src/tui/input-display.js.map +1 -0
  273. package/dist/src/tui/keys.d.ts +44 -0
  274. package/dist/src/tui/keys.js +43 -15
  275. package/dist/src/tui/keys.js.map +1 -1
  276. package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
  277. package/dist/src/tui/lifecycle-action-view.js +36 -0
  278. package/dist/src/tui/lifecycle-action-view.js.map +1 -0
  279. package/dist/src/tui/model.d.ts +224 -31
  280. package/dist/src/tui/model.js +1510 -397
  281. package/dist/src/tui/model.js.map +1 -1
  282. package/dist/src/tui/operation-diagnostic-screens.d.ts +8 -0
  283. package/dist/src/tui/operation-diagnostic-screens.js +71 -0
  284. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
  285. package/dist/src/tui/operation-history.d.ts +81 -0
  286. package/dist/src/tui/operation-history.js +136 -0
  287. package/dist/src/tui/operation-history.js.map +1 -0
  288. package/dist/src/tui/operation-review-planner.d.ts +21 -0
  289. package/dist/src/tui/operation-review-planner.js +1392 -0
  290. package/dist/src/tui/operation-review-planner.js.map +1 -0
  291. package/dist/src/tui/plugin-content.d.ts +31 -0
  292. package/dist/src/tui/plugin-content.js +680 -0
  293. package/dist/src/tui/plugin-content.js.map +1 -0
  294. package/dist/src/tui/plugin-detail.d.ts +52 -0
  295. package/dist/src/tui/plugin-detail.js +165 -0
  296. package/dist/src/tui/plugin-detail.js.map +1 -0
  297. package/dist/src/tui/plugin-write-task.d.ts +69 -0
  298. package/dist/src/tui/plugin-write-task.js +286 -0
  299. package/dist/src/tui/plugin-write-task.js.map +1 -0
  300. package/dist/src/tui/project-inventory.d.ts +68 -0
  301. package/dist/src/tui/project-inventory.js +203 -0
  302. package/dist/src/tui/project-inventory.js.map +1 -0
  303. package/dist/src/tui/prompt.js +4 -15
  304. package/dist/src/tui/prompt.js.map +1 -1
  305. package/dist/src/tui/query-header.d.ts +30 -0
  306. package/dist/src/tui/query-header.js +40 -0
  307. package/dist/src/tui/query-header.js.map +1 -0
  308. package/dist/src/tui/reader.d.ts +37 -0
  309. package/dist/src/tui/reader.js +47 -0
  310. package/dist/src/tui/reader.js.map +1 -0
  311. package/dist/src/tui/router.d.ts +197 -10
  312. package/dist/src/tui/router.js +338 -50
  313. package/dist/src/tui/router.js.map +1 -1
  314. package/dist/src/tui/screen-registry.d.ts +701 -0
  315. package/dist/src/tui/screen-registry.js +230 -0
  316. package/dist/src/tui/screen-registry.js.map +1 -0
  317. package/dist/src/tui/session-console-app.d.ts +6 -0
  318. package/dist/src/tui/session-console-app.js +13 -0
  319. package/dist/src/tui/session-console-app.js.map +1 -0
  320. package/dist/src/tui/session-host.d.ts +45 -0
  321. package/dist/src/tui/session-host.js +209 -0
  322. package/dist/src/tui/session-host.js.map +1 -0
  323. package/dist/src/tui/source-detail-card.d.ts +29 -0
  324. package/dist/src/tui/source-detail-card.js +45 -0
  325. package/dist/src/tui/source-detail-card.js.map +1 -0
  326. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  327. package/dist/src/tui/source-ref-presets.js +11 -0
  328. package/dist/src/tui/source-ref-presets.js.map +1 -0
  329. package/dist/src/tui/theme.d.ts +12 -0
  330. package/dist/src/tui/theme.js +12 -0
  331. package/dist/src/tui/theme.js.map +1 -1
  332. package/dist/src/tui/viewport.d.ts +1 -0
  333. package/dist/src/tui/viewport.js +23 -0
  334. package/dist/src/tui/viewport.js.map +1 -1
  335. package/dist/src/tui/views.js +31 -3
  336. package/dist/src/tui/views.js.map +1 -1
  337. package/dist/src/tui/wizard.js +37 -13
  338. package/dist/src/tui/wizard.js.map +1 -1
  339. package/dist/src/types.d.ts +264 -21
  340. package/dist/src/types.js +1 -0
  341. package/dist/src/types.js.map +1 -1
  342. package/dist/src/utils/agent-version.d.ts +7 -1
  343. package/dist/src/utils/agent-version.js +36 -7
  344. package/dist/src/utils/agent-version.js.map +1 -1
  345. package/dist/src/utils/artifact-plan.d.ts +8 -6
  346. package/dist/src/utils/artifact-plan.js +67 -13
  347. package/dist/src/utils/artifact-plan.js.map +1 -1
  348. package/dist/src/utils/artifact-renderer.d.ts +24 -10
  349. package/dist/src/utils/artifact-renderer.js +230 -220
  350. package/dist/src/utils/artifact-renderer.js.map +1 -1
  351. package/dist/src/utils/artifact-request.d.ts +32 -0
  352. package/dist/src/utils/artifact-request.js +90 -0
  353. package/dist/src/utils/artifact-request.js.map +1 -0
  354. package/dist/src/utils/artifact-sources.d.ts +4 -0
  355. package/dist/src/utils/artifact-sources.js +17 -0
  356. package/dist/src/utils/artifact-sources.js.map +1 -1
  357. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  358. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  359. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  360. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  361. package/dist/src/utils/bundle-integrity.js +0 -25
  362. package/dist/src/utils/bundle-integrity.js.map +1 -1
  363. package/dist/src/utils/bundle-layout.js +29 -29
  364. package/dist/src/utils/bundle-layout.js.map +1 -1
  365. package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
  366. package/dist/src/utils/catalog-capability-projection.js +14 -0
  367. package/dist/src/utils/catalog-capability-projection.js.map +1 -0
  368. package/dist/src/utils/catalog-digests.d.ts +10 -0
  369. package/dist/src/utils/catalog-digests.js +57 -20
  370. package/dist/src/utils/catalog-digests.js.map +1 -1
  371. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  372. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  373. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  374. package/dist/src/utils/catalog-generation-error.d.ts +16 -0
  375. package/dist/src/utils/catalog-generation-error.js +30 -0
  376. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  377. package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
  378. package/dist/src/utils/catalog-generation-resolver.js +273 -0
  379. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  380. package/dist/src/utils/catalog-generation-service.d.ts +172 -0
  381. package/dist/src/utils/catalog-generation-service.js +1271 -0
  382. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  383. package/dist/src/utils/catalog-generation-state.d.ts +22 -0
  384. package/dist/src/utils/catalog-generation-state.js +192 -0
  385. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  386. package/dist/src/utils/catalog-generation-store.d.ts +58 -0
  387. package/dist/src/utils/catalog-generation-store.js +452 -0
  388. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  389. package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
  390. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
  391. package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
  392. package/dist/src/utils/catalog-operation-context.d.ts +20 -0
  393. package/dist/src/utils/catalog-operation-context.js +142 -0
  394. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  395. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  396. package/dist/src/utils/catalog-public-error.js +28 -8
  397. package/dist/src/utils/catalog-public-error.js.map +1 -1
  398. package/dist/src/utils/catalog-runtime-projection.d.ts +3 -0
  399. package/dist/src/utils/catalog-runtime-projection.js +5 -40
  400. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  401. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  402. package/dist/src/utils/catalog-snapshot.js +11 -3
  403. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  404. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  405. package/dist/src/utils/catalog-source-identity.js +21 -2
  406. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  407. package/dist/src/utils/catalog-source-impact.d.ts +21 -0
  408. package/dist/src/utils/catalog-source-impact.js +344 -0
  409. package/dist/src/utils/catalog-source-impact.js.map +1 -0
  410. package/dist/src/utils/catalog-source-references.d.ts +3 -2
  411. package/dist/src/utils/catalog-source-references.js +195 -347
  412. package/dist/src/utils/catalog-source-references.js.map +1 -1
  413. package/dist/src/utils/catalog-sources.d.ts +15 -1
  414. package/dist/src/utils/catalog-sources.js +206 -27
  415. package/dist/src/utils/catalog-sources.js.map +1 -1
  416. package/dist/src/utils/claude-skills-root.d.ts +8 -0
  417. package/dist/src/utils/claude-skills-root.js +76 -0
  418. package/dist/src/utils/claude-skills-root.js.map +1 -0
  419. package/dist/src/utils/codex-config.d.ts +2 -0
  420. package/dist/src/utils/codex-config.js +26 -5
  421. package/dist/src/utils/codex-config.js.map +1 -1
  422. package/dist/src/utils/codex-manager.d.ts +79 -0
  423. package/dist/src/utils/codex-manager.js +735 -0
  424. package/dist/src/utils/codex-manager.js.map +1 -0
  425. package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
  426. package/dist/src/utils/codex-marketplace-path.js +45 -0
  427. package/dist/src/utils/codex-marketplace-path.js.map +1 -0
  428. package/dist/src/utils/codex-native-observation.d.ts +49 -0
  429. package/dist/src/utils/codex-native-observation.js +154 -0
  430. package/dist/src/utils/codex-native-observation.js.map +1 -0
  431. package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
  432. package/dist/src/utils/codex-native-render-receipt.js +205 -0
  433. package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
  434. package/dist/src/utils/codex-reconciler.d.ts +126 -0
  435. package/dist/src/utils/codex-reconciler.js +298 -0
  436. package/dist/src/utils/codex-reconciler.js.map +1 -0
  437. package/dist/src/utils/codex-shared-native.d.ts +43 -0
  438. package/dist/src/utils/codex-shared-native.js +81 -0
  439. package/dist/src/utils/codex-shared-native.js.map +1 -0
  440. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  441. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  442. package/dist/src/utils/codex-skills-root.d.ts +4 -0
  443. package/dist/src/utils/codex-skills-root.js +25 -0
  444. package/dist/src/utils/codex-skills-root.js.map +1 -0
  445. package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
  446. package/dist/src/utils/codex-surface-analysis.js +247 -0
  447. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  448. package/dist/src/utils/dynamic-skill-tree.d.ts +5 -0
  449. package/dist/src/utils/dynamic-skill-tree.js +56 -7
  450. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  451. package/dist/src/utils/git-catalog-provider.d.ts +16 -0
  452. package/dist/src/utils/git-catalog-provider.js +177 -145
  453. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  454. package/dist/src/utils/local-marketplace.d.ts +27 -1
  455. package/dist/src/utils/local-marketplace.js +434 -84
  456. package/dist/src/utils/local-marketplace.js.map +1 -1
  457. package/dist/src/utils/managed-command-closure.d.ts +3 -0
  458. package/dist/src/utils/managed-command-closure.js +35 -0
  459. package/dist/src/utils/managed-command-closure.js.map +1 -0
  460. package/dist/src/utils/managed-command-evidence.d.ts +7 -0
  461. package/dist/src/utils/managed-command-evidence.js +86 -0
  462. package/dist/src/utils/managed-command-evidence.js.map +1 -0
  463. package/dist/src/utils/managed-command-materialization.d.ts +115 -0
  464. package/dist/src/utils/managed-command-materialization.js +359 -0
  465. package/dist/src/utils/managed-command-materialization.js.map +1 -0
  466. package/dist/src/utils/managed-command-runtime.d.ts +33 -0
  467. package/dist/src/utils/managed-command-runtime.js +121 -0
  468. package/dist/src/utils/managed-command-runtime.js.map +1 -0
  469. package/dist/src/utils/managed-command-store.d.ts +128 -0
  470. package/dist/src/utils/managed-command-store.js +589 -0
  471. package/dist/src/utils/managed-command-store.js.map +1 -0
  472. package/dist/src/utils/manifest.d.ts +1 -3
  473. package/dist/src/utils/manifest.js +1 -3
  474. package/dist/src/utils/manifest.js.map +1 -1
  475. package/dist/src/utils/multi-source-catalog.d.ts +3 -9
  476. package/dist/src/utils/multi-source-catalog.js +54 -110
  477. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  478. package/dist/src/utils/native-cli.d.ts +61 -7
  479. package/dist/src/utils/native-cli.js +426 -58
  480. package/dist/src/utils/native-cli.js.map +1 -1
  481. package/dist/src/utils/native-tool-context.d.ts +14 -0
  482. package/dist/src/utils/native-tool-context.js +38 -0
  483. package/dist/src/utils/native-tool-context.js.map +1 -0
  484. package/dist/src/utils/native-tool-review.d.ts +21 -0
  485. package/dist/src/utils/native-tool-review.js +102 -0
  486. package/dist/src/utils/native-tool-review.js.map +1 -0
  487. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
  488. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  489. package/dist/src/utils/ownership.d.ts +88 -20
  490. package/dist/src/utils/ownership.js +185 -223
  491. package/dist/src/utils/ownership.js.map +1 -1
  492. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  493. package/dist/src/utils/path-catalog-provider.js +54 -65
  494. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  495. package/dist/src/utils/paths.d.ts +0 -1
  496. package/dist/src/utils/paths.js +0 -1
  497. package/dist/src/utils/paths.js.map +1 -1
  498. package/dist/src/utils/plugin-config-impact.d.ts +40 -0
  499. package/dist/src/utils/plugin-config-impact.js +373 -0
  500. package/dist/src/utils/plugin-config-impact.js.map +1 -0
  501. package/dist/src/utils/plugin-config-write.d.ts +52 -27
  502. package/dist/src/utils/plugin-config-write.js +1112 -298
  503. package/dist/src/utils/plugin-config-write.js.map +1 -1
  504. package/dist/src/utils/plugin-config.d.ts +153 -93
  505. package/dist/src/utils/plugin-config.js +1116 -968
  506. package/dist/src/utils/plugin-config.js.map +1 -1
  507. package/dist/src/utils/plugin-intent-state.d.ts +49 -0
  508. package/dist/src/utils/plugin-intent-state.js +320 -0
  509. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  510. package/dist/src/utils/plugin-scripts.d.ts +66 -125
  511. package/dist/src/utils/plugin-scripts.js +518 -526
  512. package/dist/src/utils/plugin-scripts.js.map +1 -1
  513. package/dist/src/utils/process-lock.js +14 -5
  514. package/dist/src/utils/process-lock.js.map +1 -1
  515. package/dist/src/utils/process-tree.d.ts +2 -2
  516. package/dist/src/utils/process-tree.js +1 -1
  517. package/dist/src/utils/process-tree.js.map +1 -1
  518. package/dist/src/utils/project-boundary.d.ts +11 -13
  519. package/dist/src/utils/project-boundary.js +28 -34
  520. package/dist/src/utils/project-boundary.js.map +1 -1
  521. package/dist/src/utils/rendered-contract.js +18 -1
  522. package/dist/src/utils/rendered-contract.js.map +1 -1
  523. package/dist/src/utils/runtime-config.d.ts +20 -0
  524. package/dist/src/utils/runtime-config.js +75 -0
  525. package/dist/src/utils/runtime-config.js.map +1 -0
  526. package/dist/src/utils/runtime-skill-closure.js +47 -6
  527. package/dist/src/utils/runtime-skill-closure.js.map +1 -1
  528. package/dist/src/utils/safe-fs.d.ts +21 -0
  529. package/dist/src/utils/safe-fs.js +111 -0
  530. package/dist/src/utils/safe-fs.js.map +1 -0
  531. package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
  532. package/dist/src/utils/safe-operation-diagnostic.js +33 -0
  533. package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
  534. package/dist/src/utils/sensitive-content.d.ts +4 -0
  535. package/dist/src/utils/sensitive-content.js +36 -0
  536. package/dist/src/utils/sensitive-content.js.map +1 -0
  537. package/dist/src/utils/state-paths.js +7 -2
  538. package/dist/src/utils/state-paths.js.map +1 -1
  539. package/dist/src/utils/target-eligibility.d.ts +8 -2
  540. package/dist/src/utils/target-eligibility.js +17 -8
  541. package/dist/src/utils/target-eligibility.js.map +1 -1
  542. package/dist/src/utils/windows-claude-shim.d.ts +7 -0
  543. package/dist/src/utils/windows-claude-shim.js +10 -0
  544. package/dist/src/utils/windows-claude-shim.js.map +1 -0
  545. package/dist/src/utils/windows-npm-shim.d.ts +14 -0
  546. package/dist/src/utils/windows-npm-shim.js +140 -0
  547. package/dist/src/utils/windows-npm-shim.js.map +1 -0
  548. package/dist/vitest.config.js +100 -9
  549. package/dist/vitest.config.js.map +1 -1
  550. package/package.json +31 -21
  551. package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
  552. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  553. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  554. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  555. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  556. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  557. package/dist/scripts/codex-eval-app-server.d.ts +0 -89
  558. package/dist/scripts/codex-eval-app-server.js +0 -1228
  559. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  560. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  561. package/dist/scripts/codex-eval-isolation.js +0 -318
  562. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  563. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  564. package/dist/scripts/codex-eval-process-management.js +0 -69
  565. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  566. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  567. package/dist/scripts/codex-eval-process-tree.js +0 -803
  568. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  569. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  570. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  571. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  572. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  573. package/dist/scripts/codex-trigger-eval.js +0 -968
  574. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  575. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  576. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  577. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  578. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  579. package/dist/scripts/eval-plugin-skills.js +0 -1586
  580. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  581. package/dist/scripts/eval-run-layout.d.ts +0 -17
  582. package/dist/scripts/eval-run-layout.js +0 -26
  583. package/dist/scripts/eval-run-layout.js.map +0 -1
  584. package/dist/scripts/plugin-eval-contract.d.ts +0 -185
  585. package/dist/scripts/plugin-eval-contract.js +0 -695
  586. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  587. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  588. package/dist/scripts/plugin-eval-materializer.js +0 -421
  589. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  590. package/dist/scripts/skill-reporting.d.ts +0 -212
  591. package/dist/scripts/skill-reporting.js +0 -922
  592. package/dist/scripts/skill-reporting.js.map +0 -1
  593. package/dist/src/commands/review-publication.d.ts +0 -99
  594. package/dist/src/commands/review-publication.js +0 -904
  595. package/dist/src/commands/review-publication.js.map +0 -1
  596. package/dist/src/commands/status-v4.d.ts +0 -123
  597. package/dist/src/commands/status-v4.js +0 -905
  598. package/dist/src/commands/status-v4.js.map +0 -1
  599. package/dist/src/commands/status.d.ts +0 -93
  600. package/dist/src/commands/status.js +0 -442
  601. package/dist/src/commands/status.js.map +0 -1
  602. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  603. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  604. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  605. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  606. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  607. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  608. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
  609. package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
  610. package/dist/src/utils/catalog-source-cache.d.ts +0 -62
  611. package/dist/src/utils/catalog-source-cache.js +0 -296
  612. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  613. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  614. package/dist/src/utils/codex-project-surface.js +0 -49
  615. package/dist/src/utils/codex-project-surface.js.map +0 -1
  616. package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
  617. package/dist/src/utils/lifecycle-active-store.js +0 -1276
  618. package/dist/src/utils/lifecycle-active-store.js.map +0 -1
  619. package/dist/src/utils/plugin-release.d.ts +0 -2
  620. package/dist/src/utils/plugin-release.js +0 -2
  621. package/dist/src/utils/plugin-release.js.map +0 -1
@@ -0,0 +1,655 @@
1
+ import crypto from 'node:crypto';
2
+ import path from 'node:path';
3
+ import { DEFAULT_CATALOG_OUTPUT_PATH, readCatalogWorkspace, validateCatalogSnapshotComplete, } from '@lesliechan721/aw-plugin-core';
4
+ import { runCatalogBuildCommand } from '../authoring/workspace-commands.js';
5
+ import { probeCatalogSourceGeneration, readCatalogGenerationStatus, } from '../utils/catalog-generation-service.js';
6
+ import { readCatalogGenerationState } from '../utils/catalog-generation-state.js';
7
+ import { calculateCatalogSourceImpactDigest, inspectCatalogSourceImpact, } from '../utils/catalog-source-impact.js';
8
+ import { CLI_RESERVED_IMPORTS } from '../utils/manifest.js';
9
+ import { CATALOG_SOURCE_ID_PATTERN, addCatalogSource, calculateCatalogSourcesConfigDigest, CatalogSourcesConfigConflictError, isDefaultOfficialCatalogSource, readCatalogSourcesConfigSnapshot, setPrimaryCatalogSource, updateCatalogSource, } from '../utils/catalog-sources.js';
10
+ import { addCatalogSourceCommand, preflightCatalogSourceMutation, removeCatalogSourceCommand, setPrimaryCatalogSourceCommand, updateCatalogSourceCommand, } from './catalog-source.js';
11
+ import { syncCatalogSourceCommand } from './catalog-generation.js';
12
+ import { getCatalogStatus } from './catalog-status.js';
13
+ import { resolveCatalogWorkspaceRoot } from './catalog-workspace-resolution.js';
14
+ function managedSources(sources, workspaceIdentity) {
15
+ return sources.filter((source) => source.type === 'path'
16
+ && source.managedBy?.kind === 'catalog-workspace'
17
+ && source.managedBy.workspaceIdentity === workspaceIdentity);
18
+ }
19
+ function normalizeSuggestedSourceId(workspaceRoot) {
20
+ const stem = path.basename(workspaceRoot).toLowerCase()
21
+ .replace(/[^a-z0-9]+/gu, '-').replace(/^-+|-+$/gu, '');
22
+ const prefixed = /^[a-z]/u.test(stem) ? stem : `catalog-${stem}`;
23
+ const basename = (prefixed || 'catalog').slice(0, 28).replace(/-+$/u, '') || 'catalog';
24
+ return `${basename}-dev`;
25
+ }
26
+ function suffixedSourceId(base, workspaceIdentity) {
27
+ const suffix = crypto.createHash('sha256').update(workspaceIdentity).digest('hex').slice(0, 6);
28
+ const prefix = base.slice(0, 32 - suffix.length - 1).replace(/-+$/u, '');
29
+ return `${prefix}-${suffix}`;
30
+ }
31
+ export function suggestedCatalogDevSourceId(workspaceRoot, workspaceIdentity, occupiedSourceIds = []) {
32
+ const base = normalizeSuggestedSourceId(workspaceRoot);
33
+ return workspaceIdentity && occupiedSourceIds.includes(base)
34
+ ? suffixedSourceId(base, workspaceIdentity)
35
+ : base;
36
+ }
37
+ class CatalogDevSourceError extends Error {
38
+ code;
39
+ constructor(code, message) {
40
+ super(message);
41
+ this.code = code;
42
+ this.name = 'CatalogDevSourceError';
43
+ }
44
+ }
45
+ function assertExplicitSourceId(sourceId) {
46
+ if (!CATALOG_SOURCE_ID_PATTERN.test(sourceId)) {
47
+ throw new CatalogDevSourceError('invalidSourceId', 'Invalid Catalog development source ID.');
48
+ }
49
+ }
50
+ export function createCatalogDevFailureReceipt(options) {
51
+ const workspaceRoot = path.resolve(options.cwd, options.workspaceRoot ?? '.');
52
+ if (options.command === 'activate') {
53
+ return {
54
+ receiptSchemaVersion: 2, command: 'catalog:dev:activate', ok: false, state: 'failed',
55
+ workspaceIdentity: null,
56
+ snapshot: { action: 'reused', digest: null },
57
+ source: { id: options.sourceId ?? suggestedCatalogDevSourceId(workspaceRoot), action: 'reused', primary: false },
58
+ active: { ready: false, snapshotDigest: null },
59
+ recovery: ['Fix the reported problem, then rerun catalog dev activate.'],
60
+ errors: [{ code: options.code, message: options.message }],
61
+ };
62
+ }
63
+ if (options.command === 'status') {
64
+ return {
65
+ receiptSchemaVersion: 4, command: 'catalog:dev:status', ok: false, ready: false,
66
+ workspaceIdentity: null,
67
+ snapshot: { state: 'absent', valid: false, digest: null },
68
+ source: { exists: false, id: null, pathMatches: null, primary: null },
69
+ active: {
70
+ exists: false, ready: false, digestMatchesSnapshot: false, snapshotDigest: null,
71
+ compatibility: null,
72
+ },
73
+ issues: [{ code: options.code, message: options.message, blocking: true }],
74
+ };
75
+ }
76
+ return {
77
+ receiptSchemaVersion: 4, command: 'catalog:dev:deactivate', ok: false, state: 'failed',
78
+ workspaceIdentity: null,
79
+ source: { id: null, action: 'absent', previousPrimary: false },
80
+ replacementPrimarySourceId: null,
81
+ impact: null,
82
+ recovery: ['Fix the reported problem, then rerun catalog dev deactivate.'],
83
+ errors: [{ code: options.code, message: options.message }],
84
+ };
85
+ }
86
+ function codedFailure(error, fallbackCode) {
87
+ const candidateCode = typeof error === 'object' && error !== null && 'code' in error
88
+ && typeof error.code === 'string' ? error.code : undefined;
89
+ const typedCode = candidateCode === 'catalogImpactConfirmationRequired'
90
+ || candidateCode === 'catalogSourceImpactConfirmationRequired'
91
+ || candidateCode === 'operationReviewStale'
92
+ ? candidateCode
93
+ : undefined;
94
+ return {
95
+ code: error instanceof CatalogDevSourceError ? error.code : typedCode ?? fallbackCode,
96
+ message: error instanceof CatalogDevSourceError ? error.message : 'The Catalog development operation failed.',
97
+ };
98
+ }
99
+ function failureImpact(error, fallback) {
100
+ if (typeof error !== 'object' || error === null || !('impact' in error))
101
+ return fallback;
102
+ const impact = error.impact;
103
+ return typeof impact === 'object' && impact !== null && 'inventorySchemaVersion' in impact
104
+ && impact.inventorySchemaVersion === 2
105
+ ? impact
106
+ : fallback;
107
+ }
108
+ async function resolveWorkspace(cwd, workspaceRoot) {
109
+ try {
110
+ const resolved = await resolveCatalogWorkspaceRoot({
111
+ cwd,
112
+ ...(workspaceRoot === undefined ? {} : { explicitRoot: workspaceRoot }),
113
+ mode: 'existing',
114
+ });
115
+ const workspace = await readCatalogWorkspace(resolved.workspaceRoot, { reservedImports: CLI_RESERVED_IMPORTS });
116
+ return { resolved, workspace };
117
+ }
118
+ catch {
119
+ throw new CatalogDevSourceError('workspaceInvalid', 'Catalog Workspace is missing or invalid.');
120
+ }
121
+ }
122
+ export function catalogDevSourceError(error, fallbackCode = 'catalogDevSourceFailed') {
123
+ return codedFailure(error, fallbackCode);
124
+ }
125
+ export async function preflightCatalogDevSourceActivation(options) {
126
+ const { workspace } = await resolveWorkspace(options.cwd, options.workspaceRoot);
127
+ const status = await getCatalogStatus({
128
+ cwd: options.cwd,
129
+ workspaceRoot: workspace.workspaceRoot,
130
+ env: options.env,
131
+ });
132
+ if (options.forceBuild === true || status.snapshot.state !== 'current'
133
+ || status.snapshot.snapshotDigest === null) {
134
+ throw new CatalogDevSourceError('catalogDevBuildRequired', 'Build and Review the current Catalog snapshot before activating the development source.');
135
+ }
136
+ const configSnapshot = await readCatalogSourcesConfigSnapshot(options.env);
137
+ const owned = managedSources(configSnapshot.config.sources, workspace.workspaceIdentity);
138
+ if (owned.length > 1) {
139
+ throw new CatalogDevSourceError('multipleManagedSources', 'Workspace owns multiple development sources.');
140
+ }
141
+ const existing = owned[0];
142
+ let sourceId = options.sourceId ?? suggestedCatalogDevSourceId(workspace.workspaceRoot, workspace.workspaceIdentity, configSnapshot.config.sources.map((source) => source.id));
143
+ if (options.sourceId !== undefined) {
144
+ assertExplicitSourceId(options.sourceId);
145
+ if (existing && existing.id !== options.sourceId) {
146
+ throw new CatalogDevSourceError('sourceIdConflict', 'Workspace already owns another development source.');
147
+ }
148
+ const collision = configSnapshot.config.sources.find((source) => source.id === options.sourceId);
149
+ if (collision && collision !== existing) {
150
+ throw new CatalogDevSourceError('sourceIdConflict', 'The selected source ID is already in use.');
151
+ }
152
+ }
153
+ if (existing)
154
+ sourceId = existing.id;
155
+ const snapshotPath = path.join(workspace.workspaceRoot, DEFAULT_CATALOG_OUTPUT_PATH);
156
+ let proposedConfig = configSnapshot.config;
157
+ let sourceMutation;
158
+ let sourceImpact;
159
+ const impacts = [];
160
+ if (!existing) {
161
+ const source = {
162
+ id: sourceId,
163
+ type: 'path',
164
+ path: snapshotPath,
165
+ primary: false,
166
+ managedBy: { kind: 'catalog-workspace', workspaceIdentity: workspace.workspaceIdentity },
167
+ };
168
+ const preview = await preflightCatalogSourceMutation({
169
+ request: { action: 'add', source },
170
+ cwd: workspace.workspaceRoot,
171
+ env: options.env,
172
+ managedByWorkspaceIdentity: workspace.workspaceIdentity,
173
+ });
174
+ proposedConfig = await addCatalogSource(configSnapshot.config, source, workspace.workspaceRoot);
175
+ sourceMutation = {
176
+ proposedConfigDigest: preview.proposedConfigDigest,
177
+ impactDigest: preview.impactDigest,
178
+ };
179
+ sourceImpact = preview.references;
180
+ }
181
+ else if (existing.path !== snapshotPath) {
182
+ const preview = await preflightCatalogSourceMutation({
183
+ request: { action: 'update', sourceId, update: { type: 'path', path: snapshotPath } },
184
+ cwd: workspace.workspaceRoot,
185
+ env: options.env,
186
+ managedByWorkspaceIdentity: workspace.workspaceIdentity,
187
+ });
188
+ proposedConfig = await updateCatalogSource(configSnapshot.config, sourceId, { type: 'path', path: snapshotPath }, workspace.workspaceRoot);
189
+ sourceMutation = {
190
+ proposedConfigDigest: preview.proposedConfigDigest,
191
+ impactDigest: preview.impactDigest,
192
+ };
193
+ sourceImpact = preview.references;
194
+ }
195
+ let primaryImpactDigest;
196
+ const configured = proposedConfig.sources.find((source) => source.id === sourceId);
197
+ if (options.primary === true && !configured.primary) {
198
+ const fromSourceId = proposedConfig.sources.find((source) => source.primary)?.id;
199
+ if (!fromSourceId)
200
+ throw new CatalogDevSourceError('sourceConfigInvalid', 'Catalog primary source is missing.');
201
+ const primaryImpact = await inspectCatalogSourceImpact({
202
+ sourceId,
203
+ cwd: workspace.workspaceRoot,
204
+ env: options.env,
205
+ primaryChange: { fromSourceId, toSourceId: sourceId },
206
+ mode: 'none',
207
+ });
208
+ impacts.push(primaryImpact);
209
+ primaryImpactDigest = calculateCatalogSourceImpactDigest(primaryImpact);
210
+ proposedConfig = setPrimaryCatalogSource(proposedConfig, sourceId);
211
+ }
212
+ const intendedSource = proposedConfig.sources.find((source) => source.id === sourceId);
213
+ const probe = await probeCatalogSourceGeneration({
214
+ sourceId,
215
+ source: intendedSource,
216
+ cliVersion: options.cliVersion,
217
+ env: options.env,
218
+ });
219
+ const generationImpact = await inspectCatalogSourceImpact({
220
+ sourceId,
221
+ cwd: workspace.workspaceRoot,
222
+ env: options.env,
223
+ sourcePrimary: intendedSource.primary,
224
+ mode: 'generation',
225
+ candidateManifest: probe.manifest,
226
+ });
227
+ impacts.push(generationImpact);
228
+ const active = (await readCatalogGenerationState(options.env)).sources[sourceId]?.active ?? null;
229
+ return {
230
+ review: {
231
+ workspaceIdentity: workspace.workspaceIdentity,
232
+ snapshotDigest: status.snapshot.snapshotDigest,
233
+ sourceId,
234
+ initialConfigDigest: configSnapshot.digest,
235
+ finalConfigDigest: calculateCatalogSourcesConfigDigest(proposedConfig),
236
+ ...(sourceMutation ? { sourceMutation } : {}),
237
+ ...(primaryImpactDigest ? { primaryImpactDigest } : {}),
238
+ candidate: probe.candidate,
239
+ active,
240
+ generationImpactDigest: calculateCatalogSourceImpactDigest(generationImpact),
241
+ },
242
+ impacts,
243
+ ...(sourceImpact ? { sourceImpact } : {}),
244
+ };
245
+ }
246
+ export async function activateCatalogDevSource(options) {
247
+ const { resolved, workspace } = await resolveWorkspace(options.cwd, options.workspaceRoot);
248
+ const snapshotPath = path.join(workspace.workspaceRoot, DEFAULT_CATALOG_OUTPUT_PATH);
249
+ const staticStatus = await getCatalogStatus({
250
+ cwd: options.cwd, workspaceRoot: workspace.workspaceRoot, env: options.env,
251
+ });
252
+ let snapshotAction = 'reused';
253
+ let snapshotDigest = staticStatus.snapshot.snapshotDigest;
254
+ if (options.expectedReview) {
255
+ if (options.forceBuild === true
256
+ || staticStatus.snapshot.state !== 'current'
257
+ || snapshotDigest !== options.expectedReview.snapshotDigest
258
+ || workspace.workspaceIdentity !== options.expectedReview.workspaceIdentity) {
259
+ throw new CatalogDevSourceError('operationReviewStale', 'Catalog Workspace snapshot changed after Review. Review it again.');
260
+ }
261
+ }
262
+ if (options.forceBuild === true || staticStatus.snapshot.state !== 'current') {
263
+ try {
264
+ await runCatalogBuildCommand({
265
+ workspaceRoot: workspace.workspaceRoot,
266
+ workspaceRootResolvedFrom: resolved.workspaceRootResolvedFrom,
267
+ force: options.forceBuild === true || staticStatus.snapshot.state !== 'absent',
268
+ io: { stdout: () => undefined, stderr: () => undefined },
269
+ });
270
+ snapshotDigest = (await validateCatalogSnapshotComplete(snapshotPath)).snapshotDigest;
271
+ snapshotAction = 'built';
272
+ }
273
+ catch (error) {
274
+ return {
275
+ receiptSchemaVersion: 2, command: 'catalog:dev:activate', ok: false, state: 'failed',
276
+ workspaceIdentity: workspace.workspaceIdentity,
277
+ snapshot: { action: 'built', digest: null },
278
+ source: { id: options.sourceId ?? normalizeSuggestedSourceId(workspace.workspaceRoot), action: 'reused', primary: false },
279
+ active: { ready: false, snapshotDigest: null },
280
+ recovery: ['Fix the Catalog Workspace, then rerun catalog dev activate.'],
281
+ errors: [codedFailure(error, 'snapshotBuildFailed')],
282
+ };
283
+ }
284
+ }
285
+ let selectedId = options.sourceId ?? normalizeSuggestedSourceId(workspace.workspaceRoot);
286
+ let sourceAction = 'reused';
287
+ let sourceCommitted = false;
288
+ try {
289
+ const configSnapshot = await readCatalogSourcesConfigSnapshot(options.env);
290
+ if (options.expectedReview && configSnapshot.digest !== options.expectedReview.initialConfigDigest) {
291
+ throw new CatalogDevSourceError('operationReviewStale', 'Catalog source configuration changed after Review. Review it again.');
292
+ }
293
+ const owned = managedSources(configSnapshot.config.sources, workspace.workspaceIdentity);
294
+ if (owned.length > 1) {
295
+ throw new CatalogDevSourceError('multipleManagedSources', 'Workspace owns multiple development sources.');
296
+ }
297
+ const existing = owned[0];
298
+ if (options.sourceId !== undefined) {
299
+ assertExplicitSourceId(options.sourceId);
300
+ if (existing && existing.id !== options.sourceId) {
301
+ throw new CatalogDevSourceError('sourceIdConflict', 'Workspace already owns another development source.');
302
+ }
303
+ const collision = configSnapshot.config.sources.find((source) => source.id === options.sourceId);
304
+ if (collision && collision !== existing) {
305
+ throw new CatalogDevSourceError('sourceIdConflict', 'The selected source ID is already in use.');
306
+ }
307
+ }
308
+ else if (!existing && configSnapshot.config.sources.some((source) => source.id === selectedId)) {
309
+ selectedId = suffixedSourceId(selectedId, workspace.workspaceIdentity);
310
+ if (configSnapshot.config.sources.some((source) => source.id === selectedId)) {
311
+ throw new CatalogDevSourceError('sourceIdConflict', 'The generated development source ID is already in use.');
312
+ }
313
+ }
314
+ if (existing)
315
+ selectedId = existing.id;
316
+ if (options.expectedReview && selectedId !== options.expectedReview.sourceId) {
317
+ throw new CatalogDevSourceError('operationReviewStale', 'Catalog development source selection changed after Review.');
318
+ }
319
+ let currentConfigDigest = configSnapshot.digest;
320
+ if (!existing) {
321
+ sourceAction = 'added';
322
+ const mutation = await addCatalogSourceCommand({
323
+ source: {
324
+ id: selectedId, type: 'path', path: snapshotPath, primary: false,
325
+ managedBy: { kind: 'catalog-workspace', workspaceIdentity: workspace.workspaceIdentity },
326
+ },
327
+ cliVersion: options.cliVersion, cwd: workspace.workspaceRoot, env: options.env,
328
+ runtime: options.runtime?.sourceRuntime,
329
+ managedByWorkspaceIdentity: workspace.workspaceIdentity,
330
+ expectedConfigDigest: options.expectedReview?.initialConfigDigest,
331
+ expectedProposedConfigDigest: options.expectedReview?.sourceMutation?.proposedConfigDigest,
332
+ expectedImpactDigest: options.expectedReview?.sourceMutation?.impactDigest,
333
+ });
334
+ currentConfigDigest = mutation.configDigest ?? currentConfigDigest;
335
+ sourceCommitted = true;
336
+ }
337
+ else if (existing.path !== snapshotPath) {
338
+ sourceAction = 'updated';
339
+ const mutation = await updateCatalogSourceCommand({
340
+ sourceId: existing.id, update: { type: 'path', path: snapshotPath },
341
+ cliVersion: options.cliVersion, cwd: workspace.workspaceRoot, env: options.env,
342
+ runtime: options.runtime?.sourceRuntime,
343
+ managedByWorkspaceIdentity: workspace.workspaceIdentity,
344
+ expectedConfigDigest: options.expectedReview?.initialConfigDigest,
345
+ expectedProposedConfigDigest: options.expectedReview?.sourceMutation?.proposedConfigDigest,
346
+ expectedImpactDigest: options.expectedReview?.sourceMutation?.impactDigest,
347
+ ...(options.expectedReview ? {
348
+ requireIdentityChangeConfirmation: true,
349
+ confirmIdentityChange: options.yes === true,
350
+ } : {}),
351
+ });
352
+ currentConfigDigest = mutation.configDigest ?? currentConfigDigest;
353
+ sourceCommitted = true;
354
+ }
355
+ const current = (await readCatalogSourcesConfigSnapshot(options.env)).config.sources
356
+ .find((source) => source.id === selectedId);
357
+ if (options.primary === true && !current.primary) {
358
+ const mutation = await setPrimaryCatalogSourceCommand({
359
+ sourceId: selectedId, cwd: workspace.workspaceRoot, env: options.env,
360
+ runtime: options.runtime?.sourceRuntime,
361
+ requireImpactConfirmation: true,
362
+ confirmImpact: options.yes === true,
363
+ expectedConfigDigest: options.expectedReview ? currentConfigDigest : undefined,
364
+ expectedImpactDigest: options.expectedReview?.primaryImpactDigest,
365
+ });
366
+ currentConfigDigest = mutation.configDigest ?? currentConfigDigest;
367
+ sourceCommitted = true;
368
+ }
369
+ if (options.expectedReview && currentConfigDigest !== options.expectedReview.finalConfigDigest) {
370
+ throw new CatalogDevSourceError('operationReviewStale', 'Catalog source configuration no longer matches Review.');
371
+ }
372
+ await options.runtime?.beforeSync?.();
373
+ await syncCatalogSourceCommand({
374
+ sourceId: selectedId,
375
+ cliVersion: options.cliVersion,
376
+ cwd: workspace.workspaceRoot,
377
+ impactConfirmed: options.yes === true,
378
+ env: options.env,
379
+ expectedCandidate: options.expectedReview?.candidate,
380
+ expectedActive: options.expectedReview?.active,
381
+ expectedConfigDigest: options.expectedReview?.finalConfigDigest,
382
+ expectedImpactDigest: options.expectedReview?.generationImpactDigest,
383
+ });
384
+ await options.runtime?.afterSync?.();
385
+ const finalStatus = await getCatalogDevSourceStatus({
386
+ cwd: options.cwd,
387
+ workspaceRoot: workspace.workspaceRoot,
388
+ cliVersion: options.cliVersion,
389
+ env: options.env,
390
+ });
391
+ if (!finalStatus.ok
392
+ || !finalStatus.ready
393
+ || finalStatus.active.snapshotDigest !== snapshotDigest)
394
+ throw new CatalogDevSourceError('activeNotReady', 'Catalog development source sync completed, but final Active status is not ready.');
395
+ const configured = (await readCatalogSourcesConfigSnapshot(options.env)).config.sources
396
+ .find((source) => source.id === selectedId);
397
+ return {
398
+ receiptSchemaVersion: 2, command: 'catalog:dev:activate', ok: true, state: 'completed',
399
+ workspaceIdentity: workspace.workspaceIdentity,
400
+ snapshot: { action: snapshotAction, digest: snapshotDigest },
401
+ source: { id: selectedId, action: sourceAction, primary: configured.primary },
402
+ active: { ready: true, snapshotDigest: finalStatus.active.snapshotDigest },
403
+ recovery: [], errors: [],
404
+ };
405
+ }
406
+ catch (error) {
407
+ return {
408
+ receiptSchemaVersion: 2, command: 'catalog:dev:activate', ok: false,
409
+ state: snapshotAction === 'built' || sourceCommitted ? 'partial' : 'failed',
410
+ workspaceIdentity: workspace.workspaceIdentity,
411
+ snapshot: { action: snapshotAction, digest: snapshotDigest },
412
+ source: { id: selectedId, action: sourceAction, primary: false },
413
+ active: { ready: false, snapshotDigest: null },
414
+ recovery: ['The source configuration and snapshot were kept. Fix the problem, then rerun catalog dev activate.'],
415
+ errors: [codedFailure(error, sourceCommitted ? 'sourceSyncFailed' : 'sourceConfigFailed')],
416
+ };
417
+ }
418
+ }
419
+ export async function getCatalogDevSourceStatus(options) {
420
+ const empty = {
421
+ receiptSchemaVersion: 4, command: 'catalog:dev:status', ok: false, ready: false,
422
+ workspaceIdentity: null,
423
+ snapshot: { state: 'absent', valid: false, digest: null },
424
+ source: { exists: false, id: null, pathMatches: null, primary: null },
425
+ active: {
426
+ exists: false, ready: false, digestMatchesSnapshot: false, snapshotDigest: null,
427
+ compatibility: null,
428
+ },
429
+ issues: [],
430
+ };
431
+ let workspace;
432
+ try {
433
+ workspace = await resolveWorkspace(options.cwd, options.workspaceRoot);
434
+ }
435
+ catch (error) {
436
+ empty.issues.push({ ...codedFailure(error, 'workspaceInvalid'), blocking: true });
437
+ return empty;
438
+ }
439
+ empty.workspaceIdentity = workspace.workspace.workspaceIdentity;
440
+ const staticStatus = await getCatalogStatus({
441
+ cwd: options.cwd, workspaceRoot: workspace.workspace.workspaceRoot, env: options.env,
442
+ }).catch(() => null);
443
+ if (!staticStatus) {
444
+ empty.issues.push({ code: 'catalogStatusInvalid', message: 'Catalog snapshot status is invalid.', blocking: true });
445
+ return empty;
446
+ }
447
+ empty.snapshot = {
448
+ state: staticStatus.snapshot.state,
449
+ valid: staticStatus.snapshot.valid,
450
+ digest: staticStatus.snapshot.snapshotDigest,
451
+ };
452
+ const workspaceIssues = staticStatus.issues.filter((issue) => issue.blocking);
453
+ empty.issues.push(...workspaceIssues.map((issue) => ({
454
+ code: issue.code,
455
+ message: 'Catalog Workspace status has a blocking issue.',
456
+ blocking: true,
457
+ })));
458
+ if (staticStatus.snapshot.state !== 'current') {
459
+ empty.issues.push({
460
+ code: `snapshot${staticStatus.snapshot.state[0].toUpperCase()}${staticStatus.snapshot.state.slice(1)}`,
461
+ message: `Catalog development snapshot is ${staticStatus.snapshot.state}.`, blocking: true,
462
+ });
463
+ }
464
+ const config = await readCatalogSourcesConfigSnapshot(options.env).catch(() => null);
465
+ if (!config) {
466
+ empty.issues.push({ code: 'sourceConfigInvalid', message: 'Catalog source configuration is invalid.', blocking: true });
467
+ return empty;
468
+ }
469
+ const owned = managedSources(config.config.sources, workspace.workspace.workspaceIdentity);
470
+ if (owned.length !== 1) {
471
+ empty.issues.push({
472
+ code: owned.length === 0 ? 'sourceInactive' : 'multipleManagedSources',
473
+ message: owned.length === 0
474
+ ? 'Workspace has no configured development source.'
475
+ : 'Workspace owns multiple development sources.',
476
+ blocking: true,
477
+ });
478
+ }
479
+ const source = owned.length === 1 ? owned[0] : null;
480
+ if (source) {
481
+ const snapshotPath = path.join(workspace.workspace.workspaceRoot, DEFAULT_CATALOG_OUTPUT_PATH);
482
+ const pathMatches = source.path === snapshotPath;
483
+ empty.source = { exists: true, id: source.id, pathMatches, primary: source.primary };
484
+ if (!pathMatches) {
485
+ empty.issues.push({ code: 'sourcePathMismatch', message: 'Managed source path does not match this Workspace.', blocking: true });
486
+ }
487
+ const status = await readCatalogGenerationStatus({ sourceId: source.id, env: options.env }).catch(() => null);
488
+ const entry = status?.sources[0];
489
+ const snapshotDigest = entry?.active?.snapshotDigest ?? null;
490
+ const digestMatchesSnapshot = snapshotDigest !== null && snapshotDigest === empty.snapshot.digest;
491
+ empty.active = {
492
+ exists: entry?.active !== undefined,
493
+ ready: entry?.activeReady === true,
494
+ digestMatchesSnapshot,
495
+ snapshotDigest,
496
+ compatibility: entry?.compatibility ?? null,
497
+ };
498
+ if (!entry?.active) {
499
+ empty.issues.push({ code: 'activeAbsent', message: 'Development source has no Active snapshot.', blocking: true });
500
+ }
501
+ else if (entry.compatibility?.state === 'unsupported') {
502
+ empty.issues.push({
503
+ code: 'awCapabilityUnsupported',
504
+ message: 'Development source Active snapshot is incompatible with this AW.',
505
+ blocking: true,
506
+ });
507
+ }
508
+ else if (!entry.activeReady) {
509
+ empty.issues.push({ code: entry.errorCode ?? 'activeNotReady', message: 'Development source Active snapshot is not ready.', blocking: true });
510
+ }
511
+ if (entry?.active && !digestMatchesSnapshot) {
512
+ empty.issues.push({ code: 'activeSnapshotDigestMismatch', message: 'Active digest does not match the Workspace snapshot.', blocking: true });
513
+ }
514
+ }
515
+ empty.ok = true;
516
+ empty.ready = empty.snapshot.state === 'current'
517
+ && staticStatus.ok
518
+ && workspaceIssues.length === 0
519
+ && source !== null
520
+ && empty.source.pathMatches === true
521
+ && empty.active.ready
522
+ && empty.active.digestMatchesSnapshot;
523
+ return empty;
524
+ }
525
+ export async function deactivateCatalogDevSource(options) {
526
+ if (options.workspaceRoot !== undefined && options.sourceId !== undefined) {
527
+ throw new CatalogDevSourceError('invalidArguments', '--workspace-root and --source-id are mutually exclusive.');
528
+ }
529
+ const config = await readCatalogSourcesConfigSnapshot(options.env).catch(() => {
530
+ throw new CatalogDevSourceError('sourceConfigInvalid', 'Catalog source configuration is invalid.');
531
+ });
532
+ let source;
533
+ let workspaceIdentity;
534
+ let workspaceRoot;
535
+ if (options.sourceId !== undefined) {
536
+ assertExplicitSourceId(options.sourceId);
537
+ const configuredSource = config.config.sources.find((entry) => entry.id === options.sourceId);
538
+ if (configuredSource?.type !== 'path' || configuredSource.managedBy?.kind !== 'catalog-workspace') {
539
+ throw new CatalogDevSourceError('managedSourceNotFound', 'The source is not a Workspace-managed path source.');
540
+ }
541
+ source = configuredSource;
542
+ workspaceIdentity = configuredSource.managedBy.workspaceIdentity;
543
+ workspaceRoot = options.cwd;
544
+ }
545
+ else {
546
+ const resolved = await resolveWorkspace(options.cwd, options.workspaceRoot);
547
+ workspaceIdentity = resolved.workspace.workspaceIdentity;
548
+ workspaceRoot = resolved.workspace.workspaceRoot;
549
+ const owned = managedSources(config.config.sources, workspaceIdentity);
550
+ if (owned.length > 1) {
551
+ throw new CatalogDevSourceError('multipleManagedSources', 'Workspace owns multiple development sources.');
552
+ }
553
+ source = owned[0];
554
+ }
555
+ if (!source) {
556
+ return {
557
+ receiptSchemaVersion: 4, command: 'catalog:dev:deactivate', ok: true, state: 'completed',
558
+ workspaceIdentity, source: { id: null, action: 'absent', previousPrimary: false },
559
+ replacementPrimarySourceId: null, impact: null, recovery: [], errors: [],
560
+ };
561
+ }
562
+ let replacementPrimarySourceId = null;
563
+ if (source.primary) {
564
+ const others = config.config.sources.filter((entry) => entry.id !== source.id);
565
+ const requested = options.replacementPrimary === undefined
566
+ ? others.find(isDefaultOfficialCatalogSource)
567
+ ?? (others.length === 1 ? others[0] : undefined)
568
+ : others.find((entry) => entry.id === options.replacementPrimary);
569
+ if (!requested) {
570
+ return {
571
+ receiptSchemaVersion: 4, command: 'catalog:dev:deactivate', ok: false, state: 'failed',
572
+ workspaceIdentity, source: { id: source.id, action: 'retained', previousPrimary: true },
573
+ replacementPrimarySourceId: null,
574
+ impact: null,
575
+ recovery: ['Select an existing replacement primary source.'],
576
+ errors: [{ code: 'replacementPrimaryUnavailable', message: 'A replacement primary source is required.' }],
577
+ };
578
+ }
579
+ replacementPrimarySourceId = requested.id;
580
+ }
581
+ else if (options.replacementPrimary !== undefined) {
582
+ throw new CatalogDevSourceError('replacementPrimaryInvalid', '--replacement-primary requires a primary target source.');
583
+ }
584
+ const preview = await preflightCatalogSourceMutation({
585
+ request: {
586
+ action: 'remove',
587
+ sourceId: source.id,
588
+ ...(replacementPrimarySourceId === null ? {} : { replacementPrimarySourceId }),
589
+ },
590
+ cwd: workspaceRoot,
591
+ env: options.env,
592
+ managedByWorkspaceIdentity: workspaceIdentity,
593
+ });
594
+ const impact = preview.references;
595
+ if (options.sourceId !== undefined && options.yes !== true) {
596
+ return {
597
+ receiptSchemaVersion: 4, command: 'catalog:dev:deactivate', ok: false, state: 'failed',
598
+ workspaceIdentity,
599
+ source: { id: source.id, action: 'retained', previousPrimary: source.primary },
600
+ replacementPrimarySourceId,
601
+ impact,
602
+ recovery: ['Rerun with --source-id and --yes.'],
603
+ errors: [{ code: 'confirmationRequired', message: 'Recovery by source ID requires --yes.' }],
604
+ };
605
+ }
606
+ if ((!impact.inventoryComplete || impact.references.length > 0) && options.yes !== true) {
607
+ return {
608
+ receiptSchemaVersion: 4, command: 'catalog:dev:deactivate', ok: false, state: 'failed',
609
+ workspaceIdentity,
610
+ source: { id: source.id, action: 'retained', previousPrimary: source.primary },
611
+ replacementPrimarySourceId,
612
+ impact,
613
+ recovery: ['Review the source impact, then rerun catalog dev deactivate with --yes.'],
614
+ errors: [{
615
+ code: 'catalogSourceImpactConfirmationRequired',
616
+ message: 'Affected or unknown Catalog source references require --yes.',
617
+ }],
618
+ };
619
+ }
620
+ try {
621
+ await removeCatalogSourceCommand({
622
+ sourceId: source.id, cwd: workspaceRoot, env: options.env,
623
+ runtime: options.runtime?.sourceRuntime,
624
+ managedByWorkspaceIdentity: workspaceIdentity,
625
+ expectedConfigDigest: preview.configDigest,
626
+ expectedImpactDigest: preview.impactDigest,
627
+ requireImpactConfirmation: true,
628
+ confirmImpact: options.yes === true,
629
+ ...(replacementPrimarySourceId === null ? {} : { replacementPrimarySourceId }),
630
+ });
631
+ return {
632
+ receiptSchemaVersion: 4, command: 'catalog:dev:deactivate', ok: true, state: 'completed',
633
+ workspaceIdentity, source: { id: source.id, action: 'removed', previousPrimary: source.primary },
634
+ replacementPrimarySourceId, impact, recovery: [], errors: [],
635
+ };
636
+ }
637
+ catch (error) {
638
+ const after = await readCatalogSourcesConfigSnapshot(options.env).catch(() => null);
639
+ const stillExists = after?.config.sources.some((entry) => entry.id === source.id) ?? true;
640
+ const configChanged = after !== null && after.digest !== preview.configDigest;
641
+ const stale = error instanceof CatalogSourcesConfigConflictError || configChanged;
642
+ return {
643
+ receiptSchemaVersion: 4, command: 'catalog:dev:deactivate', ok: false,
644
+ state: stale ? 'failed' : !stillExists ? 'partial' : 'failed', workspaceIdentity,
645
+ source: { id: source.id, action: stillExists ? 'retained' : 'removed', previousPrimary: source.primary },
646
+ replacementPrimarySourceId,
647
+ impact: failureImpact(error, impact),
648
+ recovery: ['Fix the source configuration, then rerun catalog dev deactivate.'],
649
+ errors: [stale
650
+ ? { code: 'operationReviewStale', message: 'Catalog source evidence changed. Review it again.' }
651
+ : codedFailure(error, 'sourceConfigFailed')],
652
+ };
653
+ }
654
+ }
655
+ //# sourceMappingURL=catalog-dev-source.js.map