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

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 +263 -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
@@ -1,11 +1,6 @@
1
1
  import path from 'node:path';
2
- import { acquireLifecycleOperationLock, discardLifecycleActiveSnapshot, leaseLifecycleActiveSnapshot, prepareLifecycleActiveSnapshot, promoteLifecycleActiveSnapshot, readLifecycleActiveSnapshot, releaseLifecycleActiveSnapshot, removeLifecycleActiveSnapshot, restoreLifecycleActiveScriptInputs, } from '../utils/lifecycle-active-store.js';
2
+ import { readSafeOperationError } from '../utils/safe-operation-diagnostic.js';
3
3
  import { cleanupOwnedComponents, inspectOwnedComponents, validateOwnerIdentity, } from '../utils/ownership.js';
4
- async function withOwnershipLease(target, driver, operation) {
5
- return driver.withOwnershipLease
6
- ? driver.withOwnershipLease(target, operation)
7
- : operation();
8
- }
9
4
  function artifactIdentity(artifact) {
10
5
  return [
11
6
  artifact.platform,
@@ -27,75 +22,6 @@ function bindWrittenArtifacts(target, written) {
27
22
  }
28
23
  target.artifacts = [...written];
29
24
  }
30
- export function createRebuildActiveStore(options) {
31
- return {
32
- prepare: (target) => prepareLifecycleActiveSnapshot({
33
- ...(target.identity.sourceId ? {
34
- sourceId: target.identity.sourceId,
35
- sourceIdentity: target.identity.sourceIdentity,
36
- } : {}),
37
- plugin: target.lifecycleSource,
38
- platform: target.identity.platform,
39
- scope: target.identity.scope,
40
- cwd: target.identity.cwd,
41
- artifacts: target.artifacts,
42
- loadPlugin: options.loadPlugin,
43
- env: options.env,
44
- lifecycleLeaseHeld: options.isLifecycleLeaseHeld?.() === true,
45
- }),
46
- discard: discardLifecycleActiveSnapshot,
47
- promote: promoteLifecycleActiveSnapshot,
48
- read: (target) => readLifecycleActiveSnapshot({
49
- ...(target.identity.sourceId ? {
50
- sourceId: target.identity.sourceId,
51
- sourceIdentity: target.identity.sourceIdentity,
52
- } : {}),
53
- pluginName: target.identity.pluginName,
54
- platform: target.identity.platform,
55
- scope: target.identity.scope,
56
- cwd: target.identity.cwd,
57
- loadPlugin: options.loadPlugin,
58
- env: options.env,
59
- }),
60
- readStable: (target) => leaseLifecycleActiveSnapshot({
61
- ...(target.identity.sourceId ? {
62
- sourceId: target.identity.sourceId,
63
- sourceIdentity: target.identity.sourceIdentity,
64
- } : {}),
65
- pluginName: target.identity.pluginName,
66
- platform: target.identity.platform,
67
- scope: target.identity.scope,
68
- cwd: target.identity.cwd,
69
- loadPlugin: options.loadPlugin,
70
- env: options.env,
71
- lifecycleLeaseHeld: options.isLifecycleLeaseHeld?.() === true,
72
- }),
73
- remove: (target) => removeLifecycleActiveSnapshot({
74
- ...(target.identity.sourceId ? {
75
- sourceId: target.identity.sourceId,
76
- sourceIdentity: target.identity.sourceIdentity,
77
- } : {}),
78
- pluginName: target.identity.pluginName,
79
- platform: target.identity.platform,
80
- scope: target.identity.scope,
81
- cwd: target.identity.cwd,
82
- env: options.env,
83
- lifecycleLeaseHeld: options.isLifecycleLeaseHeld?.() === true,
84
- }),
85
- acquireOperation: (identity) => acquireLifecycleOperationLock({
86
- ...(identity.sourceId ? {
87
- sourceId: identity.sourceId,
88
- sourceIdentity: identity.sourceIdentity,
89
- } : {}),
90
- pluginName: identity.pluginName,
91
- platform: identity.platform,
92
- scope: identity.scope,
93
- cwd: identity.cwd,
94
- env: options.env,
95
- }),
96
- releaseRead: releaseLifecycleActiveSnapshot,
97
- };
98
- }
99
25
  function createAccumulator() {
100
26
  return {
101
27
  actions: [],
@@ -111,26 +37,14 @@ function errorMessage(error) {
111
37
  return error instanceof Error ? error.message : String(error);
112
38
  }
113
39
  const REBUILD_ACTION_FAILURE_MESSAGES = {
114
- 'operation.lock': '获取操作锁失败。',
115
40
  'preflight.inspect': '检查当前组件失败。',
116
41
  'stale.cleanup': '清理过期组件失败。',
117
42
  'native.write': '写入平台插件失败。',
118
43
  'artifacts.write': '写入插件文件失败。',
119
- 'active.prepare': '准备生命周期快照失败。',
120
- 'active.discard': '丢弃生命周期快照失败。',
121
- 'lifecycle.install': '运行安装生命周期失败。',
122
- 'lifecycle.upgrade': '运行升级生命周期失败。',
123
- 'lifecycle.uninstall': '运行卸载生命周期失败。',
124
- 'active.promote': '启用生命周期快照失败。',
44
+ preApply: '运行 preApply 失败。',
125
45
  'postcheck.inspect': '检查写入结果失败。',
126
- 'marketplace.commit': '提交 marketplace generation 失败。',
127
- 'marketplace.rollback': '回滚 marketplace generation 失败。',
128
46
  'recovery.cleanup': '清理失败写入失败。',
129
47
  'cleanup.owned': '清理 AW 组件失败。',
130
- 'active.read': '读取生命周期快照失败。',
131
- 'active.remove': '删除生命周期快照失败。',
132
- 'active.release': '释放生命周期快照失败。',
133
- 'operation.release': '释放操作锁失败。',
134
48
  };
135
49
  function rebuildActionFailureMessage(name) {
136
50
  return REBUILD_ACTION_FAILURE_MESSAGES[name];
@@ -143,22 +57,6 @@ async function emitRebuildAction(events, event) {
143
57
  // Progress diagnostics must not change the rebuild result.
144
58
  }
145
59
  }
146
- export async function releaseRebuildOperationLease(lock) {
147
- let lastError;
148
- for (let attempt = 0; attempt < 3; attempt += 1) {
149
- try {
150
- await lock.release();
151
- return;
152
- }
153
- catch (error) {
154
- lastError = error;
155
- if (!new Set(['EACCES', 'EBUSY', 'EINTR', 'EIO', 'ENOTEMPTY', 'EPERM']).has(error.code ?? '')) {
156
- throw error;
157
- }
158
- }
159
- }
160
- throw lastError;
161
- }
162
60
  function pushUnique(target, values) {
163
61
  for (const value of values) {
164
62
  if (!target.includes(value))
@@ -174,21 +72,23 @@ function mergeCleanup(accumulator, cleanup, phase) {
174
72
  phase,
175
73
  label: failure.label,
176
74
  message: failure.message,
75
+ ...(failure.operationDiagnostic ? { operationDiagnostic: failure.operationDiagnostic } : {}),
177
76
  })));
178
77
  }
179
78
  function succeeded(command, target, accumulator) {
180
79
  return { status: 'succeeded', command, target: target.identity, ...accumulator };
181
80
  }
182
- function failed(command, target, accumulator, phase, message) {
81
+ function failed(command, target, accumulator, phase, message, operationDiagnostic) {
82
+ operationDiagnostic ??= accumulator.failures.find((failure) => failure.phase === phase && failure.message === message)?.operationDiagnostic;
183
83
  if (!accumulator.failures.some((failure) => failure.phase === phase && failure.message === message)) {
184
- accumulator.failures.unshift({ phase, message });
84
+ accumulator.failures.unshift({ phase, message, ...(operationDiagnostic ? { operationDiagnostic } : {}) });
185
85
  }
186
86
  return {
187
87
  status: 'failed',
188
88
  command,
189
89
  target: target.identity,
190
90
  ...accumulator,
191
- error: { phase, message },
91
+ error: { phase, message, ...(operationDiagnostic ? { operationDiagnostic } : {}) },
192
92
  };
193
93
  }
194
94
  async function action(accumulator, name, operation, events, failureMessage) {
@@ -259,10 +159,10 @@ function validateDesiredTarget(target) {
259
159
  throw new Error('Desired target has an invalid namespaced source identity.');
260
160
  }
261
161
  if (target.plugin.manifest.name !== pluginName
262
- || target.lifecycleSource.manifest.name !== pluginName
162
+ || target.preApplySource.manifest.name !== pluginName
263
163
  || target.plugin.manifest.version !== pluginVersion
264
- || target.lifecycleSource.manifest.version !== pluginVersion) {
265
- throw new Error('Desired target plugin name/version does not match its lifecycle source and identity.');
164
+ || target.preApplySource.manifest.version !== pluginVersion) {
165
+ throw new Error('Desired target plugin name/version does not match its preApply source and identity.');
266
166
  }
267
167
  if (platform !== 'codex' && platform !== 'claude') {
268
168
  throw new Error(`Desired target platform is invalid: ${String(platform)}`);
@@ -272,15 +172,26 @@ function validateDesiredTarget(target) {
272
172
  }
273
173
  const identityKeys = new Set();
274
174
  const componentPaths = new Set();
175
+ const desiredComponents = target.desiredOwnedComponents ?? target.ownedComponents;
176
+ const desiredComponentSet = new Set(desiredComponents);
177
+ const sharedNativeSkillKeys = new Set((target.plugin.manifest.artifacts?.targets ?? [])
178
+ .filter((artifactTarget) => artifactTarget.platform === 'codex'
179
+ && artifactTarget.target === 'codex.skill'
180
+ && artifactTarget.delivery?.mode === 'codex-native')
181
+ .map((artifactTarget) => artifactTarget.skillKey));
275
182
  let nativeCount = 0;
276
183
  for (const component of target.ownedComponents) {
277
184
  validateOwnerIdentity(component.identity);
185
+ const crossScopeLegacyNativeSkill = platform === 'codex'
186
+ && component.kind === 'skill-directory'
187
+ && !desiredComponentSet.has(component)
188
+ && sharedNativeSkillKeys.has(component.identity.artifactKey)
189
+ && component.identity.scope !== scope;
278
190
  if (component.identity.plugin !== pluginName
279
191
  || component.identity.sourceId !== sourceId
280
- || component.identity.sourceIdentity !== sourceIdentity
281
192
  || component.identity.pluginId !== pluginId
282
193
  || component.identity.platform !== platform
283
- || component.identity.scope !== scope) {
194
+ || (component.identity.scope !== scope && !crossScopeLegacyNativeSkill)) {
284
195
  throw new Error('Owned component identity does not match the desired target.');
285
196
  }
286
197
  const identityKey = [
@@ -289,6 +200,7 @@ function validateDesiredTarget(target) {
289
200
  component.identity.artifactKey,
290
201
  component.identity.platform,
291
202
  component.identity.scope,
203
+ component.kind,
292
204
  ].join('\0');
293
205
  if (identityKeys.has(identityKey)) {
294
206
  throw new Error(`Desired target has a duplicate owned component identity: ${component.identity.artifactKey}`);
@@ -308,7 +220,9 @@ function validateDesiredTarget(target) {
308
220
  }
309
221
  }
310
222
  }
311
- const desiredComponents = target.desiredOwnedComponents ?? target.ownedComponents;
223
+ if (target.forceExclusiveCleanup && target.ownedComponents.some((component) => component.kind !== 'skill-directory' && component.kind !== 'owned-text-file')) {
224
+ throw new Error('Force cleanup only supports exclusive skill directories and owned text files.');
225
+ }
312
226
  nativeCount = desiredComponents.filter((component) => component.kind === 'native-plugin').length;
313
227
  if (target.requiresNative ? nativeCount !== 1 : nativeCount !== 0) {
314
228
  throw new Error(target.requiresNative
@@ -334,7 +248,7 @@ function collisionMessage(inspection) {
334
248
  if (inspection.errors.length > 0) {
335
249
  return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
336
250
  }
337
- const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'error'));
251
+ const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'));
338
252
  if (collision) {
339
253
  return collision.diagnostic ?? 'Owned component preflight failed.';
340
254
  }
@@ -353,7 +267,7 @@ function isUninstallLiveOwnershipComponent(component) {
353
267
  }
354
268
  function recordInspectionResiduals(accumulator, inspection) {
355
269
  pushUnique(accumulator.residual, inspection.components
356
- .filter((component) => component.state === 'partial' || component.state === 'error')
270
+ .filter((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'))
357
271
  .map((component) => ownedComponentLabel(component.component)));
358
272
  }
359
273
  function postcheckMessage(accumulator, inspection) {
@@ -371,6 +285,11 @@ function postcheckMessage(accumulator, inspection) {
371
285
  })));
372
286
  return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
373
287
  }
288
+ if (invalid.some((component) => component.state === 'partial'
289
+ && component.component.kind === 'native-plugin'
290
+ && component.component.identity.platform === 'codex')) {
291
+ return 'codexActivationPostcheckFailed: Codex scope activation was not observed as enabled.';
292
+ }
374
293
  const diagnostics = invalid
375
294
  .map((component) => component.diagnostic)
376
295
  .filter((diagnostic) => diagnostic !== undefined);
@@ -378,17 +297,24 @@ function postcheckMessage(accumulator, inspection) {
378
297
  return diagnostics.join('; ');
379
298
  return `Post-install ownership inspection failed for ${invalid.length} component(s).`;
380
299
  }
381
- async function cleanupOwned(target, driver, components = target.ownedComponents) {
382
- return withOwnershipLease(target, driver, () => cleanupOwnedComponents({
300
+ async function cleanupOwned(target, driver, components = target.ownedComponents, hooks = {}) {
301
+ return cleanupOwnedComponents({
383
302
  components,
303
+ executor: driver.ownership,
384
304
  nativeProbe: driver.probeNative,
385
305
  nativeRemove: driver.removeNative,
386
- }));
306
+ forceExclusive: target.forceExclusiveCleanup,
307
+ ...hooks,
308
+ beforeMutation: async (component) => {
309
+ await hooks.beforeMutation?.(component);
310
+ await driver.beforeCleanupMutation?.(component);
311
+ },
312
+ });
387
313
  }
388
- async function cleanupTarget(target, driver, store, accumulator, ownedAction, events) {
314
+ async function cleanupTarget(target, driver, accumulator, ownedAction, events, components = target.ownedComponents, hooks = {}) {
389
315
  accumulator.cleanupAttempted = true;
390
316
  try {
391
- const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver), events, (value) => value.failures[0]?.message
317
+ const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver, components, hooks), events, (value) => value.failures[0]?.message
392
318
  ?? (value.residual.length > 0
393
319
  ? `Ownership cleanup left residual components: ${value.residual.join(', ')}`
394
320
  : value.quarantined.length > 0
@@ -412,41 +338,64 @@ async function cleanupTarget(target, driver, store, accumulator, ownedAction, ev
412
338
  accumulator.failures.push({ phase: ownedAction, message });
413
339
  return { phase: ownedAction, message };
414
340
  }
415
- try {
416
- await action(accumulator, 'active.remove', () => store.remove(target), events);
417
- }
418
- catch (error) {
419
- const message = errorMessage(error);
420
- accumulator.failures.push({ phase: 'active.remove', message });
421
- return { phase: 'active.remove', message };
422
- }
423
341
  return null;
424
342
  }
343
+ export async function executeRebuildComponentCleanup(options) {
344
+ const accumulator = createAccumulator();
345
+ accumulator.actions.push(...(options.actions ?? []));
346
+ const cleanupError = await cleanupTarget(options.target, options.driver, accumulator, 'cleanup.owned', {
347
+ command: options.command,
348
+ target: options.target.identity,
349
+ emit: options.onActionEvent,
350
+ now: options.now ?? Date.now,
351
+ }, options.components, {
352
+ ...(options.beforeMutation ? { beforeMutation: options.beforeMutation } : {}),
353
+ ...(options.afterQuarantine ? { afterQuarantine: options.afterQuarantine } : {}),
354
+ });
355
+ return cleanupError
356
+ ? failed(options.command, options.target, accumulator, cleanupError.phase, cleanupError.message)
357
+ : succeeded(options.command, options.target, accumulator);
358
+ }
425
359
  async function materializeTarget(options) {
426
- const { command, lifecycleEvent, target, driver, store, accumulator, events } = options;
427
- let inspection;
428
- try {
429
- inspection = await action(accumulator, 'preflight.inspect', () => withOwnershipLease(target, driver, async () => {
430
- await driver.preflightMaterialize?.(target);
431
- return inspectOwnedComponents({
432
- components: target.ownedComponents,
433
- nativeProbe: driver.probeNative,
434
- });
435
- }), events, collisionMessage);
436
- }
437
- catch (error) {
438
- return failed(command, target, accumulator, 'preflight.inspect', errorMessage(error));
360
+ const { command, target, driver, accumulator, events } = options;
361
+ let inspection = options.inspection;
362
+ if (!inspection) {
363
+ try {
364
+ inspection = await action(accumulator, 'preflight.inspect', async () => {
365
+ await driver.preflightMaterialize?.(target);
366
+ return inspectOwnedComponents({
367
+ components: target.ownedComponents,
368
+ executor: driver.ownership,
369
+ nativeProbe: driver.probeNative,
370
+ });
371
+ }, events, collisionMessage);
372
+ }
373
+ catch (error) {
374
+ return failed(command, target, accumulator, 'preflight.inspect', errorMessage(error), readSafeOperationError(error));
375
+ }
439
376
  }
440
377
  const collision = collisionMessage(inspection);
441
378
  if (collision) {
442
379
  recordInspectionResiduals(accumulator, inspection);
443
380
  return failed(command, target, accumulator, 'preflight.inspect', collision);
444
381
  }
382
+ if (!options.preApplyCompleted && target.preApplySource.manifest.scripts?.preApply) {
383
+ try {
384
+ await action(accumulator, 'preApply', () => driver.runPreApply({
385
+ target,
386
+ plugin: target.preApplySource,
387
+ }), events);
388
+ }
389
+ catch (error) {
390
+ return failed(command, target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
391
+ }
392
+ }
445
393
  const desiredComponents = new Set(target.desiredOwnedComponents ?? target.ownedComponents);
446
394
  const optionalComponents = new Set(target.optionalOwnedComponents ?? []);
447
395
  const staleComponents = target.ownedComponents.filter((component) => !desiredComponents.has(component) && !optionalComponents.has(component));
448
396
  const staleInspection = inspection.components.filter((entry) => staleComponents.includes(entry.component));
449
- if (staleInspection.some((component) => component.state === 'present')) {
397
+ if (!options.skipStaleCleanup
398
+ && staleInspection.some((component) => component.state === 'present')) {
450
399
  accumulator.cleanupAttempted = true;
451
400
  let stale;
452
401
  try {
@@ -456,7 +405,7 @@ async function materializeTarget(options) {
456
405
  : undefined));
457
406
  }
458
407
  catch (error) {
459
- return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error));
408
+ return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error), readSafeOperationError(error));
460
409
  }
461
410
  mergeCleanup(accumulator, stale, 'stale.cleanup');
462
411
  if (stale.failures.length > 0 || stale.residual.length > 0) {
@@ -466,9 +415,8 @@ async function materializeTarget(options) {
466
415
  }
467
416
  }
468
417
  let failurePhase = 'native.write';
469
- let prepared;
470
418
  try {
471
- if (target.requiresNative) {
419
+ if (target.writeNativeRequired ?? target.requiresNative) {
472
420
  failurePhase = 'native.write';
473
421
  await action(accumulator, failurePhase, () => driver.writeNative(target), events);
474
422
  }
@@ -477,69 +425,43 @@ async function materializeTarget(options) {
477
425
  const writtenArtifacts = await driver.writeArtifacts(target);
478
426
  bindWrittenArtifacts(target, writtenArtifacts);
479
427
  }, events);
480
- failurePhase = 'active.prepare';
481
- prepared = await action(accumulator, failurePhase, () => store.prepare(target), events);
482
- failurePhase = `lifecycle.${lifecycleEvent}`;
483
- await action(accumulator, failurePhase, () => driver.runLifecycle({
484
- event: lifecycleEvent,
485
- target,
486
- plugin: target.lifecycleSource,
487
- artifacts: target.artifacts,
488
- }), events);
489
- failurePhase = 'active.promote';
490
- await action(accumulator, failurePhase, () => store.promote(prepared), events);
491
- failurePhase = 'postcheck.inspect';
492
- await action(accumulator, failurePhase, async () => {
428
+ const postcheck = () => action(accumulator, 'postcheck.inspect', async () => {
493
429
  const optional = new Set(target.optionalOwnedComponents ?? []);
494
- const postcheck = await withOwnershipLease(target, driver, () => inspectOwnedComponents({
430
+ const postcheck = await inspectOwnedComponents({
495
431
  components: (target.desiredOwnedComponents ?? target.ownedComponents)
496
432
  .filter((component) => !optional.has(component)),
497
433
  nativeProbe: driver.probeNativeHealth ?? driver.probeNative,
434
+ executor: driver.ownership,
498
435
  verifyHealth: true,
499
- }));
436
+ });
500
437
  const postcheckFailure = postcheckMessage(accumulator, postcheck);
501
438
  if (postcheckFailure)
502
439
  throw new Error(postcheckFailure);
503
440
  }, events);
504
- if (driver.commitMaterialize) {
505
- failurePhase = 'marketplace.commit';
506
- await action(accumulator, failurePhase, () => driver.commitMaterialize(target), events);
441
+ failurePhase = 'postcheck.inspect';
442
+ if (driver.deferPostcheck?.(target, postcheck) !== true) {
443
+ await postcheck();
507
444
  }
508
445
  return succeeded(command, target, accumulator);
509
446
  }
510
447
  catch (error) {
511
448
  const primary = errorMessage(error);
512
- if (error.durableMaterializeCommit === true) {
513
- return failed(command, target, accumulator, failurePhase, primary);
449
+ if (error.nativeMarketplaceGroupFailure === true) {
450
+ return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
514
451
  }
515
- if (prepared) {
516
- try {
517
- await action(accumulator, 'active.discard', () => store.discard(prepared), events);
518
- }
519
- catch (discardError) {
520
- accumulator.failures.push({
521
- phase: 'active.discard',
522
- message: errorMessage(discardError),
523
- });
524
- }
452
+ if (target.identity.platform === 'codex') {
453
+ const recoveryComponents = target.ownedComponents.filter((component) => component.kind === 'skill-directory' || component.kind === 'owned-text-file');
454
+ await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events, driver.selectRecoveryCleanupComponents?.(target, recoveryComponents)
455
+ ?? recoveryComponents);
525
456
  }
526
- await cleanupTarget(target, driver, store, accumulator, 'recovery.cleanup', events);
527
- if (driver.rollbackMaterialize) {
528
- try {
529
- await action(accumulator, 'marketplace.rollback', () => driver.rollbackMaterialize(target), events);
530
- }
531
- catch (rollbackError) {
532
- accumulator.failures.push({
533
- phase: 'marketplace.rollback',
534
- message: errorMessage(rollbackError),
535
- });
536
- }
457
+ else {
458
+ await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events);
537
459
  }
538
- return failed(command, target, accumulator, failurePhase, primary);
460
+ return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
539
461
  }
540
462
  }
541
463
  async function executeCleanup(options) {
542
- const cleanupError = await cleanupTarget(options.target, options.driver, options.store, options.accumulator, 'cleanup.owned', options.events);
464
+ const cleanupError = await cleanupTarget(options.target, options.driver, options.accumulator, 'cleanup.owned', options.events);
543
465
  if (cleanupError) {
544
466
  return failed(options.command, options.target, options.accumulator, cleanupError.phase, cleanupError.message);
545
467
  }
@@ -554,13 +476,14 @@ async function executeCleanup(options) {
554
476
  return succeeded(options.command, options.target, options.accumulator);
555
477
  }
556
478
  async function executeUninstall(options) {
557
- const { target, driver, store, accumulator, events } = options;
479
+ const { target, driver, accumulator, events } = options;
558
480
  let inspection;
559
481
  try {
560
- inspection = await action(accumulator, 'preflight.inspect', () => withOwnershipLease(target, driver, () => inspectOwnedComponents({
482
+ inspection = await action(accumulator, 'preflight.inspect', () => inspectOwnedComponents({
561
483
  components: target.ownedComponents,
484
+ executor: driver.ownership,
562
485
  nativeProbe: driver.probeNative,
563
- })), events, collisionMessage);
486
+ }), events, collisionMessage);
564
487
  }
565
488
  catch (error) {
566
489
  return failed('uninstall', target, accumulator, 'preflight.inspect', errorMessage(error));
@@ -570,82 +493,13 @@ async function executeUninstall(options) {
570
493
  recordInspectionResiduals(accumulator, inspection);
571
494
  return failed('uninstall', target, accumulator, 'preflight.inspect', preflightCollision);
572
495
  }
573
- let snapshot;
574
- const stableRead = store.readStable !== undefined;
575
- try {
576
- snapshot = await action(accumulator, 'active.read', () => (store.readStable ?? store.read)(target), events);
577
- }
578
- catch (error) {
579
- const message = `Active lifecycle snapshot is corrupt. Run cleanup to remove live outputs without lifecycle: ${errorMessage(error)}`;
580
- return failed('uninstall', target, accumulator, 'active.read', message);
581
- }
582
- if (!snapshot) {
583
- const live = inspection.components.filter((component) => component.state !== 'absent'
584
- && isUninstallLiveOwnershipComponent(component.component));
585
- if (live.length === 0)
586
- return succeeded('uninstall', target, accumulator);
587
- if (!target.plugin.manifest.scripts?.lifecycle?.uninstall) {
588
- const cleanupError = await cleanupTarget(target, driver, store, accumulator, 'cleanup.owned', events);
589
- if (cleanupError) {
590
- return failed('uninstall', target, accumulator, cleanupError.phase, cleanupError.message);
591
- }
592
- if (driver.finalizeCleanup) {
593
- try {
594
- await driver.finalizeCleanup(target);
595
- }
596
- catch (error) {
597
- return failed('uninstall', target, accumulator, 'cleanup.owned', errorMessage(error));
598
- }
599
- }
600
- return succeeded('uninstall', target, accumulator);
601
- }
602
- pushUnique(accumulator.residual, live.map((component) => ownedComponentLabel(component.component)));
603
- return failed('uninstall', target, accumulator, 'active.read', 'Active lifecycle snapshot is missing while live owned components exist. Run cleanup to remove them without lifecycle.');
604
- }
605
- const live = inspection.components.filter((component) => component.state === 'present'
496
+ const live = inspection.components.filter((component) => component.state !== 'absent'
606
497
  && isUninstallLiveOwnershipComponent(component.component));
607
- if (live.length === 0) {
608
- if (stableRead && store.releaseRead) {
609
- try {
610
- await action(accumulator, 'active.release', () => store.releaseRead(snapshot), events);
611
- }
612
- catch (error) {
613
- return failed('uninstall', target, accumulator, 'active.release', errorMessage(error));
614
- }
615
- }
616
- return failed('uninstall', target, accumulator, 'preflight.inspect', 'liveOwnershipRequired: uninstall requires at least one live owned or native component. Run cleanup to remove orphan lifecycle metadata.');
617
- }
618
- const historical = restoreLifecycleActiveScriptInputs(snapshot);
619
- let lifecycleError;
620
- try {
621
- await action(accumulator, 'lifecycle.uninstall', () => driver.runLifecycle({
622
- event: 'uninstall',
623
- target,
624
- plugin: historical.currentPlugin,
625
- artifacts: historical.artifacts,
626
- }), events);
627
- }
628
- catch (error) {
629
- lifecycleError = error;
630
- }
631
- if (stableRead && store.releaseRead) {
632
- try {
633
- await action(accumulator, 'active.release', () => store.releaseRead(snapshot), events);
498
+ if (live.length > 0) {
499
+ const cleanupError = await cleanupTarget(target, driver, accumulator, 'cleanup.owned', events);
500
+ if (cleanupError) {
501
+ return failed('uninstall', target, accumulator, cleanupError.phase, cleanupError.message);
634
502
  }
635
- catch (error) {
636
- const message = errorMessage(error);
637
- accumulator.failures.push({ phase: 'active.release', message });
638
- if (lifecycleError === undefined) {
639
- return failed('uninstall', target, accumulator, 'active.release', message);
640
- }
641
- }
642
- }
643
- if (lifecycleError !== undefined) {
644
- return failed('uninstall', target, accumulator, 'lifecycle.uninstall', errorMessage(lifecycleError));
645
- }
646
- const cleanupError = await cleanupTarget(target, driver, store, accumulator, 'cleanup.owned', events);
647
- if (cleanupError) {
648
- return failed('uninstall', target, accumulator, cleanupError.phase, cleanupError.message);
649
503
  }
650
504
  if (driver.finalizeCleanup) {
651
505
  try {
@@ -659,62 +513,62 @@ async function executeUninstall(options) {
659
513
  }
660
514
  export async function executeRebuildOperation(options) {
661
515
  const accumulator = createAccumulator();
662
- const store = options.activeStore;
663
516
  const events = {
664
517
  command: options.command,
665
518
  target: options.target.identity,
666
519
  emit: options.onActionEvent,
667
520
  now: options.now ?? Date.now,
668
521
  };
522
+ if (options.preparation) {
523
+ if (options.preparation.command !== options.command
524
+ || options.preparation.target !== options.target) {
525
+ return failed(options.command, options.target, accumulator, 'preflight', 'Prepared rebuild operation does not match the requested target.');
526
+ }
527
+ accumulator.actions.push(...options.preparation.actions);
528
+ try {
529
+ await options.driver.preflightMutation?.(options.target);
530
+ }
531
+ catch (error) {
532
+ return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
533
+ }
534
+ try {
535
+ return await executeRebuildOperationCore(options, accumulator, events, options.preparation);
536
+ }
537
+ catch (error) {
538
+ return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
539
+ }
540
+ }
669
541
  try {
670
542
  validateDesiredTarget(options.target);
671
543
  }
672
544
  catch (error) {
673
545
  return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
674
546
  }
675
- let operationLock;
676
- if (store.acquireOperation) {
677
- try {
678
- operationLock = await action(accumulator, 'operation.lock', () => store.acquireOperation(options.target.identity), events);
679
- }
680
- catch (error) {
681
- return failed(options.command, options.target, accumulator, 'operation.lock', errorMessage(error));
682
- }
683
- }
684
- let result;
685
547
  try {
686
- const execute = () => executeRebuildOperationLocked(options, accumulator, store, events);
687
- result = options.target.identity.sourceId !== undefined
688
- ? await (options.driver.withMaterializeLease?.(options.target, execute) ?? execute())
689
- : await execute();
548
+ await options.driver.preflightMutation?.(options.target);
690
549
  }
691
550
  catch (error) {
692
- result = failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
551
+ return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
693
552
  }
694
- if (operationLock) {
695
- try {
696
- await action(accumulator, 'operation.release', () => releaseRebuildOperationLease(operationLock), events);
697
- }
698
- catch (error) {
699
- const message = errorMessage(error);
700
- accumulator.failures.push({ phase: 'operation.release', message });
701
- if (result.status === 'succeeded') {
702
- return failed(options.command, options.target, accumulator, 'operation.release', message);
703
- }
704
- }
553
+ try {
554
+ return await executeRebuildOperationCore(options, accumulator, events);
555
+ }
556
+ catch (error) {
557
+ return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
705
558
  }
706
- return result;
707
559
  }
708
- async function executeRebuildOperationLocked(options, accumulator, store, events) {
709
- if (options.command === 'install' || options.command === 'upgrade') {
560
+ async function executeRebuildOperationCore(options, accumulator, events, preparation) {
561
+ if (options.command === 'install') {
710
562
  return materializeTarget({
711
563
  command: options.command,
712
- lifecycleEvent: options.command,
713
564
  target: options.target,
714
565
  driver: options.driver,
715
- store,
716
566
  accumulator,
717
567
  events,
568
+ ...(preparation ? {
569
+ inspection: preparation.inspection,
570
+ preApplyCompleted: true,
571
+ } : {}),
718
572
  });
719
573
  }
720
574
  if (options.command === 'cleanup') {
@@ -722,7 +576,6 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
722
576
  command: 'cleanup',
723
577
  target: options.target,
724
578
  driver: options.driver,
725
- store,
726
579
  accumulator,
727
580
  events,
728
581
  });
@@ -731,34 +584,46 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
731
584
  return executeUninstall({
732
585
  target: options.target,
733
586
  driver: options.driver,
734
- store,
735
587
  accumulator,
736
588
  events,
737
589
  });
738
590
  }
739
- let inspection;
740
- try {
741
- inspection = await action(accumulator, 'preflight.inspect', () => withOwnershipLease(options.target, options.driver, async () => {
742
- await options.driver.preflightMaterialize?.(options.target);
743
- return inspectOwnedComponents({
744
- components: options.target.ownedComponents,
745
- nativeProbe: options.driver.probeNative,
746
- });
747
- }), events, collisionMessage);
748
- }
749
- catch (error) {
750
- return failed('reinstall', options.target, accumulator, 'preflight.inspect', errorMessage(error));
751
- }
752
- const collision = collisionMessage(inspection);
753
- if (collision) {
754
- recordInspectionResiduals(accumulator, inspection);
755
- return failed('reinstall', options.target, accumulator, 'preflight.inspect', collision);
591
+ let inspection = preparation?.inspection;
592
+ if (!inspection) {
593
+ try {
594
+ inspection = await action(accumulator, 'preflight.inspect', async () => {
595
+ await options.driver.preflightMaterialize?.(options.target);
596
+ return inspectOwnedComponents({
597
+ components: options.target.ownedComponents,
598
+ executor: options.driver.ownership,
599
+ nativeProbe: options.driver.probeNative,
600
+ });
601
+ }, events, collisionMessage);
602
+ }
603
+ catch (error) {
604
+ return failed('reinstall', options.target, accumulator, 'preflight.inspect', errorMessage(error));
605
+ }
606
+ const collision = collisionMessage(inspection);
607
+ if (collision) {
608
+ recordInspectionResiduals(accumulator, inspection);
609
+ return failed('reinstall', options.target, accumulator, 'preflight.inspect', collision);
610
+ }
611
+ if (options.target.preApplySource.manifest.scripts?.preApply) {
612
+ try {
613
+ await action(accumulator, 'preApply', () => options.driver.runPreApply({
614
+ target: options.target,
615
+ plugin: options.target.preApplySource,
616
+ }), events);
617
+ }
618
+ catch (error) {
619
+ return failed('reinstall', options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
620
+ }
621
+ }
756
622
  }
757
623
  const cleanupResult = await executeCleanup({
758
624
  command: 'reinstall',
759
625
  target: options.target,
760
626
  driver: options.driver,
761
- store,
762
627
  accumulator,
763
628
  events,
764
629
  });
@@ -766,14 +631,83 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
766
631
  return cleanupResult;
767
632
  return materializeTarget({
768
633
  command: 'reinstall',
769
- lifecycleEvent: 'install',
770
634
  target: options.target,
771
635
  driver: options.driver,
772
- store,
773
636
  accumulator,
774
637
  events,
638
+ inspection,
639
+ preApplyCompleted: true,
640
+ skipStaleCleanup: true,
775
641
  });
776
642
  }
643
+ export async function prepareRebuildOperation(options) {
644
+ const accumulator = createAccumulator();
645
+ const events = {
646
+ command: options.command,
647
+ target: options.target.identity,
648
+ emit: options.onActionEvent,
649
+ now: options.now ?? Date.now,
650
+ };
651
+ try {
652
+ validateDesiredTarget(options.target);
653
+ }
654
+ catch (error) {
655
+ return {
656
+ status: 'failed',
657
+ result: failed(options.command, options.target, accumulator, 'preflight', errorMessage(error)),
658
+ };
659
+ }
660
+ let inspection;
661
+ try {
662
+ inspection = await action(accumulator, 'preflight.inspect', async () => {
663
+ await options.driver.preflightMaterialize?.(options.target);
664
+ return inspectOwnedComponents({
665
+ components: options.deferNativeInspection
666
+ ? options.target.ownedComponents.filter((component) => component.kind !== 'native-plugin')
667
+ : options.target.ownedComponents,
668
+ executor: options.driver.ownership,
669
+ nativeProbe: options.driver.probeNative,
670
+ });
671
+ }, events, collisionMessage);
672
+ }
673
+ catch (error) {
674
+ return {
675
+ status: 'failed',
676
+ result: failed(options.command, options.target, accumulator, 'preflight.inspect', errorMessage(error)),
677
+ };
678
+ }
679
+ const collision = collisionMessage(inspection);
680
+ if (collision) {
681
+ recordInspectionResiduals(accumulator, inspection);
682
+ return {
683
+ status: 'failed',
684
+ result: failed(options.command, options.target, accumulator, 'preflight.inspect', collision),
685
+ };
686
+ }
687
+ if (!options.skipPreApply && options.target.preApplySource.manifest.scripts?.preApply) {
688
+ try {
689
+ await action(accumulator, 'preApply', () => options.driver.runPreApply({
690
+ target: options.target,
691
+ plugin: options.target.preApplySource,
692
+ }), events);
693
+ }
694
+ catch (error) {
695
+ return {
696
+ status: 'failed',
697
+ result: failed(options.command, options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error)),
698
+ };
699
+ }
700
+ }
701
+ return {
702
+ status: 'ready',
703
+ preparation: {
704
+ command: options.command,
705
+ target: options.target,
706
+ inspection,
707
+ actions: accumulator.actions,
708
+ },
709
+ };
710
+ }
777
711
  export async function executeRebuildTargets(options) {
778
712
  const results = [];
779
713
  for (const target of options.targets) {
@@ -781,11 +715,24 @@ export async function executeRebuildTargets(options) {
781
715
  command: options.command,
782
716
  target,
783
717
  driver: options.driver,
784
- activeStore: options.activeStore,
785
718
  ...(options.onActionEvent ? { onActionEvent: options.onActionEvent } : {}),
786
719
  ...(options.now ? { now: options.now } : {}),
787
720
  }));
788
721
  }
722
+ const postcheckFailures = await options.driver.completePostchecks?.() ?? [];
723
+ for (const failure of postcheckFailures) {
724
+ const index = results.findIndex((result) => result.target === failure.target.identity);
725
+ if (index === -1 || results[index].status === 'failed')
726
+ continue;
727
+ const result = results[index];
728
+ const message = errorMessage(failure.error);
729
+ result.failures.unshift({ phase: 'postcheck.inspect', message });
730
+ results[index] = {
731
+ ...result,
732
+ status: 'failed',
733
+ error: { phase: 'postcheck.inspect', message },
734
+ };
735
+ }
789
736
  return results;
790
737
  }
791
738
  //# sourceMappingURL=rebuild-operations.js.map