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,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
- }