import { spawnSync } from "node:child_process"; import { type CodexAutonomyResolution, type CodexCapabilityProfile, type CodexPromptTransport, type CodexWriteStrategy } from "./codex-capabilities.js"; export interface CliCommandAvailability { command: string; available: boolean; locator: string; detail: string; resolvedPath?: string; candidatePaths?: string[]; } export type CodexHostPlatform = "windows" | "linux" | "wsl" | "macos"; export type CodexInstallKind = "missing" | "native" | "windows_shim" | "windows_mounted_path"; export type CodexInvocationMode = "direct" | "cmd_shell" | "powershell"; export interface CodexHostDiagnosis { hostPlatform: CodexHostPlatform; nativeInstallValid: boolean; installKind: CodexInstallKind; invocationMode: CodexInvocationMode; sandboxMode: "workspace-write"; sandboxCompatible: boolean; resolvedPath?: string; nativeDependencyStatus?: "unknown" | "missing"; nativeDependencyPackage?: string; warnings: string[]; remediation?: string; } export interface CodexProbeCandidateResult { path: string; installKind: CodexInstallKind; invocationMode: CodexInvocationMode; nativeInstallValid: boolean; sandboxCompatible: boolean; launchReady: boolean; summary: string; remediation?: string; nativeDependencyStatus?: "unknown" | "missing"; nativeDependencyPackage?: string; capabilityProfile?: CodexCapabilityProfile; writeStrategy?: CodexWriteStrategy; autonomyResolution?: CodexAutonomyResolution; promptTransport?: CodexPromptTransport; } export interface CodexLaunchProbeResult { ok: boolean; summary: string; availability: CliCommandAvailability; diagnosis: CodexHostDiagnosis; command: string; args: string[]; capabilityProfile?: CodexCapabilityProfile; writeStrategy?: CodexWriteStrategy; autonomyResolution?: CodexAutonomyResolution; promptTransport?: CodexPromptTransport; exitCode?: number; stdout?: string; stderr?: string; candidateProbeResults?: CodexProbeCandidateResult[]; } type SpawnSyncLike = typeof spawnSync; export interface CodexSandboxPreflightOk { ok: true; effectiveSandbox: "read-only" | "workspace-write"; capabilitySource: "probe"; writableRoot: string; } export interface CodexSandboxPreflightReadOnly { ok: false; code: "provider_sandbox_read_only"; requestedCapability: "workspace-write"; detectedCapability: "read-only"; effectiveSandbox: "read-only"; affectedPath: string; writableRoot: string; capabilitySource: "probe"; remediation: string; } export type CodexSandboxPreflightOutcome = CodexSandboxPreflightOk | CodexSandboxPreflightReadOnly; export declare function probeFilesystemWriteCapability(directory: string): { writable: true; } | { writable: false; reason: string; }; export declare function checkCodexSandboxPreflight(input: { requestedSandbox: "read-only" | "workspace-write"; workingDirectory: string; }): CodexSandboxPreflightOutcome; export declare function resolveCliCommandAvailability(command: string, options?: { platform?: NodeJS.Platform; env?: NodeJS.ProcessEnv; spawnSyncImpl?: SpawnSyncLike; }): CliCommandAvailability; export declare function detectCodexHostPlatform(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): CodexHostPlatform; export declare function diagnoseCodexHost(availability: CliCommandAvailability, options?: { env?: NodeJS.ProcessEnv; platform?: NodeJS.Platform; }): CodexHostDiagnosis; export declare function probeCodexLaunch(input: { workingDirectory: string; availability?: CliCommandAvailability; env?: NodeJS.ProcessEnv; platform?: NodeJS.Platform; spawnSyncImpl?: SpawnSyncLike; model?: string; providerExecutionTimeoutMs?: number; }): CodexLaunchProbeResult; export {};