solver-sdk 2.0.2 → 2.1.0

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.
Files changed (51) hide show
  1. package/dist/cjs/api/chat-api/index.js +205 -171
  2. package/dist/cjs/api/chat-api/index.js.map +1 -1
  3. package/dist/cjs/api/chat-api/models.js +1 -1
  4. package/dist/cjs/api/chat-api/stream-utils.js +139 -151
  5. package/dist/cjs/api/chat-api/stream-utils.js.map +1 -1
  6. package/dist/cjs/constants/websocket-events.constants.js +1 -1
  7. package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
  8. package/dist/cjs/index.js +2 -0
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/utils/message-helpers.js +212 -0
  11. package/dist/cjs/utils/message-helpers.js.map +1 -0
  12. package/dist/cjs/ws/filesystem-ws-client.js +0 -10
  13. package/dist/cjs/ws/filesystem-ws-client.js.map +1 -1
  14. package/dist/esm/api/chat-api/index.js +207 -151
  15. package/dist/esm/api/chat-api/index.js.map +1 -1
  16. package/dist/esm/api/chat-api/models.js +1 -1
  17. package/dist/esm/api/chat-api/stream-utils.js +139 -151
  18. package/dist/esm/api/chat-api/stream-utils.js.map +1 -1
  19. package/dist/esm/constants/websocket-events.constants.js +1 -1
  20. package/dist/esm/constants/websocket-events.constants.js.map +1 -1
  21. package/dist/esm/index.js +2 -0
  22. package/dist/esm/index.js.map +1 -1
  23. package/dist/esm/utils/message-helpers.js +199 -0
  24. package/dist/esm/utils/message-helpers.js.map +1 -0
  25. package/dist/esm/ws/filesystem-ws-client.js +0 -10
  26. package/dist/esm/ws/filesystem-ws-client.js.map +1 -1
  27. package/dist/types/api/chat-api/index.d.ts +23 -8
  28. package/dist/types/api/chat-api/index.d.ts.map +1 -1
  29. package/dist/types/api/chat-api/interfaces.d.ts +125 -8
  30. package/dist/types/api/chat-api/interfaces.d.ts.map +1 -1
  31. package/dist/types/api/chat-api/models.d.ts +163 -43
  32. package/dist/types/api/chat-api/models.d.ts.map +1 -1
  33. package/dist/types/api/chat-api/stream-utils.d.ts +19 -16
  34. package/dist/types/api/chat-api/stream-utils.d.ts.map +1 -1
  35. package/dist/types/constants/websocket-events.constants.d.ts +2 -2
  36. package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
  37. package/dist/types/index.d.ts +1 -0
  38. package/dist/types/index.d.ts.map +1 -1
  39. package/dist/types/utils/message-helpers.d.ts +84 -0
  40. package/dist/types/utils/message-helpers.d.ts.map +1 -0
  41. package/dist/types/ws/filesystem-ws-client.d.ts +0 -2
  42. package/dist/types/ws/filesystem-ws-client.d.ts.map +1 -1
  43. package/docs/API_REFERENCE.md +38 -166
  44. package/docs/AUTHENTICATION.md +37 -59
  45. package/docs/ERROR_HANDLING.md +124 -191
  46. package/docs/INTEGRATION_EXAMPLES.md +38 -52
  47. package/docs/PING_PONG.md +79 -178
  48. package/docs/README.md +7 -3
  49. package/docs/WEBSOCKET.md +66 -37
  50. package/package.json +7 -2
  51. package/docs/advanced/PING_PONG.md +0 -212
@@ -1,188 +1,176 @@
1
1
  /**
2
- * Обрабатывает чанк данных из потока SSE
2
+ * Утилиты для обработки потоковых данных от API чата
3
+ */
4
+ /**
5
+ * Обрабатывает строку данных из SSE потока
6
+ * @param line Строка данных из потока
7
+ * @param isInThinkingBlock Флаг нахождения в блоке мышления
8
+ * @param thinkingContent Накопленное содержимое мышления
9
+ * @param textContent Накопленное текстовое содержимое
10
+ * @param thinkingSignature Подпись блока мышления
11
+ * @param onToken Обработчик получения токена
12
+ * @returns Результат обработки
3
13
  */
