snow-ai 0.4.16 → 0.4.18

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 (352) hide show
  1. package/bundle/cli.mjs +477445 -0
  2. package/bundle/sql-wasm.wasm +0 -0
  3. package/bundle/tiktoken_bg.wasm +0 -0
  4. package/package.json +31 -26
  5. package/dist/agents/codebaseIndexAgent.d.ts +0 -102
  6. package/dist/agents/codebaseIndexAgent.js +0 -641
  7. package/dist/agents/codebaseReviewAgent.d.ts +0 -61
  8. package/dist/agents/codebaseReviewAgent.js +0 -301
  9. package/dist/agents/compactAgent.d.ts +0 -55
  10. package/dist/agents/compactAgent.js +0 -306
  11. package/dist/agents/promptOptimizeAgent.d.ts +0 -54
  12. package/dist/agents/promptOptimizeAgent.js +0 -268
  13. package/dist/agents/reviewAgent.d.ts +0 -50
  14. package/dist/agents/reviewAgent.js +0 -265
  15. package/dist/agents/summaryAgent.d.ts +0 -57
  16. package/dist/agents/summaryAgent.js +0 -260
  17. package/dist/api/anthropic.d.ts +0 -44
  18. package/dist/api/anthropic.js +0 -598
  19. package/dist/api/chat.d.ts +0 -73
  20. package/dist/api/chat.js +0 -386
  21. package/dist/api/embedding.d.ts +0 -34
  22. package/dist/api/embedding.js +0 -80
  23. package/dist/api/gemini.d.ts +0 -31
  24. package/dist/api/gemini.js +0 -445
  25. package/dist/api/models.d.ts +0 -15
  26. package/dist/api/models.js +0 -139
  27. package/dist/api/responses.d.ts +0 -38
  28. package/dist/api/responses.js +0 -515
  29. package/dist/api/systemPrompt.d.ts +0 -4
  30. package/dist/api/systemPrompt.js +0 -408
  31. package/dist/api/types.d.ts +0 -53
  32. package/dist/api/types.js +0 -4
  33. package/dist/app.d.ts +0 -8
  34. package/dist/app.js +0 -112
  35. package/dist/cli.d.ts +0 -2
  36. package/dist/cli.js +0 -199
  37. package/dist/hooks/useAgentPicker.d.ts +0 -14
  38. package/dist/hooks/useAgentPicker.js +0 -119
  39. package/dist/hooks/useClipboard.d.ts +0 -4
  40. package/dist/hooks/useClipboard.js +0 -175
  41. package/dist/hooks/useCommandHandler.d.ts +0 -35
  42. package/dist/hooks/useCommandHandler.js +0 -346
  43. package/dist/hooks/useCommandPanel.d.ts +0 -17
  44. package/dist/hooks/useCommandPanel.js +0 -114
  45. package/dist/hooks/useConversation.d.ts +0 -49
  46. package/dist/hooks/useConversation.js +0 -1052
  47. package/dist/hooks/useFilePicker.d.ts +0 -18
  48. package/dist/hooks/useFilePicker.js +0 -224
  49. package/dist/hooks/useGlobalExit.d.ts +0 -5
  50. package/dist/hooks/useGlobalExit.js +0 -34
  51. package/dist/hooks/useGlobalNavigation.d.ts +0 -6
  52. package/dist/hooks/useGlobalNavigation.js +0 -17
  53. package/dist/hooks/useHistoryNavigation.d.ts +0 -35
  54. package/dist/hooks/useHistoryNavigation.js +0 -133
  55. package/dist/hooks/useInputBuffer.d.ts +0 -6
  56. package/dist/hooks/useInputBuffer.js +0 -45
  57. package/dist/hooks/useKeyboardInput.d.ts +0 -80
  58. package/dist/hooks/useKeyboardInput.js +0 -608
  59. package/dist/hooks/useSessionManagement.d.ts +0 -10
  60. package/dist/hooks/useSessionManagement.js +0 -43
  61. package/dist/hooks/useSessionSave.d.ts +0 -8
  62. package/dist/hooks/useSessionSave.js +0 -63
  63. package/dist/hooks/useSnapshotState.d.ts +0 -26
  64. package/dist/hooks/useSnapshotState.js +0 -28
  65. package/dist/hooks/useStreamingState.d.ts +0 -33
  66. package/dist/hooks/useStreamingState.js +0 -105
  67. package/dist/hooks/useTerminalFocus.d.ts +0 -28
  68. package/dist/hooks/useTerminalFocus.js +0 -87
  69. package/dist/hooks/useTerminalSize.d.ts +0 -4
  70. package/dist/hooks/useTerminalSize.js +0 -20
  71. package/dist/hooks/useTodoPicker.d.ts +0 -16
  72. package/dist/hooks/useTodoPicker.js +0 -94
  73. package/dist/hooks/useToolConfirmation.d.ts +0 -19
  74. package/dist/hooks/useToolConfirmation.js +0 -61
  75. package/dist/hooks/useVSCodeState.d.ts +0 -8
  76. package/dist/hooks/useVSCodeState.js +0 -81
  77. package/dist/i18n/I18nContext.d.ts +0 -14
  78. package/dist/i18n/I18nContext.js +0 -24
  79. package/dist/i18n/index.d.ts +0 -3
  80. package/dist/i18n/index.js +0 -2
  81. package/dist/i18n/lang/en.d.ts +0 -2
  82. package/dist/i18n/lang/en.js +0 -502
  83. package/dist/i18n/lang/es.d.ts +0 -2
  84. package/dist/i18n/lang/es.js +0 -502
  85. package/dist/i18n/lang/ja.d.ts +0 -2
  86. package/dist/i18n/lang/ja.js +0 -502
  87. package/dist/i18n/lang/ko.d.ts +0 -2
  88. package/dist/i18n/lang/ko.js +0 -502
  89. package/dist/i18n/lang/zh-TW.d.ts +0 -2
  90. package/dist/i18n/lang/zh-TW.js +0 -502
  91. package/dist/i18n/lang/zh.d.ts +0 -2
  92. package/dist/i18n/lang/zh.js +0 -502
  93. package/dist/i18n/translations.d.ts +0 -2
  94. package/dist/i18n/translations.js +0 -14
  95. package/dist/i18n/types.d.ts +0 -478
  96. package/dist/i18n/types.js +0 -1
  97. package/dist/mcp/aceCodeSearch.d.ts +0 -247
  98. package/dist/mcp/aceCodeSearch.js +0 -1058
  99. package/dist/mcp/bash.d.ts +0 -50
  100. package/dist/mcp/bash.js +0 -153
  101. package/dist/mcp/codebaseSearch.d.ts +0 -44
  102. package/dist/mcp/codebaseSearch.js +0 -275
  103. package/dist/mcp/filesystem.d.ts +0 -392
  104. package/dist/mcp/filesystem.js +0 -1445
  105. package/dist/mcp/ideDiagnostics.d.ts +0 -36
  106. package/dist/mcp/ideDiagnostics.js +0 -90
  107. package/dist/mcp/notebook.d.ts +0 -10
  108. package/dist/mcp/notebook.js +0 -367
  109. package/dist/mcp/subagent.d.ts +0 -37
  110. package/dist/mcp/subagent.js +0 -113
  111. package/dist/mcp/todo.d.ts +0 -46
  112. package/dist/mcp/todo.js +0 -511
  113. package/dist/mcp/types/aceCodeSearch.types.d.ts +0 -92
  114. package/dist/mcp/types/aceCodeSearch.types.js +0 -4
  115. package/dist/mcp/types/bash.types.d.ts +0 -13
  116. package/dist/mcp/types/bash.types.js +0 -4
  117. package/dist/mcp/types/filesystem.types.d.ts +0 -210
  118. package/dist/mcp/types/filesystem.types.js +0 -27
  119. package/dist/mcp/types/todo.types.d.ts +0 -27
  120. package/dist/mcp/types/todo.types.js +0 -4
  121. package/dist/mcp/types/websearch.types.d.ts +0 -30
  122. package/dist/mcp/types/websearch.types.js +0 -4
  123. package/dist/mcp/utils/aceCodeSearch/filesystem.utils.d.ts +0 -34
  124. package/dist/mcp/utils/aceCodeSearch/filesystem.utils.js +0 -146
  125. package/dist/mcp/utils/aceCodeSearch/language.utils.d.ts +0 -14
  126. package/dist/mcp/utils/aceCodeSearch/language.utils.js +0 -418
  127. package/dist/mcp/utils/aceCodeSearch/search.utils.d.ts +0 -31
  128. package/dist/mcp/utils/aceCodeSearch/search.utils.js +0 -136
  129. package/dist/mcp/utils/aceCodeSearch/symbol.utils.d.ts +0 -20
  130. package/dist/mcp/utils/aceCodeSearch/symbol.utils.js +0 -141
  131. package/dist/mcp/utils/bash/security.utils.d.ts +0 -20
  132. package/dist/mcp/utils/bash/security.utils.js +0 -34
  133. package/dist/mcp/utils/filesystem/batch-operations.utils.d.ts +0 -39
  134. package/dist/mcp/utils/filesystem/batch-operations.utils.js +0 -182
  135. package/dist/mcp/utils/filesystem/code-analysis.utils.d.ts +0 -18
  136. package/dist/mcp/utils/filesystem/code-analysis.utils.js +0 -165
  137. package/dist/mcp/utils/filesystem/match-finder.utils.d.ts +0 -16
  138. package/dist/mcp/utils/filesystem/match-finder.utils.js +0 -85
  139. package/dist/mcp/utils/filesystem/office-parser.utils.d.ts +0 -43
  140. package/dist/mcp/utils/filesystem/office-parser.utils.js +0 -163
  141. package/dist/mcp/utils/filesystem/path-fixer.utils.d.ts +0 -7
  142. package/dist/mcp/utils/filesystem/path-fixer.utils.js +0 -60
  143. package/dist/mcp/utils/filesystem/similarity.utils.d.ts +0 -22
  144. package/dist/mcp/utils/filesystem/similarity.utils.js +0 -75
  145. package/dist/mcp/utils/todo/date.utils.d.ts +0 -9
  146. package/dist/mcp/utils/todo/date.utils.js +0 -14
  147. package/dist/mcp/utils/websearch/browser.utils.d.ts +0 -8
  148. package/dist/mcp/utils/websearch/browser.utils.js +0 -58
  149. package/dist/mcp/utils/websearch/text.utils.d.ts +0 -16
  150. package/dist/mcp/utils/websearch/text.utils.js +0 -39
  151. package/dist/mcp/websearch.d.ts +0 -88
  152. package/dist/mcp/websearch.js +0 -375
  153. package/dist/test/logger-test.d.ts +0 -1
  154. package/dist/test/logger-test.js +0 -7
  155. package/dist/types/index.d.ts +0 -15
  156. package/dist/types/index.js +0 -1
  157. package/dist/ui/components/AgentPickerPanel.d.ts +0 -10
  158. package/dist/ui/components/AgentPickerPanel.js +0 -74
  159. package/dist/ui/components/ChatInput.d.ts +0 -46
  160. package/dist/ui/components/ChatInput.js +0 -384
  161. package/dist/ui/components/CommandPanel.d.ts +0 -15
  162. package/dist/ui/components/CommandPanel.js +0 -80
  163. package/dist/ui/components/DiffViewer.d.ts +0 -11
  164. package/dist/ui/components/DiffViewer.js +0 -178
  165. package/dist/ui/components/FileList.d.ts +0 -15
  166. package/dist/ui/components/FileList.js +0 -360
  167. package/dist/ui/components/FileRollbackConfirmation.d.ts +0 -8
  168. package/dist/ui/components/FileRollbackConfirmation.js +0 -108
  169. package/dist/ui/components/HelpPanel.d.ts +0 -2
  170. package/dist/ui/components/HelpPanel.js +0 -67
  171. package/dist/ui/components/MCPInfoPanel.d.ts +0 -2
  172. package/dist/ui/components/MCPInfoPanel.js +0 -108
  173. package/dist/ui/components/MCPInfoScreen.d.ts +0 -7
  174. package/dist/ui/components/MCPInfoScreen.js +0 -115
  175. package/dist/ui/components/MarkdownRenderer.d.ts +0 -6
  176. package/dist/ui/components/MarkdownRenderer.js +0 -70
  177. package/dist/ui/components/Menu.d.ts +0 -17
  178. package/dist/ui/components/Menu.js +0 -88
  179. package/dist/ui/components/MessageList.d.ts +0 -56
  180. package/dist/ui/components/MessageList.js +0 -97
  181. package/dist/ui/components/PendingMessages.d.ts +0 -13
  182. package/dist/ui/components/PendingMessages.js +0 -29
  183. package/dist/ui/components/PendingToolCalls.d.ts +0 -11
  184. package/dist/ui/components/PendingToolCalls.js +0 -35
  185. package/dist/ui/components/ScrollableSelectInput.d.ts +0 -29
  186. package/dist/ui/components/ScrollableSelectInput.js +0 -157
  187. package/dist/ui/components/SessionListPanel.d.ts +0 -7
  188. package/dist/ui/components/SessionListPanel.js +0 -175
  189. package/dist/ui/components/SessionListScreen.d.ts +0 -7
  190. package/dist/ui/components/SessionListScreen.js +0 -217
  191. package/dist/ui/components/SessionListScreenWrapper.d.ts +0 -7
  192. package/dist/ui/components/SessionListScreenWrapper.js +0 -14
  193. package/dist/ui/components/ShimmerText.d.ts +0 -9
  194. package/dist/ui/components/ShimmerText.js +0 -30
  195. package/dist/ui/components/TodoPickerPanel.d.ts +0 -14
  196. package/dist/ui/components/TodoPickerPanel.js +0 -119
  197. package/dist/ui/components/TodoTree.d.ts +0 -15
  198. package/dist/ui/components/TodoTree.js +0 -60
  199. package/dist/ui/components/ToolConfirmation.d.ts +0 -21
  200. package/dist/ui/components/ToolConfirmation.js +0 -204
  201. package/dist/ui/components/ToolResultPreview.d.ts +0 -13
  202. package/dist/ui/components/ToolResultPreview.js +0 -337
  203. package/dist/ui/components/UsagePanel.d.ts +0 -2
  204. package/dist/ui/components/UsagePanel.js +0 -394
  205. package/dist/ui/contexts/ThemeContext.d.ts +0 -13
  206. package/dist/ui/contexts/ThemeContext.js +0 -28
  207. package/dist/ui/pages/ChatScreen.d.ts +0 -6
  208. package/dist/ui/pages/ChatScreen.js +0 -1519
  209. package/dist/ui/pages/CodeBaseConfigScreen.d.ts +0 -8
  210. package/dist/ui/pages/CodeBaseConfigScreen.js +0 -350
  211. package/dist/ui/pages/ConfigScreen.d.ts +0 -8
  212. package/dist/ui/pages/ConfigScreen.js +0 -1101
  213. package/dist/ui/pages/CustomHeadersScreen.d.ts +0 -6
  214. package/dist/ui/pages/CustomHeadersScreen.js +0 -502
  215. package/dist/ui/pages/HeadlessModeScreen.d.ts +0 -7
  216. package/dist/ui/pages/HeadlessModeScreen.js +0 -381
  217. package/dist/ui/pages/LanguageSettingsScreen.d.ts +0 -7
  218. package/dist/ui/pages/LanguageSettingsScreen.js +0 -91
  219. package/dist/ui/pages/MCPConfigScreen.d.ts +0 -6
  220. package/dist/ui/pages/MCPConfigScreen.js +0 -55
  221. package/dist/ui/pages/ProxyConfigScreen.d.ts +0 -8
  222. package/dist/ui/pages/ProxyConfigScreen.js +0 -149
  223. package/dist/ui/pages/SensitiveCommandConfigScreen.d.ts +0 -7
  224. package/dist/ui/pages/SensitiveCommandConfigScreen.js +0 -271
  225. package/dist/ui/pages/SubAgentConfigScreen.d.ts +0 -9
  226. package/dist/ui/pages/SubAgentConfigScreen.js +0 -435
  227. package/dist/ui/pages/SubAgentListScreen.d.ts +0 -9
  228. package/dist/ui/pages/SubAgentListScreen.js +0 -131
  229. package/dist/ui/pages/SystemPromptConfigScreen.d.ts +0 -6
  230. package/dist/ui/pages/SystemPromptConfigScreen.js +0 -326
  231. package/dist/ui/pages/ThemeSettingsScreen.d.ts +0 -7
  232. package/dist/ui/pages/ThemeSettingsScreen.js +0 -106
  233. package/dist/ui/pages/WelcomeScreen.d.ts +0 -7
  234. package/dist/ui/pages/WelcomeScreen.js +0 -217
  235. package/dist/ui/themes/index.d.ts +0 -23
  236. package/dist/ui/themes/index.js +0 -140
  237. package/dist/utils/apiConfig.d.ts +0 -126
  238. package/dist/utils/apiConfig.js +0 -423
  239. package/dist/utils/autoCompress.d.ts +0 -15
  240. package/dist/utils/autoCompress.js +0 -24
  241. package/dist/utils/chatExporter.d.ts +0 -9
  242. package/dist/utils/chatExporter.js +0 -118
  243. package/dist/utils/checkpointManager.d.ts +0 -74
  244. package/dist/utils/checkpointManager.js +0 -181
  245. package/dist/utils/codebaseConfig.d.ts +0 -16
  246. package/dist/utils/codebaseConfig.js +0 -67
  247. package/dist/utils/codebaseDatabase.d.ts +0 -102
  248. package/dist/utils/codebaseDatabase.js +0 -333
  249. package/dist/utils/codebaseSearchEvents.d.ts +0 -16
  250. package/dist/utils/codebaseSearchEvents.js +0 -13
  251. package/dist/utils/commandExecutor.d.ts +0 -13
  252. package/dist/utils/commandExecutor.js +0 -26
  253. package/dist/utils/commands/agent.d.ts +0 -2
  254. package/dist/utils/commands/agent.js +0 -12
  255. package/dist/utils/commands/clear.d.ts +0 -2
  256. package/dist/utils/commands/clear.js +0 -12
  257. package/dist/utils/commands/compact.d.ts +0 -2
  258. package/dist/utils/commands/compact.js +0 -12
  259. package/dist/utils/commands/export.d.ts +0 -2
  260. package/dist/utils/commands/export.js +0 -12
  261. package/dist/utils/commands/help.d.ts +0 -2
  262. package/dist/utils/commands/help.js +0 -11
  263. package/dist/utils/commands/home.d.ts +0 -2
  264. package/dist/utils/commands/home.js +0 -34
  265. package/dist/utils/commands/ide.d.ts +0 -2
  266. package/dist/utils/commands/ide.js +0 -32
  267. package/dist/utils/commands/init.d.ts +0 -2
  268. package/dist/utils/commands/init.js +0 -93
  269. package/dist/utils/commands/mcp.d.ts +0 -2
  270. package/dist/utils/commands/mcp.js +0 -12
  271. package/dist/utils/commands/resume.d.ts +0 -2
  272. package/dist/utils/commands/resume.js +0 -12
  273. package/dist/utils/commands/review.d.ts +0 -2
  274. package/dist/utils/commands/review.js +0 -81
  275. package/dist/utils/commands/role.d.ts +0 -2
  276. package/dist/utils/commands/role.js +0 -37
  277. package/dist/utils/commands/todoPicker.d.ts +0 -2
  278. package/dist/utils/commands/todoPicker.js +0 -12
  279. package/dist/utils/commands/usage.d.ts +0 -2
  280. package/dist/utils/commands/usage.js +0 -12
  281. package/dist/utils/commands/yolo.d.ts +0 -2
  282. package/dist/utils/commands/yolo.js +0 -12
  283. package/dist/utils/configManager.d.ts +0 -45
  284. package/dist/utils/configManager.js +0 -303
  285. package/dist/utils/contextCompressor.d.ts +0 -16
  286. package/dist/utils/contextCompressor.js +0 -334
  287. package/dist/utils/devMode.d.ts +0 -13
  288. package/dist/utils/devMode.js +0 -54
  289. package/dist/utils/escapeHandler.d.ts +0 -79
  290. package/dist/utils/escapeHandler.js +0 -153
  291. package/dist/utils/fileDialog.d.ts +0 -9
  292. package/dist/utils/fileDialog.js +0 -74
  293. package/dist/utils/fileUtils.d.ts +0 -40
  294. package/dist/utils/fileUtils.js +0 -185
  295. package/dist/utils/historyManager.d.ts +0 -45
  296. package/dist/utils/historyManager.js +0 -159
  297. package/dist/utils/incrementalSnapshot.d.ts +0 -109
  298. package/dist/utils/incrementalSnapshot.js +0 -383
  299. package/dist/utils/index.d.ts +0 -11
  300. package/dist/utils/index.js +0 -18
  301. package/dist/utils/languageConfig.d.ts +0 -21
  302. package/dist/utils/languageConfig.js +0 -61
  303. package/dist/utils/logger.d.ts +0 -37
  304. package/dist/utils/logger.js +0 -122
  305. package/dist/utils/mcpToolsManager.d.ts +0 -52
  306. package/dist/utils/mcpToolsManager.js +0 -878
  307. package/dist/utils/messageFormatter.d.ts +0 -12
  308. package/dist/utils/messageFormatter.js +0 -115
  309. package/dist/utils/notebookManager.d.ts +0 -59
  310. package/dist/utils/notebookManager.js +0 -213
  311. package/dist/utils/patch-highlight.d.ts +0 -5
  312. package/dist/utils/patch-highlight.js +0 -23
  313. package/dist/utils/processManager.d.ts +0 -27
  314. package/dist/utils/processManager.js +0 -75
  315. package/dist/utils/proxyUtils.d.ts +0 -15
  316. package/dist/utils/proxyUtils.js +0 -50
  317. package/dist/utils/resourceMonitor.d.ts +0 -65
  318. package/dist/utils/resourceMonitor.js +0 -175
  319. package/dist/utils/retryUtils.d.ts +0 -49
  320. package/dist/utils/retryUtils.js +0 -303
  321. package/dist/utils/sensitiveCommandManager.d.ts +0 -53
  322. package/dist/utils/sensitiveCommandManager.js +0 -308
  323. package/dist/utils/sessionConverter.d.ts +0 -7
  324. package/dist/utils/sessionConverter.js +0 -306
  325. package/dist/utils/sessionManager.d.ts +0 -53
  326. package/dist/utils/sessionManager.js +0 -371
  327. package/dist/utils/subAgentConfig.d.ts +0 -50
  328. package/dist/utils/subAgentConfig.js +0 -221
  329. package/dist/utils/subAgentExecutor.d.ts +0 -40
  330. package/dist/utils/subAgentExecutor.js +0 -434
  331. package/dist/utils/terminal.d.ts +0 -5
  332. package/dist/utils/terminal.js +0 -13
  333. package/dist/utils/textBuffer.d.ts +0 -99
  334. package/dist/utils/textBuffer.js +0 -547
  335. package/dist/utils/textUtils.d.ts +0 -37
  336. package/dist/utils/textUtils.js +0 -102
  337. package/dist/utils/themeConfig.d.ts +0 -21
  338. package/dist/utils/themeConfig.js +0 -61
  339. package/dist/utils/todoPreprocessor.d.ts +0 -5
  340. package/dist/utils/todoPreprocessor.js +0 -18
  341. package/dist/utils/todoScanner.d.ts +0 -8
  342. package/dist/utils/todoScanner.js +0 -148
  343. package/dist/utils/toolDisplayConfig.d.ts +0 -16
  344. package/dist/utils/toolDisplayConfig.js +0 -47
  345. package/dist/utils/toolExecutor.d.ts +0 -37
  346. package/dist/utils/toolExecutor.js +0 -224
  347. package/dist/utils/usageLogger.d.ts +0 -11
  348. package/dist/utils/usageLogger.js +0 -114
  349. package/dist/utils/vscodeConnection.d.ts +0 -76
  350. package/dist/utils/vscodeConnection.js +0 -430
  351. package/dist/utils/workspaceSnapshot.d.ts +0 -63
  352. package/dist/utils/workspaceSnapshot.js +0 -300
