import type { SandboxEngine } from "@mono-agent/runtime-adapter"; import type { MonoAgentAppConfigInput } from "./app-config.js"; import type { ChannelDriver } from "./channels.js"; import type { LaunchdLogInspection } from "./launchd-logs.js"; import type { ManagedLaunchdLogMonitorStatus } from "./background-log-maintenance.js"; import type { ValidationReport, ValidationSection } from "./doctor-types.js"; export type { ValidationReport, ValidationSection, ValidationStatus } from "./doctor-types.js"; export interface DoctorStatusExecOptions { readonly cwd: string; readonly env: Record; readonly timeout: number; readonly maxBuffer: number; readonly encoding: "utf8"; } export interface DoctorStatusExecResult { readonly stdout: string; } /** Injectable process seam for bounded, read-only local tool version checks. */ export type DoctorStatusExecFile = (file: string, args: readonly string[], options: DoctorStatusExecOptions) => Promise; export type CodexWebSearchProbe = (options: { readonly model: string; }) => Promise<{ readonly ok: boolean; readonly reason: string; readonly model: string; }>; export interface ValidateMonoAgentFolderOptions extends MonoAgentAppConfigInput { readonly drivers?: readonly ChannelDriver[]; /** Optional sandbox engine override for deterministic validation tests. */ readonly sandboxEngine?: SandboxEngine; /** * When false, validation must not create directories or otherwise mutate the * target filesystem. This is used for downstream consumer validation from a * different working directory. Defaults to true. */ readonly allowFilesystemWrites?: boolean; /** * When false, skip live probes (Ollama and Supermemory reachability, the * Phoenix export probe, and local tool version checks) and validate * only structure/shape. Those probes can only ever downgrade a section to * `waiting`, never `error`, so skipping them leaves the pass/fail verdict * (`ok`) unchanged — the start preflight relies on this. Defaults to true. */ readonly liveness?: boolean; /** Model refs whose credentials were proven by a successful live turn. */ readonly verifiedCredentialModelRefs?: readonly string[]; /** Injectable subprocess seam for deterministic local tool version checks. */ readonly statusExecFile?: DoctorStatusExecFile; /** Injectable ChatGPT-subscription Codex search readiness probe. */ readonly codexWebSearchProbe?: CodexWebSearchProbe; /** Managed workers resolve optional plugins only from their attested app closure. */ readonly preferAppPluginInstall?: boolean; /** * Internal managed-worker fast path. The launch verifier has already bound * this informational detail to the exact private runtime marker, so doctor * must not repeat the full dependency-tree provenance traversal. */ readonly verifiedRuntimeProvenanceDetail?: string; } /** * Loads every config section the app would use at start and reports it * per-section, so an engineer can see exactly what would run, wait, or fail — * before starting anything. */ export declare function validateMonoAgentFolder(options: ValidateMonoAgentFolderOptions): Promise; /** Read-only launchd log inventory used by both `validate` and its `doctor` alias. */ export declare function launchdLogsSection(configPath: string): Promise; /** Pure renderer kept separate so exact byte accounting is deterministic in tests. */ export declare function launchdLogsSectionFromInspection(inspection: LaunchdLogInspection, monitorStatus?: ManagedLaunchdLogMonitorStatus | "unavailable"): ValidationSection; //# sourceMappingURL=doctor.d.ts.map