snow-ai 0.4.16 → 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 -384
  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 -1519
  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,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
- ];