solver-sdk 2.7.5 → 3.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 (197) hide show
  1. package/README.md +200 -368
  2. package/dist/cjs/api/chat-api/index.js +23 -49
  3. package/dist/cjs/api/chat-api/index.js.map +1 -1
  4. package/dist/cjs/api/chat-api/interfaces.js +1 -0
  5. package/dist/cjs/api/chat-api/interfaces.js.map +1 -1
  6. package/dist/cjs/api/context-api.js +6 -1
  7. package/dist/cjs/api/context-api.js.map +1 -1
  8. package/dist/cjs/api/models-api.js +43 -60
  9. package/dist/cjs/api/models-api.js.map +1 -1
  10. package/dist/cjs/api/projects-api.js +63 -293
  11. package/dist/cjs/api/projects-api.js.map +1 -1
  12. package/dist/cjs/api/search-api.js +131 -8
  13. package/dist/cjs/api/search-api.js.map +1 -1
  14. package/dist/cjs/code-solver-sdk.js +68 -322
  15. package/dist/cjs/code-solver-sdk.js.map +1 -1
  16. package/dist/cjs/index.js +3 -19
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/utils/logger.js +4 -4
  19. package/dist/cjs/utils/logger.js.map +1 -1
  20. package/dist/esm/api/chat-api/index.js +22 -48
  21. package/dist/esm/api/chat-api/index.js.map +1 -1
  22. package/dist/esm/api/chat-api/interfaces.js +1 -0
  23. package/dist/esm/api/chat-api/interfaces.js.map +1 -1
  24. package/dist/esm/api/context-api.js +6 -1
  25. package/dist/esm/api/context-api.js.map +1 -1
  26. package/dist/esm/api/models-api.js +43 -60
  27. package/dist/esm/api/models-api.js.map +1 -1
  28. package/dist/esm/api/projects-api.js +63 -293
  29. package/dist/esm/api/projects-api.js.map +1 -1
  30. package/dist/esm/api/search-api.js +131 -8
  31. package/dist/esm/api/search-api.js.map +1 -1
  32. package/dist/esm/code-solver-sdk.js +68 -322
  33. package/dist/esm/code-solver-sdk.js.map +1 -1
  34. package/dist/esm/index.js +2 -18
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/utils/logger.js +3 -3
  37. package/dist/esm/utils/logger.js.map +1 -1
  38. package/dist/types/api/chat-api/index.d.ts +1 -13
  39. package/dist/types/api/chat-api/index.d.ts.map +1 -1
  40. package/dist/types/api/chat-api/interfaces.d.ts +6 -54
  41. package/dist/types/api/chat-api/interfaces.d.ts.map +1 -1
  42. package/dist/types/api/chat-api/models.d.ts +3 -26
  43. package/dist/types/api/chat-api/models.d.ts.map +1 -1
  44. package/dist/types/api/context-api.d.ts.map +1 -1
  45. package/dist/types/api/models-api.d.ts +31 -62
  46. package/dist/types/api/models-api.d.ts.map +1 -1
  47. package/dist/types/api/projects-api.d.ts +47 -126
  48. package/dist/types/api/projects-api.d.ts.map +1 -1
  49. package/dist/types/api/search-api.d.ts +147 -6
  50. package/dist/types/api/search-api.d.ts.map +1 -1
  51. package/dist/types/code-solver-sdk.d.ts +36 -86
  52. package/dist/types/code-solver-sdk.d.ts.map +1 -1
  53. package/dist/types/index.d.ts +1 -14
  54. package/dist/types/index.d.ts.map +1 -1
  55. package/dist/types/interfaces/sdk-options.d.ts +18 -66
  56. package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
  57. package/dist/types/utils/logger.d.ts +3 -3
  58. package/dist/types/utils/logger.d.ts.map +1 -1
  59. package/docs/README.md +53 -37
  60. package/docs/VSCODE_INTEGRATION.md +208 -371
  61. package/docs/indexing/INDEXING.md +658 -335
  62. package/package.json +26 -23
  63. package/dist/cjs/api/agents-api.js +0 -94
  64. package/dist/cjs/api/agents-api.js.map +0 -1
  65. package/dist/cjs/api/chat-api/websocket-helpers.js +0 -211
  66. package/dist/cjs/api/chat-api/websocket-helpers.js.map +0 -1
  67. package/dist/cjs/api/dependencies-api.js +0 -286
  68. package/dist/cjs/api/dependencies-api.js.map +0 -1
  69. package/dist/cjs/constants/websocket-events.constants.js +0 -170
  70. package/dist/cjs/constants/websocket-events.constants.js.map +0 -1
  71. package/dist/cjs/constants/websocket-namespaces.constants.js +0 -22
  72. package/dist/cjs/constants/websocket-namespaces.constants.js.map +0 -1
  73. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +0 -3
  74. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +0 -1
  75. package/dist/cjs/interfaces/websocket/client-options.interfaces.js +0 -3
  76. package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +0 -1
  77. package/dist/cjs/interfaces/websocket/events.interfaces.js +0 -3
  78. package/dist/cjs/interfaces/websocket/events.interfaces.js.map +0 -1
  79. package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js +0 -42
  80. package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
  81. package/dist/cjs/simple-indexing-client.js +0 -138
  82. package/dist/cjs/simple-indexing-client.js.map +0 -1
  83. package/dist/cjs/utils/code-solver-websocket-client.js +0 -497
  84. package/dist/cjs/utils/code-solver-websocket-client.js.map +0 -1
  85. package/dist/cjs/utils/connection-state-manager.js +0 -133
  86. package/dist/cjs/utils/connection-state-manager.js.map +0 -1
  87. package/dist/cjs/utils/indexing-websocket-client.js +0 -107
  88. package/dist/cjs/utils/indexing-websocket-client.js.map +0 -1
  89. package/dist/cjs/utils/session-manager.js +0 -114
  90. package/dist/cjs/utils/session-manager.js.map +0 -1
  91. package/dist/cjs/utils/simple-connection-monitor.js +0 -52
  92. package/dist/cjs/utils/simple-connection-monitor.js.map +0 -1
  93. package/dist/cjs/utils/websocket-client.js +0 -638
  94. package/dist/cjs/utils/websocket-client.js.map +0 -1
  95. package/dist/cjs/ws/base-ws-client.js +0 -280
  96. package/dist/cjs/ws/base-ws-client.js.map +0 -1
  97. package/dist/cjs/ws/dependencies-ws-client.js +0 -11
  98. package/dist/cjs/ws/dependencies-ws-client.js.map +0 -1
  99. package/dist/cjs/ws/file-editing-ws-client.js +0 -162
  100. package/dist/cjs/ws/file-editing-ws-client.js.map +0 -1
  101. package/dist/cjs/ws/filesystem-ws-client.js +0 -305
  102. package/dist/cjs/ws/filesystem-ws-client.js.map +0 -1
  103. package/dist/cjs/ws/indexing-ws-client.js +0 -275
  104. package/dist/cjs/ws/indexing-ws-client.js.map +0 -1
  105. package/dist/cjs/ws/notifications-ws-client.js +0 -12
  106. package/dist/cjs/ws/notifications-ws-client.js.map +0 -1
  107. package/dist/esm/api/agents-api.js +0 -90
  108. package/dist/esm/api/agents-api.js.map +0 -1
  109. package/dist/esm/api/chat-api/websocket-helpers.js +0 -205
  110. package/dist/esm/api/chat-api/websocket-helpers.js.map +0 -1
  111. package/dist/esm/api/dependencies-api.js +0 -282
  112. package/dist/esm/api/dependencies-api.js.map +0 -1
  113. package/dist/esm/constants/websocket-events.constants.js +0 -167
  114. package/dist/esm/constants/websocket-events.constants.js.map +0 -1
  115. package/dist/esm/constants/websocket-namespaces.constants.js +0 -19
  116. package/dist/esm/constants/websocket-namespaces.constants.js.map +0 -1
  117. package/dist/esm/interfaces/websocket/callbacks.interfaces.js +0 -2
  118. package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +0 -1
  119. package/dist/esm/interfaces/websocket/client-options.interfaces.js +0 -2
  120. package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +0 -1
  121. package/dist/esm/interfaces/websocket/events.interfaces.js +0 -2
  122. package/dist/esm/interfaces/websocket/events.interfaces.js.map +0 -1
  123. package/dist/esm/interfaces/websocket/vscode-command.interfaces.js +0 -39
  124. package/dist/esm/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
  125. package/dist/esm/simple-indexing-client.js +0 -134
  126. package/dist/esm/simple-indexing-client.js.map +0 -1
  127. package/dist/esm/utils/code-solver-websocket-client.js +0 -492
  128. package/dist/esm/utils/code-solver-websocket-client.js.map +0 -1
  129. package/dist/esm/utils/connection-state-manager.js +0 -129
  130. package/dist/esm/utils/connection-state-manager.js.map +0 -1
  131. package/dist/esm/utils/indexing-websocket-client.js +0 -103
  132. package/dist/esm/utils/indexing-websocket-client.js.map +0 -1
  133. package/dist/esm/utils/session-manager.js +0 -109
  134. package/dist/esm/utils/session-manager.js.map +0 -1
  135. package/dist/esm/utils/simple-connection-monitor.js +0 -48
  136. package/dist/esm/utils/simple-connection-monitor.js.map +0 -1
  137. package/dist/esm/utils/websocket-client.js +0 -634
  138. package/dist/esm/utils/websocket-client.js.map +0 -1
  139. package/dist/esm/ws/base-ws-client.js +0 -276
  140. package/dist/esm/ws/base-ws-client.js.map +0 -1
  141. package/dist/esm/ws/dependencies-ws-client.js +0 -7
  142. package/dist/esm/ws/dependencies-ws-client.js.map +0 -1
  143. package/dist/esm/ws/file-editing-ws-client.js +0 -158
  144. package/dist/esm/ws/file-editing-ws-client.js.map +0 -1
  145. package/dist/esm/ws/filesystem-ws-client.js +0 -301
  146. package/dist/esm/ws/filesystem-ws-client.js.map +0 -1
  147. package/dist/esm/ws/indexing-ws-client.js +0 -271
  148. package/dist/esm/ws/indexing-ws-client.js.map +0 -1
  149. package/dist/esm/ws/notifications-ws-client.js +0 -8
  150. package/dist/esm/ws/notifications-ws-client.js.map +0 -1
  151. package/dist/types/api/agents-api.d.ts +0 -141
  152. package/dist/types/api/agents-api.d.ts.map +0 -1
  153. package/dist/types/api/chat-api/websocket-helpers.d.ts +0 -40
  154. package/dist/types/api/chat-api/websocket-helpers.d.ts.map +0 -1
  155. package/dist/types/api/dependencies-api.d.ts +0 -109
  156. package/dist/types/api/dependencies-api.d.ts.map +0 -1
  157. package/dist/types/constants/websocket-events.constants.d.ts +0 -144
  158. package/dist/types/constants/websocket-events.constants.d.ts.map +0 -1
  159. package/dist/types/constants/websocket-namespaces.constants.d.ts +0 -17
  160. package/dist/types/constants/websocket-namespaces.constants.d.ts.map +0 -1
  161. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +0 -30
  162. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +0 -1
  163. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +0 -51
  164. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +0 -1
  165. package/dist/types/interfaces/websocket/events.interfaces.d.ts +0 -165
  166. package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +0 -1
  167. package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts +0 -56
  168. package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts.map +0 -1
  169. package/dist/types/simple-indexing-client.d.ts +0 -66
  170. package/dist/types/simple-indexing-client.d.ts.map +0 -1
  171. package/dist/types/utils/code-solver-websocket-client.d.ts +0 -144
  172. package/dist/types/utils/code-solver-websocket-client.d.ts.map +0 -1
  173. package/dist/types/utils/connection-state-manager.d.ts +0 -94
  174. package/dist/types/utils/connection-state-manager.d.ts.map +0 -1
  175. package/dist/types/utils/indexing-websocket-client.d.ts +0 -123
  176. package/dist/types/utils/indexing-websocket-client.d.ts.map +0 -1
  177. package/dist/types/utils/session-manager.d.ts +0 -98
  178. package/dist/types/utils/session-manager.d.ts.map +0 -1
  179. package/dist/types/utils/simple-connection-monitor.d.ts +0 -26
  180. package/dist/types/utils/simple-connection-monitor.d.ts.map +0 -1
  181. package/dist/types/utils/websocket-client.d.ts +0 -233
  182. package/dist/types/utils/websocket-client.d.ts.map +0 -1
  183. package/dist/types/ws/base-ws-client.d.ts +0 -119
  184. package/dist/types/ws/base-ws-client.d.ts.map +0 -1
  185. package/dist/types/ws/dependencies-ws-client.d.ts +0 -6
  186. package/dist/types/ws/dependencies-ws-client.d.ts.map +0 -1
  187. package/dist/types/ws/file-editing-ws-client.d.ts +0 -85
  188. package/dist/types/ws/file-editing-ws-client.d.ts.map +0 -1
  189. package/dist/types/ws/filesystem-ws-client.d.ts +0 -201
  190. package/dist/types/ws/filesystem-ws-client.d.ts.map +0 -1
  191. package/dist/types/ws/indexing-ws-client.d.ts +0 -94
  192. package/dist/types/ws/indexing-ws-client.d.ts.map +0 -1
  193. package/dist/types/ws/notifications-ws-client.d.ts +0 -5
  194. package/dist/types/ws/notifications-ws-client.d.ts.map +0 -1
  195. package/docs/ARCHITECTURE.md +0 -268
  196. package/docs/QUICK_START.md +0 -126
  197. package/docs/WEBSOCKET.md +0 -472
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solver-sdk",
3
- "version": "2.7.5",
3
+ "version": "3.1.0",
4
4
  "description": "SDK для интеграции с Code Solver Backend API",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -37,44 +37,47 @@
