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.
Files changed (197) hide show
  1. package/README.md +200 -368
  2. package/dist/cjs/api/chat-api/index.js +23 -49
  3. package/dist/cjs/api/chat-api/index.js.map +1 -1
  4. package/dist/cjs/api/chat-api/interfaces.js +1 -0
  5. package/dist/cjs/api/chat-api/interfaces.js.map +1 -1
  6. package/dist/cjs/api/context-api.js +6 -1
  7. package/dist/cjs/api/context-api.js.map +1 -1
  8. package/dist/cjs/api/models-api.js +43 -60
  9. package/dist/cjs/api/models-api.js.map +1 -1
  10. package/dist/cjs/api/projects-api.js +63 -293
  11. package/dist/cjs/api/projects-api.js.map +1 -1
  12. package/dist/cjs/api/search-api.js +131 -8
  13. package/dist/cjs/api/search-api.js.map +1 -1
  14. package/dist/cjs/code-solver-sdk.js +68 -322
  15. package/dist/cjs/code-solver-sdk.js.map +1 -1
  16. package/dist/cjs/index.js +3 -19
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/utils/logger.js +4 -4
  19. package/dist/cjs/utils/logger.js.map +1 -1
  20. package/dist/esm/api/chat-api/index.js +22 -48
  21. package/dist/esm/api/chat-api/index.js.map +1 -1
  22. package/dist/esm/api/chat-api/interfaces.js +1 -0
  23. package/dist/esm/api/chat-api/interfaces.js.map +1 -1
  24. package/dist/esm/api/context-api.js +6 -1
  25. package/dist/esm/api/context-api.js.map +1 -1
  26. package/dist/esm/api/models-api.js +43 -60
  27. package/dist/esm/api/models-api.js.map +1 -1
  28. package/dist/esm/api/projects-api.js +63 -293
  29. package/dist/esm/api/projects-api.js.map +1 -1
  30. package/dist/esm/api/search-api.js +131 -8
  31. package/dist/esm/api/search-api.js.map +1 -1
  32. package/dist/esm/code-solver-sdk.js +68 -322
  33. package/dist/esm/code-solver-sdk.js.map +1 -1
  34. package/dist/esm/index.js +2 -18
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/utils/logger.js +3 -3
  37. package/dist/esm/utils/logger.js.map +1 -1
  38. package/dist/types/api/chat-api/index.d.ts +1 -13
  39. package/dist/types/api/chat-api/index.d.ts.map +1 -1
  40. package/dist/types/api/chat-api/interfaces.d.ts +6 -54
  41. package/dist/types/api/chat-api/interfaces.d.ts.map +1 -1
  42. package/dist/types/api/chat-api/models.d.ts +3 -26
  43. package/dist/types/api/chat-api/models.d.ts.map +1 -1
  44. package/dist/types/api/context-api.d.ts.map +1 -1
  45. package/dist/types/api/models-api.d.ts +31 -62
  46. package/dist/types/api/models-api.d.ts.map +1 -1
  47. package/dist/types/api/projects-api.d.ts +47 -126
  48. package/dist/types/api/projects-api.d.ts.map +1 -1
  49. package/dist/types/api/search-api.d.ts +147 -6
  50. package/dist/types/api/search-api.d.ts.map +1 -1
  51. package/dist/types/code-solver-sdk.d.ts +36 -86
  52. package/dist/types/code-solver-sdk.d.ts.map +1 -1
  53. package/dist/types/index.d.ts +1 -14
  54. package/dist/types/index.d.ts.map +1 -1
  55. package/dist/types/interfaces/sdk-options.d.ts +18 -66
  56. package/dist/types/interfaces/sdk-options.d.ts.map +1 -1
  57. package/dist/types/utils/logger.d.ts +3 -3
  58. package/dist/types/utils/logger.d.ts.map +1 -1
  59. package/docs/README.md +53 -37
  60. package/docs/VSCODE_INTEGRATION.md +208 -371
  61. package/docs/indexing/INDEXING.md +658 -335
  62. package/package.json +26 -23
  63. package/dist/cjs/api/agents-api.js +0 -94
  64. package/dist/cjs/api/agents-api.js.map +0 -1
  65. package/dist/cjs/api/chat-api/websocket-helpers.js +0 -211
  66. package/dist/cjs/api/chat-api/websocket-helpers.js.map +0 -1
  67. package/dist/cjs/api/dependencies-api.js +0 -286
  68. package/dist/cjs/api/dependencies-api.js.map +0 -1
  69. package/dist/cjs/constants/websocket-events.constants.js +0 -170
  70. package/dist/cjs/constants/websocket-events.constants.js.map +0 -1
  71. package/dist/cjs/constants/websocket-namespaces.constants.js +0 -22
  72. package/dist/cjs/constants/websocket-namespaces.constants.js.map +0 -1
  73. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +0 -3
  74. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +0 -1
  75. package/dist/cjs/interfaces/websocket/client-options.interfaces.js +0 -3
  76. package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +0 -1
  77. package/dist/cjs/interfaces/websocket/events.interfaces.js +0 -3
  78. package/dist/cjs/interfaces/websocket/events.interfaces.js.map +0 -1
  79. package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js +0 -42
  80. package/dist/cjs/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
  81. package/dist/cjs/simple-indexing-client.js +0 -138
  82. package/dist/cjs/simple-indexing-client.js.map +0 -1
  83. package/dist/cjs/utils/code-solver-websocket-client.js +0 -497
  84. package/dist/cjs/utils/code-solver-websocket-client.js.map +0 -1
  85. package/dist/cjs/utils/connection-state-manager.js +0 -133
  86. package/dist/cjs/utils/connection-state-manager.js.map +0 -1
  87. package/dist/cjs/utils/indexing-websocket-client.js +0 -107
  88. package/dist/cjs/utils/indexing-websocket-client.js.map +0 -1
  89. package/dist/cjs/utils/session-manager.js +0 -114
  90. package/dist/cjs/utils/session-manager.js.map +0 -1
  91. package/dist/cjs/utils/simple-connection-monitor.js +0 -52
  92. package/dist/cjs/utils/simple-connection-monitor.js.map +0 -1
  93. package/dist/cjs/utils/websocket-client.js +0 -638
  94. package/dist/cjs/utils/websocket-client.js.map +0 -1
  95. package/dist/cjs/ws/base-ws-client.js +0 -280
  96. package/dist/cjs/ws/base-ws-client.js.map +0 -1
  97. package/dist/cjs/ws/dependencies-ws-client.js +0 -11
  98. package/dist/cjs/ws/dependencies-ws-client.js.map +0 -1
  99. package/dist/cjs/ws/file-editing-ws-client.js +0 -162
  100. package/dist/cjs/ws/file-editing-ws-client.js.map +0 -1
  101. package/dist/cjs/ws/filesystem-ws-client.js +0 -305
  102. package/dist/cjs/ws/filesystem-ws-client.js.map +0 -1
  103. package/dist/cjs/ws/indexing-ws-client.js +0 -275
  104. package/dist/cjs/ws/indexing-ws-client.js.map +0 -1
  105. package/dist/cjs/ws/notifications-ws-client.js +0 -12
  106. package/dist/cjs/ws/notifications-ws-client.js.map +0 -1
  107. package/dist/esm/api/agents-api.js +0 -90
  108. package/dist/esm/api/agents-api.js.map +0 -1
  109. package/dist/esm/api/chat-api/websocket-helpers.js +0 -205
  110. package/dist/esm/api/chat-api/websocket-helpers.js.map +0 -1
  111. package/dist/esm/api/dependencies-api.js +0 -282
  112. package/dist/esm/api/dependencies-api.js.map +0 -1
  113. package/dist/esm/constants/websocket-events.constants.js +0 -167
  114. package/dist/esm/constants/websocket-events.constants.js.map +0 -1
  115. package/dist/esm/constants/websocket-namespaces.constants.js +0 -19
  116. package/dist/esm/constants/websocket-namespaces.constants.js.map +0 -1
  117. package/dist/esm/interfaces/websocket/callbacks.interfaces.js +0 -2
  118. package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +0 -1
  119. package/dist/esm/interfaces/websocket/client-options.interfaces.js +0 -2
  120. package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +0 -1
  121. package/dist/esm/interfaces/websocket/events.interfaces.js +0 -2
  122. package/dist/esm/interfaces/websocket/events.interfaces.js.map +0 -1
  123. package/dist/esm/interfaces/websocket/vscode-command.interfaces.js +0 -39
  124. package/dist/esm/interfaces/websocket/vscode-command.interfaces.js.map +0 -1
  125. package/dist/esm/simple-indexing-client.js +0 -134
  126. package/dist/esm/simple-indexing-client.js.map +0 -1
  127. package/dist/esm/utils/code-solver-websocket-client.js +0 -492
  128. package/dist/esm/utils/code-solver-websocket-client.js.map +0 -1
  129. package/dist/esm/utils/connection-state-manager.js +0 -129
  130. package/dist/esm/utils/connection-state-manager.js.map +0 -1
  131. package/dist/esm/utils/indexing-websocket-client.js +0 -103
  132. package/dist/esm/utils/indexing-websocket-client.js.map +0 -1
  133. package/dist/esm/utils/session-manager.js +0 -109
  134. package/dist/esm/utils/session-manager.js.map +0 -1
  135. package/dist/esm/utils/simple-connection-monitor.js +0 -48
  136. package/dist/esm/utils/simple-connection-monitor.js.map +0 -1
  137. package/dist/esm/utils/websocket-client.js +0 -634
  138. package/dist/esm/utils/websocket-client.js.map +0 -1
  139. package/dist/esm/ws/base-ws-client.js +0 -276
  140. package/dist/esm/ws/base-ws-client.js.map +0 -1
  141. package/dist/esm/ws/dependencies-ws-client.js +0 -7
  142. package/dist/esm/ws/dependencies-ws-client.js.map +0 -1
  143. package/dist/esm/ws/file-editing-ws-client.js +0 -158
  144. package/dist/esm/ws/file-editing-ws-client.js.map +0 -1
  145. package/dist/esm/ws/filesystem-ws-client.js +0 -301
  146. package/dist/esm/ws/filesystem-ws-client.js.map +0 -1
  147. package/dist/esm/ws/indexing-ws-client.js +0 -271
  148. package/dist/esm/ws/indexing-ws-client.js.map +0 -1
  149. package/dist/esm/ws/notifications-ws-client.js +0 -8
  150. package/dist/esm/ws/notifications-ws-client.js.map +0 -1
  151. package/dist/types/api/agents-api.d.ts +0 -141
  152. package/dist/types/api/agents-api.d.ts.map +0 -1
  153. package/dist/types/api/chat-api/websocket-helpers.d.ts +0 -40
  154. package/dist/types/api/chat-api/websocket-helpers.d.ts.map +0 -1
  155. package/dist/types/api/dependencies-api.d.ts +0 -109
  156. package/dist/types/api/dependencies-api.d.ts.map +0 -1
  157. package/dist/types/constants/websocket-events.constants.d.ts +0 -144
  158. package/dist/types/constants/websocket-events.constants.d.ts.map +0 -1
  159. package/dist/types/constants/websocket-namespaces.constants.d.ts +0 -17
  160. package/dist/types/constants/websocket-namespaces.constants.d.ts.map +0 -1
  161. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +0 -30
  162. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +0 -1
  163. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +0 -51
  164. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +0 -1
  165. package/dist/types/interfaces/websocket/events.interfaces.d.ts +0 -165
  166. package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +0 -1
  167. package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts +0 -56
  168. package/dist/types/interfaces/websocket/vscode-command.interfaces.d.ts.map +0 -1
  169. package/dist/types/simple-indexing-client.d.ts +0 -66
  170. package/dist/types/simple-indexing-client.d.ts.map +0 -1
  171. package/dist/types/utils/code-solver-websocket-client.d.ts +0 -144
  172. package/dist/types/utils/code-solver-websocket-client.d.ts.map +0 -1
  173. package/dist/types/utils/connection-state-manager.d.ts +0 -94
  174. package/dist/types/utils/connection-state-manager.d.ts.map +0 -1
  175. package/dist/types/utils/indexing-websocket-client.d.ts +0 -123
  176. package/dist/types/utils/indexing-websocket-client.d.ts.map +0 -1
  177. package/dist/types/utils/session-manager.d.ts +0 -98
  178. package/dist/types/utils/session-manager.d.ts.map +0 -1
  179. package/dist/types/utils/simple-connection-monitor.d.ts +0 -26
  180. package/dist/types/utils/simple-connection-monitor.d.ts.map +0 -1
  181. package/dist/types/utils/websocket-client.d.ts +0 -233
  182. package/dist/types/utils/websocket-client.d.ts.map +0 -1
  183. package/dist/types/ws/base-ws-client.d.ts +0 -119
  184. package/dist/types/ws/base-ws-client.d.ts.map +0 -1
  185. package/dist/types/ws/dependencies-ws-client.d.ts +0 -6
  186. package/dist/types/ws/dependencies-ws-client.d.ts.map +0 -1
  187. package/dist/types/ws/file-editing-ws-client.d.ts +0 -85
  188. package/dist/types/ws/file-editing-ws-client.d.ts.map +0 -1
  189. package/dist/types/ws/filesystem-ws-client.d.ts +0 -201
  190. package/dist/types/ws/filesystem-ws-client.d.ts.map +0 -1
  191. package/dist/types/ws/indexing-ws-client.d.ts +0 -94
  192. package/dist/types/ws/indexing-ws-client.d.ts.map +0 -1
  193. package/dist/types/ws/notifications-ws-client.d.ts +0 -5
  194. package/dist/types/ws/notifications-ws-client.d.ts.map +0 -1
  195. package/docs/ARCHITECTURE.md +0 -268
  196. package/docs/QUICK_START.md +0 -126
  197. package/docs/WEBSOCKET.md +0 -472
