@lesliechan721/aw 0.1.0-beta.3 → 0.1.0-beta.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) 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/scripts/add-skill.mjs +4 -4
  4. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  5. package/dist/authoring/scripts/init-plugin.mjs +67 -97
  6. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  7. package/dist/authoring/scripts/lib/plugin-version-check.d.mts +15 -0
  8. package/dist/authoring/scripts/lib/plugin-version-check.mjs +239 -232
  9. package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
  10. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -90
  11. package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -120
  12. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  13. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  14. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  15. package/dist/authoring/scripts/remove-plugin.mjs +367 -0
  16. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -0
  17. package/dist/authoring/scripts/validate-plugin.mjs +307 -1173
  18. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  19. package/dist/scripts/aw-skill-eval-materializer.d.ts +26 -0
  20. package/dist/scripts/aw-skill-eval-materializer.js +306 -0
  21. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
  22. package/dist/scripts/bundle-plugins.d.ts +1 -2
  23. package/dist/scripts/bundle-plugins.js +24 -7
  24. package/dist/scripts/bundle-plugins.js.map +1 -1
  25. package/dist/scripts/plugin-staging.d.ts +7 -24
  26. package/dist/scripts/plugin-staging.js +22 -142
  27. package/dist/scripts/plugin-staging.js.map +1 -1
  28. package/dist/scripts/test-plugin-scripts.d.ts +2 -0
  29. package/dist/scripts/test-plugin-scripts.js +27 -75
  30. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  31. package/dist/src/adapters/helpers.js +2 -2
  32. package/dist/src/adapters/helpers.js.map +1 -1
  33. package/dist/src/authoring/workspace-commands.d.ts +26 -2
  34. package/dist/src/authoring/workspace-commands.js +44 -19
  35. package/dist/src/authoring/workspace-commands.js.map +1 -1
  36. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  37. package/dist/src/commands/aw-capabilities.js +256 -0
  38. package/dist/src/commands/aw-capabilities.js.map +1 -0
  39. package/dist/src/commands/catalog-dev-source.d.ts +154 -0
  40. package/dist/src/commands/catalog-dev-source.js +655 -0
  41. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  42. package/dist/src/commands/catalog-generation.d.ts +21 -0
  43. package/dist/src/commands/catalog-generation.js +9 -0
  44. package/dist/src/commands/catalog-generation.js.map +1 -0
  45. package/dist/src/commands/catalog-publication-inspection.d.ts +138 -0
  46. package/dist/src/commands/catalog-publication-inspection.js +757 -0
  47. package/dist/src/commands/catalog-publication-inspection.js.map +1 -0
  48. package/dist/src/commands/catalog-publication-journal.d.ts +68 -0
  49. package/dist/src/commands/catalog-publication-journal.js +292 -0
  50. package/dist/src/commands/catalog-publication-journal.js.map +1 -0
  51. package/dist/src/commands/catalog-publication-target.d.ts +18 -0
  52. package/dist/src/commands/catalog-publication-target.js +95 -0
  53. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  54. package/dist/src/commands/catalog-publish.d.ts +77 -7
  55. package/dist/src/commands/catalog-publish.js +746 -316
  56. package/dist/src/commands/catalog-publish.js.map +1 -1
  57. package/dist/src/commands/catalog-source.d.ts +60 -22
  58. package/dist/src/commands/catalog-source.js +311 -91
  59. package/dist/src/commands/catalog-source.js.map +1 -1
  60. package/dist/src/commands/catalog-status.d.ts +56 -0
  61. package/dist/src/commands/catalog-status.js +217 -0
  62. package/dist/src/commands/catalog-status.js.map +1 -0
  63. package/dist/src/commands/catalog-store.d.ts +104 -0
  64. package/dist/src/commands/catalog-store.js +685 -0
  65. package/dist/src/commands/catalog-store.js.map +1 -0
  66. package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
  67. package/dist/src/commands/catalog-workspace-resolution.js +42 -0
  68. package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
  69. package/dist/src/commands/console.js +28 -17
  70. package/dist/src/commands/console.js.map +1 -1
  71. package/dist/src/commands/dependency-operation-plan.d.ts +52 -15
  72. package/dist/src/commands/dependency-operation-plan.js +289 -7
  73. package/dist/src/commands/dependency-operation-plan.js.map +1 -1
  74. package/dist/src/commands/init.d.ts +5 -11
  75. package/dist/src/commands/init.js +30 -51
  76. package/dist/src/commands/init.js.map +1 -1
  77. package/dist/src/commands/offline-cleanup-evidence.d.ts +67 -0
  78. package/dist/src/commands/offline-cleanup-evidence.js +181 -0
  79. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  80. package/dist/src/commands/operation-plan.d.ts +127 -0
  81. package/dist/src/commands/operation-plan.js +71 -0
  82. package/dist/src/commands/operation-plan.js.map +1 -0
  83. package/dist/src/commands/operation-planner.d.ts +46 -0
  84. package/dist/src/commands/operation-planner.js +141 -0
  85. package/dist/src/commands/operation-planner.js.map +1 -0
  86. package/dist/src/commands/options.d.ts +9 -7
  87. package/dist/src/commands/options.js +83 -21
  88. package/dist/src/commands/options.js.map +1 -1
  89. package/dist/src/commands/plugin-capabilities.d.ts +22 -0
  90. package/dist/src/commands/plugin-capabilities.js +159 -0
  91. package/dist/src/commands/plugin-capabilities.js.map +1 -0
  92. package/dist/src/commands/rebuild-command.d.ts +77 -30
  93. package/dist/src/commands/rebuild-command.js +3993 -711
  94. package/dist/src/commands/rebuild-command.js.map +1 -1
  95. package/dist/src/commands/rebuild-integration.d.ts +120 -21
  96. package/dist/src/commands/rebuild-integration.js +2765 -1326
  97. package/dist/src/commands/rebuild-integration.js.map +1 -1
  98. package/dist/src/commands/rebuild-operations.d.ts +58 -30
  99. package/dist/src/commands/rebuild-operations.js +259 -319
  100. package/dist/src/commands/rebuild-operations.js.map +1 -1
  101. package/dist/src/commands/reconcile-operation-plan.d.ts +28 -0
  102. package/dist/src/commands/reconcile-operation-plan.js +47 -0
  103. package/dist/src/commands/reconcile-operation-plan.js.map +1 -0
  104. package/dist/src/commands/review-inspection.d.ts +228 -0
  105. package/dist/src/commands/review-inspection.js +1341 -0
  106. package/dist/src/commands/review-inspection.js.map +1 -0
  107. package/dist/src/commands/review-preparation.d.ts +49 -0
  108. package/dist/src/commands/review-preparation.js +427 -0
  109. package/dist/src/commands/review-preparation.js.map +1 -0
  110. package/dist/src/commands/runtime.d.ts +1 -5
  111. package/dist/src/commands/runtime.js +24 -50
  112. package/dist/src/commands/runtime.js.map +1 -1
  113. package/dist/src/commands/skill-eval.d.ts +38 -0
  114. package/dist/src/commands/skill-eval.js +388 -0
  115. package/dist/src/commands/skill-eval.js.map +1 -0
  116. package/dist/src/commands/status-v6.d.ts +279 -0
  117. package/dist/src/commands/status-v6.js +2697 -0
  118. package/dist/src/commands/status-v6.js.map +1 -0
  119. package/dist/src/commands/sync-command.d.ts +40 -0
  120. package/dist/src/commands/sync-command.js +250 -0
  121. package/dist/src/commands/sync-command.js.map +1 -0
  122. package/dist/src/commands/wizard.d.ts +3 -4
  123. package/dist/src/commands/wizard.js +2 -2
  124. package/dist/src/commands/wizard.js.map +1 -1
  125. package/dist/src/commands/write-commands.d.ts +9 -3
  126. package/dist/src/commands/write-commands.js +124 -31
  127. package/dist/src/commands/write-commands.js.map +1 -1
  128. package/dist/src/constants.d.ts +7 -1
  129. package/dist/src/constants.js +7 -1
  130. package/dist/src/constants.js.map +1 -1
  131. package/dist/src/eval/manifest-v1.d.ts +71 -0
  132. package/dist/src/eval/manifest-v1.js +370 -0
  133. package/dist/src/eval/manifest-v1.js.map +1 -0
  134. package/dist/src/generators/local-plugin.d.ts +5 -1
  135. package/dist/src/generators/local-plugin.js +225 -104
  136. package/dist/src/generators/local-plugin.js.map +1 -1
  137. package/dist/src/index.d.ts +10 -4
  138. package/dist/src/index.js +1787 -476
  139. package/dist/src/index.js.map +1 -1
  140. package/dist/src/output/command-receipt.d.ts +43 -46
  141. package/dist/src/output/command-receipt.js +256 -80
  142. package/dist/src/output/command-receipt.js.map +1 -1
  143. package/dist/src/output/model.d.ts +3 -44
  144. package/dist/src/output/model.js +1 -144
  145. package/dist/src/output/model.js.map +1 -1
  146. package/dist/src/output/rebuild-progress.js +1 -13
  147. package/dist/src/output/rebuild-progress.js.map +1 -1
  148. package/dist/src/portable/commands.d.ts +46 -7
  149. package/dist/src/portable/commands.js +349 -37
  150. package/dist/src/portable/commands.js.map +1 -1
  151. package/dist/src/portable/materializer.d.ts +17 -4
  152. package/dist/src/portable/materializer.js +160 -38
  153. package/dist/src/portable/materializer.js.map +1 -1
  154. package/dist/src/portable/skills-cli.d.ts +15 -7
  155. package/dist/src/portable/skills-cli.js +66 -19
  156. package/dist/src/portable/skills-cli.js.map +1 -1
  157. package/dist/src/review/eval-source-input.d.ts +43 -0
  158. package/dist/src/review/eval-source-input.js +207 -0
  159. package/dist/src/review/eval-source-input.js.map +1 -0
  160. package/dist/src/review/review-profile.d.ts +17 -0
  161. package/dist/src/review/review-profile.js +177 -0
  162. package/dist/src/review/review-profile.js.map +1 -0
  163. package/dist/src/review/review-selection.d.ts +30 -0
  164. package/dist/src/review/review-selection.js +527 -0
  165. package/dist/src/review/review-selection.js.map +1 -0
  166. package/dist/src/review/review-types.d.ts +68 -0
  167. package/dist/src/review/review-types.js +16 -0
  168. package/dist/src/review/review-types.js.map +1 -0
  169. package/dist/src/review/skill-materialization.d.ts +13 -0
  170. package/dist/src/review/skill-materialization.js +75 -0
  171. package/dist/src/review/skill-materialization.js.map +1 -0
  172. package/dist/src/review/source-binding.d.ts +182 -0
  173. package/dist/src/review/source-binding.js +682 -0
  174. package/dist/src/review/source-binding.js.map +1 -0
  175. package/dist/src/tui/catalog-freshness.d.ts +1 -0
  176. package/dist/src/tui/catalog-freshness.js +2 -0
  177. package/dist/src/tui/catalog-freshness.js.map +1 -0
  178. package/dist/src/tui/catalog-generation.d.ts +21 -0
  179. package/dist/src/tui/catalog-generation.js +156 -0
  180. package/dist/src/tui/catalog-generation.js.map +1 -0
  181. package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
  182. package/dist/src/tui/catalog-sources/projection.js +17 -0
  183. package/dist/src/tui/catalog-sources/projection.js.map +1 -0
  184. package/dist/src/tui/catalog-sources/review.d.ts +3 -0
  185. package/dist/src/tui/catalog-sources/review.js +13 -0
  186. package/dist/src/tui/catalog-sources/review.js.map +1 -0
  187. package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
  188. package/dist/src/tui/catalog-sources/screens.js +40 -0
  189. package/dist/src/tui/catalog-sources/screens.js.map +1 -0
  190. package/dist/src/tui/catalog-sources/session.d.ts +28 -0
  191. package/dist/src/tui/catalog-sources/session.js +295 -0
  192. package/dist/src/tui/catalog-sources/session.js.map +1 -0
  193. package/dist/src/tui/catalog-sources/types.d.ts +53 -0
  194. package/dist/src/tui/catalog-sources/types.js +2 -0
  195. package/dist/src/tui/catalog-sources/types.js.map +1 -0
  196. package/dist/src/tui/catalog-store-task.d.ts +16 -0
  197. package/dist/src/tui/catalog-store-task.js +19 -0
  198. package/dist/src/tui/catalog-store-task.js.map +1 -0
  199. package/dist/src/tui/components.d.ts +128 -0
  200. package/dist/src/tui/components.js +251 -7
  201. package/dist/src/tui/components.js.map +1 -1
  202. package/dist/src/tui/console-app-v4.d.ts +14 -4
  203. package/dist/src/tui/console-app-v4.js +9248 -1461
  204. package/dist/src/tui/console-app-v4.js.map +1 -1
  205. package/dist/src/tui/controller-runtime.d.ts +13 -1
  206. package/dist/src/tui/controller-runtime.js +3338 -410
  207. package/dist/src/tui/controller-runtime.js.map +1 -1
  208. package/dist/src/tui/controller.d.ts +614 -40
  209. package/dist/src/tui/controller.js +3478 -708
  210. package/dist/src/tui/controller.js.map +1 -1
  211. package/dist/src/tui/dependency-graph.d.ts +81 -0
  212. package/dist/src/tui/dependency-graph.js +455 -0
  213. package/dist/src/tui/dependency-graph.js.map +1 -0
  214. package/dist/src/tui/diagnostic-projection.d.ts +23 -0
  215. package/dist/src/tui/diagnostic-projection.js +567 -0
  216. package/dist/src/tui/diagnostic-projection.js.map +1 -0
  217. package/dist/src/tui/diagnostics.d.ts +30 -0
  218. package/dist/src/tui/diagnostics.js +76 -0
  219. package/dist/src/tui/diagnostics.js.map +1 -0
  220. package/dist/src/tui/glossary.d.ts +23 -0
  221. package/dist/src/tui/glossary.js +42 -0
  222. package/dist/src/tui/glossary.js.map +1 -0
  223. package/dist/src/tui/index.d.ts +11 -4
  224. package/dist/src/tui/index.js +8 -2
  225. package/dist/src/tui/index.js.map +1 -1
  226. package/dist/src/tui/input-display.d.ts +8 -0
  227. package/dist/src/tui/input-display.js +36 -0
  228. package/dist/src/tui/input-display.js.map +1 -0
  229. package/dist/src/tui/keys.d.ts +44 -0
  230. package/dist/src/tui/keys.js +43 -15
  231. package/dist/src/tui/keys.js.map +1 -1
  232. package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
  233. package/dist/src/tui/lifecycle-action-view.js +36 -0
  234. package/dist/src/tui/lifecycle-action-view.js.map +1 -0
  235. package/dist/src/tui/model.d.ts +235 -27
  236. package/dist/src/tui/model.js +1652 -304
  237. package/dist/src/tui/model.js.map +1 -1
  238. package/dist/src/tui/operation-diagnostic-screens.d.ts +21 -0
  239. package/dist/src/tui/operation-diagnostic-screens.js +102 -0
  240. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
  241. package/dist/src/tui/operation-history.d.ts +81 -0
  242. package/dist/src/tui/operation-history.js +135 -0
  243. package/dist/src/tui/operation-history.js.map +1 -0
  244. package/dist/src/tui/operation-review-planner.d.ts +21 -0
  245. package/dist/src/tui/operation-review-planner.js +1254 -0
  246. package/dist/src/tui/operation-review-planner.js.map +1 -0
  247. package/dist/src/tui/plugin-content.d.ts +23 -0
  248. package/dist/src/tui/plugin-content.js +336 -0
  249. package/dist/src/tui/plugin-content.js.map +1 -0
  250. package/dist/src/tui/plugin-write-task.d.ts +69 -0
  251. package/dist/src/tui/plugin-write-task.js +286 -0
  252. package/dist/src/tui/plugin-write-task.js.map +1 -0
  253. package/dist/src/tui/prompt.js +4 -15
  254. package/dist/src/tui/prompt.js.map +1 -1
  255. package/dist/src/tui/router.d.ts +183 -11
  256. package/dist/src/tui/router.js +352 -29
  257. package/dist/src/tui/router.js.map +1 -1
  258. package/dist/src/tui/screen-registry.d.ts +702 -0
  259. package/dist/src/tui/screen-registry.js +231 -0
  260. package/dist/src/tui/screen-registry.js.map +1 -0
  261. package/dist/src/tui/session-console-app.d.ts +6 -0
  262. package/dist/src/tui/session-console-app.js +13 -0
  263. package/dist/src/tui/session-console-app.js.map +1 -0
  264. package/dist/src/tui/session-host.d.ts +45 -0
  265. package/dist/src/tui/session-host.js +209 -0
  266. package/dist/src/tui/session-host.js.map +1 -0
  267. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  268. package/dist/src/tui/source-ref-presets.js +11 -0
  269. package/dist/src/tui/source-ref-presets.js.map +1 -0
  270. package/dist/src/tui/theme.d.ts +18 -10
  271. package/dist/src/tui/theme.js +18 -10
  272. package/dist/src/tui/theme.js.map +1 -1
  273. package/dist/src/tui/viewport.d.ts +20 -0
  274. package/dist/src/tui/viewport.js +29 -0
  275. package/dist/src/tui/viewport.js.map +1 -0
  276. package/dist/src/tui/views.js +31 -3
  277. package/dist/src/tui/views.js.map +1 -1
  278. package/dist/src/tui/wizard.js +11 -9
  279. package/dist/src/tui/wizard.js.map +1 -1
  280. package/dist/src/types.d.ts +242 -20
  281. package/dist/src/types.js +1 -0
  282. package/dist/src/types.js.map +1 -1
  283. package/dist/src/utils/agent-version.d.ts +7 -1
  284. package/dist/src/utils/agent-version.js +41 -8
  285. package/dist/src/utils/agent-version.js.map +1 -1
  286. package/dist/src/utils/artifact-plan.d.ts +5 -4
  287. package/dist/src/utils/artifact-plan.js +18 -7
  288. package/dist/src/utils/artifact-plan.js.map +1 -1
  289. package/dist/src/utils/artifact-renderer.d.ts +13 -7
  290. package/dist/src/utils/artifact-renderer.js +196 -219
  291. package/dist/src/utils/artifact-renderer.js.map +1 -1
  292. package/dist/src/utils/artifact-request.d.ts +21 -0
  293. package/dist/src/utils/artifact-request.js +82 -0
  294. package/dist/src/utils/artifact-request.js.map +1 -0
  295. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  296. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  297. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  298. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  299. package/dist/src/utils/bundle-integrity.js +0 -25
  300. package/dist/src/utils/bundle-integrity.js.map +1 -1
  301. package/dist/src/utils/bundle-layout.js +14 -29
  302. package/dist/src/utils/bundle-layout.js.map +1 -1
  303. package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
  304. package/dist/src/utils/catalog-capability-projection.js +14 -0
  305. package/dist/src/utils/catalog-capability-projection.js.map +1 -0
  306. package/dist/src/utils/catalog-digests.d.ts +10 -0
  307. package/dist/src/utils/catalog-digests.js +50 -2
  308. package/dist/src/utils/catalog-digests.js.map +1 -1
  309. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  310. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  311. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  312. package/dist/src/utils/catalog-generation-error.d.ts +16 -0
  313. package/dist/src/utils/catalog-generation-error.js +30 -0
  314. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  315. package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
  316. package/dist/src/utils/catalog-generation-resolver.js +273 -0
  317. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  318. package/dist/src/utils/catalog-generation-service.d.ts +172 -0
  319. package/dist/src/utils/catalog-generation-service.js +1271 -0
  320. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  321. package/dist/src/utils/catalog-generation-state.d.ts +22 -0
  322. package/dist/src/utils/catalog-generation-state.js +192 -0
  323. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  324. package/dist/src/utils/catalog-generation-store.d.ts +58 -0
  325. package/dist/src/utils/catalog-generation-store.js +452 -0
  326. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  327. package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
  328. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
  329. package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
  330. package/dist/src/utils/catalog-operation-context.d.ts +20 -0
  331. package/dist/src/utils/catalog-operation-context.js +142 -0
  332. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  333. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  334. package/dist/src/utils/catalog-public-error.js +28 -8
  335. package/dist/src/utils/catalog-public-error.js.map +1 -1
  336. package/dist/src/utils/catalog-runtime-projection.d.ts +4 -7
  337. package/dist/src/utils/catalog-runtime-projection.js +7 -102
  338. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  339. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  340. package/dist/src/utils/catalog-snapshot.js +11 -3
  341. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  342. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  343. package/dist/src/utils/catalog-source-identity.js +21 -2
  344. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  345. package/dist/src/utils/catalog-source-impact.d.ts +21 -0
  346. package/dist/src/utils/catalog-source-impact.js +344 -0
  347. package/dist/src/utils/catalog-source-impact.js.map +1 -0
  348. package/dist/src/utils/catalog-source-references.d.ts +3 -2
  349. package/dist/src/utils/catalog-source-references.js +195 -347
  350. package/dist/src/utils/catalog-source-references.js.map +1 -1
  351. package/dist/src/utils/catalog-sources.d.ts +15 -1
  352. package/dist/src/utils/catalog-sources.js +206 -27
  353. package/dist/src/utils/catalog-sources.js.map +1 -1
  354. package/dist/src/utils/codex-config.d.ts +2 -0
  355. package/dist/src/utils/codex-config.js +26 -5
  356. package/dist/src/utils/codex-config.js.map +1 -1
  357. package/dist/src/utils/codex-manager.d.ts +79 -0
  358. package/dist/src/utils/codex-manager.js +745 -0
  359. package/dist/src/utils/codex-manager.js.map +1 -0
  360. package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
  361. package/dist/src/utils/codex-marketplace-path.js +45 -0
  362. package/dist/src/utils/codex-marketplace-path.js.map +1 -0
  363. package/dist/src/utils/codex-native-observation.d.ts +49 -0
  364. package/dist/src/utils/codex-native-observation.js +154 -0
  365. package/dist/src/utils/codex-native-observation.js.map +1 -0
  366. package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
  367. package/dist/src/utils/codex-native-render-receipt.js +205 -0
  368. package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
  369. package/dist/src/utils/codex-reconciler.d.ts +126 -0
  370. package/dist/src/utils/codex-reconciler.js +298 -0
  371. package/dist/src/utils/codex-reconciler.js.map +1 -0
  372. package/dist/src/utils/codex-shared-native.d.ts +43 -0
  373. package/dist/src/utils/codex-shared-native.js +81 -0
  374. package/dist/src/utils/codex-shared-native.js.map +1 -0
  375. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  376. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  377. package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
  378. package/dist/src/utils/codex-surface-analysis.js +247 -0
  379. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  380. package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
  381. package/dist/src/utils/dynamic-skill-tree.js +36 -6
  382. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  383. package/dist/src/utils/git-catalog-provider.d.ts +18 -0
  384. package/dist/src/utils/git-catalog-provider.js +170 -144
  385. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  386. package/dist/src/utils/local-marketplace.d.ts +15 -1
  387. package/dist/src/utils/local-marketplace.js +307 -84
  388. package/dist/src/utils/local-marketplace.js.map +1 -1
  389. package/dist/src/utils/manifest.d.ts +1 -4
  390. package/dist/src/utils/manifest.js +1 -4
  391. package/dist/src/utils/manifest.js.map +1 -1
  392. package/dist/src/utils/multi-source-catalog.d.ts +3 -9
  393. package/dist/src/utils/multi-source-catalog.js +54 -110
  394. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  395. package/dist/src/utils/native-cli.d.ts +55 -7
  396. package/dist/src/utils/native-cli.js +386 -57
  397. package/dist/src/utils/native-cli.js.map +1 -1
  398. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
  399. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  400. package/dist/src/utils/ownership.d.ts +84 -20
  401. package/dist/src/utils/ownership.js +179 -222
  402. package/dist/src/utils/ownership.js.map +1 -1
  403. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  404. package/dist/src/utils/path-catalog-provider.js +54 -65
  405. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  406. package/dist/src/utils/paths.d.ts +0 -1
  407. package/dist/src/utils/paths.js +0 -1
  408. package/dist/src/utils/paths.js.map +1 -1
  409. package/dist/src/utils/plugin-config-impact.d.ts +33 -0
  410. package/dist/src/utils/plugin-config-impact.js +298 -0
  411. package/dist/src/utils/plugin-config-impact.js.map +1 -0
  412. package/dist/src/utils/plugin-config-write.d.ts +52 -27
  413. package/dist/src/utils/plugin-config-write.js +990 -298
  414. package/dist/src/utils/plugin-config-write.js.map +1 -1
  415. package/dist/src/utils/plugin-config.d.ts +140 -93
  416. package/dist/src/utils/plugin-config.js +992 -980
  417. package/dist/src/utils/plugin-config.js.map +1 -1
  418. package/dist/src/utils/plugin-intent-state.d.ts +49 -0
  419. package/dist/src/utils/plugin-intent-state.js +320 -0
  420. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  421. package/dist/src/utils/plugin-scripts.d.ts +62 -125
  422. package/dist/src/utils/plugin-scripts.js +468 -525
  423. package/dist/src/utils/plugin-scripts.js.map +1 -1
  424. package/dist/src/utils/process-tree.d.ts +2 -2
  425. package/dist/src/utils/process-tree.js +1 -1
  426. package/dist/src/utils/process-tree.js.map +1 -1
  427. package/dist/src/utils/project-boundary.d.ts +11 -13
  428. package/dist/src/utils/project-boundary.js +28 -34
  429. package/dist/src/utils/project-boundary.js.map +1 -1
  430. package/dist/src/utils/safe-fs.d.ts +21 -0
  431. package/dist/src/utils/safe-fs.js +111 -0
  432. package/dist/src/utils/safe-fs.js.map +1 -0
  433. package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
  434. package/dist/src/utils/safe-operation-diagnostic.js +33 -0
  435. package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
  436. package/dist/src/utils/sensitive-content.d.ts +4 -0
  437. package/dist/src/utils/sensitive-content.js +36 -0
  438. package/dist/src/utils/sensitive-content.js.map +1 -0
  439. package/dist/src/utils/skill-validation.d.ts +1 -1
  440. package/dist/src/utils/skill-validation.js +1 -1
  441. package/dist/src/utils/skill-validation.js.map +1 -1
  442. package/dist/src/utils/state-paths.d.ts +1 -0
  443. package/dist/src/utils/state-paths.js +12 -2
  444. package/dist/src/utils/state-paths.js.map +1 -1
  445. package/dist/src/utils/target-eligibility.d.ts +8 -2
  446. package/dist/src/utils/target-eligibility.js +17 -8
  447. package/dist/src/utils/target-eligibility.js.map +1 -1
  448. package/dist/src/utils/windows-claude-shim.d.ts +9 -0
  449. package/dist/src/utils/windows-claude-shim.js +141 -0
  450. package/dist/src/utils/windows-claude-shim.js.map +1 -0
  451. package/dist/vitest.config.js +91 -10
  452. package/dist/vitest.config.js.map +1 -1
  453. package/package.json +22 -19
  454. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  455. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  456. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  457. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  458. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  459. package/dist/scripts/codex-eval-app-server.d.ts +0 -89
  460. package/dist/scripts/codex-eval-app-server.js +0 -1228
  461. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  462. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  463. package/dist/scripts/codex-eval-isolation.js +0 -318
  464. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  465. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  466. package/dist/scripts/codex-eval-process-management.js +0 -69
  467. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  468. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  469. package/dist/scripts/codex-eval-process-tree.js +0 -803
  470. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  471. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  472. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  473. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  474. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  475. package/dist/scripts/codex-trigger-eval.js +0 -968
  476. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  477. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  478. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  479. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  480. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  481. package/dist/scripts/eval-plugin-skills.js +0 -1586
  482. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  483. package/dist/scripts/eval-run-layout.d.ts +0 -17
  484. package/dist/scripts/eval-run-layout.js +0 -26
  485. package/dist/scripts/eval-run-layout.js.map +0 -1
  486. package/dist/scripts/plugin-eval-contract.d.ts +0 -185
  487. package/dist/scripts/plugin-eval-contract.js +0 -695
  488. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  489. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  490. package/dist/scripts/plugin-eval-materializer.js +0 -421
  491. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  492. package/dist/scripts/skill-reporting.d.ts +0 -212
  493. package/dist/scripts/skill-reporting.js +0 -922
  494. package/dist/scripts/skill-reporting.js.map +0 -1
  495. package/dist/src/commands/status-v4.d.ts +0 -102
  496. package/dist/src/commands/status-v4.js +0 -844
  497. package/dist/src/commands/status-v4.js.map +0 -1
  498. package/dist/src/commands/status.d.ts +0 -93
  499. package/dist/src/commands/status.js +0 -442
  500. package/dist/src/commands/status.js.map +0 -1
  501. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  502. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  503. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  504. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  505. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  506. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  507. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
  508. package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
  509. package/dist/src/utils/catalog-source-cache.d.ts +0 -61
  510. package/dist/src/utils/catalog-source-cache.js +0 -276
  511. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  512. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  513. package/dist/src/utils/codex-project-surface.js +0 -49
  514. package/dist/src/utils/codex-project-surface.js.map +0 -1
  515. package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
  516. package/dist/src/utils/lifecycle-active-store.js +0 -1276
  517. package/dist/src/utils/lifecycle-active-store.js.map +0 -1
  518. package/dist/src/utils/plugin-authoring-capabilities.d.ts +0 -23
  519. package/dist/src/utils/plugin-authoring-capabilities.js +0 -37
  520. package/dist/src/utils/plugin-authoring-capabilities.js.map +0 -1
  521. package/dist/src/utils/plugin-authoring-capabilities.json +0 -92
  522. package/dist/src/utils/plugin-release.d.ts +0 -2
  523. package/dist/src/utils/plugin-release.js +0 -2
  524. package/dist/src/utils/plugin-release.js.map +0 -1
  525. package/dist/src/utils/skill-frontmatter-capabilities.d.ts +0 -201
  526. package/dist/src/utils/skill-frontmatter-capabilities.js +0 -5
  527. package/dist/src/utils/skill-frontmatter-capabilities.js.map +0 -1
  528. package/dist/src/utils/skill-frontmatter-capabilities.json +0 -200
  529. /package/dist/authoring/scripts/{check-plugin-versions.d.mts → remove-plugin.d.mts} +0 -0
