solver-sdk 6.1.4 → 6.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +176 -148
- package/dist/cjs/api/chat-api/stream-utils.js +10 -3
- package/dist/cjs/api/chat-api/stream-utils.js.map +1 -1
- package/dist/esm/api/chat-api/stream-utils.js +10 -3
- package/dist/esm/api/chat-api/stream-utils.js.map +1 -1
- package/dist/types/api/chat-api/stream-utils.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Code Solver SDK v6.
|
|
1
|
+
# Code Solver SDK v6.1.5
|
|
2
2
|
|
|
3
3
|
Backend SDK для интеграции с Code Solver API
|
|
4
4
|
|
|
@@ -8,62 +8,36 @@ Backend SDK для интеграции с Code Solver API
|
|
|
8
8
|
npm install solver-sdk
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
## 🚀
|
|
11
|
+
## 🚀 Быстрый старт
|
|
12
12
|
|
|
13
|
-
###
|
|
13
|
+
### Локальная разработка
|
|
14
14
|
```typescript
|
|
15
15
|
import { CodeSolverSDK } from 'solver-sdk';
|
|
16
16
|
|
|
17
|
-
const sdk =
|
|
17
|
+
const sdk = await CodeSolverSDK.create({
|
|
18
18
|
baseURL: 'http://localhost:3000',
|
|
19
19
|
apiKey: 'your-api-key'
|
|
20
20
|
});
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
### Production
|
|
23
|
+
### Production с OAuth
|
|
24
24
|
```typescript
|
|
25
|
-
import { CodeSolverSDK } from 'solver-sdk';
|
|
26
|
-
|
|
27
|
-
// ✅ OAuth токен требуется для WebSocket в production
|
|
28
25
|
const sdk = await CodeSolverSDK.create({
|
|
29
26
|
baseURL: 'https://workai.su/api/v1',
|
|
30
|
-
headers: {
|
|
31
|
-
|
|
32
|
-
},
|
|
33
|
-
webSocket: {
|
|
34
|
-
enabled: true, // Включить WebSocket для real-time уведомлений
|
|
35
|
-
debug: false, // Отключить debug логи в production
|
|
36
|
-
connectionTimeout: 10000,
|
|
37
|
-
maxRetries: 3
|
|
38
|
-
}
|
|
27
|
+
headers: { Authorization: `Bearer ${oauth_token}` },
|
|
28
|
+
webSocket: { enabled: true }
|
|
39
29
|
});
|
|
40
|
-
|
|
41
|
-
// Проверка здоровья API
|
|
42
|
-
const isHealthy = await sdk.checkHealth();
|
|
43
|
-
console.log('API доступен:', isHealthy);
|
|
44
30
|
```
|
|
45
31
|
|
|
46
|
-
###
|
|
32
|
+
### 🔑 Динамическое обновление токена (v6.1.4+)
|
|
47
33
|
```typescript
|
|
48
|
-
// 1. Получение access token через OAuth flow
|
|
49
|
-
const response = await fetch('https://workai.su/api/v1/oauth/token', {
|
|
50
|
-
method: 'POST',
|
|
51
|
-
headers: { 'Content-Type': 'application/json' },
|
|
52
|
-
body: JSON.stringify({
|
|
53
|
-
grant_type: 'authorization_code',
|
|
54
|
-
code: 'authorization_code_from_oauth_flow',
|
|
55
|
-
client_id: 'your_client_id',
|
|
56
|
-
client_secret: 'your_client_secret'
|
|
57
|
-
})
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
const { access_token, refresh_token } = await response.json();
|
|
61
|
-
|
|
62
|
-
// 2. Использование токена в SDK
|
|
63
34
|
const sdk = await CodeSolverSDK.create({
|
|
64
35
|
baseURL: 'https://workai.su/api/v1',
|
|
65
|
-
|
|
66
|
-
|
|
36
|
+
getAuthToken: async () => {
|
|
37
|
+
if (authManager.isTokenExpired()) {
|
|
38
|
+
await authManager.refreshAccessToken();
|
|
39
|
+
}
|
|
40
|
+
return authManager.getAccessToken();
|
|
67
41
|
}
|
|
68
42
|
});
|
|
69
43
|
```
|
|
@@ -72,163 +46,217 @@ const sdk = await CodeSolverSDK.create({
|
|
|
72
46
|
|
|
73
47
|
### Projects API (`sdk.projects`)
|
|
74
48
|
```typescript
|
|
75
|
-
//
|
|
76
|
-
createProject(name: string, data?: any): Promise<Project>
|
|
49
|
+
// Управление проектами
|
|
77
50
|
getAllProjects(): Promise<Project[]>
|
|
78
51
|
getProject(projectId: string): Promise<Project>
|
|
79
|
-
|
|
52
|
+
createProject(name: string, data?: any): Promise<Project>
|
|
53
|
+
findOrCreateProject(projectName: string): Promise<Project>
|
|
80
54
|
deleteProject(projectId: string): Promise<void>
|
|
81
55
|
|
|
82
|
-
//
|
|
83
|
-
getProjectState(projectId: string, clientRootHash?: string): Promise<ProjectState>
|
|
56
|
+
// Состояние и синхронизация
|
|
57
|
+
getProjectState(projectId: string, clientRootHash?: string): Promise<ProjectState>
|
|
84
58
|
getIndexingStatus(projectId: string): Promise<any>
|
|
85
59
|
startIndexing(projectId: string, options?: any): Promise<any>
|
|
86
60
|
cancelIndexing(projectId: string): Promise<boolean>
|
|
87
|
-
resetIndexing(projectId: string): Promise<any>
|
|
88
|
-
restartIndexing(projectId: string): Promise<any>
|
|
61
|
+
resetIndexing(projectId: string): Promise<any>
|
|
62
|
+
restartIndexing(projectId: string): Promise<any>
|
|
63
|
+
clearIndexingError(projectId: string): Promise<boolean>
|
|
89
64
|
|
|
90
|
-
// Session Recovery
|
|
91
|
-
getRecoveryStatus(projectId: string): Promise<any>
|
|
92
|
-
resumeSync(projectId: string, options?: any): Promise<any>
|
|
93
|
-
cancelRecovery(projectId: string): Promise<any>
|
|
94
|
-
initializeDeltaSync(projectId: string, clientRootHash: string): Promise<any>
|
|
95
|
-
|
|
96
|
-
// Статус и управление
|
|
97
|
-
clearIndexingError(projectId: string): Promise<boolean> // Очистить ошибку индексации
|
|
65
|
+
// Session Recovery
|
|
66
|
+
getRecoveryStatus(projectId: string): Promise<any>
|
|
67
|
+
resumeSync(projectId: string, options?: any): Promise<any>
|
|
68
|
+
cancelRecovery(projectId: string): Promise<any>
|
|
69
|
+
initializeDeltaSync(projectId: string, clientRootHash: string): Promise<any>
|
|
98
70
|
|
|
99
71
|
// Диагностика
|
|
100
|
-
getFilePathMapping(projectId: string): Promise<any>
|
|
72
|
+
getFilePathMapping(projectId: string): Promise<any>
|
|
101
73
|
```
|
|
102
74
|
|
|
103
75
|
### Delta Manager API (`sdk.deltaManager`)
|
|
104
76
|
```typescript
|
|
105
|
-
//
|
|
106
|
-
syncEncryptedChunks(
|
|
107
|
-
|
|
77
|
+
// Синхронизация чанков (автоматическая инициализация + батчинг + финализация)
|
|
78
|
+
syncEncryptedChunks(
|
|
79
|
+
projectId: string,
|
|
80
|
+
encryptedChunks: any[],
|
|
81
|
+
rootHash: string,
|
|
82
|
+
options?: { batchSize?: number; onProgress?: (current, total) => void }
|
|
83
|
+
): Promise<any>
|
|
84
|
+
|
|
85
|
+
getSyncStatus(projectId: string): Promise<SyncStatus>
|
|
108
86
|
cancelSync(projectId: string): Promise<boolean>
|
|
109
|
-
cleanupDeletedFiles(projectId: string, activeFiles: any[]): Promise<any>
|
|
87
|
+
cleanupDeletedFiles(projectId: string, activeFiles: any[]): Promise<any>
|
|
110
88
|
```
|
|
111
89
|
|
|
112
90
|
### Chat API (`sdk.chat`)
|
|
113
91
|
```typescript
|
|
114
92
|
// Основные методы
|
|
115
|
-
chat(messages:
|
|
116
|
-
chatCompletion(messages:
|
|
117
|
-
streamChat(messages:
|
|
118
|
-
streamPrompt(prompt: string, options?:
|
|
119
|
-
sendContinuation(messages:
|
|
120
|
-
|
|
121
|
-
// Failover
|
|
122
|
-
chatWithRegionFailover(messages:
|
|
123
|
-
sendPromptWithRegionFailover(prompt: string, options?:
|
|
124
|
-
checkAvailability(): Promise<boolean>
|
|
93
|
+
chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
|
|
94
|
+
chatCompletion(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
|
|
95
|
+
streamChat(messages: ChatMessage[], options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
96
|
+
streamPrompt(prompt: string, options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
97
|
+
sendContinuation(messages: ChatMessage[], options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
98
|
+
|
|
99
|
+
// Failover
|
|
100
|
+
chatWithRegionFailover(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>
|
|
101
|
+
sendPromptWithRegionFailover(prompt: string, options?: ChatOptions): Promise<string>
|
|
102
|
+
checkAvailability(): Promise<boolean>
|
|
125
103
|
```
|
|
126
104
|
|
|
127
105
|
### Search API (`sdk.search`)
|
|
128
106
|
```typescript
|
|
129
|
-
|
|
130
|
-
|
|
107
|
+
searchCode(projectId: string, query: string, options?: any): Promise<any[]>
|
|
108
|
+
searchFunctions(projectId: string, query: string, options?: any): Promise<any[]>
|
|
109
|
+
getFunctionStats(projectId: string): Promise<{stats: {totalFunctions: number}}>
|
|
110
|
+
semanticSearch(projectId: string, query: string, options?: any): Promise<any[]>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Models API (`sdk.models`)
|
|
114
|
+
```typescript
|
|
115
|
+
getAllModels(): Promise<any[]>
|
|
116
|
+
getProviderModels(providerId: string): Promise<any>
|
|
117
|
+
getAvailableModels(): Promise<any[]>
|
|
118
|
+
getModelInfo(modelId: string): Promise<any>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Updates API (`sdk.updates`)
|
|
122
|
+
```typescript
|
|
123
|
+
checkForUpdates(options: UpdateCheckOptions): Promise<UpdateResponse>
|
|
124
|
+
getChangelog(version: string, locale: string): Promise<string>
|
|
125
|
+
getLatestVersion(channel?: string): Promise<LatestVersionInfo>
|
|
126
|
+
sendStats(event: UpdateStatsEvent): Promise<void>
|
|
127
|
+
checkAvailability(): Promise<boolean>
|
|
131
128
|
```
|
|
132
129
|
|
|
133
130
|
### WebSocket API (`sdk.projectSync`)
|
|
134
131
|
```typescript
|
|
135
|
-
//
|
|
132
|
+
// Подключение
|
|
133
|
+
await sdk.connectWebSocket()
|
|
134
|
+
sdk.disconnectWebSocket()
|
|
135
|
+
sdk.isWebSocketConnected
|
|
136
|
+
|
|
137
|
+
// Подписка
|
|
138
|
+
sdk.projectSync.subscribeToProject(projectId)
|
|
139
|
+
sdk.projectSync.unsubscribeFromProject(projectId)
|
|
140
|
+
|
|
141
|
+
// События
|
|
142
|
+
sdk.projectSync.on('sync-status-update', callback) // {projectId, status, timestamp}
|
|
143
|
+
sdk.projectSync.on('sync-progress', callback) // {projectId, progress, stage, currentChunk, totalChunks}
|
|
144
|
+
sdk.projectSync.on('sync-completed', callback) // {projectId, processedChunks, embeddingsCreated}
|
|
145
|
+
sdk.projectSync.on('sync-error', callback) // {projectId, error, timestamp}
|
|
146
|
+
```
|
|
136
147
|
|
|
137
|
-
|
|
138
|
-
await sdk.connectWebSocket(); // Подключиться к WebSocket gateway
|
|
139
|
-
sdk.projectSync.subscribeToProject(projectId); // Подписаться на события проекта
|
|
148
|
+
## 🔧 Основные принципы
|
|
140
149
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
sdk.projectSync.on('sync-completed', callback); // Завершение синхронизации
|
|
145
|
-
sdk.projectSync.on('sync-error', callback); // Ошибка синхронизации
|
|
150
|
+
### Архитектура
|
|
151
|
+
- **Backend SDK** — только HTTP API клиент, НЕ работает с файловой системой
|
|
152
|
+
- **Client Extension** — сканирует файлы, создает chunks, вычисляет hashes
|
|
146
153
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
154
|
+
### Синхронизация
|
|
155
|
+
```typescript
|
|
156
|
+
// ✅ Единственный правильный способ:
|
|
157
|
+
await sdk.deltaManager.syncEncryptedChunks(projectId, chunks, rootHash, {
|
|
158
|
+
batchSize: 50,
|
|
159
|
+
onProgress: (current, total) => console.log(`${current}/${total}`)
|
|
160
|
+
});
|
|
150
161
|
```
|
|
151
162
|
|
|
152
|
-
|
|
163
|
+
### Session Recovery
|
|
153
164
|
```typescript
|
|
154
|
-
|
|
165
|
+
// Всегда проверять при старте проекта
|
|
166
|
+
const recovery = await sdk.projects.getRecoveryStatus(projectId);
|
|
167
|
+
if (recovery.needsRecovery) {
|
|
168
|
+
// Показать диалог: Continue (67%) | Start Fresh
|
|
169
|
+
await sdk.projects.resumeSync(projectId); // или cancelRecovery()
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### WebSocket
|
|
174
|
+
- Требуется **OAuth токен** в production
|
|
175
|
+
- Автоматическое переподключение при разрыве
|
|
176
|
+
- События фильтруются по `projectId`
|
|
177
|
+
- Fallback на HTTP polling если недоступен
|
|
178
|
+
|
|
179
|
+
### Авторизация
|
|
180
|
+
- **Локально**: `apiKey` для HTTP API
|
|
181
|
+
- **Production**: OAuth `access_token` для HTTP + WebSocket
|
|
182
|
+
- **v6.1.4+**: `getAuthToken()` для автоматического обновления токенов
|
|
155
183
|
|
|
156
|
-
|
|
184
|
+
## 📝 Примеры
|
|
185
|
+
|
|
186
|
+
### Базовый workflow
|
|
187
|
+
```typescript
|
|
157
188
|
const sdk = await CodeSolverSDK.create({
|
|
158
189
|
baseURL: 'https://workai.su/api/v1',
|
|
159
|
-
|
|
160
|
-
Authorization: 'Bearer your_oauth_access_token' // ✅ OAuth токен обязателен
|
|
161
|
-
},
|
|
162
|
-
webSocket: {
|
|
163
|
-
enabled: true, // Включить WebSocket (по умолчанию true)
|
|
164
|
-
debug: true // Логи для отладки
|
|
165
|
-
}
|
|
190
|
+
getAuthToken: () => authManager.getAccessToken()
|
|
166
191
|
});
|
|
167
192
|
|
|
168
|
-
//
|
|
169
|
-
await sdk.
|
|
193
|
+
// 1. Найти/создать проект
|
|
194
|
+
const project = await sdk.projects.findOrCreateProject('/path/to/project');
|
|
170
195
|
|
|
171
|
-
//
|
|
172
|
-
sdk.
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
196
|
+
// 2. Проверить recovery
|
|
197
|
+
const recovery = await sdk.projects.getRecoveryStatus(project.id);
|
|
198
|
+
if (recovery.needsRecovery) {
|
|
199
|
+
await sdk.projects.resumeSync(project.id);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
176
202
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
console.log(
|
|
181
|
-
|
|
203
|
+
// 3. Проверить нужна ли синхронизация
|
|
204
|
+
const state = await sdk.projects.getProjectState(project.id, clientRootHash);
|
|
205
|
+
if (!state.syncRequired) {
|
|
206
|
+
console.log('Проект синхронизирован');
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
182
209
|
|
|
183
|
-
|
|
184
|
-
|
|
210
|
+
// 4. Подключить WebSocket для прогресса
|
|
211
|
+
await sdk.connectWebSocket();
|
|
212
|
+
sdk.projectSync.subscribeToProject(project.id);
|
|
213
|
+
sdk.projectSync.on('sync-progress', (data) => {
|
|
214
|
+
console.log(`Прогресс: ${data.progress}%`);
|
|
185
215
|
});
|
|
186
216
|
|
|
187
|
-
//
|
|
188
|
-
sdk.
|
|
217
|
+
// 5. Синхронизировать
|
|
218
|
+
await sdk.deltaManager.syncEncryptedChunks(project.id, chunks, rootHash);
|
|
189
219
|
|
|
190
|
-
//
|
|
191
|
-
await sdk.
|
|
220
|
+
// 6. Поиск по проекту
|
|
221
|
+
const results = await sdk.search.searchCode(project.id, 'function handleClick');
|
|
222
|
+
```
|
|
192
223
|
|
|
193
|
-
|
|
194
|
-
|
|
224
|
+
### Chat с streaming
|
|
225
|
+
```typescript
|
|
226
|
+
for await (const chunk of sdk.chat.streamChat(messages, { model: 'claude-3-5-sonnet' })) {
|
|
227
|
+
if (chunk.type === 'content_block_delta') {
|
|
228
|
+
process.stdout.write(chunk.delta.text);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
195
231
|
```
|
|
196
232
|
|
|
197
|
-
##
|
|
233
|
+
## 📚 Дополнительно
|
|
198
234
|
|
|
199
|
-
###
|
|
200
|
-
|
|
201
|
-
|
|
235
|
+
### TypeScript типы
|
|
236
|
+
SDK полностью типизирован. Импортируйте интерфейсы:
|
|
237
|
+
```typescript
|
|
238
|
+
import { ChatMessage, ChatOptions, Project, ProjectState } from 'solver-sdk';
|
|
239
|
+
```
|
|
202
240
|
|
|
203
|
-
###
|
|
241
|
+
### Обработка ошибок
|
|
204
242
|
```typescript
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
- `sdk.connectWebSocket()` подключает к WebSocket gateway
|
|
226
|
-
- `sdk.projectSync.subscribeToProject(projectId)` подписывается на события проекта
|
|
227
|
-
- Все события автоматически фильтруются по projectId
|
|
228
|
-
- Fallback на HTTP polling если WebSocket недоступен
|
|
229
|
-
|
|
230
|
-
### Авторизация:
|
|
231
|
-
- **Локальная разработка:** `apiKey` достаточно для HTTP API
|
|
232
|
-
- **Production:** OAuth `access_token` обязателен для WebSocket
|
|
233
|
-
- Токен передается в `Authorization` header и автоматически используется для WebSocket
|
|
234
|
-
- WebSocket передает токен через query параметр `?token=xxx`
|
|
243
|
+
try {
|
|
244
|
+
await sdk.projects.getProject(projectId);
|
|
245
|
+
} catch (error) {
|
|
246
|
+
console.error(`[HTTP ${error.status}] ${error.message}`);
|
|
247
|
+
// v6.1.3+: читаемые сообщения ошибок вместо [object Object]
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Debug режим
|
|
252
|
+
```typescript
|
|
253
|
+
const sdk = await CodeSolverSDK.create({
|
|
254
|
+
baseURL: 'https://workai.su/api/v1',
|
|
255
|
+
debug: 'verbose', // silent | error | warn | info | debug | verbose
|
|
256
|
+
webSocket: { debug: true }
|
|
257
|
+
});
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## 📄 License
|
|
261
|
+
|
|
262
|
+
MIT
|
|
@@ -83,10 +83,11 @@ function processStreamChunk(line, logger, options) {
|
|
|
83
83
|
}
|
|
84
84
|
return {};
|
|
85
85
|
}
|
|
86
|
-
// Валидируем что это официальное событие Anthropic API
|
|
86
|
+
// Валидируем что это официальное событие Anthropic API + кастомные события сервера
|
|
87
87
|
const validEvents = [
|
|
88
88
|
'message_start', 'content_block_start', 'content_block_delta',
|
|
89
|
-
'content_block_stop', 'message_delta', 'message_stop', 'ping', 'error'
|
|
89
|
+
'content_block_stop', 'message_delta', 'message_stop', 'ping', 'error',
|
|
90
|
+
'tool_use_ready' // 🔧 Кастомное событие сервера для уведомления о готовности инструмента
|
|
90
91
|
];
|
|
91
92
|
if (!validEvents.includes(jsonData.type)) {
|
|
92
93
|
if (logger) {
|
|
@@ -149,7 +150,13 @@ function processStreamChunk(line, logger, options) {
|
|
|
149
150
|
};
|
|
150
151
|
}
|
|
151
152
|
break;
|
|
152
|
-
|
|
153
|
+
case 'tool_use_ready':
|
|
154
|
+
// 🔧 Кастомное событие сервера - передаем как есть
|
|
155
|
+
if (jsonData.tool_use) {
|
|
156
|
+
chunk.tool_use = jsonData.tool_use;
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
// ping и error не требуют дополнительных полей
|
|
153
160
|
}
|
|
154
161
|
return { chunk };
|
|
155
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAeH,0CAqCC;AAKD,4CAEC;AAWD,
|
|
1
|
+
{"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,10 +77,11 @@ export function processStreamChunk(line, logger, options) {
|
|
|
77
77
|
}
|
|
78
78
|
return {};
|
|
79
79
|
}
|
|
80
|
-
// Валидируем что это официальное событие Anthropic API
|
|
80
|
+
// Валидируем что это официальное событие Anthropic API + кастомные события сервера
|
|
81
81
|
const validEvents = [
|
|
82
82
|
'message_start', 'content_block_start', 'content_block_delta',
|
|
83
|
-
'content_block_stop', 'message_delta', 'message_stop', 'ping', 'error'
|
|
83
|
+
'content_block_stop', 'message_delta', 'message_stop', 'ping', 'error',
|
|
84
|
+
'tool_use_ready' // 🔧 Кастомное событие сервера для уведомления о готовности инструмента
|
|
84
85
|
];
|
|
85
86
|
if (!validEvents.includes(jsonData.type)) {
|
|
86
87
|
if (logger) {
|
|
@@ -143,7 +144,13 @@ export function processStreamChunk(line, logger, options) {
|
|
|
143
144
|
};
|
|
144
145
|
}
|
|
145
146
|
break;
|
|
146
|
-
|
|
147
|
+
case 'tool_use_ready':
|
|
148
|
+
// 🔧 Кастомное событие сервера - передаем как есть
|
|
149
|
+
if (jsonData.tool_use) {
|
|
150
|
+
chunk.tool_use = jsonData.tool_use;
|
|
151
|
+
}
|
|
152
|
+
break;
|
|
153
|
+
// ping и error не требуют дополнительных полей
|
|
147
154
|
}
|
|
148
155
|
return { chunk };
|
|
149
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,yCAAyC;IACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oCAAoC;IAClC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACV,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEpC,2BAA2B;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,8CAA8C;QAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,wDAAwD;QACtD,MAAM,KAAK,GAAoB;YAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,GAAG,QAAQ;SACZ,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,OAAO,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,MAAY,EACZ,OAGC;IAED,IAAI,CAAC;QACH,yCAAyC;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAElC,2BAA2B;QAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,qBAAqB;QACrB,IAAI,QAAa,CAAC;QAClB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-utils.d.ts","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,eAAe,CAAC;CAEzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAqCzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAEhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE;IACR,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvD,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GACA,WAAW,
|
|
1
|
+
{"version":3,"file":"stream-utils.d.ts","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,eAAe,CAAC;CAEzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAqCzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAEhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE;IACR,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvD,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GACA,WAAW,CA6Hb;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAenD"}
|