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,50 +0,0 @@
1
- import type { CommandExecutionResult } from './types/bash.types.js';
2
- /**
3
- * Terminal Command Execution Service
4
- * Executes terminal commands directly using the system's default shell
5
- */
6
- export declare class TerminalCommandService {
7
- private workingDirectory;
8
- private maxOutputLength;
9
- constructor(workingDirectory?: string, maxOutputLength?: number);
10
- /**
11
- * Execute a terminal command in the working directory
12
- * @param command - The command to execute (e.g., "npm -v", "git status")
13
- * @param timeout - Timeout in milliseconds (default: 30000ms = 30s)
14
- * @returns Execution result including stdout, stderr, and exit code
15
- * @throws Error if command execution fails critically
16
- */
17
- executeCommand(command: string, timeout?: number): Promise<CommandExecutionResult>;
18
- /**
19
- * Get current working directory
20
- * @returns Current working directory path
21
- */
22
- getWorkingDirectory(): string;
23
- /**
24
- * Change working directory for future commands
25
- * @param newPath - New working directory path
26
- * @throws Error if path doesn't exist or is not a directory
27
- */
28
- setWorkingDirectory(newPath: string): void;
29
- }
30
- export declare const terminalService: TerminalCommandService;
31
- export declare const mcpTools: {
32
- name: string;
33
- description: string;
34
- inputSchema: {
35
- type: string;
36
- properties: {
37
- command: {
38
- type: string;
39
- description: string;
40
- };
41
- timeout: {
42
- type: string;
43
- description: string;
44
- default: number;
45
- maximum: number;
46
- };
47
- };
48
- required: string[];
49
- };
50
- }[];
package/dist/mcp/bash.js DELETED
@@ -1,153 +0,0 @@
1
- import { exec } from 'child_process';
2
- // Utility functions
3
- import { isDangerousCommand, truncateOutput, } from './utils/bash/security.utils.js';
4
- import { processManager } from '../utils/processManager.js';
5
- /**
6
- * Terminal Command Execution Service
7
- * Executes terminal commands directly using the system's default shell
8
- */
9
- export class TerminalCommandService {
10
- constructor(workingDirectory = process.cwd(), maxOutputLength = 10000) {
11
- Object.defineProperty(this, "workingDirectory", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
- Object.defineProperty(this, "maxOutputLength", {
18
- enumerable: true,
19
- configurable: true,
20
- writable: true,
21
- value: void 0
22
- });
23
- this.workingDirectory = workingDirectory;
24
- this.maxOutputLength = maxOutputLength;
25
- }
26
- /**
27
- * Execute a terminal command in the working directory
28
- * @param command - The command to execute (e.g., "npm -v", "git status")
29
- * @param timeout - Timeout in milliseconds (default: 30000ms = 30s)
30
- * @returns Execution result including stdout, stderr, and exit code
31
- * @throws Error if command execution fails critically
32
- */
33
- async executeCommand(command, timeout = 30000) {
34
- const executedAt = new Date().toISOString();
35
- try {
36
- // Security check: reject potentially dangerous commands
37
- if (isDangerousCommand(command)) {
38
- throw new Error(`Dangerous command detected and blocked: ${command.slice(0, 50)}`);
39
- }
40
- // Execute command using system default shell and register the process
41
- const childProcess = exec(command, {
42
- cwd: this.workingDirectory,
43
- timeout,
44
- maxBuffer: this.maxOutputLength,
45
- env: {
46
- ...process.env,
47
- ...(process.platform !== 'win32' && {
48
- LANG: 'en_US.UTF-8',
49
- LC_ALL: 'en_US.UTF-8',
50
- }),
51
- },
52
- });
53
- // Register child process for cleanup
54
- processManager.register(childProcess);
55
- // Convert to promise
56
- const { stdout, stderr } = await new Promise((resolve, reject) => {
57
- let stdoutData = '';
58
- let stderrData = '';
59
- childProcess.stdout?.on('data', chunk => {
60
- stdoutData += chunk;
61
- });
62
- childProcess.stderr?.on('data', chunk => {
63
- stderrData += chunk;
64
- });
65
- childProcess.on('error', reject);
66
- childProcess.on('close', (code, signal) => {
67
- if (signal) {
68
- // Process was killed by signal (e.g., timeout, manual kill)
69
- // CRITICAL: Still preserve stdout/stderr for debugging
70
- const error = new Error(`Process killed by signal ${signal}`);
71
- error.code = code || 1;
72
- error.stdout = stdoutData;
73
- error.stderr = stderrData;
74
- error.signal = signal;
75
- reject(error);
76
- }
77
- else if (code === 0) {
78
- resolve({ stdout: stdoutData, stderr: stderrData });
79
- }
80
- else {
81
- const error = new Error(`Process exited with code ${code}`);
82
- error.code = code;
83
- error.stdout = stdoutData;
84
- error.stderr = stderrData;
85
- reject(error);
86
- }
87
- });
88
- });
89
- // Truncate output if too long
90
- return {
91
- stdout: truncateOutput(stdout, this.maxOutputLength),
92
- stderr: truncateOutput(stderr, this.maxOutputLength),
93
- exitCode: 0,
94
- command,
95
- executedAt,
96
- };
97
- }
98
- catch (error) {
99
- // Handle execution errors (non-zero exit codes)
100
- if (error.code === 'ETIMEDOUT') {
101
- throw new Error(`Command timed out after ${timeout}ms: ${command}`);
102
- }
103
- // For non-zero exit codes, still return the output
104
- return {
105
- stdout: truncateOutput(error.stdout || '', this.maxOutputLength),
106
- stderr: truncateOutput(error.stderr || error.message || '', this.maxOutputLength),
107
- exitCode: error.code || 1,
108
- command,
109
- executedAt,
110
- };
111
- }
112
- }
113
- /**
114
- * Get current working directory
115
- * @returns Current working directory path
116
- */
117
- getWorkingDirectory() {
118
- return this.workingDirectory;
119
- }
120
- /**
121
- * Change working directory for future commands
122
- * @param newPath - New working directory path
123
- * @throws Error if path doesn't exist or is not a directory
124
- */
125
- setWorkingDirectory(newPath) {
126
- this.workingDirectory = newPath;
127
- }
128
- }
129
- // Export a default instance
130
- export const terminalService = new TerminalCommandService();
131
- // MCP Tool definitions
132
- export const mcpTools = [
133
- {
134
- name: 'terminal-execute',
135
- description: 'Execute terminal commands like npm, git, build scripts, etc. BEST PRACTICE: For file modifications, prefer filesystem-edit/filesystem-create tools first - they are more reliable and provide better error handling. Terminal commands (sed, awk, echo >file, cat <<EOF) can be used for file editing, but only as a fallback option when filesystem tools are not suitable. Primary use cases: (1) Running build/test/lint scripts, (2) Version control operations, (3) Package management, (4) System utilities, (5) Fallback file editing when needed.',
136
- inputSchema: {
137
- type: 'object',
138
- properties: {
139
- command: {
140
- type: 'string',
141
- description: 'Terminal command to execute. For file editing, filesystem tools are generally preferred.',
142
- },
143
- timeout: {
144
- type: 'number',
145
- description: 'Timeout in milliseconds (default: 30000)',
146
- default: 30000,
147
- maximum: 300000,
148
- },
149
- },
150
- required: ['command'],
151
- },
152
- },
153
- ];
@@ -1,44 +0,0 @@
1
- /**
2
- * Codebase Search Service
3
- * Provides semantic search capabilities for the codebase using embeddings
4
- */
5
- declare class CodebaseSearchService {
6
- /**
7
- * Check if codebase index is available and has data
8
- */
9
- private isCodebaseIndexAvailable;
10
- /**
11
- * Calculate cosine similarity between two vectors
12
- */
13
- private cosineSimilarity;
14
- /**
15
- * Search codebase using semantic similarity with retry logic
16
- */
17
- search(query: string, topN?: number): Promise<any>;
18
- }
19
- export declare const codebaseSearchService: CodebaseSearchService;
20
- /**
21
- * MCP Tools Definition
22
- */
23
- export declare const mcpTools: {
24
- name: string;
25
- description: string;
26
- inputSchema: {
27
- type: string;
28
- properties: {
29
- query: {
30
- type: string;
31
- description: string;
32
- };
33
- topN: {
34
- type: string;
35
- description: string;
36
- default: number;
37
- minimum: number;
38
- maximum: number;
39
- };
40
- };
41
- required: string[];
42
- };
43
- }[];
44
- export {};
@@ -1,275 +0,0 @@
1
- import { CodebaseDatabase } from '../utils/codebaseDatabase.js';
2
- import { createEmbedding } from '../api/embedding.js';
3
- import { logger } from '../utils/logger.js';
4
- import { codebaseReviewAgent } from '../agents/codebaseReviewAgent.js';
5
- import { codebaseSearchEvents } from '../utils/codebaseSearchEvents.js';
6
- import { loadCodebaseConfig } from '../utils/codebaseConfig.js';
7
- import path from 'node:path';
8
- import fs from 'node:fs';
9
- /**
10
- * Codebase Search Service
11
- * Provides semantic search capabilities for the codebase using embeddings
12
- */
13
- class CodebaseSearchService {
14
- /**
15
- * Check if codebase index is available and has data
16
- */
17
- isCodebaseIndexAvailable() {
18
- try {
19
- const projectRoot = process.cwd();
20
- const dbPath = path.join(projectRoot, '.snow', 'codebase', 'embeddings.db');
21
- // Check if database file exists
22
- if (!fs.existsSync(dbPath)) {
23
- return {
24
- available: false,
25
- reason: 'Codebase index not found. Please run codebase indexing first.',
26
- };
27
- }
28
- // Initialize database and check for data
29
- const db = new CodebaseDatabase(projectRoot);
30
- db.initialize();
31
- const totalChunks = db.getTotalChunks();
32
- db.close();
33
- if (totalChunks === 0) {
34
- return {
35
- available: false,
36
- reason: 'Codebase index is empty. Please run indexing to build the index.',
37
- };
38
- }
39
- return { available: true };
40
- }
41
- catch (error) {
42
- logger.error('Error checking codebase index availability:', error);
43
- return {
44
- available: false,
45
- reason: `Error checking codebase index: ${error instanceof Error ? error.message : 'Unknown error'}`,
46
- };
47
- }
48
- }
49
- /**
50
- * Calculate cosine similarity between two vectors
51
- */
52
- cosineSimilarity(a, b) {
53
- if (a.length !== b.length) {
54
- throw new Error('Vectors must have same length');
55
- }
56
- let dotProduct = 0;
57
- let normA = 0;
58
- let normB = 0;
59
- for (let i = 0; i < a.length; i++) {
60
- dotProduct += a[i] * b[i];
61
- normA += a[i] * a[i];
62
- normB += b[i] * b[i];
63
- }
64
- return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
65
- }
66
- /**
67
- * Search codebase using semantic similarity with retry logic
68
- */
69
- async search(query, topN = 10) {
70
- // Load codebase config
71
- const config = loadCodebaseConfig();
72
- const enableAgentReview = config.enableAgentReview;
73
- // Check if codebase index is available
74
- const { available, reason } = this.isCodebaseIndexAvailable();
75
- if (!available) {
76
- return {
77
- error: reason,
78
- results: [],
79
- totalResults: 0,
80
- };
81
- }
82
- const MAX_SEARCH_RETRIES = 3;
83
- const MIN_RESULTS_THRESHOLD = Math.ceil(topN * 0.5); // 50% of topN
84
- try {
85
- const projectRoot = process.cwd();
86
- const db = new CodebaseDatabase(projectRoot);
87
- db.initialize();
88
- const totalChunks = db.getTotalChunks();
89
- let lastResults = null;
90
- let searchAttempt = 0;
91
- let currentTopN = topN;
92
- // Retry loop: if results are too few, increase search range and retry
93
- while (searchAttempt < MAX_SEARCH_RETRIES) {
94
- searchAttempt++;
95
- // Emit search event (only if agent review is enabled)
96
- if (enableAgentReview) {
97
- codebaseSearchEvents.emitSearchEvent({
98
- type: searchAttempt === 1 ? 'search-start' : 'search-retry',
99
- attempt: searchAttempt,
100
- maxAttempts: MAX_SEARCH_RETRIES,
101
- currentTopN,
102
- message: `Searching top ${currentTopN} code chunks...`,
103
- query,
104
- });
105
- }
106
- // Generate embedding for query
107
- logger.info(`Search attempt ${searchAttempt}/${MAX_SEARCH_RETRIES}: Searching top ${currentTopN} chunks for query: "${query}"`);
108
- const queryEmbedding = await createEmbedding(query);
109
- // Search similar chunks
110
- const results = db.searchSimilar(queryEmbedding, currentTopN);
111
- // Format results with similarity scores and full content
112
- const formattedResults = results.map((chunk, index) => {
113
- const score = this.cosineSimilarity(queryEmbedding, chunk.embedding);
114
- const scorePercent = (score * 100).toFixed(2);
115
- return {
116
- rank: index + 1,
117
- filePath: chunk.filePath,
118
- startLine: chunk.startLine,
119
- endLine: chunk.endLine,
120
- content: chunk.content,
121
- similarityScore: scorePercent,
122
- location: `${chunk.filePath}:${chunk.startLine}-${chunk.endLine}`,
123
- };
124
- });
125
- // Use review agent to filter irrelevant results (if enabled)
126
- let finalResults;
127
- let reviewFailed = false;
128
- let removedCount = 0;
129
- let suggestions = [];
130
- if (enableAgentReview) {
131
- // Emit reviewing event
132
- codebaseSearchEvents.emitSearchEvent({
133
- type: 'search-retry',
134
- attempt: searchAttempt,
135
- maxAttempts: MAX_SEARCH_RETRIES,
136
- currentTopN,
137
- message: `Reviewing ${formattedResults.length} results with AI...`,
138
- query,
139
- });
140
- logger.info(`Reviewing ${formattedResults.length} search results (attempt ${searchAttempt})`);
141
- const reviewResult = await codebaseReviewAgent.reviewResults(query, formattedResults);
142
- finalResults = reviewResult.filteredResults;
143
- reviewFailed = reviewResult.reviewFailed || false;
144
- removedCount = reviewResult.removedCount;
145
- suggestions = reviewResult.suggestions || [];
146
- }
147
- else {
148
- // Skip agent review, use all formatted results
149
- finalResults = formattedResults;
150
- reviewFailed = false;
151
- removedCount = 0;
152
- suggestions = [];
153
- // When agent review is disabled, we don't need to retry
154
- // Just return results immediately
155
- logger.info(`Agent review disabled, returning all ${finalResults.length} search results`);
156
- }
157
- // Store current results as last results
158
- lastResults = {
159
- query,
160
- totalChunks,
161
- originalResultsCount: formattedResults.length,
162
- resultsCount: finalResults.length,
163
- removedCount,
164
- reviewFailed,
165
- results: finalResults,
166
- suggestions,
167
- searchAttempts: searchAttempt,
168
- };
169
- // If agent review is disabled, return immediately (no need to retry)
170
- if (!enableAgentReview) {
171
- // Emit search complete event
172
- codebaseSearchEvents.emitSearchEvent({
173
- type: 'search-complete',
174
- attempt: searchAttempt,
175
- maxAttempts: MAX_SEARCH_RETRIES,
176
- currentTopN,
177
- message: `Found ${finalResults.length} results`,
178
- query,
179
- });
180
- db.close();
181
- return lastResults;
182
- }
183
- // If review failed, return immediately (no point retrying)
184
- if (reviewFailed) {
185
- logger.info('Review failed, returning all results without retry');
186
- // Emit search complete event
187
- codebaseSearchEvents.emitSearchEvent({
188
- type: 'search-complete',
189
- attempt: searchAttempt,
190
- maxAttempts: MAX_SEARCH_RETRIES,
191
- currentTopN,
192
- message: 'Review failed, returning all results',
193
- query,
194
- });
195
- db.close();
196
- return lastResults;
197
- }
198
- // Check if we have enough results
199
- if (finalResults.length >= MIN_RESULTS_THRESHOLD) {
200
- logger.info(`Found ${finalResults.length} results (>= ${MIN_RESULTS_THRESHOLD} threshold), search complete`);
201
- // Emit search complete event
202
- codebaseSearchEvents.emitSearchEvent({
203
- type: 'search-complete',
204
- attempt: searchAttempt,
205
- maxAttempts: MAX_SEARCH_RETRIES,
206
- currentTopN,
207
- message: `Found ${finalResults.length} relevant results`,
208
- query,
209
- });
210
- db.close();
211
- return lastResults;
212
- }
213
- // Too few results, need to retry with more candidates
214
- if (searchAttempt < MAX_SEARCH_RETRIES) {
215
- const removedPercentage = ((removedCount / formattedResults.length) *
216
- 100).toFixed(1);
217
- logger.warn(`Only ${finalResults.length} results after filtering (${removedPercentage}% removed, threshold: ${MIN_RESULTS_THRESHOLD}). Retrying with more candidates...`);
218
- // Increase search range for next attempt (double it)
219
- currentTopN = Math.min(currentTopN * 2, totalChunks);
220
- continue;
221
- }
222
- // Last attempt exhausted
223
- logger.warn(`Search attempt ${searchAttempt} complete. Only ${finalResults.length} results found (threshold: ${MIN_RESULTS_THRESHOLD}). Returning last results.`);
224
- }
225
- // Emit search complete event before closing
226
- codebaseSearchEvents.emitSearchEvent({
227
- type: 'search-complete',
228
- attempt: searchAttempt,
229
- maxAttempts: MAX_SEARCH_RETRIES,
230
- currentTopN,
231
- message: `Completed with ${lastResults?.resultsCount || 0} results`,
232
- query,
233
- });
234
- db.close();
235
- return lastResults;
236
- }
237
- catch (error) {
238
- logger.error('Codebase search failed:', error);
239
- throw error;
240
- }
241
- }
242
- }
243
- // Export singleton instance
244
- export const codebaseSearchService = new CodebaseSearchService();
245
- /**
246
- * MCP Tools Definition
247
- */
248
- export const mcpTools = [
249
- {
250
- name: 'codebase-search',
251
- description: '**Important:When you need to search for code, this is the highest priority tool. You need to use this Codebase tool first.**' +
252
- '* Semantic search across the codebase using embeddings. ' +
253
- '* Finds code snippets similar to your query based on meaning, not just keywords. ' +
254
- '* Returns full code content with similarity scores and file locations. ' +
255
- '* NOTE: Only available when codebase indexing is enabled and the index has been built. ' +
256
- '* If the index is not available, the tool will return an error message with instructions.',
257
- inputSchema: {
258
- type: 'object',
259
- properties: {
260
- query: {
261
- type: 'string',
262
- description: 'Search query describing the code you want to find (e.g., "database query", "error handling", "authentication logic")',
263
- },
264
- topN: {
265
- type: 'number',
266
- description: 'Maximum number of results to return (default: 10, max: 50)',
267
- default: 10,
268
- minimum: 1,
269
- maximum: 50,
270
- },
271
- },
272
- required: ['query'],
273
- },
274
- },
275
- ];