snow-ai 0.4.15 → 0.4.17

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 (351) hide show
  1. package/bundle/cli.mjs +477445 -0
  2. package/bundle/sql-wasm.wasm +0 -0
  3. package/package.json +31 -26
  4. package/dist/agents/codebaseIndexAgent.d.ts +0 -102
  5. package/dist/agents/codebaseIndexAgent.js +0 -641
  6. package/dist/agents/codebaseReviewAgent.d.ts +0 -61
  7. package/dist/agents/codebaseReviewAgent.js +0 -301
  8. package/dist/agents/compactAgent.d.ts +0 -55
  9. package/dist/agents/compactAgent.js +0 -306
  10. package/dist/agents/promptOptimizeAgent.d.ts +0 -54
  11. package/dist/agents/promptOptimizeAgent.js +0 -268
  12. package/dist/agents/reviewAgent.d.ts +0 -50
  13. package/dist/agents/reviewAgent.js +0 -265
  14. package/dist/agents/summaryAgent.d.ts +0 -57
  15. package/dist/agents/summaryAgent.js +0 -260
  16. package/dist/api/anthropic.d.ts +0 -44
  17. package/dist/api/anthropic.js +0 -598
  18. package/dist/api/chat.d.ts +0 -73
  19. package/dist/api/chat.js +0 -386
  20. package/dist/api/embedding.d.ts +0 -34
  21. package/dist/api/embedding.js +0 -80
  22. package/dist/api/gemini.d.ts +0 -31
  23. package/dist/api/gemini.js +0 -445
  24. package/dist/api/models.d.ts +0 -15
  25. package/dist/api/models.js +0 -139
  26. package/dist/api/responses.d.ts +0 -38
  27. package/dist/api/responses.js +0 -515
  28. package/dist/api/systemPrompt.d.ts +0 -4
  29. package/dist/api/systemPrompt.js +0 -408
  30. package/dist/api/types.d.ts +0 -53
  31. package/dist/api/types.js +0 -4
  32. package/dist/app.d.ts +0 -8
  33. package/dist/app.js +0 -112
  34. package/dist/cli.d.ts +0 -2
  35. package/dist/cli.js +0 -199
  36. package/dist/hooks/useAgentPicker.d.ts +0 -14
  37. package/dist/hooks/useAgentPicker.js +0 -119
  38. package/dist/hooks/useClipboard.d.ts +0 -4
  39. package/dist/hooks/useClipboard.js +0 -175
  40. package/dist/hooks/useCommandHandler.d.ts +0 -35
  41. package/dist/hooks/useCommandHandler.js +0 -346
  42. package/dist/hooks/useCommandPanel.d.ts +0 -17
  43. package/dist/hooks/useCommandPanel.js +0 -114
  44. package/dist/hooks/useConversation.d.ts +0 -49
  45. package/dist/hooks/useConversation.js +0 -1052
  46. package/dist/hooks/useFilePicker.d.ts +0 -18
  47. package/dist/hooks/useFilePicker.js +0 -224
  48. package/dist/hooks/useGlobalExit.d.ts +0 -5
  49. package/dist/hooks/useGlobalExit.js +0 -34
  50. package/dist/hooks/useGlobalNavigation.d.ts +0 -6
  51. package/dist/hooks/useGlobalNavigation.js +0 -17
  52. package/dist/hooks/useHistoryNavigation.d.ts +0 -35
  53. package/dist/hooks/useHistoryNavigation.js +0 -133
  54. package/dist/hooks/useInputBuffer.d.ts +0 -6
  55. package/dist/hooks/useInputBuffer.js +0 -45
  56. package/dist/hooks/useKeyboardInput.d.ts +0 -80
  57. package/dist/hooks/useKeyboardInput.js +0 -608
  58. package/dist/hooks/useSessionManagement.d.ts +0 -10
  59. package/dist/hooks/useSessionManagement.js +0 -43
  60. package/dist/hooks/useSessionSave.d.ts +0 -8
  61. package/dist/hooks/useSessionSave.js +0 -63
  62. package/dist/hooks/useSnapshotState.d.ts +0 -26
  63. package/dist/hooks/useSnapshotState.js +0 -28
  64. package/dist/hooks/useStreamingState.d.ts +0 -33
  65. package/dist/hooks/useStreamingState.js +0 -105
  66. package/dist/hooks/useTerminalFocus.d.ts +0 -28
  67. package/dist/hooks/useTerminalFocus.js +0 -87
  68. package/dist/hooks/useTerminalSize.d.ts +0 -4
  69. package/dist/hooks/useTerminalSize.js +0 -20
  70. package/dist/hooks/useTodoPicker.d.ts +0 -16
  71. package/dist/hooks/useTodoPicker.js +0 -94
  72. package/dist/hooks/useToolConfirmation.d.ts +0 -19
  73. package/dist/hooks/useToolConfirmation.js +0 -61
  74. package/dist/hooks/useVSCodeState.d.ts +0 -8
  75. package/dist/hooks/useVSCodeState.js +0 -81
  76. package/dist/i18n/I18nContext.d.ts +0 -14
  77. package/dist/i18n/I18nContext.js +0 -24
  78. package/dist/i18n/index.d.ts +0 -3
  79. package/dist/i18n/index.js +0 -2
  80. package/dist/i18n/lang/en.d.ts +0 -2
  81. package/dist/i18n/lang/en.js +0 -502
  82. package/dist/i18n/lang/es.d.ts +0 -2
  83. package/dist/i18n/lang/es.js +0 -502
  84. package/dist/i18n/lang/ja.d.ts +0 -2
  85. package/dist/i18n/lang/ja.js +0 -502
  86. package/dist/i18n/lang/ko.d.ts +0 -2
  87. package/dist/i18n/lang/ko.js +0 -502
  88. package/dist/i18n/lang/zh-TW.d.ts +0 -2
  89. package/dist/i18n/lang/zh-TW.js +0 -502
  90. package/dist/i18n/lang/zh.d.ts +0 -2
  91. package/dist/i18n/lang/zh.js +0 -502
  92. package/dist/i18n/translations.d.ts +0 -2
  93. package/dist/i18n/translations.js +0 -14
  94. package/dist/i18n/types.d.ts +0 -478
  95. package/dist/i18n/types.js +0 -1
  96. package/dist/mcp/aceCodeSearch.d.ts +0 -247
  97. package/dist/mcp/aceCodeSearch.js +0 -1058
  98. package/dist/mcp/bash.d.ts +0 -50
  99. package/dist/mcp/bash.js +0 -153
  100. package/dist/mcp/codebaseSearch.d.ts +0 -44
  101. package/dist/mcp/codebaseSearch.js +0 -275
  102. package/dist/mcp/filesystem.d.ts +0 -392
  103. package/dist/mcp/filesystem.js +0 -1445
  104. package/dist/mcp/ideDiagnostics.d.ts +0 -36
  105. package/dist/mcp/ideDiagnostics.js +0 -90
  106. package/dist/mcp/notebook.d.ts +0 -10
  107. package/dist/mcp/notebook.js +0 -367
  108. package/dist/mcp/subagent.d.ts +0 -37
  109. package/dist/mcp/subagent.js +0 -113
  110. package/dist/mcp/todo.d.ts +0 -46
  111. package/dist/mcp/todo.js +0 -511
  112. package/dist/mcp/types/aceCodeSearch.types.d.ts +0 -92
  113. package/dist/mcp/types/aceCodeSearch.types.js +0 -4
  114. package/dist/mcp/types/bash.types.d.ts +0 -13
  115. package/dist/mcp/types/bash.types.js +0 -4
  116. package/dist/mcp/types/filesystem.types.d.ts +0 -210
  117. package/dist/mcp/types/filesystem.types.js +0 -27
  118. package/dist/mcp/types/todo.types.d.ts +0 -27
  119. package/dist/mcp/types/todo.types.js +0 -4
  120. package/dist/mcp/types/websearch.types.d.ts +0 -30
  121. package/dist/mcp/types/websearch.types.js +0 -4
  122. package/dist/mcp/utils/aceCodeSearch/filesystem.utils.d.ts +0 -34
  123. package/dist/mcp/utils/aceCodeSearch/filesystem.utils.js +0 -146
  124. package/dist/mcp/utils/aceCodeSearch/language.utils.d.ts +0 -14
  125. package/dist/mcp/utils/aceCodeSearch/language.utils.js +0 -418
  126. package/dist/mcp/utils/aceCodeSearch/search.utils.d.ts +0 -31
  127. package/dist/mcp/utils/aceCodeSearch/search.utils.js +0 -136
  128. package/dist/mcp/utils/aceCodeSearch/symbol.utils.d.ts +0 -20
  129. package/dist/mcp/utils/aceCodeSearch/symbol.utils.js +0 -141
  130. package/dist/mcp/utils/bash/security.utils.d.ts +0 -20
  131. package/dist/mcp/utils/bash/security.utils.js +0 -34
  132. package/dist/mcp/utils/filesystem/batch-operations.utils.d.ts +0 -39
  133. package/dist/mcp/utils/filesystem/batch-operations.utils.js +0 -182
  134. package/dist/mcp/utils/filesystem/code-analysis.utils.d.ts +0 -18
  135. package/dist/mcp/utils/filesystem/code-analysis.utils.js +0 -165
  136. package/dist/mcp/utils/filesystem/match-finder.utils.d.ts +0 -16
  137. package/dist/mcp/utils/filesystem/match-finder.utils.js +0 -85
  138. package/dist/mcp/utils/filesystem/office-parser.utils.d.ts +0 -43
  139. package/dist/mcp/utils/filesystem/office-parser.utils.js +0 -163
  140. package/dist/mcp/utils/filesystem/path-fixer.utils.d.ts +0 -7
  141. package/dist/mcp/utils/filesystem/path-fixer.utils.js +0 -60
  142. package/dist/mcp/utils/filesystem/similarity.utils.d.ts +0 -22
  143. package/dist/mcp/utils/filesystem/similarity.utils.js +0 -75
  144. package/dist/mcp/utils/todo/date.utils.d.ts +0 -9
  145. package/dist/mcp/utils/todo/date.utils.js +0 -14
  146. package/dist/mcp/utils/websearch/browser.utils.d.ts +0 -8
  147. package/dist/mcp/utils/websearch/browser.utils.js +0 -58
  148. package/dist/mcp/utils/websearch/text.utils.d.ts +0 -16
  149. package/dist/mcp/utils/websearch/text.utils.js +0 -39
  150. package/dist/mcp/websearch.d.ts +0 -88
  151. package/dist/mcp/websearch.js +0 -375
  152. package/dist/test/logger-test.d.ts +0 -1
  153. package/dist/test/logger-test.js +0 -7
  154. package/dist/types/index.d.ts +0 -15
  155. package/dist/types/index.js +0 -1
  156. package/dist/ui/components/AgentPickerPanel.d.ts +0 -10
  157. package/dist/ui/components/AgentPickerPanel.js +0 -74
  158. package/dist/ui/components/ChatInput.d.ts +0 -46
  159. package/dist/ui/components/ChatInput.js +0 -379
  160. package/dist/ui/components/CommandPanel.d.ts +0 -15
  161. package/dist/ui/components/CommandPanel.js +0 -80
  162. package/dist/ui/components/DiffViewer.d.ts +0 -11
  163. package/dist/ui/components/DiffViewer.js +0 -178
  164. package/dist/ui/components/FileList.d.ts +0 -15
  165. package/dist/ui/components/FileList.js +0 -360
  166. package/dist/ui/components/FileRollbackConfirmation.d.ts +0 -8
  167. package/dist/ui/components/FileRollbackConfirmation.js +0 -108
  168. package/dist/ui/components/HelpPanel.d.ts +0 -2
  169. package/dist/ui/components/HelpPanel.js +0 -67
  170. package/dist/ui/components/MCPInfoPanel.d.ts +0 -2
  171. package/dist/ui/components/MCPInfoPanel.js +0 -108
  172. package/dist/ui/components/MCPInfoScreen.d.ts +0 -7
  173. package/dist/ui/components/MCPInfoScreen.js +0 -115
  174. package/dist/ui/components/MarkdownRenderer.d.ts +0 -6
  175. package/dist/ui/components/MarkdownRenderer.js +0 -70
  176. package/dist/ui/components/Menu.d.ts +0 -17
  177. package/dist/ui/components/Menu.js +0 -88
  178. package/dist/ui/components/MessageList.d.ts +0 -56
  179. package/dist/ui/components/MessageList.js +0 -97
  180. package/dist/ui/components/PendingMessages.d.ts +0 -13
  181. package/dist/ui/components/PendingMessages.js +0 -29
  182. package/dist/ui/components/PendingToolCalls.d.ts +0 -11
  183. package/dist/ui/components/PendingToolCalls.js +0 -35
  184. package/dist/ui/components/ScrollableSelectInput.d.ts +0 -29
  185. package/dist/ui/components/ScrollableSelectInput.js +0 -157
  186. package/dist/ui/components/SessionListPanel.d.ts +0 -7
  187. package/dist/ui/components/SessionListPanel.js +0 -175
  188. package/dist/ui/components/SessionListScreen.d.ts +0 -7
  189. package/dist/ui/components/SessionListScreen.js +0 -217
  190. package/dist/ui/components/SessionListScreenWrapper.d.ts +0 -7
  191. package/dist/ui/components/SessionListScreenWrapper.js +0 -14
  192. package/dist/ui/components/ShimmerText.d.ts +0 -9
  193. package/dist/ui/components/ShimmerText.js +0 -30
  194. package/dist/ui/components/TodoPickerPanel.d.ts +0 -14
  195. package/dist/ui/components/TodoPickerPanel.js +0 -119
  196. package/dist/ui/components/TodoTree.d.ts +0 -15
  197. package/dist/ui/components/TodoTree.js +0 -60
  198. package/dist/ui/components/ToolConfirmation.d.ts +0 -21
  199. package/dist/ui/components/ToolConfirmation.js +0 -204
  200. package/dist/ui/components/ToolResultPreview.d.ts +0 -13
  201. package/dist/ui/components/ToolResultPreview.js +0 -337
  202. package/dist/ui/components/UsagePanel.d.ts +0 -2
  203. package/dist/ui/components/UsagePanel.js +0 -394
  204. package/dist/ui/contexts/ThemeContext.d.ts +0 -13
  205. package/dist/ui/contexts/ThemeContext.js +0 -28
  206. package/dist/ui/pages/ChatScreen.d.ts +0 -6
  207. package/dist/ui/pages/ChatScreen.js +0 -1495
  208. package/dist/ui/pages/CodeBaseConfigScreen.d.ts +0 -8
  209. package/dist/ui/pages/CodeBaseConfigScreen.js +0 -350
  210. package/dist/ui/pages/ConfigScreen.d.ts +0 -8
  211. package/dist/ui/pages/ConfigScreen.js +0 -1101
  212. package/dist/ui/pages/CustomHeadersScreen.d.ts +0 -6
  213. package/dist/ui/pages/CustomHeadersScreen.js +0 -502
  214. package/dist/ui/pages/HeadlessModeScreen.d.ts +0 -7
  215. package/dist/ui/pages/HeadlessModeScreen.js +0 -381
  216. package/dist/ui/pages/LanguageSettingsScreen.d.ts +0 -7
  217. package/dist/ui/pages/LanguageSettingsScreen.js +0 -91
  218. package/dist/ui/pages/MCPConfigScreen.d.ts +0 -6
  219. package/dist/ui/pages/MCPConfigScreen.js +0 -55
  220. package/dist/ui/pages/ProxyConfigScreen.d.ts +0 -8
  221. package/dist/ui/pages/ProxyConfigScreen.js +0 -149
  222. package/dist/ui/pages/SensitiveCommandConfigScreen.d.ts +0 -7
  223. package/dist/ui/pages/SensitiveCommandConfigScreen.js +0 -271
  224. package/dist/ui/pages/SubAgentConfigScreen.d.ts +0 -9
  225. package/dist/ui/pages/SubAgentConfigScreen.js +0 -435
  226. package/dist/ui/pages/SubAgentListScreen.d.ts +0 -9
  227. package/dist/ui/pages/SubAgentListScreen.js +0 -131
  228. package/dist/ui/pages/SystemPromptConfigScreen.d.ts +0 -6
  229. package/dist/ui/pages/SystemPromptConfigScreen.js +0 -326
  230. package/dist/ui/pages/ThemeSettingsScreen.d.ts +0 -7
  231. package/dist/ui/pages/ThemeSettingsScreen.js +0 -106
  232. package/dist/ui/pages/WelcomeScreen.d.ts +0 -7
  233. package/dist/ui/pages/WelcomeScreen.js +0 -217
  234. package/dist/ui/themes/index.d.ts +0 -23
  235. package/dist/ui/themes/index.js +0 -140
  236. package/dist/utils/apiConfig.d.ts +0 -126
  237. package/dist/utils/apiConfig.js +0 -423
  238. package/dist/utils/autoCompress.d.ts +0 -15
  239. package/dist/utils/autoCompress.js +0 -24
  240. package/dist/utils/chatExporter.d.ts +0 -9
  241. package/dist/utils/chatExporter.js +0 -118
  242. package/dist/utils/checkpointManager.d.ts +0 -74
  243. package/dist/utils/checkpointManager.js +0 -181
  244. package/dist/utils/codebaseConfig.d.ts +0 -16
  245. package/dist/utils/codebaseConfig.js +0 -67
  246. package/dist/utils/codebaseDatabase.d.ts +0 -102
  247. package/dist/utils/codebaseDatabase.js +0 -333
  248. package/dist/utils/codebaseSearchEvents.d.ts +0 -16
  249. package/dist/utils/codebaseSearchEvents.js +0 -13
  250. package/dist/utils/commandExecutor.d.ts +0 -13
  251. package/dist/utils/commandExecutor.js +0 -26
  252. package/dist/utils/commands/agent.d.ts +0 -2
  253. package/dist/utils/commands/agent.js +0 -12
  254. package/dist/utils/commands/clear.d.ts +0 -2
  255. package/dist/utils/commands/clear.js +0 -12
  256. package/dist/utils/commands/compact.d.ts +0 -2
  257. package/dist/utils/commands/compact.js +0 -12
  258. package/dist/utils/commands/export.d.ts +0 -2
  259. package/dist/utils/commands/export.js +0 -12
  260. package/dist/utils/commands/help.d.ts +0 -2
  261. package/dist/utils/commands/help.js +0 -11
  262. package/dist/utils/commands/home.d.ts +0 -2
  263. package/dist/utils/commands/home.js +0 -34
  264. package/dist/utils/commands/ide.d.ts +0 -2
  265. package/dist/utils/commands/ide.js +0 -32
  266. package/dist/utils/commands/init.d.ts +0 -2
  267. package/dist/utils/commands/init.js +0 -93
  268. package/dist/utils/commands/mcp.d.ts +0 -2
  269. package/dist/utils/commands/mcp.js +0 -12
  270. package/dist/utils/commands/resume.d.ts +0 -2
  271. package/dist/utils/commands/resume.js +0 -12
  272. package/dist/utils/commands/review.d.ts +0 -2
  273. package/dist/utils/commands/review.js +0 -81
  274. package/dist/utils/commands/role.d.ts +0 -2
  275. package/dist/utils/commands/role.js +0 -37
  276. package/dist/utils/commands/todoPicker.d.ts +0 -2
  277. package/dist/utils/commands/todoPicker.js +0 -12
  278. package/dist/utils/commands/usage.d.ts +0 -2
  279. package/dist/utils/commands/usage.js +0 -12
  280. package/dist/utils/commands/yolo.d.ts +0 -2
  281. package/dist/utils/commands/yolo.js +0 -12
  282. package/dist/utils/configManager.d.ts +0 -45
  283. package/dist/utils/configManager.js +0 -303
  284. package/dist/utils/contextCompressor.d.ts +0 -16
  285. package/dist/utils/contextCompressor.js +0 -334
  286. package/dist/utils/devMode.d.ts +0 -13
  287. package/dist/utils/devMode.js +0 -54
  288. package/dist/utils/escapeHandler.d.ts +0 -79
  289. package/dist/utils/escapeHandler.js +0 -153
  290. package/dist/utils/fileDialog.d.ts +0 -9
  291. package/dist/utils/fileDialog.js +0 -74
  292. package/dist/utils/fileUtils.d.ts +0 -40
  293. package/dist/utils/fileUtils.js +0 -185
  294. package/dist/utils/historyManager.d.ts +0 -45
  295. package/dist/utils/historyManager.js +0 -159
  296. package/dist/utils/incrementalSnapshot.d.ts +0 -109
  297. package/dist/utils/incrementalSnapshot.js +0 -383
  298. package/dist/utils/index.d.ts +0 -11
  299. package/dist/utils/index.js +0 -18
  300. package/dist/utils/languageConfig.d.ts +0 -21
  301. package/dist/utils/languageConfig.js +0 -61
  302. package/dist/utils/logger.d.ts +0 -37
  303. package/dist/utils/logger.js +0 -122
  304. package/dist/utils/mcpToolsManager.d.ts +0 -52
  305. package/dist/utils/mcpToolsManager.js +0 -878
  306. package/dist/utils/messageFormatter.d.ts +0 -12
  307. package/dist/utils/messageFormatter.js +0 -115
  308. package/dist/utils/notebookManager.d.ts +0 -59
  309. package/dist/utils/notebookManager.js +0 -213
  310. package/dist/utils/patch-highlight.d.ts +0 -5
  311. package/dist/utils/patch-highlight.js +0 -23
  312. package/dist/utils/processManager.d.ts +0 -27
  313. package/dist/utils/processManager.js +0 -75
  314. package/dist/utils/proxyUtils.d.ts +0 -15
  315. package/dist/utils/proxyUtils.js +0 -50
  316. package/dist/utils/resourceMonitor.d.ts +0 -65
  317. package/dist/utils/resourceMonitor.js +0 -175
  318. package/dist/utils/retryUtils.d.ts +0 -49
  319. package/dist/utils/retryUtils.js +0 -303
  320. package/dist/utils/sensitiveCommandManager.d.ts +0 -53
  321. package/dist/utils/sensitiveCommandManager.js +0 -308
  322. package/dist/utils/sessionConverter.d.ts +0 -7
  323. package/dist/utils/sessionConverter.js +0 -306
  324. package/dist/utils/sessionManager.d.ts +0 -53
  325. package/dist/utils/sessionManager.js +0 -371
  326. package/dist/utils/subAgentConfig.d.ts +0 -50
  327. package/dist/utils/subAgentConfig.js +0 -221
  328. package/dist/utils/subAgentExecutor.d.ts +0 -40
  329. package/dist/utils/subAgentExecutor.js +0 -434
  330. package/dist/utils/terminal.d.ts +0 -5
  331. package/dist/utils/terminal.js +0 -13
  332. package/dist/utils/textBuffer.d.ts +0 -99
  333. package/dist/utils/textBuffer.js +0 -547
  334. package/dist/utils/textUtils.d.ts +0 -37
  335. package/dist/utils/textUtils.js +0 -102
  336. package/dist/utils/themeConfig.d.ts +0 -21
  337. package/dist/utils/themeConfig.js +0 -61
  338. package/dist/utils/todoPreprocessor.d.ts +0 -5
  339. package/dist/utils/todoPreprocessor.js +0 -18
  340. package/dist/utils/todoScanner.d.ts +0 -8
  341. package/dist/utils/todoScanner.js +0 -148
  342. package/dist/utils/toolDisplayConfig.d.ts +0 -16
  343. package/dist/utils/toolDisplayConfig.js +0 -47
  344. package/dist/utils/toolExecutor.d.ts +0 -37
  345. package/dist/utils/toolExecutor.js +0 -224
  346. package/dist/utils/usageLogger.d.ts +0 -11
  347. package/dist/utils/usageLogger.js +0 -114
  348. package/dist/utils/vscodeConnection.d.ts +0 -76
  349. package/dist/utils/vscodeConnection.js +0 -430
  350. package/dist/utils/workspaceSnapshot.d.ts +0 -63
  351. package/dist/utils/workspaceSnapshot.js +0 -300
