@open-agent-toolkit/cli 0.2.50 → 0.2.52
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/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/bootstrap.md +6 -2
- package/assets/docs/cli-utilities/tool-packs.md +87 -33
- package/assets/docs/provider-sync/commands.md +30 -2
- package/assets/docs/provider-sync/config.md +19 -0
- package/assets/docs/provider-sync/manifest-and-drift.md +37 -0
- package/assets/docs/provider-sync/providers.md +69 -2
- package/assets/docs/provider-sync/scope-and-surface.md +44 -0
- package/assets/docs/reference/cli-reference.md +21 -5
- package/assets/docs/reference/file-locations.md +8 -2
- package/assets/docs/reference/oat-directory-structure.md +25 -9
- package/assets/docs/workflows/projects/artifacts.md +9 -4
- package/assets/docs/workflows/projects/evidence-layers.md +110 -1
- package/assets/docs/workflows/projects/implementation-execution.md +13 -0
- package/assets/docs/workflows/projects/lifecycle.md +17 -5
- package/assets/docs/workflows/projects/orchestration-model.md +18 -0
- package/assets/docs/workflows/projects/picking-up-projects.md +26 -9
- package/assets/docs/workflows/projects/pr-flow.md +5 -3
- package/assets/docs/workflows/projects/reviewing-oat-prs.md +12 -8
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-dispatch-subagents/SKILL.md +57 -1
- package/assets/skills/oat-dispatch-subagents/references/record-schema.md +77 -1
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +3 -3
- package/assets/skills/oat-project-complete/SKILL.md +193 -26
- package/assets/skills/oat-project-complete/scripts/execute-synced-archive-entry.mjs +306 -0
- package/assets/skills/oat-project-complete/scripts/finalize-synced-archive.mjs +125 -0
- package/assets/skills/oat-project-complete/scripts/parse-synced-archive-resume-fields.mjs +106 -0
- package/assets/skills/oat-project-complete/scripts/recover-completion-receipts.mjs +110 -0
- package/assets/skills/oat-project-complete/scripts/resolve-synced-archive-entry.mjs +164 -0
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +24 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +11 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-plan-writing/SKILL.md +12 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +12 -1
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +12 -1
- package/dist/agents/canonical/index.d.ts +2 -0
- package/dist/agents/canonical/index.d.ts.map +1 -1
- package/dist/agents/canonical/index.js +1 -0
- package/dist/agents/canonical/resolve.d.ts +45 -0
- package/dist/agents/canonical/resolve.d.ts.map +1 -0
- package/dist/agents/canonical/resolve.js +175 -0
- package/dist/commands/decision/agents-guidance.d.ts +2 -2
- package/dist/commands/decision/agents-guidance.d.ts.map +1 -1
- package/dist/commands/decision/agents-guidance.js +1 -4
- package/dist/commands/decision/index.d.ts.map +1 -1
- package/dist/commands/decision/index.js +25 -6
- package/dist/commands/docs/init/index.d.ts +7 -1
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +53 -20
- package/dist/commands/doctor/index.d.ts +8 -2
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +157 -46
- package/dist/commands/init/index.d.ts +8 -3
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +64 -26
- package/dist/commands/init/tools/index.d.ts +12 -12
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +430 -99
- package/dist/commands/init/tools/install-state.d.ts +2 -0
- package/dist/commands/init/tools/install-state.d.ts.map +1 -1
- package/dist/commands/init/tools/install-state.js +11 -0
- package/dist/commands/init/tools/project-guidance.d.ts +49 -0
- package/dist/commands/init/tools/project-guidance.d.ts.map +1 -0
- package/dist/commands/init/tools/project-guidance.js +144 -0
- package/dist/commands/init/tools/workflows/index.d.ts +7 -0
- package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
- package/dist/commands/init/tools/workflows/index.js +160 -7
- package/dist/commands/pjm/index.d.ts.map +1 -1
- package/dist/commands/pjm/index.js +28 -3
- package/dist/commands/pjm/init.d.ts +5 -0
- package/dist/commands/pjm/init.d.ts.map +1 -1
- package/dist/commands/pjm/init.js +19 -3
- package/dist/commands/project/archive/archive-utils.d.ts +8 -1
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
- package/dist/commands/project/archive/archive-utils.js +147 -50
- package/dist/commands/project/archive/push-runner.d.ts.map +1 -1
- package/dist/commands/project/archive/push-runner.js +15 -2
- package/dist/commands/project/dispatch/index.d.ts +10 -0
- package/dist/commands/project/dispatch/index.d.ts.map +1 -0
- package/dist/commands/project/dispatch/index.js +137 -0
- package/dist/commands/project/dispatch/record.d.ts +91 -0
- package/dist/commands/project/dispatch/record.d.ts.map +1 -0
- package/dist/commands/project/dispatch/record.js +402 -0
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/links/compute.d.ts +1 -0
- package/dist/commands/project/links/compute.d.ts.map +1 -1
- package/dist/commands/project/links/compute.js +5 -4
- package/dist/commands/project/links/index.d.ts +9 -0
- package/dist/commands/project/links/index.d.ts.map +1 -1
- package/dist/commands/project/links/index.js +71 -2
- package/dist/commands/project/list.d.ts +10 -2
- package/dist/commands/project/list.d.ts.map +1 -1
- package/dist/commands/project/list.js +205 -29
- package/dist/commands/project/open/index.d.ts +2 -0
- package/dist/commands/project/open/index.d.ts.map +1 -1
- package/dist/commands/project/open/index.js +16 -1
- package/dist/commands/project/prune/index.d.ts +10 -4
- package/dist/commands/project/prune/index.d.ts.map +1 -1
- package/dist/commands/project/prune/index.js +85 -15
- package/dist/commands/project/pull/index.d.ts +4 -0
- package/dist/commands/project/pull/index.d.ts.map +1 -1
- package/dist/commands/project/pull/index.js +82 -3
- package/dist/commands/project/sync/git.d.ts +9 -0
- package/dist/commands/project/sync/git.d.ts.map +1 -1
- package/dist/commands/project/sync/git.js +18 -0
- package/dist/commands/project/sync/ref-sync.d.ts +16 -1
- package/dist/commands/project/sync/ref-sync.d.ts.map +1 -1
- package/dist/commands/project/sync/ref-sync.js +288 -17
- package/dist/commands/project/sync/resolve-target.d.ts +10 -0
- package/dist/commands/project/sync/resolve-target.d.ts.map +1 -1
- package/dist/commands/project/sync/resolve-target.js +56 -1
- package/dist/commands/providers/inspect/inspect.d.ts +8 -1
- package/dist/commands/providers/inspect/inspect.d.ts.map +1 -1
- package/dist/commands/providers/inspect/inspect.js +146 -26
- package/dist/commands/providers/list/list.d.ts +8 -1
- package/dist/commands/providers/list/list.d.ts.map +1 -1
- package/dist/commands/providers/list/list.js +139 -23
- package/dist/commands/providers/providers.types.d.ts +25 -1
- package/dist/commands/providers/providers.types.d.ts.map +1 -1
- package/dist/commands/providers/set/index.d.ts +9 -1
- package/dist/commands/providers/set/index.d.ts.map +1 -1
- package/dist/commands/providers/set/index.js +43 -33
- package/dist/commands/remove/skill/remove-skill.d.ts.map +1 -1
- package/dist/commands/remove/skill/remove-skill.js +11 -0
- package/dist/commands/shared/agents-md.d.ts +42 -14
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +364 -70
- package/dist/commands/shared/project-scope.d.ts +2 -0
- package/dist/commands/shared/project-scope.d.ts.map +1 -1
- package/dist/commands/shared/project-scope.js +5 -0
- package/dist/commands/state/generate.d.ts +2 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +93 -28
- package/dist/commands/status/index.d.ts +8 -3
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +147 -32
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +220 -29
- package/dist/commands/sync/dry-run.d.ts.map +1 -1
- package/dist/commands/sync/dry-run.js +30 -6
- package/dist/commands/sync/index.d.ts +17 -2
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +106 -41
- package/dist/commands/sync/sync.types.d.ts +39 -2
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/commands/sync/sync.utils.d.ts +5 -1
- package/dist/commands/sync/sync.utils.d.ts.map +1 -1
- package/dist/commands/sync/sync.utils.js +73 -0
- package/dist/commands/tools/info/info-tool.d.ts +2 -0
- package/dist/commands/tools/info/info-tool.d.ts.map +1 -1
- package/dist/commands/tools/info/info-tool.js +34 -12
- package/dist/commands/tools/install/index.d.ts.map +1 -1
- package/dist/commands/tools/install/index.js +19 -3
- package/dist/commands/tools/list/list-tools.d.ts +2 -0
- package/dist/commands/tools/list/list-tools.d.ts.map +1 -1
- package/dist/commands/tools/list/list-tools.js +36 -7
- package/dist/commands/tools/remove/index.d.ts.map +1 -1
- package/dist/commands/tools/remove/index.js +150 -21
- package/dist/commands/tools/remove/remove-tools.d.ts +20 -0
- package/dist/commands/tools/remove/remove-tools.d.ts.map +1 -1
- package/dist/commands/tools/remove/remove-tools.js +122 -1
- package/dist/commands/tools/shared/format-pack-inventory.d.ts +19 -0
- package/dist/commands/tools/shared/format-pack-inventory.d.ts.map +1 -1
- package/dist/commands/tools/shared/format-pack-inventory.js +109 -0
- package/dist/commands/tools/shared/pack-evidence.d.ts +66 -0
- package/dist/commands/tools/shared/pack-evidence.d.ts.map +1 -0
- package/dist/commands/tools/shared/pack-evidence.js +132 -0
- package/dist/commands/tools/shared/pack-inventory.d.ts +1 -0
- package/dist/commands/tools/shared/pack-inventory.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-lifecycle-outcome.d.ts +44 -0
- package/dist/commands/tools/shared/pack-lifecycle-outcome.d.ts.map +1 -0
- package/dist/commands/tools/shared/pack-lifecycle-outcome.js +91 -0
- package/dist/commands/tools/update/index.d.ts.map +1 -1
- package/dist/commands/tools/update/index.js +74 -4
- package/dist/commands/tools/update/update-tools.d.ts +5 -0
- package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
- package/dist/commands/tools/update/update-tools.js +64 -2
- package/dist/config/oat-config.d.ts +5 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +17 -5
- package/dist/config/user-sync-config.d.ts +1 -0
- package/dist/config/user-sync-config.d.ts.map +1 -1
- package/dist/config/user-sync-config.js +8 -0
- package/dist/drift/detector.d.ts +2 -2
- package/dist/drift/detector.d.ts.map +1 -1
- package/dist/drift/detector.js +18 -0
- package/dist/drift/strays.d.ts.map +1 -1
- package/dist/drift/strays.js +5 -0
- package/dist/engine/collection-sync.d.ts +14 -0
- package/dist/engine/collection-sync.d.ts.map +1 -0
- package/dist/engine/collection-sync.js +282 -0
- package/dist/engine/compute-plan.d.ts +8 -1
- package/dist/engine/compute-plan.d.ts.map +1 -1
- package/dist/engine/compute-plan.js +303 -12
- package/dist/engine/engine.types.d.ts +61 -0
- package/dist/engine/engine.types.d.ts.map +1 -1
- package/dist/engine/execute-plan.d.ts +22 -2
- package/dist/engine/execute-plan.d.ts.map +1 -1
- package/dist/engine/execute-plan.js +459 -27
- package/dist/engine/provider-path-safety.d.ts +1 -0
- package/dist/engine/provider-path-safety.d.ts.map +1 -1
- package/dist/engine/provider-path-safety.js +15 -0
- package/dist/engine/scanner.d.ts +2 -2
- package/dist/engine/scanner.d.ts.map +1 -1
- package/dist/engine/scanner.js +21 -4
- package/dist/fs/io.d.ts +67 -0
- package/dist/fs/io.d.ts.map +1 -1
- package/dist/fs/io.js +536 -3
- package/dist/manifest/index.d.ts +2 -2
- package/dist/manifest/index.d.ts.map +1 -1
- package/dist/manifest/index.js +1 -1
- package/dist/manifest/manager.d.ts +2 -2
- package/dist/manifest/manager.d.ts.map +1 -1
- package/dist/manifest/manager.js +20 -3
- package/dist/manifest/manifest.types.d.ts +704 -13
- package/dist/manifest/manifest.types.d.ts.map +1 -1
- package/dist/manifest/manifest.types.js +131 -15
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/codex/codec/sync-extension.js +41 -10
- package/dist/providers/cursor/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/cursor/codec/sync-extension.js +41 -10
- package/dist/providers/identity/absolute-paths.d.ts +68 -0
- package/dist/providers/identity/absolute-paths.d.ts.map +1 -0
- package/dist/providers/identity/absolute-paths.js +144 -0
- package/dist/providers/identity/claude-runtime-observation.d.ts +105 -0
- package/dist/providers/identity/claude-runtime-observation.d.ts.map +1 -0
- package/dist/providers/identity/claude-runtime-observation.fixtures.d.ts +40 -0
- package/dist/providers/identity/claude-runtime-observation.fixtures.d.ts.map +1 -0
- package/dist/providers/identity/claude-runtime-observation.fixtures.js +146 -0
- package/dist/providers/identity/claude-runtime-observation.js +229 -0
- package/dist/providers/identity/codex-runtime-observation.d.ts +75 -0
- package/dist/providers/identity/codex-runtime-observation.d.ts.map +1 -0
- package/dist/providers/identity/codex-runtime-observation.fixtures.d.ts +37 -0
- package/dist/providers/identity/codex-runtime-observation.fixtures.d.ts.map +1 -0
- package/dist/providers/identity/codex-runtime-observation.fixtures.js +539 -0
- package/dist/providers/identity/codex-runtime-observation.js +255 -0
- package/dist/providers/identity/generic-dispatch-record.d.ts +313 -0
- package/dist/providers/identity/generic-dispatch-record.d.ts.map +1 -0
- package/dist/providers/identity/generic-dispatch-record.js +539 -0
- package/dist/providers/identity/oat-dispatch-record.d.ts +1964 -0
- package/dist/providers/identity/oat-dispatch-record.d.ts.map +1 -0
- package/dist/providers/identity/oat-dispatch-record.js +691 -0
- package/dist/providers/identity/runtime-observation.d.ts +100 -0
- package/dist/providers/identity/runtime-observation.d.ts.map +1 -0
- package/dist/providers/identity/runtime-observation.js +169 -0
- package/dist/providers/shared/index.d.ts +2 -0
- package/dist/providers/shared/index.d.ts.map +1 -1
- package/dist/providers/shared/index.js +1 -0
- package/dist/providers/shared/materialization-extension.d.ts +12 -0
- package/dist/providers/shared/materialization-extension.d.ts.map +1 -1
- package/dist/providers/shared/registry.d.ts +69 -0
- package/dist/providers/shared/registry.d.ts.map +1 -0
- package/dist/providers/shared/registry.js +252 -0
- package/dist/providers/shared/restart-adviser.d.ts +26 -0
- package/dist/providers/shared/restart-adviser.d.ts.map +1 -0
- package/dist/providers/shared/restart-adviser.js +96 -0
- package/dist/shared/types.d.ts +4 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -9,15 +9,9 @@ import { computeSyncPlan, executeSyncPlan, scanBundledManagedAgents, scanCanonic
|
|
|
9
9
|
import { CliError } from '../../errors/index.js';
|
|
10
10
|
import { resolveProjectRoot, resolveScopeRoot } from '../../fs/paths.js';
|
|
11
11
|
import { loadManifest } from '../../manifest/index.js';
|
|
12
|
-
import {
|
|
13
|
-
import { codexAdapter } from '../../providers/codex/index.js';
|
|
14
|
-
import { codexMaterializationExtension } from '../../providers/codex/codec/sync-extension.js';
|
|
15
|
-
import { copilotAdapter } from '../../providers/copilot/index.js';
|
|
16
|
-
import { cursorAdapter } from '../../providers/cursor/index.js';
|
|
17
|
-
import { cursorMaterializationExtension } from '../../providers/cursor/codec/sync-extension.js';
|
|
18
|
-
import { geminiAdapter } from '../../providers/gemini/index.js';
|
|
19
|
-
import { getConfigAwareAdapters, toMaterializationOperations, } from '../../providers/shared/index.js';
|
|
12
|
+
import { getConfigAwareAdapters, getProviderRegistrations, recomputeProviderScopeContext, resolveProviderScopeContext, toMaterializationOperations, } from '../../providers/shared/index.js';
|
|
20
13
|
import { OAT_VERSION } from '../../shared/oat-version.js';
|
|
14
|
+
import { USER_SCOPE_MANAGED_AGENT_FILES, } from '../../shared/types.js';
|
|
21
15
|
import { formatSyncPlan } from '../../ui/output.js';
|
|
22
16
|
import { Command, Option } from 'commander';
|
|
23
17
|
import { runSyncApply } from './apply.js';
|
|
@@ -40,23 +34,15 @@ function defaultDependencies() {
|
|
|
40
34
|
scanCanonical,
|
|
41
35
|
scanBundledManagedAgents,
|
|
42
36
|
getAdapters() {
|
|
43
|
-
return
|
|
44
|
-
claudeAdapter,
|
|
45
|
-
cursorAdapter,
|
|
46
|
-
codexAdapter,
|
|
47
|
-
copilotAdapter,
|
|
48
|
-
geminiAdapter,
|
|
49
|
-
];
|
|
37
|
+
return getProviderRegistrations().map(({ adapter }) => adapter);
|
|
50
38
|
},
|
|
51
39
|
getConfigAwareAdapters,
|
|
40
|
+
resolveProviderScopeContext,
|
|
52
41
|
selectProvidersWithAbort: selectManyWithAbort,
|
|
53
42
|
computeSyncPlan,
|
|
54
43
|
executeSyncPlan,
|
|
55
44
|
getMaterializationExtensions() {
|
|
56
|
-
return
|
|
57
|
-
codexMaterializationExtension,
|
|
58
|
-
cursorMaterializationExtension,
|
|
59
|
-
];
|
|
45
|
+
return getProviderRegistrations().flatMap(({ extensions }) => extensions);
|
|
60
46
|
},
|
|
61
47
|
applyMaterializationExtensionPlan(extension, scopeRoot, plan) {
|
|
62
48
|
return extension.applyPlan(scopeRoot, plan);
|
|
@@ -109,26 +95,29 @@ function buildMismatchChoices(adapters, mismatches) {
|
|
|
109
95
|
};
|
|
110
96
|
});
|
|
111
97
|
}
|
|
112
|
-
async function maybeResolveProviderMismatches(context, scope, scopeRoot, configPath, config, adapters, mismatches, dependencies) {
|
|
98
|
+
async function maybeResolveProviderMismatches(context, scope, scopeRoot, configPath, config, adapters, mismatches, dependencies, activeAdapters, providerContext) {
|
|
113
99
|
if (scope !== 'project' ||
|
|
114
100
|
!context.interactive ||
|
|
115
101
|
!hasProviderMismatches(mismatches)) {
|
|
116
102
|
return {
|
|
117
103
|
config,
|
|
118
104
|
mismatches,
|
|
119
|
-
activeAdapters:
|
|
120
|
-
|
|
121
|
-
|
|
105
|
+
activeAdapters: activeAdapters ??
|
|
106
|
+
(await dependencies
|
|
107
|
+
.getConfigAwareAdapters(adapters, scopeRoot, config)
|
|
108
|
+
.then((resolution) => resolution.activeAdapters)),
|
|
122
109
|
};
|
|
123
110
|
}
|
|
124
111
|
const choices = buildMismatchChoices(adapters, mismatches);
|
|
125
112
|
const selected = await dependencies.selectProvidersWithAbort('Detected provider directories are not enabled in config. Select providers to enable for sync.', choices, { interactive: context.interactive });
|
|
126
113
|
if (selected === null) {
|
|
127
|
-
const resolution = await dependencies.getConfigAwareAdapters(adapters, scopeRoot, config);
|
|
128
114
|
return {
|
|
129
115
|
config,
|
|
130
116
|
mismatches,
|
|
131
|
-
activeAdapters:
|
|
117
|
+
activeAdapters: activeAdapters ??
|
|
118
|
+
(await dependencies
|
|
119
|
+
.getConfigAwareAdapters(adapters, scopeRoot, config)
|
|
120
|
+
.then((resolution) => resolution.activeAdapters)),
|
|
132
121
|
};
|
|
133
122
|
}
|
|
134
123
|
const selectedSet = new Set(selected);
|
|
@@ -148,14 +137,29 @@ async function maybeResolveProviderMismatches(context, scope, scopeRoot, configP
|
|
|
148
137
|
...config,
|
|
149
138
|
providers,
|
|
150
139
|
});
|
|
151
|
-
const
|
|
140
|
+
const refreshedProviderContext = providerContext
|
|
141
|
+
? recomputeProviderScopeContext(providerContext, savedConfig)
|
|
142
|
+
: undefined;
|
|
143
|
+
const resolution = refreshedProviderContext
|
|
144
|
+
? undefined
|
|
145
|
+
: await dependencies.getConfigAwareAdapters(adapters, scopeRoot, savedConfig);
|
|
152
146
|
return {
|
|
153
147
|
config: savedConfig,
|
|
154
148
|
mismatches: {
|
|
155
|
-
detectedUnset:
|
|
156
|
-
|
|
149
|
+
detectedUnset: [
|
|
150
|
+
...(refreshedProviderContext?.mismatches.detectedUnset ??
|
|
151
|
+
resolution.detectedUnset),
|
|
152
|
+
],
|
|
153
|
+
detectedDisabled: [
|
|
154
|
+
...(refreshedProviderContext?.mismatches.detectedDisabled ??
|
|
155
|
+
resolution.detectedDisabled),
|
|
156
|
+
],
|
|
157
157
|
},
|
|
158
|
-
activeAdapters:
|
|
158
|
+
activeAdapters: refreshedProviderContext
|
|
159
|
+
? refreshedProviderContext.registrations
|
|
160
|
+
.map(({ adapter }) => adapter)
|
|
161
|
+
.filter(({ name }) => refreshedProviderContext.activeProviders.includes(name))
|
|
162
|
+
: resolution.activeAdapters,
|
|
159
163
|
};
|
|
160
164
|
}
|
|
161
165
|
/**
|
|
@@ -188,11 +192,53 @@ async function computePlans(context, dependencies, canonicalFilter) {
|
|
|
188
192
|
const scopeRoot = await dependencies.resolveScopeRoot(scope, context);
|
|
189
193
|
const manifestPath = join(scopeRoot, '.oat', 'sync', 'manifest.json');
|
|
190
194
|
const configPath = join(scopeRoot, '.oat', 'sync', 'config.json');
|
|
191
|
-
const [manifest, config
|
|
195
|
+
const [manifest, config] = await Promise.all([
|
|
192
196
|
dependencies.loadManifest(manifestPath),
|
|
193
197
|
dependencies.loadSyncConfig(configPath),
|
|
194
|
-
dependencies.scanCanonical(scopeRoot, scope),
|
|
195
198
|
]);
|
|
199
|
+
const providerContext = dependencies.resolveProviderScopeContext
|
|
200
|
+
? await dependencies.resolveProviderScopeContext({
|
|
201
|
+
scope,
|
|
202
|
+
scopeRoot,
|
|
203
|
+
config,
|
|
204
|
+
})
|
|
205
|
+
: undefined;
|
|
206
|
+
const adapters = providerContext
|
|
207
|
+
? providerContext.registrations.map(({ adapter }) => adapter)
|
|
208
|
+
: dependencies.getAdapters();
|
|
209
|
+
const initialResolution = providerContext
|
|
210
|
+
? undefined
|
|
211
|
+
: await dependencies.getConfigAwareAdapters(adapters, scopeRoot, config);
|
|
212
|
+
const initialActiveAdapters = providerContext
|
|
213
|
+
? adapters.filter(({ name }) => providerContext.activeProviders.includes(name))
|
|
214
|
+
: initialResolution.activeAdapters;
|
|
215
|
+
const resolved = await maybeResolveProviderMismatches(context, scope, scopeRoot, configPath, config, adapters, {
|
|
216
|
+
detectedUnset: [
|
|
217
|
+
...(providerContext?.mismatches.detectedUnset ??
|
|
218
|
+
initialResolution.detectedUnset),
|
|
219
|
+
],
|
|
220
|
+
detectedDisabled: [
|
|
221
|
+
...(providerContext?.mismatches.detectedDisabled ??
|
|
222
|
+
initialResolution.detectedDisabled),
|
|
223
|
+
],
|
|
224
|
+
}, dependencies, initialActiveAdapters, providerContext);
|
|
225
|
+
const scanTargets = [];
|
|
226
|
+
const seenScanTargets = new Set();
|
|
227
|
+
for (const adapter of resolved.activeAdapters) {
|
|
228
|
+
const mappings = scope === 'project' ? adapter.projectMappings : adapter.userMappings;
|
|
229
|
+
for (const mapping of mappings) {
|
|
230
|
+
const key = `${mapping.contentType}::${mapping.canonicalDir}`;
|
|
231
|
+
if (seenScanTargets.has(key)) {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
seenScanTargets.add(key);
|
|
235
|
+
scanTargets.push({
|
|
236
|
+
contentType: mapping.contentType,
|
|
237
|
+
canonicalDir: mapping.canonicalDir,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
const canonical = await dependencies.scanCanonical(scopeRoot, scope, scanTargets);
|
|
196
242
|
if (canonicalFilter?.mode === 'remove') {
|
|
197
243
|
const existing = new Set(canonical.map(({ canonicalPath }) => relative(scopeRoot, canonicalPath).replaceAll('\\', '/')));
|
|
198
244
|
const stillPresent = canonicalFilter.paths.filter((path) => existing.has(path));
|
|
@@ -200,12 +246,27 @@ async function computePlans(context, dependencies, canonicalFilter) {
|
|
|
200
246
|
throw new CliError(`Cannot remove canonical provider views while source exists: ${stillPresent.join(', ')}`, 1);
|
|
201
247
|
}
|
|
202
248
|
}
|
|
203
|
-
const
|
|
204
|
-
const
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
249
|
+
const activeAdapterNames = resolved.activeAdapters.map((adapter) => adapter.name);
|
|
250
|
+
const enabledExtensions = (providerContext
|
|
251
|
+
? providerContext.registrations.flatMap(({ extensions }) => extensions)
|
|
252
|
+
: dependencies.getMaterializationExtensions()).filter((extension) => activeAdapterNames.includes(extension.provider));
|
|
253
|
+
const extensionOwnedCanonicalPathsByProvider = Object.fromEntries(enabledExtensions.map(({ provider }) => [
|
|
254
|
+
provider,
|
|
255
|
+
USER_SCOPE_MANAGED_AGENT_FILES.map((name) => `.agents/agents/${name}`),
|
|
256
|
+
]));
|
|
257
|
+
const activeAdapterNameSet = new Set(activeAdapterNames);
|
|
258
|
+
const collectionAliasEligibleMappings = providerContext?.registrations.flatMap((registration) => activeAdapterNameSet.has(registration.adapter.name)
|
|
259
|
+
? registration.capabilities
|
|
260
|
+
.filter((capability) => capability.scope === scope &&
|
|
261
|
+
(capability.contentKind === 'skill' ||
|
|
262
|
+
capability.contentKind === 'agent' ||
|
|
263
|
+
capability.contentKind === 'rule') &&
|
|
264
|
+
capability.collectionAlias === 'supported')
|
|
265
|
+
.map((capability) => ({
|
|
266
|
+
provider: registration.adapter.name,
|
|
267
|
+
contentType: capability.contentKind,
|
|
268
|
+
}))
|
|
269
|
+
: []) ?? [];
|
|
209
270
|
const plan = await dependencies.computeSyncPlan({
|
|
210
271
|
canonical,
|
|
211
272
|
adapters: resolved.activeAdapters,
|
|
@@ -214,11 +275,9 @@ async function computePlans(context, dependencies, canonicalFilter) {
|
|
|
214
275
|
config: resolved.config,
|
|
215
276
|
scopeRoot,
|
|
216
277
|
allowedCanonicalPaths: canonicalFilter?.paths,
|
|
278
|
+
collectionAliasEligibleMappings,
|
|
279
|
+
...(scope === 'user' ? { extensionOwnedCanonicalPathsByProvider } : {}),
|
|
217
280
|
});
|
|
218
|
-
const activeAdapterNames = resolved.activeAdapters.map((adapter) => adapter.name);
|
|
219
|
-
const enabledExtensions = dependencies
|
|
220
|
-
.getMaterializationExtensions()
|
|
221
|
-
.filter((extension) => activeAdapterNames.includes(extension.provider));
|
|
222
281
|
const extensionCanonical = scope === 'user' && enabledExtensions.length > 0
|
|
223
282
|
? [...canonical, ...(await dependencies.scanBundledManagedAgents())]
|
|
224
283
|
: canonical;
|
|
@@ -302,6 +361,12 @@ export function createSyncCommand(overrides = {}) {
|
|
|
302
361
|
...defaultDependencies(),
|
|
303
362
|
...overrides,
|
|
304
363
|
};
|
|
364
|
+
if (overrides.resolveProviderScopeContext === undefined &&
|
|
365
|
+
(overrides.getAdapters !== undefined ||
|
|
366
|
+
overrides.getConfigAwareAdapters !== undefined ||
|
|
367
|
+
overrides.getMaterializationExtensions !== undefined)) {
|
|
368
|
+
dependencies.resolveProviderScopeContext = undefined;
|
|
369
|
+
}
|
|
305
370
|
return withScopeOption(new Command('sync'))
|
|
306
371
|
.description('Sync canonical content to provider views')
|
|
307
372
|
.option('--dry-run', 'Preview sync changes without applying')
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { CommandContext, GlobalOptions } from '../../app/command-context.js';
|
|
2
2
|
import type { MultiSelectChoice, PromptContext } from '../shared/shared.prompts.js';
|
|
3
3
|
import type { SyncConfig } from '../../config/index.js';
|
|
4
|
+
import type { CollectionProjectionPlan, SyncOperationResult } from '../../engine/engine.types.js';
|
|
5
|
+
import type { CollectionOperationResult } from '../../engine/execute-plan.js';
|
|
4
6
|
import type { CanonicalEntry, SyncPlan, SyncResult } from '../../engine/index.js';
|
|
5
7
|
import type { Manifest } from '../../manifest/index.js';
|
|
6
8
|
import type { ConfigAwareAdaptersResult, MaterializationApplyResult, MaterializationExtension, MaterializationOperation, MaterializationPlan, ProviderAdapter } from '../../providers/shared/index.js';
|
|
9
|
+
import type { MaterializationOperationResult } from '../../providers/shared/materialization-extension.js';
|
|
7
10
|
import type { ConcreteScope, Scope } from '../../shared/types.js';
|
|
8
11
|
export interface SyncProviderMismatches {
|
|
9
12
|
detectedUnset: string[];
|
|
@@ -42,14 +45,41 @@ export interface SyncSummary {
|
|
|
42
45
|
failed: number;
|
|
43
46
|
skipped: number;
|
|
44
47
|
}
|
|
48
|
+
export type CollectionProofSummary = Pick<CollectionProjectionPlan['proof'], 'status'> & {
|
|
49
|
+
reason?: Extract<CollectionProjectionPlan['proof'], {
|
|
50
|
+
status: 'ineligible';
|
|
51
|
+
}>['reason'];
|
|
52
|
+
};
|
|
53
|
+
export type CollectionOutputPlan = Omit<CollectionProjectionPlan, 'proof'> & {
|
|
54
|
+
proof: CollectionProofSummary;
|
|
55
|
+
};
|
|
56
|
+
export type SyncOutputPlan = Omit<SyncPlan, 'collections'> & {
|
|
57
|
+
collections?: CollectionOutputPlan[];
|
|
58
|
+
};
|
|
59
|
+
export interface CollectionLifecycleOutput {
|
|
60
|
+
scope: ConcreteScope;
|
|
61
|
+
provider: string;
|
|
62
|
+
contentType: CollectionProjectionPlan['contentType'];
|
|
63
|
+
action: CollectionProjectionPlan['action'];
|
|
64
|
+
ownership: CollectionProjectionPlan['ownership'];
|
|
65
|
+
canonicalDir: string;
|
|
66
|
+
providerDir: string;
|
|
67
|
+
reason: string;
|
|
68
|
+
result: {
|
|
69
|
+
status: 'planned' | CollectionOperationResult['status'];
|
|
70
|
+
reason: string;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
45
73
|
export interface SyncJsonPayload {
|
|
46
74
|
scope: Scope;
|
|
47
75
|
dryRun: boolean;
|
|
48
|
-
plans:
|
|
76
|
+
plans: SyncOutputPlan[];
|
|
77
|
+
collectionOperations: CollectionLifecycleOutput[];
|
|
49
78
|
summary: SyncSummary;
|
|
50
79
|
providerMismatches?: SyncProviderMismatches[];
|
|
51
80
|
versionSkew?: SyncVersionSkew[];
|
|
52
81
|
materializationExtensions?: MaterializationExtensionSummary[];
|
|
82
|
+
operationResults: SyncOperationResult[];
|
|
53
83
|
/** Retained for compatibility with existing Codex JSON consumers. */
|
|
54
84
|
codexExtensions?: CodexExtensionSummary[];
|
|
55
85
|
}
|
|
@@ -73,6 +103,7 @@ export interface CodexExtensionSummary {
|
|
|
73
103
|
export interface MaterializationExtensionSummary {
|
|
74
104
|
provider: string;
|
|
75
105
|
operations: MaterializationOperation[];
|
|
106
|
+
operationResults?: MaterializationOperationResult[];
|
|
76
107
|
managedEntries: string[];
|
|
77
108
|
aggregateHash: string;
|
|
78
109
|
applied?: number;
|
|
@@ -107,8 +138,14 @@ export interface SyncCommandDependencies {
|
|
|
107
138
|
config: SyncConfig;
|
|
108
139
|
scopeRoot: string;
|
|
109
140
|
allowedCanonicalPaths?: string[];
|
|
141
|
+
collectionAliasEligibleMappings?: readonly {
|
|
142
|
+
provider: string;
|
|
143
|
+
contentType: CanonicalEntry['type'];
|
|
144
|
+
}[];
|
|
110
145
|
}) => Promise<SyncPlan>;
|
|
111
|
-
executeSyncPlan: (plan: SyncPlan, manifest: Manifest, manifestPath: string) => Promise<SyncResult
|
|
146
|
+
executeSyncPlan: (plan: SyncPlan, manifest: Manifest, manifestPath: string) => Promise<SyncResult & {
|
|
147
|
+
collectionResults?: CollectionOperationResult[];
|
|
148
|
+
}>;
|
|
112
149
|
getMaterializationExtensions: () => SyncMaterializationExtension[];
|
|
113
150
|
applyMaterializationExtensionPlan: (extension: SyncMaterializationExtension, scopeRoot: string, plan: MaterializationPlan) => Promise<MaterializationApplyResult>;
|
|
114
151
|
formatSyncPlan: (plan: SyncPlan, applied: boolean) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.types.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,6BAA6B,EAAE,mBAAmB,EAAE,CAAC;IACrD,yBAAyB,EAAE,+BAA+B,EAAE,CAAC;CAC9D;AAED,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"sync.types.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CollectionOperationResult } from '../../engine/execute-plan.js';
|
|
2
|
+
import type { CollectionLifecycleOutput, ScopeSyncPlan, SyncOutputPlan } from './sync.types.js';
|
|
3
|
+
export declare function toSyncOutputPlan(scopePlan: ScopeSyncPlan): SyncOutputPlan;
|
|
4
|
+
export declare function buildCollectionLifecycle(scopePlan: ScopeSyncPlan, results?: readonly CollectionOperationResult[]): CollectionLifecycleOutput[];
|
|
5
|
+
export declare function formatCollectionLifecycle(lifecycle: readonly CollectionLifecycleOutput[]): string;
|
|
2
6
|
export declare function countPlannedOperations(scopePlans: ScopeSyncPlan[]): number;
|
|
3
7
|
//# sourceMappingURL=sync.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.utils.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.utils.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,KAAK,EACV,yBAAyB,EAEzB,aAAa,EACb,cAAc,EACf,MAAM,cAAc,CAAC;AA6BtB,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,aAAa,GAAG,cAAc,CAgBzE;AAgBD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,aAAa,EACxB,OAAO,GAAE,SAAS,yBAAyB,EAAO,GACjD,yBAAyB,EAAE,CA8B7B;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,yBAAyB,EAAE,GAC9C,MAAM,CAUR;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAmB1E"}
|
|
@@ -1,9 +1,82 @@
|
|
|
1
|
+
import { isAbsolute, relative, resolve, sep } from 'node:path';
|
|
2
|
+
const MUTATING_COLLECTION_ACTIONS = new Set([
|
|
3
|
+
'create-collection-link',
|
|
4
|
+
'adopt-collection-link',
|
|
5
|
+
'inherit-collection',
|
|
6
|
+
'detach-collection',
|
|
7
|
+
]);
|
|
8
|
+
function scopeRelativePath(scopeRoot, path) {
|
|
9
|
+
const relativePath = relative(resolve(scopeRoot), resolve(path));
|
|
10
|
+
if (relativePath === '..' ||
|
|
11
|
+
relativePath.startsWith(`..${sep}`) ||
|
|
12
|
+
isAbsolute(relativePath)) {
|
|
13
|
+
return '<outside-scope>';
|
|
14
|
+
}
|
|
15
|
+
return relativePath.replaceAll('\\', '/') || '.';
|
|
16
|
+
}
|
|
17
|
+
function proofSummary(proof) {
|
|
18
|
+
return proof.status === 'ineligible'
|
|
19
|
+
? { status: proof.status, reason: proof.reason }
|
|
20
|
+
: { status: proof.status };
|
|
21
|
+
}
|
|
22
|
+
export function toSyncOutputPlan(scopePlan) {
|
|
23
|
+
return {
|
|
24
|
+
...scopePlan.plan,
|
|
25
|
+
collections: scopePlan.plan.collections?.map((collection) => ({
|
|
26
|
+
...collection,
|
|
27
|
+
canonicalDir: scopeRelativePath(scopePlan.scopeRoot, collection.canonicalDir),
|
|
28
|
+
providerDir: scopeRelativePath(scopePlan.scopeRoot, collection.providerDir),
|
|
29
|
+
proof: proofSummary(collection.proof),
|
|
30
|
+
})),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function resultKey(result) {
|
|
34
|
+
return JSON.stringify([
|
|
35
|
+
result.provider,
|
|
36
|
+
result.contentType,
|
|
37
|
+
result.action,
|
|
38
|
+
result.ownership,
|
|
39
|
+
]);
|
|
40
|
+
}
|
|
41
|
+
export function buildCollectionLifecycle(scopePlan, results = []) {
|
|
42
|
+
const resultsByKey = new Map();
|
|
43
|
+
for (const result of results) {
|
|
44
|
+
const key = resultKey(result);
|
|
45
|
+
resultsByKey.set(key, [...(resultsByKey.get(key) ?? []), result]);
|
|
46
|
+
}
|
|
47
|
+
return (scopePlan.plan.collections ?? []).map((collection) => {
|
|
48
|
+
const matching = resultsByKey.get(resultKey(collection))?.shift();
|
|
49
|
+
return {
|
|
50
|
+
scope: scopePlan.scope,
|
|
51
|
+
provider: collection.provider,
|
|
52
|
+
contentType: collection.contentType,
|
|
53
|
+
action: collection.action,
|
|
54
|
+
ownership: collection.ownership,
|
|
55
|
+
canonicalDir: scopeRelativePath(scopePlan.scopeRoot, collection.canonicalDir),
|
|
56
|
+
providerDir: scopeRelativePath(scopePlan.scopeRoot, collection.providerDir),
|
|
57
|
+
reason: collection.reason,
|
|
58
|
+
result: {
|
|
59
|
+
status: matching?.status ?? 'planned',
|
|
60
|
+
reason: matching?.reason ?? collection.reason,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
export function formatCollectionLifecycle(lifecycle) {
|
|
66
|
+
if (lifecycle.length === 0) {
|
|
67
|
+
return '';
|
|
68
|
+
}
|
|
69
|
+
return `Collection aliases\n${lifecycle
|
|
70
|
+
.map((entry) => `- [${entry.scope}] ${entry.provider}/${entry.contentType}:${entry.action} ownership=${entry.ownership} ${entry.canonicalDir} -> ${entry.providerDir}\n reason: ${entry.reason}\n result: ${entry.result.status} — ${entry.result.reason}`)
|
|
71
|
+
.join('\n')}`;
|
|
72
|
+
}
|
|
1
73
|
export function countPlannedOperations(scopePlans) {
|
|
2
74
|
return scopePlans.reduce((total, scopePlan) => {
|
|
3
75
|
const extensionOperations = scopePlan.materializationExtensions.reduce((count, extension) => count +
|
|
4
76
|
extension.operations.filter((entry) => entry.action !== 'skip').length, 0);
|
|
5
77
|
return (total +
|
|
6
78
|
[...scopePlan.plan.entries, ...scopePlan.plan.removals].filter((entry) => entry.operation !== 'skip').length +
|
|
79
|
+
(scopePlan.plan.collections ?? []).filter((collection) => MUTATING_COLLECTION_ACTIONS.has(collection.action)).length +
|
|
7
80
|
extensionOperations);
|
|
8
81
|
}, 0);
|
|
9
82
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CommandContext } from '../../../app/command-context.js';
|
|
2
|
+
import { type PackEvidenceBlockV1 } from '../../tools/shared/format-pack-inventory.js';
|
|
2
3
|
import { type InventoryPackInput, type PackInventory } from '../../tools/shared/pack-inventory.js';
|
|
3
4
|
import type { ScanToolsOptions } from '../../tools/shared/scan-tools.js';
|
|
4
5
|
import type { ToolInfo } from '../../tools/shared/types.js';
|
|
@@ -19,6 +20,7 @@ export interface InfoToolResult {
|
|
|
19
20
|
found: boolean;
|
|
20
21
|
tool: ToolDetail | null;
|
|
21
22
|
pack: PackInventory | null;
|
|
23
|
+
packEvidence?: PackEvidenceBlockV1;
|
|
22
24
|
}
|
|
23
25
|
export declare function runInfoTool(context: CommandContext, name: string, dependencies: InfoToolDependencies): Promise<InfoToolResult>;
|
|
24
26
|
//# sourceMappingURL=info-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info-tool.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/info/info-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"info-tool.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/info/info-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAML,KAAK,mBAAmB,EACzB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,gBAAgB,EAAE,CAChB,KAAK,EAAE,SAAS,GAAG,MAAM,EACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,aAAa,EAAE,CACb,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC,CAuGzB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveConcreteScopes } from '../../shared/shared.utils.js';
|
|
2
|
-
import { formatPackInventoryDetails } from '../../tools/shared/format-pack-inventory.js';
|
|
2
|
+
import { formatPackEvidenceDetails, formatPackInventoryDetails, packEvidenceBlock, projectRenderablePackEvidence, unavailablePackEvidence, } from '../../tools/shared/format-pack-inventory.js';
|
|
3
3
|
import { inventoryPack, } from '../../tools/shared/pack-inventory.js';
|
|
4
4
|
import { PACK_MANIFEST } from '../../tools/shared/pack-manifest.js';
|
|
5
5
|
export async function runInfoTool(context, name, dependencies) {
|
|
@@ -10,23 +10,45 @@ export async function runInfoTool(context, name, dependencies) {
|
|
|
10
10
|
for (const scope of scopes) {
|
|
11
11
|
roots[scope] = await dependencies.resolveScopeRoot(scope, context.cwd, context.home);
|
|
12
12
|
}
|
|
13
|
+
const packRoots = {
|
|
14
|
+
projectRoot: roots.project,
|
|
15
|
+
userRoot: roots.user,
|
|
16
|
+
};
|
|
13
17
|
const packName = PACK_MANIFEST.find(({ name: candidate }) => candidate === name)?.name;
|
|
14
18
|
if (packName) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
let pack = null;
|
|
20
|
+
let evidence;
|
|
21
|
+
try {
|
|
22
|
+
pack = await (dependencies.inventoryPack ?? inventoryPack)({
|
|
23
|
+
pack: packName,
|
|
24
|
+
assetsRoot,
|
|
25
|
+
projectRoot: roots.project,
|
|
26
|
+
userRoot: roots.user,
|
|
27
|
+
});
|
|
28
|
+
evidence = projectRenderablePackEvidence(pack, packRoots);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
evidence = unavailablePackEvidence({
|
|
32
|
+
pack: packName,
|
|
33
|
+
scopes,
|
|
34
|
+
reason: error instanceof Error ? error.message : String(error),
|
|
35
|
+
roots: packRoots,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const packEvidence = packEvidenceBlock([evidence]);
|
|
21
39
|
if (context.json)
|
|
22
|
-
logger.json({ tool: null, pack });
|
|
40
|
+
logger.json({ tool: null, pack, packEvidence });
|
|
23
41
|
else {
|
|
24
|
-
logger.info(
|
|
25
|
-
|
|
26
|
-
|
|
42
|
+
logger.info(packName);
|
|
43
|
+
if (pack) {
|
|
44
|
+
logger.info(` Placement: ${pack.placement}`);
|
|
45
|
+
for (const line of formatPackInventoryDetails(pack))
|
|
46
|
+
logger.info(line);
|
|
47
|
+
}
|
|
48
|
+
for (const line of formatPackEvidenceDetails(evidence))
|
|
27
49
|
logger.info(line);
|
|
28
50
|
}
|
|
29
|
-
return { found: true, tool: null, pack };
|
|
51
|
+
return { found: true, tool: null, pack, packEvidence };
|
|
30
52
|
}
|
|
31
53
|
for (const scope of scopes) {
|
|
32
54
|
const scopeRoot = roots[scope];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/install/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/install/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,qBAAqB,EAE3B,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBzC,wBAAgB,yBAAyB,CACvC,gBAAgB,GAAE,oBAA8C,EAChE,aAAa,GAAE,OAAO,CAAC,qBAAqB,CAAM,EAClD,iBAAiB,CAAC,EAAE,MAAM,OAAO,GAChC,OAAO,CAyDT"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
2
|
import { buildCommandContext } from '../../../app/command-context.js';
|
|
3
|
-
import { consumeInitToolsRunMetadata, createInitToolsCommand, } from '../../init/tools/index.js';
|
|
3
|
+
import { consumeInitToolsRunMetadata, createInitToolsCommand, wasInstallSyncHandled, } from '../../init/tools/index.js';
|
|
4
|
+
import { withProjectGuidanceOptions } from '../../init/tools/project-guidance.js';
|
|
4
5
|
import { withScopeOption } from '../../shared/scope-option.js';
|
|
5
6
|
import { readGlobalOptions, resolveConcreteScopes, } from '../../shared/shared.utils.js';
|
|
6
7
|
import { autoSync, } from '../../tools/shared/auto-sync.js';
|
|
@@ -28,22 +29,37 @@ const defaultSyncDependencies = {
|
|
|
28
29
|
},
|
|
29
30
|
};
|
|
30
31
|
export function createToolsInstallCommand(syncDependencies = defaultSyncDependencies, initOverrides = {}, createBaseCommand) {
|
|
32
|
+
let syncEnabled = true;
|
|
33
|
+
const buildContext = initOverrides.buildCommandContext ?? buildCommandContext;
|
|
34
|
+
const effectiveOverrides = {
|
|
35
|
+
...initOverrides,
|
|
36
|
+
syncAfterInstall: async (scopes, context, installedCanonicalPaths) => syncEnabled
|
|
37
|
+
? autoSync(scopes, context.cwd, context.home, context.logger, syncDependencies, { installedCanonicalPaths })
|
|
38
|
+
: { synced: false, scopes: [], error: null },
|
|
39
|
+
};
|
|
31
40
|
const cmd = createBaseCommand === undefined
|
|
32
|
-
? createInitToolsCommand(
|
|
41
|
+
? createInitToolsCommand(effectiveOverrides)
|
|
33
42
|
: createBaseCommand();
|
|
34
43
|
cmd.name('install');
|
|
35
44
|
withScopeOption(cmd);
|
|
45
|
+
withProjectGuidanceOptions(cmd);
|
|
36
46
|
cmd.option('--no-sync', 'Skip auto-sync after install');
|
|
47
|
+
cmd.hook('preAction', (thisCommand) => {
|
|
48
|
+
syncEnabled = thisCommand.opts().sync !== false;
|
|
49
|
+
});
|
|
37
50
|
cmd.hook('postAction', async (thisCommand, actionCommand) => {
|
|
38
51
|
if (process.exitCode !== 0 && process.exitCode !== undefined)
|
|
39
52
|
return;
|
|
53
|
+
if (wasInstallSyncHandled(actionCommand))
|
|
54
|
+
return;
|
|
40
55
|
const opts = thisCommand.opts();
|
|
41
56
|
if (opts.sync === false)
|
|
42
57
|
return;
|
|
43
58
|
const globalOptions = readGlobalOptions(actionCommand);
|
|
44
|
-
const buildContext = initOverrides.buildCommandContext ?? buildCommandContext;
|
|
45
59
|
const context = buildContext(globalOptions);
|
|
46
60
|
const metadata = consumeInitToolsRunMetadata();
|
|
61
|
+
if (metadata?.syncHandled)
|
|
62
|
+
return;
|
|
47
63
|
const scopes = metadata === null
|
|
48
64
|
? resolveConcreteScopes(context.scope)
|
|
49
65
|
: metadata.affectedScopes;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CommandContext } from '../../../app/command-context.js';
|
|
2
|
+
import { type PackEvidenceBlockV1 } from '../../tools/shared/format-pack-inventory.js';
|
|
2
3
|
import { type InventoryPackInput, type PackInventory } from '../../tools/shared/pack-inventory.js';
|
|
3
4
|
import type { ScanToolsOptions } from '../../tools/shared/scan-tools.js';
|
|
4
5
|
import type { ToolInfo } from '../../tools/shared/types.js';
|
|
@@ -11,6 +12,7 @@ export interface ListToolsDependencies {
|
|
|
11
12
|
export interface ListToolsResult {
|
|
12
13
|
tools: ToolInfo[];
|
|
13
14
|
packs: PackInventory[];
|
|
15
|
+
packEvidence: PackEvidenceBlockV1;
|
|
14
16
|
}
|
|
15
17
|
export declare function runListTools(context: CommandContext, dependencies: ListToolsDependencies): Promise<ListToolsResult>;
|
|
16
18
|
//# sourceMappingURL=list-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-tools.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/list/list-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-tools.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/list/list-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAML,KAAK,mBAAmB,EACzB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,gBAAgB,EAAE,CAChB,KAAK,EAAE,SAAS,GAAG,MAAM,EACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,YAAY,EAAE,mBAAmB,CAAC;CACnC;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,eAAe,CAAC,CAkI1B"}
|