37
37
  "test:quick": "node quick-test.js",
38
38
  "test:unit": "npx jest sdk-test/unit/ --testMatch=\"**/sdk-test/unit/**/*.test.js\"",
39
39
  "test:mock": "./sdk-test/run-integration-tests.sh mock-only",
40
- "test:integration": "./scripts/run-integration-tests.sh",
40
+ "test:integration": "node --experimental-vm-modules node_modules/.bin/jest sdk-test/integration/",
41
41
  "test:integration:full": "./sdk-test/run-integration-tests.sh with-backend",
42
42
  "test:node": "cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/node",
43
43
  "test:browser": "cross-env NODE_OPTIONS=--experimental-vm-modules jest tests/browser",
44
- "test:indexing": "NODE_TLS_REJECT_UNAUTHORIZED=0 node --experimental-vm-modules node_modules/.bin/jest tests/unit/indexing",
45
- "test:indexing:integration": "NODE_TLS_REJECT_UNAUTHORIZED=0 TEST_WITH_BACKEND=true node --experimental-vm-modules node_modules/.bin/jest tests/unit/indexing",
46
- "test:reasoning": "NODE_TLS_REJECT_UNAUTHORIZED=0 node --experimental-vm-modules node_modules/.bin/jest tests/unit/reasoning-api.test.js",
47
- "test:reasoning:websocket": "NODE_TLS_REJECT_UNAUTHORIZED=0 node --experimental-vm-modules node_modules/.bin/jest tests/integration/reasoning-websocket.test.js",
48
- "test:reasoning:anthropic": "NODE_TLS_REJECT_UNAUTHORIZED=0 node --experimental-vm-modules node_modules/.bin/jest tests/integration/anthropic-reasoning-format.test.js",
49
- "test:reasoning:e2e": "NODE_TLS_REJECT_UNAUTHORIZED=0 TEST_WITH_BACKEND=true node --experimental-vm-modules node_modules/.bin/jest tests/integration/reasoning-e2e.test.js",
50
- "test:reasoning:all": "npm run test:reasoning && npm run test:reasoning:websocket && npm run test:reasoning:anthropic && npm run test:reasoning:e2e",
44
+ "test:indexing": "node --experimental-vm-modules node_modules/.bin/jest tests/unit/indexing",
45
+ "test:indexing:integration": "TEST_WITH_BACKEND=true node --experimental-vm-modules node_modules/.bin/jest tests/unit/indexing",
46
+ "test:reasoning": "node --experimental-vm-modules node_modules/.bin/jest tests/unit/reasoning/",
47
+ "test:reasoning:anthropic": "node --experimental-vm-modules node_modules/.bin/jest tests/integration/anthropic.test.js",
48
+ "test:reasoning:e2e": "node --experimental-vm-modules node_modules/.bin/jest tests/integration/e2e-reasoning.test.js",
49
+ "test:reasoning:all": "npm run test:reasoning && npm run test:reasoning:anthropic && npm run test:reasoning:e2e",
51
50
  "test:reasoning:script": "./scripts/run-reasoning-tests.sh",