@@ -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))
@@ -179,16 +77,16 @@ function mergeCleanup(accumulator, cleanup, phase) {
179
77
  function succeeded(command, target, accumulator) {
180
78
  return { status: 'succeeded', command, target: target.identity, ...accumulator };
181
79
  }
182
- function failed(command, target, accumulator, phase, message) {
80
+ function failed(command, target, accumulator, phase, message, operationDiagnostic) {
183
81
  if (!accumulator.failures.some((failure) => failure.phase === phase && failure.message === message)) {
184
- accumulator.failures.unshift({ phase, message });
82
+ accumulator.failures.unshift({ phase, message, ...(operationDiagnostic ? { operationDiagnostic } : {}) });
185
83
  }
186
84
  return {
187
85
  status: 'failed',
188
86
  command,
189
87
  target: target.identity,
190
88
  ...accumulator,
191
- error: { phase, message },
89
+ error: { phase, message, ...(operationDiagnostic ? { operationDiagnostic } : {}) },
192
90
  };
193
91
  }
194
92
  async function action(accumulator, name, operation, events, failureMessage) {
@@ -259,10 +157,10 @@ function validateDesiredTarget(target) {
259
157
  throw new Error('Desired target has an invalid namespaced source identity.');
260
158
  }
261
159
  if (target.plugin.manifest.name !== pluginName
262
- || target.lifecycleSource.manifest.name !== pluginName
160
+ || target.preApplySource.manifest.name !== pluginName
263
161
  || 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.');
162
+ || target.preApplySource.manifest.version !== pluginVersion) {
163
+ throw new Error('Desired target plugin name/version does not match its preApply source and identity.');
266
164
  }
267
165
  if (platform !== 'codex' && platform !== 'claude') {
268
166
  throw new Error(`Desired target platform is invalid: ${String(platform)}`);
@@ -272,15 +170,26 @@ function validateDesiredTarget(target) {
272
170
  }
273
171
  const identityKeys = new Set();
274
172
  const componentPaths = new Set();
173
+ const desiredComponents = target.desiredOwnedComponents ?? target.ownedComponents;
174
+ const desiredComponentSet = new Set(desiredComponents);
175
+ const sharedNativeSkillKeys = new Set((target.plugin.manifest.artifacts?.targets ?? [])
176
+ .filter((artifactTarget) => artifactTarget.platform === 'codex'
177
+ && artifactTarget.target === 'codex.skill'
178
+ && artifactTarget.delivery?.mode === 'codex-native')
179
+ .map((artifactTarget) => artifactTarget.skillKey));
275
180
  let nativeCount = 0;
276
181
  for (const component of target.ownedComponents) {
277
182
  validateOwnerIdentity(component.identity);
183
+ const crossScopeLegacyNativeSkill = platform === 'codex'
184
+ && component.kind === 'skill-directory'
185
+ && !desiredComponentSet.has(component)
186
+ && sharedNativeSkillKeys.has(component.identity.artifactKey)
187
+ && component.identity.scope !== scope;
278
188
  if (component.identity.plugin !== pluginName
279
189
  || component.identity.sourceId !== sourceId
280
- || component.identity.sourceIdentity !== sourceIdentity
281
190
  || component.identity.pluginId !== pluginId
282
191
  || component.identity.platform !== platform
283
- || component.identity.scope !== scope) {
192
+ || (component.identity.scope !== scope && !crossScopeLegacyNativeSkill)) {
284
193
  throw new Error('Owned component identity does not match the desired target.');
285
194
  }
286
195
  const identityKey = [
@@ -308,7 +217,9 @@ function validateDesiredTarget(target) {
308
217
  }
309
218
  }
310
219
  }
311
- const desiredComponents = target.desiredOwnedComponents ?? target.ownedComponents;
220
+ if (target.forceExclusiveCleanup && target.ownedComponents.some((component) => component.kind !== 'skill-directory' && component.kind !== 'owned-text-file')) {
221
+ throw new Error('Force cleanup only supports exclusive skill directories and owned text files.');
222
+ }
312
223
  nativeCount = desiredComponents.filter((component) => component.kind === 'native-plugin').length;
313
224
  if (target.requiresNative ? nativeCount !== 1 : nativeCount !== 0) {
314
225
  throw new Error(target.requiresNative
@@ -334,7 +245,7 @@ function collisionMessage(inspection) {
334
245
  if (inspection.errors.length > 0) {
335
246
  return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
336
247
  }
337
- const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'error'));
248
+ const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'));
338
249
  if (collision) {
339
250
  return collision.diagnostic ?? 'Owned component preflight failed.';
340
251
  }
@@ -353,7 +264,7 @@ function isUninstallLiveOwnershipComponent(component) {
353
264
  }
354
265
  function recordInspectionResiduals(accumulator, inspection) {
355
266
  pushUnique(accumulator.residual, inspection.components
356
- .filter((component) => component.state === 'partial' || component.state === 'error')
267
+ .filter((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'))
357
268
  .map((component) => ownedComponentLabel(component.component)));
358
269
  }
359
270
  function postcheckMessage(accumulator, inspection) {
@@ -371,6 +282,11 @@ function postcheckMessage(accumulator, inspection) {
371
282
  })));
372
283
  return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
373
284
  }
285
+ if (invalid.some((component) => component.state === 'partial'
286
+ && component.component.kind === 'native-plugin'
287
+ && component.component.identity.platform === 'codex')) {
288
+ return 'codexActivationPostcheckFailed: Codex scope activation was not observed as enabled.';
289
+ }
374
290
  const diagnostics = invalid
375
291
  .map((component) => component.diagnostic)
376
292
  .filter((diagnostic) => diagnostic !== undefined);
@@ -378,17 +294,20 @@ function postcheckMessage(accumulator, inspection) {
378
294
  return diagnostics.join('; ');
379
295
  return `Post-install ownership inspection failed for ${invalid.length} component(s).`;
380
296
  }
381
- async function cleanupOwned(target, driver, components = target.ownedComponents) {
382
- return withOwnershipLease(target, driver, () => cleanupOwnedComponents({
297
+ async function cleanupOwned(target, driver, components = target.ownedComponents, hooks = {}) {
298
+ return cleanupOwnedComponents({
383
299
  components,
300
+ executor: driver.ownership,
384
301
  nativeProbe: driver.probeNative,
385
302
  nativeRemove: driver.removeNative,
386
- }));
303
+ forceExclusive: target.forceExclusiveCleanup,
304
+ ...hooks,
305
+ });
387
306
  }
388
- async function cleanupTarget(target, driver, store, accumulator, ownedAction, events) {
307
+ async function cleanupTarget(target, driver, accumulator, ownedAction, events, components = target.ownedComponents, hooks = {}) {
389
308
  accumulator.cleanupAttempted = true;
390
309
  try {
391
- const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver), events, (value) => value.failures[0]?.message
310
+ const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver, components, hooks), events, (value) => value.failures[0]?.message
392
311
  ?? (value.residual.length > 0
393
312
  ? `Ownership cleanup left residual components: ${value.residual.join(', ')}`
394
313
  : value.quarantined.length > 0
@@ -412,41 +331,64 @@ async function cleanupTarget(target, driver, store, accumulator, ownedAction, ev
412
331
  accumulator.failures.push({ phase: ownedAction, message });
413
332
  return { phase: ownedAction, message };
414
333
  }
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
334
  return null;
424
335
  }
336
+ export async function executeRebuildComponentCleanup(options) {
337
+ const accumulator = createAccumulator();
338
+ accumulator.actions.push(...(options.actions ?? []));
339
+ const cleanupError = await cleanupTarget(options.target, options.driver, accumulator, 'cleanup.owned', {
340
+ command: options.command,
341
+ target: options.target.identity,
342
+ emit: options.onActionEvent,
343
+ now: options.now ?? Date.now,
344
+ }, options.components, {
345
+ ...(options.beforeMutation ? { beforeMutation: options.beforeMutation } : {}),
346
+ ...(options.afterQuarantine ? { afterQuarantine: options.afterQuarantine } : {}),
347
+ });
348
+ return cleanupError
349
+ ? failed(options.command, options.target, accumulator, cleanupError.phase, cleanupError.message)
350
+ : succeeded(options.command, options.target, accumulator);
351
+ }
425
352
  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));
353
+ const { command, target, driver, accumulator, events } = options;
354
+ let inspection = options.inspection;
355
+ if (!inspection) {
356
+ try {
357
+ inspection = await action(accumulator, 'preflight.inspect', async () => {
358
+ await driver.preflightMaterialize?.(target);
359
+ return inspectOwnedComponents({
360
+ components: target.ownedComponents,
361
+ executor: driver.ownership,
362
+ nativeProbe: driver.probeNative,
363
+ });
364
+ }, events, collisionMessage);
365
+ }
366
+ catch (error) {
367
+ return failed(command, target, accumulator, 'preflight.inspect', errorMessage(error), readSafeOperationError(error));
368
+ }
439
369
  }
440
370
  const collision = collisionMessage(inspection);
441
371
  if (collision) {
442
372
  recordInspectionResiduals(accumulator, inspection);
443
373
  return failed(command, target, accumulator, 'preflight.inspect', collision);
444
374
  }
375
+ if (!options.preApplyCompleted && target.preApplySource.manifest.scripts?.preApply) {
376
+ try {
377
+ await action(accumulator, 'preApply', () => driver.runPreApply({
378
+ target,
379
+ plugin: target.preApplySource,
380
+ }), events);
381
+ }
382
+ catch (error) {
383
+ return failed(command, target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
384
+ }
385
+ }
445
386
  const desiredComponents = new Set(target.desiredOwnedComponents ?? target.ownedComponents);
446
387
  const optionalComponents = new Set(target.optionalOwnedComponents ?? []);
447
388
  const staleComponents = target.ownedComponents.filter((component) => !desiredComponents.has(component) && !optionalComponents.has(component));
448
389
  const staleInspection = inspection.components.filter((entry) => staleComponents.includes(entry.component));
449
- if (staleInspection.some((component) => component.state === 'present')) {
390
+ if (!options.skipStaleCleanup
391
+ && staleInspection.some((component) => component.state === 'present')) {
450
392
  accumulator.cleanupAttempted = true;
451
393
  let stale;
452
394
  try {
@@ -456,7 +398,7 @@ async function materializeTarget(options) {
456
398
  : undefined));
457
399
  }
458
400
  catch (error) {
459
- return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error));
401
+ return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error), readSafeOperationError(error));
460
402
  }
461
403
  mergeCleanup(accumulator, stale, 'stale.cleanup');
462
404
  if (stale.failures.length > 0 || stale.residual.length > 0) {
@@ -466,9 +408,8 @@ async function materializeTarget(options) {
466
408
  }
467
409
  }
468
410
  let failurePhase = 'native.write';
469
- let prepared;
470
411
  try {
471
- if (target.requiresNative) {
412
+ if (target.writeNativeRequired ?? target.requiresNative) {
472
413
  failurePhase = 'native.write';
473
414
  await action(accumulator, failurePhase, () => driver.writeNative(target), events);
474
415
  }
@@ -477,69 +418,43 @@ async function materializeTarget(options) {
477
418
  const writtenArtifacts = await driver.writeArtifacts(target);
478
419
  bindWrittenArtifacts(target, writtenArtifacts);
479
420
  }, 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 () => {
421
+ const postcheck = () => action(accumulator, 'postcheck.inspect', async () => {
493
422
  const optional = new Set(target.optionalOwnedComponents ?? []);
494
- const postcheck = await withOwnershipLease(target, driver, () => inspectOwnedComponents({
423
+ const postcheck = await inspectOwnedComponents({
495
424
  components: (target.desiredOwnedComponents ?? target.ownedComponents)
496
425
  .filter((component) => !optional.has(component)),
497
426
  nativeProbe: driver.probeNativeHealth ?? driver.probeNative,
427
+ executor: driver.ownership,
498
428
  verifyHealth: true,
499
- }));
429
+ });
500
430
  const postcheckFailure = postcheckMessage(accumulator, postcheck);
501
431
  if (postcheckFailure)
502
432
  throw new Error(postcheckFailure);
503
433
  }, events);
504
- if (driver.commitMaterialize) {
505
- failurePhase = 'marketplace.commit';
506
- await action(accumulator, failurePhase, () => driver.commitMaterialize(target), events);
434
+ failurePhase = 'postcheck.inspect';
435
+ if (driver.deferPostcheck?.(target, postcheck) !== true) {
436
+ await postcheck();
507
437
  }
508
438
  return succeeded(command, target, accumulator);
509
439
  }
510
440
  catch (error) {
511
441
  const primary = errorMessage(error);
512
- if (error.durableMaterializeCommit === true) {
513
- return failed(command, target, accumulator, failurePhase, primary);
442
+ if (error.nativeMarketplaceGroupFailure === true) {
443
+ return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
514
444
  }
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
- }
445
+ if (target.identity.platform === 'codex') {
446
+ const recoveryComponents = target.ownedComponents.filter((component) => component.kind === 'skill-directory' || component.kind === 'owned-text-file');
447
+ await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events, driver.selectRecoveryCleanupComponents?.(target, recoveryComponents)
448
+ ?? recoveryComponents);
525
449
  }
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
- }
450
+ else {
451
+ await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events);
537
452
  }
538
- return failed(command, target, accumulator, failurePhase, primary);
453
+ return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
539
454
  }
540
455
  }
541
456
  async function executeCleanup(options) {
542
- const cleanupError = await cleanupTarget(options.target, options.driver, options.store, options.accumulator, 'cleanup.owned', options.events);
457
+ const cleanupError = await cleanupTarget(options.target, options.driver, options.accumulator, 'cleanup.owned', options.events);
543
458
  if (cleanupError) {
544
459
  return failed(options.command, options.target, options.accumulator, cleanupError.phase, cleanupError.message);
545
460
  }
@@ -554,13 +469,14 @@ async function executeCleanup(options) {
554
469
  return succeeded(options.command, options.target, options.accumulator);
555
470
  }
556
471
  async function executeUninstall(options) {
557
- const { target, driver, store, accumulator, events } = options;
472
+ const { target, driver, accumulator, events } = options;
558
473
  let inspection;
559
474
  try {
560
- inspection = await action(accumulator, 'preflight.inspect', () => withOwnershipLease(target, driver, () => inspectOwnedComponents({
475
+ inspection = await action(accumulator, 'preflight.inspect', () => inspectOwnedComponents({
561
476
  components: target.ownedComponents,
477
+ executor: driver.ownership,
562
478
  nativeProbe: driver.probeNative,
563
- })), events, collisionMessage);
479
+ }), events, collisionMessage);
564
480
  }
565
481
  catch (error) {
566
482
  return failed('uninstall', target, accumulator, 'preflight.inspect', errorMessage(error));
@@ -570,80 +486,11 @@ async function executeUninstall(options) {
570
486
  recordInspectionResiduals(accumulator, inspection);
571
487
  return failed('uninstall', target, accumulator, 'preflight.inspect', preflightCollision);
572
488
  }
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'
489
+ const live = inspection.components.filter((component) => component.state !== 'absent'
606
490
  && 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);
634
- }
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);
491
+ if (live.length === 0)
492
+ return succeeded('uninstall', target, accumulator);
493
+ const cleanupError = await cleanupTarget(target, driver, accumulator, 'cleanup.owned', events);
647
494
  if (cleanupError) {
648
495
  return failed('uninstall', target, accumulator, cleanupError.phase, cleanupError.message);
649
496
  }
@@ -659,62 +506,62 @@ async function executeUninstall(options) {
659
506
  }
660
507
  export async function executeRebuildOperation(options) {
661
508
  const accumulator = createAccumulator();
662
- const store = options.activeStore;
663
509
  const events = {
664
510
  command: options.command,
665
511
  target: options.target.identity,
666
512
  emit: options.onActionEvent,
667
513
  now: options.now ?? Date.now,
668
514
  };
515
+ if (options.preparation) {
516
+ if (options.preparation.command !== options.command
517
+ || options.preparation.target !== options.target) {
518
+ return failed(options.command, options.target, accumulator, 'preflight', 'Prepared rebuild operation does not match the requested target.');
519
+ }
520
+ accumulator.actions.push(...options.preparation.actions);
521
+ try {
522
+ await options.driver.preflightMutation?.(options.target);
523
+ }
524
+ catch (error) {
525
+ return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
526
+ }
527
+ try {
528
+ return await executeRebuildOperationCore(options, accumulator, events, options.preparation);
529
+ }
530
+ catch (error) {
531
+ return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
532
+ }
533
+ }
669
534
  try {
670
535
  validateDesiredTarget(options.target);
671
536
  }
672
537
  catch (error) {
673
538
  return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
674
539
  }
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
540
  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();
541
+ await options.driver.preflightMutation?.(options.target);
690
542
  }
691
543
  catch (error) {
692
- result = failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
544
+ return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
693
545
  }
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
- }
546
+ try {
547
+ return await executeRebuildOperationCore(options, accumulator, events);
548
+ }
549
+ catch (error) {
550
+ return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
705
551
  }
706
- return result;
707
552
  }
