UNPKG

mcp-chrome-bridge

Version:

Chrome Native-Messaging host (Node)

134 lines (133 loc) 4.4 kB
import type { AgentAttachment, RealtimeEvent } from '../types'; import type { CodexEngineConfig } from 'chrome-mcp-shared'; export interface EngineInitOptions { sessionId: string; instruction: string; model?: string; projectRoot?: string; requestId: string; /** * AbortSignal for cancellation support. */ signal?: AbortSignal; /** * Optional attachments (images/files) to include with the instruction. * Note: When using persisted attachments, use resolvedImagePaths instead. */ attachments?: AgentAttachment[]; /** * Resolved absolute paths to persisted image files. * These are used by engines instead of writing temp files from base64. * Set by chat-service after saving attachments to persistent storage. */ resolvedImagePaths?: string[]; /** * Optional project ID for session persistence. * When provided, engines can use this to save/load session state. */ projectId?: string; /** * Optional database session ID (sessions.id) for session-scoped configuration and persistence. */ dbSessionId?: string; /** * Optional session-scoped permission mode override (Claude SDK option). */ permissionMode?: string; /** * Optional session-scoped permission bypass override (Claude SDK option). */ allowDangerouslySkipPermissions?: boolean; /** * Optional session-scoped system prompt configuration. */ systemPromptConfig?: unknown; /** * Optional session-scoped engine option overrides. */ optionsConfig?: unknown; /** * Optional Claude session ID (UUID) for resuming a previous session. * Only applicable to ClaudeEngine; retrieved from sessions.engineSessionId (preferred) * or project's activeClaudeSessionId (legacy fallback). */ resumeClaudeSessionId?: string; /** * Whether to use Claude Code Router (CCR) for this request. * Only applicable to ClaudeEngine; when true, CCR will be auto-detected. */ useCcr?: boolean; /** * Optional Codex-specific configuration overrides. * Only applicable to CodexEngine; merged with DEFAULT_CODEX_CONFIG. */ codexConfig?: Partial<CodexEngineConfig>; } /** * Callback to persist Claude session ID after initialization. */ export type ClaudeSessionPersistCallback = (sessionId: string) => Promise<void>; /** * Management information extracted from Claude SDK system:init message. */ export interface ClaudeManagementInfo { tools?: string[]; agents?: string[]; /** Plugins with name and path (SDK returns { name, path }[]) */ plugins?: Array<{ name: string; path?: string; }>; skills?: string[]; mcpServers?: Array<{ name: string; status: string; }>; slashCommands?: string[]; model?: string; permissionMode?: string; cwd?: string; outputStyle?: string; betas?: string[]; claudeCodeVersion?: string; apiKeySource?: string; } /** * Callback to persist management information after SDK initialization. */ export type ManagementInfoPersistCallback = (info: ClaudeManagementInfo) => Promise<void>; export type EngineName = 'claude' | 'codex' | 'cursor' | 'qwen' | 'glm'; export interface EngineExecutionContext { /** * Emit a realtime event to all connected clients for the current session. */ emit(event: RealtimeEvent): void; /** * Optional callback to persist Claude session ID after SDK initialization. * Only called by ClaudeEngine when projectId is provided. */ persistClaudeSessionId?: ClaudeSessionPersistCallback; /** * Optional callback to persist management information after SDK initialization. * Only called by ClaudeEngine when dbSessionId is provided. */ persistManagementInfo?: ManagementInfoPersistCallback; } export interface AgentEngine { name: EngineName; /** * Whether this engine can act as an MCP client natively. */ supportsMcp?: boolean; initializeAndRun(options: EngineInitOptions, ctx: EngineExecutionContext): Promise<void>; } /** * Represents a running engine execution that can be cancelled. */ export interface RunningExecution { requestId: string; sessionId: string; engineName: EngineName; abortController: AbortController; startedAt: Date; }