solver-sdk 1.8.0 → 1.9.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 (181) hide show
  1. package/README.md +176 -468
  2. package/dist/cjs/api/{chat-api.js → chat-api/index.js} +77 -125
  3. package/dist/cjs/api/chat-api/index.js.map +1 -0
  4. package/dist/cjs/api/chat-api/interfaces.js +3 -0
  5. package/dist/cjs/api/chat-api/interfaces.js.map +1 -0
  6. package/dist/cjs/api/chat-api/models.js +6 -0
  7. package/dist/cjs/api/chat-api/models.js.map +1 -0
  8. package/dist/cjs/api/chat-api/stream-utils.js +192 -0
  9. package/dist/cjs/api/chat-api/stream-utils.js.map +1 -0
  10. package/dist/cjs/api/chat-api/websocket-helpers.js +211 -0
  11. package/dist/cjs/api/chat-api/websocket-helpers.js.map +1 -0
  12. package/dist/cjs/api/projects-api.js +275 -3
  13. package/dist/cjs/api/projects-api.js.map +1 -1
  14. package/dist/cjs/code-solver-sdk.js +21 -23
  15. package/dist/cjs/code-solver-sdk.js.map +1 -1
  16. package/dist/cjs/constants/websocket-events.constants.js +90 -52
  17. package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
  18. package/dist/cjs/constants/websocket-namespaces.constants.js +18 -0
  19. package/dist/cjs/constants/websocket-namespaces.constants.js.map +1 -0
  20. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +3 -0
  21. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +1 -0
  22. package/dist/cjs/interfaces/websocket/client-options.interfaces.js +3 -0
  23. package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +1 -0
  24. package/dist/cjs/interfaces/websocket/events.interfaces.js +3 -0
  25. package/dist/cjs/interfaces/websocket/events.interfaces.js.map +1 -0
  26. package/dist/cjs/interfaces/websocket/stats.interfaces.js +3 -0
  27. package/dist/cjs/interfaces/websocket/stats.interfaces.js.map +1 -0
  28. package/dist/cjs/utils/code-solver-websocket-client.js +383 -1473
  29. package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
  30. package/dist/cjs/utils/connection-state-manager.js +133 -0
  31. package/dist/cjs/utils/connection-state-manager.js.map +1 -0
  32. package/dist/cjs/utils/http-client.js +7 -0
  33. package/dist/cjs/utils/http-client.js.map +1 -1
  34. package/dist/cjs/utils/logger.js +106 -0
  35. package/dist/cjs/utils/logger.js.map +1 -0
  36. package/dist/cjs/utils/ping-pong-manager.js +306 -0
  37. package/dist/cjs/utils/ping-pong-manager.js.map +1 -0
  38. package/dist/cjs/utils/reasoning-auth-helper.js +58 -0
  39. package/dist/cjs/utils/reasoning-auth-helper.js.map +1 -0
  40. package/dist/cjs/utils/session-manager.js +114 -0
  41. package/dist/cjs/utils/session-manager.js.map +1 -0
  42. package/dist/cjs/utils/websocket-client.js +37 -10
  43. package/dist/cjs/utils/websocket-client.js.map +1 -1
  44. package/dist/cjs/ws/base-ws-client.js +286 -0
  45. package/dist/cjs/ws/base-ws-client.js.map +1 -0
  46. package/dist/cjs/ws/dependencies-ws-client.js +11 -0
  47. package/dist/cjs/ws/dependencies-ws-client.js.map +1 -0
  48. package/dist/cjs/ws/diagnostics-service.js +170 -0
  49. package/dist/cjs/ws/diagnostics-service.js.map +1 -0
  50. package/dist/cjs/ws/indexing-ws-client.js +223 -0
  51. package/dist/cjs/ws/indexing-ws-client.js.map +1 -0
  52. package/dist/cjs/ws/notifications-ws-client.js +12 -0
  53. package/dist/cjs/ws/notifications-ws-client.js.map +1 -0
  54. package/dist/cjs/ws/reasoning-ws-client.js +330 -0
  55. package/dist/cjs/ws/reasoning-ws-client.js.map +1 -0
  56. package/dist/esm/api/{chat-api.js → chat-api/index.js} +74 -125
  57. package/dist/esm/api/chat-api/index.js.map +1 -0
  58. package/dist/esm/api/chat-api/interfaces.js +2 -0
  59. package/dist/esm/api/chat-api/interfaces.js.map +1 -0
  60. package/dist/esm/api/chat-api/models.js +5 -0
  61. package/dist/esm/api/chat-api/models.js.map +1 -0
  62. package/dist/esm/api/chat-api/stream-utils.js +188 -0
  63. package/dist/esm/api/chat-api/stream-utils.js.map +1 -0
  64. package/dist/esm/api/chat-api/websocket-helpers.js +205 -0
  65. package/dist/esm/api/chat-api/websocket-helpers.js.map +1 -0
  66. package/dist/esm/api/projects-api.js +275 -3
  67. package/dist/esm/api/projects-api.js.map +1 -1
  68. package/dist/esm/code-solver-sdk.js +13 -15
  69. package/dist/esm/code-solver-sdk.js.map +1 -1
  70. package/dist/esm/constants/websocket-events.constants.js +89 -51
  71. package/dist/esm/constants/websocket-events.constants.js.map +1 -1
  72. package/dist/esm/constants/websocket-namespaces.constants.js +15 -0
  73. package/dist/esm/constants/websocket-namespaces.constants.js.map +1 -0
  74. package/dist/esm/interfaces/websocket/callbacks.interfaces.js +2 -0
  75. package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +1 -0
  76. package/dist/esm/interfaces/websocket/client-options.interfaces.js +2 -0
  77. package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +1 -0
  78. package/dist/esm/interfaces/websocket/events.interfaces.js +2 -0
  79. package/dist/esm/interfaces/websocket/events.interfaces.js.map +1 -0
  80. package/dist/esm/interfaces/websocket/stats.interfaces.js +2 -0
  81. package/dist/esm/interfaces/websocket/stats.interfaces.js.map +1 -0
  82. package/dist/esm/utils/code-solver-websocket-client.js +382 -1473
  83. package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
  84. package/dist/esm/utils/connection-state-manager.js +129 -0
  85. package/dist/esm/utils/connection-state-manager.js.map +1 -0
  86. package/dist/esm/utils/http-client.js +7 -0
  87. package/dist/esm/utils/http-client.js.map +1 -1
  88. package/dist/esm/utils/logger.js +101 -0
  89. package/dist/esm/utils/logger.js.map +1 -0
  90. package/dist/esm/utils/ping-pong-manager.js +302 -0
  91. package/dist/esm/utils/ping-pong-manager.js.map +1 -0
  92. package/dist/esm/utils/reasoning-auth-helper.js +54 -0
  93. package/dist/esm/utils/reasoning-auth-helper.js.map +1 -0
  94. package/dist/esm/utils/session-manager.js +109 -0
  95. package/dist/esm/utils/session-manager.js.map +1 -0
  96. package/dist/esm/utils/websocket-client.js +37 -10
  97. package/dist/esm/utils/websocket-client.js.map +1 -1
  98. package/dist/esm/ws/base-ws-client.js +282 -0
  99. package/dist/esm/ws/base-ws-client.js.map +1 -0
  100. package/dist/esm/ws/dependencies-ws-client.js +7 -0
  101. package/dist/esm/ws/dependencies-ws-client.js.map +1 -0
  102. package/dist/esm/ws/diagnostics-service.js +166 -0
  103. package/dist/esm/ws/diagnostics-service.js.map +1 -0
  104. package/dist/esm/ws/indexing-ws-client.js +219 -0
  105. package/dist/esm/ws/indexing-ws-client.js.map +1 -0
  106. package/dist/esm/ws/notifications-ws-client.js +8 -0
  107. package/dist/esm/ws/notifications-ws-client.js.map +1 -0
  108. package/dist/esm/ws/reasoning-ws-client.js +326 -0
  109. package/dist/esm/ws/reasoning-ws-client.js.map +1 -0
  110. package/dist/types/api/chat-api/index.d.ts +81 -0
  111. package/dist/types/api/chat-api/index.d.ts.map +1 -0
  112. package/dist/types/api/chat-api/interfaces.d.ts +47 -0
  113. package/dist/types/api/chat-api/interfaces.d.ts.map +1 -0
  114. package/dist/types/api/{chat-api.d.ts → chat-api/models.d.ts} +10 -73
  115. package/dist/types/api/chat-api/models.d.ts.map +1 -0
  116. package/dist/types/api/chat-api/stream-utils.d.ts +31 -0
  117. package/dist/types/api/chat-api/stream-utils.d.ts.map +1 -0
  118. package/dist/types/api/chat-api/websocket-helpers.d.ts +40 -0
  119. package/dist/types/api/chat-api/websocket-helpers.d.ts.map +1 -0
  120. package/dist/types/api/projects-api.d.ts +114 -1
  121. package/dist/types/api/projects-api.d.ts.map +1 -1
  122. package/dist/types/code-solver-sdk.d.ts +3 -2
  123. package/dist/types/code-solver-sdk.d.ts.map +1 -1
  124. package/dist/types/constants/websocket-events.constants.d.ts +77 -36
  125. package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
  126. package/dist/types/constants/websocket-namespaces.constants.d.ts +14 -0
  127. package/dist/types/constants/websocket-namespaces.constants.d.ts.map +1 -0
  128. package/dist/types/interfaces/http-client.d.ts +1 -1
  129. package/dist/types/interfaces/http-client.d.ts.map +1 -1
  130. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +30 -0
  131. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +1 -0
  132. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +51 -0
  133. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +1 -0
  134. package/dist/types/interfaces/websocket/events.interfaces.d.ts +165 -0
  135. package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +1 -0
  136. package/dist/types/interfaces/websocket/stats.interfaces.d.ts +72 -0
  137. package/dist/types/interfaces/websocket/stats.interfaces.d.ts.map +1 -0
  138. package/dist/types/types/index.d.ts +8 -0
  139. package/dist/types/types/index.d.ts.map +1 -1
  140. package/dist/types/utils/code-solver-websocket-client.d.ts +67 -612
  141. package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
  142. package/dist/types/utils/connection-state-manager.d.ts +94 -0
  143. package/dist/types/utils/connection-state-manager.d.ts.map +1 -0
  144. package/dist/types/utils/http-client.d.ts +5 -0
  145. package/dist/types/utils/http-client.d.ts.map +1 -1
  146. package/dist/types/utils/logger.d.ts +62 -0
  147. package/dist/types/utils/logger.d.ts.map +1 -0
  148. package/dist/types/utils/ping-pong-manager.d.ts +118 -0
  149. package/dist/types/utils/ping-pong-manager.d.ts.map +1 -0
  150. package/dist/types/utils/reasoning-auth-helper.d.ts +24 -0
  151. package/dist/types/utils/reasoning-auth-helper.d.ts.map +1 -0
  152. package/dist/types/utils/session-manager.d.ts +98 -0
  153. package/dist/types/utils/session-manager.d.ts.map +1 -0
  154. package/dist/types/utils/websocket-client.d.ts +6 -0
  155. package/dist/types/utils/websocket-client.d.ts.map +1 -1
  156. package/dist/types/ws/base-ws-client.d.ts +119 -0
  157. package/dist/types/ws/base-ws-client.d.ts.map +1 -0
  158. package/dist/types/ws/dependencies-ws-client.d.ts +6 -0
  159. package/dist/types/ws/dependencies-ws-client.d.ts.map +1 -0
  160. package/dist/types/ws/diagnostics-service.d.ts +93 -0
  161. package/dist/types/ws/diagnostics-service.d.ts.map +1 -0
  162. package/dist/types/ws/indexing-ws-client.d.ts +78 -0
  163. package/dist/types/ws/indexing-ws-client.d.ts.map +1 -0
  164. package/dist/types/ws/notifications-ws-client.d.ts +5 -0
  165. package/dist/types/ws/notifications-ws-client.d.ts.map +1 -0
  166. package/dist/types/ws/reasoning-ws-client.d.ts +87 -0
  167. package/dist/types/ws/reasoning-ws-client.d.ts.map +1 -0
  168. package/docs/API_REFERENCE.md +432 -0
  169. package/docs/AUTHENTICATION.md +83 -0
  170. package/docs/ERROR_HANDLING.md +240 -0
  171. package/docs/INTEGRATION_EXAMPLES.md +342 -0
  172. package/docs/PING_PONG.md +212 -0
  173. package/docs/README.md +102 -0
  174. package/docs/WEBSOCKET.md +139 -0
  175. package/docs/advanced/PING_PONG.md +212 -0
  176. package/docs/features/THINKING.md +158 -0
  177. package/docs/indexing/INDEXING.md +231 -0
  178. package/package.json +4 -3
  179. package/dist/cjs/api/chat-api.js.map +0 -1
  180. package/dist/esm/api/chat-api.js.map +0 -1
  181. package/dist/types/api/chat-api.d.ts.map +0 -1