708
- async function executeRebuildOperationLocked(options, accumulator, store, events) {
709
- if (options.command === 'install' || options.command === 'upgrade') {
553
+ async function executeRebuildOperationCore(options, accumulator, events, preparation) {
554
+ if (options.command === 'install') {
710
555
  return materializeTarget({
711
556
  command: options.command,
712
- lifecycleEvent: options.command,
713
557
  target: options.target,
714
558
  driver: options.driver,
715
- store,
716
559
  accumulator,
717
560
  events,
561
+ ...(preparation ? {
562
+ inspection: preparation.inspection,
563
+ preApplyCompleted: true,
564
+ } : {}),
718
565
  });
719
566
  }
720
567
  if (options.command === 'cleanup') {
@@ -722,7 +569,6 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
722
569
  command: 'cleanup',
723
570
  target: options.target,
724
571
  driver: options.driver,
725
- store,
726
572
  accumulator,
727
573
  events,
728
574
  });
@@ -731,34 +577,46 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
731
577
  return executeUninstall({
732
578
  target: options.target,
733
579
  driver: options.driver,
734
- store,
735
580
  accumulator,
736
581
  events,
737
582
  });
738
583
  }
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);
584
+ let inspection = preparation?.inspection;
585
+ if (!inspection) {
586
+ try {
587
+ inspection = await action(accumulator, 'preflight.inspect', async () => {
588
+ await options.driver.preflightMaterialize?.(options.target);
589
+ return inspectOwnedComponents({
590
+ components: options.target.ownedComponents,
591
+ executor: options.driver.ownership,
592
+ nativeProbe: options.driver.probeNative,
593
+ });
594
+ }, events, collisionMessage);
595
+ }
596
+ catch (error) {
597
+ return failed('reinstall', options.target, accumulator, 'preflight.inspect', errorMessage(error));
598
+ }
599
+ const collision = collisionMessage(inspection);
600
+ if (collision) {
601
+ recordInspectionResiduals(accumulator, inspection);
602
+ return failed('reinstall', options.target, accumulator, 'preflight.inspect', collision);
603
+ }
604
+ if (options.target.preApplySource.manifest.scripts?.preApply) {
605
+ try {
606
+ await action(accumulator, 'preApply', () => options.driver.runPreApply({
607
+ target: options.target,
608
+ plugin: options.target.preApplySource,
609
+ }), events);
610
+ }
611
+ catch (error) {
612
+ return failed('reinstall', options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
613
+ }
614
+ }
756
615
  }
757
616
  const cleanupResult = await executeCleanup({
758
617
  command: 'reinstall',
759
618
  target: options.target,
760
619
  driver: options.driver,
761
- store,
762
620
  accumulator,
763
621
  events,
764
622
  });
@@ -766,14 +624,83 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
766
624
  return cleanupResult;
767
625
  return materializeTarget({
768
626
  command: 'reinstall',
769
- lifecycleEvent: 'install',
770
627
  target: options.target,
771
628
  driver: options.driver,
772
- store,
773
629
  accumulator,
774
630
  events,
631
+ inspection,
632
+ preApplyCompleted: true,
633
+ skipStaleCleanup: true,
775
634
  });
776
635
  }
