solver-sdk 2.8.0 → 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.
- package/README.md +200 -368
- package/dist/cjs/api/chat-api/index.js +23 -49
- package/dist/cjs/api/chat-api/index.js.map +1 -1
- package/dist/cjs/api/chat-api/interfaces.js +1 -0
- package/dist/cjs/api/chat-api/interfaces.js.map +1 -1
- package/dist/cjs/api/context-api.js +6 -1
- package/dist/cjs/api/context-api.js.map +1 -1
- package/dist/cjs/api/models-api.js +43 -60
- package/dist/cjs/api/models-api.js.map +1 -1
- package/dist/cjs/api/projects-api.js +63 -293
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/api/search-api.js +131 -8
- package/dist/cjs/api/search-api.js.map +1 -1
- package/dist/cjs/code-solver-sdk.js +68 -322
- package/dist/cjs/code-solver-sdk.js.map +1 -1
- package/dist/cjs/index.js +3 -19
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/logger.js +4 -4
- package/dist/cjs/utils/logger.js.map +1 -1
- package/dist/esm/api/chat-api/index.js +22 -48
- package/dist/esm/api/chat-api/index.js.map +1 -1
- package/dist/esm/api/chat-api/interfaces.js +1 -0
- package/dist/esm/api/chat-api/interfaces.js.map +1 -1
- package/dist/esm/api/context-api.js +6 -1
- package/dist/esm/api/context-api.js.map +1 -1
- package/dist/esm/api/models-api.js +43 -60
- package/dist/esm/api/models-api.js.map +1 -1
- package/dist/esm/api/projects-api.js +63 -293
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/api/search-api.js +131 -8
- package/dist/esm/api/search-api.js.map +1 -1
- package/dist/esm/code-solver-sdk.js +68 -322
- package/dist/esm/code-solver-sdk.js.map +1 -1
- package/dist/esm/index.js +2 -18
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/logger.js +3 -3
- package/dist/esm/utils/logger.js.map +1 -1
- package/dist/types/api/chat-api/index.d.ts +1 -13
- package/dist/types/api/chat-api/index.d.ts.map +1 -1
- package/dist/types/api/chat-api/interfaces.d.ts +6 -54
- package/dist/types/api/chat-api/interfaces.d.ts.map +1 -1
- package/dist/types/api/chat-api/models.d.ts +3 -26
- package/dist/types/api/chat-api/models.d.ts.map +1 -1
- package/dist/types/api/context-api.d.ts.map +1 -1
- package/dist/types/api/models-api.d.ts +31 -62
- package/dist/types/api/models-api.d.ts.map +1 -1
- package/dist/types/api/projects-api.d.ts +47 -126
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/api/search-api.d.ts +147 -6
- package/dist/types/api/search-api.d.ts.map +1 -1
- package/dist/types/code-solver-sdk.d.ts +36 -86
- package/dist/types/code-solver-sdk.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -14
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/sdk-options.d.ts +18 -66
- package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
- package/dist/types/utils/logger.d.ts +3 -3
- package/dist/types/utils/logger.d.ts.map +1 -1
- package/docs/README.md +53 -37
- package/docs/VSCODE_INTEGRATION.md +208 -371
- package/docs/indexing/INDEXING.md +658 -335
- package/package.json +26 -23
- package/dist/cjs/api/agents-api.js +0 -94
- package/dist/cjs/api/agents-api.js.map +0 -1
- package/dist/cjs/api/chat-api/websocket-helpers.js +0 -211
- package/dist/cjs/api/chat-api/websocket-helpers.js.map +0 -1
- package/dist/cjs/api/dependencies-api.js +0 -286
- package/dist/cjs/api/dependencies-api.js.map +0 -1
- package/dist/cjs/constants/websocket-events.constants.js +0 -170
- package/dist/cjs/constants/websocket-events.constants.js.map +0 -1
- package/dist/cjs/constants/websocket-namespaces.constants.js +0 -22
- package/dist/cjs/constants/websocket-namespaces.constants.js.map +0 -1
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +0 -3
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +0 -1
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js +0 -3
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +0 -1
- package/dist/cjs/interfaces/websocket/events.interfaces.js +0 -3
- package/dist/cjs/interfaces/websocket/events.interfaces.js.map +0 -1
- package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js +0 -42
- package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
- package/dist/cjs/simple-indexing-client.js +0 -138
- package/dist/cjs/simple-indexing-client.js.map +0 -1
- package/dist/cjs/utils/code-solver-websocket-client.js +0 -497
- package/dist/cjs/utils/code-solver-websocket-client.js.map +0 -1
- package/dist/cjs/utils/connection-state-manager.js +0 -133
- package/dist/cjs/utils/connection-state-manager.js.map +0 -1
- package/dist/cjs/utils/indexing-websocket-client.js +0 -107
- package/dist/cjs/utils/indexing-websocket-client.js.map +0 -1
- package/dist/cjs/utils/session-manager.js +0 -114
- package/dist/cjs/utils/session-manager.js.map +0 -1
- package/dist/cjs/utils/simple-connection-monitor.js +0 -52
- package/dist/cjs/utils/simple-connection-monitor.js.map +0 -1
- package/dist/cjs/utils/websocket-client.js +0 -638
- package/dist/cjs/utils/websocket-client.js.map +0 -1
- package/dist/cjs/ws/base-ws-client.js +0 -280
- package/dist/cjs/ws/base-ws-client.js.map +0 -1
- package/dist/cjs/ws/dependencies-ws-client.js +0 -11
- package/dist/cjs/ws/dependencies-ws-client.js.map +0 -1
- package/dist/cjs/ws/file-editing-ws-client.js +0 -162
- package/dist/cjs/ws/file-editing-ws-client.js.map +0 -1
- package/dist/cjs/ws/filesystem-ws-client.js +0 -305
- package/dist/cjs/ws/filesystem-ws-client.js.map +0 -1
- package/dist/cjs/ws/indexing-ws-client.js +0 -275
- package/dist/cjs/ws/indexing-ws-client.js.map +0 -1
- package/dist/cjs/ws/notifications-ws-client.js +0 -12
- package/dist/cjs/ws/notifications-ws-client.js.map +0 -1
- package/dist/esm/api/agents-api.js +0 -90
- package/dist/esm/api/agents-api.js.map +0 -1
- package/dist/esm/api/chat-api/websocket-helpers.js +0 -205
- package/dist/esm/api/chat-api/websocket-helpers.js.map +0 -1
- package/dist/esm/api/dependencies-api.js +0 -282
- package/dist/esm/api/dependencies-api.js.map +0 -1
- package/dist/esm/constants/websocket-events.constants.js +0 -167
- package/dist/esm/constants/websocket-events.constants.js.map +0 -1
- package/dist/esm/constants/websocket-namespaces.constants.js +0 -19
- package/dist/esm/constants/websocket-namespaces.constants.js.map +0 -1
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js +0 -2
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +0 -1
- package/dist/esm/interfaces/websocket/client-options.interfaces.js +0 -2
- package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +0 -1
- package/dist/esm/interfaces/websocket/events.interfaces.js +0 -2
- package/dist/esm/interfaces/websocket/events.interfaces.js.map +0 -1
- package/dist/esm/interfaces/websocket/vscode-command.interfaces.js +0 -39
- package/dist/esm/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
- package/dist/esm/simple-indexing-client.js +0 -134
- package/dist/esm/simple-indexing-client.js.map +0 -1
- package/dist/esm/utils/code-solver-websocket-client.js +0 -492
- package/dist/esm/utils/code-solver-websocket-client.js.map +0 -1
- package/dist/esm/utils/connection-state-manager.js +0 -129
- package/dist/esm/utils/connection-state-manager.js.map +0 -1
- package/dist/esm/utils/indexing-websocket-client.js +0 -103
- package/dist/esm/utils/indexing-websocket-client.js.map +0 -1
- package/dist/esm/utils/session-manager.js +0 -109
- package/dist/esm/utils/session-manager.js.map +0 -1
- package/dist/esm/utils/simple-connection-monitor.js +0 -48
- package/dist/esm/utils/simple-connection-monitor.js.map +0 -1
- package/dist/esm/utils/websocket-client.js +0 -634
- package/dist/esm/utils/websocket-client.js.map +0 -1
- package/dist/esm/ws/base-ws-client.js +0 -276
- package/dist/esm/ws/base-ws-client.js.map +0 -1
- package/dist/esm/ws/dependencies-ws-client.js +0 -7
- package/dist/esm/ws/dependencies-ws-client.js.map +0 -1
- package/dist/esm/ws/file-editing-ws-client.js +0 -158
- package/dist/esm/ws/file-editing-ws-client.js.map +0 -1
- package/dist/esm/ws/filesystem-ws-client.js +0 -301
- package/dist/esm/ws/filesystem-ws-client.js.map +0 -1
- package/dist/esm/ws/indexing-ws-client.js +0 -271
- package/dist/esm/ws/indexing-ws-client.js.map +0 -1
- package/dist/esm/ws/notifications-ws-client.js +0 -8
- package/dist/esm/ws/notifications-ws-client.js.map +0 -1
- package/dist/types/api/agents-api.d.ts +0 -141
- package/dist/types/api/agents-api.d.ts.map +0 -1
- package/dist/types/api/chat-api/websocket-helpers.d.ts +0 -40
- package/dist/types/api/chat-api/websocket-helpers.d.ts.map +0 -1
- package/dist/types/api/dependencies-api.d.ts +0 -109
- package/dist/types/api/dependencies-api.d.ts.map +0 -1
- package/dist/types/constants/websocket-events.constants.d.ts +0 -144
- package/dist/types/constants/websocket-events.constants.d.ts.map +0 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts +0 -17
- package/dist/types/constants/websocket-namespaces.constants.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +0 -30
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +0 -51
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/events.interfaces.d.ts +0 -165
- package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +0 -1
- package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts +0 -56
- package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts.map +0 -1
- package/dist/types/simple-indexing-client.d.ts +0 -66
- package/dist/types/simple-indexing-client.d.ts.map +0 -1
- package/dist/types/utils/code-solver-websocket-client.d.ts +0 -144
- package/dist/types/utils/code-solver-websocket-client.d.ts.map +0 -1
- package/dist/types/utils/connection-state-manager.d.ts +0 -94
- package/dist/types/utils/connection-state-manager.d.ts.map +0 -1
- package/dist/types/utils/indexing-websocket-client.d.ts +0 -123
- package/dist/types/utils/indexing-websocket-client.d.ts.map +0 -1
- package/dist/types/utils/session-manager.d.ts +0 -98
- package/dist/types/utils/session-manager.d.ts.map +0 -1
- package/dist/types/utils/simple-connection-monitor.d.ts +0 -26
- package/dist/types/utils/simple-connection-monitor.d.ts.map +0 -1
- package/dist/types/utils/websocket-client.d.ts +0 -233
- package/dist/types/utils/websocket-client.d.ts.map +0 -1
- package/dist/types/ws/base-ws-client.d.ts +0 -119
- package/dist/types/ws/base-ws-client.d.ts.map +0 -1
- package/dist/types/ws/dependencies-ws-client.d.ts +0 -6
- package/dist/types/ws/dependencies-ws-client.d.ts.map +0 -1
- package/dist/types/ws/file-editing-ws-client.d.ts +0 -85
- package/dist/types/ws/file-editing-ws-client.d.ts.map +0 -1
- package/dist/types/ws/filesystem-ws-client.d.ts +0 -201
- package/dist/types/ws/filesystem-ws-client.d.ts.map +0 -1
- package/dist/types/ws/indexing-ws-client.d.ts +0 -94
- package/dist/types/ws/indexing-ws-client.d.ts.map +0 -1
- package/dist/types/ws/notifications-ws-client.d.ts +0 -5
- package/dist/types/ws/notifications-ws-client.d.ts.map +0 -1
- package/docs/ARCHITECTURE.md +0 -268
- package/docs/QUICK_START.md +0 -126
- package/docs/WEBSOCKET.md +0 -472
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API для работы с агентами
|
|
3
|
-
*/
|
|
4
|
-
export class AgentsApi {
|
|
5
|
-
/**
|
|
6
|
-
* Создает новый экземпляр API для работы с агентами
|
|
7
|
-
* @param {HttpClient} httpClient HTTP клиент
|
|
8
|
-
*/
|
|
9
|
-
constructor(httpClient) {
|
|
10
|
-
this.httpClient = httpClient;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Получает список всех агентов проекта
|
|
14
|
-
* @param {string} projectId Идентификатор проекта
|
|
15
|
-
* @returns {Promise<Agent[]>} Список агентов
|
|
16
|
-
*/
|
|
17
|
-
async getAgents(projectId) {
|
|
18
|
-
return this.httpClient.get(`/api/projects/${projectId}/agents`);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Получает агента по идентификатору
|
|
22
|
-
* @param {string} agentId Идентификатор агента
|
|
23
|
-
* @returns {Promise<Agent>} Агент
|
|
24
|
-
*/
|
|
25
|
-
async getAgent(agentId) {
|
|
26
|
-
return this.httpClient.get(`/api/agents/${agentId}`);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Создает нового агента
|
|
30
|
-
* @param {CreateAgentParams} params Параметры создания агента
|
|
31
|
-
* @returns {Promise<Agent>} Созданный агент
|
|
32
|
-
*/
|
|
33
|
-
async createAgent(params) {
|
|
34
|
-
return this.httpClient.post('/api/agents', params);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Обновляет агента
|
|
38
|
-
* @param {string} agentId Идентификатор агента
|
|
39
|
-
* @param {Partial<Pick<Agent, 'name' | 'description' | 'settings'>>} data Данные для обновления
|
|
40
|
-
* @returns {Promise<Agent>} Обновленный агент
|
|
41
|
-
*/
|
|
42
|
-
async updateAgent(agentId, data) {
|
|
43
|
-
return this.httpClient.put(`/api/agents/${agentId}`, data);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Удаляет агента
|
|
47
|
-
* @param {string} agentId Идентификатор агента
|
|
48
|
-
* @returns {Promise<void>}
|
|
49
|
-
*/
|
|
50
|
-
async deleteAgent(agentId) {
|
|
51
|
-
return this.httpClient.delete(`/api/agents/${agentId}`);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Запускает агента
|
|
55
|
-
* @param {string} agentId Идентификатор агента
|
|
56
|
-
* @param {object} [params] Параметры запуска
|
|
57
|
-
* @returns {Promise<Agent>} Обновленный агент
|
|
58
|
-
*/
|
|
59
|
-
async startAgent(agentId, params) {
|
|
60
|
-
return this.httpClient.post(`/api/agents/${agentId}/start`, params);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Останавливает агента
|
|
64
|
-
* @param {string} agentId Идентификатор агента
|
|
65
|
-
* @returns {Promise<Agent>} Обновленный агент
|
|
66
|
-
*/
|
|
67
|
-
async stopAgent(agentId) {
|
|
68
|
-
return this.httpClient.post(`/api/agents/${agentId}/stop`);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Получает задачи агента
|
|
72
|
-
* @param {string} agentId Идентификатор агента
|
|
73
|
-
* @returns {Promise<AgentTask[]>} Список задач
|
|
74
|
-
*/
|
|
75
|
-
async getAgentTasks(agentId) {
|
|
76
|
-
return this.httpClient.get(`/api/agents/${agentId}/tasks`);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Создает новую задачу для агента
|
|
80
|
-
* @param {string} agentId Идентификатор агента
|
|
81
|
-
* @param {object} params Параметры задачи
|
|
82
|
-
* @param {string} params.description Описание задачи
|
|
83
|
-
* @param {object} [params.context] Контекст задачи
|
|
84
|
-
* @returns {Promise<AgentTask>} Созданная задача
|
|
85
|
-
*/
|
|
86
|
-
async createAgentTask(agentId, params) {
|
|
87
|
-
return this.httpClient.post(`/api/agents/${agentId}/tasks`, params);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
//# 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,MAAM,OAAO,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"}
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import { WebSocketEvents, ContentBlockDeltaTypes } from '../../constants/websocket-events.constants';
|
|
2
|
-
/**
|
|
3
|
-
* Настраивает обработчики событий для WebSocket
|
|
4
|
-
*/
|
|
5
|
-
export function setupSocketEventHandlers(socket, socketId, sessionId, onEvent) {
|
|
6
|
-
// Установка обработчиков событий
|
|
7
|
-
socket.on('connect', () => {
|
|
8
|
-
console.log(`[SDK] WebSocket подключен: ${socket.id}, задано socketId: ${socketId}`);
|
|
9
|
-
// При подключении отправляем событие аутентификации
|
|
10
|
-
socket.emit('authenticate', {
|
|
11
|
-
socketId: socketId,
|
|
12
|
-
token: 'test-token'
|
|
13
|
-
});
|
|
14
|
-
// Отправляем событие присоединения к комнате с ID сессии
|
|
15
|
-
socket.emit('join_room', { roomId: sessionId });
|
|
16
|
-
// Вызываем обработчик события connect
|
|
17
|
-
if (onEvent) {
|
|
18
|
-
onEvent('connect', { socketId });
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
// Обработчик сообщений от сервера
|
|
22
|
-
socket.on('message', (data) => {
|
|
23
|
-
if (!onEvent || !data)
|
|
24
|
-
return;
|
|
25
|
-
// Обрабатываем случай, когда сервер отправляет сообщения в формате JSON-строки
|
|
26
|
-
if (typeof data === 'string') {
|
|
27
|
-
try {
|
|
28
|
-
data = JSON.parse(data);
|
|
29
|
-
}
|
|
30
|
-
catch (e) {
|
|
31
|
-
// Оставляем как строку, если не удалось распарсить
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// Передаем событие напрямую, без преобразования формата
|
|
35
|
-
if (data && data.type) {
|
|
36
|
-
onEvent(data.type, data);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
// Передаем все остальные сообщения как есть
|
|
40
|
-
onEvent('message', data);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
// Обработчик ошибок
|
|
44
|
-
socket.on('error', (error) => {
|
|
45
|
-
console.error('[SDK] WebSocket error:', error);
|
|
46
|
-
// Проверяем наличие ошибки географических ограничений
|
|
47
|
-
const isGeoRestriction = (error.type === 'geo_restriction' || error.code === 403) &&
|
|
48
|
-
error.message &&
|
|
49
|
-
(error.message.includes('ограничен в вашем регионе') ||
|
|
50
|
-
error.message.includes('Request not allowed'));
|
|
51
|
-
if (isGeoRestriction) {
|
|
52
|
-
console.error('\n==============================================');
|
|
53
|
-
console.error('⚠️ ОШИБКА ГЕОГРАФИЧЕСКОГО ОГРАНИЧЕНИЯ API ANTHROPIC');
|
|
54
|
-
console.error('⚠️ Для работы с API Anthropic требуется VPN или прокси');
|
|
55
|
-
console.error('⚠️ Anthropic API доступен только из определенных регионов');
|
|
56
|
-
console.error('==============================================');
|
|
57
|
-
}
|
|
58
|
-
if (onEvent) {
|
|
59
|
-
onEvent('error', {
|
|
60
|
-
message: error.message || 'Unknown WebSocket error',
|
|
61
|
-
code: error.code,
|
|
62
|
-
type: isGeoRestriction ? 'geo_restriction' : (error.type || 'websocket_error')
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
// Обработчик отключения
|
|
67
|
-
socket.on('disconnect', (reason) => {
|
|
68
|
-
console.log(`[SDK] WebSocket отключен: ${reason}`);
|
|
69
|
-
if (onEvent) {
|
|
70
|
-
onEvent('disconnect', { reason });
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
// Обработчики для событий аутентификации
|
|
74
|
-
socket.on('authenticated', (data) => {
|
|
75
|
-
console.log('[SDK] Аутентификация успешна', data);
|
|
76
|
-
if (onEvent) {
|
|
77
|
-
onEvent('authenticated', data);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
socket.on('authentication_error', (data) => {
|
|
81
|
-
console.error('[SDK] Ошибка аутентификации:', data);
|
|
82
|
-
if (onEvent) {
|
|
83
|
-
onEvent('error', { message: 'Ошибка аутентификации: ' + (data.message || 'Unknown error'), code: 'AUTH_ERROR' });
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
// Список актуальных событий API Anthropic
|
|
87
|
-
[
|
|
88
|
-
'message_start', 'content_block_start', 'content_block_delta',
|
|
89
|
-
'content_block_stop', 'message_delta', 'message_stop', 'done', 'ping'
|
|
90
|
-
].forEach(eventType => {
|
|
91
|
-
socket.on(eventType, (data) => {
|
|
92
|
-
if (!onEvent)
|
|
93
|
-
return;
|
|
94
|
-
// Передаем события в их исходном формате без преобразования
|
|
95
|
-
onEvent(eventType, data);
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Генерирует случайный ID указанной длины
|
|
101
|
-
*/
|
|
102
|
-
export function generateId(length) {
|
|
103
|
-
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
104
|
-
let result = '';
|
|
105
|
-
for (let i = 0; i < length; i++) {
|
|
106
|
-
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
107
|
-
}
|
|
108
|
-
return result;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Создает обработчик WebSocket событий для работы с API Anthropic
|
|
112
|
-
* @param socket Socket.io сокет
|
|
113
|
-
* @param options Опции обработчика
|
|
114
|
-
* @returns Функция отписки от событий
|
|
115
|
-
*/
|
|
116
|
-
export function createWebSocketEventHandler(socket, options) {
|
|
117
|
-
const { onMessageStart, onContentBlockStart, onContentBlockDelta, onContentBlockStop, onMessageDelta, onMessageStop, onThinking, onText, onInputJson, onSignature, onError, onDone } = options;
|
|
118
|
-
// Общая функция для обработки events
|
|
119
|
-
const handleEvent = (event, handler) => {
|
|
120
|
-
if (handler) {
|
|
121
|
-
socket.on(event, (data) => {
|
|
122
|
-
try {
|
|
123
|
-
handler(data);
|
|
124
|
-
}
|
|
125
|
-
catch (err) {
|
|
126
|
-
console.error(`Ошибка при обработке события ${event}:`, err);
|
|
127
|
-
if (onError)
|
|
128
|
-
onError(err);
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
// Регистрируем обработчики для всех требуемых событий
|
|
134
|
-
handleEvent(WebSocketEvents.MESSAGE_START, onMessageStart);
|
|
135
|
-
handleEvent(WebSocketEvents.CONTENT_BLOCK_START, onContentBlockStart);
|
|
136
|
-
handleEvent(WebSocketEvents.CONTENT_BLOCK_STOP, onContentBlockStop);
|
|
137
|
-
handleEvent(WebSocketEvents.MESSAGE_DELTA, onMessageDelta);
|
|
138
|
-
handleEvent(WebSocketEvents.MESSAGE_STOP, onMessageStop);
|
|
139
|
-
handleEvent(WebSocketEvents.ERROR, onError);
|
|
140
|
-
handleEvent(WebSocketEvents.DONE, onDone);
|
|
141
|
-
// Обработчик дельт блоков контента
|
|
142
|
-
if (onContentBlockDelta || onThinking || onText || onInputJson || onSignature) {
|
|
143
|
-
socket.on(WebSocketEvents.CONTENT_BLOCK_DELTA, (data) => {
|
|
144
|
-
try {
|
|
145
|
-
// Вызываем общий обработчик для всех дельт
|
|
146
|
-
if (onContentBlockDelta) {
|
|
147
|
-
onContentBlockDelta(data);
|
|
148
|
-
}
|
|
149
|
-
// Обрабатываем разные типы дельт
|
|
150
|
-
if (data.delta && data.delta.type) {
|
|
151
|
-
// Обработка thinking
|
|
152
|
-
if (data.delta.type === ContentBlockDeltaTypes.THINKING_DELTA && onThinking && data.delta.thinking) {
|
|
153
|
-
onThinking(data.delta.thinking);
|
|
154
|
-
}
|
|
155
|
-
// Обработка текста
|
|
156
|
-
else if (data.delta.type === ContentBlockDeltaTypes.TEXT_DELTA && onText && data.delta.text) {
|
|
157
|
-
onText(data.delta.text);
|
|
158
|
-
}
|
|
159
|
-
// Обработка JSON для инструментов
|
|
160
|
-
else if (data.delta.type === ContentBlockDeltaTypes.INPUT_JSON_DELTA && onInputJson) {
|
|
161
|
-
const jsonData = data.delta.input_json || '';
|
|
162
|
-
onInputJson(jsonData);
|
|
163
|
-
}
|
|
164
|
-
// Обработка подписи для верификации
|
|
165
|
-
else if (data.delta.type === ContentBlockDeltaTypes.SIGNATURE_DELTA && onSignature && data.delta.signature) {
|
|
166
|
-
onSignature(data.delta.signature);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
catch (err) {
|
|
171
|
-
console.error('Ошибка при обработке события content_block_delta:', err);
|
|
172
|
-
if (onError)
|
|
173
|
-
onError(err);
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
// Возвращаем функцию для отписки от всех событий
|
|
178
|
-
return () => {
|
|
179
|
-
socket.off(WebSocketEvents.MESSAGE_START);
|
|
180
|
-
socket.off(WebSocketEvents.CONTENT_BLOCK_START);
|
|
181
|
-
socket.off(WebSocketEvents.CONTENT_BLOCK_DELTA);
|
|
182
|
-
socket.off(WebSocketEvents.CONTENT_BLOCK_STOP);
|
|
183
|
-
socket.off(WebSocketEvents.MESSAGE_DELTA);
|
|
184
|
-
socket.off(WebSocketEvents.MESSAGE_STOP);
|
|
185
|
-
socket.off(WebSocketEvents.ERROR);
|
|
186
|
-
socket.off(WebSocketEvents.DONE);
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Нормализует имя события для совместимости с API Anthropic
|
|
191
|
-
* @param eventName Имя события
|
|
192
|
-
* @returns Нормализованное имя события
|
|
193
|
-
*/
|
|
194
|
-
export function normalizeEventName(eventName) {
|
|
195
|
-
const eventMap = {
|
|
196
|
-
'message.start': WebSocketEvents.MESSAGE_START,
|
|
197
|
-
'message.stop': WebSocketEvents.MESSAGE_STOP,
|
|
198
|
-
'message.delta': WebSocketEvents.MESSAGE_DELTA,
|
|
199
|
-
'content_block.start': WebSocketEvents.CONTENT_BLOCK_START,
|
|
200
|
-
'content_block.delta': WebSocketEvents.CONTENT_BLOCK_DELTA,
|
|
201
|
-
'content_block.stop': WebSocketEvents.CONTENT_BLOCK_STOP,
|
|
202
|
-
};
|
|
203
|
-
return eventMap[eventName] || eventName;
|
|
204
|
-
}
|
|
205
|
-
//# 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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"}
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
import { WebSocketNamespace } from '../utils/code-solver-websocket-client.js';
|
|
2
|
-
/**
|
|
3
|
-
* API для работы с зависимостями файлов в проектах
|
|
4
|
-
*/
|
|
5
|
-
export class DependenciesApi {
|
|
6
|
-
/**
|
|
7
|
-
* Создает новый экземпляр API для работы с зависимостями
|
|
8
|
-
* @param httpClient HTTP клиент для запросов к API
|
|
9
|
-
*/
|
|
10
|
-
constructor(httpClient) {
|
|
11
|
-
/** WebSocket клиент */
|
|
12
|
-
this.wsClient = null;
|
|
13
|
-
/** Родительский SDK */
|
|
14
|
-
this.parentSdk = null;
|
|
15
|
-
this.client = httpClient;
|
|
16
|
-
this.baseUrl = '/dependencies';
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Получает зависимости конкретного файла
|
|
20
|
-
* @param projectId ID проекта
|
|
21
|
-
* @param params Параметры запроса зависимостей файла
|
|
22
|
-
* @returns Зависимости файла
|
|
23
|
-
*/
|
|
24
|
-
async getFileDependencies(projectId, params) {
|
|
25
|
-
try {
|
|
26
|
-
const response = await this.client.get(`/projects/${projectId}/dependencies/file`, { params: { path: params.filePath } });
|
|
27
|
-
if (!response.success || !response.data) {
|
|
28
|
-
throw new Error(response.error || 'Ошибка при получении зависимостей файла');
|
|
29
|
-
}
|
|
30
|
-
return response.data;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
throw new Error(`Ошибка при получении зависимостей файла: ${error.message}`);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Получает граф зависимостей проекта
|
|
38
|
-
* @param projectId ID проекта
|
|
39
|
-
* @returns Граф зависимостей
|
|
40
|
-
*/
|
|
41
|
-
async getDependencyGraph(projectId) {
|
|
42
|
-
try {
|
|
43
|
-
const response = await this.client.get(`/projects/${projectId}/dependencies/graph`);
|
|
44
|
-
if (!response.success || !response.data) {
|
|
45
|
-
throw new Error(response.error || 'Ошибка при получении графа зависимостей');
|
|
46
|
-
}
|
|
47
|
-
return response.data;
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
throw new Error(`Ошибка при получении графа зависимостей: ${error.message}`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Получает статистику зависимостей проекта
|
|
55
|
-
* @param projectId ID проекта
|
|
56
|
-
* @returns Статистика зависимостей
|
|
57
|
-
*/
|
|
58
|
-
async getDependencyStatistics(projectId) {
|
|
59
|
-
try {
|
|
60
|
-
const response = await this.client.get(`/projects/${projectId}/dependencies/stats`);
|
|
61
|
-
if (!response.success || !response.data) {
|
|
62
|
-
throw new Error(response.error || 'Ошибка при получении статистики зависимостей');
|
|
63
|
-
}
|
|
64
|
-
return response.data;
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
throw new Error(`Ошибка при получении статистики зависимостей: ${error.message}`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Получает детальную информацию о файле
|
|
72
|
-
* @param projectId ID проекта
|
|
73
|
-
* @param filePath Путь к файлу
|
|
74
|
-
* @returns Информация о файле
|
|
75
|
-
*/
|
|
76
|
-
async getFileDetails(projectId, filePath) {
|
|
77
|
-
try {
|
|
78
|
-
const response = await this.client.get(`/projects/${projectId}/dependencies/file-details`, { params: { path: filePath } });
|
|
79
|
-
if (!response.success || !response.data) {
|
|
80
|
-
throw new Error(response.error || 'Ошибка при получении информации о файле');
|
|
81
|
-
}
|
|
82
|
-
return response.data;
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
throw new Error(`Ошибка при получении информации о файле: ${error.message}`);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Получает связанные компоненты для файла
|
|
90
|
-
* @param projectId ID проекта
|
|
91
|
-
* @param params Параметры запроса связанных компонентов
|
|
92
|
-
* @returns Связанные компоненты
|
|
93
|
-
*/
|
|
94
|
-
async getRelatedComponents(projectId, params) {
|
|
95
|
-
try {
|
|
96
|
-
const response = await this.client.get(`/projects/${projectId}/dependencies/related`, {
|
|
97
|
-
params: {
|
|
98
|
-
path: params.filePath,
|
|
99
|
-
maxDepth: params.maxDepth || 3,
|
|
100
|
-
includeIncoming: params.includeIncoming || true,
|
|
101
|
-
includeOutgoing: params.includeOutgoing || true,
|
|
102
|
-
maxNodes: params.maxNodes || 20
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
if (!response.success || !response.data) {
|
|
106
|
-
throw new Error(response.error || 'Ошибка при получении связанных компонентов');
|
|
107
|
-
}
|
|
108
|
-
return response.data;
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
throw new Error(`Ошибка при получении связанных компонентов: ${error.message}`);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Анализирует граф зависимостей проекта
|
|
116
|
-
* @param projectId ID проекта
|
|
117
|
-
* @returns Результат анализа
|
|
118
|
-
*/
|
|
119
|
-
async analyzeDependencyGraph(projectId) {
|
|
120
|
-
try {
|
|
121
|
-
const response = await this.client.get(`/projects/${projectId}/dependencies/analyze`);
|
|
122
|
-
if (!response.success || !response.data) {
|
|
123
|
-
throw new Error(response.error || 'Ошибка при анализе графа зависимостей');
|
|
124
|
-
}
|
|
125
|
-
return response.data;
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
throw new Error(`Ошибка при анализе графа зависимостей: ${error.message}`);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Присоединяется к проекту через WebSocket
|
|
133
|
-
* @param projectId ID проекта
|
|
134
|
-
* @param wsClient WebSocket клиент (опционально)
|
|
135
|
-
* @returns {Promise<{success: boolean, projectId: string, error?: string}>} Результат операции
|
|
136
|
-
*/
|
|
137
|
-
async joinProject(projectId, wsClient) {
|
|
138
|
-
try {
|
|
139
|
-
// Если WebSocket клиент не передан, попробуем получить его из родительского SDK
|
|
140
|
-
const client = wsClient || this._parent?.getWebSocketClient?.();
|
|
141
|
-
if (!client) {
|
|
142
|
-
throw new Error('WebSocket клиент не доступен');
|
|
143
|
-
}
|
|
144
|
-
// Убедимся, что клиент подключен к пространству имен dependencies
|
|
145
|
-
const isConnected = await client.isConnected(WebSocketNamespace.DEPENDENCIES);
|
|
146
|
-
if (!isConnected) {
|
|
147
|
-
await client.connect(WebSocketNamespace.DEPENDENCIES);
|
|
148
|
-
}
|
|
149
|
-
// Отправляем событие присоединения к проекту
|
|
150
|
-
const result = await client.emitWithAck(WebSocketNamespace.DEPENDENCIES, 'join_dependencies', {
|
|
151
|
-
projectId
|
|
152
|
-
});
|
|
153
|
-
return {
|
|
154
|
-
success: true,
|
|
155
|
-
projectId,
|
|
156
|
-
...result
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
catch (error) {
|
|
160
|
-
console.error(`[DependenciesAPI] Ошибка при присоединении к проекту: ${error.message}`);
|
|
161
|
-
return {
|
|
162
|
-
success: false,
|
|
163
|
-
projectId,
|
|
164
|
-
error: error.message
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Подключается к WebSocket для событий зависимостей
|
|
170
|
-
* @returns {Promise<boolean>} Результат подключения
|
|
171
|
-
*/
|
|
172
|
-
async connectWebSocket() {
|
|
173
|
-
try {
|
|
174
|
-
if (!this.parentSdk || typeof this.parentSdk.getWebSocketClient !== 'function') {
|
|
175
|
-
throw new Error('Родительский SDK не настроен или не поддерживает WebSocket');
|
|
176
|
-
}
|
|
177
|
-
this.wsClient = this.parentSdk.getWebSocketClient();
|
|
178
|
-
await this.wsClient.connect(WebSocketNamespace.DEPENDENCIES);
|
|
179
|
-
return this.wsClient.isConnected(WebSocketNamespace.DEPENDENCIES);
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
console.error('[DependenciesApi] Ошибка при подключении к WebSocket:', error.message);
|
|
183
|
-
return false;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Отключается от WebSocket для событий зависимостей
|
|
188
|
-
* @returns {Promise<void>}
|
|
189
|
-
*/
|
|
190
|
-
async disconnectWebSocket() {
|
|
191
|
-
if (this.wsClient) {
|
|
192
|
-
await this.wsClient.disconnect(WebSocketNamespace.DEPENDENCIES);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Проверяет, подключен ли WebSocket
|
|
197
|
-
* @returns {boolean} Состояние подключения
|
|
198
|
-
*/
|
|
199
|
-
isWebSocketConnected() {
|
|
200
|
-
return this.wsClient ? this.wsClient.isConnected(WebSocketNamespace.DEPENDENCIES) : false;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Устанавливает родительский SDK
|
|
204
|
-
* @param sdk Родительский SDK
|
|
205
|
-
*/
|
|
206
|
-
setParent(sdk) {
|
|
207
|
-
this.parentSdk = sdk;
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Подписывается на событие через WebSocket
|
|
211
|
-
* @param event Название события
|
|
212
|
-
* @param callback Функция обратного вызова
|
|
213
|
-
*/
|
|
214
|
-
on(event, callback) {
|
|
215
|
-
if (!this.wsClient) {
|
|
216
|
-
throw new Error('[DependenciesApi] WebSocket не подключен. Подключитесь к WebSocket перед подпиской на события.');
|
|
217
|
-
}
|
|
218
|
-
this.wsClient.on(event, callback);
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Отправляет событие через WebSocket
|
|
222
|
-
* @param event Название события
|
|
223
|
-
* @param data Данные для отправки
|
|
224
|
-
*/
|
|
225
|
-
emitSocketEvent(event, data) {
|
|
226
|
-
if (!this.wsClient) {
|
|
227
|
-
throw new Error('[DependenciesApi] WebSocket не подключен. Подключитесь к WebSocket перед отправкой событий.');
|
|
228
|
-
}
|
|
229
|
-
this.wsClient.send(WebSocketNamespace.DEPENDENCIES, event, data);
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Отправляет событие через WebSocket с ожиданием ответа
|
|
233
|
-
* @param event Имя события
|
|
234
|
-
* @param data Данные для отправки
|
|
235
|
-
* @param timeout Таймаут ожидания ответа
|
|
236
|
-
* @returns {Promise<any>} Ответ от сервера
|
|
237
|
-
*/
|
|
238
|
-
async sendSocketEventWithResponse(event, data, timeout = 5000) {
|
|
239
|
-
if (!this.wsClient) {
|
|
240
|
-
throw new Error('[DependenciesApi] WebSocket не подключен');
|
|
241
|
-
}
|
|
242
|
-
// Реализуем собственный механизм emitWithAck, если wsClient не поддерживает его
|
|
243
|
-
return new Promise((resolve, reject) => {
|
|
244
|
-
try {
|
|
245
|
-
// Создаем уникальный ID для запроса
|
|
246
|
-
const requestId = `req_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
|
|
247
|
-
// Имя события для ответа
|
|
248
|
-
const responseEvent = `${event}_response`;
|
|
249
|
-
// Обработчик для получения ответа
|
|
250
|
-
const responseHandler = (response) => {
|
|
251
|
-
if (response && response.requestId === requestId) {
|
|
252
|
-
// Очищаем таймер и удаляем обработчик
|
|
253
|
-
clearTimeout(timeoutId);
|
|
254
|
-
if (this.wsClient) {
|
|
255
|
-
this.wsClient.off(responseEvent, responseHandler);
|
|
256
|
-
}
|
|
257
|
-
// Разрешаем промис с ответом
|
|
258
|
-
resolve(response.data || response);
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
// Устанавливаем таймаут
|
|
262
|
-
const timeoutId = setTimeout(() => {
|
|
263
|
-
if (this.wsClient) {
|
|
264
|
-
this.wsClient.off(responseEvent, responseHandler);
|
|
265
|
-
}
|
|
266
|
-
reject(new Error(`Таймаут ожидания ответа на событие ${event}`));
|
|
267
|
-
}, timeout);
|
|
268
|
-
// Регистрируем обработчик
|
|
269
|
-
this.wsClient.on(responseEvent, responseHandler);
|
|
270
|
-
// Отправляем событие
|
|
271
|
-
this.wsClient.send(WebSocketNamespace.DEPENDENCIES, event, {
|
|
272
|
-
...data,
|
|
273
|
-
requestId
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
catch (error) {
|
|
277
|
-
reject(error);
|
|
278
|
-
}
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
//# sourceMappingURL=dependencies-api.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies-api.js","sourceRoot":"","sources":["../../../src/api/dependencies-api.ts"],"names":[],"mappings":"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"}
|