@lesliechan721/aw 0.1.0-beta.64 → 0.1.0-beta.65

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 (302) hide show
  1. package/dist/authoring/assets/aw-runtime-config.mjs +3 -3
  2. package/dist/authoring/assets/aw-runtime-config.mjs.map +1 -1
  3. package/dist/authoring/scripts/add-skill.mjs +3 -17
  4. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  5. package/dist/authoring/scripts/init-plugin.mjs +1 -0
  6. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  7. package/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
  8. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +2 -0
  9. package/dist/authoring/scripts/lib/skill-scaffold.mjs +2 -0
  10. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  11. package/dist/authoring/scripts/validate-plugin.mjs +95 -698
  12. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  13. package/dist/scripts/aw-skill-eval-materializer.d.ts +2 -0
  14. package/dist/scripts/aw-skill-eval-materializer.js +74 -44
  15. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -1
  16. package/dist/scripts/bundle-plugins.js +10 -2
  17. package/dist/scripts/bundle-plugins.js.map +1 -1
  18. package/dist/scripts/plugin-staging.d.ts +1 -1
  19. package/dist/scripts/plugin-staging.js +1 -1
  20. package/dist/scripts/plugin-staging.js.map +1 -1
  21. package/dist/scripts/test-plugin-scripts.js +31 -31
  22. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  23. package/dist/src/commands/aw-capabilities.d.ts +1 -1
  24. package/dist/src/commands/aw-capabilities.js +2 -0
  25. package/dist/src/commands/aw-capabilities.js.map +1 -1
  26. package/dist/src/commands/console.js +4 -3
  27. package/dist/src/commands/console.js.map +1 -1
  28. package/dist/src/commands/intent-command.d.ts +30 -0
  29. package/dist/src/commands/intent-command.js +164 -0
  30. package/dist/src/commands/intent-command.js.map +1 -0
  31. package/dist/src/commands/operation-plan.d.ts +2 -0
  32. package/dist/src/commands/operation-plan.js +2 -1
  33. package/dist/src/commands/operation-plan.js.map +1 -1
  34. package/dist/src/commands/options.d.ts +3 -11
  35. package/dist/src/commands/options.js +11 -17
  36. package/dist/src/commands/options.js.map +1 -1
  37. package/dist/src/commands/plugin-capabilities.js +27 -33
  38. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  39. package/dist/src/commands/rebuild-command.d.ts +108 -6
  40. package/dist/src/commands/rebuild-command.js +617 -1549
  41. package/dist/src/commands/rebuild-command.js.map +1 -1
  42. package/dist/src/commands/rebuild-integration.d.ts +19 -3
  43. package/dist/src/commands/rebuild-integration.js +500 -459
  44. package/dist/src/commands/rebuild-integration.js.map +1 -1
  45. package/dist/src/commands/rebuild-operations.js +1 -2
  46. package/dist/src/commands/rebuild-operations.js.map +1 -1
  47. package/dist/src/commands/review-inspection.d.ts +2 -2
  48. package/dist/src/commands/review-inspection.js +30 -86
  49. package/dist/src/commands/review-inspection.js.map +1 -1
  50. package/dist/src/commands/review-preparation.js +16 -7
  51. package/dist/src/commands/review-preparation.js.map +1 -1
  52. package/dist/src/commands/skill-eval.d.ts +2 -0
  53. package/dist/src/commands/skill-eval.js +15 -9
  54. package/dist/src/commands/skill-eval.js.map +1 -1
  55. package/dist/src/commands/status-v6.d.ts +38 -5
  56. package/dist/src/commands/status-v6.js +269 -102
  57. package/dist/src/commands/status-v6.js.map +1 -1
  58. package/dist/src/commands/targets-command.d.ts +27 -0
  59. package/dist/src/commands/targets-command.js +77 -0
  60. package/dist/src/commands/targets-command.js.map +1 -0
  61. package/dist/src/commands/write-commands.js +5 -5
  62. package/dist/src/commands/write-commands.js.map +1 -1
  63. package/dist/src/eval/manifest-v1.d.ts +2 -0
  64. package/dist/src/eval/manifest-v1.js +7 -2
  65. package/dist/src/eval/manifest-v1.js.map +1 -1
  66. package/dist/src/generators/local-plugin.d.ts +2 -1
  67. package/dist/src/generators/local-plugin.js +111 -108
  68. package/dist/src/generators/local-plugin.js.map +1 -1
  69. package/dist/src/index.d.ts +10 -17
  70. package/dist/src/index.js +585 -1349
  71. package/dist/src/index.js.map +1 -1
  72. package/dist/src/intent/deployment-preferences.d.ts +63 -0
  73. package/dist/src/intent/deployment-preferences.js +170 -0
  74. package/dist/src/intent/deployment-preferences.js.map +1 -0
  75. package/dist/src/intent/diagnostics.d.ts +11 -0
  76. package/dist/src/intent/diagnostics.js +14 -0
  77. package/dist/src/intent/diagnostics.js.map +1 -0
  78. package/dist/src/intent/intent-codec.d.ts +19 -0
  79. package/dist/src/intent/intent-codec.js +117 -0
  80. package/dist/src/intent/intent-codec.js.map +1 -0
  81. package/dist/src/intent/intent-store.d.ts +43 -0
  82. package/dist/src/intent/intent-store.js +118 -0
  83. package/dist/src/intent/intent-store.js.map +1 -0
  84. package/dist/src/intent/scope-context.d.ts +33 -0
  85. package/dist/src/intent/scope-context.js +145 -0
  86. package/dist/src/intent/scope-context.js.map +1 -0
  87. package/dist/src/intent/work-context.d.ts +13 -0
  88. package/dist/src/intent/work-context.js +22 -0
  89. package/dist/src/intent/work-context.js.map +1 -0
  90. package/dist/src/output/command-receipt.js +16 -9
  91. package/dist/src/output/command-receipt.js.map +1 -1
  92. package/dist/src/portable/commands.d.ts +18 -8
  93. package/dist/src/portable/commands.js +46 -562
  94. package/dist/src/portable/commands.js.map +1 -1
  95. package/dist/src/portable/historical-materialization.d.ts +22 -0
  96. package/dist/src/portable/historical-materialization.js +124 -0
  97. package/dist/src/portable/historical-materialization.js.map +1 -0
  98. package/dist/src/portable/materializer.d.ts +8 -0
  99. package/dist/src/portable/materializer.js +75 -44
  100. package/dist/src/portable/materializer.js.map +1 -1
  101. package/dist/src/portable/recovery-layout.d.ts +17 -0
  102. package/dist/src/portable/recovery-layout.js +55 -0
  103. package/dist/src/portable/recovery-layout.js.map +1 -0
  104. package/dist/src/portable/recovery.d.ts +143 -0
  105. package/dist/src/portable/recovery.js +339 -0
  106. package/dist/src/portable/recovery.js.map +1 -0
  107. package/dist/src/portable/writer.d.ts +64 -0
  108. package/dist/src/portable/writer.js +316 -0
  109. package/dist/src/portable/writer.js.map +1 -0
  110. package/dist/src/recovery/coordinator.d.ts +137 -0
  111. package/dist/src/recovery/coordinator.js +1198 -0
  112. package/dist/src/recovery/coordinator.js.map +1 -0
  113. package/dist/src/recovery/demand.d.ts +44 -0
  114. package/dist/src/recovery/demand.js +178 -0
  115. package/dist/src/recovery/demand.js.map +1 -0
  116. package/dist/src/recovery/joint-coordinator.d.ts +24 -0
  117. package/dist/src/recovery/joint-coordinator.js +770 -0
  118. package/dist/src/recovery/joint-coordinator.js.map +1 -0
  119. package/dist/src/recovery/joint-demand.d.ts +68 -0
  120. package/dist/src/recovery/joint-demand.js +166 -0
  121. package/dist/src/recovery/joint-demand.js.map +1 -0
  122. package/dist/src/recovery/receipt.d.ts +81 -0
  123. package/dist/src/recovery/receipt.js +2 -0
  124. package/dist/src/recovery/receipt.js.map +1 -0
  125. package/dist/src/recovery/retirement.d.ts +45 -0
  126. package/dist/src/recovery/retirement.js +366 -0
  127. package/dist/src/recovery/retirement.js.map +1 -0
  128. package/dist/src/recovery/status.d.ts +108 -0
  129. package/dist/src/recovery/status.js +417 -0
  130. package/dist/src/recovery/status.js.map +1 -0
  131. package/dist/src/recovery/types.d.ts +86 -0
  132. package/dist/src/recovery/types.js +2 -0
  133. package/dist/src/recovery/types.js.map +1 -0
  134. package/dist/src/review/review-profile.d.ts +2 -1
  135. package/dist/src/review/review-profile.js +15 -15
  136. package/dist/src/review/review-profile.js.map +1 -1
  137. package/dist/src/review/review-selection.d.ts +1 -2
  138. package/dist/src/review/review-selection.js +40 -114
  139. package/dist/src/review/review-selection.js.map +1 -1
  140. package/dist/src/review/review-types.d.ts +4 -4
  141. package/dist/src/review/review-types.js.map +1 -1
  142. package/dist/src/review/skill-materialization.js +15 -6
  143. package/dist/src/review/skill-materialization.js.map +1 -1
  144. package/dist/src/review/source-binding.d.ts +14 -4
  145. package/dist/src/review/source-binding.js +62 -117
  146. package/dist/src/review/source-binding.js.map +1 -1
  147. package/dist/src/tui/agent-management.d.ts +23 -0
  148. package/dist/src/tui/agent-management.js +217 -0
  149. package/dist/src/tui/agent-management.js.map +1 -0
  150. package/dist/src/tui/agent-settings.d.ts +44 -0
  151. package/dist/src/tui/agent-settings.js +98 -0
  152. package/dist/src/tui/agent-settings.js.map +1 -0
  153. package/dist/src/tui/components.d.ts +3 -0
  154. package/dist/src/tui/components.js +10 -1
  155. package/dist/src/tui/components.js.map +1 -1
  156. package/dist/src/tui/config-references.d.ts +6 -3
  157. package/dist/src/tui/config-references.js +17 -12
  158. package/dist/src/tui/config-references.js.map +1 -1
  159. package/dist/src/tui/console-app-v4.d.ts +1 -2
  160. package/dist/src/tui/console-app-v4.js +1533 -1047
  161. package/dist/src/tui/console-app-v4.js.map +1 -1
  162. package/dist/src/tui/controller-runtime.d.ts +2 -1
  163. package/dist/src/tui/controller-runtime.js +405 -1626
  164. package/dist/src/tui/controller-runtime.js.map +1 -1
  165. package/dist/src/tui/controller.d.ts +131 -81
  166. package/dist/src/tui/controller.js +307 -227
  167. package/dist/src/tui/controller.js.map +1 -1
  168. package/dist/src/tui/entity-cards.d.ts +2 -2
  169. package/dist/src/tui/entity-cards.js +98 -20
  170. package/dist/src/tui/entity-cards.js.map +1 -1
  171. package/dist/src/tui/glossary.d.ts +2 -0
  172. package/dist/src/tui/glossary.js +20 -0
  173. package/dist/src/tui/glossary.js.map +1 -1
  174. package/dist/src/tui/model.d.ts +28 -10
  175. package/dist/src/tui/model.js +41 -41
  176. package/dist/src/tui/model.js.map +1 -1
  177. package/dist/src/tui/operation-review-planner.d.ts +2 -0
  178. package/dist/src/tui/operation-review-planner.js +58 -122
  179. package/dist/src/tui/operation-review-planner.js.map +1 -1
  180. package/dist/src/tui/plugin-content.js +7 -4
  181. package/dist/src/tui/plugin-content.js.map +1 -1
  182. package/dist/src/tui/plugin-detail.d.ts +22 -3
  183. package/dist/src/tui/plugin-detail.js +113 -26
  184. package/dist/src/tui/plugin-detail.js.map +1 -1
  185. package/dist/src/tui/reader.d.ts +1 -0
  186. package/dist/src/tui/reader.js +3 -1
  187. package/dist/src/tui/reader.js.map +1 -1
  188. package/dist/src/tui/router.d.ts +23 -33
  189. package/dist/src/tui/router.js.map +1 -1
  190. package/dist/src/tui/scoped-flow.d.ts +45 -0
  191. package/dist/src/tui/scoped-flow.js +96 -0
  192. package/dist/src/tui/scoped-flow.js.map +1 -0
  193. package/dist/src/tui/scoped-inventory.d.ts +122 -0
  194. package/dist/src/tui/scoped-inventory.js +225 -0
  195. package/dist/src/tui/scoped-inventory.js.map +1 -0
  196. package/dist/src/tui/screen-registry.d.ts +25 -25
  197. package/dist/src/tui/screen-registry.js +3 -7
  198. package/dist/src/tui/screen-registry.js.map +1 -1
  199. package/dist/src/tui/session-console-app.js +1 -1
  200. package/dist/src/tui/session-console-app.js.map +1 -1
  201. package/dist/src/tui/session-host.js +12 -2
  202. package/dist/src/tui/session-host.js.map +1 -1
  203. package/dist/src/types.d.ts +15 -12
  204. package/dist/src/types.js.map +1 -1
  205. package/dist/src/utils/agent-version.js +2 -0
  206. package/dist/src/utils/agent-version.js.map +1 -1
  207. package/dist/src/utils/artifact-plan.js +13 -6
  208. package/dist/src/utils/artifact-plan.js.map +1 -1
  209. package/dist/src/utils/artifact-renderer.d.ts +6 -3
  210. package/dist/src/utils/artifact-renderer.js +27 -32
  211. package/dist/src/utils/artifact-renderer.js.map +1 -1
  212. package/dist/src/utils/artifact-request.d.ts +1 -0
  213. package/dist/src/utils/artifact-request.js +22 -12
  214. package/dist/src/utils/artifact-request.js.map +1 -1
  215. package/dist/src/utils/artifact-sources.d.ts +2 -2
  216. package/dist/src/utils/bundle-layout.js +18 -16
  217. package/dist/src/utils/bundle-layout.js.map +1 -1
  218. package/dist/src/utils/catalog-digests.js +2 -0
  219. package/dist/src/utils/catalog-digests.js.map +1 -1
  220. package/dist/src/utils/catalog-runtime-projection.d.ts +4 -3
  221. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  222. package/dist/src/utils/catalog-source-references.d.ts +5 -0
  223. package/dist/src/utils/catalog-source-references.js +42 -57
  224. package/dist/src/utils/catalog-source-references.js.map +1 -1
  225. package/dist/src/utils/claude-native-render-receipt.d.ts +14 -0
  226. package/dist/src/utils/claude-native-render-receipt.js +26 -0
  227. package/dist/src/utils/claude-native-render-receipt.js.map +1 -0
  228. package/dist/src/utils/claude-skills-root.js +14 -3
  229. package/dist/src/utils/claude-skills-root.js.map +1 -1
  230. package/dist/src/utils/codex-manager.js +6 -12
  231. package/dist/src/utils/codex-manager.js.map +1 -1
  232. package/dist/src/utils/codex-native-observation.js +29 -13
  233. package/dist/src/utils/codex-native-observation.js.map +1 -1
  234. package/dist/src/utils/codex-reconciler.d.ts +2 -5
  235. package/dist/src/utils/codex-reconciler.js +25 -1
  236. package/dist/src/utils/codex-reconciler.js.map +1 -1
  237. package/dist/src/utils/codex-surface-analysis.js +5 -3
  238. package/dist/src/utils/codex-surface-analysis.js.map +1 -1
  239. package/dist/src/utils/local-marketplace.d.ts +14 -2
  240. package/dist/src/utils/local-marketplace.js +209 -42
  241. package/dist/src/utils/local-marketplace.js.map +1 -1
  242. package/dist/src/utils/managed-command-evidence.js +1 -1
  243. package/dist/src/utils/managed-command-evidence.js.map +1 -1
  244. package/dist/src/utils/managed-command-materialization.d.ts +4 -0
  245. package/dist/src/utils/managed-command-materialization.js +15 -6
  246. package/dist/src/utils/managed-command-materialization.js.map +1 -1
  247. package/dist/src/utils/managed-command-store.d.ts +15 -0
  248. package/dist/src/utils/managed-command-store.js +73 -8
  249. package/dist/src/utils/managed-command-store.js.map +1 -1
  250. package/dist/src/utils/native-cli.d.ts +2 -0
  251. package/dist/src/utils/native-cli.js +22 -0
  252. package/dist/src/utils/native-cli.js.map +1 -1
  253. package/dist/src/utils/native-demand.d.ts +10 -0
  254. package/dist/src/utils/native-demand.js +4 -0
  255. package/dist/src/utils/native-demand.js.map +1 -0
  256. package/dist/src/utils/ownership.js +2 -0
  257. package/dist/src/utils/ownership.js.map +1 -1
  258. package/dist/src/utils/paths.js +1 -1
  259. package/dist/src/utils/paths.js.map +1 -1
  260. package/dist/src/utils/platform-support.d.ts +1 -1
  261. package/dist/src/utils/platform-support.js +1 -1
  262. package/dist/src/utils/platform-support.js.map +1 -1
  263. package/dist/src/utils/plugin-config-impact.d.ts +3 -0
  264. package/dist/src/utils/plugin-config-impact.js +115 -273
  265. package/dist/src/utils/plugin-config-impact.js.map +1 -1
  266. package/dist/src/utils/plugin-config-references.d.ts +9 -2
  267. package/dist/src/utils/plugin-config-references.js +75 -85
  268. package/dist/src/utils/plugin-config-references.js.map +1 -1
  269. package/dist/src/utils/plugin-config-write.d.ts +58 -1
  270. package/dist/src/utils/plugin-config-write.js +756 -809
  271. package/dist/src/utils/plugin-config-write.js.map +1 -1
  272. package/dist/src/utils/plugin-config.d.ts +47 -46
  273. package/dist/src/utils/plugin-config.js +292 -833
  274. package/dist/src/utils/plugin-config.js.map +1 -1
  275. package/dist/src/utils/plugin-scripts.d.ts +11 -6
  276. package/dist/src/utils/plugin-scripts.js +52 -35
  277. package/dist/src/utils/plugin-scripts.js.map +1 -1
  278. package/dist/src/utils/runtime-config.js +5 -4
  279. package/dist/src/utils/runtime-config.js.map +1 -1
  280. package/dist/src/utils/runtime-skill-closure.d.ts +2 -2
  281. package/dist/src/utils/runtime-skill-closure.js.map +1 -1
  282. package/dist/src/utils/state-paths.d.ts +8 -3
  283. package/dist/src/utils/state-paths.js +53 -16
  284. package/dist/src/utils/state-paths.js.map +1 -1
  285. package/dist/src/utils/windows-npm-shim.d.ts +2 -0
  286. package/dist/src/utils/windows-npm-shim.js +5 -7
  287. package/dist/src/utils/windows-npm-shim.js.map +1 -1
  288. package/dist/vitest.config.js +1 -0
  289. package/dist/vitest.config.js.map +1 -1
  290. package/package.json +3 -3
  291. package/dist/src/commands/sync-command.d.ts +0 -40
  292. package/dist/src/commands/sync-command.js +0 -254
  293. package/dist/src/commands/sync-command.js.map +0 -1
  294. package/dist/src/portable/skills-cli.d.ts +0 -51
  295. package/dist/src/portable/skills-cli.js +0 -202
  296. package/dist/src/portable/skills-cli.js.map +0 -1
  297. package/dist/src/tui/project-inventory.d.ts +0 -68
  298. package/dist/src/tui/project-inventory.js +0 -203
  299. package/dist/src/tui/project-inventory.js.map +0 -1
  300. package/dist/src/utils/plugin-intent-state.d.ts +0 -49
  301. package/dist/src/utils/plugin-intent-state.js +0 -320
  302. package/dist/src/utils/plugin-intent-state.js.map +0 -1
