UNPKG

solver-sdk

Version:

SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system

179 lines 8.94 kB
/** * API для работы с чатом с поддержкой Anthropic Extended Thinking */ import { IHttpClient } from '../../interfaces/http-client'; import { ChatService } from './interfaces'; import { ChatMessage, ChatOptions, ChatResponse, ChatStreamChunk, ChatStreamOptions } from './models'; import { ChatCancelMethods } from './cancel-methods'; /** * Опции для ChatApi */ interface ChatApiOptions { debug?: boolean | 'verbose' | 'silent' | 'error' | 'warn' | 'info' | 'debug'; streamLogging?: { sseEvents?: boolean; streamChunks?: boolean; eventCallbacks?: boolean; importantOnly?: boolean; }; } export * from './models'; export * from './interfaces'; /** * 🔧 WorkAI: Persistent SSE Connection Interface * Represents a long-lived SSE connection for chat session */ export interface PersistentSSEConnection { id: string; sessionId: string; isConnected: boolean; lastPing: number; createdAt: number; waitForReady(): Promise<void>; close(reason?: string): Promise<void>; on(event: 'ping' | 'error' | 'close' | 'reconnecting', callback: (data?: any) => void): void; off(event: string, callback: (data?: any) => void): void; } /** * API для работы с чатом с поддержкой Anthropic Extended Thinking */ export declare class ChatApi extends ChatCancelMethods implements ChatService { private options; /** Logger для ChatApi с настраиваемыми уровнями */ private readonly logger; /** * Создает новый экземпляр API для работы с чатом * @param {IHttpClient} httpClient HTTP клиент * @param {ChatApiOptions} options Опции логирования (опционально) */ constructor(httpClient: IHttpClient, options?: ChatApiOptions); /** * 🔧 WorkAI: Выполняет streaming GET запрос используя нативный fetch * Используется для persistent SSE connections, где axios не работает * * @param url - Полный URL для запроса * @param headers - HTTP заголовки * @returns Promise<Response> с ReadableStream body * * Best practice from undici docs: Node 18+ has global fetch */ private fetchStream; /** * Отправляет сообщение в чат и получает ответ от модели * @param {ChatMessage[]} messages Массив сообщений для отправки * @param {ChatOptions} [options] Дополнительные параметры * @returns {Promise<ChatResponse>} Ответ модели */ chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>; /** * Алиас для метода chat для совместимости с другими SDK * @param {ChatMessage[]} messages Массив сообщений для отправки * @param {ChatOptions} [options] Дополнительные параметры * @returns {Promise<ChatResponse>} Ответ модели */ chatCompletion(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>; /** * Проверяет доступность API чата * @returns {Promise<boolean>} Результат проверки */ checkAvailability(): Promise<boolean>; /** * Отправляет сообщение в чат и получает ответ от модели * с автоматическим переключением между регионами при ошибках перегрузки * @param {ChatMessage[]} messages Массив сообщений для отправки * @param {ChatOptions} [options] Дополнительные параметры * @returns {Promise<ChatResponse>} Ответ модели */ chatWithRegionFailover(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>; /** * Отправляет одиночный запрос к модели с автоматическим переключением регионов * @param {string} prompt Запрос к модели * @param {ChatOptions} [options] Дополнительные параметры * @returns {Promise<string>} Текстовый ответ модели */ sendPromptWithRegionFailover(prompt: string, options?: ChatOptions): Promise<string>; /** * Потоковый чат с поддержкой thinking * @param {ChatMessage[]} messages Массив сообщений для отправки * @param {ChatStreamOptions} [options] Дополнительные параметры * @returns {AsyncGenerator<ChatStreamChunk>} Асинхронный генератор чанков ответа */ streamChat(messages: ChatMessage[], options?: ChatStreamOptions & { onEvent?: (eventType: string, data: any) => void; socketId?: string; }): AsyncGenerator<ChatStreamChunk>; /** * Отправляет одиночный запрос в потоковом режиме * @param {string} prompt Запрос к модели * @param {ChatStreamOptions} [options] Дополнительные параметры * @returns {AsyncGenerator<ChatStreamChunk>} Асинхронный генератор чанков ответа */ streamPrompt(prompt: string, options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>; /** * 🔧 WorkAI: Send continuation via persistent SSE connection * Uses existing connection instead of creating new one */ sendContinuationViaPersistent(connection: PersistentSSEConnection, messages: ChatMessage[], options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>; /** * Отправляет continuation запрос для interleaved thinking */ sendContinuation(messages: ChatMessage[], options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>; /** * 🔄 Продолжает прерванный ответ (resume после timeout) * @param {string} originalRequestId ID оригинального запроса * @param {ChatMessage[]} messages История сообщений * @param {string} partialText Частично полученный текст * @param {ChatStreamOptions} [options] Дополнительные параметры * @returns {AsyncGenerator<ChatStreamChunk>} Асинхронный генератор чанков */ resumeChat(originalRequestId: string, messages: ChatMessage[], partialText: string, options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>; /** * Валидирует опции чата согласно документации Anthropic * @private */ private validateChatOptions; /** * Подготавливает параметры запроса для отправки на сервер * @param {ChatMessage[]} messages Сообщения * @param {ChatOptions} options Опции * @returns {Record<string, any>} Параметры запроса */ private buildRequestParams; /** * Конвертирует ответ API в ChatStreamChunk (только официальные поля Anthropic API) * @private */ private convertToStreamChunk; /** * Обрабатывает автоматическое выполнение инструментов * @private */ private handleAutoToolExecution; /** * 🔌 Pre-subscribe к SSE для получения continuation response * * Решает race condition: клиент подключается к SSE ПЕРЕД отправкой tool_result, * гарантируя получение continuation response. * * Flow: * 1. await subscribeToResponse(requestId) - подключение к SSE * 2. await sendContinuation(messages) - отправка tool_result * 3. for await (const chunk of subscription) - получение response * * @param clientRequestId - ID запроса клиента (передается в tool_result) * @param options - Опции подключения * @returns AsyncGenerator SSE events */ subscribeToResponse(clientRequestId: string, options: { projectId: string; onSubscribed?: () => void; persistentConnection?: PersistentSSEConnection; }): AsyncGenerator<ChatStreamChunk>; /** * 🔧 WorkAI: Open persistent SSE connection for chat session */ openPersistentSSE(sessionId: string, clientRequestId: string, options: { projectId: string; }): Promise<PersistentSSEConnection>; } //# sourceMappingURL=index.d.ts.map