4
14
  export function processStreamChunk(line, isInThinkingBlock, thinkingContent, textContent, thinkingSignature, onToken) {
5
- // Проверяем формат строки
6
- if (!line.startsWith('data:')) {
7
- return {
8
- isInThinkingBlock,
9
- thinkingContent,
10
- textContent,
11
- thinkingSignature,
12
- isDone: false
13
- };
14
- }
15
- const data = line.slice(5).trim();
16
- // Проверяем завершение потока
17
- if (data === '[DONE]') {
18
- if (onToken) {
19
- onToken('');
15
+ try {
16
+ if (!line.startsWith('data: ')) {
17
+ return { isInThinkingBlock, thinkingContent, textContent, thinkingSignature, isDone: false };
20
18
  }
21
- return {
22
- isInThinkingBlock,
23
- thinkingContent,
24
- textContent,
25
- thinkingSignature,
26
- chunk: {
19
+ const data = line.slice(6).trim();
20
+ // Проверяем на завершение потока
21
+ if (data === '[DONE]') {
22
+ const chunk = {
23
+ type: 'message_stop',
27
24
  text: '',
28
25
  isComplete: true,
29
26
  thinkingContent: thinkingContent.length > 0 ? thinkingContent : undefined,
30
27
  thinkingSignature: thinkingSignature.length > 0 ? thinkingSignature : undefined
31
- },
32
- isDone: true
33
- };
34
- }
35
- try {
36
- const parsedData = JSON.parse(data);
37
- // Обрабатываем типы событий по актуальному API Anthropic
38
- if (parsedData.type === 'content_block_start' && parsedData.content_block?.type === 'thinking') {
39
- const newIsInThinkingBlock = true;
40
- if (onToken) {
41
- onToken('[THINKING_START]');
42
- }
28
+ };
43
29
  return {
44
- isInThinkingBlock: newIsInThinkingBlock,
30
+ isInThinkingBlock,
45
31
  thinkingContent,
46
32
  textContent,
47
33
  thinkingSignature,
48
- chunk: {
49
- text: '[THINKING_START]',
50
- isComplete: false,
51
- isThinking: true
52
- },
34
+ chunk,
35
+ isDone: true
36
+ };
37
+ }
38
+ // Пытаемся распарсить JSON
39
+ const jsonData = JSON.parse(data);
40
+ // Обрабатываем событие начала блока мышления
41
+ if (jsonData.type === 'thinking_start' ||
42
+ (jsonData.event === 'thinking_delta' && !isInThinkingBlock)) {
43
+ const chunk = {
44
+ type: 'content_block_start',
45
+ text: '',
46
+ isComplete: false,
47
+ isThinking: true
48
+ };
49
+ return {
50
+ isInThinkingBlock: true,
51
+ thinkingContent,
52
+ textContent,
53
+ thinkingSignature,
54
+ chunk,
53
55
  isDone: false
54
56
  };
55
57
  }
56
- else if (parsedData.type === 'content_block_stop' && isInThinkingBlock) {
57
- const newIsInThinkingBlock = false;
58
+ // Обрабатываем дельты мышления
59
+ if (jsonData.event === 'thinking_delta' && jsonData.thinking && isInThinkingBlock) {
60
+ const newThinkingContent = thinkingContent + jsonData.thinking;
61
+ const chunk = {
62
+ type: 'content_block_delta',
63
+ text: jsonData.thinking,
64
+ isComplete: false,
65
+ isThinking: true
66
+ };
67
+ // Вызываем onToken если передан
58
68
  if (onToken) {
59
- onToken('[THINKING_END]');
69
+ onToken(jsonData.thinking);
60
70
  }
61
71
  return {
62
- isInThinkingBlock: newIsInThinkingBlock,
63
- thinkingContent,
72
+ isInThinkingBlock: true,
73
+ thinkingContent: newThinkingContent,
64
74
  textContent,
65
75
  thinkingSignature,
66
- chunk: {
67
- text: '[THINKING_END]',
68
- isComplete: false,
69
- isThinking: true
70
- },
76
+ chunk,
71
77
  isDone: false
72
78
  };
73
79
  }
74
- else if (parsedData.type === 'content_block_delta') {
75
- // Получаем тип дельты из данных события
76
- const deltaType = parsedData.delta?.type;
77
- // Обрабатываем дельту в зависимости от типа
78
- if (deltaType === 'text_delta') {
79
- const text = parsedData.delta?.text || '';
80
- const newTextContent = textContent + text;
81
- if (onToken) {
82
- onToken(text);
83
- }
84
- return {
85
- isInThinkingBlock,
86
- thinkingContent,
87
- textContent: newTextContent,
88
- thinkingSignature,
89
- chunk: {
90
- text,
91
- isComplete: false,
92
- isThinking: false
93
- },
94
- isDone: false
95
- };
80
+ // Обрабатываем завершение мышления
81
+ if (jsonData.type === 'thinking_end' ||
82
+ (jsonData.event === 'thinking_signature' && isInThinkingBlock)) {
83
+ let signature = thinkingSignature;
84
+ if (jsonData.signature) {
85
+ signature = jsonData.signature;
96
86
  }
97
- else if (deltaType === 'thinking_delta') {
98
- const thinking = parsedData.delta?.thinking || '';
99
- const newThinkingContent = thinkingContent + thinking;
100
- if (onToken) {
101
- onToken(thinking);
102
- }
103
- return {
104
- isInThinkingBlock: true,
105
- thinkingContent: newThinkingContent,
106
- textContent,
107
- thinkingSignature,
108
- chunk: {
109
- text: thinking,
110
- isComplete: false,
111
- isThinking: true
112
- },
113
- isDone: false
114
- };
87
+ const chunk = {
88
+ type: 'content_block_delta',
89
+ text: jsonData.text || '',
90
+ isComplete: false,
91
+ isThinking: false
92
+ };
93
+ // Вызываем onToken если есть текст и передан обработчик
94
+ if (jsonData.text && onToken) {
95
+ onToken(jsonData.text);
115
96
  }
116
- else if (deltaType === 'signature_delta') {
117
- const signature = parsedData.delta?.signature || '';
118
- return {
119
- isInThinkingBlock,
120
- thinkingContent,
121
- textContent,
122
- thinkingSignature: signature,
123
- isDone: false
124
- };
97
+ return {
98
+ isInThinkingBlock: false,
99
+ thinkingContent,
100
+ textContent: textContent + (jsonData.text || ''),
101
+ thinkingSignature: signature,
102
+ chunk,
103
+ isDone: false
104
+ };
105
+ }
106
+ // Обрабатываем текстовые дельты
107
+ if (jsonData.event === 'text_delta' && jsonData.text) {
108
+ const newTextContent = textContent + jsonData.text;
109
+ const chunk = {
110
+ type: 'content_block_delta',
111
+ text: jsonData.text,
112
+ isComplete: false,
113
+ isThinking: true
114
+ };
115
+ // Вызываем onToken если передан
116
+ if (onToken) {
117
+ onToken(jsonData.text);
125
118
  }
126
- else if (deltaType === 'input_json_delta') {
127
- const jsonData = parsedData.delta?.input_json || '';
128
- if (onToken) {
129
- onToken(jsonData);
130
- }
131
- // Убираем свойство isToolUse, добавляем метаданные
132
- return {
133
- isInThinkingBlock,
134
- thinkingContent,
135
- textContent,
136
- thinkingSignature,
137
- chunk: {
138
- text: jsonData,
139
- isComplete: false,
140
- isThinking: false
141
- },
142
- isDone: false
143
- };
119
+ return {
120
+ isInThinkingBlock,
121
+ thinkingContent,
122
+ textContent: newTextContent,
123
+ thinkingSignature,
124
+ chunk,
125
+ isDone: false
126
+ };
127
+ }
128
+ // Обрабатываем обычные текстовые данные
129
+ if (jsonData.content || jsonData.text || jsonData.delta) {
130
+ const text = jsonData.content || jsonData.text || jsonData.delta;
131
+ const newTextContent = textContent + text;
132
+ const chunk = {
133
+ type: 'content_block_delta',
134
+ text: text,
135
+ isComplete: false,
136
+ isThinking: false
137
+ };
138
+ // Вызываем onToken если передан
139
+ if (onToken) {
140
+ onToken(text);
144
141
  }
142
+ return {
143
+ isInThinkingBlock,
144
+ thinkingContent,
145
+ textContent: newTextContent,
146
+ thinkingSignature,
147
+ chunk,
148
+ isDone: false
149
+ };
145
150
  }
146
- // Возвращаем без изменений, если тип события не обрабатывается
147
- return {
148
- isInThinkingBlock,
149
- thinkingContent,
150
- textContent,
151
- thinkingSignature,
152
- isDone: false
153
- };
151
+ // Если ничего не обработали, возвращаем исходное состояние
152
+ return { isInThinkingBlock, thinkingContent, textContent, thinkingSignature, isDone: false };
154
153
  }
155
- catch (e) {
156
- console.error('Ошибка при парсинге данных:', e);
157
- return {
158
- isInThinkingBlock,
159
- thinkingContent,
160
- textContent,
161
- thinkingSignature,
162
- isDone: false
163
- };
154
+ catch (error) {
155
+ console.warn('Ошибка обработки потокового чанка:', error);
156
+ return { isInThinkingBlock, thinkingContent, textContent, thinkingSignature, isDone: false };
164
157
  }
165
158
  }
166
159
  /**
167
- * Обрабатывает ошибку из потока
160
+ * Обрабатывает ошибки потоковой передачи
161
+ * @param error Ошибка
162
+ * @returns Обработанная ошибка
168
163
  */
169
164
  export function handleStreamError(error) {
170
- // Проверяем наличие ошибки географических ограничений
171
- const errorObj = error;
172
- const isGeoRestriction = (errorObj.status === 403 || errorObj.code === 403) &&
173
- errorObj.message &&
174
- (errorObj.message.includes('ограничен в вашем регионе') ||
175
- errorObj.message.includes('Request not allowed') ||
176
- errorObj.message.includes('forbidden'));
177
- if (isGeoRestriction) {
178
- console.error('\n==============================================');
179
- console.error('⚠️ ОШИБКА ГЕОГРАФИЧЕСКОГО ОГРАНИЧЕНИЯ API ANTHROPIC');
180
- console.error('⚠️ Для работы с API Anthropic требуется VPN или прокси');
181
- console.error('⚠️ Anthropic API доступен только из определенных регионов');
182
- console.error('==============================================');
183
- // Обогащаем объект ошибки информацией о географических ограничениях
184
- errorObj.type = 'geo_restriction';
165
+ if (error instanceof Error) {
166
+ return error;
167
+ }
168
+ if (error && error.message) {
169
+ return new Error(error.message);
170
+ }
171
+ if (typeof error === 'string') {
172
+ return new Error(error);
185
173
  }
186
- return errorObj;
174
+ return new Error('Неизвестная ошибка потоковой передачи');
187
175
  }
188
176
  //# sourceMappingURL=stream-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../../../src/api/chat-api/stream-utils.ts"],"names":[],"mappings":"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"}
@@ -93,7 +93,7 @@ export var WebSocketEvents;
93
93
  // События буферизации
94
94
  WebSocketEvents["BATCH_UPDATE"] = "batch_update";
95
95
  WebSocketEvents["SEARCH_UPDATE"] = "search_update";
96
- // Общие события
96
+ // Общие события и стандартные события Socket.IO
97
97
  WebSocketEvents["CONNECTED"] = "connected";
98
98
  WebSocketEvents["PONG"] = "pong";
99
99
  // Базовое событие для широковещательной отправки
@@ -1 +1 @@
1
- {"version":3,"file":"websocket-events.constants.js","sourceRoot":"","sources":["../../../src/constants/websocket-events.constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket-events.constants.js","sourceRoot":"","sources":["../../../src/constants/websocket-events.constants.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -29,6 +29,8 @@ export * from './api/agents-api.js';
29
29
  export * from './api/chat-api/index.js';
30
30
  export * from './api/models-api.js';
31
31
  export * from './api/dependencies-api.js';
32
+ // Экспортируем помощники для работы с сообщениями
33
+ export * from './utils/message-helpers.js';
32
34
  // Экспорт по умолчанию
33
35
  export default CodeSolverSDK;
34
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,aAAa;AACb,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,4CAA4C;AAC5C,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,0CAA0C;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAE1D,uCAAuC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAE/C,2BAA2B;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAE1C,uBAAuB;AACvB,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,aAAa;AACb,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B,4CAA4C;AAC5C,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,0CAA0C;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gDAAgD,CAAC;AAC/D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAE1D,uCAAuC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAE/C,2BAA2B;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAE1C,kDAAkD;AAClD,cAAc,4BAA4B,CAAC;AAE3C,uBAAuB;AACvB,eAAe,aAAa,CAAC"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Помощники для создания complex content сообщений согласно Anthropic API
3
+ */
4
+ /**
5
+ * Создает сообщение assistant с thinking и tool_use блоками
6
+ * @param thinkingContent Содержимое мышления
7
+ * @param signature Криптографическая подпись
8
+ * @param toolCall Вызов инструмента
9
+ * @returns Сообщение assistant с complex content
10
+ */
11
+ export function createAssistantMessageWithThinking(thinkingContent, signature, toolCall) {
12
+ const content = [
13
+ {
14
+ type: 'thinking',
15
+ thinking: thinkingContent,
16
+ signature: signature
17
+ },
18
+ {
19
+ type: 'tool_use',
20
+ id: toolCall.id,
21
+ name: toolCall.name,
22
+ input: toolCall.input
23
+ }
24
+ ];
25
+ return {
26
+ role: 'assistant',
27
+ content: content
28
+ };
29
+ }
30
+ /**
31
+ * Создает сообщение user с результатом инструмента
32
+ * @param toolUseId ID вызова инструмента
33
+ * @param result Результат выполнения
34
+ * @param isError Флаг ошибки
35
+ * @returns Сообщение user с tool_result
36
+ */
37
+ export function createToolResultMessage(toolUseId, result, isError = false) {
38
+ const content = [
39
+ {
40
+ type: 'tool_result',
41
+ tool_use_id: toolUseId,
42
+ content: typeof result === 'string' ? result : JSON.stringify(result),
43
+ is_error: isError
44
+ }
45
+ ];
46
+ return {
47
+ role: 'user',
48
+ content: content
49
+ };
50
+ }
51
+ /**
52
+ * Создает простое текстовое сообщение
53
+ * @param role Роль отправителя
54
+ * @param text Текст сообщения
55
+ * @returns Простое сообщение
56
+ */
57
+ export function createTextMessage(role, text) {
58
+ return {
59
+ role: role,
60
+ content: text
61
+ };
62
+ }
63
+ /**
64
+ * Создает сообщение assistant с текстом и мышлением
65
+ * @param text Основной текст ответа
66
+ * @param thinkingContent Содержимое мышления (опционально)
67
+ * @param signature Подпись мышления (опционально)
68
+ * @returns Сообщение assistant с complex content
69
+ */
70
+ export function createAssistantMessage(text, thinkingContent, signature) {
71
+ const content = [];
72
+ // Добавляем thinking блок если есть
73
+ if (thinkingContent && signature) {
74
+ content.push({
75
+ type: 'thinking',
76
+ thinking: thinkingContent,
77
+ signature: signature
78
+ });
79
+ }
80
+ // Добавляем текстовый блок
81
+ content.push({
82
+ type: 'text',
83
+ text: text
84
+ });
85
+ return {
86
+ role: 'assistant',
87
+ content: content
88
+ };
89
+ }
90
+ /**
91
+ * Извлекает thinking блоки из сообщения
92
+ * @param message Сообщение с complex content
93
+ * @returns Массив thinking блоков
94
+ */
95
+ export function extractThinkingBlocks(message) {
96
+ if (typeof message.content === 'string') {
97
+ return [];
98
+ }
99
+ return message.content.filter(block => block.type === 'thinking' || block.type === 'redacted_thinking');
100
+ }
101
+ /**
102
+ * Извлекает tool_use блоки из сообщения
103
+ * @param message Сообщение с complex content
104
+ * @returns Массив tool_use блоков
105
+ */
106
+ export function extractToolUseBlocks(message) {
107
+ if (typeof message.content === 'string') {
108
+ return [];
109
+ }
110
+ return message.content.filter(block => block.type === 'tool_use');
111
+ }
112
+ /**
113
+ * Извлекает текстовое содержимое из сообщения
114
+ * @param message Сообщение
115
+ * @returns Текстовое содержимое
116
+ */
117
+ export function extractTextContent(message) {
118
+ if (typeof message.content === 'string') {
119
+ return message.content;
120
+ }
121
+ const textBlocks = message.content.filter(block => block.type === 'text');
122
+ return textBlocks.map(block => block.text).join('');
123
+ }
124
+ /**
125
+ * Проверяет, содержит ли сообщение thinking блоки
126
+ * @param message Сообщение для проверки
127
+ * @returns true если содержит thinking блоки
128
+ */
129
+ export function hasThinkingBlocks(message) {
130
+ if (typeof message.content === 'string') {
131
+ return false;
132
+ }
133
+ return message.content.some(block => block.type === 'thinking' || block.type === 'redacted_thinking');
134
+ }
135
+ /**
136
+ * Проверяет, содержит ли сообщение tool_use блоки
137
+ * @param message Сообщение для проверки
138
+ * @returns true если содержит tool_use блоки
139
+ */
140
+ export function hasToolUseBlocks(message) {
141
+ if (typeof message.content === 'string') {
142
+ return false;
143
+ }
144
+ return message.content.some(block => block.type === 'tool_use');
145
+ }
146
+ /**
147
+ * Создает определение инструмента для Anthropic API
148
+ * @param name Название инструмента
149
+ * @param description Описание функциональности
150
+ * @param properties Свойства входных параметров
151
+ * @param required Обязательные поля
152
+ * @returns Определение инструмента
153
+ */
154
+ export function createToolDefinition(name, description, properties, required = []) {
155
+ return {
156
+ name: name,
157
+ description: description,
158
+ input_schema: {
159
+ type: 'object',
160
+ properties: properties,
161
+ required: required
162
+ }
163
+ };
164
+ }
165
+ /**
166
+ * Создает стандартные инструменты для разработки (как в Cursor)
167
+ * @returns Массив стандартных инструментов
168
+ */
169
+ export function createStandardDevelopmentTools() {
170
+ return [
171
+ createToolDefinition('edit_file', 'Редактирует содержимое файла', {
172
+ file_path: { type: 'string', description: 'Путь к файлу для редактирования' },
173
+ content: { type: 'string', description: 'Новое содержимое файла' },
174
+ start_line: { type: 'integer', description: 'Начальная строка для частичного редактирования' },
175
+ end_line: { type: 'integer', description: 'Конечная строка для частичного редактирования' }
176
+ }, ['file_path', 'content']),
177
+ createToolDefinition('read_file', 'Читает содержимое файла', {
178
+ file_path: { type: 'string', description: 'Путь к файлу для чтения' }
179
+ }, ['file_path']),
180
+ createToolDefinition('create_file', 'Создает новый файл', {
181
+ file_path: { type: 'string', description: 'Путь к новому файлу' },
182
+ content: { type: 'string', description: 'Содержимое файла' }
183
+ }, ['file_path', 'content']),
184
+ createToolDefinition('list_files', 'Получает список файлов в директории', {
185
+ directory_path: { type: 'string', description: 'Путь к директории' },
186
+ include_hidden: { type: 'boolean', description: 'Включать скрытые файлы' }
187
+ }, ['directory_path']),
188
+ createToolDefinition('search_files', 'Поиск в файлах по содержимому', {
189
+ query: { type: 'string', description: 'Поисковый запрос' },
190
+ file_pattern: { type: 'string', description: 'Паттерн имен файлов' },
191
+ case_sensitive: { type: 'boolean', description: 'Учитывать регистр' }
192
+ }, ['query']),
193
+ createToolDefinition('run_command', 'Выполняет команду в терминале', {
194
+ command: { type: 'string', description: 'Команда для выполнения' },
195
+ working_directory: { type: 'string', description: 'Рабочая директория' }
196
+ }, ['command'])
197
+ ];
198
+ }
199
+ //# sourceMappingURL=message-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-helpers.js","sourceRoot":"","sources":["../../../src/utils/message-helpers.ts"],"names":[],"mappings":"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"}
@@ -21,8 +21,6 @@ export class FileSystemWsClient extends BaseWebSocketClient {
21
21
  });
22
22
  this.sessionId = null;
23
23
  this.projectId = null;
24
- this.pingInterval = 25000; // 25 секунд по умолчанию
25
- this.pingTimer = null;
26
24
  this.SDK_VERSION = '1.0.0';
27
25
  // Устанавливаем обработчики
28
26
  this.onReadFile = options.onReadFile || (() => Promise.reject('Чтение файлов не реализовано'));
@@ -58,7 +56,6 @@ export class FileSystemWsClient extends BaseWebSocketClient {
58
56
  });
59
57
  if (response && response.payload) {
60
58
  this.sessionId = response.payload.sessionId;
61
- this.pingInterval = response.payload.pingInterval || 25000;
62
59
  // Настраиваем обработчики событий
63
60
  this.setupHandlers();
64
61
  return true;
@@ -152,13 +149,6 @@ export class FileSystemWsClient extends BaseWebSocketClient {
152
149
  });
153
150
  }
154
151
  });
155
- // Обработчик ping
156
- this.on(WebSocketEvents.PING, (data) => {
157
- this.send(WebSocketEvents.PONG, {
158
- requestId: data.requestId || uuidv4(),
159
- timestamp: Date.now()
160
- });
161
- });
162
152
  }
163
153
  /**
164
154
  * Уведомляет сервер об изменении файла