@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.
- package/dist/authoring/assets/aw-runtime-config.mjs +3 -3
- package/dist/authoring/assets/aw-runtime-config.mjs.map +1 -1
- package/dist/authoring/scripts/add-skill.mjs +3 -17
- package/dist/authoring/scripts/add-skill.mjs.map +1 -1
- package/dist/authoring/scripts/init-plugin.mjs +1 -0
- package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
- package/dist/authoring/scripts/lib/plugin-version-check.mjs +1 -1
- package/dist/authoring/scripts/lib/skill-scaffold.d.mts +2 -0
- package/dist/authoring/scripts/lib/skill-scaffold.mjs +2 -0
- package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
- package/dist/authoring/scripts/validate-plugin.mjs +95 -698
- package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
- package/dist/scripts/aw-skill-eval-materializer.d.ts +2 -0
- package/dist/scripts/aw-skill-eval-materializer.js +74 -44
- package/dist/scripts/aw-skill-eval-materializer.js.map +1 -1
- package/dist/scripts/bundle-plugins.js +10 -2
- package/dist/scripts/bundle-plugins.js.map +1 -1
- package/dist/scripts/plugin-staging.d.ts +1 -1
- package/dist/scripts/plugin-staging.js +1 -1
- package/dist/scripts/plugin-staging.js.map +1 -1
- package/dist/scripts/test-plugin-scripts.js +31 -31
- package/dist/scripts/test-plugin-scripts.js.map +1 -1
- package/dist/src/commands/aw-capabilities.d.ts +1 -1
- package/dist/src/commands/aw-capabilities.js +2 -0
- package/dist/src/commands/aw-capabilities.js.map +1 -1
- package/dist/src/commands/console.js +4 -3
- package/dist/src/commands/console.js.map +1 -1
- package/dist/src/commands/intent-command.d.ts +30 -0
- package/dist/src/commands/intent-command.js +164 -0
- package/dist/src/commands/intent-command.js.map +1 -0
- package/dist/src/commands/operation-plan.d.ts +2 -0
- package/dist/src/commands/operation-plan.js +2 -1
- package/dist/src/commands/operation-plan.js.map +1 -1
- package/dist/src/commands/options.d.ts +3 -11
- package/dist/src/commands/options.js +11 -17
- package/dist/src/commands/options.js.map +1 -1
- package/dist/src/commands/plugin-capabilities.js +27 -33
- package/dist/src/commands/plugin-capabilities.js.map +1 -1
- package/dist/src/commands/rebuild-command.d.ts +108 -6
- package/dist/src/commands/rebuild-command.js +617 -1549
- package/dist/src/commands/rebuild-command.js.map +1 -1
- package/dist/src/commands/rebuild-integration.d.ts +19 -3
- package/dist/src/commands/rebuild-integration.js +500 -459
- package/dist/src/commands/rebuild-integration.js.map +1 -1
- package/dist/src/commands/rebuild-operations.js +1 -2
- package/dist/src/commands/rebuild-operations.js.map +1 -1
- package/dist/src/commands/review-inspection.d.ts +2 -2
- package/dist/src/commands/review-inspection.js +30 -86
- package/dist/src/commands/review-inspection.js.map +1 -1
- package/dist/src/commands/review-preparation.js +16 -7
- package/dist/src/commands/review-preparation.js.map +1 -1
- package/dist/src/commands/skill-eval.d.ts +2 -0
- package/dist/src/commands/skill-eval.js +15 -9
- package/dist/src/commands/skill-eval.js.map +1 -1
- package/dist/src/commands/status-v6.d.ts +38 -5
- package/dist/src/commands/status-v6.js +269 -102
- package/dist/src/commands/status-v6.js.map +1 -1
- package/dist/src/commands/targets-command.d.ts +27 -0
- package/dist/src/commands/targets-command.js +77 -0
- package/dist/src/commands/targets-command.js.map +1 -0
- package/dist/src/commands/write-commands.js +5 -5
- package/dist/src/commands/write-commands.js.map +1 -1
- package/dist/src/eval/manifest-v1.d.ts +2 -0
- package/dist/src/eval/manifest-v1.js +7 -2
- package/dist/src/eval/manifest-v1.js.map +1 -1
- package/dist/src/generators/local-plugin.d.ts +2 -1
- package/dist/src/generators/local-plugin.js +111 -108
- package/dist/src/generators/local-plugin.js.map +1 -1
- package/dist/src/index.d.ts +10 -17
- package/dist/src/index.js +585 -1349
- package/dist/src/index.js.map +1 -1
- package/dist/src/intent/deployment-preferences.d.ts +63 -0
- package/dist/src/intent/deployment-preferences.js +170 -0
- package/dist/src/intent/deployment-preferences.js.map +1 -0
- package/dist/src/intent/diagnostics.d.ts +11 -0
- package/dist/src/intent/diagnostics.js +14 -0
- package/dist/src/intent/diagnostics.js.map +1 -0
- package/dist/src/intent/intent-codec.d.ts +19 -0
- package/dist/src/intent/intent-codec.js +117 -0
- package/dist/src/intent/intent-codec.js.map +1 -0
- package/dist/src/intent/intent-store.d.ts +43 -0
- package/dist/src/intent/intent-store.js +118 -0
- package/dist/src/intent/intent-store.js.map +1 -0
- package/dist/src/intent/scope-context.d.ts +33 -0
- package/dist/src/intent/scope-context.js +145 -0
- package/dist/src/intent/scope-context.js.map +1 -0
- package/dist/src/intent/work-context.d.ts +13 -0
- package/dist/src/intent/work-context.js +22 -0
- package/dist/src/intent/work-context.js.map +1 -0
- package/dist/src/output/command-receipt.js +16 -9
- package/dist/src/output/command-receipt.js.map +1 -1
- package/dist/src/portable/commands.d.ts +18 -8
- package/dist/src/portable/commands.js +46 -562
- package/dist/src/portable/commands.js.map +1 -1
- package/dist/src/portable/historical-materialization.d.ts +22 -0
- package/dist/src/portable/historical-materialization.js +124 -0
- package/dist/src/portable/historical-materialization.js.map +1 -0
- package/dist/src/portable/materializer.d.ts +8 -0
- package/dist/src/portable/materializer.js +75 -44
- package/dist/src/portable/materializer.js.map +1 -1
- package/dist/src/portable/recovery-layout.d.ts +17 -0
- package/dist/src/portable/recovery-layout.js +55 -0
- package/dist/src/portable/recovery-layout.js.map +1 -0
- package/dist/src/portable/recovery.d.ts +143 -0
- package/dist/src/portable/recovery.js +339 -0
- package/dist/src/portable/recovery.js.map +1 -0
- package/dist/src/portable/writer.d.ts +64 -0
- package/dist/src/portable/writer.js +316 -0
- package/dist/src/portable/writer.js.map +1 -0
- package/dist/src/recovery/coordinator.d.ts +137 -0
- package/dist/src/recovery/coordinator.js +1198 -0
- package/dist/src/recovery/coordinator.js.map +1 -0
- package/dist/src/recovery/demand.d.ts +44 -0
- package/dist/src/recovery/demand.js +178 -0
- package/dist/src/recovery/demand.js.map +1 -0
- package/dist/src/recovery/joint-coordinator.d.ts +24 -0
- package/dist/src/recovery/joint-coordinator.js +770 -0
- package/dist/src/recovery/joint-coordinator.js.map +1 -0
- package/dist/src/recovery/joint-demand.d.ts +68 -0
- package/dist/src/recovery/joint-demand.js +166 -0
- package/dist/src/recovery/joint-demand.js.map +1 -0
- package/dist/src/recovery/receipt.d.ts +81 -0
- package/dist/src/recovery/receipt.js +2 -0
- package/dist/src/recovery/receipt.js.map +1 -0
- package/dist/src/recovery/retirement.d.ts +45 -0
- package/dist/src/recovery/retirement.js +366 -0
- package/dist/src/recovery/retirement.js.map +1 -0
- package/dist/src/recovery/status.d.ts +108 -0
- package/dist/src/recovery/status.js +417 -0
- package/dist/src/recovery/status.js.map +1 -0
- package/dist/src/recovery/types.d.ts +86 -0
- package/dist/src/recovery/types.js +2 -0
- package/dist/src/recovery/types.js.map +1 -0
- package/dist/src/review/review-profile.d.ts +2 -1
- package/dist/src/review/review-profile.js +15 -15
- package/dist/src/review/review-profile.js.map +1 -1
- package/dist/src/review/review-selection.d.ts +1 -2
- package/dist/src/review/review-selection.js +40 -114
- package/dist/src/review/review-selection.js.map +1 -1
- package/dist/src/review/review-types.d.ts +4 -4
- package/dist/src/review/review-types.js.map +1 -1
- package/dist/src/review/skill-materialization.js +15 -6
- package/dist/src/review/skill-materialization.js.map +1 -1
- package/dist/src/review/source-binding.d.ts +14 -4
- package/dist/src/review/source-binding.js +62 -117
- package/dist/src/review/source-binding.js.map +1 -1
- package/dist/src/tui/agent-management.d.ts +23 -0
- package/dist/src/tui/agent-management.js +217 -0
- package/dist/src/tui/agent-management.js.map +1 -0
- package/dist/src/tui/agent-settings.d.ts +44 -0
- package/dist/src/tui/agent-settings.js +98 -0
- package/dist/src/tui/agent-settings.js.map +1 -0
- package/dist/src/tui/components.d.ts +3 -0
- package/dist/src/tui/components.js +10 -1
- package/dist/src/tui/components.js.map +1 -1
- package/dist/src/tui/config-references.d.ts +6 -3
- package/dist/src/tui/config-references.js +17 -12
- package/dist/src/tui/config-references.js.map +1 -1
- package/dist/src/tui/console-app-v4.d.ts +1 -2
- package/dist/src/tui/console-app-v4.js +1533 -1047
- package/dist/src/tui/console-app-v4.js.map +1 -1
- package/dist/src/tui/controller-runtime.d.ts +2 -1
- package/dist/src/tui/controller-runtime.js +405 -1626
- package/dist/src/tui/controller-runtime.js.map +1 -1
- package/dist/src/tui/controller.d.ts +131 -81
- package/dist/src/tui/controller.js +307 -227
- package/dist/src/tui/controller.js.map +1 -1
- package/dist/src/tui/entity-cards.d.ts +2 -2
- package/dist/src/tui/entity-cards.js +98 -20
- package/dist/src/tui/entity-cards.js.map +1 -1
- package/dist/src/tui/glossary.d.ts +2 -0
- package/dist/src/tui/glossary.js +20 -0
- package/dist/src/tui/glossary.js.map +1 -1
- package/dist/src/tui/model.d.ts +28 -10
- package/dist/src/tui/model.js +41 -41
- package/dist/src/tui/model.js.map +1 -1
- package/dist/src/tui/operation-review-planner.d.ts +2 -0
- package/dist/src/tui/operation-review-planner.js +58 -122
- package/dist/src/tui/operation-review-planner.js.map +1 -1
- package/dist/src/tui/plugin-content.js +7 -4
- package/dist/src/tui/plugin-content.js.map +1 -1
- package/dist/src/tui/plugin-detail.d.ts +22 -3
- package/dist/src/tui/plugin-detail.js +113 -26
- package/dist/src/tui/plugin-detail.js.map +1 -1
- package/dist/src/tui/reader.d.ts +1 -0
- package/dist/src/tui/reader.js +3 -1
- package/dist/src/tui/reader.js.map +1 -1
- package/dist/src/tui/router.d.ts +23 -33
- package/dist/src/tui/router.js.map +1 -1
- package/dist/src/tui/scoped-flow.d.ts +45 -0
- package/dist/src/tui/scoped-flow.js +96 -0
- package/dist/src/tui/scoped-flow.js.map +1 -0
- package/dist/src/tui/scoped-inventory.d.ts +122 -0
- package/dist/src/tui/scoped-inventory.js +225 -0
- package/dist/src/tui/scoped-inventory.js.map +1 -0
- package/dist/src/tui/screen-registry.d.ts +25 -25
- package/dist/src/tui/screen-registry.js +3 -7
- package/dist/src/tui/screen-registry.js.map +1 -1
- package/dist/src/tui/session-console-app.js +1 -1
- package/dist/src/tui/session-console-app.js.map +1 -1
- package/dist/src/tui/session-host.js +12 -2
- package/dist/src/tui/session-host.js.map +1 -1
- package/dist/src/types.d.ts +15 -12
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/agent-version.js +2 -0
- package/dist/src/utils/agent-version.js.map +1 -1
- package/dist/src/utils/artifact-plan.js +13 -6
- package/dist/src/utils/artifact-plan.js.map +1 -1
- package/dist/src/utils/artifact-renderer.d.ts +6 -3
- package/dist/src/utils/artifact-renderer.js +27 -32
- package/dist/src/utils/artifact-renderer.js.map +1 -1
- package/dist/src/utils/artifact-request.d.ts +1 -0
- package/dist/src/utils/artifact-request.js +22 -12
- package/dist/src/utils/artifact-request.js.map +1 -1
- package/dist/src/utils/artifact-sources.d.ts +2 -2
- package/dist/src/utils/bundle-layout.js +18 -16
- package/dist/src/utils/bundle-layout.js.map +1 -1
- package/dist/src/utils/catalog-digests.js +2 -0
- package/dist/src/utils/catalog-digests.js.map +1 -1
- package/dist/src/utils/catalog-runtime-projection.d.ts +4 -3
- package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
- package/dist/src/utils/catalog-source-references.d.ts +5 -0
- package/dist/src/utils/catalog-source-references.js +42 -57
- package/dist/src/utils/catalog-source-references.js.map +1 -1
- package/dist/src/utils/claude-native-render-receipt.d.ts +14 -0
- package/dist/src/utils/claude-native-render-receipt.js +26 -0
- package/dist/src/utils/claude-native-render-receipt.js.map +1 -0
- package/dist/src/utils/claude-skills-root.js +14 -3
- package/dist/src/utils/claude-skills-root.js.map +1 -1
- package/dist/src/utils/codex-manager.js +6 -12
- package/dist/src/utils/codex-manager.js.map +1 -1
- package/dist/src/utils/codex-native-observation.js +29 -13
- package/dist/src/utils/codex-native-observation.js.map +1 -1
- package/dist/src/utils/codex-reconciler.d.ts +2 -5
- package/dist/src/utils/codex-reconciler.js +25 -1
- package/dist/src/utils/codex-reconciler.js.map +1 -1
- package/dist/src/utils/codex-surface-analysis.js +5 -3
- package/dist/src/utils/codex-surface-analysis.js.map +1 -1
- package/dist/src/utils/local-marketplace.d.ts +14 -2
- package/dist/src/utils/local-marketplace.js +209 -42
- package/dist/src/utils/local-marketplace.js.map +1 -1
- package/dist/src/utils/managed-command-evidence.js +1 -1
- package/dist/src/utils/managed-command-evidence.js.map +1 -1
- package/dist/src/utils/managed-command-materialization.d.ts +4 -0
- package/dist/src/utils/managed-command-materialization.js +15 -6
- package/dist/src/utils/managed-command-materialization.js.map +1 -1
- package/dist/src/utils/managed-command-store.d.ts +15 -0
- package/dist/src/utils/managed-command-store.js +73 -8
- package/dist/src/utils/managed-command-store.js.map +1 -1
- package/dist/src/utils/native-cli.d.ts +2 -0
- package/dist/src/utils/native-cli.js +22 -0
- package/dist/src/utils/native-cli.js.map +1 -1
- package/dist/src/utils/native-demand.d.ts +10 -0
- package/dist/src/utils/native-demand.js +4 -0
- package/dist/src/utils/native-demand.js.map +1 -0
- package/dist/src/utils/ownership.js +2 -0
- package/dist/src/utils/ownership.js.map +1 -1
- package/dist/src/utils/paths.js +1 -1
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/platform-support.d.ts +1 -1
- package/dist/src/utils/platform-support.js +1 -1
- package/dist/src/utils/platform-support.js.map +1 -1
- package/dist/src/utils/plugin-config-impact.d.ts +3 -0
- package/dist/src/utils/plugin-config-impact.js +115 -273
- package/dist/src/utils/plugin-config-impact.js.map +1 -1
- package/dist/src/utils/plugin-config-references.d.ts +9 -2
- package/dist/src/utils/plugin-config-references.js +75 -85
- package/dist/src/utils/plugin-config-references.js.map +1 -1
- package/dist/src/utils/plugin-config-write.d.ts +58 -1
- package/dist/src/utils/plugin-config-write.js +756 -809
- package/dist/src/utils/plugin-config-write.js.map +1 -1
- package/dist/src/utils/plugin-config.d.ts +47 -46
- package/dist/src/utils/plugin-config.js +292 -833
- package/dist/src/utils/plugin-config.js.map +1 -1
- package/dist/src/utils/plugin-scripts.d.ts +11 -6
- package/dist/src/utils/plugin-scripts.js +52 -35
- package/dist/src/utils/plugin-scripts.js.map +1 -1
- package/dist/src/utils/runtime-config.js +5 -4
- package/dist/src/utils/runtime-config.js.map +1 -1
- package/dist/src/utils/runtime-skill-closure.d.ts +2 -2
- package/dist/src/utils/runtime-skill-closure.js.map +1 -1
- package/dist/src/utils/state-paths.d.ts +8 -3
- package/dist/src/utils/state-paths.js +53 -16
- package/dist/src/utils/state-paths.js.map +1 -1
- package/dist/src/utils/windows-npm-shim.d.ts +2 -0
- package/dist/src/utils/windows-npm-shim.js +5 -7
- package/dist/src/utils/windows-npm-shim.js.map +1 -1
- package/dist/vitest.config.js +1 -0
- package/dist/vitest.config.js.map +1 -1
- package/package.json +3 -3
- package/dist/src/commands/sync-command.d.ts +0 -40
- package/dist/src/commands/sync-command.js +0 -254
- package/dist/src/commands/sync-command.js.map +0 -1
- package/dist/src/portable/skills-cli.d.ts +0 -51
- package/dist/src/portable/skills-cli.js +0 -202
- package/dist/src/portable/skills-cli.js.map +0 -1
- package/dist/src/tui/project-inventory.d.ts +0 -68
- package/dist/src/tui/project-inventory.js +0 -203
- package/dist/src/tui/project-inventory.js.map +0 -1
- package/dist/src/utils/plugin-intent-state.d.ts +0 -49
- package/dist/src/utils/plugin-intent-state.js +0 -320
- package/dist/src/utils/plugin-intent-state.js.map +0 -1
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import { selectAgents } from '../intent/deployment-preferences.js';
|
|
2
|
+
import { createScopeContext } from '../intent/scope-context.js';
|
|
3
|
+
import { parsePluginId } from '../utils/multi-source-catalog.js';
|
|
4
|
+
import { statusCommandV8, flattenStatusTargets, statusTargetHasLiveConfigConsumer } from '../commands/status-v6.js';
|
|
5
|
+
import { inspectPortableExtraInstalled, inspectPortableRecovery, portablePreparationDiagnostic } from '../portable/recovery.js';
|
|
6
|
+
import { readJointDemand, deriveJointDemand, findPlacementConflicts } from './joint-demand.js';
|
|
7
|
+
import { readDemand, resolveDelivery } from './demand.js';
|
|
8
|
+
import { analyzeCodexSurface } from '../utils/codex-surface-analysis.js';
|
|
9
|
+
const NATIVE_READ_ERRORS = new Set(['nativeStateUnreadable', 'stateInventoryFailed', 'configReadFailed',
|
|
10
|
+
'configInvalid', 'componentInspectionFailed', 'targetInspectionFailed', 'codexNativeObservationFailed',
|
|
11
|
+
'nativeObservationFailed', 'nativeObservationUnavailable']);
|
|
12
|
+
function diagnostic(code) { return { code, message: `目标尚未满足:${code}。` }; }
|
|
13
|
+
function safeNativePlacement(target) {
|
|
14
|
+
const component = ({ kind, key, state, metadata }) => ({
|
|
15
|
+
kind, key, state,
|
|
16
|
+
...(metadata ? { metadata: Object.fromEntries(Object.entries(metadata).filter(([name]) => ['enabled', 'scopes', 'relation', 'errorCode', 'shared', 'version', 'desiredVersion',
|
|
17
|
+
'staleCacheObserved', 'effective', 'requiredMinVersion', 'detectedVersion', 'code',
|
|
18
|
+
'kinds', 'platform', 'scope', 'project', 'rootIssueId', 'rootIssueCode'].includes(name))) } : {}),
|
|
19
|
+
});
|
|
20
|
+
const reason = ({ code, severity, dependencyPluginId, dependencyPlatform, dependencyScope, dependencyProject, rootIssueId, rootIssueCode }) => ({
|
|
21
|
+
code, severity, dependencyPluginId, dependencyPlatform, dependencyScope, dependencyProject,
|
|
22
|
+
rootIssueId, rootIssueCode,
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
pluginId: target.pluginId, platform: target.platform, scope: target.scope,
|
|
26
|
+
state: target.state,
|
|
27
|
+
components: target.components.map(component), reasons: target.reasons.map(reason),
|
|
28
|
+
recoveryActions: target.recoveryActions.map(({ command, scope }) => ({ command, scope })),
|
|
29
|
+
...(target.sharedComponents ? { sharedComponents: target.sharedComponents.map(component) } : {}),
|
|
30
|
+
...(target.sharedReasons ? { sharedReasons: target.sharedReasons.map(reason) } : {}),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export async function statusFromObservations(options) {
|
|
34
|
+
options.signal?.throwIfAborted();
|
|
35
|
+
const { demand } = options;
|
|
36
|
+
const errors = [...demand.errors, ...(options.nativeReadErrors ?? [])];
|
|
37
|
+
let selection;
|
|
38
|
+
try {
|
|
39
|
+
selection = selectAgents({ preferences: demand.preferences, targets: options.targets });
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
selection = { agents: [], origin: 'none', preferences: demand.preferences.state };
|
|
43
|
+
errors.push(diagnostic('targetSelectionInvalid'));
|
|
44
|
+
}
|
|
45
|
+
const inventory = demand.roots === null ? null : [];
|
|
46
|
+
for (const root of demand.roots ?? []) {
|
|
47
|
+
options.signal?.throwIfAborted();
|
|
48
|
+
const blockers = root.blockers.map(diagnostic);
|
|
49
|
+
if (!selection.agents.length)
|
|
50
|
+
blockers.push(diagnostic('localTargetsRequired'));
|
|
51
|
+
const targetResults = [];
|
|
52
|
+
for (const agent of selection.agents) {
|
|
53
|
+
if (demand.targetRequirements && !demand.targetRequirements.some((item) => item.pluginId === root.pluginId && item.target === agent))
|
|
54
|
+
continue;
|
|
55
|
+
options.signal?.throwIfAborted();
|
|
56
|
+
const delivery = root.plugin ? resolveDelivery(root.plugin.manifest, agent, options.scope) ?? null : null;
|
|
57
|
+
const target = { pluginId: root.pluginId, agent, scope: options.scope, delivery,
|
|
58
|
+
execution: 'not-run', observation: 'unknown', content: 'unknown', blockers: [...blockers],
|
|
59
|
+
requiredBy: [root.pluginId], relation: 'root' };
|
|
60
|
+
if (blockers.length) {
|
|
61
|
+
targetResults.push(target);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (!delivery)
|
|
65
|
+
target.blockers.push(diagnostic('deliveryUnsupported'));
|
|
66
|
+
else if (delivery.kind === 'native') {
|
|
67
|
+
const native = options.nativeObservations.find((entry) => entry.pluginId === root.pluginId
|
|
68
|
+
&& entry.platform === delivery.platform);
|
|
69
|
+
if (native) {
|
|
70
|
+
target.content = native.content;
|
|
71
|
+
target.blockers.push(...native.blockers);
|
|
72
|
+
errors.push(...native.blockers.filter((entry) => NATIVE_READ_ERRORS.has(entry.code))
|
|
73
|
+
.map((entry) => ({ ...entry, pluginId: root.pluginId })));
|
|
74
|
+
target.backend = { ...(native.assumedActivation ? { assumedActivation: true } : {}),
|
|
75
|
+
...(native.backend ? { live: safeNativePlacement(native.backend) } : {}) };
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
target.blockers.push(diagnostic('nativeObservationUnavailable'));
|
|
79
|
+
errors.push({ ...diagnostic('nativeObservationUnavailable'), pluginId: root.pluginId });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
try {
|
|
84
|
+
const portable = await inspectPortableRecovery({ scope: options.scope, context: options.context,
|
|
85
|
+
selector: root.pluginId, agents: [agent], env: options.env, signal: options.signal,
|
|
86
|
+
cliVersion: options.cliVersion ?? '0.0.0', catalogOperationContext: demand.catalogOperationContext,
|
|
87
|
+
excludedPluginIds: demand.userProviders?.[agent] });
|
|
88
|
+
options.signal?.throwIfAborted();
|
|
89
|
+
target.blockers.push(...portable.blockers.map((code) => portablePreparationDiagnostic(portable, diagnostic(code), agent)));
|
|
90
|
+
const observed = portable.targets.filter((entry) => entry.agent === agent);
|
|
91
|
+
target.blockers.push(...observed.flatMap((entry) => entry.blocker ? [diagnostic(entry.blocker)] : []));
|
|
92
|
+
target.content = ['conflict', 'drifted', 'absent', 'unknown']
|
|
93
|
+
.find((state) => observed.some((entry) => entry.observation === state))
|
|
94
|
+
?? (observed.length && !portable.blockers.length ? 'satisfied' : 'unknown');
|
|
95
|
+
if (observed.length === 0 && portable.blockers.includes('needs-preparation') && options.portableCoverage === true
|
|
96
|
+
&& options.portableInstalled && !options.portableInstalled.some((item) => item.pluginId === root.pluginId && item.agent === agent)) {
|
|
97
|
+
target.content = 'absent';
|
|
98
|
+
target.blockers = target.blockers.filter((item) => item.code !== 'needs-preparation');
|
|
99
|
+
}
|
|
100
|
+
target.backend = observed.map((entry) => ({ skill: entry.skill, agent: entry.agent,
|
|
101
|
+
ownership: entry.ownership, observation: entry.observation, associatedAgents: entry.associatedAgents }));
|
|
102
|
+
if (target.blockers.some((entry) => /(?:VerificationFailed|ReadFailed|LockInvalid)/u.test(entry.code))) {
|
|
103
|
+
errors.push({ ...diagnostic('portableObservationFailed'), pluginId: root.pluginId });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
options.signal?.throwIfAborted();
|
|
108
|
+
if (error instanceof Error && error.name === 'AbortError')
|
|
109
|
+
throw error;
|
|
110
|
+
target.blockers.push(diagnostic('portableObservationFailed'));
|
|
111
|
+
errors.push({ ...diagnostic('portableObservationFailed'), pluginId: root.pluginId });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
target.observation = target.content === 'satisfied' ? 'verified'
|
|
115
|
+
: target.content === 'absent' ? 'missing' : 'unknown';
|
|
116
|
+
targetResults.push(target);
|
|
117
|
+
}
|
|
118
|
+
inventory.push({ pluginId: root.pluginId, source: root.sourceId, sourceState: root.sourceState,
|
|
119
|
+
blockers, targetResults });
|
|
120
|
+
}
|
|
121
|
+
const counts = { blocked: 0, unconfirmed: 0, pending: 0, ready: 0 };
|
|
122
|
+
let definiteFailure = false;
|
|
123
|
+
let uncertain = inventory === null;
|
|
124
|
+
for (const root of inventory ?? []) {
|
|
125
|
+
const targets = root.targetResults;
|
|
126
|
+
if (root.blockers.length || targets.some((target) => target.blockers.length || target.content === 'conflict'
|
|
127
|
+
|| target.delivery === null)) {
|
|
128
|
+
counts.blocked++;
|
|
129
|
+
}
|
|
130
|
+
else if (!targets.length || targets.some((target) => target.content === 'unknown')) {
|
|
131
|
+
counts.unconfirmed++;
|
|
132
|
+
uncertain = true;
|
|
133
|
+
}
|
|
134
|
+
else if (targets.some((target) => target.content === 'absent' || target.content === 'drifted'))
|
|
135
|
+
counts.pending++;
|
|
136
|
+
else
|
|
137
|
+
counts.ready++;
|
|
138
|
+
if (!targets.length || root.blockers.some((entry) => !/^(?:pluginUnavailable|sourceMissing|sourceIdentityMismatch)$/u.test(entry.code))) {
|
|
139
|
+
uncertain = true;
|
|
140
|
+
}
|
|
141
|
+
if (root.blockers.some((entry) => /^(?:pluginUnavailable|sourceMissing|sourceIdentityMismatch)$/u.test(entry.code))) {
|
|
142
|
+
definiteFailure = true;
|
|
143
|
+
}
|
|
144
|
+
for (const target of targets) {
|
|
145
|
+
if (target.content === 'absent' || target.content === 'drifted' || target.content === 'conflict'
|
|
146
|
+
|| target.blockers.some((entry) => entry.code === 'deliveryUnsupported')) {
|
|
147
|
+
definiteFailure = true;
|
|
148
|
+
}
|
|
149
|
+
else if (target.content === 'unknown' || target.observation === 'unknown' || target.blockers.length)
|
|
150
|
+
uncertain = true;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const allSatisfied = definiteFailure ? false : uncertain ? null : true;
|
|
154
|
+
options.signal?.throwIfAborted();
|
|
155
|
+
return { schemaVersion: 1, kind: 'aw-recovery-status', scope: options.scope, ok: errors.length === 0,
|
|
156
|
+
intent: { state: demand.intent.state, ...('digest' in demand.intent ? { digest: demand.intent.digest } : {}) },
|
|
157
|
+
selection, inventory, extraObserved: options.extraObserved ?? [],
|
|
158
|
+
coverage: { native: (options.nativeReadErrors?.length ?? 0) === 0, portable: options.portableCoverage ?? true },
|
|
159
|
+
counts, allSatisfied, inSync: aggregateConvergence(allSatisfied, (options.extraObserved?.length ?? 0) > 0 ? 'present' : options.portableCoverage === false ? 'unknown' : 'absent'), errors };
|
|
160
|
+
}
|
|
161
|
+
export async function readScopedRecoveryStatus(options) {
|
|
162
|
+
options.signal?.throwIfAborted();
|
|
163
|
+
const context = await createScopeContext({ scope: options.scope, cwd: options.cwd, env: options.env, readOnly: true });
|
|
164
|
+
try {
|
|
165
|
+
options.signal?.throwIfAborted();
|
|
166
|
+
const demand = options.demandOverride ?? await readDemand({ scope: options.scope, cwd: context.executionCwd, env: context.env,
|
|
167
|
+
catalogOperationContext: options.catalogOperationContext, signal: options.signal });
|
|
168
|
+
options.signal?.throwIfAborted();
|
|
169
|
+
const nativePlugins = options.onDemand?.(demand);
|
|
170
|
+
const native = options.nativeObservations ? undefined : await statusCommandV8({
|
|
171
|
+
cwd: context.executionCwd, env: context.env, scope: options.scope,
|
|
172
|
+
...(nativePlugins ? { plugins: nativePlugins } : {}),
|
|
173
|
+
recoveryDemand: demand, recoverySelection: { targets: options.targets }, cliVersion: options.cliVersion,
|
|
174
|
+
catalogOperationContext: options.catalogOperationContext,
|
|
175
|
+
nativeCliRunner: options.nativeCliRunner,
|
|
176
|
+
codexObservationSession: options.codexObservationSession,
|
|
177
|
+
signal: options.signal,
|
|
178
|
+
});
|
|
179
|
+
options.signal?.throwIfAborted();
|
|
180
|
+
if (native)
|
|
181
|
+
await options.onNativeStatus?.(native, demand);
|
|
182
|
+
options.signal?.throwIfAborted();
|
|
183
|
+
const roots = new Set(demand.roots?.map((root) => root.pluginId) ?? []);
|
|
184
|
+
const queue = [...(demand.roots ?? []).map((root) => root.plugin).filter((plugin) => plugin !== undefined)];
|
|
185
|
+
const byId = new Map(demand.plugins.map((plugin) => [plugin.pluginId, plugin]));
|
|
186
|
+
while (queue.length) {
|
|
187
|
+
const plugin = queue.shift();
|
|
188
|
+
for (const name of plugin.manifest.dependencies ?? []) {
|
|
189
|
+
const id = `${plugin.sourceId}/${name}`;
|
|
190
|
+
if (roots.has(id))
|
|
191
|
+
continue;
|
|
192
|
+
roots.add(id);
|
|
193
|
+
const dependency = byId.get(id);
|
|
194
|
+
if (dependency)
|
|
195
|
+
queue.push(dependency);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
const expected = (pluginId, agent) => demand.targetRequirements
|
|
199
|
+
? demand.targetRequirements.some((item) => item.pluginId === pluginId && item.target === agent)
|
|
200
|
+
: roots.has(pluginId) && agent !== null && demand.preferences.state === 'valid' && demand.preferences.value.targets.includes(agent);
|
|
201
|
+
// Native component lists can include a shared User activation marker. Only
|
|
202
|
+
// a live scoped consumer or an actual scoped owner proves a cleanup target.
|
|
203
|
+
const ownsScopedOutput = (target) => statusTargetHasLiveConfigConsumer(target)
|
|
204
|
+
|| target.reasons.some((reason) => reason.code === 'removedPluginCleanupRequired')
|
|
205
|
+
|| native?.nativeExtraObserved.some((entry) => entry.pluginId === target.pluginId
|
|
206
|
+
&& entry.platform === target.platform && entry.scope === target.scope
|
|
207
|
+
&& entry.reference.kind === 'namespacedOwner') === true;
|
|
208
|
+
const placed = native ? flattenStatusTargets(native.payload.targets)
|
|
209
|
+
.filter((target) => target.scope === options.scope && !expected(target.pluginId, target.platform)
|
|
210
|
+
&& ownsScopedOutput(target))
|
|
211
|
+
.map((target) => ({ pluginId: target.pluginId, agent: target.platform === 'claude' ? 'claude' : 'codex',
|
|
212
|
+
scope: options.scope, delivery: { kind: 'native', platform: target.platform },
|
|
213
|
+
observation: target.state === 'ready' ? 'verified' : target.state === 'needsSync' ? 'missing' : 'unknown',
|
|
214
|
+
content: target.state === 'ready' ? 'satisfied' : target.state === 'needsSync' ? 'drifted'
|
|
215
|
+
: target.state === 'blocked' ? 'conflict' : 'unknown',
|
|
216
|
+
backend: safeNativePlacement(target) })) : [];
|
|
217
|
+
const owned = native ? native.nativeExtraObserved
|
|
218
|
+
.filter((entry) => entry.reference.kind !== 'namespacedConfig'
|
|
219
|
+
&& placed.some((target) => target.pluginId === entry.pluginId && target.agent === entry.platform)
|
|
220
|
+
&& !expected(entry.pluginId, entry.platform ?? null))
|
|
221
|
+
.map((entry) => ({ pluginId: entry.pluginId, agent: entry.platform === 'claude' ? 'claude'
|
|
222
|
+
: entry.platform === 'codex' ? 'codex' : null, scope: options.scope,
|
|
223
|
+
delivery: entry.platform ? { kind: 'native', platform: entry.platform } : null,
|
|
224
|
+
observation: 'unknown', content: 'unknown', backend: {
|
|
225
|
+
kind: entry.reference.kind, pluginName: entry.reference.pluginName,
|
|
226
|
+
sourceId: entry.reference.sourceId, platform: entry.reference.platform,
|
|
227
|
+
scope: entry.reference.scope, marketplaceName: entry.reference.marketplaceName,
|
|
228
|
+
} })) : [];
|
|
229
|
+
const key = (entry) => `${entry.pluginId}\0${entry.agent ?? ''}\0${entry.scope}`;
|
|
230
|
+
const placedKeys = new Set(placed.map(key));
|
|
231
|
+
const nativeExtraObserved = [
|
|
232
|
+
...owned.filter((entry) => !placedKeys.has(key(entry))),
|
|
233
|
+
...placed.map((entry) => {
|
|
234
|
+
const references = owned.filter((candidate) => key(candidate) === key(entry))
|
|
235
|
+
.map((candidate) => candidate.backend);
|
|
236
|
+
return references.length ? { ...entry, backend: { ...entry.backend,
|
|
237
|
+
ownerReferences: references } } : entry;
|
|
238
|
+
}),
|
|
239
|
+
];
|
|
240
|
+
const portableExtra = await inspectPortableExtraInstalled({
|
|
241
|
+
scope: options.scope, context, env: context.env, signal: options.signal,
|
|
242
|
+
});
|
|
243
|
+
options.signal?.throwIfAborted();
|
|
244
|
+
const portableObserved = portableExtra.targets
|
|
245
|
+
.filter((entry) => !expected(entry.pluginId, entry.agent))
|
|
246
|
+
.map((entry) => ({ pluginId: entry.pluginId, agent: entry.agent, scope: options.scope,
|
|
247
|
+
delivery: { kind: 'agent-skills', provider: 'aw', agentId: entry.agent },
|
|
248
|
+
observation: entry.observation, content: entry.content,
|
|
249
|
+
backend: { skill: entry.skill, logicalIdentity: entry.logicalIdentity } }));
|
|
250
|
+
const extraObserved = [...nativeExtraObserved, ...portableObserved];
|
|
251
|
+
const result = await statusFromObservations({ ...options, context, demand,
|
|
252
|
+
nativeObservations: options.nativeObservations ?? native.nativeObservations, extraObserved,
|
|
253
|
+
portableCoverage: portableExtra.complete, portableInstalled: portableExtra.targets,
|
|
254
|
+
nativeReadErrors: native?.payload.errors.filter((error) => NATIVE_READ_ERRORS.has(error.code))
|
|
255
|
+
.map((error) => diagnostic(error.code)) });
|
|
256
|
+
result.existingTargets = [
|
|
257
|
+
...(native ? flattenStatusTargets(native.payload.targets).filter((target) => target.scope === options.scope && statusTargetHasLiveConfigConsumer(target))
|
|
258
|
+
.map((target) => ({ pluginId: target.pluginId, agent: target.platform, scope: target.scope })) : []),
|
|
259
|
+
...portableExtra.targets.map((target) => ({ pluginId: target.pluginId, agent: target.agent, scope: options.scope })),
|
|
260
|
+
];
|
|
261
|
+
result.ownedTargets = [
|
|
262
|
+
...(native ? flattenStatusTargets(native.payload.targets).filter((target) => target.scope === options.scope && ownsScopedOutput(target))
|
|
263
|
+
.map((target) => ({ pluginId: target.pluginId, agent: target.platform, scope: target.scope })) : []),
|
|
264
|
+
...portableExtra.targets.map((target) => ({ pluginId: target.pluginId, agent: target.agent, scope: options.scope })),
|
|
265
|
+
];
|
|
266
|
+
return result;
|
|
267
|
+
}
|
|
268
|
+
finally {
|
|
269
|
+
await context.dispose();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
export async function checkRecovery(selectors, options) {
|
|
273
|
+
const status = await readRecoveryStatus(options);
|
|
274
|
+
const blockers = [];
|
|
275
|
+
const roots = [...new Set(status.inventory?.map((root) => root.pluginId) ?? [])];
|
|
276
|
+
const requested = [];
|
|
277
|
+
if (options.all && selectors.length)
|
|
278
|
+
blockers.push(diagnostic('syncSelectorConflict'));
|
|
279
|
+
else if (!selectors.length)
|
|
280
|
+
requested.push(...roots);
|
|
281
|
+
else
|
|
282
|
+
for (const selector of selectors) {
|
|
283
|
+
const parsed = parsePluginId(selector);
|
|
284
|
+
const matches = roots.filter((id) => parsed.sourceId ? id === selector : parsePluginId(id).pluginName === parsed.pluginName);
|
|
285
|
+
if (matches.length !== 1)
|
|
286
|
+
blockers.push(diagnostic('syncPluginNotDesired'));
|
|
287
|
+
else if (!requested.includes(matches[0]))
|
|
288
|
+
requested.push(matches[0]);
|
|
289
|
+
}
|
|
290
|
+
const selectedRoots = status.inventory?.filter((root) => requested.includes(root.pluginId)) ?? [];
|
|
291
|
+
blockers.push(...selectedRoots.flatMap((root) => root.blockers));
|
|
292
|
+
if (requested.length && status.selection.agents.length === 0)
|
|
293
|
+
blockers.push(diagnostic('targetsNotConfigured'));
|
|
294
|
+
const targetResults = selectedRoots.flatMap((root) => root.targetResults)
|
|
295
|
+
.filter((target) => !options.targets || options.targets.includes(target.agent));
|
|
296
|
+
const remainingTargets = targetResults.filter((target) => target.blockers.length || target.observation !== 'verified')
|
|
297
|
+
.map(({ pluginId, agent, scope, delivery }) => ({ pluginId, agent, scope, delivery }));
|
|
298
|
+
if (status.intent.state !== 'valid' && status.intent.state !== 'absent')
|
|
299
|
+
blockers.push(diagnostic('pluginIntentStateInvalid'));
|
|
300
|
+
const errors = status.errors;
|
|
301
|
+
const ok = blockers.length === 0 && remainingTargets.length === 0 && errors.length === 0
|
|
302
|
+
&& !(requested.length === 0 && status.allSatisfied === null);
|
|
303
|
+
return { schemaVersion: 1, kind: 'aw-recovery', scope: status.scope, command: 'sync:check', ok,
|
|
304
|
+
intent: { ...status.intent, roots: status.inventory === null ? null : roots },
|
|
305
|
+
requestedRoots: requested, requestedTargets: targetResults.map(({ pluginId, agent, scope, delivery }) => ({ pluginId, agent, scope, delivery })), selection: status.selection, blockers, errors,
|
|
306
|
+
targetResults, remainingTargets, recoveryActions: ok ? [] : ['aw plugin status --json'],
|
|
307
|
+
allSatisfied: status.allSatisfied, inSync: status.inSync,
|
|
308
|
+
coverage: { scopes: status.coverage.scopes ?? [status.scope], ...(status.coverage.projectRoot ? { projectRoot: status.coverage.projectRoot } : {}) },
|
|
309
|
+
declarationChanged: false, preferencesChanged: false, configChanged: false, outputsMayHaveChanged: false };
|
|
310
|
+
}
|
|
311
|
+
export function aggregateConvergence(allSatisfied, residue) {
|
|
312
|
+
return allSatisfied === false || residue === 'present' ? false
|
|
313
|
+
: allSatisfied === null || residue === 'unknown' ? null : true;
|
|
314
|
+
}
|
|
315
|
+
export async function readRecoveryStatus(options) {
|
|
316
|
+
const snapshot = await readJointDemand(options);
|
|
317
|
+
const plan = deriveJointDemand(snapshot);
|
|
318
|
+
const scopes = [snapshot.user, ...(snapshot.project ? [snapshot.project] : [])];
|
|
319
|
+
const observed = [];
|
|
320
|
+
for (const demand of scopes) {
|
|
321
|
+
const nodes = plan.placements.filter((item) => item.scope === demand.scope
|
|
322
|
+
|| demand.scope === 'project' && (item.target === 'codex' || item.target === 'claude')
|
|
323
|
+
&& item.contributions.some((contribution) => contribution.scope === 'project'));
|
|
324
|
+
const expanded = { ...demand,
|
|
325
|
+
userProviders: demand.scope === 'project' ? Object.fromEntries((snapshot.preferences?.targets ?? []).map((target) => [target,
|
|
326
|
+
plan.placements.filter((item) => item.scope === 'user' && item.target === target).map((item) => item.pluginId)])) : {},
|
|
327
|
+
targetRequirements: nodes.map((item) => ({ pluginId: item.pluginId, target: item.target })), roots: demand.roots === null ? null : [...new Map(nodes.map((item) => [item.pluginId, {
|
|
328
|
+
pluginId: item.pluginId, sourceId: item.plugin.sourceId, sourceState: 'ready',
|
|
329
|
+
blockers: [], plugin: item.plugin,
|
|
330
|
+
}])).values()] };
|
|
331
|
+
observed.push(await readScopedRecoveryStatus({ ...options, scope: demand.scope,
|
|
332
|
+
cwd: snapshot.context.projectRoot ?? options.cwd, targets: undefined, demandOverride: expanded }));
|
|
333
|
+
}
|
|
334
|
+
const allTargets = observed.flatMap((status) => status.inventory?.flatMap((item) => item.targetResults) ?? []);
|
|
335
|
+
const inventory = scopes.some((demand) => demand.roots !== null) ? [] : null;
|
|
336
|
+
const visibleInventory = [];
|
|
337
|
+
for (const demand of scopes)
|
|
338
|
+
for (const root of demand.roots ?? []) {
|
|
339
|
+
const targetResults = [];
|
|
340
|
+
for (const requirement of plan.roots.filter((entry) => entry.scope === demand.scope && entry.pluginId === root.pluginId)) {
|
|
341
|
+
const placement = plan.placements.find((item) => item.pluginId === root.pluginId && item.target === requirement.target);
|
|
342
|
+
const target = { pluginId: root.pluginId, agent: requirement.target, scope: demand.scope,
|
|
343
|
+
requirementScope: demand.scope, providerScope: placement?.scope,
|
|
344
|
+
delivery: root.plugin ? resolveDelivery(root.plugin.manifest, requirement.target, demand.scope) ?? null : null,
|
|
345
|
+
execution: 'not-run', observation: 'unknown', content: 'unknown', requiredBy: [root.pluginId], relation: 'root', blockers: [...requirement.blockers] };
|
|
346
|
+
if (requirement.state === 'excluded' || requirement.state === 'unsupported') {
|
|
347
|
+
target.satisfaction = requirement.state;
|
|
348
|
+
target.content = 'satisfied';
|
|
349
|
+
target.observation = 'verified';
|
|
350
|
+
if (requirement.reasons?.length)
|
|
351
|
+
target.reasons = requirement.reasons;
|
|
352
|
+
}
|
|
353
|
+
else if (requirement.state === 'required') {
|
|
354
|
+
const providers = requirement.dependencies.map((id) => {
|
|
355
|
+
const provider = plan.placements.find((item) => item.pluginId === id && item.target === requirement.target);
|
|
356
|
+
const actual = allTargets.find((item) => item.pluginId === id && item.agent === requirement.target && item.scope === provider?.scope);
|
|
357
|
+
if (demand.scope === 'project' && provider?.scope === 'user' && (requirement.target === 'codex' || requirement.target === 'claude')) {
|
|
358
|
+
const activation = allTargets.find((item) => item.pluginId === id && item.agent === requirement.target && item.scope === 'project');
|
|
359
|
+
if (actual?.content !== 'satisfied')
|
|
360
|
+
return actual;
|
|
361
|
+
if (requirement.target === 'codex' && activation && activation.blockers.length === 0) {
|
|
362
|
+
const backend = activation.backend;
|
|
363
|
+
const surface = analyzeCodexSurface(provider.plugin.manifest);
|
|
364
|
+
const completeUserCapability = surface.components.every((component) => !component.scopes.includes('project') || component.scopes.includes('user'));
|
|
365
|
+
const effective = surface.nativeKinds.length === 0 || backend?.live?.components.some((component) => component.kind === 'activation' && component.metadata?.effective === true);
|
|
366
|
+
const supported = surface.nativeKinds.length === 0 || backend?.live?.sharedComponents?.some((component) => component.kind === 'systemConsumer' && component.state === 'compatible');
|
|
367
|
+
if (completeUserCapability && effective && supported && !backend?.assumedActivation) {
|
|
368
|
+
return { ...activation, content: 'satisfied', observation: 'verified' };
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return activation;
|
|
372
|
+
}
|
|
373
|
+
return actual;
|
|
374
|
+
});
|
|
375
|
+
target.blockers.push(...providers.flatMap((item) => item?.blockers ?? []));
|
|
376
|
+
target.content = ['conflict', 'drifted', 'absent', 'unknown'].find((state) => providers.some((item) => (item?.content ?? 'unknown') === state)) ?? 'satisfied';
|
|
377
|
+
target.observation = target.content === 'satisfied' ? 'verified' : target.content === 'absent' ? 'missing' : 'unknown';
|
|
378
|
+
target.satisfaction = target.content === 'satisfied' ? demand.scope === 'project' && placement?.scope === 'user' ? 'inherited-user' : 'installed'
|
|
379
|
+
: target.content === 'unknown' ? 'unknown' : 'pending';
|
|
380
|
+
target.backend = providers.map((provider) => ({ pluginId: provider?.pluginId, scope: provider?.scope, content: provider?.content, live: provider?.backend }));
|
|
381
|
+
}
|
|
382
|
+
targetResults.push(target);
|
|
383
|
+
}
|
|
384
|
+
visibleInventory.push({ pluginId: root.pluginId, source: root.sourceId, sourceState: root.sourceState,
|
|
385
|
+
blockers: root.blockers.map(diagnostic), targetResults });
|
|
386
|
+
}
|
|
387
|
+
const expected = new Set(plan.placements.map((item) => `${item.pluginId}\0${item.target}\0${item.scope}`));
|
|
388
|
+
const extraObserved = observed.flatMap((status) => status.extraObserved)
|
|
389
|
+
.filter((item) => !expected.has(`${item.pluginId}\0${item.agent}\0${item.scope}`));
|
|
390
|
+
const conflicts = findPlacementConflicts([...plan.placements,
|
|
391
|
+
...extraObserved.filter((item) => item.agent !== null)
|
|
392
|
+
.map((item) => ({ pluginId: item.pluginId, target: item.agent, scope: item.scope }))]);
|
|
393
|
+
const targets = visibleInventory.flatMap((item) => item.targetResults);
|
|
394
|
+
const knownFailure = plan.errors.some((error) => ['targetsNotConfigured', 'dependencyExcluded', 'dependencyContractInvalid', 'targetPlacementConflict'].includes(error.code))
|
|
395
|
+
|| conflicts.length > 0 || targets.some((target) => ['absent', 'drifted', 'conflict'].includes(target.content ?? 'unknown'));
|
|
396
|
+
const uncertain = !plan.complete || targets.some((target) => target.content === 'unknown' || target.blockers.length > 0);
|
|
397
|
+
const allSatisfied = knownFailure ? false : uncertain ? null : true;
|
|
398
|
+
const nativeCoverage = observed.every((status) => status.coverage.native);
|
|
399
|
+
const portableCoverage = observed.every((status) => status.coverage.portable);
|
|
400
|
+
const errors = [...plan.errors, ...conflicts, ...observed.flatMap((status) => status.errors)];
|
|
401
|
+
return { schemaVersion: 1, kind: 'aw-recovery-status', scope: snapshot.context.context, ok: errors.length === 0,
|
|
402
|
+
intent: { state: scopes.some((demand) => demand.intent.state === 'invalid') ? 'invalid'
|
|
403
|
+
: scopes.some((demand) => demand.intent.state === 'unreadable') ? 'unreadable'
|
|
404
|
+
: scopes.some((demand) => demand.intent.state === 'unsupported-version') ? 'unsupported-version'
|
|
405
|
+
: scopes.some((demand) => demand.intent.state === 'valid') ? 'valid' : 'absent' },
|
|
406
|
+
selection: { agents: snapshot.preferences?.targets ?? [], origin: snapshot.preferences?.targets.length ? 'preference' : 'none', preferences: snapshot.user.preferences.state },
|
|
407
|
+
inventory: inventory === null ? null : visibleInventory, extraObserved, observedTargets: allTargets,
|
|
408
|
+
existingTargets: observed.flatMap((status) => status.existingTargets ?? []), ownedTargets: observed.flatMap((status) => status.ownedTargets ?? []),
|
|
409
|
+
coverage: { native: nativeCoverage, portable: portableCoverage, scopes: snapshot.context.scopes,
|
|
410
|
+
...(snapshot.context.projectRoot ? { projectRoot: snapshot.context.projectRoot } : {}) },
|
|
411
|
+
counts: { blocked: targets.filter((target) => target.blockers.length).length,
|
|
412
|
+
pending: targets.filter((target) => target.satisfaction === 'pending').length,
|
|
413
|
+
unconfirmed: targets.filter((target) => target.content === 'unknown').length,
|
|
414
|
+
ready: targets.filter((target) => target.content === 'satisfied').length },
|
|
415
|
+
allSatisfied, inSync: aggregateConvergence(allSatisfied, extraObserved.length ? 'present' : nativeCoverage && portableCoverage ? 'absent' : 'unknown'), errors };
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/recovery/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { Scope } from '../types.js';
|
|
2
|
+
import type { AgentId, PreferencesObservation } from '../intent/deployment-preferences.js';
|
|
3
|
+
import type { IntentObservation } from '../intent/intent-store.js';
|
|
4
|
+
export type Delivery = {
|
|
5
|
+
kind: 'native';
|
|
6
|
+
platform: 'codex' | 'claude';
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'agent-skills';
|
|
9
|
+
provider: 'aw';
|
|
10
|
+
agentId: AgentId;
|
|
11
|
+
};
|
|
12
|
+
export type Execution = 'not-run' | 'no-op' | 'applied' | 'partial' | 'failed';
|
|
13
|
+
export type Observation = 'verified' | 'missing' | 'unknown';
|
|
14
|
+
export type ContentState = 'absent' | 'satisfied' | 'drifted' | 'conflict' | 'unknown';
|
|
15
|
+
export interface Diagnostic {
|
|
16
|
+
code: string;
|
|
17
|
+
message: string;
|
|
18
|
+
}
|
|
19
|
+
export interface TargetKey {
|
|
20
|
+
pluginId: string;
|
|
21
|
+
agent: AgentId;
|
|
22
|
+
scope: Scope;
|
|
23
|
+
}
|
|
24
|
+
export interface TargetResult extends TargetKey {
|
|
25
|
+
delivery: Delivery | null;
|
|
26
|
+
execution: Execution;
|
|
27
|
+
observation: Observation;
|
|
28
|
+
content?: ContentState;
|
|
29
|
+
blockers: Diagnostic[];
|
|
30
|
+
requiredBy: string[];
|
|
31
|
+
recoveryActions?: string[];
|
|
32
|
+
backend?: unknown;
|
|
33
|
+
}
|
|
34
|
+
export interface RecoveryReceiptV1 {
|
|
35
|
+
schemaVersion: 1;
|
|
36
|
+
kind: 'aw-recovery';
|
|
37
|
+
scope: Scope;
|
|
38
|
+
command: string;
|
|
39
|
+
ok: boolean;
|
|
40
|
+
intent: {
|
|
41
|
+
state: IntentObservation['state'];
|
|
42
|
+
digest?: string;
|
|
43
|
+
roots: string[] | null;
|
|
44
|
+
};
|
|
45
|
+
requestedTargets: TargetKey[];
|
|
46
|
+
selection: {
|
|
47
|
+
agents: AgentId[];
|
|
48
|
+
origin: 'argument' | 'preference' | 'none';
|
|
49
|
+
};
|
|
50
|
+
blockers: Diagnostic[];
|
|
51
|
+
errors: Diagnostic[];
|
|
52
|
+
targetResults: TargetResult[];
|
|
53
|
+
remainingTargets: TargetKey[];
|
|
54
|
+
recoveryActions: string[];
|
|
55
|
+
declarationChanged: boolean;
|
|
56
|
+
preferencesChanged: boolean;
|
|
57
|
+
configChanged: boolean;
|
|
58
|
+
outputsMayHaveChanged: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface RecoveryStatusV1 {
|
|
61
|
+
schemaVersion: 1;
|
|
62
|
+
kind: 'aw-recovery-status';
|
|
63
|
+
scope: Scope;
|
|
64
|
+
ok: boolean;
|
|
65
|
+
intent: {
|
|
66
|
+
state: IntentObservation['state'];
|
|
67
|
+
digest?: string;
|
|
68
|
+
};
|
|
69
|
+
selection: {
|
|
70
|
+
agents: AgentId[];
|
|
71
|
+
origin: 'argument' | 'preference' | 'none';
|
|
72
|
+
preferences: PreferencesObservation['state'];
|
|
73
|
+
};
|
|
74
|
+
inventory: Array<{
|
|
75
|
+
pluginId: string;
|
|
76
|
+
source: string;
|
|
77
|
+
sourceState: string;
|
|
78
|
+
blockers: Diagnostic[];
|
|
79
|
+
targetResults: TargetResult[];
|
|
80
|
+
}> | null;
|
|
81
|
+
extraObserved: unknown[];
|
|
82
|
+
coverage: unknown;
|
|
83
|
+
counts: unknown;
|
|
84
|
+
allSatisfied: boolean | null;
|
|
85
|
+
errors: Diagnostic[];
|
|
86
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/recovery/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type PluginMeta, type Scope } from '@lesliechan721/aw-plugin-core';
|
|
1
|
+
import { type PlatformTarget, type PluginMeta, type Scope } from '@lesliechan721/aw-plugin-core';
|
|
2
2
|
import { type ReviewPlatform, type ReviewPluginProfileConfig, type ReviewProfile, type ReviewProfileConfig, type ReviewSelectedSkill } from './review-types.js';
|
|
3
3
|
export declare function normalizeReviewProfileConfig(value: unknown): ReviewProfileConfig;
|
|
4
4
|
export declare function parseReviewProfile(value: unknown): ReviewProfile;
|
|
@@ -6,6 +6,7 @@ export declare function resolveReviewPluginProfileConfig(options: {
|
|
|
6
6
|
plugin: PluginMeta;
|
|
7
7
|
plugins?: readonly PluginMeta[];
|
|
8
8
|
scope: Scope;
|
|
9
|
+
platform?: PlatformTarget;
|
|
9
10
|
config: ReviewProfileConfig;
|
|
10
11
|
keys?: readonly string[];
|
|
11
12
|
}): ReviewPluginProfileConfig;
|