solver-sdk 1.0.1
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 +248 -0
- package/dist/cjs/api/agents-api.js +94 -0
- package/dist/cjs/api/agents-api.js.map +1 -0
- package/dist/cjs/api/code-modification-api.js +60 -0
- package/dist/cjs/api/code-modification-api.js.map +1 -0
- package/dist/cjs/api/context-api.js +58 -0
- package/dist/cjs/api/context-api.js.map +1 -0
- package/dist/cjs/api/projects-api.js +82 -0
- package/dist/cjs/api/projects-api.js.map +1 -0
- package/dist/cjs/api/reasoning-api.js +73 -0
- package/dist/cjs/api/reasoning-api.js.map +1 -0
- package/dist/cjs/api/search-api.js +54 -0
- package/dist/cjs/api/search-api.js.map +1 -0
- package/dist/cjs/code-solver-sdk.js +327 -0
- package/dist/cjs/code-solver-sdk.js.map +1 -0
- package/dist/cjs/index.js +118 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/http-client.js +3 -0
- package/dist/cjs/interfaces/http-client.js.map +1 -0
- package/dist/cjs/interfaces/sdk-options.js +3 -0
- package/dist/cjs/interfaces/sdk-options.js.map +1 -0
- package/dist/cjs/models/types.js +17 -0
- package/dist/cjs/models/types.js.map +1 -0
- package/dist/cjs/utils/code-solver-websocket-client.js +267 -0
- package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -0
- package/dist/cjs/utils/http-client.js +234 -0
- package/dist/cjs/utils/http-client.js.map +1 -0
- package/dist/cjs/utils/indexing-websocket-client.js +107 -0
- package/dist/cjs/utils/indexing-websocket-client.js.map +1 -0
- package/dist/cjs/utils/sse-client.js +233 -0
- package/dist/cjs/utils/sse-client.js.map +1 -0
- package/dist/cjs/utils/websocket-client.js +268 -0
- package/dist/cjs/utils/websocket-client.js.map +1 -0
- package/dist/esm/api/agents-api.js +90 -0
- package/dist/esm/api/agents-api.js.map +1 -0
- package/dist/esm/api/code-modification-api.js +56 -0
- package/dist/esm/api/code-modification-api.js.map +1 -0
- package/dist/esm/api/context-api.js +54 -0
- package/dist/esm/api/context-api.js.map +1 -0
- package/dist/esm/api/projects-api.js +78 -0
- package/dist/esm/api/projects-api.js.map +1 -0
- package/dist/esm/api/reasoning-api.js +69 -0
- package/dist/esm/api/reasoning-api.js.map +1 -0
- package/dist/esm/api/search-api.js +50 -0
- package/dist/esm/api/search-api.js.map +1 -0
- package/dist/esm/code-solver-sdk.js +323 -0
- package/dist/esm/code-solver-sdk.js.map +1 -0
- package/dist/esm/index.js +1882 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/http-client.js +2 -0
- package/dist/esm/interfaces/http-client.js.map +1 -0
- package/dist/esm/interfaces/sdk-options.js +2 -0
- package/dist/esm/interfaces/sdk-options.js.map +1 -0
- package/dist/esm/models/types.js +14 -0
- package/dist/esm/models/types.js.map +1 -0
- package/dist/esm/types/api/agents-api.d.ts +141 -0
- package/dist/esm/types/api/agents-api.d.ts.map +1 -0
- package/dist/esm/types/api/code-modification-api.d.ts +104 -0
- package/dist/esm/types/api/code-modification-api.d.ts.map +1 -0
- package/dist/esm/types/api/context-api.d.ts +86 -0
- package/dist/esm/types/api/context-api.d.ts.map +1 -0
- package/dist/esm/types/api/projects-api.d.ts +89 -0
- package/dist/esm/types/api/projects-api.d.ts.map +1 -0
- package/dist/esm/types/api/reasoning-api.d.ts +130 -0
- package/dist/esm/types/api/reasoning-api.d.ts.map +1 -0
- package/dist/esm/types/api/search-api.d.ts +92 -0
- package/dist/esm/types/api/search-api.d.ts.map +1 -0
- package/dist/esm/types/code-solver-sdk.d.ts +145 -0
- package/dist/esm/types/code-solver-sdk.d.ts.map +1 -0
- package/dist/esm/types/index.d.ts +81 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/interfaces/http-client.d.ts +110 -0
- package/dist/esm/types/interfaces/http-client.d.ts.map +1 -0
- package/dist/esm/types/interfaces/sdk-options.d.ts +34 -0
- package/dist/esm/types/interfaces/sdk-options.d.ts.map +1 -0
- package/dist/esm/types/models/types.d.ts +139 -0
- package/dist/esm/types/models/types.d.ts.map +1 -0
- package/dist/esm/types/utils/code-solver-websocket-client.d.ts +138 -0
- package/dist/esm/types/utils/code-solver-websocket-client.d.ts.map +1 -0
- package/dist/esm/types/utils/http-client.d.ts +85 -0
- package/dist/esm/types/utils/http-client.d.ts.map +1 -0
- package/dist/esm/types/utils/indexing-websocket-client.d.ts +123 -0
- package/dist/esm/types/utils/indexing-websocket-client.d.ts.map +1 -0
- package/dist/esm/types/utils/sse-client.d.ts +92 -0
- package/dist/esm/types/utils/sse-client.d.ts.map +1 -0
- package/dist/esm/types/utils/websocket-client.d.ts +118 -0
- package/dist/esm/types/utils/websocket-client.d.ts.map +1 -0
- package/dist/esm/utils/code-solver-websocket-client.js +263 -0
- package/dist/esm/utils/code-solver-websocket-client.js.map +1 -0
- package/dist/esm/utils/http-client.js +227 -0
- package/dist/esm/utils/http-client.js.map +1 -0
- package/dist/esm/utils/indexing-websocket-client.js +103 -0
- package/dist/esm/utils/indexing-websocket-client.js.map +1 -0
- package/dist/esm/utils/sse-client.js +229 -0
- package/dist/esm/utils/sse-client.js.map +1 -0
- package/dist/esm/utils/websocket-client.js +264 -0
- package/dist/esm/utils/websocket-client.js.map +1 -0
- package/dist/index.d.ts +1599 -0
- package/dist/types/api/agents-api.d.ts +141 -0
- package/dist/types/api/agents-api.d.ts.map +1 -0
- package/dist/types/api/code-modification-api.d.ts +104 -0
- package/dist/types/api/code-modification-api.d.ts.map +1 -0
- package/dist/types/api/context-api.d.ts +86 -0
- package/dist/types/api/context-api.d.ts.map +1 -0
- package/dist/types/api/projects-api.d.ts +89 -0
- package/dist/types/api/projects-api.d.ts.map +1 -0
- package/dist/types/api/reasoning-api.d.ts +130 -0
- package/dist/types/api/reasoning-api.d.ts.map +1 -0
- package/dist/types/api/search-api.d.ts +92 -0
- package/dist/types/api/search-api.d.ts.map +1 -0
- package/dist/types/code-solver-sdk.d.ts +145 -0
- package/dist/types/code-solver-sdk.d.ts.map +1 -0
- package/dist/types/index.d.ts +81 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces/http-client.d.ts +110 -0
- package/dist/types/interfaces/http-client.d.ts.map +1 -0
- package/dist/types/interfaces/sdk-options.d.ts +34 -0
- package/dist/types/interfaces/sdk-options.d.ts.map +1 -0
- package/dist/types/models/types.d.ts +139 -0
- package/dist/types/models/types.d.ts.map +1 -0
- package/dist/types/utils/code-solver-websocket-client.d.ts +138 -0
- package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -0
- package/dist/types/utils/http-client.d.ts +85 -0
- package/dist/types/utils/http-client.d.ts.map +1 -0
- package/dist/types/utils/indexing-websocket-client.d.ts +123 -0
- package/dist/types/utils/indexing-websocket-client.d.ts.map +1 -0
- package/dist/types/utils/sse-client.d.ts +92 -0
- package/dist/types/utils/sse-client.d.ts.map +1 -0
- package/dist/types/utils/websocket-client.d.ts +118 -0
- package/dist/types/utils/websocket-client.d.ts.map +1 -0
- package/dist/umd/code-solver-sdk.js +1902 -0
- package/dist/umd/code-solver-sdk.js.map +1 -0
- package/dist/umd/code-solver-sdk.min.js +2 -0
- package/dist/umd/code-solver-sdk.min.js.map +1 -0
- package/dist/umd/types/api/agents-api.d.ts +141 -0
- package/dist/umd/types/api/agents-api.d.ts.map +1 -0
- package/dist/umd/types/api/code-modification-api.d.ts +104 -0
- package/dist/umd/types/api/code-modification-api.d.ts.map +1 -0
- package/dist/umd/types/api/context-api.d.ts +86 -0
- package/dist/umd/types/api/context-api.d.ts.map +1 -0
- package/dist/umd/types/api/projects-api.d.ts +89 -0
- package/dist/umd/types/api/projects-api.d.ts.map +1 -0
- package/dist/umd/types/api/reasoning-api.d.ts +130 -0
- package/dist/umd/types/api/reasoning-api.d.ts.map +1 -0
- package/dist/umd/types/api/search-api.d.ts +92 -0
- package/dist/umd/types/api/search-api.d.ts.map +1 -0
- package/dist/umd/types/code-solver-sdk.d.ts +145 -0
- package/dist/umd/types/code-solver-sdk.d.ts.map +1 -0
- package/dist/umd/types/index.d.ts +81 -0
- package/dist/umd/types/index.d.ts.map +1 -0
- package/dist/umd/types/interfaces/http-client.d.ts +110 -0
- package/dist/umd/types/interfaces/http-client.d.ts.map +1 -0
- package/dist/umd/types/interfaces/sdk-options.d.ts +34 -0
- package/dist/umd/types/interfaces/sdk-options.d.ts.map +1 -0
- package/dist/umd/types/models/types.d.ts +139 -0
- package/dist/umd/types/models/types.d.ts.map +1 -0
- package/dist/umd/types/utils/code-solver-websocket-client.d.ts +138 -0
- package/dist/umd/types/utils/code-solver-websocket-client.d.ts.map +1 -0
- package/dist/umd/types/utils/http-client.d.ts +85 -0
- package/dist/umd/types/utils/http-client.d.ts.map +1 -0
- package/dist/umd/types/utils/indexing-websocket-client.d.ts +123 -0
- package/dist/umd/types/utils/indexing-websocket-client.d.ts.map +1 -0
- package/dist/umd/types/utils/sse-client.d.ts +92 -0
- package/dist/umd/types/utils/sse-client.d.ts.map +1 -0
- package/dist/umd/types/utils/websocket-client.d.ts +118 -0
- package/dist/umd/types/utils/websocket-client.d.ts.map +1 -0
- package/package.json +98 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CodeSolverWebSocketClient = exports.WebSocketNamespace = void 0;
|
|
4
|
+
const websocket_client_js_1 = require("./websocket-client.js");
|
|
5
|
+
/**
|
|
6
|
+
* Пространства имен для WebSocket
|
|
7
|
+
*/
|
|
8
|
+
var WebSocketNamespace;
|
|
9
|
+
(function (WebSocketNamespace) {
|
|
10
|
+
/** Пространство имен для рассуждений */
|
|
11
|
+
WebSocketNamespace["REASONING"] = "reasoning";
|
|
12
|
+
/** Пространство имен для индексации */
|
|
13
|
+
WebSocketNamespace["INDEXING"] = "indexing";
|
|
14
|
+
/** Пространство имен для уведомлений */
|
|
15
|
+
WebSocketNamespace["NOTIFICATIONS"] = "notifications";
|
|
16
|
+
})(WebSocketNamespace || (exports.WebSocketNamespace = WebSocketNamespace = {}));
|
|
17
|
+
/**
|
|
18
|
+
* WebSocket клиент для работы с Code Solver API
|
|
19
|
+
*/
|
|
20
|
+
class CodeSolverWebSocketClient {
|
|
21
|
+
/**
|
|
22
|
+
* Создает новый WebSocket клиент для Code Solver API
|
|
23
|
+
* @param {string} baseURL Базовый URL API
|
|
24
|
+
* @param {CodeSolverWebSocketOptions} [options] Опции клиента
|
|
25
|
+
*/
|
|
26
|
+
constructor(baseURL, options = {}) {
|
|
27
|
+
/** WebSocket клиенты для разных пространств имен */
|
|
28
|
+
this.clients = new Map();
|
|
29
|
+
/** Активная сессия рассуждения */
|
|
30
|
+
this.activeReasoningId = null;
|
|
31
|
+
/** Активная сессия индексации */
|
|
32
|
+
this.activeProjectId = null;
|
|
33
|
+
this.baseURL = baseURL.replace(/^http/, 'ws');
|
|
34
|
+
this.options = {
|
|
35
|
+
...options,
|
|
36
|
+
headers: {
|
|
37
|
+
...(options.headers || {}),
|
|
38
|
+
...(options.apiKey ? { 'Authorization': `Bearer ${options.apiKey}` } : {})
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Подключается к пространству имен WebSocket
|
|
44
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
45
|
+
* @param {Record<string, any>} [params] Параметры подключения
|
|
46
|
+
* @returns {Promise<WebSocketClient>} WebSocket клиент
|
|
47
|
+
*/
|
|
48
|
+
async connect(namespace, params = {}) {
|
|
49
|
+
// Если клиент уже существует, возвращаем его
|
|
50
|
+
if (this.clients.has(namespace)) {
|
|
51
|
+
const client = this.clients.get(namespace);
|
|
52
|
+
// Если клиент уже подключен, возвращаем его
|
|
53
|
+
if (client.isConnected()) {
|
|
54
|
+
return client;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Формируем URL для подключения
|
|
58
|
+
const url = new URL(`${this.baseURL}/${namespace}`);
|
|
59
|
+
// Добавляем параметры к URL
|
|
60
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
61
|
+
url.searchParams.append(key, String(value));
|
|
62
|
+
});
|
|
63
|
+
// Создаем новый WebSocket клиент
|
|
64
|
+
const client = new websocket_client_js_1.WebSocketClient(url.toString(), this.options);
|
|
65
|
+
// Подключаемся к серверу
|
|
66
|
+
await client.connect();
|
|
67
|
+
// Сохраняем клиент
|
|
68
|
+
this.clients.set(namespace, client);
|
|
69
|
+
return client;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Подключается к сессии рассуждения
|
|
73
|
+
* @param {string} [reasoningId] Идентификатор рассуждения
|
|
74
|
+
* @returns {Promise<void>}
|
|
75
|
+
*/
|
|
76
|
+
async connectToReasoning(reasoningId) {
|
|
77
|
+
// Если reasoningId не указан, используем активный
|
|
78
|
+
const id = reasoningId || this.activeReasoningId;
|
|
79
|
+
if (!id) {
|
|
80
|
+
throw new Error('Необходимо указать идентификатор рассуждения');
|
|
81
|
+
}
|
|
82
|
+
// Сохраняем активный идентификатор рассуждения
|
|
83
|
+
this.activeReasoningId = id;
|
|
84
|
+
// Подключаемся к пространству имен
|
|
85
|
+
await this.connect(WebSocketNamespace.REASONING, { reasoningId: id });
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Подключается к сессии индексации проекта
|
|
89
|
+
* @param {string} [projectId] Идентификатор проекта
|
|
90
|
+
* @returns {Promise<void>}
|
|
91
|
+
*/
|
|
92
|
+
async connectToIndexing(projectId) {
|
|
93
|
+
// Если projectId не указан, используем активный
|
|
94
|
+
const id = projectId || this.activeProjectId;
|
|
95
|
+
if (!id) {
|
|
96
|
+
throw new Error('Необходимо указать идентификатор проекта');
|
|
97
|
+
}
|
|
98
|
+
// Сохраняем активный идентификатор проекта
|
|
99
|
+
this.activeProjectId = id;
|
|
100
|
+
// Подключаемся к пространству имен
|
|
101
|
+
await this.connect(WebSocketNamespace.INDEXING, { projectId: id });
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Подключается к уведомлениям
|
|
105
|
+
* @returns {Promise<void>}
|
|
106
|
+
*/
|
|
107
|
+
async connectToNotifications() {
|
|
108
|
+
// Подключаемся к пространству имен
|
|
109
|
+
await this.connect(WebSocketNamespace.NOTIFICATIONS);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Отключается от пространства имен
|
|
113
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
114
|
+
*/
|
|
115
|
+
disconnect(namespace) {
|
|
116
|
+
const client = this.clients.get(namespace);
|
|
117
|
+
if (client) {
|
|
118
|
+
client.close();
|
|
119
|
+
this.clients.delete(namespace);
|
|
120
|
+
}
|
|
121
|
+
// Сбрасываем активные сессии
|
|
122
|
+
if (namespace === WebSocketNamespace.REASONING) {
|
|
123
|
+
this.activeReasoningId = null;
|
|
124
|
+
}
|
|
125
|
+
else if (namespace === WebSocketNamespace.INDEXING) {
|
|
126
|
+
this.activeProjectId = null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Отключается от всех пространств имен
|
|
131
|
+
*/
|
|
132
|
+
disconnectAll() {
|
|
133
|
+
for (const [namespace, client] of this.clients.entries()) {
|
|
134
|
+
client.close();
|
|
135
|
+
this.clients.delete(namespace);
|
|
136
|
+
}
|
|
137
|
+
// Сбрасываем активные сессии
|
|
138
|
+
this.activeReasoningId = null;
|
|
139
|
+
this.activeProjectId = null;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Добавляет обработчик события для пространства имен
|
|
143
|
+
* @param {string} eventType Тип события
|
|
144
|
+
* @param {Function} handler Обработчик события
|
|
145
|
+
* @param {WebSocketNamespace} [namespace] Пространство имен (если не указано, добавляется ко всем активным)
|
|
146
|
+
*/
|
|
147
|
+
on(eventType, handler, namespace) {
|
|
148
|
+
if (namespace) {
|
|
149
|
+
// Если указано пространство имен, добавляем обработчик только к нему
|
|
150
|
+
const client = this.clients.get(namespace);
|
|
151
|
+
if (!client) {
|
|
152
|
+
throw new Error(`Не подключен к пространству имен ${namespace}`);
|
|
153
|
+
}
|
|
154
|
+
client.on(eventType, handler);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
// Если пространство имен не указано, добавляем обработчик ко всем активным пространствам
|
|
158
|
+
for (const client of this.clients.values()) {
|
|
159
|
+
client.on(eventType, handler);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Удаляет обработчик события для пространства имен
|
|
165
|
+
* @param {string} eventType Тип события
|
|
166
|
+
* @param {Function} [handler] Обработчик события (если не указан, удаляются все обработчики)
|
|
167
|
+
* @param {WebSocketNamespace} [namespace] Пространство имен (если не указано, удаляется из всех активных)
|
|
168
|
+
*/
|
|
169
|
+
off(eventType, handler, namespace) {
|
|
170
|
+
if (namespace) {
|
|
171
|
+
// Если указано пространство имен, удаляем обработчик только из него
|
|
172
|
+
const client = this.clients.get(namespace);
|
|
173
|
+
if (!client) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
client.off(eventType, handler);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
// Если пространство имен не указано, удаляем обработчик из всех активных пространств
|
|
180
|
+
for (const client of this.clients.values()) {
|
|
181
|
+
client.off(eventType, handler);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Отправляет сообщение в пространство имен
|
|
187
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
188
|
+
* @param {string} eventType Тип события
|
|
189
|
+
* @param {any} [data] Данные сообщения
|
|
190
|
+
* @returns {boolean} Успешно ли отправлено сообщение
|
|
191
|
+
*/
|
|
192
|
+
send(namespace, eventType, data) {
|
|
193
|
+
const client = this.clients.get(namespace);
|
|
194
|
+
if (!client) {
|
|
195
|
+
throw new Error(`Не подключен к пространству имен ${namespace}`);
|
|
196
|
+
}
|
|
197
|
+
return client.send({
|
|
198
|
+
event: eventType,
|
|
199
|
+
data
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Отправляет сообщение в активную сессию рассуждения
|
|
204
|
+
* @param {string} eventType Тип события
|
|
205
|
+
* @param {any} [data] Данные сообщения
|
|
206
|
+
* @returns {boolean} Успешно ли отправлено сообщение
|
|
207
|
+
*/
|
|
208
|
+
sendToReasoning(eventType, data) {
|
|
209
|
+
if (!this.activeReasoningId) {
|
|
210
|
+
throw new Error('Не подключен к сессии рассуждения');
|
|
211
|
+
}
|
|
212
|
+
return this.send(WebSocketNamespace.REASONING, eventType, data);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Отправляет сообщение в активную сессию индексации
|
|
216
|
+
* @param {string} eventType Тип события
|
|
217
|
+
* @param {any} [data] Данные сообщения
|
|
218
|
+
* @returns {boolean} Успешно ли отправлено сообщение
|
|
219
|
+
*/
|
|
220
|
+
sendToIndexing(eventType, data) {
|
|
221
|
+
if (!this.activeProjectId) {
|
|
222
|
+
throw new Error('Не подключен к сессии индексации');
|
|
223
|
+
}
|
|
224
|
+
return this.send(WebSocketNamespace.INDEXING, eventType, data);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Отправляет сообщение в уведомления
|
|
228
|
+
* @param {string} eventType Тип события
|
|
229
|
+
* @param {any} [data] Данные сообщения
|
|
230
|
+
* @returns {boolean} Успешно ли отправлено сообщение
|
|
231
|
+
*/
|
|
232
|
+
sendToNotifications(eventType, data) {
|
|
233
|
+
return this.send(WebSocketNamespace.NOTIFICATIONS, eventType, data);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Проверяет, подключен ли клиент к указанному пространству имен
|
|
237
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
238
|
+
* @returns {boolean} Статус подключения
|
|
239
|
+
*/
|
|
240
|
+
isConnected(namespace) {
|
|
241
|
+
const client = this.clients.get(namespace);
|
|
242
|
+
return client ? client.isConnected() : false;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Проверяет, подключен ли клиент к пространству имен рассуждений
|
|
246
|
+
* @returns {boolean} Статус подключения
|
|
247
|
+
*/
|
|
248
|
+
isConnectedToReasoning() {
|
|
249
|
+
return this.isConnected(WebSocketNamespace.REASONING);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Проверяет, подключен ли клиент к пространству имен индексации
|
|
253
|
+
* @returns {boolean} Статус подключения
|
|
254
|
+
*/
|
|
255
|
+
isConnectedToIndexing() {
|
|
256
|
+
return this.isConnected(WebSocketNamespace.INDEXING);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Проверяет, подключен ли клиент к пространству имен уведомлений
|
|
260
|
+
* @returns {boolean} Статус подключения
|
|
261
|
+
*/
|
|
262
|
+
isConnectedToNotifications() {
|
|
263
|
+
return this.isConnected(WebSocketNamespace.NOTIFICATIONS);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
exports.CodeSolverWebSocketClient = CodeSolverWebSocketClient;
|
|
267
|
+
//# sourceMappingURL=code-solver-websocket-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-solver-websocket-client.js","sourceRoot":"","sources":["../../../src/utils/code-solver-websocket-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HttpClient = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
/**
|
|
9
|
+
* Определение типа среды выполнения
|
|
10
|
+
* @returns 'browser' | 'node'
|
|
11
|
+
*/
|
|
12
|
+
function getEnvironment() {
|
|
13
|
+
return (typeof window !== 'undefined' && typeof window.document !== 'undefined')
|
|
14
|
+
? 'browser'
|
|
15
|
+
: 'node';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* HTTP клиент для выполнения запросов к API
|
|
19
|
+
*
|
|
20
|
+
* Предоставляет методы для работы с REST API, включая обработку ошибок,
|
|
21
|
+
* повторные попытки и таймауты.
|
|
22
|
+
*/
|
|
23
|
+
class HttpClient {
|
|
24
|
+
/**
|
|
25
|
+
* Создает новый HTTP клиент
|
|
26
|
+
* @param {string} baseURL Базовый URL для запросов
|
|
27
|
+
* @param {HttpClientOptions} [options] Опции для HTTP клиента
|
|
28
|
+
*/
|
|
29
|
+
constructor(baseURL, options = {}) {
|
|
30
|
+
this.baseURL = baseURL;
|
|
31
|
+
this.options = {
|
|
32
|
+
headers: {
|
|
33
|
+
'Content-Type': 'application/json',
|
|
34
|
+
'Accept': 'application/json',
|
|
35
|
+
...(options.headers || {})
|
|
36
|
+
},
|
|
37
|
+
timeout: options.timeout || 30000,
|
|
38
|
+
retry: options.retry || {
|
|
39
|
+
maxRetries: 3,
|
|
40
|
+
retryDelay: 1000,
|
|
41
|
+
maxRetryDelay: 10000,
|
|
42
|
+
retryStatusCodes: [408, 429, 500, 502, 503, 504]
|
|
43
|
+
},
|
|
44
|
+
httpsAgent: options.httpsAgent
|
|
45
|
+
};
|
|
46
|
+
this.environment = getEnvironment();
|
|
47
|
+
// Создаем Axios инстанс с базовыми настройками
|
|
48
|
+
this.axiosInstance = axios_1.default.create({
|
|
49
|
+
baseURL: this.baseURL,
|
|
50
|
+
timeout: this.options.timeout,
|
|
51
|
+
headers: this.options.headers,
|
|
52
|
+
...(this.environment === 'node' && this.options.httpsAgent ? { httpsAgent: this.options.httpsAgent } : {})
|
|
53
|
+
});
|
|
54
|
+
// Добавляем интерцептор для обработки ошибок и повторных попыток
|
|
55
|
+
this.setupInterceptors();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Настраивает интерцепторы Axios
|
|
59
|
+
*/
|
|
60
|
+
setupInterceptors() {
|
|
61
|
+
// Интерцептор для ответов
|
|
62
|
+
this.axiosInstance.interceptors.response.use((response) => response.data, async (error) => {
|
|
63
|
+
const { config, response } = error;
|
|
64
|
+
// Если нет конфига запроса или это уже повторный запрос, или skipRetry установлен, возвращаем ошибку
|
|
65
|
+
if (!config || config._retryCount || config.skipRetry) {
|
|
66
|
+
return Promise.reject(error);
|
|
67
|
+
}
|
|
68
|
+
config._retryCount = config._retryCount || 0;
|
|
69
|
+
const retryConfig = this.options.retry;
|
|
70
|
+
// Проверяем, нужно ли делать повторную попытку для данного статуса
|
|
71
|
+
const shouldRetry = response &&
|
|
72
|
+
retryConfig.retryStatusCodes?.includes(response.status) &&
|
|
73
|
+
config._retryCount < (retryConfig.maxRetries || 3);
|
|
74
|
+
if (shouldRetry) {
|
|
75
|
+
config._retryCount += 1;
|
|
76
|
+
// Вычисляем время задержки перед повторной попыткой
|
|
77
|
+
const delay = Math.min((retryConfig.retryDelay || 1000) * Math.pow(2, config._retryCount - 1), retryConfig.maxRetryDelay || 10000);
|
|
78
|
+
// Ждем перед повторной попыткой
|
|
79
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
80
|
+
// Делаем повторную попытку
|
|
81
|
+
return this.axiosInstance(config);
|
|
82
|
+
}
|
|
83
|
+
// Если не нужно делать повторную попытку, возвращаем ошибку
|
|
84
|
+
return Promise.reject(error);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Выполняет HTTP запрос
|
|
89
|
+
* @param {RequestOptions} options Опции запроса
|
|
90
|
+
* @returns {Promise<T>} Ответ от API
|
|
91
|
+
*/
|
|
92
|
+
async request(options) {
|
|
93
|
+
const axiosConfig = {
|
|
94
|
+
url: options.url,
|
|
95
|
+
method: options.method,
|
|
96
|
+
data: options.data,
|
|
97
|
+
params: options.params,
|
|
98
|
+
headers: {
|
|
99
|
+
...this.options.headers,
|
|
100
|
+
...(options.headers || {})
|
|
101
|
+
},
|
|
102
|
+
timeout: options.timeout || this.options.timeout
|
|
103
|
+
};
|
|
104
|
+
// Если указано не делать повторные попытки, добавляем специальный флаг
|
|
105
|
+
if (options.noRetry) {
|
|
106
|
+
axiosConfig.skipRetry = true;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
return await this.axiosInstance.request(axiosConfig);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
throw this.handleError(error);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Выполняет GET запрос
|
|
117
|
+
* @param {string} url URL для запроса
|
|
118
|
+
* @param {Record<string, any>} [params] Query параметры
|
|
119
|
+
* @param {Record<string, string>} [headers] HTTP заголовки
|
|
120
|
+
* @returns {Promise<T>} Ответ от API
|
|
121
|
+
*/
|
|
122
|
+
async get(url, params, headers) {
|
|
123
|
+
return this.request({
|
|
124
|
+
url,
|
|
125
|
+
method: 'GET',
|
|
126
|
+
params,
|
|
127
|
+
headers
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Выполняет POST запрос
|
|
132
|
+
* @param {string} url URL для запроса
|
|
133
|
+
* @param {any} [data] Данные для отправки
|
|
134
|
+
* @param {Record<string, string>} [headers] HTTP заголовки
|
|
135
|
+
* @returns {Promise<T>} Ответ от API
|
|
136
|
+
*/
|
|
137
|
+
async post(url, data, headers) {
|
|
138
|
+
return this.request({
|
|
139
|
+
url,
|
|
140
|
+
method: 'POST',
|
|
141
|
+
data,
|
|
142
|
+
headers
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Выполняет PUT запрос
|
|
147
|
+
* @param {string} url URL для запроса
|
|
148
|
+
* @param {any} [data] Данные для отправки
|
|
149
|
+
* @param {Record<string, string>} [headers] HTTP заголовки
|
|
150
|
+
* @returns {Promise<T>} Ответ от API
|
|
151
|
+
*/
|
|
152
|
+
async put(url, data, headers) {
|
|
153
|
+
return this.request({
|
|
154
|
+
url,
|
|
155
|
+
method: 'PUT',
|
|
156
|
+
data,
|
|
157
|
+
headers
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Выполняет DELETE запрос
|
|
162
|
+
* @param {string} url URL для запроса
|
|
163
|
+
* @param {Record<string, any>} [params] Query параметры
|
|
164
|
+
* @param {Record<string, string>} [headers] HTTP заголовки
|
|
165
|
+
* @returns {Promise<T>} Ответ от API
|
|
166
|
+
*/
|
|
167
|
+
async delete(url, params, headers) {
|
|
168
|
+
return this.request({
|
|
169
|
+
url,
|
|
170
|
+
method: 'DELETE',
|
|
171
|
+
params,
|
|
172
|
+
headers
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Выполняет PATCH запрос
|
|
177
|
+
* @param {string} url URL для запроса
|
|
178
|
+
* @param {any} [data] Данные для отправки
|
|
179
|
+
* @param {Record<string, string>} [headers] HTTP заголовки
|
|
180
|
+
* @returns {Promise<T>} Ответ от API
|
|
181
|
+
*/
|
|
182
|
+
async patch(url, data, headers) {
|
|
183
|
+
return this.request({
|
|
184
|
+
url,
|
|
185
|
+
method: 'PATCH',
|
|
186
|
+
data,
|
|
187
|
+
headers
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Обрабатывает ошибки от Axios
|
|
192
|
+
* @param {any} error Ошибка от Axios
|
|
193
|
+
* @returns {Error} Обработанная ошибка
|
|
194
|
+
*/
|
|
195
|
+
handleError(error) {
|
|
196
|
+
let enhancedError;
|
|
197
|
+
if (error.response) {
|
|
198
|
+
// Ошибка от сервера с кодом ответа
|
|
199
|
+
const { status, data } = error.response;
|
|
200
|
+
const message = data?.message || data?.error || `HTTP ошибка ${status}`;
|
|
201
|
+
enhancedError = new Error(message);
|
|
202
|
+
enhancedError.status = status;
|
|
203
|
+
enhancedError.data = data;
|
|
204
|
+
enhancedError.isApiError = true;
|
|
205
|
+
}
|
|
206
|
+
else if (error.request) {
|
|
207
|
+
// Запрос был сделан, но ответ не получен
|
|
208
|
+
enhancedError = new Error('Нет ответа от сервера. Проверьте подключение к интернету.');
|
|
209
|
+
enhancedError.request = error.request;
|
|
210
|
+
enhancedError.isNetworkError = true;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// Произошла ошибка при настройке запроса
|
|
214
|
+
enhancedError = new Error(error.message || 'Произошла неизвестная ошибка');
|
|
215
|
+
enhancedError.isUnknownError = true;
|
|
216
|
+
}
|
|
217
|
+
// Сохраняем оригинальную ошибку для отладки
|
|
218
|
+
enhancedError.originalError = error;
|
|
219
|
+
// Пытаемся обработать ошибку через глобальный обработчик
|
|
220
|
+
try {
|
|
221
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
222
|
+
const { CodeSolverSDK } = require('../code-solver-sdk.js');
|
|
223
|
+
if (typeof CodeSolverSDK.handleError === 'function') {
|
|
224
|
+
CodeSolverSDK.handleError(enhancedError);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch (e) {
|
|
228
|
+
// Игнорируем ошибки при импорте или вызове обработчика
|
|
229
|
+
}
|
|
230
|
+
return enhancedError;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
exports.HttpClient = HttpClient;
|
|
234
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IndexingWebSocketClient = exports.IndexingEvent = void 0;
|
|
4
|
+
const websocket_client_js_1 = require("./websocket-client.js");
|
|
5
|
+
/**
|
|
6
|
+
* События индексации
|
|
7
|
+
*/
|
|
8
|
+
var IndexingEvent;
|
|
9
|
+
(function (IndexingEvent) {
|
|
10
|
+
/** Начало индексации */
|
|
11
|
+
IndexingEvent["START"] = "indexing_start";
|
|
12
|
+
/** Прогресс индексации */
|
|
13
|
+
IndexingEvent["PROGRESS"] = "indexing_progress";
|
|
14
|
+
/** Завершение индексации */
|
|
15
|
+
IndexingEvent["COMPLETE"] = "indexing_complete";
|
|
16
|
+
/** Ошибка индексации */
|
|
17
|
+
IndexingEvent["ERROR"] = "indexing_error";
|
|
18
|
+
})(IndexingEvent || (exports.IndexingEvent = IndexingEvent = {}));
|
|
19
|
+
/**
|
|
20
|
+
* WebSocket клиент для работы с индексацией
|
|
21
|
+
*/
|
|
22
|
+
class IndexingWebSocketClient extends websocket_client_js_1.WebSocketClient {
|
|
23
|
+
/**
|
|
24
|
+
* Создает новый WebSocket клиент для индексации
|
|
25
|
+
* @param {string} url URL для подключения
|
|
26
|
+
* @param {IndexingWebSocketOptions} [options] Опции клиента
|
|
27
|
+
*/
|
|
28
|
+
constructor(url, options = {}) {
|
|
29
|
+
// Сохраняем базовый URL
|
|
30
|
+
const baseUrl = url;
|
|
31
|
+
// Формируем URL с параметрами для проекта если он указан
|
|
32
|
+
let targetUrl = url;
|
|
33
|
+
if (options.projectId) {
|
|
34
|
+
const urlWithParams = new URL(url);
|
|
35
|
+
urlWithParams.searchParams.append('projectId', options.projectId);
|
|
36
|
+
urlWithParams.searchParams.append('type', 'indexing');
|
|
37
|
+
targetUrl = urlWithParams.toString();
|
|
38
|
+
}
|
|
39
|
+
super(targetUrl, {
|
|
40
|
+
...options,
|
|
41
|
+
headers: {
|
|
42
|
+
...(options.headers || {}),
|
|
43
|
+
...(options.apiKey ? { 'Authorization': `Bearer ${options.apiKey}` } : {})
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
/** Идентификатор проекта */
|
|
47
|
+
this.projectId = null;
|
|
48
|
+
this.baseUrl = baseUrl;
|
|
49
|
+
this.projectId = options.projectId || null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Устанавливает идентификатор проекта
|
|
53
|
+
* @param {string} projectId Идентификатор проекта
|
|
54
|
+
*/
|
|
55
|
+
setProjectId(projectId) {
|
|
56
|
+
this.projectId = projectId;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Подключается к WebSocket для отслеживания индексации
|
|
60
|
+
* @param {string} [projectId] Идентификатор проекта (если не был указан в конструкторе)
|
|
61
|
+
* @returns {Promise<void>}
|
|
62
|
+
*/
|
|
63
|
+
async connect(projectId) {
|
|
64
|
+
const targetProjectId = projectId || this.projectId;
|
|
65
|
+
if (!targetProjectId) {
|
|
66
|
+
throw new Error('Project ID is required for indexing WebSocket connection');
|
|
67
|
+
}
|
|
68
|
+
// Сохраняем ID проекта
|
|
69
|
+
this.projectId = targetProjectId;
|
|
70
|
+
// Если проект изменился и клиент уже подключен, отключаемся
|
|
71
|
+
if (projectId && this.isConnected()) {
|
|
72
|
+
this.close();
|
|
73
|
+
}
|
|
74
|
+
// Выполняем соединение
|
|
75
|
+
await super.connect();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Подписывается на события начала индексации
|
|
79
|
+
* @param {(data: {projectId: string}) => void} handler Обработчик события
|
|
80
|
+
*/
|
|
81
|
+
onStart(handler) {
|
|
82
|
+
this.on(IndexingEvent.START, handler);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Подписывается на события прогресса индексации
|
|
86
|
+
* @param {(data: IndexingProgressData) => void} handler Обработчик события
|
|
87
|
+
*/
|
|
88
|
+
onProgress(handler) {
|
|
89
|
+
this.on(IndexingEvent.PROGRESS, handler);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Подписывается на события завершения индексации
|
|
93
|
+
* @param {(data: IndexingCompleteData) => void} handler Обработчик события
|
|
94
|
+
*/
|
|
95
|
+
onComplete(handler) {
|
|
96
|
+
this.on(IndexingEvent.COMPLETE, handler);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Подписывается на события ошибок индексации
|
|
100
|
+
* @param {(data: IndexingErrorData) => void} handler Обработчик события
|
|
101
|
+
*/
|
|
102
|
+
onError(handler) {
|
|
103
|
+
this.on(IndexingEvent.ERROR, handler);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.IndexingWebSocketClient = IndexingWebSocketClient;
|
|
107
|
+
//# sourceMappingURL=indexing-websocket-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexing-websocket-client.js","sourceRoot":"","sources":["../../../src/utils/indexing-websocket-client.ts"],"names":[],"mappings":";;;AAAA,+DAAgF;AAEhF;;GAEG;AACH,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,wBAAwB;IACxB,yCAAwB,CAAA;IAExB,0BAA0B;IAC1B,+CAA8B,CAAA;IAE9B,4BAA4B;IAC5B,+CAA8B,CAAA;IAE9B,wBAAwB;IACxB,yCAAwB,CAAA;AAC1B,CAAC,EAZW,aAAa,6BAAb,aAAa,QAYxB;AAkFD;;GAEG;AACH,MAAa,uBAAwB,SAAQ,qCAAe;IAO1D;;;;OAIG;IACH,YAAY,GAAW,EAAE,UAAoC,EAAE;QAC7D,wBAAwB;QACxB,MAAM,OAAO,GAAG,GAAG,CAAC;QAEpB,yDAAyD;QACzD,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAClE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACtD,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,SAAS,EAAE;YACf,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1B,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3E;SACF,CAAC,CAAC;QA9BL,4BAA4B;QACpB,cAAS,GAAkB,IAAI,CAAC;QA+BtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,SAAiB;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,SAAkB;QACrC,MAAM,eAAe,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAEpD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;QAEjC,4DAA4D;QAC5D,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QAED,uBAAuB;QACvB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,OAA4C;QACzD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,OAA6C;QAC7D,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,OAA6C;QAC7D,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,OAA0C;QACvD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;AApGD,0DAoGC"}
|