@@ -0,0 +1,211 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-helpers.js","sourceRoot":"","sources":["../../../../src/api/chat-api/websocket-helpers.ts"],"names":[],"mappings":"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"}
@@ -109,11 +109,32 @@ class ProjectsApi {
109
109
  /**
110
110
  * Запускает индексацию проекта
111
111
  * @param {string} projectId ID проекта
112
+ * @param {Object} [options] Опции индексации
113
+ * @param {string} [options.indexingMode] Режим индексации: 'full', 'incremental', 'auto'
114
+ * @param {boolean} [options.forceFull] Принудительная полная индексация
115
+ * @param {string[]} [options.includePatterns] Паттерны для включения файлов
116
+ * @param {string[]} [options.excludePatterns] Паттерны для исключения файлов
112
117
  * @returns {Promise<IndexingResponse>} Информация о начатой индексации
113
118
  */
114
- async indexProject(projectId) {
119
+ async indexProject(projectId, options) {
115
120
  this.validateProjectId(projectId);
116
- return this.httpClient.post('/api/v1/projects/' + projectId + '/index');
121
+ // Преобразуем indexingMode в forceFull для совместимости с бэкендом
122
+ let requestBody = {};
123
+ if (options) {
124
+ if (options.indexingMode === 'full') {
125
+ requestBody.forceFull = true;
126
+ }
127
+ if (options.forceFull) {
128
+ requestBody.forceFull = true;
129
+ }
130
+ if (options.includePatterns) {
131
+ requestBody.includePatterns = options.includePatterns;
132
+ }
133
+ if (options.excludePatterns) {
134
+ requestBody.excludePatterns = options.excludePatterns;
135
+ }
136
+ }
137
+ return this.httpClient.post('/api/v1/projects/' + projectId + '/index', requestBody);
117
138
  }
118
139
  /**
119
140
  * Получает статус индексации проекта
@@ -161,6 +182,8 @@ class ProjectsApi {
161
182
  * @param {Object} options Опции обновления индекса
162
183
  * @param {string} [options.content] Содержимое файла (если не указано, будет прочитано с диска)
163
184
  * @param {boolean} [options.force=false] Принудительная переиндексация, даже если файл не изменился
185
+ * @param {string} [options.language] Язык файла (если не указан, будет определен автоматически)
186
+ * @param {boolean} [options.updateDependencies=false] Обновлять зависимости после индексации файла
164
187
  * @returns {Promise<FileIndexResponse>} Информация об обновленном индексе файла
165
188
  */
166
189
  async updateFileIndex(projectId, filePath, options = {}) {
@@ -182,8 +205,16 @@ class ProjectsApi {
182
205
  throw new Error('Родительский SDK не настроен или не поддерживает WebSocket');
183
206
  }
184
207
  this.wsClient = this.parentSdk.getWebSocketClient();
208
+ // Получаем apiKey из родительского SDK
209
+ const apiKey = this.parentSdk.options.apiKey;
210
+ // Подключаемся к пространству имен индексации с параметром authToken
185
211
  await this.wsClient.connectToIndexing();
186
- return this.wsClient.isConnected('indexing');
212
+ // Проверяем состояние подключения
213
+ const isConnected = this.wsClient.isConnected('indexing');
214
+ if (!isConnected) {
215
+ console.warn('[ProjectsApi] Не удалось подключиться к WebSocket');
216
+ }
217
+ return isConnected;
187
218
  }
188
219
  catch (error) {
189
220
  console.error('[ProjectsApi] Ошибка при подключении к WebSocket:', error.message);
@@ -308,6 +339,247 @@ class ProjectsApi {
308
339
  return this.cancelIndexing(projectId);
309
340
  }
310
341
  }
342
+ /**
343
+ * Кэширует соответствие пути и ID проекта
344
+ * @param path Путь к проекту
345
+ * @param projectId ID проекта
346
+ * @private
347
+ */
348
+ cacheProjectId(path, projectId) {
349
+ try {
350
+ const normalizedPath = path.replace(/\\/g, '/').replace(/\/$/, '');
351
+ if (typeof localStorage !== 'undefined') {
352
+ // Браузерное окружение
353
+ const cachedProjects = JSON.parse(localStorage.getItem('solverSdkProjectCache') || '{}');
354
+ cachedProjects[normalizedPath] = projectId;
355
+ localStorage.setItem('solverSdkProjectCache', JSON.stringify(cachedProjects));
356
+ }
357
+ else if (typeof process !== 'undefined') {
358
+ // Node.js окружение (для VS Code/Cursor)
359
+ // TODO: реализовать хранение кэша в Node.js
360
+ // В простейшем случае можно использовать in-memory хранилище
361
+ if (!global.solverSdkProjectCache) {
362
+ global.solverSdkProjectCache = {};
363
+ }
364
+ global.solverSdkProjectCache[normalizedPath] = projectId;
365
+ }
366
+ }
367
+ catch (error) {
368
+ console.warn(`[ProjectsApi] Не удалось кэшировать ID проекта: ${error instanceof Error ? error.message : String(error)}`);
369
+ }
370
+ }
371
+ /**
372
+ * Получает ID проекта из кэша
373
+ * @param path Путь к проекту
374
+ * @returns ID проекта или null, если не найдено
375
+ * @private
376
+ */
377
+ getCachedProjectId(path) {
378
+ try {
379
+ const normalizedPath = path.replace(/\\/g, '/').replace(/\/$/, '');
380
+ if (typeof localStorage !== 'undefined') {
381
+ // Браузерное окружение
382
+ const cachedProjects = JSON.parse(localStorage.getItem('solverSdkProjectCache') || '{}');
383
+ return cachedProjects[normalizedPath] || null;
384
+ }
385
+ else if (typeof process !== 'undefined' && global.solverSdkProjectCache) {
386
+ // Node.js окружение
387
+ return global.solverSdkProjectCache[normalizedPath] || null;
388
+ }
389
+ return null;
390
+ }
391
+ catch (error) {
392
+ console.warn(`[ProjectsApi] Не удалось получить ID проекта из кэша: ${error instanceof Error ? error.message : String(error)}`);
393
+ return null;
394
+ }
395
+ }
396
+ /**
397
+ * Получает или создает проект по пути
398
+ * @param path Путь к проекту
399
+ * @param name Имя проекта (опционально, если не указано - будет сгенерировано из пути)
400
+ * @returns Данные проекта
401
+ */
402
+ async getOrCreateProject(path, name) {
403
+ if (!path) {
404
+ throw new Error('Путь к проекту не может быть пустым');
405
+ }
406
+ const normalizedPath = path.replace(/\\/g, '/').replace(/\/$/, '');
407
+ // Сначала проверяем кэш
408
+ const cachedProjectId = this.getCachedProjectId(normalizedPath);
409
+ if (cachedProjectId) {
410
+ try {
411
+ const project = await this.getProject(cachedProjectId);
412
+ return project;
413
+ }
414
+ catch (error) {
415
+ // Если ошибка - продолжаем с API запросом
416
+ console.warn(`[ProjectsApi] Не удалось получить проект из кэша: ${error instanceof Error ? error.message : String(error)}`);
417
+ }
418
+ }
419
+ // Вызываем API для получения/создания проекта
420
+ const project = await this.httpClient.post('/api/v1/projects/find-or-create', {
421
+ path: normalizedPath,
422
+ name: name || normalizedPath.split('/').pop() || 'Unnamed Project'
423
+ });
424
+ // Кэшируем результат
425
+ this.cacheProjectId(normalizedPath, project.id);
426
+ return project;
427
+ }
428
+ /**
429
+ * Индексация проекта по пути
430
+ * @param path Путь к проекту
431
+ * @param options Опции индексации
432
+ * @returns Информация об индексации
433
+ */
434
+ async indexProjectByPath(path, options = {}) {
435
+ if (!path) {
436
+ throw new Error('Путь к проекту не может быть пустым');
437
+ }
438
+ const normalizedPath = path.replace(/\\/g, '/').replace(/\/$/, '');
439
+ try {
440
+ // Вызываем API для индексации проекта по пути
441
+ return await this.httpClient.post('/api/v1/projects/index-by-path', {
442
+ path: normalizedPath,
443
+ name: options.name,
444
+ forceFull: options.forceFull,
445
+ excludePatterns: options.excludePatterns
446
+ });
447
+ }
448
+ catch (error) {
449
+ // Улучшаем сообщение об ошибке
450
+ const errorMessage = error instanceof Error ? error.message : String(error);
451
+ throw new Error(`Не удалось выполнить индексацию проекта по пути: ${errorMessage}`);
452
+ }
453
+ }
454
+ /**
455
+ * Создание и индексация проекта в одной операции
456
+ * @param path Путь к проекту
457
+ * @param options Опции создания и индексации
458
+ * @param {string} [options.name] Имя проекта (если не указано, будет получено из пути)
459
+ * @param {boolean} [options.forceFull=false] Принудительная полная индексация
460
+ * @param {string} [options.indexingMode] Режим индексации: 'full', 'incremental', 'auto'
461
+ * @param {string[]} [options.includePatterns] Паттерны для включения файлов
462
+ * @param {string[]} [options.excludePatterns] Паттерны для исключения файлов
463
+ * @returns Информация о созданном проекте и начатой индексации
464
+ */
465
+ async createAndIndexProject(path, options = {}) {
466
+ try {
467
+ // Преобразуем indexingMode в forceFull для совместимости с бэкендом
468
+ let requestOptions = {
469
+ name: options.name,
470
+ excludePatterns: options.excludePatterns
471
+ };
472
+ if (options.indexingMode === 'full' || options.forceFull) {
473
+ requestOptions.forceFull = true;
474
+ }
475
+ if (options.includePatterns) {
476
+ requestOptions.includePatterns = options.includePatterns;
477
+ }
478
+ // Используем API для индексации по пути, который также создает проект если его нет
479
+ const result = await this.indexProjectByPath(path, requestOptions);
480
+ // Проверяем, что результат содержит нужные поля
481
+ if (!result || !result.projectId) {
482
+ throw new Error('Сервер вернул некорректный ответ без идентификатора проекта');
483
+ }
484
+ return {
485
+ projectId: result.projectId,
486
+ indexingStatus: result.status || 'indexing'
487
+ };
488
+ }
489
+ catch (error) {
490
+ const errorMessage = error instanceof Error ? error.message : String(error);
491
+ throw new Error(`Не удалось создать и проиндексировать проект: ${errorMessage}`);
492
+ }
493
+ }
494
+ /**
495
+ * Проверяет существование проекта и создает резервную копию при необходимости
496
+ * @param projectId ID проекта для проверки
497
+ * @param options Опции для создания резервной копии
498
+ * @returns Существующий проект или созданную резервную копию
499
+ */
500
+ async ensureProjectExists(projectId, options = {}) {
501
+ try {
502
+ this.validateProjectId(projectId);
503
+ // Пытаемся получить проект по ID
504
+ try {
505
+ const project = await this.getProject(projectId);
506
+ return project;
507
+ }
508
+ catch (error) {
509
+ // Проверяем, нужно ли создавать резервную копию
510
+ if (!options.createBackup) {
511
+ // Если резервная копия не требуется, пробрасываем ошибку
512
+ const errorMessage = error instanceof Error ? error.message : String(error);
513
+ throw new Error(`Проект с ID ${projectId} не найден: ${errorMessage}`);
514
+ }
515
+ // Проверяем наличие пути для резервной копии
516
+ if (!options.backupPath) {
517
+ throw new Error('Для создания резервной копии необходимо указать путь (backupPath)');
518
+ }
519
+ const backupName = options.backupName || `Резервная копия для ${projectId}`;
520
+ // Создаем новый проект как резервную копию
521
+ console.log(`[ProjectsApi] Создание резервной копии проекта ${projectId} с именем "${backupName}" по пути ${options.backupPath}`);
522
+ return await this.createProject(backupName, options.backupPath);
523
+ }
524
+ }
525
+ catch (error) {
526
+ const errorMessage = error instanceof Error ? error.message : String(error);
527
+ throw new Error(`Ошибка при проверке/создании проекта ${projectId}: ${errorMessage}`);
528
+ }
529
+ }
530
+ /**
531
+ * Получает или создает проект по пути с расширенными опциями
532
+ * @param path Путь к проекту
533
+ * @param options Дополнительные опции
534
+ * @returns Найденный или созданный проект
535
+ */
536
+ async getOrCreateProjectByPath(path, options = {}) {
537
+ if (!path) {
538
+ throw new Error('Путь к проекту не может быть пустым');
539
+ }
540
+ const normalizedPath = path.replace(/\\/g, '/').replace(/\/$/, '');
541
+ try {
542
+ // Сначала проверяем кэш
543
+ const cachedProjectId = this.getCachedProjectId(normalizedPath);
544
+ if (cachedProjectId && options.preferExisting !== false) {
545
+ try {
546
+ const project = await this.getProject(cachedProjectId);
547
+ return project;
548
+ }
549
+ catch (error) {
550
+ // Если ошибка - продолжаем с API запросом
551
+ console.warn(`[ProjectsApi] Не удалось получить проект из кэша: ${error instanceof Error ? error.message : String(error)}`);
552
+ }
553
+ }
554
+ // Если проект не найден в кэше или не смогли его получить, создаем новый через API find-or-create
555
+ const project = await this.httpClient.post('/api/v1/projects/find-or-create', {
556
+ path: normalizedPath,
557
+ name: options.name || normalizedPath.split('/').pop() || 'Unnamed Project'
558
+ });
559
+ // Кэшируем полученный проект
560
+ if (project && project.id) {
561
+ this.cacheProjectId(normalizedPath, project.id);
562
+ }
563
+ return project;
564
+ }
565
+ catch (error) {
566
+ throw new Error(`Не удалось получить или создать проект: ${error.message}`);
567
+ }
568
+ }
569
+ /**
570
+ * Запускает индексацию проекта (псевдоним для indexProject)
571
+ * @param {string} projectId ID проекта
572
+ * @param {Object} [options] Опции индексации
573
+ * @param {string} [options.indexingMode] Режим индексации: 'full', 'incremental', 'auto'
574
+ * @param {boolean} [options.forceFull] Принудительная полная индексация
575
+ * @param {string[]} [options.includePatterns] Паттерны для включения файлов
576
+ * @param {string[]} [options.excludePatterns] Паттерны для исключения файлов
577
+ * @returns {Promise<IndexingResponse>} Информация о начатой индексации
578
+ */
579
+ async startIndexing(projectId, options) {
580
+ // Это псевдоним для indexProject для соответствия с документацией
581
+ return this.indexProject(projectId, options);
582
+ }
311
583
  }
312
584
  exports.ProjectsApi = ProjectsApi;
313
585
  //# sourceMappingURL=projects-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects-api.js","sourceRoot":"","sources":["../../../src/api/projects-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects-api.js","sourceRoot":"","sources":["../../../src/api/projects-api.ts"],"names":[],"mappings":";;;AAOA,8FAA8E;AAO9E;;GAEG;AACH,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,6CAA6B,CAAA;IAC7B,gDAAgC,CAAA;IAChC,gFAAgE,CAAA;IAChE,gFAAgE,CAAA;IAChE,wEAAwD,CAAA;AAC1D,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAE,MAA8B;IACtE,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAa,WAAW;IAUtB;;;OAGG;IACH,YAAY,UAAsB;QAVlC,uBAAuB;QACf,aAAQ,GAAQ,IAAI,CAAC;QAE7B,uBAAuB;QACf,cAAS,GAAQ,IAAI,CAAC;QAO5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,SAAc;QACtC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU,CAAC,SAAiB;QACvC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,aAAa,CACxB,IAAY,EACZ,IAAY,EACZ,OAAwB;QAExB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC9C,IAAI;YACJ,IAAI;YACJ,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CACxB,SAAiB,EACjB,IAAgC;QAEhC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,SAAiB;QAC1C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,YAAY,CACvB,SAAiB,EACjB,OAKC;QAED,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,oEAAoE;QACpE,IAAI,WAAW,GAAQ,EAAE,CAAC;QAE1B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACpC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAC/B,CAAC;YAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;YAC/B,CAAC;YAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YACxD,CAAC;YAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YACxD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,GAAG,SAAS,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvF,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QAC9C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACtG,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc,CAAC,SAAiB;QAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;aACjG,IAAI,CAAC,QAAQ,CAAC,EAAE;YACf,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAC/C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;aAC7F,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;aAChB,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,eAAe,CAC1B,SAAiB,EACjB,QAAgB,EAChB,UAKI,EAAE;QAEN,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,0EAA0E;QAC1E,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAErD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,gBAAgB;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;gBAC/E,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAChF,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;YAEpD,uCAAuC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;YAE7C,qEAAqE;YACrE,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YAExC,kCAAkC;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAE1D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAClF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,mBAAmB;QAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,oBAAoB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvE,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,GAAQ;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,EAAE,CAAC,KAAa,EAAE,QAAkB;QACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAC,KAAa,EAAE,IAAS;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oDAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,2BAA2B,CACtC,KAAa,EACb,IAAS,EACT,UAAkB,IAAI;QAEtB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,gFAAgF;QAChF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC;gBACH,oCAAoC;gBACpC,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACpF,yBAAyB;gBACzB,MAAM,aAAa,GAAG,GAAG,KAAK,WAAW,CAAC;gBAE1C,kCAAkC;gBAClC,MAAM,eAAe,GAAG,CAAC,QAAa,EAAE,EAAE;oBACxC,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;wBACjD,sCAAsC;wBACtC,YAAY,CAAC,SAAS,CAAC,CAAC;wBACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;4BAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;wBACpD,CAAC;wBAED,6BAA6B;wBAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC,CAAC;gBAEF,wBAAwB;gBACxB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;oBAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;oBACpD,CAAC;oBACD,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC,EAAE,OAAO,CAAC,CAAC;gBAEZ,0BAA0B;gBAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;gBAEjD,qBAAqB;gBACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oDAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE;oBACrD,GAAG,IAAI;oBACP,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,SAAiB;QACzC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;gBACnD,kDAAkD;gBAClD,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5F,OAAO,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/E,8CAA8C;YAC9C,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,IAAY,EAAE,SAAiB;QACpD,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEnE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;gBACxC,uBAAuB;gBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,CAAC;gBACzF,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;gBAC3C,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;YAChF,CAAC;iBAAM,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC1C,yCAAyC;gBACzC,4CAA4C;gBAC5C,6DAA6D;gBAC7D,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;oBAClC,MAAM,CAAC,qBAAqB,GAAG,EAAE,CAAC;gBACpC,CAAC;gBACD,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;YAC3D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,mDAAmD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5H,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,IAAY;QACrC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEnE,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;gBACxC,uBAAuB;gBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,CAAC;gBACzF,OAAO,cAAc,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;YAChD,CAAC;iBAAM,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBAC1E,oBAAoB;gBACpB,OAAO,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;YAC9D,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,yDAAyD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChI,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,IAAa;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnE,wBAAwB;QACxB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAChE,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;gBACvD,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,0CAA0C;gBAC1C,OAAO,CAAC,IAAI,CAAC,qDAAqD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9H,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAU,iCAAiC,EAAE;YACrF,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB;SACnE,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAEhD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,kBAAkB,CAC7B,IAAY,EACZ,UAII,EAAE;QAEN,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,8CAA8C;YAC9C,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gCAAgC,EAAE;gBAClE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;aACzC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,+BAA+B;YAC/B,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,oDAAoD,YAAY,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,qBAAqB,CAChC,IAAY,EACZ,UAMI,EAAE;QAEN,IAAI,CAAC;YACH,oEAAoE;YACpE,IAAI,cAAc,GAAQ;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,eAAe,EAAE,OAAO,CAAC,eAAe;aACzC,CAAC;YAEF,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACzD,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC;YAClC,CAAC;YAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,cAAc,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAC3D,CAAC;YAED,mFAAmF;YACnF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAEnE,gDAAgD;YAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,IAAI,UAAU;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,iDAAiD,YAAY,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAC9B,SAAiB,EACjB,UAII,EAAE;QAEN,IAAI,CAAC;YACH,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAElC,iCAAiC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACjD,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gDAAgD;gBAChD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;oBAC1B,yDAAyD;oBACzD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,MAAM,IAAI,KAAK,CAAC,eAAe,SAAS,eAAe,YAAY,EAAE,CAAC,CAAC;gBACzE,CAAC;gBAED,6CAA6C;gBAC7C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACvF,CAAC;gBAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,uBAAuB,SAAS,EAAE,CAAC;gBAE5E,2CAA2C;gBAC3C,OAAO,CAAC,GAAG,CAAC,kDAAkD,SAAS,cAAc,UAAU,aAAa,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;gBAClI,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,KAAK,YAAY,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,wBAAwB,CACnC,IAAY,EACZ,UAKI,EAAE;QAEN,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAChE,IAAI,eAAe,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;oBACvD,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,0CAA0C;oBAC1C,OAAO,CAAC,IAAI,CAAC,qDAAqD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9H,CAAC;YACH,CAAC;YAED,kGAAkG;YAClG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAU,iCAAiC,EAAE;gBACrF,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB;aAC3E,CAAC,CAAC;YAEH,6BAA6B;YAC7B,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,aAAa,CACxB,SAAiB,EACjB,OAKC;QAED,kEAAkE;QAClE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF;AAhrBD,kCAgrBC"}