@@ -1,54 +0,0 @@
1
- import { type ChatMessage } from '../api/chat.js';
2
- /**
3
- * Prompt Optimization Agent Service
4
- *
5
- * Optimizes user prompts for better AI understanding and response quality.
6
- * This service operates using the basic model for efficient, low-cost optimization.
7
- *
8
- * Features:
9
- * - Uses basicModel for efficient prompt optimization
10
- * - Follows the same API routing as main flow (chat, responses, gemini, anthropic)
11
- * - Filters context to only include user->assistant pairs without tool calls
12
- * - Returns optimized prompt that preserves user intent while improving clarity
13
- * - Silent execution with error handling to prevent main flow disruption
14
- */
15
- export declare class PromptOptimizeAgent {
16
- private modelName;
17
- private requestMethod;
18
- private initialized;
19
- /**
20
- * Initialize the prompt optimization agent with current configuration
21
- * @returns true if initialized successfully, false otherwise
22
- */
23
- private initialize;
24
- /**
25
- * Check if prompt optimization agent is available
26
- */
27
- isAvailable(): Promise<boolean>;
28
- /**
29
- * Call the model with streaming API and assemble complete response
30
- * Uses the same routing logic as main flow for consistency
31
- *
32
- * @param messages - Chat messages
33
- * @param abortSignal - Optional abort signal to cancel the request
34
- */
35
- private callModel;
36
- /**
37
- * Filter conversation history to only include user->assistant pairs without tool calls
38
- * This creates a lightweight context for prompt optimization
39
- *
40
- * @param messages - Full conversation history
41
- * @returns Filtered messages containing only user->assistant exchanges
42
- */
43
- private filterContextMessages;
44
- /**
45
- * Optimize user prompt for better AI understanding
46
- *
47
- * @param userPrompt - Original user prompt
48
- * @param conversationHistory - Full conversation history for context
49
- * @param abortSignal - Optional abort signal to cancel optimization
50
- * @returns Optimized prompt, or original prompt if optimization fails
51
- */
52
- optimizePrompt(userPrompt: string, conversationHistory: ChatMessage[], abortSignal?: AbortSignal): Promise<string>;
53
- }
54
- export declare const promptOptimizeAgent: PromptOptimizeAgent;
@@ -1,268 +0,0 @@
1
- import { getOpenAiConfig } from '../utils/apiConfig.js';
2
- import { logger } from '../utils/logger.js';
3
- import { createStreamingChatCompletion } from '../api/chat.js';
4
- import { createStreamingResponse } from '../api/responses.js';
5
- import { createStreamingGeminiCompletion } from '../api/gemini.js';
6
- import { createStreamingAnthropicCompletion } from '../api/anthropic.js';
7
- /**
8
- * Prompt Optimization Agent Service
9
- *
10
- * Optimizes user prompts for better AI understanding and response quality.
11
- * This service operates using the basic model for efficient, low-cost optimization.
12
- *
13
- * Features:
14
- * - Uses basicModel for efficient prompt optimization
15
- * - Follows the same API routing as main flow (chat, responses, gemini, anthropic)
16
- * - Filters context to only include user->assistant pairs without tool calls
17
- * - Returns optimized prompt that preserves user intent while improving clarity
18
- * - Silent execution with error handling to prevent main flow disruption
19
- */
20
- export class PromptOptimizeAgent {
21
- constructor() {
22
- Object.defineProperty(this, "modelName", {
23
- enumerable: true,
24
- configurable: true,
25
- writable: true,
26
- value: ''
27
- });
28
- Object.defineProperty(this, "requestMethod", {
29
- enumerable: true,
30
- configurable: true,
31
- writable: true,
32
- value: 'chat'
33
- });
34
- Object.defineProperty(this, "initialized", {
35
- enumerable: true,
36
- configurable: true,
37
- writable: true,
38
- value: false
39
- });
40
- }
41
- /**
42
- * Initialize the prompt optimization agent with current configuration
43
- * @returns true if initialized successfully, false otherwise
44
- */
45
- async initialize() {
46
- try {
47
- const config = getOpenAiConfig();
48
- // Check if basic model is configured
49
- if (!config.basicModel) {
50
- logger.warn('Prompt optimize agent: Basic model not configured');
51
- return false;
52
- }
53
- this.modelName = config.basicModel;
54
- this.requestMethod = config.requestMethod;
55
- this.initialized = true;
56
- return true;
57
- }
58
- catch (error) {
59
- logger.warn('Prompt optimize agent: Failed to initialize:', error);
60
- return false;
61
- }
62
- }
63
- /**
64
- * Check if prompt optimization agent is available
65
- */
66
- async isAvailable() {
67
- if (!this.initialized) {
68
- return await this.initialize();
69
- }
70
- return true;
71
- }
72
- /**
73
- * Call the model with streaming API and assemble complete response
74
- * Uses the same routing logic as main flow for consistency
75
- *
76
- * @param messages - Chat messages
77
- * @param abortSignal - Optional abort signal to cancel the request
78
- */
79
- async callModel(messages, abortSignal) {
80
- let streamGenerator;
81
- // Route to appropriate streaming API based on request method
82
- switch (this.requestMethod) {
83
- case 'anthropic':
84
- streamGenerator = createStreamingAnthropicCompletion({
85
- model: this.modelName,
86
- messages,
87
- max_tokens: 1000, // Limited tokens for prompt optimization
88
- includeBuiltinSystemPrompt: false,
89
- disableThinking: true, // Agents don't use Extended Thinking
90
- }, abortSignal);
91
- break;
92
- case 'gemini':
93
- streamGenerator = createStreamingGeminiCompletion({
94
- model: this.modelName,
95
- messages,
96
- includeBuiltinSystemPrompt: false,
97
- }, abortSignal);
98
- break;
99
- case 'responses':
100
- streamGenerator = createStreamingResponse({
101
- model: this.modelName,
102
- messages,
103
- stream: true,
104
- includeBuiltinSystemPrompt: false,
105
- }, abortSignal);
106
- break;
107
- case 'chat':
108
- default:
109
- streamGenerator = createStreamingChatCompletion({
110
- model: this.modelName,
111
- messages,
112
- stream: true,
113
- includeBuiltinSystemPrompt: false,
114
- }, abortSignal);
115
- break;
116
- }
117
- // Assemble complete content from streaming response
118
- let completeContent = '';
119
- try {
120
- for await (const chunk of streamGenerator) {
121
- // Check abort signal
122
- if (abortSignal?.aborted) {
123
- throw new Error('Request aborted');
124
- }
125
- // Handle different chunk formats based on request method
126
- if (this.requestMethod === 'chat') {
127
- // Chat API uses standard OpenAI format
128
- if (chunk.choices && chunk.choices[0]?.delta?.content) {
129
- completeContent += chunk.choices[0].delta.content;
130
- }
131
- }
132
- else {
133
- // Responses, Gemini, and Anthropic APIs use unified format
134
- if (chunk.type === 'content' && chunk.content) {
135
- completeContent += chunk.content;
136
- }
137
- }
138
- }
139
- }
140
- catch (streamError) {
141
- logger.error('Prompt optimize agent: Streaming error:', streamError);
142
- throw streamError;
143
- }
144
- return completeContent;
145
- }
146
- /**
147
- * Filter conversation history to only include user->assistant pairs without tool calls
148
- * This creates a lightweight context for prompt optimization
149
- *
150
- * @param messages - Full conversation history
151
- * @returns Filtered messages containing only user->assistant exchanges
152
- */
153
- filterContextMessages(messages) {
154
- const filtered = [];
155
- for (const msg of messages) {
156
- // Only include user and assistant messages
157
- if (msg.role === 'user' || msg.role === 'assistant') {
158
- // For assistant messages, skip if they contain tool calls
159
- if (msg.role === 'assistant') {
160
- // Check if message has tool_calls (OpenAI format) or tool_use content (Anthropic format)
161
- const hasToolCalls = !!msg.tool_calls;
162
- const hasToolUseContent = Array.isArray(msg.content) &&
163
- msg.content.some((c) => c.type === 'tool_use' || c.type === 'tool_call');
164
- if (hasToolCalls || hasToolUseContent) {
165
- continue; // Skip assistant messages with tool calls
166
- }
167
- }
168
- // Add message to filtered list
169
- filtered.push(msg);
170
- }
171
- }
172
- return filtered;
173
- }
174
- /**
175
- * Optimize user prompt for better AI understanding
176
- *
177
- * @param userPrompt - Original user prompt
178
- * @param conversationHistory - Full conversation history for context
179
- * @param abortSignal - Optional abort signal to cancel optimization
180
- * @returns Optimized prompt, or original prompt if optimization fails
181
- */
182
- async optimizePrompt(userPrompt, conversationHistory, abortSignal) {
183
- const available = await this.isAvailable();
184
- if (!available) {
185
- return userPrompt;
186
- }
187
- try {
188
- // Check word count - if prompt > 100 words, skip optimization
189
- // User likely provided detailed/important original text that should be preserved as-is
190
- const wordCount = userPrompt.trim().split(/\s+/).length;
191
- if (wordCount > 100) {
192
- return userPrompt;
193
- }
194
- // Filter conversation history to lightweight context (only user<->assistant, no tool calls)
195
- const contextMessages = this.filterContextMessages(conversationHistory);
196
- // Build context summary if there's conversation history
197
- let contextSummary = '';
198
- if (contextMessages.length > 0) {
199
- // Take last 8 messages to keep context focused, but use full content (no truncation)
200
- const recentContext = contextMessages.slice(-8);
201
- contextSummary =
202
- '\n\nRecent conversation context:\n' +
203
- recentContext
204
- .map((msg) => {
205
- const content = typeof msg.content === 'string'
206
- ? msg.content
207
- : JSON.stringify(msg.content);
208
- // Use full message content (no truncation)
209
- return `${msg.role}: ${content}`;
210
- })
211
- .join('\n');
212
- }
213
- const optimizationPrompt = `You are a prompt optimization assistant. Your task is to improve user prompts for better AI understanding while maintaining HIGH FIDELITY to the original content.
214
-
215
- User's original prompt:
216
- ${userPrompt}${contextSummary}
217
-
218
- Your optimization goals (in priority order):
219
- 1. **HIGH FIDELITY REQUIREMENT**: Preserve ALL important information, details, and requirements from the user's original prompt - DO NOT lose or omit any critical content
220
- 2. Preserve the EXACT SAME LANGUAGE as the user (if Chinese, stay Chinese; if English, stay English)
221
- 3. Keep the core intent and meaning unchanged
222
- 4. Make the prompt clearer and more specific ONLY if vague - if already clear, keep it as-is
223
- 5. Add relevant context if the user is asking follow-up questions
224
- 6. Break down complex requests into clear requirements without losing details
225
- 7. Keep the tone natural and conversational
226
- 8. DO NOT add unnecessary formality or change the user's communication style
227
- 9. If the prompt is already clear and specific, return it as-is
228
-
229
- CRITICAL RULES:
230
- - NEVER remove important details, specific requirements, file paths, code snippets, or technical specifications
231
- - NEVER simplify the prompt if it means losing user-provided information
232
- - When in doubt, prefer preserving the original over optimizing
233
- - The goal is CLARITY, not BREVITY - keep all important content
234
-
235
- IMPORTANT: Output ONLY the optimized prompt text. No explanations, no meta-commentary, no JSON format. Just the optimized prompt itself.`;
236
- const messages = [
237
- {
238
- role: 'user',
239
- content: optimizationPrompt,
240
- },
241
- ];
242
- const optimizedPrompt = await this.callModel(messages, abortSignal);
243
- if (!optimizedPrompt || optimizedPrompt.trim().length === 0) {
244
- logger.warn('Prompt optimize agent: Empty response, using original prompt');
245
- return userPrompt;
246
- }
247
- // Clean up the response (remove any markdown formatting if present)
248
- let cleanedPrompt = optimizedPrompt.trim();
249
- // Remove markdown code blocks if present
250
- const codeBlockMatch = cleanedPrompt.match(/```[\s\S]*?\n([\s\S]*?)```/);
251
- if (codeBlockMatch) {
252
- cleanedPrompt = codeBlockMatch[1].trim();
253
- }
254
- // If optimized prompt is suspiciously short or looks like it failed, use original
255
- if (cleanedPrompt.length < userPrompt.length * 0.3) {
256
- logger.warn('Prompt optimize agent: Optimized prompt too short, using original');
257
- return userPrompt;
258
- }
259
- return cleanedPrompt;
260
- }
261
- catch (error) {
262
- logger.error('Prompt optimize agent: Failed to optimize prompt', error);
263
- return userPrompt;
264
- }
265
- }
266
- }
267
- // Export singleton instance
268
- export const promptOptimizeAgent = new PromptOptimizeAgent();
@@ -1,50 +0,0 @@
1
- export declare class ReviewAgent {
2
- private modelName;
3
- private requestMethod;
4
- private initialized;
5
- /**
6
- * Initialize the review agent with current configuration
7
- * Uses advanced model (same as main flow)
8
- */
9
- private initialize;
10
- /**
11
- * Check if review agent is available
12
- */
13
- isAvailable(): Promise<boolean>;
14
- /**
15
- * Check if current directory or any parent directory is a git repository
16
- * @param startDir - Starting directory to check
17
- * @returns Path to git root directory, or null if not found
18
- */
19
- private findGitRoot;
20
- /**
21
- * Check if git is available and current directory is in a git repository
22
- * @returns Object with isGitRepo flag and optional error message
23
- */
24
- checkGitRepository(): {
25
- isGitRepo: boolean;
26
- gitRoot?: string;
27
- error?: string;
28
- };
29
- /**
30
- * Get git diff for uncommitted changes
31
- * @param gitRoot - Git repository root directory
32
- * @returns Git diff output
33
- */
34
- getGitDiff(gitRoot: string): string;
35
- /**
36
- * Generate code review prompt
37
- */
38
- private generateReviewPrompt;
39
- /**
40
- * Call the advanced model with streaming (same routing as main flow)
41
- */
42
- private callAdvancedModel;
43
- /**
44
- * Review git changes and return streaming generator
45
- * @param abortSignal - Optional abort signal
46
- * @returns Async generator for streaming response
47
- */
48
- reviewChanges(abortSignal?: AbortSignal): AsyncGenerator<any, void, unknown>;
49
- }
50
- export declare const reviewAgent: ReviewAgent;
@@ -1,265 +0,0 @@
1
- import { getOpenAiConfig, getCustomSystemPrompt } from '../utils/apiConfig.js';
2
- import { logger } from '../utils/logger.js';
3
- import { createStreamingChatCompletion } from '../api/chat.js';
4
- import { createStreamingResponse } from '../api/responses.js';
5
- import { createStreamingGeminiCompletion } from '../api/gemini.js';
6
- import { createStreamingAnthropicCompletion } from '../api/anthropic.js';
7
- import { execSync } from 'child_process';
8
- import * as path from 'path';
9
- import * as fs from 'fs';
10
- export class ReviewAgent {
11
- constructor() {
12
- Object.defineProperty(this, "modelName", {
13
- enumerable: true,
14
- configurable: true,
15
- writable: true,
16
- value: ''
17
- });
18
- Object.defineProperty(this, "requestMethod", {
19
- enumerable: true,
20
- configurable: true,
21
- writable: true,
22
- value: 'chat'
23
- });
24
- Object.defineProperty(this, "initialized", {
25
- enumerable: true,
26
- configurable: true,
27
- writable: true,
28
- value: false
29
- });
30
- }
31
- /**
32
- * Initialize the review agent with current configuration
33
- * Uses advanced model (same as main flow)
34
- */
35
- async initialize() {
36
- try {
37
- const config = getOpenAiConfig();
38
- if (!config.advancedModel) {
39
- return false;
40
- }
41
- this.modelName = config.advancedModel;
42
- this.requestMethod = config.requestMethod;
43
- this.initialized = true;
44
- return true;
45
- }
46
- catch (error) {
47
- logger.warn('Failed to initialize review agent:', error);
48
- return false;
49
- }
50
- }
51
- /**
52
- * Check if review agent is available
53
- */
54
- async isAvailable() {
55
- if (!this.initialized) {
56
- return await this.initialize();
57
- }
58
- return true;
59
- }
60
- /**
61
- * Check if current directory or any parent directory is a git repository
62
- * @param startDir - Starting directory to check
63
- * @returns Path to git root directory, or null if not found
64
- */
65
- findGitRoot(startDir) {
66
- let currentDir = path.resolve(startDir);
67
- const root = path.parse(currentDir).root;
68
- while (currentDir !== root) {
69
- const gitDir = path.join(currentDir, '.git');
70
- if (fs.existsSync(gitDir)) {
71
- return currentDir;
72
- }
73
- currentDir = path.dirname(currentDir);
74
- }
75
- return null;
76
- }
77
- /**
78
- * Check if git is available and current directory is in a git repository
79
- * @returns Object with isGitRepo flag and optional error message
80
- */
81
- checkGitRepository() {
82
- try {
83
- // Check if git command is available
84
- try {
85
- execSync('git --version', { stdio: 'ignore' });
86
- }
87
- catch {
88
- return {
89
- isGitRepo: false,
90
- error: 'Git is not installed or not available in PATH',
91
- };
92
- }
93
- // Find git root directory (check current and parent directories)
94
- const gitRoot = this.findGitRoot(process.cwd());
95
- if (!gitRoot) {
96
- return {
97
- isGitRepo: false,
98
- error: 'Current directory is not in a git repository. Please run this command from within a git repository.',
99
- };
100
- }
101
- return { isGitRepo: true, gitRoot };
102
- }
103
- catch (error) {
104
- return {
105
- isGitRepo: false,
106
- error: error instanceof Error
107
- ? error.message
108
- : 'Failed to check git repository',
109
- };
110
- }
111
- }
112
- /**
113
- * Get git diff for uncommitted changes
114
- * @param gitRoot - Git repository root directory
115
- * @returns Git diff output
116
- */
117
- getGitDiff(gitRoot) {
118
- try {
119
- // Get staged changes
120
- const stagedDiff = execSync('git diff --cached', {
121
- cwd: gitRoot,
122
- encoding: 'utf-8',
123
- maxBuffer: 10 * 1024 * 1024, // 10MB buffer
124
- });
125
- // Get unstaged changes
126
- const unstagedDiff = execSync('git diff', {
127
- cwd: gitRoot,
128
- encoding: 'utf-8',
129
- maxBuffer: 10 * 1024 * 1024,
130
- });
131
- // Combine both diffs
132
- let combinedDiff = '';
133
- if (stagedDiff) {
134
- combinedDiff += '# Staged Changes\n\n' + stagedDiff + '\n\n';
135
- }
136
- if (unstagedDiff) {
137
- combinedDiff += '# Unstaged Changes\n\n' + unstagedDiff;
138
- }
139
- if (!combinedDiff) {
140
- return 'No changes detected in the repository.';
141
- }
142
- return combinedDiff;
143
- }
144
- catch (error) {
145
- logger.error('Failed to get git diff:', error);
146
- throw new Error('Failed to get git changes: ' +
147
- (error instanceof Error ? error.message : 'Unknown error'));
148
- }
149
- }
150
- /**
151
- * Generate code review prompt
152
- */
153
- generateReviewPrompt(gitDiff) {
154
- return `You are a senior code reviewer. Please review the following git changes and provide feedback.
155
-
156
- **Your task:**
157
- 1. Identify potential bugs, security issues, or logic errors
158
- 2. Suggest performance optimizations
159
- 3. Point out code quality issues (readability, maintainability)
160
- 4. Check for best practices violations
161
- 5. Highlight any breaking changes or compatibility issues
162
-
163
- **Important:**
164
- - DO NOT modify the code yourself
165
- - Focus on finding issues and suggesting improvements
166
- - Ask the user if they want to fix any issues you find
167
- - Be constructive and specific in your feedback
168
- - Prioritize critical issues over minor style preferences
169
-
170
- **Git Changes:**
171
-
172
- \`\`\`diff
173
- ${gitDiff}
174
- \`\`\`
175
-
176
- Please provide your review in a clear, structured format.`;
177
- }
178
- /**
179
- * Call the advanced model with streaming (same routing as main flow)
180
- */
181
- async *callAdvancedModel(messages, abortSignal) {
182
- const config = getOpenAiConfig();
183
- if (!config.advancedModel) {
184
- throw new Error('Advanced model not configured');
185
- }
186
- // Get custom system prompt if configured
187
- const customSystemPrompt = getCustomSystemPrompt();
188
- // If custom system prompt exists, prepend it to messages
189
- let processedMessages = messages;
190
- if (customSystemPrompt) {
191
- processedMessages = [
192
- {
193
- role: 'system',
194
- content: customSystemPrompt,
195
- },
196
- ...messages,
197
- ];
198
- }
199
- // Route to appropriate streaming API based on request method
200
- switch (this.requestMethod) {
201
- case 'anthropic':
202
- yield* createStreamingAnthropicCompletion({
203
- model: this.modelName,
204
- messages: processedMessages,
205
- max_tokens: 4096,
206
- disableThinking: true, // Agents 不使用 Extended Thinking
207
- }, abortSignal);
208
- break;
209
- case 'gemini':
210
- yield* createStreamingGeminiCompletion({
211
- model: this.modelName,
212
- messages: processedMessages,
213
- }, abortSignal);
214
- break;
215
- case 'responses':
216
- yield* createStreamingResponse({
217
- model: this.modelName,
218
- messages: processedMessages,
219
- stream: true,
220
- }, abortSignal);
221
- break;
222
- case 'chat':
223
- default:
224
- yield* createStreamingChatCompletion({
225
- model: this.modelName,
226
- messages: processedMessages,
227
- stream: true,
228
- }, abortSignal);
229
- break;
230
- }
231
- }
232
- /**
233
- * Review git changes and return streaming generator
234
- * @param abortSignal - Optional abort signal
235
- * @returns Async generator for streaming response
236
- */
237
- async *reviewChanges(abortSignal) {
238
- const available = await this.isAvailable();
239
- if (!available) {
240
- throw new Error('Review agent is not available');
241
- }
242
- // Check git repository
243
- const gitCheck = this.checkGitRepository();
244
- if (!gitCheck.isGitRepo) {
245
- throw new Error(gitCheck.error || 'Not a git repository');
246
- }
247
- // Get git diff
248
- const gitDiff = this.getGitDiff(gitCheck.gitRoot);
249
- if (gitDiff === 'No changes detected in the repository.') {
250
- throw new Error('No changes detected. Please make some changes before running code review.');
251
- }
252
- // Generate review prompt
253
- const reviewPrompt = this.generateReviewPrompt(gitDiff);
254
- const messages = [
255
- {
256
- role: 'user',
257
- content: reviewPrompt,
258
- },
259
- ];
260
- // Stream the response
261
- yield* this.callAdvancedModel(messages, abortSignal);
262
- }
263
- }
264
- // Export singleton instance
265
- export const reviewAgent = new ReviewAgent();
@@ -1,57 +0,0 @@
1
- /**
2
- * Summary Agent Service
3
- *
4
- * Generates concise summaries for conversations after the first user-assistant exchange.
5
- * This service operates in the background without blocking the main conversation flow.
6
- *
7
- * Features:
8
- * - Uses basicModel for efficient, low-cost summarization
9
- * - Follows the same API routing as main flow (chat, responses, gemini, anthropic)
10
- * - Generates title (max 50 chars) and summary (max 150 chars)
11
- * - Only runs once after the first complete conversation exchange
12
- * - Silent execution with error handling to prevent main flow disruption
13
- */
14
- export declare class SummaryAgent {
15
- private modelName;
16
- private requestMethod;
17
- private initialized;
18
- /**
19
- * Initialize the summary agent with current configuration
20
- * @returns true if initialized successfully, false otherwise
21
- */
22
- private initialize;
23
- /**
24
- * Check if summary agent is available
25
- */
26
- isAvailable(): Promise<boolean>;
27
- /**
28
- * Call the model with streaming API and assemble complete response
29
- * Uses the same routing logic as main flow for consistency
30
- *
31
- * @param messages - Chat messages
32
- * @param abortSignal - Optional abort signal to cancel the request
33
- */
34
- private callModel;
35
- /**
36
- * Generate title and summary for a conversation
37
- *
38
- * @param userMessage - User's first message content
39
- * @param assistantMessage - Assistant's first response content
40
- * @param abortSignal - Optional abort signal to cancel generation
41
- * @returns Object containing title and summary, or null if generation fails
42
- */
43
- generateSummary(userMessage: string, assistantMessage: string, abortSignal?: AbortSignal): Promise<{
44
- title: string;
45
- summary: string;
46
- } | null>;
47
- /**
48
- * Generate fallback summary when AI generation fails
49
- * Simply truncates the user message for title and summary
50
- */
51
- private generateFallbackSummary;
52
- /**
53
- * Truncate string to specified length, adding ellipsis if truncated
54
- */
55
- private truncateString;
56
- }
57
- export declare const summaryAgent: SummaryAgent;