/** * OpenCode 客户端模块 * 封装 OpenCode SDK,自动启动服务器并管理会话 */ import { type OpencodeClient } from '@opencode-ai/sdk'; import type { Event, TextPart, ReasoningPart, ToolPart, Message } from '@opencode-ai/sdk/client'; /** OpenCode 配置 */ export interface OpencodeConfig { directory?: string; } /** OpenCode 事件数据 */ export interface OpencodeEventData { type: string; properties: Record; } export type EventCallback = (event: OpencodeEventData) => void; export interface ImageAttachment { data: Buffer; mimeType: string; filename?: string; } /** OpenCode 服务器和客户端封装 */ export declare class OpencodeWrapper { private client; private serverCloseFn; private serverUrl; private directory?; constructor(config: OpencodeConfig); /** 启动 OpenCode 服务器(随机端口) */ start(): Promise; /** 停止 OpenCode 服务器 */ stop(): void; /** 获取服务器 URL */ getServerUrl(): string | null; /** 检查是否已启动 */ isStarted(): boolean; private ensureClient; /** 创建新会话 */ createSession(): Promise; /** 发送提示消息 */ sendPrompt(sessionId: string, prompt: string, images?: ImageAttachment[]): Promise; /** 中止会话 */ abortSession(sessionId: string): Promise; /** 订阅事件流 */ subscribeToEvents(sessionId: string, callback: EventCallback): Promise<() => void>; /** 获取会话状态 */ getSessionStatus(sessionId: string): Promise<'idle' | 'busy' | 'unknown'>; /** 获取原始客户端实例 */ getClient(): OpencodeClient | null; /** 执行命令 */ executeCommand(sessionId: string, command: string, args?: string): Promise; /** 获取可用命令列表 */ listCommands(): Promise>; /** 获取可用模型列表 */ listModels(): Promise>; /** 获取会话信息 */ getSession(sessionId: string): Promise | null>; /** 获取会话消息列表 */ getSessionMessages(sessionId: string): Promise>>; replyQuestion(requestId: string, answers: string[][]): Promise; rejectQuestion(requestId: string): Promise; } /** 创建 OpenCode 封装实例 */ export declare function createOpencodeWrapper(config: OpencodeConfig): OpencodeWrapper; /** 从消息部分提取文本 */ export declare function extractTextFromPart(part: unknown): string | null; /** 工具调用提取结果 */ export interface ToolCallInfo { name: string; state: string; title?: string; input?: Record; output?: string; error?: string; } /** 从消息部分提取工具调用 */ export declare function extractToolCallFromPart(part: unknown): ToolCallInfo | null; export { type Event, type TextPart, type ReasoningPart, type ToolPart, type Message }; //# sourceMappingURL=client.d.ts.map