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,88 +0,0 @@
1
- import type { SearchResponse, WebPageContent } from './types/websearch.types.js';
2
- /**
3
- * Web Search Service using DuckDuckGo Lite with Puppeteer Core
4
- * Provides web search functionality with real browser support and proxy
5
- * Uses system-installed Chrome/Edge to reduce package size
6
- */
7
- export declare class WebSearchService {
8
- private maxResults;
9
- private browser;
10
- private executablePath;
11
- constructor(maxResults?: number);
12
- /**
13
- * Launch browser with proxy settings from config
14
- */
15
- private launchBrowser;
16
- /**
17
- * Close browser instance
18
- */
19
- closeBrowser(): Promise<void>;
20
- /**
21
- * Perform a web search using DuckDuckGo
22
- * @param query - Search query string
23
- * @param maxResults - Maximum number of results to return (default: 10)
24
- * @returns Search results with title, URL, and snippet
25
- */
26
- search(query: string, maxResults?: number): Promise<SearchResponse>;
27
- /**
28
- * Fetch and extract content from a web page
29
- * @param url - URL of the web page to fetch
30
- * @param maxLength - Maximum content length (default: 50000 characters)
31
- * @param userQuery - Optional user query for content extraction using compact model agent
32
- * @param abortSignal - Optional abort signal from main flow
33
- * @param onTokenUpdate - Optional callback to update token count during compression
34
- * @returns Cleaned page content
35
- */
36
- fetchPage(url: string, maxLength?: number, userQuery?: string, abortSignal?: AbortSignal, onTokenUpdate?: (tokenCount: number) => void): Promise<WebPageContent>;
37
- }
38
- export declare const webSearchService: WebSearchService;
39
- export declare const mcpTools: ({
40
- name: string;
41
- description: string;
42
- inputSchema: {
43
- type: string;
44
- properties: {
45
- query: {
46
- type: string;
47
- description: string;
48
- };
49
- maxResults: {
50
- type: string;
51
- description: string;
52
- default: number;
53
- minimum: number;
54
- maximum: number;
55
- };
56
- url?: undefined;
57
- maxLength?: undefined;
58
- userQuery?: undefined;
59
- };
60
- required: string[];
61
- };
62
- } | {
63
- name: string;
64
- description: string;
65
- inputSchema: {
66
- type: string;
67
- properties: {
68
- url: {
69
- type: string;
70
- description: string;
71
- };
72
- maxLength: {
73
- type: string;
74
- description: string;
75
- default: number;
76
- minimum: number;
77
- maximum: number;
78
- };
79
- userQuery: {
80
- type: string;
81
- description: string;
82
- };
83
- query?: undefined;
84
- maxResults?: undefined;
85
- };
86
- required: string[];
87
- };
88
- })[];
@@ -1,375 +0,0 @@
1
- import puppeteer from 'puppeteer-core';
2
- import { existsSync } from 'node:fs';
3
- import { getProxyConfig } from '../utils/apiConfig.js';
4
- // Utility functions
5
- import { findBrowserExecutable } from './utils/websearch/browser.utils.js';
6
- import { cleanText } from './utils/websearch/text.utils.js';
7
- /**
8
- * Web Search Service using DuckDuckGo Lite with Puppeteer Core
9
- * Provides web search functionality with real browser support and proxy
10
- * Uses system-installed Chrome/Edge to reduce package size
11
- */
12
- export class WebSearchService {
13
- constructor(maxResults = 10) {
14
- Object.defineProperty(this, "maxResults", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: void 0
19
- });
20
- Object.defineProperty(this, "browser", {
21
- enumerable: true,
22
- configurable: true,
23
- writable: true,
24
- value: null
25
- });
26
- Object.defineProperty(this, "executablePath", {
27
- enumerable: true,
28
- configurable: true,
29
- writable: true,
30
- value: null
31
- });
32
- this.maxResults = maxResults;
33
- }
34
- /**
35
- * Launch browser with proxy settings from config
36
- */
37
- async launchBrowser() {
38
- if (this.browser && this.browser.connected) {
39
- return this.browser;
40
- }
41
- const proxyConfig = getProxyConfig();
42
- // Find browser executable path (cache it)
43
- // Priority: 1. User-configured path, 2. Auto-detect
44
- if (!this.executablePath) {
45
- // First try user-configured browser path
46
- if (proxyConfig.browserPath && existsSync(proxyConfig.browserPath)) {
47
- this.executablePath = proxyConfig.browserPath;
48
- }
49
- else {
50
- // Fallback to auto-detection
51
- this.executablePath = findBrowserExecutable();
52
- if (!this.executablePath) {
53
- throw new Error('No system browser found. Please install Chrome or Edge browser, or configure browser path in Proxy settings.');
54
- }
55
- }
56
- }
57
- const launchArgs = [
58
- '--no-sandbox',
59
- '--disable-setuid-sandbox',
60
- '--disable-dev-shm-usage',
61
- '--disable-accelerated-2d-canvas',
62
- '--disable-gpu',
63
- ];
64
- // Only add proxy if enabled
65
- if (proxyConfig.enabled) {
66
- launchArgs.unshift(`--proxy-server=http://127.0.0.1:${proxyConfig.port}`);
67
- }
68
- this.browser = await puppeteer.launch({
69
- executablePath: this.executablePath,
70
- headless: true,
71
- args: launchArgs,
72
- });
73
- return this.browser;
74
- }
75
- /**
76
- * Close browser instance
77
- */
78
- async closeBrowser() {
79
- if (this.browser) {
80
- await this.browser.close();
81
- this.browser = null;
82
- }
83
- }
84
- /**
85
- * Perform a web search using DuckDuckGo
86
- * @param query - Search query string
87
- * @param maxResults - Maximum number of results to return (default: 10)
88
- * @returns Search results with title, URL, and snippet
89
- */
90
- async search(query, maxResults) {
91
- const limit = maxResults || this.maxResults;
92
- let page = null;
93
- try {
94
- // Launch browser with proxy
95
- const browser = await this.launchBrowser();
96
- page = await browser.newPage();
97
- // Set realistic user agent
98
- await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
99
- // Encode query for URL
100
- const encodedQuery = encodeURIComponent(query);
101
- const searchUrl = `https://lite.duckduckgo.com/lite?q=${encodedQuery}`;
102
- // Navigate to search page with timeout
103
- await page.goto(searchUrl, {
104
- waitUntil: 'networkidle2',
105
- timeout: 30000,
106
- });
107
- // Extract search results from the page
108
- const results = await page.evaluate((maxLimit) => {
109
- const searchResults = [];
110
- const rows = document.querySelectorAll('table tr');
111
- let currentResult = {};
112
- let resultCount = 0;
113
- for (const row of rows) {
114
- if (resultCount >= maxLimit)
115
- break;
116
- // Check if this row contains a link (title row)
117
- const linkElement = row.querySelector('a.result-link');
118
- if (linkElement) {
119
- // Save previous result if exists
120
- if (currentResult.title && currentResult.url) {
121
- searchResults.push(currentResult);
122
- resultCount++;
123
- if (resultCount >= maxLimit)
124
- break;
125
- }
126
- // Start new result
127
- const title = linkElement.textContent?.trim() || '';
128
- const href = linkElement.getAttribute('href') || '';
129
- // Extract actual URL from DuckDuckGo redirect
130
- let actualUrl = href;
131
- if (href.includes('uddg=')) {
132
- const match = href.match(/uddg=([^&]+)/);
133
- if (match && match[1]) {
134
- actualUrl = decodeURIComponent(match[1]);
135
- }
136
- }
137
- currentResult = {
138
- title: title,
139
- url: actualUrl,
140
- snippet: '',
141
- displayUrl: '',
142
- };
143
- continue;
144
- }
145
- // Check if this row contains snippet
146
- const snippetElement = row.querySelector('td.result-snippet');
147
- if (snippetElement && currentResult.title) {
148
- currentResult.snippet = snippetElement.textContent?.trim() || '';
149
- continue;
150
- }
151
- // Check if this row contains display URL
152
- const displayUrlElement = row.querySelector('span.link-text');
153
- if (displayUrlElement && currentResult.title) {
154
- currentResult.displayUrl =
155
- displayUrlElement.textContent?.trim() || '';
156
- }
157
- }
158
- // Add last result if exists
159
- if (currentResult.title &&
160
- currentResult.url &&
161
- resultCount < maxLimit) {
162
- searchResults.push(currentResult);
163
- }
164
- return searchResults;
165
- }, limit);
166
- // Clean text in results
167
- const cleanedResults = results.map(result => ({
168
- title: cleanText(result.title),
169
- url: result.url,
170
- snippet: cleanText(result.snippet),
171
- displayUrl: cleanText(result.displayUrl),
172
- }));
173
- // Close the page
174
- await page.close();
175
- return {
176
- query,
177
- results: cleanedResults,
178
- totalResults: cleanedResults.length,
179
- };
180
- }
181
- catch (error) {
182
- // Clean up page on error
183
- if (page) {
184
- try {
185
- await page.close();
186
- }
187
- catch {
188
- // Ignore close errors
189
- }
190
- }
191
- throw new Error(`Web search failed: ${error.message}`);
192
- }
193
- }
194
- /**
195
- * Fetch and extract content from a web page
196
- * @param url - URL of the web page to fetch
197
- * @param maxLength - Maximum content length (default: 50000 characters)
198
- * @param userQuery - Optional user query for content extraction using compact model agent
199
- * @param abortSignal - Optional abort signal from main flow
200
- * @param onTokenUpdate - Optional callback to update token count during compression
201
- * @returns Cleaned page content
202
- */
203
- async fetchPage(url, maxLength = 50000, userQuery, abortSignal, onTokenUpdate) {
204
- let page = null;
205
- try {
206
- // Launch browser with proxy
207
- const browser = await this.launchBrowser();
208
- page = await browser.newPage();
209
- // Set realistic user agent
210
- await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
211
- // Navigate to page with timeout
212
- await page.goto(url, {
213
- waitUntil: 'networkidle2',
214
- timeout: 30000,
215
- });
216
- // Extract content using browser context
217
- const pageData = await page.evaluate(() => {
218
- // Remove unwanted elements
219
- const selectorsToRemove = [
220
- 'script',
221
- 'style',
222
- 'nav',
223
- 'header',
224
- 'footer',
225
- 'iframe',
226
- 'noscript',
227
- 'svg',
228
- '.advertisement',
229
- '.ad',
230
- '.ads',
231
- '#cookie-banner',
232
- '.cookie-notice',
233
- '.social-share',
234
- '.comments',
235
- '.sidebar',
236
- '[role="banner"]',
237
- '[role="navigation"]',
238
- '[role="complementary"]',
239
- ];
240
- selectorsToRemove.forEach(selector => {
241
- document.querySelectorAll(selector).forEach(el => el.remove());
242
- });
243
- // Get title
244
- const title = document.title || '';
245
- // Try to find main content area
246
- let mainContent = null;
247
- const mainSelectors = [
248
- 'article',
249
- 'main',
250
- '[role="main"]',
251
- '.main-content',
252
- '.content',
253
- '#content',
254
- '.article-body',
255
- '.post-content',
256
- ];
257
- for (const selector of mainSelectors) {
258
- mainContent = document.querySelector(selector);
259
- if (mainContent)
260
- break;
261
- }
262
- // Fallback to body if no main content found
263
- const contentElement = mainContent || document.body;
264
- // Extract text content
265
- const textContent = contentElement.textContent || '';
266
- return {
267
- title,
268
- textContent,
269
- };
270
- });
271
- // Clean and process the text
272
- let cleanedContent = pageData.textContent
273
- .replace(/\s+/g, ' ') // Replace multiple spaces with single space
274
- .replace(/\n\s*\n/g, '\n') // Remove empty lines
275
- .trim();
276
- // Limit content length
277
- if (cleanedContent.length > maxLength) {
278
- cleanedContent =
279
- cleanedContent.slice(0, maxLength) + '\n\n[Content truncated...]';
280
- }
281
- // Create preview (first 500 characters)
282
- const contentPreview = cleanedContent.slice(0, 500) +
283
- (cleanedContent.length > 500 ? '...' : '');
284
- // Close the page
285
- await page.close();
286
- // Use compact agent to extract key information if userQuery is provided
287
- let finalContent = cleanedContent;
288
- if (userQuery) {
289
- try {
290
- const { compactAgent } = await import('../agents/compactAgent.js');
291
- const isAvailable = await compactAgent.isAvailable();
292
- if (isAvailable) {
293
- // Use compact model to extract relevant information
294
- // No timeout - let it run as long as needed
295
- finalContent = await compactAgent.extractWebPageContent(cleanedContent, userQuery, url, abortSignal, onTokenUpdate);
296
- }
297
- }
298
- catch (error) {
299
- // If compact agent fails, fallback to original content
300
- // Error is already logged in compactAgent
301
- }
302
- }
303
- return {
304
- url,
305
- title: cleanText(pageData.title),
306
- content: finalContent,
307
- textLength: finalContent.length,
308
- contentPreview,
309
- };
310
- }
311
- catch (error) {
312
- // Clean up page on error
313
- if (page) {
314
- try {
315
- await page.close();
316
- }
317
- catch {
318
- // Ignore close errors
319
- }
320
- }
321
- throw new Error(`Failed to fetch page: ${error.message}`);
322
- }
323
- }
324
- }
325
- // Export a default instance
326
- export const webSearchService = new WebSearchService();
327
- // MCP Tool definitions
328
- export const mcpTools = [
329
- {
330
- name: 'websearch-search',
331
- description: 'Search the web using DuckDuckGo. Returns a list of search results with titles, URLs, and snippets. Best for finding current information, documentation, news, or general web content. **IMPORTANT WORKFLOW**: After getting search results, analyze them and choose ONLY ONE most credible and relevant page to fetch. Do NOT fetch multiple pages - reading one high-quality source is sufficient and more efficient.',
332
- inputSchema: {
333
- type: 'object',
334
- properties: {
335
- query: {
336
- type: 'string',
337
- description: 'Search query string (e.g., "Claude latest model", "TypeScript best practices")',
338
- },
339
- maxResults: {
340
- type: 'number',
341
- description: 'Maximum number of results to return (default: 10, max: 20)',
342
- default: 10,
343
- minimum: 1,
344
- maximum: 20,
345
- },
346
- },
347
- required: ['query'],
348
- },
349
- },
350
- {
351
- name: 'websearch-fetch',
352
- description: "Fetch and read the full content of a web page. Automatically cleans HTML and extracts the main text content, removing ads, navigation, and other noise. **USAGE RULE**: Only fetch ONE page per search - choose the most credible and relevant result (prefer official documentation, reputable tech sites, or well-known sources). **OPTIMIZATION**: ALWAYS provide the userQuery parameter with the user's original question. This enables automatic extraction of only relevant information using a compact AI model, which dramatically saves context and improves response quality.",
353
- inputSchema: {
354
- type: 'object',
355
- properties: {
356
- url: {
357
- type: 'string',
358
- description: 'Full URL of the web page to fetch (e.g., "https://example.com/article")',
359
- },
360
- maxLength: {
361
- type: 'number',
362
- description: 'Maximum content length in characters (default: 50000, max: 100000)',
363
- default: 50000,
364
- minimum: 1000,
365
- maximum: 100000,
366
- },
367
- userQuery: {
368
- type: 'string',
369
- description: "REQUIRED: User's original question or query. This is essential for intelligent content extraction - the compact AI model will extract only information relevant to this query, reducing content size by 80-95%. Always provide this parameter.",
370
- },
371
- },
372
- required: ['url'],
373
- },
374
- },
375
- ];
@@ -1 +0,0 @@
1
- export {};
@@ -1,7 +0,0 @@
1
- import { logger } from '../utils/logger.js';
2
- // Test the logger
3
- logger.info('Logger service initialized successfully');
4
- logger.error('Test error message', { errorCode: 500 });
5
- logger.warn('Test warning message');
6
- logger.debug('Debug information', { timestamp: Date.now() });
7
- console.log('Logger test completed. Check ./snow/log directory for log files.');
@@ -1,15 +0,0 @@
1
- export interface SnowConfig {
2
- model?: string;
3
- apiKey?: string;
4
- maxTokens?: number;
5
- }
6
- export interface Command {
7
- name: string;
8
- description: string;
9
- handler: (args: string[]) => Promise<void>;
10
- }
11
- export interface AppState {
12
- isLoading: boolean;
13
- currentCommand?: string;
14
- history: string[];
15
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import type { SubAgent } from '../../utils/subAgentConfig.js';
3
- interface Props {
4
- agents: SubAgent[];
5
- selectedIndex: number;
6
- visible: boolean;
7
- maxHeight?: number;
8
- }
9
- declare const AgentPickerPanel: React.MemoExoticComponent<({ agents, selectedIndex, visible, maxHeight }: Props) => React.JSX.Element | null>;
10
- export default AgentPickerPanel;
@@ -1,74 +0,0 @@
1
- import React, { memo, useMemo } from 'react';
2
- import { Box, Text } from 'ink';
3
- import { Alert } from '@inkjs/ui';
4
- import { useTheme } from '../contexts/ThemeContext.js';
5
- const AgentPickerPanel = memo(({ agents, selectedIndex, visible, maxHeight }) => {
6
- const { theme } = useTheme();
7
- // Fixed maximum display items to prevent rendering issues
8
- const MAX_DISPLAY_ITEMS = 5;
9
- const effectiveMaxItems = maxHeight
10
- ? Math.min(maxHeight, MAX_DISPLAY_ITEMS)
11
- : MAX_DISPLAY_ITEMS;
12
- // Limit displayed agents
13
- const displayedAgents = useMemo(() => {
14
- if (agents.length <= effectiveMaxItems) {
15
- return agents;
16
- }
17
- // Show agents around the selected index
18
- const halfWindow = Math.floor(effectiveMaxItems / 2);
19
- let startIndex = Math.max(0, selectedIndex - halfWindow);
20
- let endIndex = Math.min(agents.length, startIndex + effectiveMaxItems);
21
- // Adjust if we're near the end
22
- if (endIndex - startIndex < effectiveMaxItems) {
23
- startIndex = Math.max(0, endIndex - effectiveMaxItems);
24
- }
25
- return agents.slice(startIndex, endIndex);
26
- }, [agents, selectedIndex, effectiveMaxItems]);
27
- // Calculate actual selected index in the displayed subset
28
- const displayedSelectedIndex = useMemo(() => {
29
- return displayedAgents.findIndex(agent => {
30
- const originalIndex = agents.indexOf(agent);
31
- return originalIndex === selectedIndex;
32
- });
33
- }, [displayedAgents, agents, selectedIndex]);
34
- // Don't show panel if not visible
35
- if (!visible) {
36
- return null;
37
- }
38
- // Show message if no agents configured
39
- if (agents.length === 0) {
40
- return (React.createElement(Box, { flexDirection: "column" },
41
- React.createElement(Box, { width: "100%" },
42
- React.createElement(Box, { flexDirection: "column", width: "100%" },
43
- React.createElement(Box, null,
44
- React.createElement(Text, { color: theme.colors.warning, bold: true }, "Sub-Agent Selection")),
45
- React.createElement(Box, { marginTop: 1 },
46
- React.createElement(Alert, { variant: "warning" }, "No sub-agents configured. Please configure sub-agents first."))))));
47
- }
48
- return (React.createElement(Box, { flexDirection: "column" },
49
- React.createElement(Box, { width: "100%" },
50
- React.createElement(Box, { flexDirection: "column", width: "100%" },
51
- React.createElement(Box, null,
52
- React.createElement(Text, { color: theme.colors.warning, bold: true },
53
- "Select Sub-Agent",
54
- ' ',
55
- agents.length > effectiveMaxItems &&
56
- `(${selectedIndex + 1}/${agents.length})`),
57
- React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, "(Press ESC to close)")),
58
- displayedAgents.map((agent, index) => (React.createElement(Box, { key: agent.id, flexDirection: "column", width: "100%" },
59
- React.createElement(Text, { color: index === displayedSelectedIndex ? theme.colors.success : theme.colors.menuSecondary, bold: true },
60
- index === displayedSelectedIndex ? '❯ ' : ' ',
61
- "#",
62
- agent.name),
63
- React.createElement(Box, { marginLeft: 3 },
64
- React.createElement(Text, { color: index === displayedSelectedIndex ? theme.colors.success : theme.colors.menuSecondary, dimColor: true },
65
- "\u2514\u2500 ",
66
- agent.description || 'No description'))))),
67
- agents.length > effectiveMaxItems && (React.createElement(Box, { marginTop: 1 },
68
- React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true },
69
- "\u2191\u2193 to scroll \u00B7 ",
70
- agents.length - effectiveMaxItems,
71
- " more hidden")))))));
72
- });
73
- AgentPickerPanel.displayName = 'AgentPickerPanel';
74
- export default AgentPickerPanel;
@@ -1,46 +0,0 @@
1
- import React from 'react';
2
- /**
3
- * Calculate context usage percentage
4
- * This is the same logic used in ChatInput to display usage
5
- */
6
- export declare function calculateContextPercentage(contextUsage: {
7
- inputTokens: number;
8
- maxContextTokens: number;
9
- cacheCreationTokens?: number;
10
- cacheReadTokens?: number;
11
- cachedTokens?: number;
12
- }): number;
13
- type Props = {
14
- onSubmit: (message: string, images?: Array<{
15
- data: string;
16
- mimeType: string;
17
- }>) => void;
18
- onCommand?: (commandName: string, result: any) => void;
19
- placeholder?: string;
20
- disabled?: boolean;
21
- isProcessing?: boolean;
22
- chatHistory?: Array<{
23
- role: string;
24
- content: string;
25
- }>;
26
- onHistorySelect?: (selectedIndex: number, message: string) => void;
27
- yoloMode?: boolean;
28
- contextUsage?: {
29
- inputTokens: number;
30
- maxContextTokens: number;
31
- cacheCreationTokens?: number;
32
- cacheReadTokens?: number;
33
- cachedTokens?: number;
34
- };
35
- initialContent?: {
36
- text: string;
37
- images?: Array<{
38
- type: 'image';
39
- data: string;
40
- mimeType: string;
41
- }>;
42
- } | null;
43
- onContextPercentageChange?: (percentage: number) => void;
44
- };
45
- export default function ChatInput({ onSubmit, onCommand, placeholder, disabled, isProcessing, chatHistory, onHistorySelect, yoloMode, contextUsage, initialContent, onContextPercentageChange, }: Props): React.JSX.Element;
46
- export {};