/** * Codex Adapter * * Integrates OpenAI Codex (code-davinci-002, gpt-4o, o4-mini, or any * completions/chat-completions endpoint) with the SwarmOrchestrator. * * Supports three modes: * - `completion` — legacy /v1/completions (code-davinci-002 style) * - `chat` — /v1/chat/completions (gpt-4o, o4-mini, etc.) * - `cli` — wraps an OpenAI Codex CLI process via a user-supplied * executor function (for the codex CLI tool) * * Usage — chat mode: * const adapter = new CodexAdapter(); * adapter.registerCodexAgent('refactor', { * mode: 'chat', * model: 'gpt-4o', * systemPrompt: 'You are a refactoring assistant.', * apiKey: process.env.OPENAI_API_KEY, * }); * * Usage — CLI mode (Codex CLI tool): * adapter.registerCodexAgent('codex-cli', { * mode: 'cli', * executor: async (prompt) => myCodexCLIWrapper(prompt), * }); * * Usage — custom client (bring-your-own OpenAI SDK): * adapter.registerCodexAgent('analyst', { * mode: 'chat', * model: 'gpt-4o', * client: openaiInstance, // any object with .chat.completions.create() * }); * * @module CodexAdapter * @version 1.0.0 */ import { BaseAdapter } from './base-adapter'; import type { AdapterCapabilities, AgentPayload, AgentContext, AgentResult } from '../types/agent-adapter'; /** Execution mode for a Codex agent */ export type CodexMode = 'completion' | 'chat' | 'cli'; /** * Minimal interface for the OpenAI SDK's chat completions — * compatible with `new OpenAI().chat.completions`. * Users supply their own SDK instance; no hard dependency. */ export interface CodexChatClient { create(params: { model: string; messages: Array<{ role: string; content: string; }>; max_tokens?: number; temperature?: number; stop?: string[]; }): Promise<{ choices: Array<{ message?: { content?: string | null; }; text?: string; }>; usage?: { prompt_tokens: number; completion_tokens: number; total_tokens: number; }; }>; } /** * Minimal interface for the OpenAI SDK's legacy completions — * compatible with `new OpenAI().completions`. */ export interface CodexCompletionClient { create(params: { model: string; prompt: string; max_tokens?: number; temperature?: number; stop?: string[]; }): Promise<{ choices: Array<{ text?: string; }>; usage?: { prompt_tokens: number; completion_tokens: number; total_tokens: number; }; }>; } /** * A user-supplied executor for Codex CLI mode. * Receives the assembled prompt, returns the CLI output string. */ export type CodexCLIExecutor = (prompt: string, options?: Record) => Promise; /** Configuration for a registered Codex agent */ export interface CodexAgentConfig { /** Execution mode (default: 'chat') */ mode?: CodexMode; /** Model name — e.g. 'gpt-4o', 'o4-mini', 'code-davinci-002' */ model?: string; /** OpenAI API key — falls back to OPENAI_API_KEY env var */ apiKey?: string; /** Base URL override for Azure OpenAI, proxies, or self-hosted endpoints */ baseUrl?: string; /** System-level prompt prepended to every request (chat mode only) */ systemPrompt?: string; /** Maximum tokens in the completion */ maxTokens?: number; /** Temperature (0–2). Default: 0 for code tasks */ temperature?: number; /** Stop sequences */ stop?: string[]; /** * Bring-your-own OpenAI SDK chat completions instance. * If supplied, apiKey / baseUrl are ignored and this client is used directly. * Typically `new OpenAI().chat.completions` or `openai.chat.completions`. */ client?: CodexChatClient | CodexCompletionClient; /** * Executor function for CLI mode. * Required when mode === 'cli'. */ executor?: CodexCLIExecutor; /** Additional headers to send with fetch-based requests */ headers?: Record; } /** * Adapter that connects OpenAI Codex / code-focused models to the * SwarmOrchestrator. Supports chat completions, legacy completions, * and the Codex CLI executor interface. */ export declare class CodexAdapter extends BaseAdapter { readonly name = "codex"; readonly version = "1.0.0"; private agents; get capabilities(): AdapterCapabilities; /** * Register a Codex-powered agent. * * @param agentId Unique identifier used in `delegateTask` calls. * @param config Codex agent configuration. */ registerCodexAgent(agentId: string, config?: CodexAgentConfig): void; executeAgent(agentId: string, payload: AgentPayload, context: AgentContext): Promise; private _executeChat; private _executeCompletion; private _executeCLI; } //# sourceMappingURL=codex-adapter.d.ts.map