@open-agent-toolkit/cli 0.0.34 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/assets/docs/cli-utilities/tool-packs.md +3 -0
  2. package/assets/docs/provider-sync/manifest-and-drift.md +2 -0
  3. package/assets/public-package-versions.json +4 -4
  4. package/dist/commands/init/tools/core/index.d.ts.map +1 -1
  5. package/dist/commands/init/tools/core/index.js +7 -1
  6. package/dist/commands/init/tools/docs/index.d.ts.map +1 -1
  7. package/dist/commands/init/tools/docs/index.js +4 -2
  8. package/dist/commands/init/tools/ideas/index.d.ts.map +1 -1
  9. package/dist/commands/init/tools/ideas/index.js +8 -2
  10. package/dist/commands/init/tools/index.d.ts.map +1 -1
  11. package/dist/commands/init/tools/index.js +3 -1
  12. package/dist/commands/init/tools/project-management/index.d.ts.map +1 -1
  13. package/dist/commands/init/tools/project-management/index.js +6 -0
  14. package/dist/commands/init/tools/research/index.d.ts.map +1 -1
  15. package/dist/commands/init/tools/research/index.js +8 -3
  16. package/dist/commands/init/tools/utility/index.d.ts.map +1 -1
  17. package/dist/commands/init/tools/utility/index.js +4 -2
  18. package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
  19. package/dist/commands/init/tools/workflows/index.js +8 -2
  20. package/dist/commands/sync/index.d.ts.map +1 -1
  21. package/dist/commands/sync/index.js +27 -5
  22. package/dist/commands/sync/sync.types.d.ts +1 -0
  23. package/dist/commands/sync/sync.types.d.ts.map +1 -1
  24. package/dist/commands/tools/install/index.d.ts +1 -1
  25. package/dist/commands/tools/install/index.d.ts.map +1 -1
  26. package/dist/commands/tools/install/index.js +17 -5
  27. package/dist/commands/tools/shared/auto-sync.d.ts +4 -1
  28. package/dist/commands/tools/shared/auto-sync.d.ts.map +1 -1
  29. package/dist/commands/tools/shared/auto-sync.js +7 -2
  30. package/dist/commands/tools/shared/install-sync-context.d.ts +9 -0
  31. package/dist/commands/tools/shared/install-sync-context.d.ts.map +1 -0
  32. package/dist/commands/tools/shared/install-sync-context.js +45 -0
  33. package/dist/engine/compute-plan.d.ts +2 -1
  34. package/dist/engine/compute-plan.d.ts.map +1 -1
  35. package/dist/engine/compute-plan.js +8 -1
  36. package/package.json +2 -2
@@ -77,6 +77,7 @@ Key behavior:
77
77
  - Records installed pack state in shared repo config as `tools.<pack>: true` so other OAT workflows can detect installed capabilities without relying on filesystem heuristics
78
78
  - Interactive runs can prompt to update selected outdated skills
79
79
  - Auto-sync runs automatically after successful install (provider views are updated)
80
+ - Install-triggered auto-sync limits removal planning to the canonical entries from the pack that was just installed, so stale manifest drift in unrelated packs does not delete other provider views
80
81
  - Use `--no-sync` to skip auto-sync
81
82
 
82
83
  ### `oat tools update`
