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 SdkAuthStatusExecOptions { readonly cwd: string; readonly env: Record; readonly timeout: number; readonly maxBuffer: number; readonly encoding: "utf8"; } export interface SdkAuthStatusExecResult { readonly stdout: string; } /** Injectable process seam for bounded, read-only provider credential/login checks. */ export type SdkAuthStatusExecFile = (file: string, args: readonly string[], options: SdkAuthStatusExecOptions) => 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 SDK external-login status 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; /** * Internal readiness-probe mode. Direct Codex cannot enforce arbitrary tool * allowlists, but the disposable probe has a dedicated runtime contract that * runs read-only and fails on the first tool action. */ readonly codexNoToolsProbe?: boolean; /** Model refs whose credentials were proven by a successful live turn. */ readonly verifiedCredentialModelRefs?: readonly string[]; /** Injectable subprocess seam for deterministic provider credential/login-status tests. */ readonly sdkAuthStatusExecFile?: SdkAuthStatusExecFile; /** 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