UNPKG

solver-sdk

Version:

SDK для интеграции с Code Solver Backend API (совместимо с браузером и Node.js), с поддержкой функциональности мышления (Thinking Mode)

183 lines (146 loc) 13 kB
# Справочник WebSocket событий SDK Этот документ содержит полный список WebSocket событий, используемых в SDK версии 1.7.2. ## Содержание - [Типы событий](#типы-событий) - [События рассуждений и сессий](#события-рассуждений-и-сессий) - [События контекста](#события-контекста) - [События чата и мышления](#события-чата-и-мышления) - [События разработки и тестирования](#события-разработки-и-тестирования) - [События соединения](#события-соединения) - [События индексации](#события-индексации) - [События зависимостей](#события-зависимостей) - [Использование событий](#использование-событий) - [Низкоуровневое API](#низкоуровневое-api) - [Высокоуровневое API](#высокоуровневое-api) - [Диагностика ошибок](#диагностика-ошибок) ## Типы событий ### События рассуждений и сессий | Константа SDK | Строковое значение | Описание | Данные | |---------------|-------------------|----------|--------| | `REASONING_CREATED` | `reasoning:created` | Создано новое рассуждение | `{ reasoningId: string, metadata?: object }` | | `JOINED_REASONING` | `joined_reasoning` | Клиент присоединился к рассуждению | `{ reasoningId: string, success: boolean }` | | `JOIN_REASONING` | `join_reasoning` | Запрос на присоединение к рассуждению | `{ reasoningId: string }` | | `JOIN_RESPONSE` | `join_response` | Ответ на запрос присоединения | `{ success: boolean, reasoningId: string, error?: string }` | | `JOIN` | `join` | Запрос на присоединение к пространству имен | `{ namespace: string }` | | `JOINED` | `joined` | Успешное присоединение к пространству имен | `{ namespace: string, socketId: string }` | | `REASONING_STATUS_UPDATE` | `reasoning_status_update` | Обновление статуса рассуждения | `{ reasoningId: string, status: string }` | | `START_REASONING` | `start_reasoning` | Запрос на начало рассуждения | `{ reasoningId: string }` | | `REASONING_STARTED` | `reasoning_started` | Рассуждение начато | `{ reasoningId: string, startTime: string }` | ### События контекста | Константа SDK | Строковое значение | Описание | Данные | |---------------|-------------------|----------|--------| | `UPDATE_CONTEXT_OPTIONS` | `update_context_options` | Обновление опций контекста | `{ reasoningId: string, options: ContextOptions }` | | `ESTIMATE_CONTEXT` | `estimate_context` | Запрос на оценку контекста | `{ reasoningId: string, projectId: string }` | | `CONTEXT_OPTIONS_UPDATED` | `context_options_updated` | Опции контекста обновлены | `{ reasoningId: string, options: ContextOptions }` | | `CONTEXT_ESTIMATION` | `context_estimation` | Результат оценки контекста | `{ reasoningId: string, estimation: ContextEstimation }` | | `SET_PROJECT_CONTEXT` | `set_project_context` | Установка контекста проекта | `{ reasoningId: string, projectId: string }` | | `PROJECT_CONTEXT_SET` | `project_context_set` | Контекст проекта установлен | `{ reasoningId: string, projectId: string, success: boolean }` | ### События чата и мышления | Константа SDK | Строковое значение | Описание | Данные | |---------------|-------------------|----------|--------| | `CHAT_REQUEST` | `chat_request` | Запрос на чат | `{ reasoningId: string, messages: Message[] }` | | `CHAT_STARTED` | `chat_started` | Начало обработки запроса чата | `{ reasoningId: string, requestId: string }` | | `MESSAGE_START` | `message_start` | Начало сообщения от модели | `{ model: string, type: string, id: string }` | | `CONTENT_BLOCK_START` | `content_block_start` | Начало блока контента | `{ index: number, type: string, id: string }` | | `THINKING_DELTA` | `thinking_delta` | Фрагмент мышления | `{ text: string, index: number }` | | `THINKING_BLOCK_DELTA` | `thinking_block_delta` | Дельта блока мышления | `{ delta: string, index: number }` | | `TEXT_DELTA` | `text_delta` | Фрагмент текстового ответа | `{ text: string, index: number }` | | `CONTENT_BLOCK_DELTA` | `content_block_delta` | Общая дельта блока контента | `{ delta: string, index: number, type: string }` | | `CONTENT_BLOCK_STOP` | `content_block_stop` | Завершение блока контента | `{ index: number, type: string, id: string }` | | `MESSAGE_STOP` | `message_stop` | Завершение сообщения | `{ type: string, id: string }` | | `CHAT_COMPLETE` | `chat_complete` | Завершение чата | `{ reasoningId: string, requestId: string }` | ### События разработки и тестирования | Константа SDK | Строковое значение | Описание | Данные | |---------------|-------------------|----------|--------| | `TYPESCRIPT_ERRORS` | `typescript_errors` | Запрос на получение ошибок TypeScript | `{ reasoningId: string, projectId: string, files: string[] }` | | `TYPESCRIPT_ERRORS_RECEIVED` | `typescript_errors_received` | Получены ошибки TypeScript | `{ reasoningId: string, errors: TypeScriptError[] }` | | `CREATE_TEST_MODULES` | `create_test_modules` | Запрос на создание тестовых модулей | `{ reasoningId: string, files: string[] }` | | `TEST_MODULES_CREATED` | `test_modules_created` | Тестовые модули созданы | `{ reasoningId: string, modules: TestModule[] }` | | `ANALYZE_CODE` | `analyze_code` | Запрос на анализ кода | `{ reasoningId: string, code: string, language: string }` | | `CODE_ANALYSIS` | `code_analysis` | Результат анализа кода | `{ reasoningId: string, analysis: CodeAnalysis }` | ### События соединения | Константа SDK | Строковое значение | Описание | Данные | |---------------|-------------------|----------|--------| | `AUTHENTICATE` | `authenticate` | Аутентификация клиента | `{ apiKey: string }` | | `AUTHENTICATION_RESULT` | `authentication_result` | Результат аутентификации | `{ success: boolean, error?: string }` | | `CONNECTION_PING` | `connection_ping` | Проверка активности соединения | `{ timestamp: number, id: string }` | | `CONNECTION_PONG` | `connection_pong` | Ответ на проверку соединения | `{ timestamp: number, id: string, serverTime: number }` | | `RECONNECT_TOKEN` | `reconnect_token` | Токен для переподключения | `{ token: string, namespace: string }` | | `DISCONNECT` | `disconnect` | Отключение от сервера | `{ reason: string }` | | `ERROR` | `error` | Ошибка соединения | `{ message: string, code?: string, details?: any }` | | `CONNECTION_TIMEOUT` | `connection_timeout` | Таймаут соединения | `{ namespace: string, lastPingTime: number }` | ### События индексации | Константа SDK | Строковое значение | Описание | Данные | |---------------|-------------------|----------|--------| | `INDEXING_START` | `indexing_start` | Начало процесса индексации | `{ projectId: string }` | | `INDEXING_PROGRESS` | `indexing_progress` | Обновление прогресса индексации | `{ projectId: string, totalFiles: number, indexedFiles: number, progress: number }` | | `INDEXING_COMPLETE` | `indexing_complete` | Завершение индексации | `{ projectId: string, totalFiles: number, indexedFiles: number }` | | `INDEXING_ERROR` | `indexing_error` | Ошибка при индексации | `{ projectId: string, message: string }` | | `FILE_INDEXED` | `file_indexed` | Отдельный файл проиндексирован | `{ projectId: string, filePath: string, fileIndex: object }` | | `FILE_INDEX_ERROR` | `file_index_error` | Ошибка при индексации файла | `{ projectId: string, filePath: string, message: string }` | ### События зависимостей | Константа SDK | Строковое значение | Описание | Данные | |---------------|-------------------|----------|--------| | `DEPENDENCY_UPDATE` | `dependency_update` | Обновление зависимостей | `{ projectId: string, files: string[], type: string }` | | `DEPENDENCY_ANALYSIS` | `dependency_analysis` | Анализ зависимостей | `{ projectId: string, analysis: DependencyAnalysis }` | | `DEPENDENCY_GRAPH_READY` | `dependency_graph_ready` | Граф зависимостей готов | `{ projectId: string, nodes: number, edges: number }` | | `DEPENDENCY_CYCLE_FOUND` | `dependency_cycle_found` | Найден цикл в зависимостях | `{ projectId: string, cycle: string[] }` | ## Использование событий ### Низкоуровневое API Для работы с событиями через низкоуровневое API WebSocket клиента: ```javascript const wsClient = sdk.getWebSocketClient(); // Подписка на событие wsClient.on('thinking_delta', (data) => { console.log('Получен фрагмент мышления:', data.text); }); // Отправка события wsClient.emit('join_reasoning', { reasoningId: 'my-reasoning-id' }); // Отправка события с ожиданием ответа const response = await wsClient.emitWithResponse('join_reasoning', { reasoningId: 'my-reasoning-id' }, 'join_response', // Тип ожидаемого ответа 10000 // Таймаут в миллисекундах ); ``` ### Высокоуровневое API Для работы с событиями через высокоуровневое API модулей SDK (версия 1.7.2+): ```javascript // Чат и рассуждения await sdk.chat.connectWebSocket(); sdk.chat.on('thinking_delta', (data) => { console.log('Фрагмент мышления:', data.text); }); // Зависимости await sdk.dependencies.connectWebSocket(projectId); sdk.dependencies.on('dependency_update', (data) => { console.log('Обновление зависимостей:', data); }); // Проекты и индексация await sdk.projects.connectWebSocket(); sdk.projects.on('indexing_progress', (data) => { console.log('Прогресс индексации:', data.progress); }); ``` ## Диагностика ошибок Возможные причины проблем с событиями WebSocket: 1. **Неверный формат события** - убедитесь, что отправляете корректные данные в соответствии с ожидаемой структурой. 2. **Неправильный порядок событий** - некоторые события должны следовать в определенном порядке (например, `authenticate``join``join_reasoning`). 3. **Таймауты** - события с ожиданием ответа могут завершиться ошибкой по таймауту. 4. **Разрыв соединения** - проверьте стабильность соединения с помощью механизма ping/pong. Для диагностики используйте: ```javascript // Включение расширенного логирования const sdk = new CodeSolverSDK({ websocket: { debug: true } }); // Диагностика соединения const diagnostics = sdk.getWebSocketClient().diagnoseConnection(WebSocketNamespace.REASONING); console.log('Диагностика:', diagnostics); // Мониторинг всех событий sdk.getWebSocketClient().onAny((eventName, ...args) => { console.log(`Событие ${eventName}:`, args); }); ```