@@ -164,6 +165,8 @@ All mutation commands (`install`, `update`, `remove`) automatically run `oat syn
164
165
 
165
166
  Use `--no-sync` on any mutation command to skip this step.
166
167
 
168
+ For `oat tools install`, the follow-up sync still refreshes provider views immediately, but its removal pass is scoped to the canonical entries that were just installed. This avoids deleting unrelated provider views when a worktree has stale manifest entries for packs whose canonical content is absent locally.
169
+
167
170
  ## Legacy commands
168
171
 
169
172
  ### `oat init tools`
@@ -26,6 +26,8 @@ Tracks managed mappings so the CLI can:
26
26
  - avoid deleting unmanaged provider content
27
27
  - execute scoped removals only for managed entries
28
28
 
29
+ Install-triggered auto-sync narrows that removal scope further: after `oat tools install <pack>`, the follow-up sync only plans removals for canonical entries from the installed pack. This protects unrelated provider views if the current worktree has stale manifest entries for other packs whose canonical assets are missing locally.
30
+
29
31
  For transformed mappings such as project-scoped rules, the manifest stores hashes for the rendered provider output that was actually written, not the canonical source markdown. This keeps drift detection aligned with the on-disk managed file.
30
32
 
31
33
  ## Drift states
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.0.34",
3
- "docs-config": "0.0.34",
4
- "docs-theme": "0.0.34",
5
- "docs-transforms": "0.0.34"
2
+ "cli": "0.0.35",
3
+ "docs-config": "0.0.35",
4
+ "docs-theme": "0.0.35",
5
+ "docs-transforms": "0.0.35"
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,WAAW,EAEX,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAMxB,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,gBAAgB,EAAE,CAChB,KAAK,EAAE,SAAS,GAAG,MAAM,EACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,KACT,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC1E;AAmED,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,wBAAgB,0BAA0B,CACxC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,WAAW,EAEX,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAMxB,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,gBAAgB,EAAE,CAChB,KAAK,EAAE,SAAS,GAAG,MAAM,EACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,KACT,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC1E;AAqED,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,wBAAgB,0BAA0B,CACxC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAkBT"}
@@ -1,5 +1,6 @@
1
1
  import { buildCommandContext, } from '../../../../app/command-context.js';
2
2
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
3
+ import { canonicalPathsForPack, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
3
4
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
4
5
  import { resolveScopeRoot } from '../../../../fs/paths.js';
5
6
  import { Command } from 'commander';
@@ -39,6 +40,7 @@ async function runInitToolsCore(context, options, dependencies) {
39
40
  });
40
41
  reportSuccess(context, targetRoot, result);
41
42
  process.exitCode = 0;
43
+ return true;
42
44
  }
43
45
  catch (error) {
44
46
  const message = error instanceof Error ? error.message : String(error);
@@ -49,6 +51,7 @@ async function runInitToolsCore(context, options, dependencies) {
49
51
  context.logger.error(message);
50
52
  }
51
53
  process.exitCode = 1;
54
+ return false;
52
55
  }
53
56
  }
54
57
  export { CORE_SKILLS };
@@ -62,6 +65,9 @@ export function createInitToolsCoreCommand(overrides = {}) {
62
65
  .option('--force', 'Overwrite existing files where applicable')
63
66
  .action(async (options, command) => {
64
67
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
65
- await runInitToolsCore(context, options, dependencies);
68
+ const didInstall = await runInitToolsCore(context, options, dependencies);
69
+ if (didInstall) {
70
+ setInstalledCanonicalPaths(command, canonicalPathsForPack('core'));
71
+ }
66
72
  });
67
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/docs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAMxB,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzE,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAqID,wBAAgB,0BAA0B,CACxC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/docs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAMxB,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzE,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAuID,wBAAgB,0BAA0B,CACxC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAeT"}
@@ -1,6 +1,7 @@
1
1
  import { buildCommandContext, } from '../../../../app/command-context.js';
2
2
  import { confirmAction, selectManyWithAbort, } from '../../../shared/shared.prompts.js';
3
3
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
4
+ import { canonicalSkillPaths, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
4
5
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
5
6
  import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
6
7
  import { Command } from 'commander';
@@ -37,7 +38,7 @@ function reportSuccess(context, scope, targetRoot, assetsRoot, selectedSkills, r
37
38
  context.logger.info(`Scripts: copied=${result.copiedScripts.length}, updated=${result.updatedScripts.length}, skipped=${result.skippedScripts.length}`);
38
39
  context.logger.info(`Run: oat sync --scope ${scope}`);
39
40
  }
40
- async function runInitToolsDocs(context, options, dependencies) {
41
+ async function runInitToolsDocs(context, options, dependencies, command) {
41
42
  try {
42
43
  const scope = resolveScope(context);
43
44
  const targetRoot = scope === 'project'
@@ -81,6 +82,7 @@ async function runInitToolsDocs(context, options, dependencies) {
81
82
  skills: selectedSkills,
82
83
  force: options.force,
83
84
  });
85
+ setInstalledCanonicalPaths(command, canonicalSkillPaths(selectedSkills));
84
86
  reportSuccess(context, scope, targetRoot, assetsRoot, selectedSkills, result);
85
87
  process.exitCode = 0;
86
88
  }
@@ -105,6 +107,6 @@ export function createInitToolsDocsCommand(overrides = {}) {
105
107
  .option('--force', 'Overwrite existing files where applicable')
106
108
  .action(async (options, command) => {
107
109
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
108
- await runInitToolsDocs(context, options, dependencies);
110
+ await runInitToolsDocs(context, options, dependencies, command);
109
111
  });
110
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/ideas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAMzB,KAAK,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,UAAU,0BAA0B;IAClC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5E,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAqGD,wBAAgB,2BAA2B,CACzC,SAAS,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAClD,OAAO,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/ideas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAMzB,KAAK,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,UAAU,0BAA0B;IAClC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5E,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAuGD,wBAAgB,2BAA2B,CACzC,SAAS,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAClD,OAAO,CAsBT"}
@@ -1,6 +1,7 @@
1
1
  import { buildCommandContext, } from '../../../../app/command-context.js';
2
2
  import { confirmAction, } from '../../../shared/shared.prompts.js';
3
3
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
4
+ import { canonicalPathsForPack, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
4
5
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
5
6
  import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
6
7
  import { Command } from 'commander';
@@ -56,7 +57,7 @@ async function runInitToolsIdeas(context, options, dependencies) {
56
57
  context.logger.info('Cancelled: no files were overwritten.');
57
58
  }
58
59
  process.exitCode = 0;
59
- return;
60
+ return false;
60
61
  }
61
62
  }
62
63
  const assetsRoot = await dependencies.resolveAssetsRoot();
@@ -67,6 +68,7 @@ async function runInitToolsIdeas(context, options, dependencies) {
67
68
  });
68
69
  reportSuccess(context, scope, targetRoot, assetsRoot, result);
69
70
  process.exitCode = 0;
71
+ return true;
70
72
  }
71
73
  catch (error) {
72
74
  const message = error instanceof Error ? error.message : String(error);
@@ -77,6 +79,7 @@ async function runInitToolsIdeas(context, options, dependencies) {
77
79
  context.logger.error(message);
78
80
  }
79
81
  process.exitCode = 1;
82
+ return false;
80
83
  }
81
84
  }
82
85
  export function createInitToolsIdeasCommand(overrides = {}) {
@@ -89,6 +92,9 @@ export function createInitToolsIdeasCommand(overrides = {}) {
89
92
  .option('--force', 'Overwrite existing files where applicable')
90
93
  .action(async (options, command) => {
91
94
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
92
- await runInitToolsIdeas(context, options, dependencies);
95
+ const didInstall = await runInitToolsIdeas(context, options, dependencies);
96
+ if (didInstall) {
97
+ setInstalledCanonicalPaths(command, canonicalPathsForPack('ideas'));
98
+ }
93
99
  });
94
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { addLocalPaths } from '../../local/manage.js';
6
6
  import { removeAgentsMdSection, upsertAgentsMdSection, } from '../../shared/agents-md.js';
7
7
  import { selectManyWithAbort, selectWithAbort, } from '../../shared/shared.prompts.js';
8
8
  import { readGlobalOptions } from '../../shared/shared.utils.js';
9
+ import { canonicalPathsForPacks, setInstalledCanonicalPaths, } from '../../tools/shared/install-sync-context.js';
9
10
  import { readOatConfig, resolveLocalPaths, writeOatConfig, } from '../../../config/oat-config.js';
10
11
  import { resolveAssetsRoot } from '../../../fs/assets.js';
11
12
  import { resolveProjectRoot, resolveScopeRoot } from '../../../fs/paths.js';
@@ -389,6 +390,7 @@ export function createInitToolsCommand(overrides = {}) {
389
390
  .addCommand(createInitToolsResearchCommand())
390
391
  .action(async (_options, command) => {
391
392
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
392
- await runInitTools(context, dependencies);
393
+ const selectedPacks = await runInitTools(context, dependencies);
394
+ setInstalledCanonicalPaths(command, canonicalPathsForPacks(selectedPacks));
393
395
  });
394
396
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/project-management/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACpC,MAAM,8BAA8B,CAAC;AAMtC,UAAU,sCAAsC;IAC9C,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,wBAAwB,EAAE,CACxB,OAAO,EAAE,+BAA+B,KACrC,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAC9C;AASD,wBAAgB,uCAAuC,CACrD,SAAS,GAAE,OAAO,CAAC,sCAAsC,CAAM,GAC9D,OAAO,CA0DT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/project-management/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACpC,MAAM,8BAA8B,CAAC;AAMtC,UAAU,sCAAsC;IAC9C,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,wBAAwB,EAAE,CACxB,OAAO,EAAE,+BAA+B,KACrC,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAC9C;AASD,wBAAgB,uCAAuC,CACrD,SAAS,GAAE,OAAO,CAAC,sCAAsC,CAAM,GAC9D,OAAO,CAmET"}
@@ -1,5 +1,6 @@
1
1
  import { buildCommandContext, } from '../../../../app/command-context.js';
2
2
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
3
+ import { canonicalPathsForPack, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
3
4
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
4
5
  import { resolveProjectRoot } from '../../../../fs/paths.js';
5
6
  import { Command } from 'commander';
@@ -19,6 +20,7 @@ export function createInitToolsProjectManagementCommand(overrides = {}) {
19
20
  .description('Install OAT project-management skills and templates')
20
21
  .option('--force', 'Overwrite existing files where applicable')
21
22
  .action(async (options, command) => {
23
+ let didInstall = false;
22
24
  try {
23
25
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
24
26
  const targetRoot = await dependencies.resolveProjectRoot(context.cwd);
@@ -44,6 +46,7 @@ export function createInitToolsProjectManagementCommand(overrides = {}) {
44
46
  context.logger.info(`Templates: copied=${result.copiedTemplates.length}, updated=${result.updatedTemplates.length}, skipped=${result.skippedTemplates.length}`);
45
47
  context.logger.info('Run: oat sync --scope project');
46
48
  }
49
+ didInstall = true;
47
50
  process.exitCode = 0;
48
51
  }
49
52
  catch (error) {
@@ -57,5 +60,8 @@ export function createInitToolsProjectManagementCommand(overrides = {}) {
57
60
  }
58
61
  process.exitCode = 1;
59
62
  }
63
+ if (didInstall) {
64
+ setInstalledCanonicalPaths(command, canonicalPathsForPack('project-management'));
65
+ }
60
66
  });
61
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/research/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAE3B,MAAM,oBAAoB,CAAC;AAM5B,KAAK,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;AAExC,UAAU,6BAA6B;IACrC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,CACf,OAAO,EAAE,sBAAsB,KAC5B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAqID,wBAAgB,8BAA8B,CAC5C,SAAS,GAAE,OAAO,CAAC,6BAA6B,CAAM,GACrD,OAAO,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/research/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AASzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAG3B,MAAM,oBAAoB,CAAC;AAM5B,KAAK,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;AAExC,UAAU,6BAA6B;IACrC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,CACf,OAAO,EAAE,sBAAsB,KAC5B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AA0ID,wBAAgB,8BAA8B,CAC5C,SAAS,GAAE,OAAO,CAAC,6BAA6B,CAAM,GACrD,OAAO,CAeT"}
@@ -1,10 +1,11 @@
1
1
  import { buildCommandContext, } from '../../../../app/command-context.js';
2
2
  import { confirmAction, selectManyWithAbort, } from '../../../shared/shared.prompts.js';
3
3
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
4
+ import { canonicalAgentPaths, canonicalSkillPaths, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
4
5
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
5
6
  import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
6
7
  import { Command } from 'commander';
7
- import { installResearch as defaultInstallResearch, RESEARCH_SKILLS, } from './install-research.js';
8
+ import { installResearch as defaultInstallResearch, RESEARCH_AGENTS, RESEARCH_SKILLS, } from './install-research.js';
8
9
  const DEFAULT_DEPENDENCIES = {
9
10
  buildCommandContext,
10
11
  resolveProjectRoot,
@@ -37,7 +38,7 @@ function reportSuccess(context, scope, targetRoot, assetsRoot, selectedSkills, r
37
38
  context.logger.info(`Agents: copied=${result.copiedAgents.length}, updated=${result.updatedAgents.length}, skipped=${result.skippedAgents.length}`);
38
39
  context.logger.info(`Run: oat sync --scope ${scope}`);
39
40
  }
40
- async function runInitToolsResearch(context, options, dependencies) {
41
+ async function runInitToolsResearch(context, options, dependencies, command) {
41
42
  try {
42
43
  const scope = resolveScope(context);
43
44
  const targetRoot = scope === 'project'
@@ -81,6 +82,10 @@ async function runInitToolsResearch(context, options, dependencies) {
81
82
  skills: selectedSkills,
82
83
  force: options.force,
83
84
  });
85
+ setInstalledCanonicalPaths(command, [
86
+ ...canonicalSkillPaths(selectedSkills),
87
+ ...canonicalAgentPaths(RESEARCH_AGENTS),
88
+ ]);
84
89
  reportSuccess(context, scope, targetRoot, assetsRoot, selectedSkills, result);
85
90
  process.exitCode = 0;
86
91
  }
@@ -105,6 +110,6 @@ export function createInitToolsResearchCommand(overrides = {}) {
105
110
  .option('--force', 'Overwrite existing files where applicable')
106
111
  .action(async (options, command) => {
107
112
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
108
- await runInitToolsResearch(context, options, dependencies);
113
+ await runInitToolsResearch(context, options, dependencies, command);
109
114
  });
110
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/utility/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAC;AAM3B,KAAK,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,UAAU,4BAA4B;IACpC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,cAAc,EAAE,CACd,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAkID,wBAAgB,6BAA6B,CAC3C,SAAS,GAAE,OAAO,CAAC,4BAA4B,CAAM,GACpD,OAAO,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/utility/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAC;AAM3B,KAAK,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,UAAU,4BAA4B;IACpC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,cAAc,EAAE,CACd,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAoID,wBAAgB,6BAA6B,CAC3C,SAAS,GAAE,OAAO,CAAC,4BAA4B,CAAM,GACpD,OAAO,CAeT"}
@@ -1,6 +1,7 @@
1
1
  import { buildCommandContext, } from '../../../../app/command-context.js';
2
2
  import { confirmAction, selectManyWithAbort, } from '../../../shared/shared.prompts.js';
3
3
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
4
+ import { canonicalSkillPaths, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
4
5
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
5
6
  import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
6
7
  import { Command } from 'commander';
@@ -36,7 +37,7 @@ function reportSuccess(context, scope, targetRoot, assetsRoot, selectedSkills, r
36
37
  context.logger.info(`Skills: copied=${result.copiedSkills.length}, updated=${result.updatedSkills.length}, skipped=${result.skippedSkills.length}`);
37
38
  context.logger.info(`Run: oat sync --scope ${scope}`);
38
39
  }
39
- async function runInitToolsUtility(context, options, dependencies) {
40
+ async function runInitToolsUtility(context, options, dependencies, command) {
40
41
  try {
41
42
  const scope = resolveScope(context);
42
43
  const targetRoot = scope === 'project'
@@ -80,6 +81,7 @@ async function runInitToolsUtility(context, options, dependencies) {
80
81
  skills: selectedSkills,
81
82
  force: options.force,
82
83
  });
84
+ setInstalledCanonicalPaths(command, canonicalSkillPaths(selectedSkills));
83
85
  reportSuccess(context, scope, targetRoot, assetsRoot, selectedSkills, result);
84
86
  process.exitCode = 0;
85
87
  }
@@ -104,6 +106,6 @@ export function createInitToolsUtilityCommand(overrides = {}) {
104
106
  .option('--force', 'Overwrite existing files where applicable')
105
107
  .action(async (options, command) => {
106
108
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
107
- await runInitToolsUtility(context, options, dependencies);
109
+ await runInitToolsUtility(context, options, dependencies, command);
108
110
  });
109
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAM7B,UAAU,8BAA8B;IACtC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,gBAAgB,EAAE,CAChB,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAgGD,wBAAgB,+BAA+B,CAC7C,SAAS,GAAE,OAAO,CAAC,8BAA8B,CAAM,GACtD,OAAO,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAM7B,UAAU,8BAA8B;IACtC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,gBAAgB,EAAE,CAChB,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAkGD,wBAAgB,+BAA+B,CAC7C,SAAS,GAAE,OAAO,CAAC,8BAA8B,CAAM,GACtD,OAAO,CAsBT"}
@@ -1,6 +1,7 @@
1
1
  import { buildCommandContext, } from '../../../../app/command-context.js';
2
2
  import { confirmAction, } from '../../../shared/shared.prompts.js';
3
3
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
4
+ import { canonicalPathsForPack, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
4
5
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
5
6
  import { resolveProjectRoot } from '../../../../fs/paths.js';
6
7
  import { Command } from 'commander';
@@ -46,7 +47,7 @@ async function runInitToolsWorkflows(context, options, dependencies) {
46
47
  context.logger.info('Cancelled: no files were overwritten.');
47
48
  }
48
49
  process.exitCode = 0;
49
- return;
50
+ return false;
50
51
  }
51
52
  }
52
53
  const assetsRoot = await dependencies.resolveAssetsRoot();
@@ -57,6 +58,7 @@ async function runInitToolsWorkflows(context, options, dependencies) {
57
58
  });
58
59
  reportSuccess(context, targetRoot, assetsRoot, result);
59
60
  process.exitCode = 0;
61
+ return true;
60
62
  }
61
63
  catch (error) {
62
64
  const message = error instanceof Error ? error.message : String(error);
@@ -67,6 +69,7 @@ async function runInitToolsWorkflows(context, options, dependencies) {
67
69
  context.logger.error(message);
68
70
  }
69
71
  process.exitCode = 1;
72
+ return false;
70
73
  }
71
74
  }
72
75
  export function createInitToolsWorkflowsCommand(overrides = {}) {
@@ -79,6 +82,9 @@ export function createInitToolsWorkflowsCommand(overrides = {}) {
79
82
  .option('--force', 'Overwrite existing files where applicable')
80
83
  .action(async (options, command) => {
81
84
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
82
- await runInitToolsWorkflows(context, options, dependencies);
85
+ const didInstall = await runInitToolsWorkflows(context, options, dependencies);
86
+ if (didInstall) {
87
+ setInstalledCanonicalPaths(command, canonicalPathsForPack('workflows'));
88
+ }
83
89
  });
84
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/index.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAEV,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAyRtB,wBAAgB,iBAAiB,CAC/B,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC/C,OAAO,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/index.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAI5C,OAAO,KAAK,EAEV,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAmTtB,wBAAgB,iBAAiB,CAC/B,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC/C,OAAO,CA6BT"}
@@ -5,6 +5,7 @@ import { selectManyWithAbort, } from '../shared/shared.prompts.js';
5
5
  import { readGlobalOptions, resolveConcreteScopes, } from '../shared/shared.utils.js';
6
6
  import { DEFAULT_SYNC_CONFIG, loadSyncConfig, saveSyncConfig, } from '../../config/index.js';
7
7
  import { computeSyncPlan, executeSyncPlan, scanCanonical } from '../../engine/index.js';
8
+ import { CliError } from '../../errors/index.js';
8
9
  import { resolveProjectRoot, resolveScopeRoot } from '../../fs/paths.js';
9
10
  import { loadManifest } from '../../manifest/index.js';
10
11
  import { claudeAdapter } from '../../providers/claude/index.js';
@@ -15,7 +16,7 @@ import { cursorAdapter } from '../../providers/cursor/index.js';
15
16
  import { geminiAdapter } from '../../providers/gemini/index.js';
16
17
  import { getConfigAwareAdapters, } from '../../providers/shared/index.js';
17
18
  import { formatSyncPlan } from '../../ui/output.js';
18
- import { Command } from 'commander';
19
+ import { Command, Option } from 'commander';
19
20
  import { runSyncApply } from './apply.js';
20
21
  import { runSyncDryRun } from './dry-run.js';
21
22
  function defaultDependencies() {
@@ -53,6 +54,18 @@ function defaultDependencies() {
53
54
  formatSyncPlan,
54
55
  };
55
56
  }
57
+ const INSTALL_CANONICAL_PATH_PATTERN = /^\.agents\/(skills|agents|rules)\/[^/\\]+$/;
58
+ function validateInstallCanonicalPaths(paths) {
59
+ if (!paths?.length) {
60
+ return undefined;
61
+ }
62
+ for (const path of paths) {
63
+ if (!INSTALL_CANONICAL_PATH_PATTERN.test(path)) {
64
+ throw new CliError(`Invalid --install-canonical path: ${path}`, 1);
65
+ }
66
+ }
67
+ return paths;
68
+ }
56
69
  function hasProviderMismatches(mismatches) {
57
70
  return (mismatches.detectedUnset.length > 0 ||
58
71
  mismatches.detectedDisabled.length > 0);
@@ -125,7 +138,7 @@ async function maybeResolveProviderMismatches(context, scope, scopeRoot, configP
125
138
  activeAdapters: resolution.activeAdapters,
126
139
  };
127
140
  }
128
- async function computePlans(context, dependencies) {
141
+ async function computePlans(context, dependencies, allowedRemovalCanonicalPaths) {
129
142
  const scopePlans = [];
130
143
  for (const scope of resolveConcreteScopes(context.scope)) {
131
144
  const scopeRoot = await dependencies.resolveScopeRoot(scope, context);
@@ -149,6 +162,7 @@ async function computePlans(context, dependencies) {
149
162
  scope,
150
163
  config: resolved.config,
151
164
  scopeRoot,
165
+ allowedRemovalCanonicalPaths,
152
166
  });
153
167
  let codexExtensionPlan;
154
168
  let codexExtension;
@@ -201,8 +215,8 @@ function logNonInteractiveMismatchGuidance(context, scopePlans) {
201
215
  }
202
216
  }
203
217
  }
204
- async function runSyncCommand(context, dependencies) {
205
- const scopePlans = await computePlans(context, dependencies);
218
+ async function runSyncCommand(context, dependencies, allowedRemovalCanonicalPaths) {
219
+ const scopePlans = await computePlans(context, dependencies, allowedRemovalCanonicalPaths);
206
220
  logNonInteractiveMismatchGuidance(context, scopePlans);
207
221
  if (context.dryRun) {
208
222
  runSyncDryRun(context, scopePlans, dependencies);
@@ -218,8 +232,16 @@ export function createSyncCommand(overrides = {}) {
218
232
  return new Command('sync')
219
233
  .description('Sync canonical content to provider views')
220
234
  .option('--dry-run', 'Preview sync changes without applying')
235
+ .addOption(new Option('--install-canonical <path>', 'Internal install sync filter')
236
+ .hideHelp()
237
+ .default([])
238
+ .argParser((value, previous) => [
239
+ ...(previous ?? []),
240
+ value,
241
+ ]))
221
242
  .action(async (_options, command) => {
222
243
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
223
- await runSyncCommand(context, dependencies);
244
+ const options = command.opts();
245
+ await runSyncCommand(context, dependencies, validateInstallCanonicalPaths(options.installCanonical));
224
246
  });
225
247
  }
@@ -70,6 +70,7 @@ export interface SyncCommandDependencies {
70
70
  scope: ConcreteScope;
71
71
  config: SyncConfig;
72
72
  scopeRoot: string;
73
+ allowedRemovalCanonicalPaths?: string[];
73
74
  }) => Promise<SyncPlan>;
74
75
  executeSyncPlan: (plan: SyncPlan, manifest: Manifest, manifestPath: string) => Promise<SyncResult>;
75
76
  computeCodexProjectExtensionPlan: (scopeRoot: string, canonicalEntries: CanonicalEntry[]) => Promise<CodexExtensionPlan>;
@@ -1 +1 @@
1
- {"version":3,"file":"sync.types.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.types.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { type AutoSyncDependencies } from '../../tools/shared/auto-sync.js';
2
2
  import type { Command } from 'commander';
3
- export declare function createToolsInstallCommand(syncDependencies?: AutoSyncDependencies): Command;
3
+ export declare function createToolsInstallCommand(syncDependencies?: AutoSyncDependencies, createBaseCommand?: () => Command): Command;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/install/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBzC,wBAAgB,yBAAyB,CACvC,gBAAgB,GAAE,oBAA8C,GAC/D,OAAO,CAyBT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/install/index.ts"],"names":[],"mappings":"AAQA,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,iBAAiB,GAAE,MAAM,OAAgC,GACxD,OAAO,CA2BT"}
@@ -3,10 +3,21 @@ import { buildCommandContext } from '../../../app/command-context.js';
3
3
  import { createInitToolsCommand } from '../../init/tools/index.js';
4
4
  import { readGlobalOptions, resolveConcreteScopes, } from '../../shared/shared.utils.js';
5
5
  import { autoSync, } from '../../tools/shared/auto-sync.js';
6
+ import { getInstalledCanonicalPaths as getInstallSyncCanonicalPaths } from '../../tools/shared/install-sync-context.js';
6
7
  const defaultSyncDependencies = {
7
- runSync: async ({ scope, cwd }) => {
8
+ runSync: async ({ scope, cwd, installedCanonicalPaths }) => {
9
+ const syncArgs = [
10
+ ...process.execArgv,
11
+ process.argv[1],
12
+ 'sync',
13
+ '--scope',
14
+ scope,
15
+ ];
16
+ for (const canonicalPath of installedCanonicalPaths ?? []) {
17
+ syncArgs.push('--install-canonical', canonicalPath);
18
+ }
8
19
  await new Promise((resolve, reject) => {
9
- execFile(process.execPath, [...process.execArgv, process.argv[1], 'sync', '--scope', scope], { cwd }, (error) => {
20
+ execFile(process.execPath, syncArgs, { cwd }, (error) => {
10
21
  if (error)
11
22
  reject(error);
12
23
  else
@@ -15,8 +26,8 @@ const defaultSyncDependencies = {
15
26
  });
16
27
  },
17
28
  };
18
- export function createToolsInstallCommand(syncDependencies = defaultSyncDependencies) {
19
- const cmd = createInitToolsCommand();
29
+ export function createToolsInstallCommand(syncDependencies = defaultSyncDependencies, createBaseCommand = createInitToolsCommand) {
30
+ const cmd = createBaseCommand();
20
31
  cmd.name('install');
21
32
  cmd.option('--no-sync', 'Skip auto-sync after install');
22
33
  cmd.hook('postAction', async (thisCommand, actionCommand) => {
@@ -28,7 +39,8 @@ export function createToolsInstallCommand(syncDependencies = defaultSyncDependen
28
39
  const globalOptions = readGlobalOptions(actionCommand);
29
40
  const context = buildCommandContext(globalOptions);
30
41
  const scopes = resolveConcreteScopes(context.scope);
31
- await autoSync(scopes, context.cwd, context.home, context.logger, syncDependencies);
42
+ const installedCanonicalPaths = getInstallSyncCanonicalPaths(actionCommand);
43
+ await autoSync(scopes, context.cwd, context.home, context.logger, syncDependencies, { installedCanonicalPaths });
32
44
  });
33
45
  return cmd;
34
46
  }
@@ -5,6 +5,7 @@ export interface AutoSyncDependencies {
5
5
  scope: ConcreteScope;
6
6
  cwd: string;
7
7
  home: string;
8
+ installedCanonicalPaths?: string[];
8
9
  }) => Promise<void>;
9
10
  }
10
11
  export interface AutoSyncResult {
@@ -12,5 +13,7 @@ export interface AutoSyncResult {
12
13
  scopes: ConcreteScope[];
13
14
  error: string | null;
14
15
  }
15
- export declare function autoSync(scopes: ConcreteScope[], cwd: string, home: string, logger: CliLogger, dependencies: AutoSyncDependencies): Promise<AutoSyncResult>;
16
+ export declare function autoSync(scopes: ConcreteScope[], cwd: string, home: string, logger: CliLogger, dependencies: AutoSyncDependencies, options?: {
17
+ installedCanonicalPaths?: string[];
18
+ }): Promise<AutoSyncResult>;
16
19
  //# sourceMappingURL=auto-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-sync.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/shared/auto-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,CAAC,OAAO,EAAE;QACjB,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,cAAc,CAAC,CAgBzB"}
1
+ {"version":3,"file":"auto-sync.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/shared/auto-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,CAAC,OAAO,EAAE;QACjB,KAAK,EAAE,aAAa,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;KACpC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,oBAAoB,EAClC,OAAO,CAAC,EAAE;IAAE,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/C,OAAO,CAAC,cAAc,CAAC,CAqBzB"}
@@ -1,10 +1,15 @@
1
- export async function autoSync(scopes, cwd, home, logger, dependencies) {
1
+ export async function autoSync(scopes, cwd, home, logger, dependencies, options) {
2
2
  if (scopes.length === 0) {
3
3
  return { synced: false, scopes: [], error: null };
4
4
  }
5
5
  try {
6
6
  for (const scope of scopes) {
7
- await dependencies.runSync({ scope, cwd, home });
7
+ await dependencies.runSync({
8
+ scope,
9
+ cwd,
10
+ home,
11
+ installedCanonicalPaths: options?.installedCanonicalPaths,
12
+ });
8
13
  }
9
14
  logger.info('Auto-sync completed.');
10
15
  return { synced: true, scopes, error: null };
@@ -0,0 +1,9 @@
1
+ import type { PackName } from '../../tools/shared/types.js';
2
+ import type { Command } from 'commander';
3
+ export declare function canonicalSkillPaths(skillNames: readonly string[]): string[];
4
+ export declare function canonicalAgentPaths(agentNames: readonly string[]): string[];
5
+ export declare function canonicalPathsForPack(pack: PackName): string[];
6
+ export declare function canonicalPathsForPacks(packs: readonly PackName[]): string[];
7
+ export declare function setInstalledCanonicalPaths(command: Command, canonicalPaths: readonly string[]): void;
8
+ export declare function getInstalledCanonicalPaths(command: Command): string[];
9
+ //# sourceMappingURL=install-sync-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-sync-context.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/shared/install-sync-context.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAI3E;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAI3E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAuB9D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,EAAE,CAI3E;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,SAAS,MAAM,EAAE,GAChC,IAAI,CAMN;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAGrE"}
@@ -0,0 +1,45 @@
1
+ import { CORE_SKILLS, DOCS_SKILLS, IDEA_SKILLS, PROJECT_MANAGEMENT_SKILLS, RESEARCH_AGENTS, RESEARCH_SKILLS, UTILITY_SKILLS, WORKFLOW_AGENTS, WORKFLOW_SKILLS, } from '../../init/tools/shared/skill-manifest.js';
2
+ const INSTALL_SYNC_CANONICAL_PATHS = Symbol('oat.installSyncCanonicalPaths');
3
+ function uniqueCanonicalPaths(paths) {
4
+ return [...new Set(paths)];
5
+ }
6
+ export function canonicalSkillPaths(skillNames) {
7
+ return uniqueCanonicalPaths(skillNames.map((skillName) => `.agents/skills/${skillName}`));
8
+ }
9
+ export function canonicalAgentPaths(agentNames) {
10
+ return uniqueCanonicalPaths(agentNames.map((agentName) => `.agents/agents/${agentName}`));
11
+ }
12
+ export function canonicalPathsForPack(pack) {
13
+ switch (pack) {
14
+ case 'core':
15
+ return canonicalSkillPaths(CORE_SKILLS);
16
+ case 'ideas':
17
+ return canonicalSkillPaths(IDEA_SKILLS);
18
+ case 'docs':
19
+ return canonicalSkillPaths(DOCS_SKILLS);
20
+ case 'workflows':
21
+ return uniqueCanonicalPaths([
22
+ ...canonicalSkillPaths(WORKFLOW_SKILLS),
23
+ ...canonicalAgentPaths(WORKFLOW_AGENTS),
24
+ ]);
25
+ case 'utility':
26
+ return canonicalSkillPaths(UTILITY_SKILLS);
27
+ case 'project-management':
28
+ return canonicalSkillPaths(PROJECT_MANAGEMENT_SKILLS);
29
+ case 'research':
30
+ return uniqueCanonicalPaths([
31
+ ...canonicalSkillPaths(RESEARCH_SKILLS),
32
+ ...canonicalAgentPaths(RESEARCH_AGENTS),
33
+ ]);
34
+ }
35
+ }
36
+ export function canonicalPathsForPacks(packs) {
37
+ return uniqueCanonicalPaths(packs.flatMap((pack) => canonicalPathsForPack(pack)));
38
+ }
39
+ export function setInstalledCanonicalPaths(command, canonicalPaths) {
40
+ Reflect.set(command, INSTALL_SYNC_CANONICAL_PATHS, uniqueCanonicalPaths(canonicalPaths));
41
+ }
42
+ export function getInstalledCanonicalPaths(command) {
43
+ const value = Reflect.get(command, INSTALL_SYNC_CANONICAL_PATHS);
44
+ return Array.isArray(value) ? uniqueCanonicalPaths(value) : [];
45
+ }
@@ -10,7 +10,8 @@ interface ComputeSyncPlanArgs {
10
10
  scope: EngineScope;
11
11
  config: SyncConfig;
12
12
  scopeRoot?: string;
13
+ allowedRemovalCanonicalPaths?: string[];
13
14
  }
14
- export declare function computeSyncPlan({ canonical, adapters, manifest, scope, config, scopeRoot: explicitScopeRoot, }: ComputeSyncPlanArgs): Promise<SyncPlan>;
15
+ export declare function computeSyncPlan({ canonical, adapters, manifest, scope, config, scopeRoot: explicitScopeRoot, allowedRemovalCanonicalPaths, }: ComputeSyncPlanArgs): Promise<SyncPlan>;
15
16
  export {};
16
17
  //# sourceMappingURL=compute-plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compute-plan.d.ts","sourceRoot":"","sources":["../../src/engine/compute-plan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAIvE,OAAO,KAAK,EACV,WAAW,EAEX,QAAQ,EAET,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,UAAU,mBAAmB;IAC3B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoPD,wBAAsB,eAAe,CAAC,EACpC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EAAE,iBAAiB,GAC7B,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyGzC"}
1
+ {"version":3,"file":"compute-plan.d.ts","sourceRoot":"","sources":["../../src/engine/compute-plan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAIvE,OAAO,KAAK,EACV,WAAW,EAEX,QAAQ,EAET,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,UAAU,mBAAmB;IAC3B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;CACzC;AAoPD,wBAAsB,eAAe,CAAC,EACpC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EAAE,iBAAiB,EAC5B,4BAA4B,GAC7B,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsHzC"}
@@ -168,12 +168,15 @@ function resolveScopeRoot(canonical, explicitScopeRoot) {
168
168
  function entryContentTypeMatches(entry, contentType) {
169
169
  return entry.type === contentType;
170
170
  }
171
- export async function computeSyncPlan({ canonical, adapters, manifest, scope, config, scopeRoot: explicitScopeRoot, }) {
171
+ export async function computeSyncPlan({ canonical, adapters, manifest, scope, config, scopeRoot: explicitScopeRoot, allowedRemovalCanonicalPaths, }) {
172
172
  const entries = [];
173
173
  const removals = [];
174
174
  const scopeRoot = resolveScopeRoot(canonical, explicitScopeRoot);
175
175
  const seenCanonicalKeys = new Set();
176
176
  const activeProviderNames = new Set();
177
+ const removalFilter = allowedRemovalCanonicalPaths
178
+ ? new Set(allowedRemovalCanonicalPaths.map((canonicalPath) => normalize(canonicalPath)))
179
+ : null;
177
180
  for (const adapter of adapters) {
178
181
  for (const mapping of getSyncMappings(adapter, scope)) {
179
182
  const mappingStrategy = resolveStrategy(adapter, config, Boolean(mapping.transformCanonical));
@@ -228,6 +231,10 @@ export async function computeSyncPlan({ canonical, adapters, manifest, scope, co
228
231
  if (seenCanonicalKeys.has(canonicalKey)) {
229
232
  continue;
230
233
  }
234
+ if (removalFilter &&
235
+ !removalFilter.has(normalize(manifestEntry.canonicalPath))) {
236
+ continue;
237
+ }
231
238
  removals.push(createRemovalEntry(manifestEntry, scopeRoot));
232
239
  }
233
240
  return { scope, entries, removals };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-agent-toolkit/cli",
3
- "version": "0.0.34",
3
+ "version": "0.0.35",
4
4
  "private": false,
5
5
  "description": "Open Agent Toolkit CLI",
6
6
  "homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
@@ -33,7 +33,7 @@
33
33
  "ora": "^9.0.0",
34
34
  "yaml": "2.8.2",
35
35
  "zod": "^3.25.76",
36
- "@open-agent-toolkit/control-plane": "0.0.34"
36
+ "@open-agent-toolkit/control-plane": "0.0.35"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/node": "^22.10.0",