@@ -1,85 +0,0 @@
1
- import { BaseWebSocketClient } from './base-ws-client';
2
- /**
3
- * Опции для клиента редактирования файлов
4
- */
5
- export interface FileEditingWsClientOptions {
6
- /** Обработчик предложений изменений файлов */
7
- onApplyFileChanges?: (suggestion: FileChangesSuggestion) => Promise<FileChangesResponse>;
8
- }
9
- /**
10
- * Интерфейс предложения изменений файлов
11
- */
12
- export interface FileChangesSuggestion {
13
- /** ID проекта */
14
- projectId: string;
15
- /** Предложения изменений */
16
- suggestions: any;
17
- /** Время создания */
18
- timestamp: string;
19
- }
20
- /**
21
- * Интерфейс ответа на предложение изменений
22
- */
23
- export interface FileChangesResponse {
24
- /** Применены ли изменения */
25
- applied: boolean;
26
- /** Список примененных файлов */
27
- appliedFiles?: string[];
28
- /** Причина отклонения */
29
- reason?: string;
30
- /** Ошибка применения */
31
- error?: string;
32
- }
33
- /**
34
- * ✅ ПРОФЕССИОНАЛЬНЫЙ FILE EDITING WEBSOCKET CLIENT
35
- *
36
- * Следует паттерну других WebSocket клиентов SDK:
37
- * - Наследуется от BaseWebSocketClient
38
- * - Использует WebSocketNamespace.FILE_EDITING
39
- * - Имеет callback'и для обработки событий от сервера
40
- * - Переопределяет connect() для инициализации
41
- */
42
- export declare class FileEditingWsClient extends BaseWebSocketClient {
43
- private projectId;
44
- private readonly SDK_VERSION;
45
- onApplyFileChanges: (suggestion: FileChangesSuggestion) => Promise<FileChangesResponse>;
46
- /**
47
- * Создает новый клиент для редактирования файлов
48
- * @param baseURL Базовый URL API
49
- * @param options Опции клиента
50
- */
51
- constructor(baseURL: string, options?: FileEditingWsClientOptions);
52
- /**
53
- * Обработчик изменений файлов по умолчанию
54
- */
55
- private defaultFileChangesHandler;
56
- /**
57
- * Подключение к серверу и присоединение к проекту
58
- * @param params Параметры подключения (должен содержать projectId)
59
- * @returns Promise<boolean> Успешность подключения
60
- */
61
- connect(params?: Record<string, any>): Promise<boolean>;
62
- /**
63
- * Подключение к проекту - удобный метод для использования в приложении
64
- * @param projectId ID проекта
65
- * @returns Promise<boolean> Успешность подключения
66
- */
67
- connectToProject(projectId: string): Promise<boolean>;
68
- /**
69
- * Присоединиться к проекту для получения событий файлового редактирования
70
- */
71
- private joinProject;
72
- /**
73
- * Настройка обработчиков событий
74
- */
75
- private setupHandlers;
76
- /**
77
- * Получить ID текущего проекта
78
- */
79
- getCurrentProjectId(): string | null;
80
- /**
81
- * Покинуть текущий проект
82
- */
83
- leaveProject(): Promise<void>;
84
- }
85
- //# sourceMappingURL=file-editing-ws-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-editing-ws-client.d.ts","sourceRoot":"","sources":["../../../src/ws/file-editing-ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAKvD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,qBAAqB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC1F;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,WAAW,EAAE,GAAG,CAAC;IAEjB,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IAEjB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,yBAAyB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,mBAAmB;IAC1D,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;IAGhC,kBAAkB,EAAE,CAAC,UAAU,EAAE,qBAAqB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE/F;;;;OAIG;gBAED,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,0BAA+B;IAc1C;;OAEG;IACH,OAAO,CAAC,yBAAyB,CAQ/B;IAEF;;;;OAIG;IACmB,OAAO,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BjF;;;;OAIG;IACU,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlE;;OAEG;YACW,WAAW;IAgBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyCrB;;OAEG;IACI,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACU,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAY3C"}
@@ -1,201 +0,0 @@
1
- import { BaseWebSocketClient } from './base-ws-client';
2
- /**
3
- * Опции для клиента файловой системы
4
- */
5
- export interface FileSystemWsClientOptions {
6
- /** Обработчик чтения файла */
7
- onReadFile?: (path: string) => Promise<string>;
8
- /** Обработчик получения списка файлов */
9
- onListFiles?: (directory: string, options?: {
10
- includePatterns?: string[];
11
- excludePatterns?: string[];
12
- }) => Promise<FileInfo[]>;
13
- /** Обработчик начала отслеживания файлов */
14
- onWatchStart?: (patterns: string[]) => Promise<boolean>;
15
- }
16
- /**
17
- * Интерфейс информации о файле
18
- */
19
- export interface FileInfo {
20
- /** Абсолютный путь к файлу */
21
- path: string;
22
- /** Относительный путь в рамках проекта */
23
- relativePath: string;
24
- /** Расширение файла */
25
- extension: string;
26
- /** Размер файла в байтах */
27
- size: number;
28
- /** Флаг директории */
29
- isDirectory: boolean;
30
- }
31
- /**
32
- * Клиент WebSocket для работы с файловой системой
33
- */
34
- export declare class FileSystemWsClient extends BaseWebSocketClient {
35
- private sessionId;
36
- private projectId;
37
- private readonly SDK_VERSION;
38
- onReadFile: (path: string) => Promise<string>;
39
- onListFiles: (directory: string, options?: {
40
- includePatterns?: string[];
41
- excludePatterns?: string[];
42
- }) => Promise<FileInfo[]>;
43
- onWatchStart: (patterns: string[]) => Promise<boolean>;
44
- /**
45
- * Создает новый клиент для работы с файловой системой
46
- * @param baseURL Базовый URL API
47
- * @param options Опции клиента
48
- */
49
- constructor(baseURL: string, options?: FileSystemWsClientOptions);
50
- /**
51
- * Подключение к серверу и инициализация сессии
52
- * @param params Параметры подключения (может содержать projectId или другие параметры)
53
- * @returns Promise<boolean> Успешность подключения
54
- */
55
- connect(params?: Record<string, any>): Promise<boolean>;
56
- /**
57
- * Подключение к проекту - удобный метод для использования в приложении
58
- * @param projectId ID проекта
59
- * @returns Promise<boolean> Успешность подключения
60
- */
61
- connectToProject(projectId: string): Promise<boolean>;
62
- /**
63
- * Настройка обработчиков событий
64
- */
65
- private setupHandlers;
66
- /**
67
- * Уведомляет сервер об изменении файла
68
- * @param path Путь к файлу
69
- * @param changeType Тип изменения
70
- */
71
- notifyFileChanged(path: string, changeType?: 'created' | 'modified' | 'deleted'): boolean;
72
- }
73
- /**
74
- * Пример использования клиента файловой системы в VS Code расширении:
75
- *
76
- * ```typescript
77
- * import * as vscode from 'vscode';
78
- * import { FileSystemWsClient } from 'solver-sdk';
79
- *
80
- * export function activate(context: vscode.ExtensionContext) {
81
- * // Создание клиента файловой системы
82
- * const fsClient = new FileSystemWsClient('wss://your-backend-url.com', {
83
- * // Обработчик чтения файла
84
- * onReadFile: async (path) => {
85
- * try {
86
- * const uri = vscode.Uri.file(path);
87
- * const content = await vscode.workspace.fs.readFile(uri);
88
- * return new TextDecoder().decode(content);
89
- * } catch (error) {
90
- * throw new Error(`Ошибка чтения файла: ${error.message}`);
91
- * }
92
- * },
93
- *
94
- * // Обработчик получения списка файлов
95
- * onListFiles: async (directory, options) => {
96
- * try {
97
- * // Получаем корневую директорию рабочего пространства
98
- * const rootPath = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
99
- * if (!rootPath) throw new Error('Не найдено рабочее пространство');
100
- *
101
- * // Формируем паттерн для поиска файлов
102
- * const pattern = new vscode.RelativePattern(
103
- * rootPath,
104
- * options?.includePatterns?.[0] || '**'
105
- * );
106
- *
107
- * // Находим файлы по паттерну
108
- * const files = await vscode.workspace.findFiles(pattern,
109
- * options?.excludePatterns?.join('|')
110
- * );
111
- *
112
- * // Преобразуем результаты в нужный формат
113
- * return files.map(uri => {
114
- * const relativePath = vscode.workspace.asRelativePath(uri);
115
- * const stats = fs.statSync(uri.fsPath);
116
- *
117
- * return {
118
- * path: uri.fsPath,
119
- * relativePath,
120
- * extension: uri.fsPath.split('.').pop() || '',
121
- * size: stats.size,
122
- * isDirectory: stats.isDirectory()
123
- * };
124
- * });
125
- * } catch (error) {
126
- * throw new Error(`Ошибка получения списка файлов: ${error.message}`);
127
- * }
128
- * },
129
- *
130
- * // Обработчик отслеживания файлов
131
- * onWatchStart: async (patterns) => {
132
- * try {
133
- * // Создаем наблюдателей за файлами
134
- * const watchers = patterns.map(pattern => {
135
- * const watcher = vscode.workspace.createFileSystemWatcher(
136
- * new vscode.RelativePattern(
137
- * vscode.workspace.workspaceFolders?.[0]?.uri.fsPath || '',
138
- * pattern
139
- * )
140
- * );
141
- *
142
- * // Обработчик изменения файла
143
- * watcher.onDidChange(uri => {
144
- * const relativePath = vscode.workspace.asRelativePath(uri);
145
- * fsClient.notifyFileChanged(relativePath, 'modified');
146
- * });
147
- *
148
- * // Обработчик создания файла
149
- * watcher.onDidCreate(uri => {
150
- * const relativePath = vscode.workspace.asRelativePath(uri);
151
- * fsClient.notifyFileChanged(relativePath, 'created');
152
- * });
153
- *
154
- * // Обработчик удаления файла
155
- * watcher.onDidDelete(uri => {
156
- * const relativePath = vscode.workspace.asRelativePath(uri);
157
- * fsClient.notifyFileChanged(relativePath, 'deleted');
158
- * });
159
- *
160
- * return watcher;
161
- * });
162
- *
163
- * // Добавляем наблюдателей в контекст расширения для правильной очистки
164
- * watchers.forEach(watcher => {
165
- * context.subscriptions.push(watcher);
166
- * });
167
- *
168
- * return true;
169
- * } catch (error) {
170
- * console.error('Ошибка при настройке отслеживания файлов:', error);
171
- * return false;
172
- * }
173
- * }
174
- * });
175
- *
176
- * // Подключаемся к проекту
177
- * vscode.commands.registerCommand('extension.connectToProject', async () => {
178
- * // Запрашиваем ID проекта у пользователя
179
- * const projectId = await vscode.window.showInputBox({
180
- * prompt: 'Введите ID проекта для подключения'
181
- * });
182
- *
183
- * if (!projectId) return;
184
- *
185
- * try {
186
- * // Устанавливаем соединение
187
- * const connected = await fsClient.connectToProject(projectId);
188
- *
189
- * if (connected) {
190
- * vscode.window.showInformationMessage(`Успешное подключение к проекту ${projectId}`);
191
- * } else {
192
- * vscode.window.showErrorMessage('Ошибка подключения к проекту');
193
- * }
194
- * } catch (error) {
195
- * vscode.window.showErrorMessage(`Ошибка: ${error.message}`);
196
- * }
197
- * });
198
- * }
199
- * ```
200
- */
201
- //# sourceMappingURL=filesystem-ws-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filesystem-ws-client.d.ts","sourceRoot":"","sources":["../../../src/ws/filesystem-ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAKvD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,8BAA8B;IAC9B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/C,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAC1C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IAErB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,sBAAsB;IACtB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,mBAAmB;IACzD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;IAGhC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAChD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9D;;;;OAIG;gBAED,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,yBAA8B;IAgBzC;;;;OAIG;IACmB,OAAO,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4CjF;;;;OAIG;IACU,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlE;;OAEG;IACH,OAAO,CAAC,aAAa;IA0ErB;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,SAAS,GAAG,UAAU,GAAG,SAAsB,GAAG,OAAO;CAetG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+HG"}
@@ -1,94 +0,0 @@
1
- import { BaseWebSocketClient, BaseWebSocketClientOptions } from './base-ws-client.js';
2
- /**
3
- * Опции WebSocket клиента для индексации
4
- */
5
- export interface IndexingWebSocketClientOptions extends BaseWebSocketClientOptions {
6
- /** ID проекта */
7
- projectId?: string;
8
- }
9
- /**
10
- * WebSocket клиент для пространства имен индексации
11
- */
12
- export declare class IndexingWebSocketClient extends BaseWebSocketClient {
13
- /** ID активного проекта */
14
- private activeProjectId;
15
- /**
16
- * Создает новый WebSocket клиент для индексации
17
- * @param {string} baseURL Базовый URL API
18
- * @param {IndexingWebSocketClientOptions} options Опции клиента
19
- */
20
- constructor(baseURL: string, options?: IndexingWebSocketClientOptions);
21
- /**
22
- * Подключается к серверу WebSocket
23
- * @param {boolean} autoJoin Автоматически присоединиться к проекту
24
- * @returns {Promise<boolean>} Успешность подключения
25
- */
26
- connectToIndexing(autoJoin?: boolean): Promise<boolean>;
27
- /**
28
- * Присоединяется к проекту
29
- * @param {string} projectId ID проекта
30
- * @returns {Promise<boolean>} Успешность операции
31
- */
32
- joinProject(projectId: string): Promise<boolean>;
33
- /**
34
- * 🎯 НОВОЕ: Покидает проект
35
- * @param {string} projectId ID проекта
36
- * @returns {Promise<boolean>} Успешность операции
37
- */
38
- leaveProject(projectId: string): Promise<boolean>;
39
- /**
40
- * Запускает процесс индексации проекта
41
- * @param {string} [projectId] ID проекта (если не указан, используется текущий проект)
42
- * @returns {Promise<boolean>} Успешность операции
43
- */
44
- startIndexing(projectId?: string): Promise<boolean>;
45
- /**
46
- * Останавливает процесс индексации проекта
47
- * @param {string} [projectId] ID проекта (если не указан, используется текущий проект)
48
- * @returns {Promise<boolean>} Успешность операции
49
- */
50
- stopIndexing(projectId?: string): Promise<boolean>;
51
- /**
52
- * Получает статус индексации проекта
53
- * @param {string} [projectId] ID проекта (если не указан, используется текущий проект)
54
- * @returns {Promise<any>} Статус индексации проекта
55
- */
56
- getIndexingStatus(projectId?: string): Promise<any>;
57
- /**
58
- * Устанавливает обработчик для события завершения индексации
59
- * @param {Function} handler Обработчик события
60
- */
61
- onIndexingComplete(handler: (data: any) => void): void;
62
- /**
63
- * Устанавливает обработчик для события индексации файла
64
- * @param {Function} handler Обработчик события
65
- */
66
- onFileIndexed(handler: (data: any) => void): void;
67
- /**
68
- * Устанавливает обработчик для события ошибки индексации
69
- * @param {Function} handler Обработчик события
70
- */
71
- onIndexingError(handler: (data: any) => void): void;
72
- /**
73
- * 🎯 НОВОЕ: Устанавливает обработчик для события начала индексации
74
- * @param {Function} handler Обработчик события
75
- */
76
- onIndexingStart(handler: (data: any) => void): void;
77
- /**
78
- * 🎯 НОВОЕ: Устанавливает обработчик для события прогресса индексации
79
- * @param {Function} handler Обработчик события
80
- */
81
- onIndexingProgress(handler: (data: any) => void): void;
82
- /**
83
- * Получает текущий ID активного проекта
84
- * @returns {string | null} ID активного проекта или null
85
- */
86
- getActiveProjectId(): string | null;
87
- /**
88
- * Устанавливает ID активного проекта
89
- * @param {string} projectId ID проекта
90
- * @returns {boolean} Успешность установки
91
- */
92
- setActiveProjectId(projectId: string): boolean;
93
- }
94
- //# sourceMappingURL=indexing-ws-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexing-ws-client.d.ts","sourceRoot":"","sources":["../../../src/ws/indexing-ws-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGtF;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,mBAAmB;IAC9D,2BAA2B;IAC3B,OAAO,CAAC,eAAe,CAAuB;IAE9C;;;;OAIG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,8BAAmC;IAOzE;;;;OAIG;IACU,iBAAiB,CAAC,QAAQ,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAiD1E;;;;OAIG;IACU,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8B7D;;;;OAIG;IACU,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgC9D;;;;OAIG;IACU,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BhE;;;;OAIG;IACU,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B/D;;;;OAIG;IACU,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAuBhE;;;OAGG;IACI,kBAAkB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI7D;;;OAGG;IACI,aAAa,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIxD;;;OAGG;IACI,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI1D;;;OAGG;IACI,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI1D;;;OAGG;IACI,kBAAkB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI7D;;;OAGG;IACI,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAI1C;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAWtD"}
@@ -1,5 +0,0 @@
1
- import { BaseWebSocketClient } from './base-ws-client';
2
- export declare class NotificationsWsClient extends BaseWebSocketClient {
3
- constructor(baseURL: string, options?: {});
4
- }
5
- //# sourceMappingURL=notifications-ws-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifications-ws-client.d.ts","sourceRoot":"","sources":["../../../src/ws/notifications-ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,qBAAa,qBAAsB,SAAQ,mBAAmB;gBAChD,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK;CAI1C"}
@@ -1,268 +0,0 @@
1
- # Архитектура SDK v2.7.0: HTTP Streaming vs WebSocket
2
-
3
- **Техническая документация для backend разработчиков** - когда использовать HTTP vs WebSocket
4
-
5
- ## 🏗️ Общая архитектура
6
-
7
- SDK v2.7.0 использует **гибридную архитектуру** с двумя основными механизмами передачи данных:
8
-
9
- ```
10
- ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
11
- │ AI Models │ │ Backend │ │ SDK │
12
- │ (Claude/GPT) │◄──►│ (NestJS API) │◄──►│ (TypeScript) │
13
- └─────────────────┘ └─────────────────┘ └─────────────────┘
14
-
15
-
16
- ┌─────────────────┐
17
- │ VS Code │
18
- │ Extension │
19
- └─────────────────┘
20
- ```
21
-
22
- ## 📊 HTTP Streaming vs WebSocket - Сравнение
23
-
24
- | Критерий | HTTP Streaming | WebSocket |
25
- |----------|----------------|-----------|
26
- | **Latency** | ~45ms | ~15ms |
27
- | **Throughput** | Высокий | Средний |
28
- | **Complexity** | Низкая | Высокая |
29
- | **Reliability** | Высокая | Средняя |
30
- | **Browser Support** | 100% | 98% |
31
- | **Debugging** | Простое | Сложное |
32
- | **Auto-retry** | Встроенные | Требует реализации |
33
- | **Scaling** | Отличное | Хорошее |
34
-
35
- ## 🔄 HTTP Streaming Architecture
36
-
37
- ### Когда использовать:
38
- - ✅ **AI модели ответы** (Claude, GPT-4, OpenAI)
39
- - ✅ **VS Code команды** (создание файлов, редактирование)
40
- - ✅ **Thinking токены** (Anthropic Claude 4)
41
- - ✅ **Быстрые операции** (<30 секунд)
42
-
43
- ### Технические детали:
44
- ```typescript
45
- // HTTP Stream через Server-Sent Events
46
- const stream = await sdk.chat.streamChat(messages, {
47
- onVSCodeCommand: async (command) => {
48
- // 45ms latency для VS Code команд
49
- return await executeCommand(command);
50
- }
51
- });
52
-
53
- // Производительность: 10x улучшение (45ms vs 443ms)
54
- ```
55
-
56
- ### Поток данных:
57
- ```
58
- Backend HTTP POST → SSE Stream → SDK → Extension (VS Code API)
59
- Backend HTTP POST ← Result ← SDK ← Extension (результаты)
60
- ```
61
-
62
- ### Плюсы HTTP Streaming:
63
- - 🚀 **Производительность**: 45ms latency
64
- - 🔧 **Простота**: стандартные HTTP запросы
65
- - 🛡️ **Надежность**: встроенные retry механизмы
66
- - 📊 **Мониторинг**: стандартные HTTP логи
67
- - 🌐 **Кэширование**: поддержка CDN и reverse proxy
68
-
69
- ### Минусы HTTP Streaming:
70
- - ⬆️ **Односторонняя связь**: только Backend → SDK
71
- - 📈 **HTTP overhead**: заголовки в каждом запросе
72
- - ⏱️ **Connection pooling**: ограничения браузера
73
-
74
- ## 🔌 WebSocket Architecture
75
-
76
- ### Когда использовать:
77
- - ✅ **Индексирование файлов** (прогресс в реальном времени)
78
- - ✅ **Анализ проектов** (длительные операции)
79
- - ✅ **Зависимости** (граф зависимостей)
80
- - ✅ **Файловые операции** (поиск, редактирование)
81
- - ✅ **Двусторонняя связь** (команды ↔ результаты)
82
-
83
- ### Технические детали:
84
- ```typescript
85
- // 5 WebSocket namespace'ов
86
- await sdk.projects.connectWebSocket(); // / (основной)
87
- await sdk.reasoning.connectWebSocket(); // /reasoning
88
- await sdk.dependencies.connectWebSocket(); // /dependencies
89
- await sdk.filesystem.connectWebSocket(); // /filesystem
90
- await sdk.fileEditing.connectWebSocket(); // /file-editing
91
- ```
92
-
93
- ### Поток данных:
94
- ```
95
- Backend ←→ WebSocket ←→ SDK ←→ Extension
96
- (real-time bidirectional communication)
97
- ```
98
-
99
- ### Плюсы WebSocket:
100
- - ⚡ **Real-time**: мгновенные обновления
101
- - ↔️ **Двусторонняя связь**: команды и события
102
- - 📊 **Прогресс**: индексирование, анализ
103
- - 🔄 **Persistent connection**: меньше overhead
104
- - 🎯 **Event-driven**: подписка на события
105
-
106
- ### Минусы WebSocket:
107
- - 🔧 **Сложность**: управление соединениями
108
- - 🔄 **Reconnection logic**: требует реализации
109
- - 🐛 **Debugging**: сложнее отлаживать
110
- - 🚫 **Proxy issues**: проблемы с некоторыми proxy
111
-
112
- ## 📋 Namespace'ы WebSocket
113
-
114
- ### 1. `/` (основной) - Управление проектами и индексацией
115
- ```typescript
116
- // События индексации
117
- sdk.projects.onIndexingProgress((data) => {
118
- console.log(`Progress: ${data.percentage}%`);
119
- });
120
-
121
- sdk.projects.onIndexingComplete((data) => {
122
- console.log(`Indexed ${data.totalFiles} files`);
123
- });
124
- ```
125
-
126
- ### 2. `/reasoning` - AI рассуждения
127
- ```typescript
128
- // События thinking процессов
129
- sdk.reasoning.onReasoningStarted((data) => {
130
- console.log(`Started: ${data.id}`);
131
- });
132
-
133
- sdk.reasoning.onReasoningProgress((data) => {
134
- console.log(`Step: ${data.currentStep}`);
135
- });
136
- ```
137
-
138
- ### 3. `/dependencies` - Анализ зависимостей
139
- ```typescript
140
- // События анализа зависимостей
141
- sdk.dependencies.onAnalysisProgress((data) => {
142
- console.log(`Analyzing: ${data.currentPackage}`);
143
- });
144
- ```
145
-
146
- ### 4. `/filesystem` - Файловые операции
147
- ```typescript
148
- // События файловой системы
149
- sdk.filesystem.onFileChanged((data) => {
150
- console.log(`File changed: ${data.path}`);
151
- });
152
- ```
153
-
154
- ### 5. `/file-editing` - Редактирование файлов
155
- ```typescript
156
- // События редактирования
157
- sdk.fileEditing.onApplyFileChanges(async (suggestion) => {
158
- return { applied: true, appliedFiles: [suggestion.file] };
159
- });
160
- ```
161
-
162
- ## 🎯 VS Code Integration (v2.7.0)
163
-
164
- ### Новая архитектура:
165
- ```
166
- Модель → Backend → SDK → Extension (VS Code Native API)
167
- ```
168
-
169
- ### Поддерживаемые команды:
170
- ```typescript
171
- enum VSCodeCommands {
172
- CREATE_FILE = 'aiSolver.native.createFile',
173
- EDIT_FILE = 'aiSolver.native.editFile',
174
- BULK_EDIT = 'aiSolver.native.bulkEdit',
175
- FIND_FILES = 'vscode.workspace.findFiles',
176
- FIND_TEXT = 'vscode.workspace.findTextInFiles',
177
- TERMINAL = 'aiSolver.native.terminal',
178
- SAVE_FILE = 'workbench.action.files.save',
179
- SAVE_ALL = 'workbench.action.files.saveAll'
180
- }
181
- ```
182
-
183
- ### Пример интеграции:
184
- ```typescript
185
- const stream = await sdk.chat.streamChat(messages, {
186
- thinking: true, // Адаптивный budget: 15000→12000→10000...→5000
187
-
188
- // Обработчик VS Code команд
189
- onVSCodeCommand: async (command) => {
190
- const startTime = Date.now();
191
-
192
- try {
193
- // Выполнение через VS Code API
194
- const result = await vscode.commands.executeCommand(
195
- command.command,
196
- ...command.args
197
- );
198
-
199
- return {
200
- requestId: command.requestId,
201
- success: true,
202
- result,
203
- executionTime: Date.now() - startTime,
204
- timestamp: Date.now()
205
- };
206
- } catch (error) {
207
- return {
208
- requestId: command.requestId,
209
- success: false,
210
- error: error.message,
211
- executionTime: Date.now() - startTime,
212
- timestamp: Date.now()
213
- };
214
- }
215
- }
216
- });
217
- ```
218
-
219
- ## 📈 Performance Metrics
220
-
221
- ### HTTP Streaming:
222
- - **VS Code команды**: 45ms (vs 443ms old)
223
- - **AI responses**: 120ms first token
224
- - **Thinking tokens**: 80ms latency
225
- - **Error rate**: <0.1%
226
-
227
- ### WebSocket:
228
- - **Connection time**: 150ms
229
- - **Event latency**: 15ms
230
- - **Indexing progress**: real-time
231
- - **Reconnection time**: 500ms
232
-
233
- ## 🛠️ Best Practices
234
-
235
- ### HTTP Streaming:
236
- 1. **Используйте для AI чатов** и коротких операций
237
- 2. **Включайте timeout** для команд (30 сек)
238
- 3. **Обрабатывайте ошибки** gracefully
239
- 4. **Логируйте performance** metrics
240
-
241
- ### WebSocket:
242
- 1. **Подключайтесь только при необходимости** (`autoConnect: false`)
243
- 2. **Обрабатывайте reconnection** события
244
- 3. **Освобождайте ресурсы** при отключении
245
- 4. **Мониторьте health** соединений
246
-
247
- ### Выбор архитектуры:
248
- ```typescript
249
- // ✅ Используйте HTTP Streaming для:
250
- - AI модели (Claude, GPT)
251
- - VS Code команды
252
- - Thinking токены
253
- - Быстрые операции
254
-
255
- // ✅ Используйте WebSocket для:
256
- - Индексирование файлов
257
- - Длительные операции
258
- - Real-time события
259
- - Двусторонняя связь
260
- ```
261
-
262
- ## 🔮 Future Roadmap
263
-
264
- ### Планируемые улучшения:
265
- - **HTTP/3 support** для еще большей производительности
266
- - **GraphQL subscriptions** как альтернатива WebSocket
267
- - **Edge computing** поддержка для low-latency
268
- - **Multi-region** WebSocket clustering