solver-sdk 9.0.5 → 9.0.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 +274 -218
- package/dist/cjs/api/chat-api/stream-utils.js +0 -1
- package/dist/cjs/api/chat-api/stream-utils.js.map +1 -1
- package/dist/esm/api/chat-api/stream-utils.js +0 -1
- 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,11 +1,13 @@
|
|
|
1
|
-
# Code Solver SDK
|
|
1
|
+
# Code Solver SDK
|
|
2
2
|
|
|
3
3
|
AI-powered code analysis SDK with WorkCoins billing system. 100% typed, production ready.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install solver-sdk@
|
|
8
|
+
npm install solver-sdk@9.0.6
|
|
9
|
+
# или
|
|
10
|
+
npm install solver-sdk@latest
|
|
9
11
|
```
|
|
10
12
|
|
|
11
13
|
## Quick Start
|
|
@@ -44,7 +46,7 @@ const update = await sdk.updates.checkForUpdates({...});
|
|
|
44
46
|
|---------|---------|--------|
|
|
45
47
|
| **Projects** | 19 | ✅ Full CRUD + state |
|
|
46
48
|
| **Delta Chunking** | 7 | ✅ Encrypted sync |
|
|
47
|
-
| **Chat** |
|
|
49
|
+
| **Chat** | 13 | ✅ Streaming + Extended Thinking |
|
|
48
50
|
| **Search** | 4 | ✅ Vector-based |
|
|
49
51
|
| **Tools** | 5 | ✅ AI tool schemas |
|
|
50
52
|
| **Models** | 5 | ✅ Provider info |
|
|
@@ -53,6 +55,108 @@ const update = await sdk.updates.checkForUpdates({...});
|
|
|
53
55
|
| **Credits** | 3 | ✅ Balance + Status + Estimates |
|
|
54
56
|
| **Auth** | 2 | ✅ Token revocation + logout |
|
|
55
57
|
|
|
58
|
+
**Total: 66 methods** | [Full API Reference](#api-reference)
|
|
59
|
+
|
|
60
|
+
## Quick Reference
|
|
61
|
+
|
|
62
|
+
<details>
|
|
63
|
+
<summary><b>Projects (19)</b> - управление проектами и индексация</summary>
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
getAllProjects() | getProject(id) | createProject(name) | deleteProject(id)
|
|
67
|
+
findOrCreateProject(name) | getReadyProjects() | getProjectState(id)
|
|
68
|
+
getProjectStatus(id) | getIndexingStatus(id) | cancelIndexing(id)
|
|
69
|
+
clearIndexingError(id) | getRecoveryStatus(id) | resumeSync(id)
|
|
70
|
+
cancelRecovery(id) | initializeDeltaSync(id) | resetIndexing(id)
|
|
71
|
+
restartIndexing(id) | getFilePathMapping(id)
|
|
72
|
+
```
|
|
73
|
+
</details>
|
|
74
|
+
|
|
75
|
+
<details>
|
|
76
|
+
<summary><b>Chat (13)</b> - AI диалоги и streaming</summary>
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
chat(messages, options?) | chatCompletion(messages, options?)
|
|
80
|
+
chatWithRegionFailover(messages, options?) | streamChat(messages, options?)
|
|
81
|
+
streamPrompt(prompt, options?) | sendContinuation(requestId, messages)
|
|
82
|
+
resumeChat(requestId, messages, partialText, options?)
|
|
83
|
+
sendPromptWithRegionFailover(prompt, options?) | checkAvailability()
|
|
84
|
+
cancelRequest(requestId) | getStreamsStats() | cleanupStaleStreams()
|
|
85
|
+
cancelUserStreams(reason?)
|
|
86
|
+
```
|
|
87
|
+
</details>
|
|
88
|
+
|
|
89
|
+
<details>
|
|
90
|
+
<summary><b>Delta Chunking (7)</b> - синхронизация файлов</summary>
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
initSync(projectId, request) | uploadChunkBatch(projectId, chunks)
|
|
94
|
+
uploadChunksWithRetry(projectId, chunks, options?)
|
|
95
|
+
finalizeSync(projectId) | getSyncStatus(projectId)
|
|
96
|
+
cancelSync(projectId) | cleanupFiles(projectId, activeFiles)
|
|
97
|
+
```
|
|
98
|
+
</details>
|
|
99
|
+
|
|
100
|
+
<details>
|
|
101
|
+
<summary><b>Search (4)</b> - поиск кода</summary>
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
searchCode(projectId, params) | searchFunctions(projectId, params)
|
|
105
|
+
semanticSearch(projectId, params) | getFunctionStats(projectId)
|
|
106
|
+
```
|
|
107
|
+
</details>
|
|
108
|
+
|
|
109
|
+
<details>
|
|
110
|
+
<summary><b>Tools (5)</b> - AI инструменты</summary>
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
getSchemas() | findToolByName(name) | getToolsStats()
|
|
114
|
+
validateToolSchema(tool) | createToolSchema(name, desc, props, required?)
|
|
115
|
+
```
|
|
116
|
+
</details>
|
|
117
|
+
|
|
118
|
+
<details>
|
|
119
|
+
<summary><b>Models (5)</b> - AI модели</summary>
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
getAllModels() | getModels() | getAvailableModels()
|
|
123
|
+
getProviderModels(providerId) | getModelInfo(modelId)
|
|
124
|
+
```
|
|
125
|
+
</details>
|
|
126
|
+
|
|
127
|
+
<details>
|
|
128
|
+
<summary><b>Updates (5)</b> - обновления SDK</summary>
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
checkForUpdates(options) | getChangelog(version, locale)
|
|
132
|
+
sendStats(event) | getLatestVersion(channel?) | checkAvailability()
|
|
133
|
+
```
|
|
134
|
+
</details>
|
|
135
|
+
|
|
136
|
+
<details>
|
|
137
|
+
<summary><b>Credits (3)</b> - WorkCoins баланс</summary>
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
getBalance() | getStatus() | estimate(tokens, model?, operationType?)
|
|
141
|
+
```
|
|
142
|
+
</details>
|
|
143
|
+
|
|
144
|
+
<details>
|
|
145
|
+
<summary><b>User (3)</b> - профиль и лимиты</summary>
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
getProfile() | getLimitStatus() | checkAvailability()
|
|
149
|
+
```
|
|
150
|
+
</details>
|
|
151
|
+
|
|
152
|
+
<details>
|
|
153
|
+
<summary><b>Auth (2)</b> - аутентификация</summary>
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
revokeToken(token) | logout()
|
|
157
|
+
```
|
|
158
|
+
</details>
|
|
159
|
+
|
|
56
160
|
## Auth
|
|
57
161
|
|
|
58
162
|
```typescript
|
|
@@ -107,270 +211,217 @@ sdk.projectSync.on('sync-completed', (data) => {
|
|
|
107
211
|
|
|
108
212
|
## Error Handling
|
|
109
213
|
|
|
110
|
-
All SDK methods throw typed exceptions
|
|
214
|
+
All SDK methods throw typed exceptions. All errors have: `statusCode`, `errorType`, `message`, `requestId`, `timestamp`.
|
|
111
215
|
|
|
112
216
|
### Available Error Types
|
|
113
217
|
|
|
114
218
|
```typescript
|
|
115
219
|
import {
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
//
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
// Special errors
|
|
132
|
-
LimitExceededError, // 403 - credits limit exceeded
|
|
133
|
-
RateLimitError, // 429 - too many requests
|
|
134
|
-
NetworkError, // 0 - network failure
|
|
135
|
-
TimeoutError, // 408 - request timeout
|
|
136
|
-
DatabaseError // 400 - database error
|
|
220
|
+
AuthenticationError, // 401 - token expired/invalid
|
|
221
|
+
ForbiddenError, // 403 - access denied
|
|
222
|
+
ValidationError, // 422 - invalid data
|
|
223
|
+
NotFoundError, // 404 - resource not found
|
|
224
|
+
ConflictError, // 409 - data conflict
|
|
225
|
+
BadRequestError, // 400 - bad request
|
|
226
|
+
InternalServerError, // 500 - server error
|
|
227
|
+
ServiceUnavailableError,// 503 - service down
|
|
228
|
+
GatewayTimeoutError, // 504 - timeout
|
|
229
|
+
LimitExceededError, // 403 - WorkCoins limit exceeded
|
|
230
|
+
RateLimitError, // 429 - too many requests
|
|
231
|
+
NetworkError, // 0 - network failure
|
|
232
|
+
TimeoutError, // 408 - request timeout
|
|
233
|
+
DatabaseError // 400 - database error
|
|
137
234
|
} from 'solver-sdk';
|
|
138
235
|
```
|
|
139
236
|
|
|
140
|
-
###
|
|
141
|
-
|
|
142
|
-
```typescript
|
|
143
|
-
try {
|
|
144
|
-
const status = await sdk.credits.getStatus();
|
|
145
|
-
console.log(status.balance);
|
|
146
|
-
|
|
147
|
-
} catch (error) {
|
|
148
|
-
// All errors have common properties:
|
|
149
|
-
console.log(error.statusCode); // HTTP status code
|
|
150
|
-
console.log(error.errorType); // Error type string
|
|
151
|
-
console.log(error.requestId); // For correlation with backend logs
|
|
152
|
-
console.log(error.timestamp); // When error occurred
|
|
153
|
-
console.log(error.rawResponse); // Full backend response
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### Auth Error Handling
|
|
237
|
+
### Common Patterns
|
|
158
238
|
|
|
159
239
|
```typescript
|
|
160
|
-
import { AuthenticationError } from 'solver-sdk';
|
|
240
|
+
import { AuthenticationError, LimitExceededError, RateLimitError } from 'solver-sdk';
|
|
161
241
|
|
|
162
242
|
try {
|
|
163
|
-
|
|
243
|
+
await sdk.chat.streamChat([{ role: 'user', content: 'Hello' }]);
|
|
164
244
|
} catch (error) {
|
|
245
|
+
// Auth errors - refresh token and retry
|
|
165
246
|
if (error instanceof AuthenticationError) {
|
|
166
|
-
// Token expired or invalid
|
|
167
|
-
console.log('Token expired, refreshing...');
|
|
168
247
|
await refreshToken();
|
|
169
|
-
// Retry the request
|
|
170
248
|
return retry();
|
|
171
249
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
### Usage Limits & Rate Limiting
|
|
176
|
-
|
|
177
|
-
SDK provides specialized error classes for limits:
|
|
178
|
-
|
|
179
|
-
#### Checking Limit Status
|
|
180
|
-
|
|
181
|
-
```typescript
|
|
182
|
-
import { CodeSolverSDK } from 'solver-sdk';
|
|
183
|
-
|
|
184
|
-
const sdk = await CodeSolverSDK.create({ /* ... */ });
|
|
185
|
-
|
|
186
|
-
// Get detailed limit status
|
|
187
|
-
const status = await sdk.user.getLimitStatus();
|
|
188
|
-
|
|
189
|
-
console.log(`Status: ${status.status}`); // 'ok' | 'warning' | 'critical' | 'blocked' | 'on_demand'
|
|
190
|
-
console.log(`Can make requests: ${status.canMakeRequest}`);
|
|
191
|
-
|
|
192
|
-
if (status.status === 'warning' || status.status === 'critical') {
|
|
193
|
-
console.warn(`Warning: ${status.message}`);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
if (status.action) {
|
|
197
|
-
console.log(`Recommendation: ${status.action.suggestion}`);
|
|
198
|
-
}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
#### Handling Limit Exceeded (403)
|
|
202
|
-
|
|
203
|
-
```typescript
|
|
204
|
-
import { CodeSolverSDK, LimitExceededError } from 'solver-sdk';
|
|
205
|
-
|
|
206
|
-
try {
|
|
207
|
-
await sdk.chat.streamChat([
|
|
208
|
-
{ role: 'user', content: 'Hello' }
|
|
209
|
-
]);
|
|
210
|
-
} catch (error) {
|
|
250
|
+
|
|
251
|
+
// WorkCoins limit - show upgrade prompt
|
|
211
252
|
if (error instanceof LimitExceededError) {
|
|
212
|
-
console.log(
|
|
213
|
-
console.log(`Message: ${error.message}`); // 'WorkCoins исчерпаны. Купите тариф...'
|
|
214
|
-
console.log(`Blocked: ${error.isBlocked()}`); // true/false
|
|
215
|
-
|
|
216
|
-
// Action recommendation
|
|
253
|
+
console.log(`WorkCoins exhausted: ${error.message}`);
|
|
217
254
|
if (error.action) {
|
|
218
|
-
console.log(`
|
|
219
|
-
console.log(`
|
|
220
|
-
console.log(`URL: ${error.action.url}`);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
// Balance details
|
|
224
|
-
if (error.balance) {
|
|
225
|
-
console.log(`Used: ${error.balance.percentUsed}%`);
|
|
226
|
-
console.log(`Credits: ${error.balance.creditsUsed}/${error.balance.creditsLimit}`);
|
|
255
|
+
console.log(`Recommendation: ${error.action.suggestion}`);
|
|
256
|
+
console.log(`Action URL: ${error.action.url}`);
|
|
227
257
|
}
|
|
228
258
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
#### Handling Rate Limit (429)
|
|
233
|
-
|
|
234
|
-
```typescript
|
|
235
|
-
import { CodeSolverSDK, RateLimitError } from 'solver-sdk';
|
|
236
|
-
|
|
237
|
-
try {
|
|
238
|
-
// Making multiple requests rapidly
|
|
239
|
-
for (let i = 0; i < 100; i++) {
|
|
240
|
-
await sdk.user.getProfile();
|
|
241
|
-
}
|
|
242
|
-
} catch (error) {
|
|
259
|
+
|
|
260
|
+
// Rate limit - wait and retry
|
|
243
261
|
if (error instanceof RateLimitError) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
console.log(`Retry at: ${error.retryAt}`);
|
|
247
|
-
console.log(`Time remaining: ${error.getRetryDelayMs()}ms`);
|
|
248
|
-
|
|
249
|
-
// Wait and retry
|
|
250
|
-
await new Promise(resolve => setTimeout(resolve, error.getRetryDelayMs()));
|
|
251
|
-
// ... retry request
|
|
262
|
+
await new Promise(r => setTimeout(r, error.getRetryDelayMs()));
|
|
263
|
+
return retry();
|
|
252
264
|
}
|
|
253
265
|
}
|
|
254
266
|
```
|
|
255
267
|
|
|
256
|
-
|
|
268
|
+
### Proactive Limit Checking
|
|
257
269
|
|
|
258
270
|
```typescript
|
|
259
|
-
// Check before
|
|
260
|
-
|
|
261
|
-
// 1. Check limit status first
|
|
262
|
-
const status = await sdk.user.getLimitStatus();
|
|
263
|
-
|
|
264
|
-
if (!status.canMakeRequest) {
|
|
265
|
-
console.error('Cannot make request:', status.message);
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
if (status.status === 'warning') {
|
|
270
|
-
console.warn('Low on tokens:', status.message);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
// 2. Make the request
|
|
274
|
-
try {
|
|
275
|
-
await sdk.chat.streamChat([
|
|
276
|
-
{ role: 'user', content: message }
|
|
277
|
-
]);
|
|
278
|
-
} catch (error) {
|
|
279
|
-
if (error instanceof LimitExceededError) {
|
|
280
|
-
// Handle limit error
|
|
281
|
-
} else if (error instanceof RateLimitError) {
|
|
282
|
-
// Handle rate limit
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
```
|
|
271
|
+
// Check WorkCoins before expensive operations
|
|
272
|
+
const status = await sdk.credits.getStatus();
|
|
287
273
|
|
|
288
|
-
|
|
274
|
+
if (!status.canMakeRequest) {
|
|
275
|
+
console.error('No WorkCoins available');
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
289
278
|
|
|
290
|
-
|
|
279
|
+
if (status.status === 'warning') {
|
|
280
|
+
console.warn(`Low on WorkCoins: ${status.message}`);
|
|
281
|
+
}
|
|
291
282
|
|
|
292
|
-
|
|
283
|
+
// Make request
|
|
284
|
+
await sdk.chat.streamChat([...]);
|
|
285
|
+
```
|
|
293
286
|
|
|
294
|
-
|
|
287
|
+
### WorkCoins (Credits) API
|
|
295
288
|
|
|
296
289
|
```typescript
|
|
290
|
+
// Get balance
|
|
297
291
|
const balance = await sdk.credits.getBalance();
|
|
292
|
+
console.log(`${balance.creditsRemaining} / ${balance.creditsLimit} WorkCoins`);
|
|
298
293
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
console.log(`
|
|
302
|
-
console.log(`Usage: ${balance.percentUsed}%`);
|
|
303
|
-
|
|
304
|
-
if (balance.bonusCredits) {
|
|
305
|
-
console.log(`Bonus WorkCoins: ${balance.bonusCredits}`);
|
|
306
|
-
}
|
|
294
|
+
// Get status with recommendations
|
|
295
|
+
const status = await sdk.credits.getStatus();
|
|
296
|
+
console.log(`Status: ${status.status}`); // 'ok' | 'warning' | 'critical' | 'depleted'
|
|
307
297
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
}
|
|
298
|
+
// Estimate cost
|
|
299
|
+
const estimate = await sdk.credits.estimate(50000, 'haiku', 'code_generation');
|
|
300
|
+
console.log(`Estimated: ${estimate.estimatedCredits} WorkCoins`);
|
|
311
301
|
```
|
|
312
302
|
|
|
313
|
-
|
|
303
|
+
## Streaming Tool Use (Создание/Редактирование файлов)
|
|
314
304
|
|
|
315
|
-
|
|
316
|
-
const status = await sdk.credits.getStatus();
|
|
317
|
-
|
|
318
|
-
console.log(`Status: ${status.status}`); // 'ok' | 'warning' | 'critical' | 'depleted'
|
|
319
|
-
console.log(`Can make request: ${status.canMakeRequest}`);
|
|
320
|
-
console.log(`Message: ${status.message}`);
|
|
305
|
+
SDK передаёт **только официальные события Anthropic API** через callback `onEvent`. Когда AI создаёт или редактирует файлы, параметры инструментов стримятся **посимвольно** через официальное событие `input_json_delta`.
|
|
321
306
|
|
|
322
|
-
|
|
323
|
-
console.log(`Action: ${status.action.type}`); // 'info' | 'upgrade' | 'enable_auto_purchase' | 'buy_credits'
|
|
324
|
-
console.log(`Suggestion: ${status.action.suggestion}`);
|
|
325
|
-
console.log(`URL: ${status.action.url}`);
|
|
326
|
-
}
|
|
327
|
-
```
|
|
307
|
+
> ✅ **Рекомендация Anthropic:** Используйте стандартное событие `content_block_delta` с типом `input_json_delta` для real-time визуализации прогресса. Это обеспечивает совместимость с обновлениями API и гарантирует стабильность работы.
|
|
328
308
|
|
|
329
|
-
|
|
309
|
+
### Real-time отображение прогресса через официальный API
|
|
330
310
|
|
|
331
311
|
```typescript
|
|
332
|
-
//
|
|
333
|
-
const
|
|
334
|
-
50000, // tokens (technical parameter for estimation)
|
|
335
|
-
'haiku', // model: 'haiku' | 'sonnet' | 'auto'
|
|
336
|
-
'code_generation' // operation type
|
|
337
|
-
);
|
|
312
|
+
// Накапливаем partial JSON для каждого инструмента
|
|
313
|
+
const toolInputs = new Map<number, string>();
|
|
338
314
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
315
|
+
for await (const chunk of sdk.chat.streamChat(messages, {
|
|
316
|
+
projectId: 'project-id',
|
|
317
|
+
tools: ['read_file', 'search_replace'],
|
|
318
|
+
|
|
319
|
+
onEvent: (type, data) => {
|
|
320
|
+
// 🎯 Стриминг параметров инструмента
|
|
321
|
+
if (type === 'content_block_delta' && data.delta?.type === 'input_json_delta') {
|
|
322
|
+
const index = data.index;
|
|
323
|
+
const partialJson = data.delta.partial_json;
|
|
324
|
+
|
|
325
|
+
// Накапливаем JSON по индексу блока
|
|
326
|
+
const accumulated = (toolInputs.get(index) || '') + partialJson;
|
|
327
|
+
toolInputs.set(index, accumulated);
|
|
328
|
+
|
|
329
|
+
// Пытаемся извлечь читаемые поля из неполного JSON (безопасно)
|
|
330
|
+
try {
|
|
331
|
+
const filePathMatch = accumulated.match(/"file_path"\s*:\s*"([^"]*)"/);
|
|
332
|
+
const operationMatch = accumulated.match(/"operation"\s*:\s*"([^"]*)"/);
|
|
333
|
+
|
|
334
|
+
if (filePathMatch) {
|
|
335
|
+
// 💡 Показываем пользователю: "Редактирование: src/app.ts"
|
|
336
|
+
console.log(`📝 ${operationMatch?.[1] || 'Обработка'}: ${filePathMatch[1]}`);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// Обновляем UI с прогрессом
|
|
340
|
+
updateProgress({
|
|
341
|
+
file: filePathMatch?.[1],
|
|
342
|
+
operation: operationMatch?.[1],
|
|
343
|
+
bytesReceived: accumulated.length
|
|
344
|
+
});
|
|
345
|
+
} catch {
|
|
346
|
+
// JSON ещё неполный - ждём следующий чанк
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// ✅ Инструмент готов к выполнению (полный JSON получен)
|
|
351
|
+
if (type === 'content_block_stop') {
|
|
352
|
+
const index = data.index;
|
|
353
|
+
const fullJson = toolInputs.get(index);
|
|
354
|
+
|
|
355
|
+
if (fullJson) {
|
|
356
|
+
try {
|
|
357
|
+
const toolInput = JSON.parse(fullJson);
|
|
358
|
+
console.log('🔧 Инструмент готов:', toolInput);
|
|
359
|
+
toolInputs.delete(index); // Очищаем
|
|
360
|
+
} catch (e) {
|
|
361
|
+
console.error('❌ Некорректный JSON инструмента');
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
})) {
|
|
367
|
+
// Обрабатываем остальные события...
|
|
368
|
+
}
|
|
342
369
|
```
|
|
343
370
|
|
|
344
|
-
|
|
371
|
+
### Официальные события Anthropic API
|
|
372
|
+
|
|
373
|
+
| Событие | Данные | Описание |
|
|
374
|
+
|---------|--------|----------|
|
|
375
|
+
| `message_start` | `{ message: {...} }` | Начало ответа AI |
|
|
376
|
+
| `content_block_start` | `{ index, content_block }` | Начало блока (text/thinking/tool_use) |
|
|
377
|
+
| **`content_block_delta`** | `{ index, delta }` | **Стриминг содержимого** |
|
|
378
|
+
| `content_block_stop` | `{ index }` | Завершение блока |
|
|
379
|
+
| `message_delta` | `{ delta }` | Метаданные ответа |
|
|
380
|
+
| `message_stop` | `{}` | Конец ответа |
|
|
381
|
+
|
|
382
|
+
### Типы delta для `content_block_delta`
|
|
345
383
|
|
|
346
384
|
```typescript
|
|
347
|
-
//
|
|
348
|
-
|
|
385
|
+
// Текст ответа AI
|
|
386
|
+
delta: { type: 'text_delta', text: 'Создаю функцию...' }
|
|
349
387
|
|
|
350
|
-
//
|
|
351
|
-
|
|
352
|
-
|
|
388
|
+
// Мышление AI (Extended Thinking)
|
|
389
|
+
delta: { type: 'thinking_delta', thinking: 'Анализирую требования...' }
|
|
390
|
+
|
|
391
|
+
// 🎯 Параметры инструмента (посимвольно!)
|
|
392
|
+
delta: { type: 'input_json_delta', partial_json: '{"file_path": "src/app' }
|
|
353
393
|
```
|
|
354
394
|
|
|
355
|
-
|
|
395
|
+
### Пример UI компонента
|
|
356
396
|
|
|
357
397
|
```typescript
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
console.error('No WorkCoins available');
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
398
|
+
function ToolProgressIndicator() {
|
|
399
|
+
const [currentTool, setCurrentTool] = useState<{
|
|
400
|
+
file?: string;
|
|
401
|
+
operation?: string;
|
|
402
|
+
progress: number;
|
|
403
|
+
} | null>(null);
|
|
367
404
|
|
|
368
|
-
//
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
405
|
+
// В onEvent callback
|
|
406
|
+
if (type === 'content_block_delta' && data.delta?.type === 'input_json_delta') {
|
|
407
|
+
// Извлекаем инфо из partial JSON
|
|
408
|
+
const fileMatch = accumulated.match(/"file_path"\s*:\s*"([^"]*)"/);
|
|
409
|
+
const opMatch = accumulated.match(/"operation"\s*:\s*"([^"]*)"/);
|
|
410
|
+
|
|
411
|
+
setCurrentTool({
|
|
412
|
+
file: fileMatch?.[1],
|
|
413
|
+
operation: opMatch?.[1] || 'processing',
|
|
414
|
+
progress: accumulated.length
|
|
415
|
+
});
|
|
373
416
|
}
|
|
417
|
+
|
|
418
|
+
return currentTool && (
|
|
419
|
+
<div className="tool-progress">
|
|
420
|
+
<span className="operation">{currentTool.operation}</span>
|
|
421
|
+
<span className="file">{currentTool.file}</span>
|
|
422
|
+
<div className="progress-bar" style={{ width: `${currentTool.progress / 10}%` }} />
|
|
423
|
+
</div>
|
|
424
|
+
);
|
|
374
425
|
}
|
|
375
426
|
```
|
|
376
427
|
|
|
@@ -611,6 +662,7 @@ chatWithRegionFailover(messages: ChatMessage[], options?: ChatOptions): Promise<
|
|
|
611
662
|
streamChat(messages: ChatMessage[], options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
612
663
|
streamPrompt(prompt: string, options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
613
664
|
sendContinuation(requestId: string, messages: ChatMessage[]): AsyncGenerator<ChatStreamChunk>
|
|
665
|
+
resumeChat(requestId: string, messages: ChatMessage[], partialText: string, options?: ChatStreamOptions): AsyncGenerator<ChatStreamChunk>
|
|
614
666
|
sendPromptWithRegionFailover(prompt: string, options?: ChatOptions): Promise<string>
|
|
615
667
|
checkAvailability(): Promise<boolean>
|
|
616
668
|
cancelRequest(requestId: string): Promise<void>
|
|
@@ -646,6 +698,14 @@ getLimitStatus(): Promise<LimitStatus>
|
|
|
646
698
|
checkAvailability(): Promise<boolean>
|
|
647
699
|
```
|
|
648
700
|
|
|
701
|
+
### Credits (`sdk.credits`)
|
|
702
|
+
|
|
703
|
+
```typescript
|
|
704
|
+
getBalance(): Promise<CreditsBalance>
|
|
705
|
+
getStatus(): Promise<CreditsStatus>
|
|
706
|
+
estimate(tokens: number, model?: ModelType, operationType?: OperationType): Promise<CreditsEstimate>
|
|
707
|
+
```
|
|
708
|
+
|
|
649
709
|
### Auth (`sdk.auth`)
|
|
650
710
|
|
|
651
711
|
```typescript
|
|
@@ -696,14 +756,10 @@ version: string
|
|
|
696
756
|
baseURL: string
|
|
697
757
|
```
|
|
698
758
|
|
|
699
|
-
##
|
|
759
|
+
## Documentation
|
|
700
760
|
|
|
701
|
-
|
|
702
|
-
- **Migration guide:** [SDK_v7.2.0_MIGRATION.md](../docs/sdk/SDK_v7.2.0_MIGRATION.md)
|
|
703
|
-
- **Architecture:** [ARCHITECTURE_NOTES.md](../docs/sdk/ARCHITECTURE_NOTES.md)
|
|
761
|
+
All methods have full JSDoc comments with examples. Check your IDE autocomplete for detailed reference.
|
|
704
762
|
|
|
705
|
-
|
|
763
|
+
**For full API documentation:** See [API Reference](#api-reference) section above.
|
|
706
764
|
|
|
707
765
|
---
|
|
708
|
-
|
|
709
|
-
**Status:** ✅ Production Ready | **v8.1.0** | **License:** MIT
|
|
@@ -88,7 +88,6 @@ function processStreamChunk(line, logger, options) {
|
|
|
88
88
|
'message_start', 'content_block_start', 'content_block_delta',
|
|
89
89
|
'content_block_stop', 'message_delta', 'message_stop', 'ping', 'error',
|
|
90
90
|
'tool_use_ready', // 🔧 Кастомное событие сервера для уведомления о готовности инструмента
|
|
91
|
-
'tool_input_delta', // ⚡ НОВОЕ: Throttled streaming partial JSON для tool_use
|
|
92
91
|
'partial_content_complete', // 🆘 НОВОЕ: Accumulated partial content при max_tokens
|
|
93
92
|
'incomplete_tool_retry', // 🔄 НОВОЕ: Retry при incomplete tool из-за max_tokens
|
|
94
93
|
'heartbeat', // 💓 Heartbeat для длинных операций
|
|
@@ -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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"}
|
|
@@ -82,7 +82,6 @@ export function processStreamChunk(line, logger, options) {
|
|
|
82
82
|
'message_start', 'content_block_start', 'content_block_delta',
|
|
83
83
|
'content_block_stop', 'message_delta', 'message_stop', 'ping', 'error',
|
|
84
84
|
'tool_use_ready', // 🔧 Кастомное событие сервера для уведомления о готовности инструмента
|
|
85
|
-
'tool_input_delta', // ⚡ НОВОЕ: Throttled streaming partial JSON для tool_use
|
|
86
85
|
'partial_content_complete', // 🆘 НОВОЕ: Accumulated partial content при max_tokens
|
|
87
86
|
'incomplete_tool_retry', // 🔄 НОВОЕ: Retry при incomplete tool из-за max_tokens
|
|
88
87
|
'heartbeat', // 💓 Heartbeat для длинных операций
|
|
@@ -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,mFAAmF;QACnF,MAAM,WAAW,GAAG;YAClB,eAAe,EAAE,qBAAqB,EAAE,qBAAqB;YAC7D,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO;YACtE,gBAAgB,EAAE,wEAAwE;YAC1F,
|
|
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,CAkIb;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAenD"}
|