@open-agent-toolkit/cli 0.2.51 → 0.2.53

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 (218) hide show
  1. package/assets/bundle-metadata.json +1 -1
  2. package/assets/docs/cli-utilities/bootstrap.md +6 -2
  3. package/assets/docs/cli-utilities/tool-packs.md +87 -33
  4. package/assets/docs/provider-sync/commands.md +30 -2
  5. package/assets/docs/provider-sync/config.md +19 -0
  6. package/assets/docs/provider-sync/manifest-and-drift.md +37 -0
  7. package/assets/docs/provider-sync/providers.md +69 -2
  8. package/assets/docs/provider-sync/scope-and-surface.md +44 -0
  9. package/assets/docs/reference/cli-reference.md +1 -0
  10. package/assets/docs/reference/oat-directory-structure.md +11 -4
  11. package/assets/docs/workflows/projects/evidence-layers.md +110 -1
  12. package/assets/docs/workflows/projects/implementation-execution.md +13 -0
  13. package/assets/docs/workflows/projects/orchestration-model.md +18 -0
  14. package/assets/public-package-versions.json +4 -4
  15. package/assets/skills/oat-dispatch-subagents/SKILL.md +57 -1
  16. package/assets/skills/oat-dispatch-subagents/references/record-schema.md +77 -1
  17. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +1 -1
  18. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +24 -1
  19. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +1 -1
  20. package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +11 -0
  21. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +1 -1
  22. package/assets/skills/oat-project-plan-writing/SKILL.md +12 -1
  23. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +1 -1
  24. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +1 -1
  25. package/assets/skills/oat-project-review-provide/SKILL.md +12 -1
  26. package/assets/skills/oat-project-review-provide-remote/SKILL.md +12 -1
  27. package/dist/agents/canonical/index.d.ts +2 -0
  28. package/dist/agents/canonical/index.d.ts.map +1 -1
  29. package/dist/agents/canonical/index.js +1 -0
  30. package/dist/agents/canonical/resolve.d.ts +45 -0
  31. package/dist/agents/canonical/resolve.d.ts.map +1 -0
  32. package/dist/agents/canonical/resolve.js +175 -0
  33. package/dist/commands/decision/agents-guidance.d.ts +2 -2
  34. package/dist/commands/decision/agents-guidance.d.ts.map +1 -1
  35. package/dist/commands/decision/agents-guidance.js +1 -4
  36. package/dist/commands/decision/index.d.ts.map +1 -1
  37. package/dist/commands/decision/index.js +25 -6
  38. package/dist/commands/docs/init/index.d.ts +7 -1
  39. package/dist/commands/docs/init/index.d.ts.map +1 -1
  40. package/dist/commands/docs/init/index.js +53 -20
  41. package/dist/commands/doctor/index.d.ts +8 -2
  42. package/dist/commands/doctor/index.d.ts.map +1 -1
  43. package/dist/commands/doctor/index.js +157 -46
  44. package/dist/commands/init/index.d.ts +8 -3
  45. package/dist/commands/init/index.d.ts.map +1 -1
  46. package/dist/commands/init/index.js +66 -28
  47. package/dist/commands/init/tools/index.d.ts +12 -12
  48. package/dist/commands/init/tools/index.d.ts.map +1 -1
  49. package/dist/commands/init/tools/index.js +430 -99
  50. package/dist/commands/init/tools/install-state.d.ts +2 -0
  51. package/dist/commands/init/tools/install-state.d.ts.map +1 -1
  52. package/dist/commands/init/tools/install-state.js +11 -0
  53. package/dist/commands/init/tools/project-guidance.d.ts +49 -0
  54. package/dist/commands/init/tools/project-guidance.d.ts.map +1 -0
  55. package/dist/commands/init/tools/project-guidance.js +144 -0
  56. package/dist/commands/init/tools/workflows/index.d.ts +7 -0
  57. package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
  58. package/dist/commands/init/tools/workflows/index.js +160 -7
  59. package/dist/commands/pjm/index.d.ts.map +1 -1
  60. package/dist/commands/pjm/index.js +28 -3
  61. package/dist/commands/pjm/init.d.ts +5 -0
  62. package/dist/commands/pjm/init.d.ts.map +1 -1
  63. package/dist/commands/pjm/init.js +19 -3
  64. package/dist/commands/project/dispatch/index.d.ts +10 -0
  65. package/dist/commands/project/dispatch/index.d.ts.map +1 -0
  66. package/dist/commands/project/dispatch/index.js +137 -0
  67. package/dist/commands/project/dispatch/record.d.ts +91 -0
  68. package/dist/commands/project/dispatch/record.d.ts.map +1 -0
  69. package/dist/commands/project/dispatch/record.js +402 -0
  70. package/dist/commands/project/index.d.ts.map +1 -1
  71. package/dist/commands/project/index.js +2 -0
  72. package/dist/commands/providers/inspect/inspect.d.ts +8 -1
  73. package/dist/commands/providers/inspect/inspect.d.ts.map +1 -1
  74. package/dist/commands/providers/inspect/inspect.js +146 -26
  75. package/dist/commands/providers/list/list.d.ts +8 -1
  76. package/dist/commands/providers/list/list.d.ts.map +1 -1
  77. package/dist/commands/providers/list/list.js +139 -23
  78. package/dist/commands/providers/providers.types.d.ts +25 -1
  79. package/dist/commands/providers/providers.types.d.ts.map +1 -1
  80. package/dist/commands/providers/set/index.d.ts +9 -1
  81. package/dist/commands/providers/set/index.d.ts.map +1 -1
  82. package/dist/commands/providers/set/index.js +43 -33
  83. package/dist/commands/remove/skill/remove-skill.d.ts.map +1 -1
  84. package/dist/commands/remove/skill/remove-skill.js +11 -0
  85. package/dist/commands/shared/agents-md.d.ts +42 -14
  86. package/dist/commands/shared/agents-md.d.ts.map +1 -1
  87. package/dist/commands/shared/agents-md.js +364 -70
  88. package/dist/commands/status/index.d.ts +8 -3
  89. package/dist/commands/status/index.d.ts.map +1 -1
  90. package/dist/commands/status/index.js +149 -37
  91. package/dist/commands/sync/apply.d.ts.map +1 -1
  92. package/dist/commands/sync/apply.js +220 -29
  93. package/dist/commands/sync/dry-run.d.ts.map +1 -1
  94. package/dist/commands/sync/dry-run.js +30 -6
  95. package/dist/commands/sync/index.d.ts +17 -2
  96. package/dist/commands/sync/index.d.ts.map +1 -1
  97. package/dist/commands/sync/index.js +108 -43
  98. package/dist/commands/sync/sync.types.d.ts +39 -2
  99. package/dist/commands/sync/sync.types.d.ts.map +1 -1
  100. package/dist/commands/sync/sync.utils.d.ts +5 -1
  101. package/dist/commands/sync/sync.utils.d.ts.map +1 -1
  102. package/dist/commands/sync/sync.utils.js +73 -0
  103. package/dist/commands/tools/info/info-tool.d.ts +2 -0
  104. package/dist/commands/tools/info/info-tool.d.ts.map +1 -1
  105. package/dist/commands/tools/info/info-tool.js +34 -12
  106. package/dist/commands/tools/install/index.d.ts.map +1 -1
  107. package/dist/commands/tools/install/index.js +19 -3
  108. package/dist/commands/tools/list/list-tools.d.ts +2 -0
  109. package/dist/commands/tools/list/list-tools.d.ts.map +1 -1
  110. package/dist/commands/tools/list/list-tools.js +36 -7
  111. package/dist/commands/tools/remove/index.d.ts.map +1 -1
  112. package/dist/commands/tools/remove/index.js +150 -21
  113. package/dist/commands/tools/remove/remove-tools.d.ts +20 -0
  114. package/dist/commands/tools/remove/remove-tools.d.ts.map +1 -1
  115. package/dist/commands/tools/remove/remove-tools.js +122 -1
  116. package/dist/commands/tools/shared/format-pack-inventory.d.ts +19 -0
  117. package/dist/commands/tools/shared/format-pack-inventory.d.ts.map +1 -1
  118. package/dist/commands/tools/shared/format-pack-inventory.js +109 -0
  119. package/dist/commands/tools/shared/pack-evidence.d.ts +66 -0
  120. package/dist/commands/tools/shared/pack-evidence.d.ts.map +1 -0
  121. package/dist/commands/tools/shared/pack-evidence.js +132 -0
  122. package/dist/commands/tools/shared/pack-inventory.d.ts +1 -0
  123. package/dist/commands/tools/shared/pack-inventory.d.ts.map +1 -1
  124. package/dist/commands/tools/shared/pack-lifecycle-outcome.d.ts +44 -0
  125. package/dist/commands/tools/shared/pack-lifecycle-outcome.d.ts.map +1 -0
  126. package/dist/commands/tools/shared/pack-lifecycle-outcome.js +91 -0
  127. package/dist/commands/tools/update/index.d.ts.map +1 -1
  128. package/dist/commands/tools/update/index.js +74 -4
  129. package/dist/commands/tools/update/update-tools.d.ts +5 -0
  130. package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
  131. package/dist/commands/tools/update/update-tools.js +64 -2
  132. package/dist/config/oat-config.d.ts +5 -0
  133. package/dist/config/oat-config.d.ts.map +1 -1
  134. package/dist/config/oat-config.js +17 -5
  135. package/dist/config/user-sync-config.d.ts +1 -0
  136. package/dist/config/user-sync-config.d.ts.map +1 -1
  137. package/dist/config/user-sync-config.js +8 -0
  138. package/dist/drift/detector.d.ts +2 -2
  139. package/dist/drift/detector.d.ts.map +1 -1
  140. package/dist/drift/detector.js +18 -0
  141. package/dist/drift/strays.d.ts.map +1 -1
  142. package/dist/drift/strays.js +5 -0
  143. package/dist/engine/collection-sync.d.ts +14 -0
  144. package/dist/engine/collection-sync.d.ts.map +1 -0
  145. package/dist/engine/collection-sync.js +282 -0
  146. package/dist/engine/compute-plan.d.ts +8 -1
  147. package/dist/engine/compute-plan.d.ts.map +1 -1
  148. package/dist/engine/compute-plan.js +303 -12
  149. package/dist/engine/engine.types.d.ts +61 -0
  150. package/dist/engine/engine.types.d.ts.map +1 -1
  151. package/dist/engine/execute-plan.d.ts +22 -2
  152. package/dist/engine/execute-plan.d.ts.map +1 -1
  153. package/dist/engine/execute-plan.js +459 -27
  154. package/dist/engine/index.d.ts +1 -1
  155. package/dist/engine/index.d.ts.map +1 -1
  156. package/dist/engine/index.js +1 -1
  157. package/dist/engine/provider-path-safety.d.ts +1 -0
  158. package/dist/engine/provider-path-safety.d.ts.map +1 -1
  159. package/dist/engine/provider-path-safety.js +15 -0
  160. package/dist/engine/scanner.d.ts +9 -2
  161. package/dist/engine/scanner.d.ts.map +1 -1
  162. package/dist/engine/scanner.js +58 -4
  163. package/dist/fs/io.d.ts +67 -0
  164. package/dist/fs/io.d.ts.map +1 -1
  165. package/dist/fs/io.js +536 -3
  166. package/dist/manifest/index.d.ts +2 -2
  167. package/dist/manifest/index.d.ts.map +1 -1
  168. package/dist/manifest/index.js +1 -1
  169. package/dist/manifest/manager.d.ts +2 -2
  170. package/dist/manifest/manager.d.ts.map +1 -1
  171. package/dist/manifest/manager.js +20 -3
  172. package/dist/manifest/manifest.types.d.ts +704 -13
  173. package/dist/manifest/manifest.types.d.ts.map +1 -1
  174. package/dist/manifest/manifest.types.js +131 -15
  175. package/dist/providers/codex/codec/sync-extension.d.ts +1 -1
  176. package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
  177. package/dist/providers/codex/codec/sync-extension.js +48 -17
  178. package/dist/providers/cursor/codec/sync-extension.d.ts +1 -1
  179. package/dist/providers/cursor/codec/sync-extension.d.ts.map +1 -1
  180. package/dist/providers/cursor/codec/sync-extension.js +52 -23
  181. package/dist/providers/identity/absolute-paths.d.ts +68 -0
  182. package/dist/providers/identity/absolute-paths.d.ts.map +1 -0
  183. package/dist/providers/identity/absolute-paths.js +144 -0
  184. package/dist/providers/identity/claude-runtime-observation.d.ts +105 -0
  185. package/dist/providers/identity/claude-runtime-observation.d.ts.map +1 -0
  186. package/dist/providers/identity/claude-runtime-observation.fixtures.d.ts +40 -0
  187. package/dist/providers/identity/claude-runtime-observation.fixtures.d.ts.map +1 -0
  188. package/dist/providers/identity/claude-runtime-observation.fixtures.js +146 -0
  189. package/dist/providers/identity/claude-runtime-observation.js +229 -0
  190. package/dist/providers/identity/codex-runtime-observation.d.ts +75 -0
  191. package/dist/providers/identity/codex-runtime-observation.d.ts.map +1 -0
  192. package/dist/providers/identity/codex-runtime-observation.fixtures.d.ts +37 -0
  193. package/dist/providers/identity/codex-runtime-observation.fixtures.d.ts.map +1 -0
  194. package/dist/providers/identity/codex-runtime-observation.fixtures.js +539 -0
  195. package/dist/providers/identity/codex-runtime-observation.js +255 -0
  196. package/dist/providers/identity/generic-dispatch-record.d.ts +313 -0
  197. package/dist/providers/identity/generic-dispatch-record.d.ts.map +1 -0
  198. package/dist/providers/identity/generic-dispatch-record.js +539 -0
  199. package/dist/providers/identity/oat-dispatch-record.d.ts +1964 -0
  200. package/dist/providers/identity/oat-dispatch-record.d.ts.map +1 -0
  201. package/dist/providers/identity/oat-dispatch-record.js +691 -0
  202. package/dist/providers/identity/runtime-observation.d.ts +100 -0
  203. package/dist/providers/identity/runtime-observation.d.ts.map +1 -0
  204. package/dist/providers/identity/runtime-observation.js +169 -0
  205. package/dist/providers/shared/index.d.ts +2 -0
  206. package/dist/providers/shared/index.d.ts.map +1 -1
  207. package/dist/providers/shared/index.js +1 -0
  208. package/dist/providers/shared/materialization-extension.d.ts +12 -0
  209. package/dist/providers/shared/materialization-extension.d.ts.map +1 -1
  210. package/dist/providers/shared/registry.d.ts +69 -0
  211. package/dist/providers/shared/registry.d.ts.map +1 -0
  212. package/dist/providers/shared/registry.js +252 -0
  213. package/dist/providers/shared/restart-adviser.d.ts +26 -0
  214. package/dist/providers/shared/restart-adviser.d.ts.map +1 -0
  215. package/dist/providers/shared/restart-adviser.js +96 -0
  216. package/dist/shared/types.d.ts +4 -0
  217. package/dist/shared/types.d.ts.map +1 -1
  218. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import { buildCommandContext, } from '../../../app/command-context.js';