52
- "example:check-api": "NODE_TLS_REJECT_UNAUTHORIZED=0 node examples/check-api-connection.js",
53
- "example:indexing": "NODE_TLS_REJECT_UNAUTHORIZED=0 node examples/indexing-example.js",
54
- "example:dependencies": "NODE_TLS_REJECT_UNAUTHORIZED=0 node examples/dependencies-example.js",
55
- "example:regions": "NODE_TLS_REJECT_UNAUTHORIZED=0 node examples/region-test.js",
51
+ "test:api": "node --experimental-vm-modules node_modules/.bin/jest sdk-test/integration/",
52
+ "test:basic": "node --experimental-vm-modules node_modules/.bin/jest sdk-test/integration/full-api-coverage.test.js",
53
+ "example:check-api": "node examples/check-api-connection.js",
54
+ "example:indexing": "node examples/indexing-example.js",
55
+ "example:dependencies": "node examples/dependencies-example.js",
56
+ "example:regions": "node examples/region-test.js",
56
57
  "prepare": "npm run build",
57
58
  "prepublishOnly": "npm run build"
58
59
  },
59
60
  "keywords": [
60
- "code-solver",
61
+ "ai",
62
+ "code-analysis",
63
+ "code-search",
61
64
  "sdk",
62
- "api",
63
- "client",
64
- "vscode-extension",
65
+ "anthropic",
66
+ "claude",
67
+ "typescript",
68
+ "javascript",
69
+ "node",
65
70
  "browser",
66
- "esm",
67
- "websocket",
68
- "dependencies",
69
- "code-analysis"
71
+ "http",
72
+ "rest",
73
+ "api"
70
74
  ],
