import { EarthServerConfig } from '../types'; import { MCPToolParams } from '../MCPClients/type'; export interface EarthServerLLMServiceOptions extends EarthServerConfig { tools?: MCPToolParams[]; } export declare class EarthServerLLMService { private apiBase; private productKey; private productVersion?; private model; private token?; private getToken?; private onTokenExpired?; private tools; private sessionId; /** * sessionId 变化回调。 * 在「ensureSession 新建会话」与「响应头 X-Session-Id 回写」两条路径上触发, * 供上层(chatStore)回写历史项 id。复聊时的 setSessionId 不触发本回调。 */ onSessionIdChange?: (id: string) => void; constructor(options: EarthServerLLMServiceOptions); /** * 更新工具列表 */ updateTools(tools: MCPToolParams[]): void; /** * 解析当前 token(支持动态获取,便于宿主刷新) */ private resolveToken; /** * 复聊时注入已有 sessionId(来自历史项 id)。 * 直接赋值,不触发 onSessionIdChange——调用方已知该 id,无需回写。 */ setSessionId(id: string): void; /** * 清空当前 sessionId(新建对话时调用,使下次 streamChat 经 ensureSession 新建会话) */ clearSessionId(): void; /** * 持久化 sessionId,并在变化时通知上层(用于新建会话、响应头回写后回写历史项 id) */ private updateSessionId; /** * 创建 / 恢复会话,返回有效 sessionId * 不带已存 sessionId 时创建新会话;带有效 sessionId 时返回该会话 */ private ensureSession; /** * 发送消息并获取流式响应 * 契约与 LLMService.streamChat 一致: * - 文本增量通过 onChunk 回调 * - 工具调用时返回 JSON `{ type: 'tool_calls', tool_calls: [...] }`(不传给 onChunk) */ streamChat(messages: Array<{ role: 'user' | 'assistant' | 'system'; content: string; }>, onChunk: (chunk: string) => void, abortController?: AbortController): Promise; }