636
+ export async function prepareRebuildOperation(options) {
637
+ const accumulator = createAccumulator();
638
+ const events = {
639
+ command: options.command,
640
+ target: options.target.identity,
641
+ emit: options.onActionEvent,
642
+ now: options.now ?? Date.now,
643
+ };
644
+ try {
645
+ validateDesiredTarget(options.target);
646
+ }
647
+ catch (error) {
648
+ return {
649
+ status: 'failed',
650
+ result: failed(options.command, options.target, accumulator, 'preflight', errorMessage(error)),
651
+ };
652
+ }
653
+ let inspection;
654
+ try {
655
+ inspection = await action(accumulator, 'preflight.inspect', async () => {
656
+ await options.driver.preflightMaterialize?.(options.target);
657
+ return inspectOwnedComponents({
658
+ components: options.deferNativeInspection
659
+ ? options.target.ownedComponents.filter((component) => component.kind !== 'native-plugin')
660
+ : options.target.ownedComponents,
661
+ executor: options.driver.ownership,
662
+ nativeProbe: options.driver.probeNative,
663
+ });
664
+ }, events, collisionMessage);
665
+ }
666
+ catch (error) {
667
+ return {
668
+ status: 'failed',
669
+ result: failed(options.command, options.target, accumulator, 'preflight.inspect', errorMessage(error)),
670
+ };
671
+ }
672
+ const collision = collisionMessage(inspection);
673
+ if (collision) {
674
+ recordInspectionResiduals(accumulator, inspection);
675
+ return {
676
+ status: 'failed',
677
+ result: failed(options.command, options.target, accumulator, 'preflight.inspect', collision),
678
+ };
679
+ }
680
+ if (!options.skipPreApply && options.target.preApplySource.manifest.scripts?.preApply) {
681
+ try {
682
+ await action(accumulator, 'preApply', () => options.driver.runPreApply({
683
+ target: options.target,
684
+ plugin: options.target.preApplySource,
685
+ }), events);
686
+ }
687
+ catch (error) {
688
+ return {
689
+ status: 'failed',
690
+ result: failed(options.command, options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error)),
691
+ };
692
+ }
693
+ }
694
+ return {
695
+ status: 'ready',
696
+ preparation: {
697
+ command: options.command,
698
+ target: options.target,
699
+ inspection,
700
+ actions: accumulator.actions,
701
+ },
702
+ };
703
+ }
777
704
  export async function executeRebuildTargets(options) {
778
705
  const results = [];
779
706
  for (const target of options.targets) {
@@ -781,11 +708,24 @@ export async function executeRebuildTargets(options) {
781
708
  command: options.command,
782
709
  target,
783
710
  driver: options.driver,
784
- activeStore: options.activeStore,
785
711
  ...(options.onActionEvent ? { onActionEvent: options.onActionEvent } : {}),
786
712
  ...(options.now ? { now: options.now } : {}),
787
713
  }));
788
714
  }
715
+ const postcheckFailures = await options.driver.completePostchecks?.() ?? [];
716
+ for (const failure of postcheckFailures) {
717
+ const index = results.findIndex((result) => result.target === failure.target.identity);
718
+ if (index === -1 || results[index].status === 'failed')
719
+ continue;
720
+ const result = results[index];
721
+ const message = errorMessage(failure.error);
722
+ result.failures.unshift({ phase: 'postcheck.inspect', message });
723
+ results[index] = {
724
+ ...result,
725
+ status: 'failed',
726
+ error: { phase: 'postcheck.inspect', message },
727
+ };
728
+ }
789
729
  return results;
790
730
  }
791
731
  //# sourceMappingURL=rebuild-operations.js.map