@@ -0,0 +1,366 @@
1
+ import { describeNativeToolClosure } from '../utils/native-tool-review.js';
2
+ import { executeRemovedPluginOutputCleanup, inspectRemovedPluginCleanup, } from '../commands/rebuild-command.js';
3
+ import { bindNativeCliRunnerSignal, getDefaultNativeCliRunner } from '../utils/native-cli.js';
4
+ import { inventoryCatalogSourceReferences } from '../utils/catalog-source-references.js';
5
+ import { withAwHomeMutationLock } from '../utils/aw-home-mutation-lock.js';
6
+ import { parsePluginId } from '../utils/multi-source-catalog.js';
7
+ import { deletePluginConfigStore } from '../utils/plugin-config.js';
8
+ import { observeIntent, removeRoot } from '../intent/intent-store.js';
9
+ import { observePreferences, writePreferences, selectAgents } from '../intent/deployment-preferences.js';
10
+ import { assertNeutralAncestorChain, createScopeContext } from '../intent/scope-context.js';
11
+ import { inspectPortableResidue } from '../portable/recovery.js';
12
+ function evidence(value) {
13
+ return `${value.state}:${value.rawDigest ?? ''}`;
14
+ }
15
+ function diagnostic(code, message = `停用受阻:${code}。`) { return { code, message }; }
16
+ function safeRemovedEvidence(entry) {
17
+ return entry && { platform: entry.platform, scope: entry.scope,
18
+ plannedActions: entry.plan.actions.map(({ action, kind }) => ({ action, kind })) };
19
+ }
20
+ function codeOf(error, fallback) {
21
+ const code = error?.code;
22
+ if (typeof code === 'string')
23
+ return code;
24
+ const removedCode = error instanceof Error ? /\bremovedPlugin[A-Za-z0-9-]+/u.exec(error.message)?.[0] : undefined;
25
+ if (removedCode)
26
+ return removedCode;
27
+ const first = error instanceof Error ? error.message.split(':')[0] : '';
28
+ return /^[A-Za-z][A-Za-z0-9-]*$/u.test(first) ? first : fallback;
29
+ }
30
+ function blocksStrongRetirement(code, deleteConfig) {
31
+ return ['pluginIntentStateInvalid', 'deploymentPreferencesInvalid', 'removedPluginActiveUnavailable',
32
+ 'removedPluginIntentSourceMismatch',
33
+ 'removedPluginOwnershipConflict', 'removedPluginConfigIdentityConflict',
34
+ 'removedPluginMarketplaceIdentityConflict'].includes(code)
35
+ || deleteConfig && (code === 'removedPluginConfigTargetUnsupported' || code === 'removedPluginConfigTargetUnsafe');
36
+ }
37
+ function finish(receipt, options, portable, configDeletionCompleted = false) {
38
+ receipt.requestedTargets = receipt.targetResults.map(({ pluginId, agent, scope, delivery }) => ({ pluginId, agent, scope, delivery }));
39
+ receipt.remainingTargets = receipt.targetResults.filter((target) => target.blockers.length
40
+ || !['applied', 'no-op'].includes(target.execution)).map(({ pluginId, agent, scope, delivery }) => ({ pluginId, agent, scope, delivery }));
41
+ const commandFailures = (receipt.commandResults ?? []).filter((result) => result.state !== 'completed');
42
+ receipt.errors = [...receipt.blockers, ...commandFailures.flatMap((result) => result.errors.length ? result.errors.map((error) => ({ ...error,
43
+ pluginId: `${result.producer.sourceId}/${result.producer.pluginName}` }))
44
+ : [diagnostic('managedCommandRecoveryFailed')])];
45
+ receipt.ok = !receipt.blockers.length && !receipt.remainingTargets.length && !commandFailures.length;
46
+ const agents = [...new Set(receipt.requestedTargets.map((target) => target.agent))];
47
+ const retry = `aw plugin intent retire ${options.selector} --scope ${options.scope}`
48
+ + agents.map((agent) => ` --target ${agent}`).join('')
49
+ + (options.deleteConfig && !configDeletionCompleted ? ' --delete-config' : '');
50
+ receipt.recoveryActions = [...new Set([
51
+ ...(receipt.commandResults ?? []).flatMap((result) => result.recoveryActions),
52
+ ...(!receipt.ok ? [...portable.targets.map((entry) => `请检查并备份 Portable 目录 ${entry.physicalPath};核验共享读取和归属后自行移开,AW 不自动删除。`),
53
+ retry] : []),
54
+ ])];
55
+ return receipt;
56
+ }
57
+ export async function prepareRetire(options, runtime = {}) {
58
+ options.signal?.throwIfAborted();
59
+ const context = await createScopeContext({ scope: options.scope, cwd: options.cwd, env: options.env });
60
+ try {
61
+ options.signal?.throwIfAborted();
62
+ const parsed = parsePluginId(options.selector);
63
+ if (!parsed.sourceId || `${parsed.sourceId}/${parsed.pluginName}` !== options.selector)
64
+ throw new Error('invalidArguments');
65
+ const [intent, preferences] = await Promise.all([
66
+ observeIntent({ ...options, cwd: context.executionCwd, env: context.env }),
67
+ observePreferences({ ...options, cwd: context.executionCwd, env: context.env }),
68
+ ]);
69
+ const blockers = [];
70
+ if (intent.state !== 'valid' && intent.state !== 'absent')
71
+ blockers.push(diagnostic('pluginIntentStateInvalid'));
72
+ if (preferences.state === 'invalid' || preferences.state === 'unreadable') {
73
+ blockers.push(diagnostic('deploymentPreferencesInvalid'));
74
+ }
75
+ const inventory = await (runtime.inventoryCatalogSourceReferences ?? inventoryCatalogSourceReferences)({
76
+ cwd: context.executionCwd, env: context.env, scope: options.scope, includeProjectAgentSkills: true,
77
+ });
78
+ options.signal?.throwIfAborted();
79
+ const removed = await inspectRemovedPluginCleanup({ pluginId: options.selector, scope: options.scope,
80
+ inventory, cwd: context.executionCwd, env: context.env,
81
+ nativeCliRunner: bindNativeCliRunnerSignal(runtime.nativeCliRunner ?? getDefaultNativeCliRunner(), options.signal),
82
+ codexManager: runtime.codexManager });
83
+ options.signal?.throwIfAborted();
84
+ if (!removed)
85
+ blockers.push(diagnostic('removedPluginActiveUnavailable', '需要健康的本地 Active 和插件缺席证据,才能停用已移除插件。'));
86
+ else
87
+ blockers.push(...removed.blockers.map((message) => diagnostic(codeOf(new Error(message), 'removedPluginBlocked'))));
88
+ if (removed && intent.state === 'valid'
89
+ && intent.value.roots.some((root) => root.pluginId === options.selector)
90
+ && intent.value.sources[parsed.sourceId]?.logicalIdentity !== removed.logicalIdentity) {
91
+ blockers.push(diagnostic('removedPluginIntentSourceMismatch'));
92
+ }
93
+ const requestedAgents = options.targets === undefined ? undefined : selectAgents({ preferences, targets: options.targets }).agents;
94
+ const portable = await inspectPortableResidue({ scope: options.scope, context, selector: options.selector,
95
+ env: context.env, agents: requestedAgents?.filter((agent) => agent !== 'codex' && agent !== 'claude'), signal: options.signal });
96
+ options.signal?.throwIfAborted();
97
+ const agents = requestedAgents ?? [...new Set([
98
+ ...(removed?.evidence.filter((entry) => entry.plan.actions.length).map((entry) => entry.platform === 'claude'
99
+ ? 'claude' : 'codex') ?? []),
100
+ ...(removed && (removed.nativeState === 'installed' || removed.nativeState === 'unknown'
101
+ || removed.projectionPresent || removed.activationScopes.length > 0) ? ['codex'] : []),
102
+ ...portable.targets.map((entry) => entry.agent),
103
+ ...(portable.unknownAgents ?? []),
104
+ ])];
105
+ const targetResults = agents.map((agent) => {
106
+ const delivery = agent !== 'codex' && agent !== 'claude' ? { kind: 'agent-skills', provider: 'aw', agentId: agent }
107
+ : { kind: 'native', platform: agent === 'claude' ? 'claude' : 'codex' };
108
+ const portableUnknown = portable.unknownAgents?.some((item) => item === agent) ?? portable.state === 'unknown';
109
+ const hasPortable = portableUnknown || portable.targets.some((target) => target.agent === agent);
110
+ const hasNative = delivery.kind === 'native' && (removed?.evidence.some((entry) => entry.platform === (delivery.kind === 'native' ? delivery.platform : undefined))
111
+ || removed?.nativeState === 'installed' || removed?.nativeState === 'unknown'
112
+ || removed?.projectionPresent || (removed?.activationScopes.length ?? 0) > 0);
113
+ return { pluginId: options.selector, agent, scope: options.scope, delivery,
114
+ execution: 'not-run', observation: 'unknown', content: hasPortable || hasNative ? 'unknown' : 'absent',
115
+ blockers: hasPortable ? [diagnostic(portableUnknown
116
+ ? 'portableObservationFailed' : 'backend-action-unsupported')] : [], requiredBy: [options.selector],
117
+ relation: 'residue', backend: { native: safeRemovedEvidence(removed?.evidence.find((entry) => entry.platform === (delivery.kind === 'native' ? delivery.platform : undefined))),
118
+ portable: portable.targets.filter((entry) => entry.agent === agent) } };
119
+ });
120
+ const roots = intent.state === 'valid' ? intent.value.roots.map((root) => root.pluginId)
121
+ : intent.state === 'absent' ? [] : null;
122
+ const selection = preferences.state === 'valid' || preferences.state === 'absent'
123
+ ? selectAgents({ preferences, targets: options.targets })
124
+ : { agents: [], origin: 'none', preferences: preferences.state };
125
+ const receipt = { schemaVersion: 1, kind: 'aw-recovery', scope: options.scope,
126
+ command: 'intent:retire', ok: false, intent: { state: intent.state,
127
+ ...('digest' in intent ? { digest: intent.digest } : {}), roots }, requestedRoots: [options.selector],
128
+ requestedTargets: [], selection, blockers, errors: [], targetResults, remainingTargets: [], recoveryActions: [],
129
+ declarationChanged: false, preferencesChanged: false, configChanged: false, outputsMayHaveChanged: false };
130
+ const plannedImpact = {
131
+ declaration: roots?.includes(options.selector) === true,
132
+ preferences: preferences.state === 'valid' && preferences.value.exclusions.some((entry) => entry.plugin === options.selector),
133
+ config: options.deleteConfig === true && removed?.configTargets.some((entry) => entry.scope === options.scope && entry.kind !== 'absent') === true,
134
+ outputs: removed?.evidence.some((entry) => entry.plan.actions.length > 0
135
+ && agents.includes(entry.platform === 'claude' ? 'claude' : 'codex')) === true,
136
+ };
137
+ const changes = [
138
+ ...(plannedImpact.declaration ? [`删除 ${options.scope} 声明 ${options.selector}。`] : []),
139
+ ...(plannedImpact.preferences ? [`删除此插件的本机平台排除。`] : []),
140
+ ...(plannedImpact.config ? [`删除 ${options.scope} 已保存配置。`] : []),
141
+ ...agents.filter((agent) => agent !== 'cursor').map((agent) => `检查并清理 ${options.scope}/${agent} 已验证原生输出。`),
142
+ ];
143
+ const preview = removed ? await executeRemovedPluginOutputCleanup({ target: removed,
144
+ selectedTargets: targetResults.flatMap((target) => target.delivery?.kind === 'native'
145
+ ? [{ pluginId: target.pluginId, platform: target.delivery.platform, scope: target.scope }] : []),
146
+ context, runtime: { ...runtime, previewOperationPlan: true,
147
+ nativeCliRunner: bindNativeCliRunnerSignal(runtime.nativeCliRunner ?? getDefaultNativeCliRunner(), options.signal) },
148
+ }) : undefined;
149
+ options.signal?.throwIfAborted();
150
+ const nativeToolChanges = preview?.operationPlan?.actions.flatMap((action) => action.nativeToolChanges ?? []) ?? [];
151
+ if (nativeToolChanges.length)
152
+ receipt.nativeToolChanges = nativeToolChanges;
153
+ for (const action of preview?.operationPlan?.actions ?? []) {
154
+ for (const change of action.nativeToolChanges ?? []) {
155
+ if (change.before)
156
+ changes.push(...describeNativeToolClosure(change.before).map((description) => `撤销原生工具 · ${change.producer.sourceId}/${change.producer.pluginName} · ${change.producer.key} · ${description}`));
157
+ }
158
+ if (action.kind !== 'retainManagedCommandPackage')
159
+ continue;
160
+ changes.push(`保留命令包 ${action.producer.key}:${action.producer.sourceId}/${action.producer.pluginName}`
161
+ + ` · ${action.producer.scope === 'user' ? '所有项目共用' : '当前项目内共用'}`
162
+ + ` · ${action.commandIds.length} 个命令 · ${action.availability} · ${action.recoveryAction}`);
163
+ }
164
+ const { signal: _signal, ...executionOptions } = options;
165
+ return { options: executionOptions, context, evidence: removed, portable, receipt: finish(receipt, options, portable),
166
+ intentEvidence: evidence(intent), preferenceEvidence: evidence(preferences), plannedImpact, changes,
167
+ ...(preview?.operationPlan ? { operationPlan: preview.operationPlan } : {}),
168
+ warnings: portable.state === 'present' ? ['Portable 输出需人工核验,AW 不自动删除。'] : [], runtime };
169
+ }
170
+ catch (error) {
171
+ await context.dispose();
172
+ throw error;
173
+ }
174
+ }
175
+ export async function executeRetire(plan, execution = {}) {
176
+ const receipt = structuredClone(plan.receipt);
177
+ const runtime = { ...plan.runtime, ...execution.runtime };
178
+ let configDeletionCompleted = false;
179
+ try {
180
+ for (const target of receipt.targetResults) {
181
+ if (target.delivery?.kind === 'agent-skills' && plan.portable.state === 'absent'
182
+ && target.content === 'absent' && target.blockers.length === 0) {
183
+ target.execution = 'no-op';
184
+ target.observation = 'missing';
185
+ }
186
+ }
187
+ if (plan.changes.length === 0 && plan.portable.state === 'absent'
188
+ && plan.receipt.blockers.length === 0)
189
+ return finish(receipt, plan.options, plan.portable);
190
+ if (execution.yes !== true && plan.options.yes !== true) {
191
+ receipt.blockers.push(diagnostic('operationReviewRequired'));
192
+ return finish(receipt, plan.options, plan.portable);
193
+ }
194
+ const freshContext = await createScopeContext({ scope: plan.options.scope,
195
+ cwd: plan.context.callerCwd, env: plan.context.env });
196
+ const environmentStable = freshContext.awHome === plan.context.awHome
197
+ && freshContext.generationRoot === plan.context.generationRoot
198
+ && freshContext.projectKey === plan.context.projectKey
199
+ && JSON.stringify(freshContext.targetHomes) === JSON.stringify(plan.context.targetHomes);
200
+ await freshContext.dispose();
201
+ const executionCwdStable = plan.options.scope !== 'user'
202
+ || await assertNeutralAncestorChain(plan.context.executionCwd)
203
+ .then((value) => value === plan.context.executionCwd, () => false);
204
+ if (!environmentStable || !executionCwdStable) {
205
+ receipt.blockers.push(diagnostic('operationReviewStale'));
206
+ return finish(receipt, plan.options, plan.portable);
207
+ }
208
+ return await withAwHomeMutationLock({ env: plan.context.env, token: runtime.awHomeMutationToken,
209
+ action: async (token) => {
210
+ if (receipt.blockers.some((entry) => blocksStrongRetirement(entry.code, plan.options.deleteConfig === true))) {
211
+ return finish(receipt, plan.options, plan.portable);
212
+ }
213
+ const location = { scope: plan.options.scope, cwd: plan.context.executionCwd, env: plan.context.env, token };
214
+ const [intent, preferences] = await Promise.all([observeIntent(location), observePreferences(location)]);
215
+ if (evidence(intent) !== plan.intentEvidence || evidence(preferences) !== plan.preferenceEvidence) {
216
+ receipt.blockers.push(diagnostic('operationReviewStale'));
217
+ return finish(receipt, plan.options, plan.portable);
218
+ }
219
+ const inventory = await (runtime.inventoryCatalogSourceReferences ?? inventoryCatalogSourceReferences)({
220
+ cwd: plan.context.executionCwd, env: plan.context.env, scope: plan.options.scope,
221
+ includeProjectAgentSkills: true,
222
+ });
223
+ const current = await inspectRemovedPluginCleanup({ pluginId: plan.options.selector, scope: plan.options.scope,
224
+ inventory, cwd: plan.context.executionCwd, env: plan.context.env,
225
+ nativeCliRunner: runtime.nativeCliRunner ?? getDefaultNativeCliRunner(), codexManager: runtime.codexManager });
226
+ if (!current || !plan.evidence || current.sourceIdentity !== plan.evidence.sourceIdentity
227
+ || current.logicalIdentity !== plan.evidence.logicalIdentity
228
+ || current.snapshotDigest !== plan.evidence.snapshotDigest
229
+ || current.projectionFingerprint !== plan.evidence.projectionFingerprint
230
+ || current.marketplaceEvidenceFingerprint !== plan.evidence.marketplaceEvidenceFingerprint
231
+ || current.nativeObservationFingerprint !== plan.evidence.nativeObservationFingerprint
232
+ || JSON.stringify(current.configTargets) !== JSON.stringify(plan.evidence.configTargets)
233
+ || JSON.stringify(current.evidence) !== JSON.stringify(plan.evidence.evidence)) {
234
+ receipt.blockers.push(diagnostic('operationReviewStale'));
235
+ return finish(receipt, plan.options, plan.portable);
236
+ }
237
+ const portable = await inspectPortableResidue({ scope: plan.options.scope, context: plan.context,
238
+ selector: plan.options.selector, env: plan.context.env, agents: plan.options.targets === undefined
239
+ ? undefined : plan.receipt.selection.agents.filter((agent) => agent !== 'codex' && agent !== 'claude') }).catch(() => undefined);
240
+ if (!portable || JSON.stringify(portable) !== JSON.stringify(plan.portable)) {
241
+ receipt.blockers.push(diagnostic('operationReviewStale'));
242
+ return finish(receipt, plan.options, plan.portable);
243
+ }
244
+ if (plan.operationPlan) {
245
+ await executeRemovedPluginOutputCleanup({ target: current,
246
+ selectedTargets: receipt.targetResults.flatMap((target) => target.delivery?.kind === 'native'
247
+ ? [{ pluginId: target.pluginId, platform: target.delivery.platform, scope: target.scope }] : []),
248
+ context: plan.context, runtime: { ...runtime, awHomeMutationToken: token,
249
+ previewOperationPlan: true, expectedPlanFingerprint: plan.operationPlan.planFingerprint } });
250
+ }
251
+ const refreshIntent = async () => {
252
+ const refreshed = await observeIntent(location);
253
+ receipt.intent = { state: refreshed.state, ...('digest' in refreshed ? { digest: refreshed.digest } : {}),
254
+ roots: refreshed.state === 'valid' ? refreshed.value.roots.map((root) => root.pluginId)
255
+ : refreshed.state === 'absent' ? [] : null };
256
+ };
257
+ try {
258
+ if (intent.state === 'valid' && intent.value.roots.some((root) => root.pluginId === plan.options.selector)) {
259
+ const result = await removeRoot(location, plan.options.selector);
260
+ receipt.declarationChanged = result.changed;
261
+ }
262
+ if (preferences.state === 'valid') {
263
+ const next = preferences.value.exclusions.filter((entry) => entry.plugin !== plan.options.selector);
264
+ if (next.length !== preferences.value.exclusions.length) {
265
+ const result = await writePreferences(location, { ...preferences.value, exclusions: next });
266
+ receipt.preferencesChanged = result.changed;
267
+ }
268
+ }
269
+ if (plan.options.deleteConfig && plan.evidence) {
270
+ const result = await deletePluginConfigStore({ sourceId: plan.evidence.sourceId,
271
+ sourceIdentity: plan.evidence.sourceIdentity, pluginName: plan.evidence.pluginName,
272
+ scope: plan.options.scope, cwd: plan.context.executionCwd, env: plan.context.env });
273
+ receipt.configChanged = result.deleted;
274
+ configDeletionCompleted = true;
275
+ }
276
+ }
277
+ catch (error) {
278
+ receipt.blockers.push(diagnostic(codeOf(error, 'retireConfigurationFailed')));
279
+ await refreshIntent();
280
+ return finish(receipt, plan.options, plan.portable);
281
+ }
282
+ await refreshIntent();
283
+ if (plan.evidence) {
284
+ const selectedTargets = receipt.targetResults.flatMap((target) => target.delivery?.kind === 'native'
285
+ ? [{ pluginId: target.pluginId, platform: target.delivery.platform, scope: target.scope }] : []);
286
+ if (selectedTargets.length || plan.operationPlan?.actions.some((action) => action.kind === 'retainManagedCommandPackage')) {
287
+ try {
288
+ const result = await executeRemovedPluginOutputCleanup({ target: plan.evidence, selectedTargets,
289
+ context: plan.context, runtime: { ...runtime, awHomeMutationToken: token,
290
+ expectedPlanFingerprint: plan.operationPlan?.planFingerprint } });
291
+ if (result.commandResults?.length)
292
+ receipt.commandResults = result.commandResults;
293
+ receipt.outputsMayHaveChanged = result.rebuildResults.some((entry) => entry.actions.length > 0);
294
+ let partialAttributed = result.commandResults?.some((entry) => entry.state !== 'completed') === true;
295
+ for (const target of receipt.targetResults.filter((entry) => entry.delivery?.kind === 'native')) {
296
+ const platform = target.delivery?.kind === 'native' ? target.delivery.platform : undefined;
297
+ const backendTargets = result.targetResults.filter((entry) => entry.target.pluginId === target.pluginId
298
+ && entry.target.scope === target.scope && entry.target.platform === platform);
299
+ const rebuildTargets = result.rebuildResults.filter((entry) => entry.target.pluginId === target.pluginId
300
+ && entry.target.scope === target.scope && entry.target.platform === platform);
301
+ const failed = backendTargets.some((entry) => entry.state === 'failed');
302
+ const commandFailures = (result.commandResults ?? []).filter((entry) => entry.state !== 'completed'
303
+ && entry.producer.sourceId === plan.evidence.sourceId
304
+ && entry.producer.sourceIdentity === plan.evidence.sourceIdentity
305
+ && entry.producer.pluginName === plan.evidence.pluginName
306
+ && entry.producer.platform === platform);
307
+ const sharedNativePreserved = platform === 'codex'
308
+ && result.warnings.some((warning) => warning.startsWith('sharedNativePreserved:'));
309
+ const preserved = backendTargets.some((entry) => entry.action === 'keep')
310
+ || rebuildTargets.some((entry) => entry.residual.length > 0 || entry.quarantined.length > 0)
311
+ || sharedNativePreserved;
312
+ target.execution = failed ? 'failed' : commandFailures.length
313
+ ? backendTargets.length ? 'partial' : 'failed' : backendTargets.length ? 'applied' : 'no-op';
314
+ target.observation = failed || commandFailures.length ? 'unknown'
315
+ : target.content === 'absent' ? 'missing' : 'unknown';
316
+ target.backend = backendTargets.map((entry) => ({
317
+ target: { pluginId: entry.target.pluginId, platform: entry.target.platform,
318
+ scope: entry.target.scope }, action: entry.action, state: entry.state,
319
+ ...(entry.errorCode ? { errorCode: entry.errorCode } : {}),
320
+ }));
321
+ if (failed)
322
+ target.blockers.push(diagnostic('nativeRetireFailed'));
323
+ else if (preserved)
324
+ target.blockers.push(diagnostic('sharedNativePreserved'));
325
+ for (const producer of commandFailures) {
326
+ target.blockers.push(...(producer.errors.length ? producer.errors.map((error) => diagnostic(error.code, error.message)) : [diagnostic('managedCommandRecoveryFailed')]));
327
+ }
328
+ partialAttributed ||= failed || preserved || commandFailures.length > 0;
329
+ }
330
+ if (result.overallState === 'partial' && !partialAttributed) {
331
+ receipt.blockers.push(diagnostic('nativeRetirePartial'));
332
+ }
333
+ }
334
+ catch (error) {
335
+ for (const target of receipt.targetResults.filter((entry) => entry.delivery?.kind === 'native')) {
336
+ target.execution = 'failed';
337
+ target.blockers.push(diagnostic(codeOf(error, 'nativeRetireFailed')));
338
+ }
339
+ }
340
+ }
341
+ }
342
+ if (portable.state === 'unknown' && !receipt.targetResults.some((target) => target.blockers.some((entry) => entry.code === 'portableObservationFailed'))) {
343
+ receipt.blockers.push(diagnostic('portableObservationFailed'));
344
+ }
345
+ return finish(receipt, plan.options, plan.portable, configDeletionCompleted);
346
+ } });
347
+ }
348
+ finally {
349
+ await plan.context.dispose();
350
+ }
351
+ }
352
+ export async function runRetire(options, runtime = {}) {
353
+ const plan = await prepareRetire(options, runtime);
354
+ if (options.interactive && options.yes !== true && options.prompt?.confirm && plan.changes.length) {
355
+ const response = await options.prompt.confirm({ defaultValue: false,
356
+ message: [...plan.changes, ...plan.warnings, '是否执行以上停用步骤?'].join('\n') });
357
+ if (response.cancelled || response.value !== true) {
358
+ plan.receipt.blockers.push(diagnostic('operationCancelled'));
359
+ await plan.context.dispose();
360
+ return finish(plan.receipt, plan.options, plan.portable);
361
+ }
362
+ return executeRetire(plan, { yes: true });
363
+ }
364
+ return executeRetire(plan);
365
+ }
366
+ //# sourceMappingURL=retirement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retirement.js","sourceRoot":"","sources":["../../../src/recovery/retirement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import type { PlatformName, Scope } from '../types.js';
2
+ import { type AgentId } from '../intent/deployment-preferences.js';
3
+ import { type ScopeContext } from '../intent/scope-context.js';
4
+ import { statusCommandV8 } from '../commands/status-v6.js';
5
+ import { type DemandSnapshot } from './demand.js';
6
+ import type { RecoveryDiagnostic, RecoveryReceipt, RecoveryTarget } from './receipt.js';
7
+ import type { CatalogOperationContext } from '../utils/catalog-operation-context.js';
8
+ import type { NativeCliRunner } from '../utils/native-cli.js';
9
+ import type { CodexNativeObservationSession } from '../utils/codex-native-observation.js';
10
+ export interface NativeObservation {
11
+ pluginId: string;
12
+ platform: PlatformName;
13
+ content: NonNullable<RecoveryTarget['content']>;
14
+ blockers: RecoveryDiagnostic[];
15
+ assumedActivation?: boolean;
16
+ backend?: unknown;
17
+ }
18
+ export interface RecoveryStatus {
19
+ schemaVersion: 1;
20
+ kind: 'aw-recovery-status';
21
+ scope: Scope;
22
+ ok: boolean;
23
+ intent: {
24
+ state: DemandSnapshot['intent']['state'];
25
+ digest?: string;
26
+ };
27
+ selection: {
28
+ agents: AgentId[];
29
+ origin: 'argument' | 'preference' | 'none';
30
+ preferences: string;
31
+ };
32
+ inventory: Array<{
33
+ pluginId: string;
34
+ source: string;
35
+ sourceState: string;
36
+ blockers: RecoveryDiagnostic[];
37
+ targetResults: RecoveryTarget[];
38
+ }> | null;
39
+ observedTargets?: RecoveryTarget[];
40
+ existingTargets?: Array<{
41
+ pluginId: string;
42
+ agent: AgentId;
43
+ scope: Scope;
44
+ }>;
45
+ ownedTargets?: Array<{
46
+ pluginId: string;
47
+ agent: AgentId;
48
+ scope: Scope;
49
+ }>;
50
+ extraObserved: Array<Omit<Pick<RecoveryTarget, 'pluginId' | 'agent' | 'scope' | 'delivery' | 'observation' | 'content' | 'backend'>, 'agent'> & {
51
+ agent: AgentId | null;
52
+ }>;
53
+ coverage: {
54
+ native: boolean;
55
+ portable: boolean;
56
+ scopes?: Scope[];
57
+ projectRoot?: string;
58
+ };
59
+ inSync: boolean | null;
60
+ counts: {
61
+ blocked: number;
62
+ unconfirmed: number;
63
+ pending: number;
64
+ ready: number;
65
+ };
66
+ allSatisfied: boolean | null;
67
+ errors: RecoveryDiagnostic[];
68
+ }
69
+ export interface ReadRecoveryStatusOptions {
70
+ nativeCliRunner?: NativeCliRunner;
71
+ codexObservationSession?: CodexNativeObservationSession;
72
+ catalogOperationContext?: CatalogOperationContext;
73
+ scope?: Scope;
74
+ context?: Scope;
75
+ demandOverride?: DemandSnapshot;
76
+ cwd: string;
77
+ env?: NodeJS.ProcessEnv;
78
+ cliVersion?: string;
79
+ signal?: AbortSignal;
80
+ targets?: readonly string[];
81
+ nativeObservations?: NativeObservation[];
82
+ }
83
+ export declare function statusFromObservations(options: Omit<ReadRecoveryStatusOptions, 'context'> & {
84
+ scope: Scope;
85
+ demand: DemandSnapshot;
86
+ context: ScopeContext;
87
+ nativeObservations: NativeObservation[];
88
+ extraObserved?: RecoveryStatus['extraObserved'];
89
+ nativeReadErrors?: RecoveryDiagnostic[];
90
+ portableCoverage?: boolean;
91
+ portableInstalled?: Array<{
92
+ pluginId: string;
93
+ agent: AgentId;
94
+ }>;
95
+ }): Promise<RecoveryStatus>;
96
+ export declare function readScopedRecoveryStatus(options: ReadRecoveryStatusOptions & {
97
+ scope: Scope;
98
+ onDemand?: (demand: DemandSnapshot) => string[] | undefined;
99
+ onNativeStatus?: (native: Awaited<ReturnType<typeof statusCommandV8>>, demand: DemandSnapshot) => void | Promise<void>;
100
+ }): Promise<RecoveryStatus>;
101
+ export declare function checkRecovery(selectors: readonly string[], options: ReadRecoveryStatusOptions & {
102
+ all?: boolean;
103
+ }): Promise<RecoveryReceipt>;
104
+ export declare function aggregateConvergence(allSatisfied: boolean | null, residue: 'present' | 'absent' | 'unknown'): boolean | null;
105
+ export declare function readRecoveryStatus(options: ReadRecoveryStatusOptions & {
106
+ onDemand?: (demand: DemandSnapshot) => string[] | undefined;
107
+ onNativeStatus?: (native: Awaited<ReturnType<typeof statusCommandV8>>, demand: DemandSnapshot) => void | Promise<void>;
108
+ }): Promise<RecoveryStatus>;