export interface CompatibleCliDocLink { id: string; label: string; url: string; category: 'overview' | 'configuration' | 'byok' | 'reference'; source: 'factory' | 'provider' | 'openai' | 'github'; description: string; } export interface CompatibleCliProviderDocLink { provider: string; label: string; apiFormat: string; url: string; } export interface CompatibleCliDocsReference { providerValues: string[]; settingsHierarchy: string[]; notes: string[]; links: CompatibleCliDocLink[]; providerDocs: CompatibleCliProviderDocLink[]; } export type CodexBinarySource = 'CCS_CODEX_PATH' | 'PATH' | 'missing'; export interface CodexBinaryDiagnostics { installed: boolean; path: string | null; installDir: string | null; source: CodexBinarySource; version: string | null; overridePath: string | null; supportsConfigOverrides: boolean; } export interface CodexConfigFileDiagnostics { label: string; path: string; resolvedPath: string; exists: boolean; isSymlink: boolean; isRegularFile: boolean; sizeBytes: number | null; mtimeMs: number | null; parseError: string | null; readError: string | null; } export interface CodexModelProviderDiagnostics { name: string; baseUrl: string | null; envKey: string | null; wireApi: string | null; requiresOpenaiAuth: boolean; supportsWebsockets: boolean; hasQueryParams: boolean; hasHttpHeaders: boolean; usesExperimentalBearerToken: boolean; } export interface CodexFeatureFlagDiagnostics { name: string; state: 'enabled' | 'disabled' | 'custom'; } export interface CodexProjectTrustDiagnostics { path: string; trustLevel: string; } export interface CodexMcpServerDiagnostics { name: string; transport: 'stdio' | 'streamable-http' | 'unknown'; enabled: boolean; required: boolean; startupTimeoutSec: number | null; toolTimeoutSec: number | null; enabledToolsCount: number; disabledToolsCount: number; usesInlineBearerToken: boolean; } export interface CodexSupportMatrixEntry { id: string; label: string; supported: boolean; notes: string; } export interface CodexUserConfigDiagnostics { model: string | null; modelReasoningEffort: string | null; modelContextWindow: number | null; modelAutoCompactTokenLimit: number | null; modelProvider: string | null; activeProfile: string | null; approvalPolicy: string | null; sandboxMode: string | null; webSearch: string | null; toolOutputTokenLimit: number | null; personality: string | null; topLevelKeys: string[]; profileCount: number; profileNames: string[]; modelProviderCount: number; modelProviders: CodexModelProviderDiagnostics[]; featureCount: number; enabledFeatures: CodexFeatureFlagDiagnostics[]; disabledFeatures: CodexFeatureFlagDiagnostics[]; trustedProjectCount: number; untrustedProjectCount: number; projectTrust: CodexProjectTrustDiagnostics[]; mcpServerCount: number; mcpServers: CodexMcpServerDiagnostics[]; } export interface CodexDashboardDiagnostics { binary: CodexBinaryDiagnostics; file: CodexConfigFileDiagnostics; workspacePath: string; config: CodexUserConfigDiagnostics; supportMatrix: CodexSupportMatrixEntry[]; warnings: string[]; docsReference: CompatibleCliDocsReference; } export interface CodexRawConfigResponse { path: string; resolvedPath: string; exists: boolean; mtime: number; rawText: string; config: Record | null; parseError: string | null; readError: string | null; } export interface CodexTopLevelSettingsPatch { model?: string | null; modelReasoningEffort?: string | null; modelContextWindow?: number | null; modelAutoCompactTokenLimit?: number | null; modelProvider?: string | null; approvalPolicy?: string | null; sandboxMode?: string | null; webSearch?: string | null; toolOutputTokenLimit?: number | null; personality?: string | null; } export interface CodexProfilePatchValues extends CodexTopLevelSettingsPatch {} export interface CodexModelProviderPatchValues { displayName?: string | null; baseUrl?: string | null; envKey?: string | null; wireApi?: string | null; requiresOpenaiAuth?: boolean | null; supportsWebsockets?: boolean | null; } export interface CodexMcpServerPatchValues { transport: 'stdio' | 'streamable-http'; command?: string | null; args?: string[] | null; url?: string | null; enabled?: boolean | null; required?: boolean | null; startupTimeoutSec?: number | null; toolTimeoutSec?: number | null; enabledTools?: string[] | null; disabledTools?: string[] | null; } export type CodexConfigPatchInput = | { kind: 'top-level'; expectedMtime?: number; values: CodexTopLevelSettingsPatch; } | { kind: 'project-trust'; expectedMtime?: number; path: string; trustLevel: string | null; } | { kind: 'feature'; expectedMtime?: number; feature: string; enabled: boolean | null; } | { kind: 'profile'; expectedMtime?: number; action: 'set-active' | 'upsert' | 'delete'; name: string; values?: CodexProfilePatchValues; setAsActive?: boolean; } | { kind: 'model-provider'; expectedMtime?: number; action: 'upsert' | 'delete'; name: string; values?: CodexModelProviderPatchValues; } | { kind: 'mcp-server'; expectedMtime?: number; action: 'upsert' | 'delete'; name: string; values?: CodexMcpServerPatchValues; }; export interface CodexConfigPatchResult extends CodexRawConfigResponse { success: true; }