import type { IndexingManifestV1 } from '../contracts/indexing.js'; import { type WatcherStateV1 } from '../contracts/watcher-state.js'; import { type GraphContextFreshnessStatus } from '../runtime/freshness.js'; import { type DiscoveryExclusion, type DiscoverySafetySummary } from '../shared/discovery-safety.js'; type AgentStatus = 'configured' | 'partial' | 'missing'; type McpStatus = 'ok' | 'missing' | 'stale'; interface McpCheck { label: 'claude' | 'cursor' | 'gemini' | 'copilot'; configPath: string; status: McpStatus; reason: string; } interface AgentCheck { label: 'claude' | 'cursor' | 'gemini' | 'copilot' | 'aider' | 'codex' | 'opencode'; status: AgentStatus; detail: string; } interface GraphCheck { graphPath: string; exists: boolean; freshness: GraphContextFreshnessStatus; ageMs: number | null; generatedAt: string | null; graphVersion: string | null; indexedFileCount: number; changedSourceCount: number; missingSourceCount: number; recommendation: string; discoverySafety: DiscoverySafetySummary | null; discoveryExclusions: DiscoveryExclusion[]; indexingManifest: IndexingManifestV1 | null; generationPolicy: { storedFingerprint: string | null; currentFingerprint: string | null; match: boolean | null; reason: string; }; watcherState: WatcherStateV1 | null; watcherLive: boolean; watcherPolicyMatchesPublished: boolean | null; } export interface DoctorReport { packageVersion: string; graph: GraphCheck; agents: AgentCheck[]; mcpChecks: McpCheck[]; /** Availability of the optional semantic/rerank runtime. Informational * only — never part of the `healthy` computation. */ semantic: SemanticCheck; nextCommands: string[]; healthy: boolean; } interface SemanticCheck { available: boolean; detail: string; } export interface DoctorCommandOptions { graphPath?: string; projectDir?: string; now?: number; } export declare function buildDoctorReport(options?: DoctorCommandOptions): DoctorReport; export declare function runDoctorCommand(options?: DoctorCommandOptions): string; export declare function runStatusCommand(options?: DoctorCommandOptions): string; export {};