@@ -1,434 +0,0 @@
1
- import { createStreamingAnthropicCompletion } from '../api/anthropic.js';
2
- import { createStreamingResponse } from '../api/responses.js';
3
- import { createStreamingGeminiCompletion } from '../api/gemini.js';
4
- import { createStreamingChatCompletion } from '../api/chat.js';
5
- import { getSubAgent } from './subAgentConfig.js';
6
- import { collectAllMCPTools, executeMCPTool } from './mcpToolsManager.js';
7
- import { getOpenAiConfig } from './apiConfig.js';
8
- import { sessionManager } from './sessionManager.js';
9
- /**
10
- * Execute a sub-agent as a tool
11
- * @param agentId - The ID of the sub-agent to execute
12
- * @param prompt - The task prompt to send to the sub-agent
13
- * @param onMessage - Callback for streaming sub-agent messages (for UI display)
14
- * @param abortSignal - Optional abort signal
15
- * @param requestToolConfirmation - Callback to request tool confirmation from user
16
- * @param isToolAutoApproved - Function to check if a tool is auto-approved
17
- * @param yoloMode - Whether YOLO mode is enabled (auto-approve all tools)
18
- * @returns The final result from the sub-agent
19
- */
20
- export async function executeSubAgent(agentId, prompt, onMessage, abortSignal, requestToolConfirmation, isToolAutoApproved, yoloMode, addToAlwaysApproved) {
21
- try {
22
- // Handle built-in agents (hardcoded)
23
- let agent;
24
- if (agentId === 'agent_explore') {
25
- agent = {
26
- id: 'agent_explore',
27
- name: 'Explore Agent',
28
- description: 'Specialized for quickly exploring and understanding codebases. Excels at searching code, finding definitions, analyzing code structure and semantic understanding.',
29
- role: 'You are a specialized code exploration agent. Your task is to help users understand codebase structure, locate specific code, and analyze dependencies. Use search and analysis tools to explore code, but do not modify any files or execute commands. Focus on code discovery and understanding.\n\nIMPORTANT: You have NO access to the main conversation history. The prompt provided to you contains ALL the context from the main session. Read it carefully - all file locations, business requirements, constraints, and discovered information are included in the prompt. Do not assume any additional context.',
30
- tools: [
31
- // Filesystem read-only tools
32
- 'filesystem-read',
33
- // ACE code search tools (core tools)
34
- 'ace-find_definition',
35
- 'ace-find_references',
36
- 'ace-semantic_search',
37
- 'ace-text_search',
38
- 'ace-file_outline',
39
- // Codebase search tools
40
- 'codebase-search',
41
- // Web search for documentation
42
- 'websearch-search',
43
- 'websearch-fetch',
44
- ],
45
- };
46
- }
47
- else if (agentId === 'agent_plan') {
48
- agent = {
49
- id: 'agent_plan',
50
- name: 'Plan Agent',
51
- description: 'Specialized for planning complex tasks. Excels at analyzing requirements, exploring existing code, and creating detailed implementation plans.',
52
- role: 'You are a specialized task planning agent. Your task is to analyze user requirements, explore existing codebase, identify relevant files and dependencies, and then create detailed implementation plans. Use search and analysis tools to gather information, check diagnostics to understand current state, but do not execute actual modifications. Output clear step-by-step plans including files to modify, suggested implementation approaches, and important considerations.\n\nIMPORTANT: You have NO access to the main conversation history. The prompt provided to you contains ALL the context from the main session. Read it carefully - all requirements, architecture understanding, file locations, constraints, and user preferences are included in the prompt. Do not assume any additional context.',
53
- tools: [
54
- // Filesystem read-only tools
55
- 'filesystem-read',
56
- // ACE code search tools (planning requires code understanding)
57
- 'ace-find_definition',
58
- 'ace-find_references',
59
- 'ace-semantic_search',
60
- 'ace-text_search',
61
- 'ace-file_outline',
62
- // IDE diagnostics (understand current issues)
63
- 'ide-get_diagnostics',
64
- // Codebase search
65
- 'codebase-search',
66
- // Web search for reference
67
- 'websearch-search',
68
- 'websearch-fetch',
69
- ],
70
- };
71
- }
72
- else if (agentId === 'agent_general') {
73
- agent = {
74
- id: 'agent_general',
75
- name: 'General Purpose Agent',
76
- description: 'General-purpose multi-step task execution agent. Has complete tool access for code search, file modification, command execution, and various operations.',
77
- role: 'You are a general-purpose task execution agent. You can perform various complex multi-step tasks, including searching code, modifying files, executing commands, etc. When given a task, systematically break it down and execute. You have access to all tools and should select appropriate tools as needed to complete tasks efficiently.\n\nIMPORTANT: You have NO access to the main conversation history. The prompt provided to you contains ALL the context from the main session. Read it carefully - all task requirements, file paths, code patterns, dependencies, business logic, constraints, and testing requirements are included in the prompt. Do not assume any additional context.',
78
- tools: [
79
- // Filesystem tools (complete access)
80
- 'filesystem-read',
81
- 'filesystem-create',
82
- 'filesystem-edit',
83
- 'filesystem-edit_search',
84
- // Terminal tools
85
- 'terminal-execute',
86
- // ACE code search tools
87
- 'ace-find_definition',
88
- 'ace-find_references',
89
- 'ace-semantic_search',
90
- 'ace-text_search',
91
- 'ace-file_outline',
92
- // Web search tools
93
- 'websearch-search',
94
- 'websearch-fetch',
95
- // IDE diagnostics tools
96
- 'ide-get_diagnostics',
97
- // Codebase search tools
98
- 'codebase-search',
99
- ],
100
- };
101
- }
102
- else {
103
- // Get user-configured sub-agent
104
- agent = getSubAgent(agentId);
105
- if (!agent) {
106
- return {
107
- success: false,
108
- result: '',
109
- error: `Sub-agent with ID "${agentId}" not found`,
110
- };
111
- }
112
- }
113
- // Get all available tools
114
- const allTools = await collectAllMCPTools();
115
- // Filter tools based on sub-agent's allowed tools
116
- const allowedTools = allTools.filter((tool) => {
117
- const toolName = tool.function.name;
118
- return agent.tools.some((allowedTool) => {
119
- // Normalize both tool names: replace underscores with hyphens for comparison
120
- const normalizedToolName = toolName.replace(/_/g, '-');
121
- const normalizedAllowedTool = allowedTool.replace(/_/g, '-');
122
- // Support both exact match and prefix match (e.g., "filesystem" matches "filesystem-read")
123
- return (normalizedToolName === normalizedAllowedTool ||
124
- normalizedToolName.startsWith(`${normalizedAllowedTool}-`));
125
- });
126
- });
127
- if (allowedTools.length === 0) {
128
- return {
129
- success: false,
130
- result: '',
131
- error: `Sub-agent "${agent.name}" has no valid tools configured`,
132
- };
133
- }
134
- // Build conversation history for sub-agent
135
- // Append role to prompt if configured
136
- let finalPrompt = prompt;
137
- if (agent.role) {
138
- finalPrompt = `${prompt}\n\n${agent.role}`;
139
- }
140
- const messages = [
141
- {
142
- role: 'user',
143
- content: finalPrompt,
144
- },
145
- ];
146
- // Stream sub-agent execution
147
- let finalResponse = '';
148
- let hasError = false;
149
- let errorMessage = '';
150
- let totalUsage;
151
- // Local session-approved tools for this sub-agent execution
152
- // This ensures tools approved during execution are immediately recognized
153
- const sessionApprovedTools = new Set();
154
- // eslint-disable-next-line no-constant-condition
155
- while (true) {
156
- // Check abort signal before streaming
157
- if (abortSignal?.aborted) {
158
- // Send done message to mark completion (like normal tool abort)
159
- if (onMessage) {
160
- onMessage({
161
- type: 'sub_agent_message',
162
- agentId: agent.id,
163
- agentName: agent.name,
164
- message: {
165
- type: 'done',
166
- },
167
- });
168
- }
169
- return {
170
- success: false,
171
- result: finalResponse,
172
- error: 'Sub-agent execution aborted',
173
- };
174
- }
175
- // Get API configuration
176
- const config = getOpenAiConfig();
177
- const currentSession = sessionManager.getCurrentSession();
178
- const model = config.advancedModel || 'gpt-5';
179
- // Call API with sub-agent's tools - choose API based on config
180
- const stream = config.requestMethod === 'anthropic'
181
- ? createStreamingAnthropicCompletion({
182
- model,
183
- messages,
184
- temperature: 0,
185
- max_tokens: config.maxTokens || 4096,
186
- tools: allowedTools,
187
- sessionId: currentSession?.id,
188
- disableThinking: true, // Sub-agents 不使用 Extended Thinking
189
- }, abortSignal)
190
- : config.requestMethod === 'gemini'
191
- ? createStreamingGeminiCompletion({
192
- model,
193
- messages,
194
- temperature: 0,
195
- tools: allowedTools,
196
- }, abortSignal)
197
- : config.requestMethod === 'responses'
198
- ? createStreamingResponse({
199
- model,
200
- messages,
201
- temperature: 0,
202
- tools: allowedTools,
203
- prompt_cache_key: currentSession?.id,
204
- }, abortSignal)
205
- : createStreamingChatCompletion({
206
- model,
207
- messages,
208
- temperature: 0,
209
- tools: allowedTools,
210
- }, abortSignal);
211
- let currentContent = '';
212
- let toolCalls = [];
213
- for await (const event of stream) {
214
- // Forward message to UI (but don't save to main conversation)
215
- if (onMessage) {
216
- onMessage({
217
- type: 'sub_agent_message',
218
- agentId: agent.id,
219
- agentName: agent.name,
220
- message: event,
221
- });
222
- }
223
- // Capture usage from stream events
224
- if (event.type === 'usage' && event.usage) {
225
- const eventUsage = event.usage;
226
- if (!totalUsage) {
227
- totalUsage = {
228
- inputTokens: eventUsage.prompt_tokens || 0,
229
- outputTokens: eventUsage.completion_tokens || 0,
230
- cacheCreationInputTokens: eventUsage.cache_creation_input_tokens,
231
- cacheReadInputTokens: eventUsage.cache_read_input_tokens,
232
- };
233
- }
234
- else {
235
- // Accumulate usage if there are multiple rounds
236
- totalUsage.inputTokens += eventUsage.prompt_tokens || 0;
237
- totalUsage.outputTokens += eventUsage.completion_tokens || 0;
238
- if (eventUsage.cache_creation_input_tokens) {
239
- totalUsage.cacheCreationInputTokens =
240
- (totalUsage.cacheCreationInputTokens || 0) +
241
- eventUsage.cache_creation_input_tokens;
242
- }
243
- if (eventUsage.cache_read_input_tokens) {
244
- totalUsage.cacheReadInputTokens =
245
- (totalUsage.cacheReadInputTokens || 0) +
246
- eventUsage.cache_read_input_tokens;
247
- }
248
- }
249
- }
250
- if (event.type === 'content' && event.content) {
251
- currentContent += event.content;
252
- }
253
- else if (event.type === 'tool_calls' && event.tool_calls) {
254
- toolCalls = event.tool_calls;
255
- }
256
- }
257
- if (hasError) {
258
- return {
259
- success: false,
260
- result: finalResponse,
261
- error: errorMessage,
262
- };
263
- }
264
- // Add assistant response to conversation
265
- if (currentContent || toolCalls.length > 0) {
266
- const assistantMessage = {
267
- role: 'assistant',
268
- content: currentContent || '',
269
- };
270
- if (toolCalls.length > 0) {
271
- assistantMessage.tool_calls = toolCalls;
272
- }
273
- messages.push(assistantMessage);
274
- finalResponse = currentContent;
275
- }
276
- // If no tool calls, we're done
277
- if (toolCalls.length === 0) {
278
- break;
279
- }
280
- // Check tool approvals before execution
281
- const approvedToolCalls = [];
282
- const rejectedToolCalls = [];
283
- for (const toolCall of toolCalls) {
284
- const toolName = toolCall.function.name;
285
- let args;
286
- try {
287
- args = JSON.parse(toolCall.function.arguments);
288
- }
289
- catch (e) {
290
- args = {};
291
- }
292
- // Check if tool needs confirmation
293
- let needsConfirmation = true;
294
- // In YOLO mode, auto-approve all tools
295
- if (yoloMode) {
296
- needsConfirmation = false;
297
- }
298
- // Check if tool is in auto-approved list (global or session)
299
- else if (sessionApprovedTools.has(toolName) ||
300
- (isToolAutoApproved && isToolAutoApproved(toolName))) {
301
- needsConfirmation = false;
302
- }
303
- if (needsConfirmation && requestToolConfirmation) {
304
- // Request confirmation from user
305
- const confirmation = await requestToolConfirmation(toolName, args);
306
- if (confirmation === 'reject' ||
307
- (typeof confirmation === 'object' &&
308
- confirmation.type === 'reject_with_reply')) {
309
- rejectedToolCalls.push(toolCall);
310
- continue;
311
- }
312
- // If approve_always, add to both global and session lists
313
- if (confirmation === 'approve_always') {
314
- // Add to local session set (immediate effect)
315
- sessionApprovedTools.add(toolName);
316
- // Add to global list (persistent across sub-agent calls)
317
- if (addToAlwaysApproved) {
318
- addToAlwaysApproved(toolName);
319
- }
320
- }
321
- }
322
- approvedToolCalls.push(toolCall);
323
- }
324
- // Handle rejected tools
325
- if (rejectedToolCalls.length > 0) {
326
- // Send done message to mark completion when tools are rejected
327
- if (onMessage) {
328
- onMessage({
329
- type: 'sub_agent_message',
330
- agentId: agent.id,
331
- agentName: agent.name,
332
- message: {
333
- type: 'done',
334
- },
335
- });
336
- }
337
- return {
338
- success: false,
339
- result: finalResponse,
340
- error: `User rejected tool execution: ${rejectedToolCalls
341
- .map(tc => tc.function.name)
342
- .join(', ')}`,
343
- };
344
- }
345
- // Execute approved tool calls
346
- const toolResults = [];
347
- for (const toolCall of approvedToolCalls) {
348
- // Check abort signal before executing each tool
349
- if (abortSignal?.aborted) {
350
- // Send done message to mark completion
351
- if (onMessage) {
352
- onMessage({
353
- type: 'sub_agent_message',
354
- agentId: agent.id,
355
- agentName: agent.name,
356
- message: {
357
- type: 'done',
358
- },
359
- });
360
- }
361
- return {
362
- success: false,
363
- result: finalResponse,
364
- error: 'Sub-agent execution aborted during tool execution',
365
- };
366
- }
367
- try {
368
- const args = JSON.parse(toolCall.function.arguments);
369
- const result = await executeMCPTool(toolCall.function.name, args, abortSignal);
370
- const toolResult = {
371
- role: 'tool',
372
- tool_call_id: toolCall.id,
373
- content: JSON.stringify(result),
374
- };
375
- toolResults.push(toolResult);
376
- // Send tool result to UI
377
- if (onMessage) {
378
- onMessage({
379
- type: 'sub_agent_message',
380
- agentId: agent.id,
381
- agentName: agent.name,
382
- message: {
383
- type: 'tool_result',
384
- tool_call_id: toolCall.id,
385
- tool_name: toolCall.function.name,
386
- content: JSON.stringify(result),
387
- },
388
- });
389
- }
390
- }
391
- catch (error) {
392
- const errorResult = {
393
- role: 'tool',
394
- tool_call_id: toolCall.id,
395
- content: `Error: ${error instanceof Error ? error.message : 'Tool execution failed'}`,
396
- };
397
- toolResults.push(errorResult);
398
- // Send error result to UI
399
- if (onMessage) {
400
- onMessage({
401
- type: 'sub_agent_message',
402
- agentId: agent.id,
403
- agentName: agent.name,
404
- message: {
405
- type: 'tool_result',
406
- tool_call_id: toolCall.id,
407
- tool_name: toolCall.function.name,
408
- content: `Error: ${error instanceof Error
409
- ? error.message
410
- : 'Tool execution failed'}`,
411
- },
412
- });
413
- }
414
- }
415
- }
416
- // Add tool results to conversation
417
- messages.push(...toolResults);
418
- // Continue to next iteration if there were tool calls
419
- // The loop will continue until no more tool calls
420
- }
421
- return {
422
- success: true,
423
- result: finalResponse,
424
- usage: totalUsage,
425
- };
426
- }
427
- catch (error) {
428
- return {
429
- success: false,
430
- result: '',
431
- error: error instanceof Error ? error.message : 'Unknown error',
432
- };
433
- }
434
- }
@@ -1,5 +0,0 @@
1
- type WritableStreamLike = Pick<NodeJS.WriteStream, 'write'> | {
2
- write: (data: string) => unknown;
3
- };
4
- export declare function resetTerminal(stream?: WritableStreamLike): void;
5
- export {};
@@ -1,13 +0,0 @@
1
- export function resetTerminal(stream) {
2
- const target = stream ?? process.stdout;
3
- if (!target || typeof target.write !== 'function') {
4
- return;
5
- }
6
- // RIS (Reset to Initial State) clears scrollback and resets terminal modes
7
- target.write('\x1bc');
8
- target.write('\x1B[3J\x1B[2J\x1B[H');
9
- // Re-enable focus reporting immediately after terminal reset
10
- // The RIS command (\x1bc) disables focus reporting, so we must re-enable it
11
- // This ensures focus state tracking continues to work after /clear command
12
- target.write('\x1b[?1004h');
13
- }
@@ -1,99 +0,0 @@
1
- export interface Viewport {
2
- width: number;
3
- height: number;
4
- }
5
- /**
6
- * 统一的占位符类型,用于大文本粘贴和图片
7
- */
8
- export interface Placeholder {
9
- id: string;
10
- content: string;
11
- type: 'text' | 'image';
12
- charCount: number;
13
- index: number;
14
- placeholder: string;
15
- mimeType?: string;
16
- }
17
- /**
18
- * 图片数据类型(向后兼容)
19
- */
20
- export interface ImageData {
21
- id: string;
22
- data: string;
23
- mimeType: string;
24
- index: number;
25
- placeholder: string;
26
- }
27
- export declare class TextBuffer {
28
- private content;
29
- private cursorIndex;
30
- private viewport;
31
- private placeholderStorage;
32
- private textPlaceholderCounter;
33
- private imagePlaceholderCounter;
34
- private onUpdateCallback?;
35
- private isDestroyed;
36
- private tempPastingPlaceholder;
37
- private visualLines;
38
- private visualLineStarts;
39
- private visualCursorPos;
40
- private preferredVisualCol;
41
- constructor(viewport: Viewport, onUpdate?: () => void);
42
- /**
43
- * Cleanup method to be called when the buffer is no longer needed
44
- */
45
- destroy(): void;
46
- get text(): string;
47
- /**
48
- * 获取完整文本,包括替换占位符为原始内容(仅文本类型)
49
- */
50
- getFullText(): string;
51
- get visualCursor(): [number, number];
52
- getCursorPosition(): number;
53
- setCursorPosition(position: number): void;
54
- get viewportVisualLines(): string[];
55
- get maxWidth(): number;
56
- private scheduleUpdate;
57
- setText(text: string): void;
58
- insert(input: string): void;
59
- /**
60
- * 插入临时"粘贴中"占位符,用于大文本粘贴时的用户反馈
61
- */
62
- insertPastingIndicator(): void;
63
- private insertPlainText;
64
- backspace(): void;
65
- delete(): void;
66
- moveLeft(): void;
67
- moveRight(): void;
68
- moveUp(): void;
69
- moveDown(): void;
70
- /**
71
- * Update the viewport dimensions, useful for terminal resize handling.
72
- */
73
- updateViewport(viewport: Viewport): void;
74
- /**
75
- * Get the character and its visual info at cursor position for proper rendering.
76
- */
77
- getCharAtCursor(): {
78
- char: string;
79
- isWideChar: boolean;
80
- };
81
- private clampCursorIndex;
82
- private recalculateVisualState;
83
- private wrapLineToWidth;
84
- private computeVisualCursorFromIndex;
85
- private moveCursorToVisualRow;
86
- private recomputeVisualCursorOnly;
87
- /**
88
- * 插入图片数据(使用统一的占位符系统)
89
- */
90
- insertImage(base64Data: string, mimeType: string): void;
91
- /**
92
- * 获取所有图片数据(还原为 data URL 格式)
93
- */
94
- getImages(): ImageData[];
95
- /**
96
- * 清除所有图片
97
- */
98
- clearImages(): void;
99
- }