/** * Codex MCP Process - Codex via MCP protocol * * Architecture: * Chat → MCP Client → codex mcp-server → MCP → Chat * * Uses standard MCP protocol instead of app-server's JSON-RPC. * Benefits: * - Standard MCP protocol * - compact-prompt parameter for compaction control * - threadId-based session management */ import { EventEmitter } from 'events'; import type { PromptCallbacks } from './types.js'; export interface CodexMCPOptions { model?: string; cwd?: string; sandbox?: 'read-only' | 'workspace-write' | 'danger-full-access'; systemPrompt?: string; compactPrompt?: string; timeoutMs?: number; command?: string; /** Codex home directory (overrides CODEX_HOME env). Forces MAMA-internal config. */ codexHome?: string; /** Optional MCP config JSON to translate into the controlled Codex config.toml. */ mcpConfigPath?: string; } export type { PromptCallbacks }; export interface PromptResult { response: string; usage: { input_tokens: number; output_tokens: number; cached_input_tokens?: number; }; session_id: string; cost_usd?: number; } export declare class CodexMCPProcess extends EventEmitter { private process; private currentCallbacks; private options; private state; private threadId; private requestId; private pendingRequests; private rl; private lastAuthFailure; constructor(options?: CodexMCPOptions); /** * Start the Codex MCP server process */ start(): Promise; /** * Send a prompt and get response */ prompt(content: string, callbacks?: PromptCallbacks, options?: { model?: string; resumeSession?: boolean; }): Promise; /** * Reset the session */ resetSession(): Promise; /** * Get current session ID */ getSessionId(): string; /** * Set session ID (for compatibility) * Note: CodexMCPProcess manages its own threadId from Codex responses. * External session IDs are ignored to prevent conflicts. */ setSessionId(_sessionId: string): void; /** * Set system prompt */ setSystemPrompt(prompt: string): void; /** * Stop the process */ stop(): void; private cleanup; private callTool; private callToolWithRetry; private sendRequest; private handleLine; /** * Handle Codex MCP notifications (codex/event) * Events: mcp_tool_call_begin, mcp_tool_call_end, agent_message_delta */ private handleNotification; private resolveCodexCommand; private isExecutable; private ensureCodexHome; private findExecutableInPath; private failPendingRequest; private clearPendingRequests; private isRetryableToolError; private shutdown; private killProcessTree; private listDescendantPids; } //# sourceMappingURL=codex-mcp-process.d.ts.map