2
- import { upsertAgentsMdSection, } from '../../shared/agents-md.js';
2
+ import { formatAgentsMdGuidanceResult, formatAgentsMdMutationFailure, upsertAgentsMdSection, } from '../../shared/agents-md.js';
3
3
  import { confirmAction, inputWithDefault, selectWithAbort, } from '../../shared/shared.prompts.js';
4
4
  import { readGlobalOptions } from '../../shared/shared.utils.js';
5
5
  import { readOatConfig, writeOatConfig, } from '../../../config/oat-config.js';
@@ -67,23 +67,20 @@ const DEFAULT_DEPENDENCIES = {
67
67
  ...result.documentationConfig,
68
68
  };
69
69
  await writeOatConfig(context.cwd, config);
70
- if (context.json) {
71
- context.logger.json({
72
- status: 'ok',
73
- ...options,
74
- createdFiles: result.createdFiles,
75
- appRoot: result.appRoot,
76
- rootPackagePatch,
77
- });
78
- return;
70
+ if (!context.json) {
71
+ context.logger.info(`Scaffolded docs app at ${options.targetDir}`);
72
+ context.logger.info(` Framework: ${options.framework}`);
73
+ context.logger.info(` Repo shape: ${options.repoShape}`);
74
+ context.logger.info(` App name: ${options.appName}`);
75
+ context.logger.info(` Lint: ${options.lint}`);
76
+ context.logger.info(` Format: ${options.format}`);
77
+ logRootPackagePatch(context, rootPackagePatch);
79
78
  }
80
- context.logger.info(`Scaffolded docs app at ${options.targetDir}`);
81
- context.logger.info(` Framework: ${options.framework}`);
82
- context.logger.info(` Repo shape: ${options.repoShape}`);
83
- context.logger.info(` App name: ${options.appName}`);
84
- context.logger.info(` Lint: ${options.lint}`);
85
- context.logger.info(` Format: ${options.format}`);
86
- logRootPackagePatch(context, rootPackagePatch);
79
+ return {
80
+ createdFiles: result.createdFiles,
81
+ appRoot: result.appRoot,
82
+ rootPackagePatch,
83
+ };
87
84
  },