71
75
  "author": "Code Solver Team",
72
76
  "license": "MIT",
73
77
  "dependencies": {
74
78
  "axios": "^1.7.9",
75
79
  "event-source-polyfill": "^1.0.31",
76
- "node-fetch": "^3.3.2",
77
- "socket.io-client": "^4.8.1"
80
+ "node-fetch": "^3.3.2"
78
81
  },
79
82
  "devDependencies": {
80
83
  "@babel/core": "^7.24.0",
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AgentsApi = void 0;
4
- /**
5
- * API для работы с агентами
6
- */
7
- class AgentsApi {
8
- /**
9
- * Создает новый экземпляр API для работы с агентами
10
- * @param {HttpClient} httpClient HTTP клиент
11
- */
12
- constructor(httpClient) {
13
- this.httpClient = httpClient;
14
- }
15
- /**
16
- * Получает список всех агентов проекта
17
- * @param {string} projectId Идентификатор проекта
18
- * @returns {Promise<Agent[]>} Список агентов
19
- */
20
- async getAgents(projectId) {
21
- return this.httpClient.get(`/api/projects/${projectId}/agents`);
22
- }
23
- /**
24
- * Получает агента по идентификатору
25
- * @param {string} agentId Идентификатор агента
26
- * @returns {Promise<Agent>} Агент
27
- */
28
- async getAgent(agentId) {
29
- return this.httpClient.get(`/api/agents/${agentId}`);
30
- }
31
- /**
32
- * Создает нового агента
33
- * @param {CreateAgentParams} params Параметры создания агента
34
- * @returns {Promise<Agent>} Созданный агент
35
- */
36
- async createAgent(params) {
37
- return this.httpClient.post('/api/agents', params);
38
- }
39
- /**
40
- * Обновляет агента
41
- * @param {string} agentId Идентификатор агента
42
- * @param {Partial<Pick<Agent, 'name' | 'description' | 'settings'>>} data Данные для обновления
43
- * @returns {Promise<Agent>} Обновленный агент
44
- */
45
- async updateAgent(agentId, data) {
46
- return this.httpClient.put(`/api/agents/${agentId}`, data);
47
- }
48
- /**
49
- * Удаляет агента
50
- * @param {string} agentId Идентификатор агента
51
- * @returns {Promise<void>}
52
- */
53
- async deleteAgent(agentId) {
54
- return this.httpClient.delete(`/api/agents/${agentId}`);
55
- }
56
- /**
57
- * Запускает агента
58
- * @param {string} agentId Идентификатор агента
59
- * @param {object} [params] Параметры запуска
60
- * @returns {Promise<Agent>} Обновленный агент
61
- */
62
- async startAgent(agentId, params) {
63
- return this.httpClient.post(`/api/agents/${agentId}/start`, params);
64
- }
65
- /**
66
- * Останавливает агента
67
- * @param {string} agentId Идентификатор агента
68
- * @returns {Promise<Agent>} Обновленный агент
69
- */
70
- async stopAgent(agentId) {
71
- return this.httpClient.post(`/api/agents/${agentId}/stop`);
72
- }
73
- /**
74
- * Получает задачи агента
75
- * @param {string} agentId Идентификатор агента
76
- * @returns {Promise<AgentTask[]>} Список задач
77
- */
78
- async getAgentTasks(agentId) {
79
- return this.httpClient.get(`/api/agents/${agentId}/tasks`);
80
- }
81
- /**
82
- * Создает новую задачу для агента
83
- * @param {string} agentId Идентификатор агента
84
- * @param {object} params Параметры задачи
85
- * @param {string} params.description Описание задачи
86
- * @param {object} [params.context] Контекст задачи
87
- * @returns {Promise<AgentTask>} Созданная задача
88
- */
89
- async createAgentTask(agentId, params) {
90
- return this.httpClient.post(`/api/agents/${agentId}/tasks`, params);
91
- }
92
- }
93
- exports.AgentsApi = AgentsApi;
94
- //# sourceMappingURL=agents-api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agents-api.js","sourceRoot":"","sources":["../../../src/api/agents-api.ts"],"names":[],"mappings":";;;AA0FA;;GAEG;AACH,MAAa,SAAS;IAIpB;;;OAGG;IACH,YAAY,UAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,SAAS,CAAC,SAAiB;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,SAAS,SAAS,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,QAAQ,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,MAAyB;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CACtB,OAAe,EACf,IAA+D;QAE/D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,OAAe;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,MAAe;QACtD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,OAAO,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,SAAS,CAAC,OAAe;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,OAAO,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,OAAe;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,OAAO,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,eAAe,CAC1B,OAAe,EACf,MAAiD;QAEjD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,OAAO,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;CACF;AAvGD,8BAuGC"}
@@ -1,211 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupSocketEventHandlers = setupSocketEventHandlers;
4
- exports.generateId = generateId;
5
- exports.createWebSocketEventHandler = createWebSocketEventHandler;
6
- exports.normalizeEventName = normalizeEventName;
7
- const websocket_events_constants_1 = require("../../constants/websocket-events.constants");
8
- /**
9
- * Настраивает обработчики событий для WebSocket
10
- */
11
- function setupSocketEventHandlers(socket, socketId, sessionId, onEvent) {
12
- // Установка обработчиков событий
13
- socket.on('connect', () => {
14
- console.log(`[SDK] WebSocket подключен: ${socket.id}, задано socketId: ${socketId}`);
15
- // При подключении отправляем событие аутентификации
16
- socket.emit('authenticate', {
17
- socketId: socketId,
18
- token: 'test-token'
19
- });
20
- // Отправляем событие присоединения к комнате с ID сессии
21
- socket.emit('join_room', { roomId: sessionId });
22
- // Вызываем обработчик события connect
23
- if (onEvent) {
24
- onEvent('connect', { socketId });
25
- }
26
- });
27
- // Обработчик сообщений от сервера
28
- socket.on('message', (data) => {
29
- if (!onEvent || !data)
30
- return;
31
- // Обрабатываем случай, когда сервер отправляет сообщения в формате JSON-строки
32
- if (typeof data === 'string') {
33
- try {
34
- data = JSON.parse(data);
35
- }
36
- catch (e) {
37
- // Оставляем как строку, если не удалось распарсить
38
- }
39
- }
40
- // Передаем событие напрямую, без преобразования формата
41
- if (data && data.type) {
42
- onEvent(data.type, data);
43
- }
44
- else {
45
- // Передаем все остальные сообщения как есть
46
- onEvent('message', data);
47
- }
48
- });
49
- // Обработчик ошибок
50
- socket.on('error', (error) => {
51
- console.error('[SDK] WebSocket error:', error);
52
- // Проверяем наличие ошибки географических ограничений
53
- const isGeoRestriction = (error.type === 'geo_restriction' || error.code === 403) &&
54
- error.message &&
55
- (error.message.includes('ограничен в вашем регионе') ||
56
- error.message.includes('Request not allowed'));
57
- if (isGeoRestriction) {
58
- console.error('\n==============================================');
59
- console.error('⚠️ ОШИБКА ГЕОГРАФИЧЕСКОГО ОГРАНИЧЕНИЯ API ANTHROPIC');
60
- console.error('⚠️ Для работы с API Anthropic требуется VPN или прокси');
61
- console.error('⚠️ Anthropic API доступен только из определенных регионов');
62
- console.error('==============================================');
63
- }
64
- if (onEvent) {
65
- onEvent('error', {
66
- message: error.message || 'Unknown WebSocket error',
67
- code: error.code,
68
- type: isGeoRestriction ? 'geo_restriction' : (error.type || 'websocket_error')
69
- });
70
- }
71
- });
72
- // Обработчик отключения
73
- socket.on('disconnect', (reason) => {
74
- console.log(`[SDK] WebSocket отключен: ${reason}`);
75
- if (onEvent) {
76
- onEvent('disconnect', { reason });
77
- }
78
- });
79
- // Обработчики для событий аутентификации
80
- socket.on('authenticated', (data) => {
81
- console.log('[SDK] Аутентификация успешна', data);
82
- if (onEvent) {
83
- onEvent('authenticated', data);
84
- }
85
- });
86
- socket.on('authentication_error', (data) => {
87
- console.error('[SDK] Ошибка аутентификации:', data);
88
- if (onEvent) {
89
- onEvent('error', { message: 'Ошибка аутентификации: ' + (data.message || 'Unknown error'), code: 'AUTH_ERROR' });
90
- }
91
- });
92
- // Список актуальных событий API Anthropic
93
- [
94
- 'message_start', 'content_block_start', 'content_block_delta',
95
- 'content_block_stop', 'message_delta', 'message_stop', 'done', 'ping'
96
- ].forEach(eventType => {
97
- socket.on(eventType, (data) => {
98
- if (!onEvent)
99
- return;
100
- // Передаем события в их исходном формате без преобразования
101
- onEvent(eventType, data);
102
- });
103
- });
104
- }
105
- /**
106
- * Генерирует случайный ID указанной длины
107
- */
108
- function generateId(length) {
109
- const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
110
- let result = '';
111
- for (let i = 0; i < length; i++) {
112
- result += chars.charAt(Math.floor(Math.random() * chars.length));
113
- }
114
- return result;
115
- }
116
- /**
117
- * Создает обработчик WebSocket событий для работы с API Anthropic
118
- * @param socket Socket.io сокет
119
- * @param options Опции обработчика
120
- * @returns Функция отписки от событий
121
- */
122
- function createWebSocketEventHandler(socket, options) {
123
- const { onMessageStart, onContentBlockStart, onContentBlockDelta, onContentBlockStop, onMessageDelta, onMessageStop, onThinking, onText, onInputJson, onSignature, onError, onDone } = options;
124
- // Общая функция для обработки events
125
- const handleEvent = (event, handler) => {
126
- if (handler) {
127
- socket.on(event, (data) => {
128
- try {
129
- handler(data);
130
- }
131
- catch (err) {
132
- console.error(`Ошибка при обработке события ${event}:`, err);
133
- if (onError)
134
- onError(err);
135
- }
136
- });
137
- }
138
- };
139
- // Регистрируем обработчики для всех требуемых событий
140
- handleEvent(websocket_events_constants_1.WebSocketEvents.MESSAGE_START, onMessageStart);
141
- handleEvent(websocket_events_constants_1.WebSocketEvents.CONTENT_BLOCK_START, onContentBlockStart);
142
- handleEvent(websocket_events_constants_1.WebSocketEvents.CONTENT_BLOCK_STOP, onContentBlockStop);
143
- handleEvent(websocket_events_constants_1.WebSocketEvents.MESSAGE_DELTA, onMessageDelta);
144
- handleEvent(websocket_events_constants_1.WebSocketEvents.MESSAGE_STOP, onMessageStop);
145
- handleEvent(websocket_events_constants_1.WebSocketEvents.ERROR, onError);
146
- handleEvent(websocket_events_constants_1.WebSocketEvents.DONE, onDone);
147
- // Обработчик дельт блоков контента
148
- if (onContentBlockDelta || onThinking || onText || onInputJson || onSignature) {
149
- socket.on(websocket_events_constants_1.WebSocketEvents.CONTENT_BLOCK_DELTA, (data) => {
150
- try {
151
- // Вызываем общий обработчик для всех дельт
152
- if (onContentBlockDelta) {
153
- onContentBlockDelta(data);
154
- }
155
- // Обрабатываем разные типы дельт
156
- if (data.delta && data.delta.type) {
157
- // Обработка thinking
158
- if (data.delta.type === websocket_events_constants_1.ContentBlockDeltaTypes.THINKING_DELTA && onThinking && data.delta.thinking) {
159
- onThinking(data.delta.thinking);
160
- }
161
- // Обработка текста
162
- else if (data.delta.type === websocket_events_constants_1.ContentBlockDeltaTypes.TEXT_DELTA && onText && data.delta.text) {
163
- onText(data.delta.text);
164
- }
165
- // Обработка JSON для инструментов
166
- else if (data.delta.type === websocket_events_constants_1.ContentBlockDeltaTypes.INPUT_JSON_DELTA && onInputJson) {
167
- const jsonData = data.delta.input_json || '';
168
- onInputJson(jsonData);
169
- }
170
- // Обработка подписи для верификации
171
- else if (data.delta.type === websocket_events_constants_1.ContentBlockDeltaTypes.SIGNATURE_DELTA && onSignature && data.delta.signature) {
172
- onSignature(data.delta.signature);
173
- }
174
- }
175
- }
176
- catch (err) {
177
- console.error('Ошибка при обработке события content_block_delta:', err);
178
- if (onError)
179
- onError(err);
180
- }
181
- });
182
- }
183
- // Возвращаем функцию для отписки от всех событий
184
- return () => {
185
- socket.off(websocket_events_constants_1.WebSocketEvents.MESSAGE_START);
186
- socket.off(websocket_events_constants_1.WebSocketEvents.CONTENT_BLOCK_START);
187
- socket.off(websocket_events_constants_1.WebSocketEvents.CONTENT_BLOCK_DELTA);
188
- socket.off(websocket_events_constants_1.WebSocketEvents.CONTENT_BLOCK_STOP);
189
- socket.off(websocket_events_constants_1.WebSocketEvents.MESSAGE_DELTA);
190
- socket.off(websocket_events_constants_1.WebSocketEvents.MESSAGE_STOP);
191
- socket.off(websocket_events_constants_1.WebSocketEvents.ERROR);
192
- socket.off(websocket_events_constants_1.WebSocketEvents.DONE);
193
- };
194
- }
195
- /**
196
- * Нормализует имя события для совместимости с API Anthropic
197
- * @param eventName Имя события
198
- * @returns Нормализованное имя события
199
- */
200
- function normalizeEventName(eventName) {
201
- const eventMap = {
202
- 'message.start': websocket_events_constants_1.WebSocketEvents.MESSAGE_START,
203
- 'message.stop': websocket_events_constants_1.WebSocketEvents.MESSAGE_STOP,
204
- 'message.delta': websocket_events_constants_1.WebSocketEvents.MESSAGE_DELTA,
205
- 'content_block.start': websocket_events_constants_1.WebSocketEvents.CONTENT_BLOCK_START,
206
- 'content_block.delta': websocket_events_constants_1.WebSocketEvents.CONTENT_BLOCK_DELTA,
207
- 'content_block.stop': websocket_events_constants_1.WebSocketEvents.CONTENT_BLOCK_STOP,
208
- };
209
- return eventMap[eventName] || eventName;
210
- }
211
- //# sourceMappingURL=websocket-helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket-helpers.js","sourceRoot":"","sources":["../../../../src/api/chat-api/websocket-helpers.ts"],"names":[],"mappings":"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"}