88
85
  upsertAgentsMdSection,
89
86
  readOatConfig,
@@ -159,10 +156,46 @@ async function runDocsInitCommand(context, options, dependencies) {
159
156
  }
160
157
  }
161
158
  const assetsRoot = await dependencies.resolveAssetsRoot();
162
- await dependencies.runDocsInit(context, resolved, assetsRoot);
159
+ const scaffold = await dependencies.runDocsInit(context, resolved, assetsRoot);
163
160
  const sectionBody = buildDocsSectionBody(resolved);
164
- const sectionResult = await dependencies.upsertAgentsMdSection(context.cwd, 'docs', sectionBody);
165
- if (!context.json && sectionResult.action !== 'no-change') {
161
+ let sectionResult;
162
+ try {
163
+ sectionResult = await dependencies.upsertAgentsMdSection(context.cwd, 'docs', sectionBody);
164
+ }
165
+ catch (error) {
166
+ throw new Error(formatAgentsMdMutationFailure(error), { cause: error });
167
+ }
168
+ if (sectionResult.action === 'manual-required' ||
169
+ sectionResult.action === 'blocked') {
170
+ if (context.json) {
171
+ context.logger.json({
172
+ status: 'partial',
173
+ scaffold: {
174
+ status: 'complete',
175
+ targetDir: resolved.targetDir,
176
+ framework: resolved.framework,
177
+ },
178
+ guidance: sectionResult,
179
+ });
180
+ }
181
+ else {
182
+ context.logger.warn(`Docs scaffold completed; AGENTS.md guidance is ${sectionResult.action}.`);
183
+ for (const line of formatAgentsMdGuidanceResult(sectionResult)) {
184
+ context.logger.info(line);
185
+ }
186
+ }
187
+ process.exitCode = 1;
188
+ return;
189
+ }
190
+ if (context.json) {
191
+ context.logger.json({
192
+ status: 'ok',
193
+ ...resolved,
194
+ ...scaffold,
195
+ guidance: sectionResult,
196
+ });
197
+ }
198
+ else if (sectionResult.action !== 'no-change') {
166
199
  context.logger.info(`AGENTS.md docs section ${sectionResult.action}.`);
167
200
  }
168
201
  if (!context.json) {
@@ -2,12 +2,12 @@ import { type CommandContext, type GlobalOptions } from '../../app/command-conte
2
2
  import { type PjmAdoption, type ResolvePjmAdoptionOptions } from '../pjm/adoption.js';
3
3
  import { type PjmDoctorOptions } from '../pjm/doctor.js';
4
4
  import { type InventoryPackInput, type PackInventory } from '../tools/shared/pack-inventory.js';
5
- import type { SyncConfig } from '../../config/index.js';
5
+ import { type SyncConfig } from '../../config/index.js';
6
6
  import { type OatConfig, type OatLocalConfig, type UserConfig } from '../../config/oat-config.js';
7
7
  import { type Manifest } from '../../manifest/index.js';
8
8
  import { type CursorMaterializedModelDiagnostic, type MatrixCellAvailabilityResponse, type ValidateMatrixCellOptions } from '../../providers/identity/availability.js';
9
9
  import { createDispatchValidationPassContext, validateDispatchMatrixRefs } from '../../providers/identity/dispatch-validation.js';
10
- import { type ProviderAdapter } from '../../providers/shared/index.js';
10
+ import { type ProviderAdapter, type ProviderScopeContext } from '../../providers/shared/index.js';
11
11
  import type { ConcreteScope } from '../../shared/types.js';
12
12
  import { type DoctorCheck } from '../../ui/output.js';
13
13
  import { Command } from 'commander';
@@ -25,10 +25,16 @@ interface DoctorDependencies {
25
25
  readFile: (path: string) => Promise<string>;
26
26
  resolveAssetsRoot: () => Promise<string>;
27
27
  resolveUserSyncConfig: (userConfigDir: string) => Promise<SyncConfig>;
28
+ loadSyncConfig: (configPath: string) => Promise<SyncConfig>;
28
29
  getAdapters: () => ProviderAdapter[];
29
30
  getConfigAwareAdapters: (adapters: ProviderAdapter[], scopeRoot: string, config: SyncConfig) => Promise<{
30
31
  activeAdapters: ProviderAdapter[];
31
32
  }>;
33
+ resolveProviderScopeContext?: (input: {
34
+ scope: ConcreteScope;
35
+ scopeRoot: string;
36
+ config: SyncConfig;
37
+ }) => Promise<ProviderScopeContext>;
32
38
  readOatConfig: (repoRoot: string) => Promise<OatConfig>;
33
39
  readOatConfigForDefaultScopeRepair: (repoRoot: string) => Promise<OatConfig>;
34
40
  readOatLocalConfig: (repoRoot: string) => Promise<OatLocalConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAa9B,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,uCAAuC,CAAC;AAa/C,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EAGL,KAAK,iCAAiC,EAEtC,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAS3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuDpC,UAAU,kBAAkB;IAC1B,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,gBAAgB,EAAE,CAChB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,cAAc,EAAE,CACd,SAAS,EAAE,MAAM,KACd,OAAO,CACV,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CACnE,CAAC;IACF,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,qBAAqB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACtE,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5D,WAAW,EAAE,MAAM,eAAe,EAAE,CAAC;IACrC,sBAAsB,EAAE,CACtB,QAAQ,EAAE,eAAe,EAAE,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,KACf,OAAO,CAAC;QAAE,cAAc,EAAE,eAAe,EAAE,CAAA;KAAE,CAAC,CAAC;IACpD,2BAA2B,CAAC,EAAE,CAAC,KAAK,EAAE;QACpC,KAAK,EAAE,aAAa,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC;KACpB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpC,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,kCAAkC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7E,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC7C,gCAAgC,EAAE,CAChC,cAAc,EAAE,SAAS,MAAM,EAAE,EACjC,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,iCAAiC,EAAE,CAAC,CAAC;IAClD,mCAAmC,EAAE,OAAO,mCAAmC,CAAC;IAChF,0BAA0B,EAAE,OAAO,0BAA0B,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;IAC9B,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,gBAAgB,KACvB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5B,kBAAkB,EAAE,CAClB,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1B,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACrE,kBAAkB,EAAE,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,KAC3C,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACnE;AAED,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,kBAAkB;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;IACnC,cAAc,EAAE,oBAAoB,EAAE,CAAC;CACxC;AA8yCD,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC1C,OAAO,CAsBT"}
@@ -8,30 +8,61 @@ import { runPjmDoctorChecks, } from '../pjm/doctor.js';
8
8
  import { getSkillVersion } from '../shared/frontmatter.js';
9
9
  import { withScopeOption } from '../shared/scope-option.js';
10
10
  import { readGlobalOptions, resolveConcreteScopes, } from '../shared/shared.utils.js';
11
+ import { packEvidenceBlock, projectRenderablePackEvidence, unavailablePackEvidence, } from '../tools/shared/format-pack-inventory.js';
11
12
  import { attributeSharedOwnerDiagnostics, hasScopedPackPlacementEvidence, inventoryPack, } from '../tools/shared/pack-inventory.js';
12
13
  import { PACK_NAMES } from '../tools/shared/pack-manifest.js';
13
14
  import { formatPackPaths, updatePackRecovery, } from '../tools/shared/pack-paths.js';
14
15
  import { walkDispatchMatrix, } from '../../config/dispatch-matrix.js';
16
+ import { DEFAULT_SYNC_CONFIG, loadSyncConfig, } from '../../config/index.js';
15
17
  import { readOatConfig, readOatConfigForDefaultScopeRepair, readOatLocalConfig, readUserConfig, } from '../../config/oat-config.js';
16
18
  import { resolveUserSyncConfig } from '../../config/user-sync-config.js';
17
19
  import { resolveAssetsRoot } from '../../fs/assets.js';
18
20
  import { resolveProjectRoot, resolveScopeRoot } from '../../fs/paths.js';
19
21
  import TOML from '@iarna/toml';
20
22
  import { loadManifest } from '../../manifest/index.js';
21
- import { claudeAdapter } from '../../providers/claude/index.js';
22
- import { codexAdapter } from '../../providers/codex/index.js';
23
23
  import { isOatManagedCodexRoleFile } from '../../providers/codex/codec/shared.js';
24
- import { copilotAdapter } from '../../providers/copilot/index.js';
25
- import { cursorAdapter } from '../../providers/cursor/index.js';
26
24
  import { CURSOR_MODEL_PIN_MAPPINGS } from '../../providers/cursor/codec/catalog.js';
27
- import { geminiAdapter } from '../../providers/gemini/index.js';
28
25
  import { diagnoseCursorMaterializedModels, validateMatrixCell, } from '../../providers/identity/availability.js';
29
26
  import { createDispatchValidationPassContext, validateDispatchMatrixRefs, } from '../../providers/identity/dispatch-validation.js';
30
- import { getConfigAwareAdapters, } from '../../providers/shared/index.js';
27
+ import { getConfigAwareAdapters, getProviderRegistrations, resolveProviderScopeContext, } from '../../providers/shared/index.js';
28
+ import { userAgentMaterializationCoverage, } from '../../providers/shared/registry.js';
29
+ import { adviseProviderRefresh, } from '../../providers/shared/restart-adviser.js';
31
30
  import { formatDoctorResults } from '../../ui/output.js';
32
31
  import { Command } from 'commander';
33
32
  import { checkStaleInvocations } from './stale-invocations.js';
34
33
  import { checkSyncedProjects } from './synced-projects.js';
34
+ function collectProviderRefreshAdvice(contexts) {
35
+ return [...contexts.entries()].flatMap(([scope, context]) => {
36
+ const active = new Set(context.activeProviders);
37
+ return context.registrations.flatMap((registration) => {
38
+ if (!active.has(registration.adapter.name))
39
+ return [];
40
+ return registration.capabilities
41
+ .filter((capability) => capability.scope === scope && capability.support === 'supported')
42
+ .map((capability) => ({
43
+ scope,
44
+ provider: registration.adapter.name,
45
+ contentKind: capability.contentKind,
46
+ visibility: adviseProviderRefresh({
47
+ policy: capability.catalogRefresh,
48
+ materialization: 'unknown',
49
+ observation: {
50
+ state: 'not-reported',
51
+ reference: 'oat doctor validates managed state but does not query the active provider catalog',
52
+ },
53
+ }),
54
+ }));
55
+ });
56
+ });
57
+ }
58
+ function formatProviderRefreshAdvice(advice) {
59
+ if (advice.length === 0)
60
+ return null;
61
+ return [
62
+ 'Provider catalog visibility:',
63
+ ...advice.map(({ scope, provider, contentKind, visibility }) => ` [${scope}] ${provider}/${contentKind}: ${visibility.state} (${visibility.policy.state})`),
64
+ ].join('\n');
65
+ }
35
66
  async function pathExistsDefault(path) {
36
67
  try {
37
68
  await access(path);
@@ -59,13 +90,7 @@ async function checkSymlinkSupportDefault(_scopeRoot) {
59
90
  }
60
91
  }
61
92
  async function checkProvidersDefault(scopeRoot) {
62
- const adapters = [
63
- claudeAdapter,
64
- cursorAdapter,
65
- codexAdapter,
66
- copilotAdapter,
67
- geminiAdapter,
68
- ];
93
+ const adapters = getProviderRegistrations().map(({ adapter }) => adapter);
69
94
  return Promise.all(adapters.map(async (adapter) => ({
70
95
  name: adapter.name,
71
96
  detected: await adapter.detect(scopeRoot),
@@ -142,14 +167,12 @@ function createDependencies() {
142
167
  readFile: async (path) => readFile(path, 'utf8'),
143
168
  resolveAssetsRoot,
144
169
  resolveUserSyncConfig,
145
- getAdapters: () => [
146
- claudeAdapter,
147
- cursorAdapter,
148
- codexAdapter,
149
- copilotAdapter,
150
- geminiAdapter,
151
- ],
170
+ async loadSyncConfig(configPath) {
171
+ return loadSyncConfig(configPath, DEFAULT_SYNC_CONFIG);
172
+ },
173
+ getAdapters: () => getProviderRegistrations().map(({ adapter }) => adapter),
152
174
  getConfigAwareAdapters,
175
+ resolveProviderScopeContext,
153
176
  readOatConfig,
154
177
  readOatConfigForDefaultScopeRepair,
155
178
  readOatLocalConfig,
@@ -646,9 +669,9 @@ function createPackDuplicationCheck(findings, roots) {
646
669
  fix: uniqueRecoveries(duplicates).join('\n Fix: '),
647
670
  };
648
671
  }
649
- async function createPackStateChecks(scopeRoots, dependencies) {
672
+ async function createPackStateChecks(scopeRoots, providerContexts, dependencies) {
650
673
  if (scopeRoots.size === 0) {
651
- return [];
674
+ return { checks: [], evidence: packEvidenceBlock([]) };
652
675
  }
653
676
  const roots = {
654
677
  ...(scopeRoots.has('project')
@@ -657,34 +680,85 @@ async function createPackStateChecks(scopeRoots, dependencies) {
657
680
  ...(scopeRoots.has('user') ? { userRoot: scopeRoots.get('user') } : {}),
658
681
  };
659
682
  let findings;
683
+ let inventories;
660
684
  try {
661
685
  const assetsRoot = await dependencies.resolveAssetsRoot();
662
686
  const userRoot = scopeRoots.get('user');
663
- const userManagedRoleMaterialization = userRoot
664
- ? await dependencies
665
- .getConfigAwareAdapters(dependencies.getAdapters(), userRoot, await dependencies.resolveUserSyncConfig(join(userRoot, '.oat')))
666
- .then(({ activeAdapters }) => activeAdapters.some(({ name }) => name === 'codex' || name === 'cursor'))
667
- : false;
668
- const inventories = attributeSharedOwnerDiagnostics(await Promise.all(PACK_NAMES.map((pack) => dependencies.inventoryPack({
687
+ const userAgentCoverage = userRoot
688
+ ? await (async () => {
689
+ const config = await dependencies.resolveUserSyncConfig(join(userRoot, '.oat'));
690
+ const providerContext = providerContexts.get('user') ?? null;
691
+ const activeAdapters = providerContext
692
+ ? providerContext.registrations
693
+ .filter(({ adapter }) => providerContext.activeProviders.includes(adapter.name))
694
+ .map(({ adapter }) => adapter)
695
+ : await dependencies
696
+ .getConfigAwareAdapters(dependencies.getAdapters(), userRoot, config)
697
+ .then(({ activeAdapters: resolvedAdapters }) => resolvedAdapters);
698
+ const activeProviders = activeAdapters.map(({ name }) => name);
699
+ const knownRegistrations = getProviderRegistrations().filter(({ adapter }) => activeProviders.includes(adapter.name));
700
+ let coverage = userAgentMaterializationCoverage({
701
+ registrations: providerContext?.registrations ?? knownRegistrations,
702
+ activeProviders,
703
+ });
704
+ if (coverage !== 'all') {
705
+ const mappings = activeAdapters.flatMap(({ userMappings }) => userMappings.filter(({ contentType }) => contentType === 'agent'));
706
+ if (mappings.some(({ nativeRead }) => !nativeRead)) {
707
+ coverage = 'all';
708
+ }
709
+ else if (mappings.length > 0 && coverage === 'none') {
710
+ coverage = 'bundled';
711
+ }
712
+ }
713
+ return coverage;
714
+ })()
715
+ : 'none';
716
+ inventories = attributeSharedOwnerDiagnostics(await Promise.all(PACK_NAMES.map((pack) => dependencies.inventoryPack({
669
717
  pack,
670
718
  assetsRoot,
671
719
  ...roots,
672
- ...(userRoot ? { userManagedRoleMaterialization } : {}),
720
+ ...(userRoot
721
+ ? {
722
+ userManagedRoleMaterialization: userAgentCoverage !== 'none',
723
+ }
724
+ : {}),
673
725
  }))));
726
+ if (userAgentCoverage === 'all') {
727
+ inventories = inventories.map((inventory) => ({
728
+ ...inventory,
729
+ scopes: inventory.scopes.map((scoped) => scoped.scope === 'user'
730
+ ? {
731
+ ...scoped,
732
+ diagnostics: scoped.diagnostics.filter(({ code }) => code !== 'user-agent-unmaterialized'),
733
+ }
734
+ : scoped),
735
+ diagnostics: inventory.diagnostics.filter(({ code }) => code !== 'user-agent-unmaterialized'),
736
+ }));
737
+ }
674
738
  findings = collectPackStateFindings(inventories);
675
739
  }
676
740
  catch (error) {
677
- return [
678
- {
679
- name: 'packs:inventory',
680
- description: 'Managed pack inventory availability',
681
- status: 'warn',
682
- message: error instanceof Error
683
- ? `Unable to inventory managed packs: ${error.message}`
684
- : 'Unable to inventory managed packs.',
685
- fix: 'Run `pnpm build` and rerun `oat doctor`.',
686
- },
687
- ];
741
+ const detail = error instanceof Error
742
+ ? `Unable to inventory managed packs: ${error.message}`
743
+ : 'Unable to inventory managed packs.';
744
+ const evidence = packEvidenceBlock(PACK_NAMES.map((pack) => unavailablePackEvidence({
745
+ pack,
746
+ scopes: [...scopeRoots.keys()],
747
+ reason: detail,
748
+ roots,
749
+ })));
750
+ return {
751
+ checks: [
752
+ {
753
+ name: 'packs:inventory',
754
+ description: 'Managed pack inventory availability',
755
+ status: 'warn',
756
+ message: evidence.diagnostics[0]?.detail ?? detail,
757
+ fix: 'Run `pnpm build` and rerun `oat doctor`.',
758
+ },
759
+ ],
760
+ evidence,
761
+ };
688
762
  }
689
763
  const checks = [];
690
764
  for (const scope of scopeRoots.keys()) {
@@ -693,7 +767,10 @@ async function createPackStateChecks(scopeRoots, dependencies) {
693
767
  if (scopeRoots.has('project') && scopeRoots.has('user')) {
694
768
  checks.push(createPackDuplicationCheck(findings, roots));
695
769
  }
696
- return checks;
770
+ return {
771
+ checks,
772
+ evidence: packEvidenceBlock(inventories.map((canonical) => projectRenderablePackEvidence(canonical, roots))),
773
+ };
697
774
  }
698
775
  function createScopeUnavailableCheck(scope, error) {
699
776
  const reason = error instanceof Error ? `: ${error.message}` : '.';
@@ -705,7 +782,7 @@ function createScopeUnavailableCheck(scope, error) {
705
782
  fix: `Run \`oat doctor --scope ${scope === 'project' ? 'user' : 'project'}\`, or rerun inside a directory where ${scope} scope resolves.`,
706
783
  };
707
784
  }
708
- async function runChecksForScope(scope, scopeRoot, userConfigDir, dependencies) {
785
+ async function runChecksForScope(scope, scopeRoot, userConfigDir, dependencies, providerContext) {
709
786
  const checks = [];
710
787
  const skillsPath = join(scopeRoot, '.agents', 'skills');
711
788
  const agentsPath = join(scopeRoot, '.agents', 'agents');
@@ -762,7 +839,13 @@ async function runChecksForScope(scope, scopeRoot, userConfigDir, dependencies)
762
839
  ? undefined
763
840
  : 'Use copy strategy or grant symlink permissions.',
764
841
  });
765
- const providers = await dependencies.checkProviders(scopeRoot);
842
+ const providers = providerContext
843
+ ? await Promise.all(providerContext.registrations.map(async ({ adapter }) => ({
844
+ name: adapter.name,
845
+ detected: providerContext.detectedProviders.includes(adapter.name),
846
+ version: adapter.detectVersion ? await adapter.detectVersion() : null,
847
+ })))
848
+ : await dependencies.checkProviders(scopeRoot);
766
849
  const detectedCount = providers.filter((provider) => provider.detected).length;
767
850
  checks.push({
768
851
  name: `${scope}:providers`,
@@ -893,6 +976,7 @@ async function runDoctorCommand(context, dependencies) {
893
976
  const checks = [];
894
977
  const scopes = resolveConcreteScopes(context.scope);
895
978
  const scopeRoots = new Map();
979
+ const providerContexts = new Map();
896
980
  for (const scope of scopes) {
897
981
  let scopeRoot;
898
982
  try {
@@ -908,15 +992,36 @@ async function runDoctorCommand(context, dependencies) {
908
992
  throw error;
909
993
  }
910
994
  scopeRoots.set(scope, scopeRoot);
911
- const scopeChecks = await runChecksForScope(scope, scopeRoot, join(context.home, '.oat'), dependencies);
995
+ const providerContext = dependencies.resolveProviderScopeContext
996
+ ? await dependencies.resolveProviderScopeContext({
997
+ scope,
998
+ scopeRoot,
999
+ config: scope === 'user'
1000
+ ? await dependencies.resolveUserSyncConfig(join(context.home, '.oat'))
1001
+ : await dependencies.loadSyncConfig(join(scopeRoot, '.oat', 'sync', 'config.json')),
1002
+ })
1003
+ : undefined;
1004
+ if (providerContext)
1005
+ providerContexts.set(scope, providerContext);
1006
+ const scopeChecks = await runChecksForScope(scope, scopeRoot, join(context.home, '.oat'), dependencies, providerContext);
912
1007
  checks.push(...scopeChecks);
913
1008
  }
914
- checks.push(...(await createPackStateChecks(scopeRoots, dependencies)));
1009
+ const packState = await createPackStateChecks(scopeRoots, providerContexts, dependencies);
1010
+ checks.push(...packState.checks);
1011
+ const providerRefreshAdvice = collectProviderRefreshAdvice(providerContexts);
915
1012
  if (context.json) {
916
- context.logger.json({ scope: context.scope, checks });
1013
+ context.logger.json({
1014
+ scope: context.scope,
1015
+ checks,
1016
+ packEvidence: packState.evidence,
1017
+ providerRefreshAdvice,
1018
+ });
917
1019
  }
918
1020
  else {
919
1021
  context.logger.info(formatDoctorResults(checks));
1022
+ const providerSummary = formatProviderRefreshAdvice(providerRefreshAdvice);
1023
+ if (providerSummary)
1024
+ context.logger.info(providerSummary);
920
1025
  }
921
1026
  const hasFail = checks.some((check) => check.status === 'fail');
922
1027
  const hasWarn = checks.some((check) => check.status === 'warn');
@@ -927,6 +1032,12 @@ export function createDoctorCommand(overrides = {}) {
927
1032
  ...createDependencies(),
928
1033
  ...overrides,
929
1034
  };
1035
+ if (overrides.resolveProviderScopeContext === undefined &&
1036
+ (overrides.getAdapters !== undefined ||
1037
+ overrides.getConfigAwareAdapters !== undefined ||
1038
+ overrides.checkProviders !== undefined)) {
1039
+ dependencies.resolveProviderScopeContext = undefined;
1040
+ }
930
1041
  return withScopeOption(new Command('doctor'))
931
1042
  .description('Run environment and setup diagnostics')
932
1043
  .action(async (_options, command) => {
@@ -8,7 +8,7 @@ import { type OatConfig } from '../../config/oat-config.js';
8
8
  import { type DriftReport } from '../../drift/index.js';
9
9
  import { type CanonicalEntry, type HookInstallInfo } from '../../engine/index.js';
10
10
  import type { Manifest } from '../../manifest/manifest.types.js';
11
- import { type ConfigAwareAdaptersResult, type PathMapping, type ProviderAdapter } from '../../providers/shared/index.js';
11
+ import { type ConfigAwareAdaptersResult, type PathMapping, type ProviderAdapter, type ProviderScopeContext } from '../../providers/shared/index.js';
12
12
  import type { ConcreteScope } from '../../shared/types.js';
13
13
  import { Command } from 'commander';
14
14
  import { type DetectedDocs, type DetectDocsDependencies } from './detect-docs.js';
@@ -47,6 +47,11 @@ interface InitDependencies {
47
47
  resolveUserSyncConfig: (userConfigDir: string) => Promise<SyncConfig>;
48
48
  saveSyncConfig: (configPath: string, config: SyncConfig) => Promise<SyncConfig>;
49
49
  getConfigAwareAdapters: (adapters: ProviderAdapter[], scopeRoot: string, config: SyncConfig) => Promise<ConfigAwareAdaptersResult>;
50
+ resolveProviderScopeContext?: (input: {
51
+ scope: ConcreteScope;
52
+ scopeRoot: string;
53
+ config: SyncConfig;
54
+ }) => Promise<ProviderScopeContext>;
50
55
  applyOatCoreGitignore: (repoRoot: string) => Promise<ApplyOatCoreResult>;
51
56
  applyOatCoreGitattributes: (repoRoot: string) => Promise<ApplyOatCoreGitattributesResult>;
52
57
  dirExists: (dirPath: string) => Promise<boolean>;
@@ -68,8 +73,8 @@ interface InitDependencies {
68
73
  applyNativeSkillDisposition: (scopeRoot: string, stray: InitStrayCandidate, manifest: Manifest, disposition: NativeSkillDisposition, syncConfigPath: string, options?: {
69
74
  replaceCanonical?: boolean;
70
75
  }) => Promise<Manifest>;
71
- runGuidedSetup: (context: CommandContext, dependencies: InitDependencies) => Promise<void>;
72
- runToolPacks: (context: CommandContext) => Promise<ToolPack[]>;
76
+ runGuidedSetup: (context: CommandContext, dependencies: InitDependencies, explicitProjectGuidance?: boolean) => Promise<void>;
77
+ runToolPacks: (context: CommandContext, explicitProjectGuidance?: boolean) => Promise<ToolPack[]>;
73
78
  runProviderSync: (projectRoot: string) => Promise<void>;
74
79
  }
75
80
  export declare function createInitCommand(overrides?: Partial<InitDependencies>): Command;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"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"}