centaurus-cli 3.0.0 → 3.1.0

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 (552) hide show
  1. package/dist/ai/types.js +0 -1
  2. package/dist/ai/types.js.map +1 -1
  3. package/dist/cli-adapter.js +5047 -5037
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/commands/CommandParser.js +372 -315
  6. package/dist/commands/CommandParser.js.map +1 -1
  7. package/dist/config/build-config.js +11 -42
  8. package/dist/config/build-config.js.map +1 -1
  9. package/dist/config/defaultConfig.js +94 -82
  10. package/dist/config/defaultConfig.js.map +1 -1
  11. package/dist/config/manager.js +144 -160
  12. package/dist/config/manager.js.map +1 -1
  13. package/dist/config/mcp-config-manager.js +411 -364
  14. package/dist/config/mcp-config-manager.js.map +1 -1
  15. package/dist/config/models.js +118 -185
  16. package/dist/config/models.js.map +1 -1
  17. package/dist/config/slash-commands.js +186 -184
  18. package/dist/config/slash-commands.js.map +1 -1
  19. package/dist/config/types.js +33 -26
  20. package/dist/config/types.js.map +1 -1
  21. package/dist/context/command-detector.js +63 -67
  22. package/dist/context/command-detector.js.map +1 -1
  23. package/dist/context/context-manager.js +533 -518
  24. package/dist/context/context-manager.js.map +1 -1
  25. package/dist/context/handlers/docker-handler.js +518 -576
  26. package/dist/context/handlers/docker-handler.js.map +1 -1
  27. package/dist/context/handlers/ssh-handler.js +1050 -1109
  28. package/dist/context/handlers/ssh-handler.js.map +1 -1
  29. package/dist/context/handlers/wsl-handler.js +558 -630
  30. package/dist/context/handlers/wsl-handler.js.map +1 -1
  31. package/dist/context/index.js +42 -6
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/context/subshell-handler.js +0 -4
  34. package/dist/context/subshell-handler.js.map +1 -1
  35. package/dist/context/types.js +20 -31
  36. package/dist/context/types.js.map +1 -1
  37. package/dist/hooks/useConnectivity.js +13 -10
  38. package/dist/hooks/useConnectivity.js.map +1 -1
  39. package/dist/hooks/useTerminalDimensions.js +67 -79
  40. package/dist/hooks/useTerminalDimensions.js.map +1 -1
  41. package/dist/index.js +228 -251
  42. package/dist/index.js.map +1 -1
  43. package/dist/mcp/mcp-command-handler.js +297 -260
  44. package/dist/mcp/mcp-command-handler.js.map +1 -1
  45. package/dist/mcp/mcp-server-manager.js +139 -155
  46. package/dist/mcp/mcp-server-manager.js.map +1 -1
  47. package/dist/mcp/mcp-tool-wrapper.js +74 -94
  48. package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
  49. package/dist/services/ai-autocomplete-agent.js +169 -181
  50. package/dist/services/ai-autocomplete-agent.js.map +1 -1
  51. package/dist/services/ai-context-injector.js +180 -93
  52. package/dist/services/ai-context-injector.js.map +1 -1
  53. package/dist/services/ai-service-client.js +513 -456
  54. package/dist/services/ai-service-client.js.map +1 -1
  55. package/dist/services/api-client.js +443 -441
  56. package/dist/services/api-client.js.map +1 -1
  57. package/dist/services/auth-handler.js +162 -198
  58. package/dist/services/auth-handler.js.map +1 -1
  59. package/dist/services/background-task-manager.js +258 -282
  60. package/dist/services/background-task-manager.js.map +1 -1
  61. package/dist/services/checkpoint-manager.js +1513 -973
  62. package/dist/services/checkpoint-manager.js.map +1 -1
  63. package/dist/services/clipboard-service.js +151 -200
  64. package/dist/services/clipboard-service.js.map +1 -1
  65. package/dist/services/connectivity-manager.js +63 -65
  66. package/dist/services/connectivity-manager.js.map +1 -1
  67. package/dist/services/conversation-manager.js +118 -121
  68. package/dist/services/conversation-manager.js.map +1 -1
  69. package/dist/services/environment-context-injector.js +160 -187
  70. package/dist/services/environment-context-injector.js.map +1 -1
  71. package/dist/services/fast-context-agent.js +203 -243
  72. package/dist/services/fast-context-agent.js.map +1 -1
  73. package/dist/services/input-detection-agent.js +190 -202
  74. package/dist/services/input-detection-agent.js.map +1 -1
  75. package/dist/services/input-requirement-detector.js +155 -189
  76. package/dist/services/input-requirement-detector.js.map +1 -1
  77. package/dist/services/local-chat-storage.js +342 -365
  78. package/dist/services/local-chat-storage.js.map +1 -1
  79. package/dist/services/monitored-shell-manager.js +225 -233
  80. package/dist/services/monitored-shell-manager.js.map +1 -1
  81. package/dist/services/ollama-service.js +293 -310
  82. package/dist/services/ollama-service.js.map +1 -1
  83. package/dist/services/rules-storage.js +142 -0
  84. package/dist/services/rules-storage.js.map +1 -0
  85. package/dist/services/session-quota-manager.js +219 -235
  86. package/dist/services/session-quota-manager.js.map +1 -1
  87. package/dist/services/shell-input-agent.js +299 -334
  88. package/dist/services/shell-input-agent.js.map +1 -1
  89. package/dist/services/sub-agent-manager.js +459 -501
  90. package/dist/services/sub-agent-manager.js.map +1 -1
  91. package/dist/services/warpify-detector.js +133 -183
  92. package/dist/services/warpify-detector.js.map +1 -1
  93. package/dist/services/workflow-storage.js +202 -217
  94. package/dist/services/workflow-storage.js.map +1 -1
  95. package/dist/test-ssh-handler.js +148 -193
  96. package/dist/test-ssh-handler.js.map +1 -1
  97. package/dist/tools/add-mcp.js +161 -0
  98. package/dist/tools/add-mcp.js.map +1 -0
  99. package/dist/tools/background-command.js +240 -273
  100. package/dist/tools/background-command.js.map +1 -1
  101. package/dist/tools/command.js +447 -440
  102. package/dist/tools/command.js.map +1 -1
  103. package/dist/tools/create-image.js +172 -202
  104. package/dist/tools/create-image.js.map +1 -1
  105. package/dist/tools/enter-remote-session.js +169 -215
  106. package/dist/tools/enter-remote-session.js.map +1 -1
  107. package/dist/tools/fast-context.js +60 -67
  108. package/dist/tools/fast-context.js.map +1 -1
  109. package/dist/tools/file-ops.js +605 -537
  110. package/dist/tools/file-ops.js.map +1 -1
  111. package/dist/tools/find-files.js +262 -303
  112. package/dist/tools/find-files.js.map +1 -1
  113. package/dist/tools/get-diff.js +423 -400
  114. package/dist/tools/get-diff.js.map +1 -1
  115. package/dist/tools/grep-search.js +966 -948
  116. package/dist/tools/grep-search.js.map +1 -1
  117. package/dist/tools/inspect-symbol.js +308 -323
  118. package/dist/tools/inspect-symbol.js.map +1 -1
  119. package/dist/tools/plan-mode.js +459 -503
  120. package/dist/tools/plan-mode.js.map +1 -1
  121. package/dist/tools/read-binary-file.js +160 -190
  122. package/dist/tools/read-binary-file.js.map +1 -1
  123. package/dist/tools/registry.js +100 -84
  124. package/dist/tools/registry.js.map +1 -1
  125. package/dist/tools/reproduce_issue.js +170 -151
  126. package/dist/tools/reproduce_issue.js.map +1 -1
  127. package/dist/tools/sub-agent.js +223 -228
  128. package/dist/tools/sub-agent.js.map +1 -1
  129. package/dist/tools/task-complete.js +28 -27
  130. package/dist/tools/task-complete.js.map +1 -1
  131. package/dist/tools/types.js +0 -1
  132. package/dist/tools/types.js.map +1 -1
  133. package/dist/tools/validation.js +96 -118
  134. package/dist/tools/validation.js.map +1 -1
  135. package/dist/tools/web-search.js +194 -194
  136. package/dist/tools/web-search.js.map +1 -1
  137. package/dist/tools/workflow-tool.js +77 -82
  138. package/dist/tools/workflow-tool.js.map +1 -1
  139. package/dist/types/index.js +0 -1
  140. package/dist/types/index.js.map +1 -1
  141. package/dist/types/rule.js +1 -0
  142. package/dist/types/rule.js.map +1 -0
  143. package/dist/types/workflow.js +0 -7
  144. package/dist/types/workflow.js.map +1 -1
  145. package/dist/ui/components/AgentTimer.js +24 -25
  146. package/dist/ui/components/AgentTimer.js.map +1 -1
  147. package/dist/ui/components/App.js +3266 -3249
  148. package/dist/ui/components/App.js.map +1 -1
  149. package/dist/ui/components/AuthScreen.js +22 -34
  150. package/dist/ui/components/AuthScreen.js.map +1 -1
  151. package/dist/ui/components/AuthWelcomeScreen.js +30 -24
  152. package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
  153. package/dist/ui/components/Breadcrumbs.js +53 -82
  154. package/dist/ui/components/Breadcrumbs.js.map +1 -1
  155. package/dist/ui/components/CircularSelectInput.js +59 -67
  156. package/dist/ui/components/CircularSelectInput.js.map +1 -1
  157. package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
  158. package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
  159. package/dist/ui/components/CodeBlock.js +24 -42
  160. package/dist/ui/components/CodeBlock.js.map +1 -1
  161. package/dist/ui/components/ConfigViewer.js +18 -25
  162. package/dist/ui/components/ConfigViewer.js.map +1 -1
  163. package/dist/ui/components/ConfirmPrompt.js +49 -71
  164. package/dist/ui/components/ConfirmPrompt.js.map +1 -1
  165. package/dist/ui/components/ConnectionStatusMessage.js +32 -83
  166. package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
  167. package/dist/ui/components/ContextWindowIndicator.js +34 -49
  168. package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
  169. package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
  170. package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
  171. package/dist/ui/components/DiffViewer.js +68 -121
  172. package/dist/ui/components/DiffViewer.js.map +1 -1
  173. package/dist/ui/components/ErrorBoundary.js +40 -48
  174. package/dist/ui/components/ErrorBoundary.js.map +1 -1
  175. package/dist/ui/components/FileCreationPreview.js +29 -60
  176. package/dist/ui/components/FileCreationPreview.js.map +1 -1
  177. package/dist/ui/components/FileOperation.js +34 -29
  178. package/dist/ui/components/FileOperation.js.map +1 -1
  179. package/dist/ui/components/FileTagAutocomplete.js +55 -25
  180. package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
  181. package/dist/ui/components/FontRecommendation.js.map +1 -1
  182. package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
  183. package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
  184. package/dist/ui/components/InputBox.js +1620 -2150
  185. package/dist/ui/components/InputBox.js.map +1 -1
  186. package/dist/ui/components/InteractiveShell.js +234 -352
  187. package/dist/ui/components/InteractiveShell.js.map +1 -1
  188. package/dist/ui/components/KeyboardHelp.js +34 -35
  189. package/dist/ui/components/KeyboardHelp.js.map +1 -1
  190. package/dist/ui/components/LoadingIndicator.js +22 -25
  191. package/dist/ui/components/LoadingIndicator.js.map +1 -1
  192. package/dist/ui/components/MCPAddScreen.js +40 -51
  193. package/dist/ui/components/MCPAddScreen.js.map +1 -1
  194. package/dist/ui/components/MCPListScreen.js +40 -48
  195. package/dist/ui/components/MCPListScreen.js.map +1 -1
  196. package/dist/ui/components/MCPServerListScreen.js +49 -56
  197. package/dist/ui/components/MCPServerListScreen.js.map +1 -1
  198. package/dist/ui/components/MarkdownRenderer.js +69 -96
  199. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  200. package/dist/ui/components/MessageBox.js +66 -48
  201. package/dist/ui/components/MessageBox.js.map +1 -1
  202. package/dist/ui/components/MessageDisplay.js +150 -142
  203. package/dist/ui/components/MessageDisplay.js.map +1 -1
  204. package/dist/ui/components/MonitorModeAIPanel.js +46 -65
  205. package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
  206. package/dist/ui/components/MultiLineInput.js +243 -277
  207. package/dist/ui/components/MultiLineInput.js.map +1 -1
  208. package/dist/ui/components/PasswordPrompt.js +37 -18
  209. package/dist/ui/components/PasswordPrompt.js.map +1 -1
  210. package/dist/ui/components/PlanAcceptedMessage.js +27 -38
  211. package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
  212. package/dist/ui/components/PlanReviewScreen.js +46 -50
  213. package/dist/ui/components/PlanReviewScreen.js.map +1 -1
  214. package/dist/ui/components/RulesEditorScreen.js +81 -0
  215. package/dist/ui/components/RulesEditorScreen.js.map +1 -0
  216. package/dist/ui/components/SelectPrompt.js +19 -8
  217. package/dist/ui/components/SelectPrompt.js.map +1 -1
  218. package/dist/ui/components/ShimmerText.js +44 -0
  219. package/dist/ui/components/ShimmerText.js.map +1 -0
  220. package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
  221. package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
  222. package/dist/ui/components/StatusBar.js +56 -87
  223. package/dist/ui/components/StatusBar.js.map +1 -1
  224. package/dist/ui/components/StreamingMessageDisplay.js +116 -99
  225. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  226. package/dist/ui/components/TaskCompletedMessage.js +28 -23
  227. package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
  228. package/dist/ui/components/TaskProgressIndicator.js +44 -70
  229. package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
  230. package/dist/ui/components/ThinkingDisplay.js +44 -41
  231. package/dist/ui/components/ThinkingDisplay.js.map +1 -1
  232. package/dist/ui/components/ToolExecutionMessage.js +772 -1326
  233. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  234. package/dist/ui/components/ToolExecutionStatus.js +53 -84
  235. package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
  236. package/dist/ui/components/ToolResult.js +22 -15
  237. package/dist/ui/components/ToolResult.js.map +1 -1
  238. package/dist/ui/components/VersionUpdatePrompt.js +88 -120
  239. package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
  240. package/dist/ui/components/WelcomeBanner.js +176 -26
  241. package/dist/ui/components/WelcomeBanner.js.map +1 -1
  242. package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
  243. package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
  244. package/dist/utils/ansi-encoder.js +30 -61
  245. package/dist/utils/ansi-encoder.js.map +1 -1
  246. package/dist/utils/chat-formatter.js +327 -305
  247. package/dist/utils/chat-formatter.js.map +1 -1
  248. package/dist/utils/command-history.js +152 -174
  249. package/dist/utils/command-history.js.map +1 -1
  250. package/dist/utils/context-sanitizer.js +49 -112
  251. package/dist/utils/context-sanitizer.js.map +1 -1
  252. package/dist/utils/conversation-logger.js +292 -324
  253. package/dist/utils/conversation-logger.js.map +1 -1
  254. package/dist/utils/custom-commands-manager.js +126 -131
  255. package/dist/utils/custom-commands-manager.js.map +1 -1
  256. package/dist/utils/editor-utils.js +732 -837
  257. package/dist/utils/editor-utils.js.map +1 -1
  258. package/dist/utils/file.js +174 -213
  259. package/dist/utils/file.js.map +1 -1
  260. package/dist/utils/git-stats.js +169 -0
  261. package/dist/utils/git-stats.js.map +1 -0
  262. package/dist/utils/input-classifier.js +960 -482
  263. package/dist/utils/input-classifier.js.map +1 -1
  264. package/dist/utils/logger.js +48 -73
  265. package/dist/utils/logger.js.map +1 -1
  266. package/dist/utils/markdown-parser.js +277 -310
  267. package/dist/utils/markdown-parser.js.map +1 -1
  268. package/dist/utils/rule-reference-resolver.js +54 -0
  269. package/dist/utils/rule-reference-resolver.js.map +1 -0
  270. package/dist/utils/shell.js +144 -156
  271. package/dist/utils/shell.js.map +1 -1
  272. package/dist/utils/state.js +23 -22
  273. package/dist/utils/state.js.map +1 -1
  274. package/dist/utils/syntax-checker.js +279 -327
  275. package/dist/utils/syntax-checker.js.map +1 -1
  276. package/dist/utils/terminal-output.js +199 -302
  277. package/dist/utils/terminal-output.js.map +1 -1
  278. package/dist/utils/text-clipboard.js +47 -70
  279. package/dist/utils/text-clipboard.js.map +1 -1
  280. package/dist/utils/unicode-sanitizer.js +134 -197
  281. package/dist/utils/unicode-sanitizer.js.map +1 -1
  282. package/dist/utils/version-checker.js +46 -56
  283. package/dist/utils/version-checker.js.map +1 -1
  284. package/package.json +6 -4
  285. package/dist/ai/types.d.ts +0 -20
  286. package/dist/ai/types.d.ts.map +0 -1
  287. package/dist/cli-adapter.d.ts +0 -511
  288. package/dist/cli-adapter.d.ts.map +0 -1
  289. package/dist/commands/CommandParser.d.ts +0 -27
  290. package/dist/commands/CommandParser.d.ts.map +0 -1
  291. package/dist/config/build-config.d.ts +0 -42
  292. package/dist/config/build-config.d.ts.map +0 -1
  293. package/dist/config/defaultConfig.d.ts +0 -79
  294. package/dist/config/defaultConfig.d.ts.map +0 -1
  295. package/dist/config/manager.d.ts +0 -62
  296. package/dist/config/manager.d.ts.map +0 -1
  297. package/dist/config/mcp-config-manager.d.ts +0 -79
  298. package/dist/config/mcp-config-manager.d.ts.map +0 -1
  299. package/dist/config/models.d.ts +0 -83
  300. package/dist/config/models.d.ts.map +0 -1
  301. package/dist/config/slash-commands.d.ts +0 -23
  302. package/dist/config/slash-commands.d.ts.map +0 -1
  303. package/dist/config/types.d.ts +0 -35
  304. package/dist/config/types.d.ts.map +0 -1
  305. package/dist/context/command-detector.d.ts +0 -50
  306. package/dist/context/command-detector.d.ts.map +0 -1
  307. package/dist/context/context-manager.d.ts +0 -157
  308. package/dist/context/context-manager.d.ts.map +0 -1
  309. package/dist/context/handlers/docker-handler.d.ts +0 -130
  310. package/dist/context/handlers/docker-handler.d.ts.map +0 -1
  311. package/dist/context/handlers/ssh-handler.d.ts +0 -201
  312. package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
  313. package/dist/context/handlers/wsl-handler.d.ts +0 -146
  314. package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
  315. package/dist/context/index.d.ts +0 -8
  316. package/dist/context/index.d.ts.map +0 -1
  317. package/dist/context/subshell-handler.d.ts +0 -165
  318. package/dist/context/subshell-handler.d.ts.map +0 -1
  319. package/dist/context/types.d.ts +0 -70
  320. package/dist/context/types.d.ts.map +0 -1
  321. package/dist/hooks/useConnectivity.d.ts +0 -2
  322. package/dist/hooks/useConnectivity.d.ts.map +0 -1
  323. package/dist/hooks/useTerminalDimensions.d.ts +0 -41
  324. package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
  325. package/dist/index.d.ts +0 -9
  326. package/dist/index.d.ts.map +0 -1
  327. package/dist/mcp/mcp-command-handler.d.ts +0 -47
  328. package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
  329. package/dist/mcp/mcp-server-manager.d.ts +0 -30
  330. package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
  331. package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
  332. package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
  333. package/dist/services/ai-autocomplete-agent.d.ts +0 -39
  334. package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
  335. package/dist/services/ai-context-injector.d.ts +0 -41
  336. package/dist/services/ai-context-injector.d.ts.map +0 -1
  337. package/dist/services/ai-service-client.d.ts +0 -128
  338. package/dist/services/ai-service-client.d.ts.map +0 -1
  339. package/dist/services/api-client.d.ts +0 -353
  340. package/dist/services/api-client.d.ts.map +0 -1
  341. package/dist/services/auth-handler.d.ts +0 -30
  342. package/dist/services/auth-handler.d.ts.map +0 -1
  343. package/dist/services/background-task-manager.d.ts +0 -114
  344. package/dist/services/background-task-manager.d.ts.map +0 -1
  345. package/dist/services/checkpoint-manager.d.ts +0 -167
  346. package/dist/services/checkpoint-manager.d.ts.map +0 -1
  347. package/dist/services/clipboard-service.d.ts +0 -37
  348. package/dist/services/clipboard-service.d.ts.map +0 -1
  349. package/dist/services/connectivity-manager.d.ts +0 -18
  350. package/dist/services/connectivity-manager.d.ts.map +0 -1
  351. package/dist/services/conversation-manager.d.ts +0 -73
  352. package/dist/services/conversation-manager.d.ts.map +0 -1
  353. package/dist/services/environment-context-injector.d.ts +0 -69
  354. package/dist/services/environment-context-injector.d.ts.map +0 -1
  355. package/dist/services/fast-context-agent.d.ts +0 -12
  356. package/dist/services/fast-context-agent.d.ts.map +0 -1
  357. package/dist/services/input-detection-agent.d.ts +0 -40
  358. package/dist/services/input-detection-agent.d.ts.map +0 -1
  359. package/dist/services/input-requirement-detector.d.ts +0 -28
  360. package/dist/services/input-requirement-detector.d.ts.map +0 -1
  361. package/dist/services/local-chat-storage.d.ts +0 -182
  362. package/dist/services/local-chat-storage.d.ts.map +0 -1
  363. package/dist/services/monitored-shell-manager.d.ts +0 -120
  364. package/dist/services/monitored-shell-manager.d.ts.map +0 -1
  365. package/dist/services/ollama-service.d.ts +0 -197
  366. package/dist/services/ollama-service.d.ts.map +0 -1
  367. package/dist/services/session-quota-manager.d.ts +0 -101
  368. package/dist/services/session-quota-manager.d.ts.map +0 -1
  369. package/dist/services/shell-input-agent.d.ts +0 -89
  370. package/dist/services/shell-input-agent.d.ts.map +0 -1
  371. package/dist/services/sub-agent-manager.d.ts +0 -140
  372. package/dist/services/sub-agent-manager.d.ts.map +0 -1
  373. package/dist/services/warpify-detector.d.ts +0 -43
  374. package/dist/services/warpify-detector.d.ts.map +0 -1
  375. package/dist/services/workflow-storage.d.ts +0 -72
  376. package/dist/services/workflow-storage.d.ts.map +0 -1
  377. package/dist/test-ssh-handler.d.ts +0 -8
  378. package/dist/test-ssh-handler.d.ts.map +0 -1
  379. package/dist/tools/background-command.d.ts +0 -11
  380. package/dist/tools/background-command.d.ts.map +0 -1
  381. package/dist/tools/command.d.ts +0 -3
  382. package/dist/tools/command.d.ts.map +0 -1
  383. package/dist/tools/create-image.d.ts +0 -10
  384. package/dist/tools/create-image.d.ts.map +0 -1
  385. package/dist/tools/enter-remote-session.d.ts +0 -48
  386. package/dist/tools/enter-remote-session.d.ts.map +0 -1
  387. package/dist/tools/fast-context.d.ts +0 -3
  388. package/dist/tools/fast-context.d.ts.map +0 -1
  389. package/dist/tools/file-ops.d.ts +0 -7
  390. package/dist/tools/file-ops.d.ts.map +0 -1
  391. package/dist/tools/find-files.d.ts +0 -49
  392. package/dist/tools/find-files.d.ts.map +0 -1
  393. package/dist/tools/get-diff.d.ts +0 -14
  394. package/dist/tools/get-diff.d.ts.map +0 -1
  395. package/dist/tools/grep-search.d.ts +0 -155
  396. package/dist/tools/grep-search.d.ts.map +0 -1
  397. package/dist/tools/inspect-symbol.d.ts +0 -32
  398. package/dist/tools/inspect-symbol.d.ts.map +0 -1
  399. package/dist/tools/plan-mode.d.ts +0 -140
  400. package/dist/tools/plan-mode.d.ts.map +0 -1
  401. package/dist/tools/read-binary-file.d.ts +0 -10
  402. package/dist/tools/read-binary-file.d.ts.map +0 -1
  403. package/dist/tools/registry.d.ts +0 -31
  404. package/dist/tools/registry.d.ts.map +0 -1
  405. package/dist/tools/reproduce_issue.d.ts +0 -2
  406. package/dist/tools/reproduce_issue.d.ts.map +0 -1
  407. package/dist/tools/sub-agent.d.ts +0 -9
  408. package/dist/tools/sub-agent.d.ts.map +0 -1
  409. package/dist/tools/task-complete.d.ts +0 -3
  410. package/dist/tools/task-complete.d.ts.map +0 -1
  411. package/dist/tools/types.d.ts +0 -40
  412. package/dist/tools/types.d.ts.map +0 -1
  413. package/dist/tools/validation.d.ts +0 -47
  414. package/dist/tools/validation.d.ts.map +0 -1
  415. package/dist/tools/web-search.d.ts +0 -24
  416. package/dist/tools/web-search.d.ts.map +0 -1
  417. package/dist/tools/workflow-tool.d.ts +0 -11
  418. package/dist/tools/workflow-tool.d.ts.map +0 -1
  419. package/dist/types/index.d.ts +0 -123
  420. package/dist/types/index.d.ts.map +0 -1
  421. package/dist/types/workflow.d.ts +0 -110
  422. package/dist/types/workflow.d.ts.map +0 -1
  423. package/dist/ui/components/AgentTimer.d.ts +0 -7
  424. package/dist/ui/components/AgentTimer.d.ts.map +0 -1
  425. package/dist/ui/components/App.d.ts +0 -197
  426. package/dist/ui/components/App.d.ts.map +0 -1
  427. package/dist/ui/components/AuthScreen.d.ts +0 -8
  428. package/dist/ui/components/AuthScreen.d.ts.map +0 -1
  429. package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
  430. package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
  431. package/dist/ui/components/Breadcrumbs.d.ts +0 -13
  432. package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
  433. package/dist/ui/components/CircularSelectInput.d.ts +0 -24
  434. package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
  435. package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
  436. package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
  437. package/dist/ui/components/CodeBlock.d.ts +0 -9
  438. package/dist/ui/components/CodeBlock.d.ts.map +0 -1
  439. package/dist/ui/components/ConfigViewer.d.ts +0 -11
  440. package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
  441. package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
  442. package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
  443. package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
  444. package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
  445. package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
  446. package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
  447. package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
  448. package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
  449. package/dist/ui/components/DiffViewer.d.ts +0 -9
  450. package/dist/ui/components/DiffViewer.d.ts.map +0 -1
  451. package/dist/ui/components/ErrorBoundary.d.ts +0 -17
  452. package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
  453. package/dist/ui/components/FileCreationPreview.d.ts +0 -8
  454. package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
  455. package/dist/ui/components/FileOperation.d.ts +0 -10
  456. package/dist/ui/components/FileOperation.d.ts.map +0 -1
  457. package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
  458. package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
  459. package/dist/ui/components/FontRecommendation.d.ts +0 -1
  460. package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
  461. package/dist/ui/components/InputBox.d.ts +0 -42
  462. package/dist/ui/components/InputBox.d.ts.map +0 -1
  463. package/dist/ui/components/InteractiveShell.d.ts +0 -30
  464. package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
  465. package/dist/ui/components/KeyboardHelp.d.ts +0 -7
  466. package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
  467. package/dist/ui/components/LoadingIndicator.d.ts +0 -3
  468. package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
  469. package/dist/ui/components/MCPAddScreen.d.ts +0 -13
  470. package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
  471. package/dist/ui/components/MCPListScreen.d.ts +0 -17
  472. package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
  473. package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
  474. package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
  475. package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
  476. package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
  477. package/dist/ui/components/MessageBox.d.ts +0 -10
  478. package/dist/ui/components/MessageBox.d.ts.map +0 -1
  479. package/dist/ui/components/MessageDisplay.d.ts +0 -14
  480. package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
  481. package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
  482. package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
  483. package/dist/ui/components/MultiLineInput.d.ts +0 -13
  484. package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
  485. package/dist/ui/components/PasswordPrompt.d.ts +0 -9
  486. package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
  487. package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
  488. package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
  489. package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
  490. package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
  491. package/dist/ui/components/SelectPrompt.d.ts +0 -12
  492. package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
  493. package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
  494. package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
  495. package/dist/ui/components/StatusBar.d.ts +0 -14
  496. package/dist/ui/components/StatusBar.d.ts.map +0 -1
  497. package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
  498. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
  499. package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
  500. package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
  501. package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
  502. package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
  503. package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
  504. package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
  505. package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
  506. package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
  507. package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
  508. package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
  509. package/dist/ui/components/ToolResult.d.ts +0 -10
  510. package/dist/ui/components/ToolResult.d.ts.map +0 -1
  511. package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
  512. package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
  513. package/dist/ui/components/WelcomeBanner.d.ts +0 -3
  514. package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
  515. package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
  516. package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
  517. package/dist/utils/ansi-encoder.d.ts +0 -7
  518. package/dist/utils/ansi-encoder.d.ts.map +0 -1
  519. package/dist/utils/chat-formatter.d.ts +0 -12
  520. package/dist/utils/chat-formatter.d.ts.map +0 -1
  521. package/dist/utils/command-history.d.ts +0 -24
  522. package/dist/utils/command-history.d.ts.map +0 -1
  523. package/dist/utils/context-sanitizer.d.ts +0 -50
  524. package/dist/utils/context-sanitizer.d.ts.map +0 -1
  525. package/dist/utils/conversation-logger.d.ts +0 -142
  526. package/dist/utils/conversation-logger.d.ts.map +0 -1
  527. package/dist/utils/custom-commands-manager.d.ts +0 -59
  528. package/dist/utils/custom-commands-manager.d.ts.map +0 -1
  529. package/dist/utils/editor-utils.d.ts +0 -101
  530. package/dist/utils/editor-utils.d.ts.map +0 -1
  531. package/dist/utils/file.d.ts +0 -61
  532. package/dist/utils/file.d.ts.map +0 -1
  533. package/dist/utils/input-classifier.d.ts +0 -25
  534. package/dist/utils/input-classifier.d.ts.map +0 -1
  535. package/dist/utils/logger.d.ts +0 -17
  536. package/dist/utils/logger.d.ts.map +0 -1
  537. package/dist/utils/markdown-parser.d.ts +0 -60
  538. package/dist/utils/markdown-parser.d.ts.map +0 -1
  539. package/dist/utils/shell.d.ts +0 -47
  540. package/dist/utils/shell.d.ts.map +0 -1
  541. package/dist/utils/state.d.ts +0 -13
  542. package/dist/utils/state.d.ts.map +0 -1
  543. package/dist/utils/syntax-checker.d.ts +0 -24
  544. package/dist/utils/syntax-checker.d.ts.map +0 -1
  545. package/dist/utils/terminal-output.d.ts +0 -25
  546. package/dist/utils/terminal-output.d.ts.map +0 -1
  547. package/dist/utils/text-clipboard.d.ts +0 -12
  548. package/dist/utils/text-clipboard.d.ts.map +0 -1
  549. package/dist/utils/unicode-sanitizer.d.ts +0 -44
  550. package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
  551. package/dist/utils/version-checker.d.ts +0 -14
  552. package/dist/utils/version-checker.d.ts.map +0 -1
@@ -1,214 +1,214 @@
1
- /**
2
- * Web Search Tool
3
- * Provides web search capabilities via backend API
4
- * Backend handles Serper API calls server-side
5
- */
6
- /**
7
- * Perform web search via backend API
8
- * Backend handles Serper API calls server-side
9
- */
10
1
  async function performBackendSearch(query, limit = 10, allowedDomains, blockedDomains) {
11
- // Import axios and apiClient dynamically to avoid circular dependencies
12
- const axios = (await import('axios')).default;
13
- const { apiClient } = await import('../services/api-client.js');
14
- // Check if authenticated
15
- if (!apiClient.isAuthenticated()) {
16
- throw new Error('Authentication required. Please sign in to use web search.\n' +
17
- 'Web search is a backend feature that requires authentication.');
18
- }
19
- try {
20
- // Import build config - values frozen at compile time for security
21
- // SECURITY: This prevents malicious .env files from overriding production URLs
22
- const { IS_DEV_BUILD, DEV_BACKEND_URL, PRODUCTION_BACKEND_URL } = await import('../config/build-config.js');
23
- const baseURL = IS_DEV_BUILD ? DEV_BACKEND_URL : PRODUCTION_BACKEND_URL;
24
- const response = await axios.post(`${baseURL}/web-search/search`, {
25
- query,
26
- limit,
27
- allowed_domains: allowedDomains,
28
- blocked_domains: blockedDomains,
29
- }, {
30
- headers: {
31
- 'Content-Type': 'application/json',
32
- 'Authorization': `Bearer ${apiClient.sessionToken}`,
33
- },
34
- });
35
- if (!response.data || !response.data.success) {
36
- throw new Error(response.data?.error?.message || 'Search failed');
2
+ const axios = (await import("axios")).default;
3
+ const { apiClient } = await import("../services/api-client.js");
4
+ if (!apiClient.isAuthenticated()) {
5
+ throw new Error(
6
+ "Authentication required. Please sign in to use web search.\nWeb search is a backend feature that requires authentication."
7
+ );
8
+ }
9
+ try {
10
+ const { IS_DEV_BUILD, DEV_BACKEND_URL, PRODUCTION_BACKEND_URL } = await import("../config/build-config.js");
11
+ const baseURL = IS_DEV_BUILD ? DEV_BACKEND_URL : PRODUCTION_BACKEND_URL;
12
+ const response = await axios.post(
13
+ `${baseURL}/search`,
14
+ {
15
+ query,
16
+ limit,
17
+ allowed_domains: allowedDomains,
18
+ blocked_domains: blockedDomains
19
+ },
20
+ {
21
+ headers: {
22
+ "Content-Type": "application/json",
23
+ "Authorization": `Bearer ${apiClient.sessionToken}`
37
24
  }
38
- return response.data.data;
25
+ }
26
+ );
27
+ if (!response.data || !response.data.success) {
28
+ throw new Error(response.data?.error?.message || "Search failed");
39
29
  }
40
- catch (error) {
41
- if (error.response?.status === 401) {
42
- throw new Error('Authentication required. Please sign in to use web search.\n' +
43
- 'Web search is a backend feature that requires authentication.');
44
- }
45
- throw new Error(error.response?.data?.error?.message ||
46
- error.message ||
47
- 'Web search request failed');
30
+ return response.data.data;
31
+ } catch (error) {
32
+ if (error.response?.status === 401) {
33
+ throw new Error(
34
+ "Authentication required. Please sign in to use web search.\nWeb search is a backend feature that requires authentication."
35
+ );
48
36
  }
37
+ throw new Error(
38
+ error.response?.data?.error?.message || error.message || "Web search request failed"
39
+ );
40
+ }
49
41
  }
50
- /**
51
- * Fetch URL content via backend API
52
- * Backend handles URL fetching and parsing server-side
53
- */
54
42
  async function fetchUrlViaBackend(url) {
55
- // Import axios and apiClient dynamically to avoid circular dependencies
56
- const axios = (await import('axios')).default;
57
- const { apiClient } = await import('../services/api-client.js');
58
- // Check if authenticated
59
- if (!apiClient.isAuthenticated()) {
60
- throw new Error('Authentication required. Please sign in to fetch URLs.\n' +
61
- 'URL fetching is a backend feature that requires authentication.');
62
- }
63
- try {
64
- // Import build config - values frozen at compile time for security
65
- // SECURITY: This prevents malicious .env files from overriding production URLs
66
- const { IS_DEV_BUILD, DEV_BACKEND_URL, PRODUCTION_BACKEND_URL } = await import('../config/build-config.js');
67
- const baseURL = IS_DEV_BUILD ? DEV_BACKEND_URL : PRODUCTION_BACKEND_URL;
68
- const response = await axios.post(`${baseURL}/web-search/fetch-url`, { url }, {
69
- headers: {
70
- 'Content-Type': 'application/json',
71
- 'Authorization': `Bearer ${apiClient.sessionToken}`,
72
- },
73
- });
74
- if (!response.data || !response.data.success) {
75
- throw new Error(response.data?.error?.message || 'Failed to fetch URL');
43
+ const axios = (await import("axios")).default;
44
+ const { apiClient } = await import("../services/api-client.js");
45
+ if (!apiClient.isAuthenticated()) {
46
+ throw new Error(
47
+ "Authentication required. Please sign in to fetch URLs.\nURL fetching is a backend feature that requires authentication."
48
+ );
49
+ }
50
+ try {
51
+ const { IS_DEV_BUILD, DEV_BACKEND_URL, PRODUCTION_BACKEND_URL } = await import("../config/build-config.js");
52
+ const baseURL = IS_DEV_BUILD ? DEV_BACKEND_URL : PRODUCTION_BACKEND_URL;
53
+ const response = await axios.post(
54
+ `${baseURL}/search/fetch-url`,
55
+ { url },
56
+ {
57
+ headers: {
58
+ "Content-Type": "application/json",
59
+ "Authorization": `Bearer ${apiClient.sessionToken}`
76
60
  }
77
- return response.data.data.content;
61
+ }
62
+ );
63
+ if (!response.data || !response.data.success) {
64
+ throw new Error(response.data?.error?.message || "Failed to fetch URL");
78
65
  }
79
- catch (error) {
80
- if (error.response?.status === 401) {
81
- throw new Error('Authentication required. Please sign in to fetch URLs.\n' +
82
- 'URL fetching is a backend feature that requires authentication.');
83
- }
84
- throw new Error(error.response?.data?.error?.message ||
85
- error.message ||
86
- 'Failed to fetch URL');
66
+ return response.data.data.content;
67
+ } catch (error) {
68
+ if (error.response?.status === 401) {
69
+ throw new Error(
70
+ "Authentication required. Please sign in to fetch URLs.\nURL fetching is a backend feature that requires authentication."
71
+ );
87
72
  }
73
+ throw new Error(
74
+ error.response?.data?.error?.message || error.message || "Failed to fetch URL"
75
+ );
76
+ }
88
77
  }
89
- export const webSearchTool = {
90
- schema: {
91
- name: 'web_search',
92
- description: `Search the web using backend API (real Google search results via Serper).
93
-
94
- IMPORTANT: You MUST provide a reason_text parameter explaining why you are searching the web and what information you need. This will be shown to the user before the search executes.
95
-
96
- - Provides actual Google search results with organic listings
97
- - Returns search results with titles, URLs, and snippets
98
- - Works for all types of queries including "best X", "top Y", etc.
99
- - Use for finding current information, documentation, tutorials, and lists
100
- - Can filter by allowed or blocked domains
78
+ const webSearchTool = {
79
+ schema: {
80
+ name: "web_search",
81
+ description: `Search the web using backend API (real Google search results via Serper).
82
+
83
+ IMPORTANT: You MUST provide a reason_text parameter explaining why you are searching the web and what information you need. This will be shown to the user before the search executes.
84
+
85
+ - Provides actual Google search results with organic listings
86
+ - Returns search results with titles, URLs, and snippets
87
+ - Works for all types of queries including "best X", "top Y", etc.
88
+ - Use for finding current information, documentation, tutorials, and lists
89
+ - Can filter by allowed or blocked domains
101
90
  - Requires authentication to use`,
102
- parameters: {
103
- type: 'object',
104
- properties: {
105
- reason_text: {
106
- type: 'string',
107
- description: 'REQUIRED: A brief explanation of why you are searching the web and what information you need. This will be shown to the user. Example: "Searching for the latest best practices for React hooks"'
108
- },
109
- query: {
110
- type: 'string',
111
- description: 'The search query to use (2-200 characters)'
112
- },
113
- limit: {
114
- type: 'number',
115
- description: 'Maximum number of results to return (1-10)',
116
- default: 10
117
- },
118
- allowed_domains: {
119
- type: 'array',
120
- items: { type: 'string' },
121
- description: 'Only include results from these domains'
122
- },
123
- blocked_domains: {
124
- type: 'array',
125
- items: { type: 'string' },
126
- description: 'Never include results from these domains'
127
- }
128
- },
129
- required: ['reason_text', 'query']
130
- }
131
- },
132
- async execute(args, context) {
133
- const query = args.query;
134
- const limit = Math.min(Math.max(args.limit || 10, 1), 10);
135
- const allowedDomains = args.allowed_domains;
136
- const blockedDomains = args.blocked_domains;
137
- if (!query || query.length < 2) {
138
- throw new Error('Search query must be at least 2 characters');
139
- }
140
- if (query.length > 200) {
141
- throw new Error('Search query must not exceed 200 characters');
142
- }
143
- try {
144
- // Perform the search via backend API
145
- const searchResponse = await performBackendSearch(query, limit, allowedDomains, blockedDomains);
146
- // Format results
147
- if (searchResponse.results.length === 0) {
148
- return `No results found for query: "${query}"`;
149
- }
150
- const formattedResults = searchResponse.results.map((result, index) => {
151
- return `${index + 1}. **${result.title}**\n URL: ${result.url}\n ${result.snippet}\n`;
152
- }).join('\n');
153
- return `Search results for "${query}" (${searchResponse.results.length} results):\n\n${formattedResults}`;
154
- }
155
- catch (error) {
156
- throw new Error(`Web search failed: ${error.message}`);
91
+ parameters: {
92
+ type: "object",
93
+ properties: {
94
+ reason_text: {
95
+ type: "string",
96
+ description: 'REQUIRED: A brief explanation of why you are searching the web and what information you need. This will be shown to the user. Example: "Searching for the latest best practices for React hooks"'
97
+ },
98
+ query: {
99
+ type: "string",
100
+ description: "The search query to use (2-200 characters)"
101
+ },
102
+ limit: {
103
+ type: "number",
104
+ description: "Maximum number of results to return (1-10)",
105
+ default: 10
106
+ },
107
+ allowed_domains: {
108
+ type: "array",
109
+ items: { type: "string" },
110
+ description: "Only include results from these domains"
111
+ },
112
+ blocked_domains: {
113
+ type: "array",
114
+ items: { type: "string" },
115
+ description: "Never include results from these domains"
157
116
  }
117
+ },
118
+ required: ["reason_text", "query"]
158
119
  }
120
+ },
121
+ async execute(args, context) {
122
+ const query = args.query;
123
+ const limit = Math.min(Math.max(args.limit || 10, 1), 10);
124
+ const allowedDomains = args.allowed_domains;
125
+ const blockedDomains = args.blocked_domains;
126
+ if (!query || query.length < 2) {
127
+ throw new Error("Search query must be at least 2 characters");
128
+ }
129
+ if (query.length > 200) {
130
+ throw new Error("Search query must not exceed 200 characters");
131
+ }
132
+ try {
133
+ const searchResponse = await performBackendSearch(
134
+ query,
135
+ limit,
136
+ allowedDomains,
137
+ blockedDomains
138
+ );
139
+ if (searchResponse.results.length === 0) {
140
+ return `No results found for query: "${query}"`;
141
+ }
142
+ const formattedResults = searchResponse.results.map((result, index) => {
143
+ return `${index + 1}. **${result.title}**
144
+ URL: ${result.url}
145
+ ${result.snippet}
146
+ `;
147
+ }).join("\n");
148
+ return `Search results for "${query}" (${searchResponse.results.length} results):
149
+
150
+ ${formattedResults}`;
151
+ } catch (error) {
152
+ throw new Error(`Web search failed: ${error.message}`);
153
+ }
154
+ }
159
155
  };
160
- export const fetchUrlTool = {
161
- schema: {
162
- name: 'fetch_url',
163
- description: `Fetch and extract content from a URL for in-depth research via backend API.
164
-
165
- IMPORTANT: You MUST provide a reason_text parameter explaining why you are fetching this URL and what information you need from it. This will be shown to the user before the fetch executes.
166
-
167
- - Fetches HTML content and converts it to readable text
168
- - Handles redirects automatically
169
- - Returns up to 15,000 characters of content
170
- - Use after web_search to get full content from promising URLs
171
- - Ideal for documentation, articles, tutorials, and blog posts
172
- - Works best with text-heavy pages (not ideal for complex web apps)
156
+ const fetchUrlTool = {
157
+ schema: {
158
+ name: "fetch_url",
159
+ description: `Fetch and extract content from a URL for in-depth research via backend API.
160
+
161
+ IMPORTANT: You MUST provide a reason_text parameter explaining why you are fetching this URL and what information you need from it. This will be shown to the user before the fetch executes.
162
+
163
+ - Fetches HTML content and converts it to readable text
164
+ - Handles redirects automatically
165
+ - Returns up to 15,000 characters of content
166
+ - Use after web_search to get full content from promising URLs
167
+ - Ideal for documentation, articles, tutorials, and blog posts
168
+ - Works best with text-heavy pages (not ideal for complex web apps)
173
169
  - Requires authentication to use`,
174
- parameters: {
175
- type: 'object',
176
- properties: {
177
- reason_text: {
178
- type: 'string',
179
- description: 'REQUIRED: A brief explanation of why you are fetching this URL and what information you need from it. This will be shown to the user. Example: "Fetching the React documentation page to understand the useEffect hook"'
180
- },
181
- url: {
182
- type: 'string',
183
- description: 'The URL to fetch content from'
184
- }
185
- },
186
- required: ['reason_text', 'url']
187
- }
188
- },
189
- async execute(args, context) {
190
- const url = args.url;
191
- if (!url) {
192
- throw new Error('URL is required');
193
- }
194
- // Validate URL
195
- try {
196
- new URL(url);
197
- }
198
- catch {
199
- throw new Error('Invalid URL format');
200
- }
201
- try {
202
- const content = await fetchUrlViaBackend(url);
203
- return `Content from ${url}:\n\n${content}`;
204
- }
205
- catch (error) {
206
- throw new Error(`Failed to fetch URL: ${error.message}`);
170
+ parameters: {
171
+ type: "object",
172
+ properties: {
173
+ reason_text: {
174
+ type: "string",
175
+ description: 'REQUIRED: A brief explanation of why you are fetching this URL and what information you need from it. This will be shown to the user. Example: "Fetching the React documentation page to understand the useEffect hook"'
176
+ },
177
+ url: {
178
+ type: "string",
179
+ description: "The URL to fetch content from"
207
180
  }
181
+ },
182
+ required: ["reason_text", "url"]
208
183
  }
184
+ },
185
+ async execute(args, context) {
186
+ const url = args.url;
187
+ if (!url) {
188
+ throw new Error("URL is required");
189
+ }
190
+ try {
191
+ new URL(url);
192
+ } catch {
193
+ throw new Error("Invalid URL format");
194
+ }
195
+ try {
196
+ const content = await fetchUrlViaBackend(url);
197
+ return `Content from ${url}:
198
+
199
+ ${content}`;
200
+ } catch (error) {
201
+ throw new Error(`Failed to fetch URL: ${error.message}`);
202
+ }
203
+ }
204
+ };
205
+ var web_search_default = {
206
+ webSearchTool,
207
+ fetchUrlTool
209
208
  };
210
- export default {
211
- webSearchTool,
212
- fetchUrlTool
209
+ export {
210
+ web_search_default as default,
211
+ fetchUrlTool,
212
+ webSearchTool
213
213
  };
214
214
  //# sourceMappingURL=web-search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/tools/web-search.ts"],"sourcesContent":["/**\r\n * Web Search Tool\r\n * Provides web search capabilities via backend API\r\n * Backend handles Serper API calls server-side\r\n */\r\n\r\nimport { Tool, ToolExecutionContext } from './types.js';\r\n\r\nexport interface WebSearchResult {\r\n title: string;\r\n url: string;\r\n snippet: string;\r\n}\r\n\r\nexport interface WebSearchResponse {\r\n query: string;\r\n results: WebSearchResult[];\r\n timestamp: Date;\r\n}\r\n\r\n/**\r\n * Perform web search via backend API\r\n * Backend handles Serper API calls server-side\r\n */\r\nasync function performBackendSearch(\r\n query: string,\r\n limit: number = 10,\r\n allowedDomains?: string[],\r\n blockedDomains?: string[]\r\n): Promise<WebSearchResponse> {\r\n // Import axios and apiClient dynamically to avoid circular dependencies\r\n const axios = (await import('axios')).default;\r\n const { apiClient } = await import('../services/api-client.js');\r\n\r\n // Check if authenticated\r\n if (!apiClient.isAuthenticated()) {\r\n throw new Error(\r\n 'Authentication required. Please sign in to use web search.\\n' +\r\n 'Web search is a backend feature that requires authentication.'\r\n );\r\n }\r\n\r\n try {\r\n // Import build config - values frozen at compile time for security\r\n // SECURITY: This prevents malicious .env files from overriding production URLs\r\n const { IS_DEV_BUILD, DEV_BACKEND_URL, PRODUCTION_BACKEND_URL } = await import('../config/build-config.js');\r\n const baseURL = IS_DEV_BUILD ? DEV_BACKEND_URL : PRODUCTION_BACKEND_URL;\r\n\r\n const response = await axios.post(\r\n `${baseURL}/search`,\r\n {\r\n query,\r\n limit,\r\n allowed_domains: allowedDomains,\r\n blocked_domains: blockedDomains,\r\n },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${(apiClient as any).sessionToken}`,\r\n },\r\n }\r\n );\r\n\r\n if (!response.data || !response.data.success) {\r\n throw new Error(response.data?.error?.message || 'Search failed');\r\n }\r\n\r\n return response.data.data;\r\n } catch (error: any) {\r\n if (error.response?.status === 401) {\r\n throw new Error(\r\n 'Authentication required. Please sign in to use web search.\\n' +\r\n 'Web search is a backend feature that requires authentication.'\r\n );\r\n }\r\n throw new Error(\r\n error.response?.data?.error?.message ||\r\n error.message ||\r\n 'Web search request failed'\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Fetch URL content via backend API\r\n * Backend handles URL fetching and parsing server-side\r\n */\r\nasync function fetchUrlViaBackend(url: string): Promise<string> {\r\n // Import axios and apiClient dynamically to avoid circular dependencies\r\n const axios = (await import('axios')).default;\r\n const { apiClient } = await import('../services/api-client.js');\r\n\r\n // Check if authenticated\r\n if (!apiClient.isAuthenticated()) {\r\n throw new Error(\r\n 'Authentication required. Please sign in to fetch URLs.\\n' +\r\n 'URL fetching is a backend feature that requires authentication.'\r\n );\r\n }\r\n\r\n try {\r\n // Import build config - values frozen at compile time for security\r\n // SECURITY: This prevents malicious .env files from overriding production URLs\r\n const { IS_DEV_BUILD, DEV_BACKEND_URL, PRODUCTION_BACKEND_URL } = await import('../config/build-config.js');\r\n const baseURL = IS_DEV_BUILD ? DEV_BACKEND_URL : PRODUCTION_BACKEND_URL;\r\n\r\n const response = await axios.post(\r\n `${baseURL}/search/fetch-url`,\r\n { url },\r\n {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${(apiClient as any).sessionToken}`,\r\n },\r\n }\r\n );\r\n\r\n if (!response.data || !response.data.success) {\r\n throw new Error(response.data?.error?.message || 'Failed to fetch URL');\r\n }\r\n\r\n return response.data.data.content;\r\n } catch (error: any) {\r\n if (error.response?.status === 401) {\r\n throw new Error(\r\n 'Authentication required. Please sign in to fetch URLs.\\n' +\r\n 'URL fetching is a backend feature that requires authentication.'\r\n );\r\n }\r\n throw new Error(\r\n error.response?.data?.error?.message ||\r\n error.message ||\r\n 'Failed to fetch URL'\r\n );\r\n }\r\n}\r\n\r\nexport const webSearchTool: Tool = {\r\n schema: {\r\n name: 'web_search',\r\n description: `Search the web using backend API (real Google search results via Serper).\r\n\r\nIMPORTANT: You MUST provide a reason_text parameter explaining why you are searching the web and what information you need. This will be shown to the user before the search executes.\r\n\r\n- Provides actual Google search results with organic listings\r\n- Returns search results with titles, URLs, and snippets\r\n- Works for all types of queries including \"best X\", \"top Y\", etc.\r\n- Use for finding current information, documentation, tutorials, and lists\r\n- Can filter by allowed or blocked domains\r\n- Requires authentication to use`,\r\n parameters: {\r\n type: 'object',\r\n properties: {\r\n reason_text: {\r\n type: 'string',\r\n description: 'REQUIRED: A brief explanation of why you are searching the web and what information you need. This will be shown to the user. Example: \"Searching for the latest best practices for React hooks\"'\r\n },\r\n query: {\r\n type: 'string',\r\n description: 'The search query to use (2-200 characters)'\r\n },\r\n limit: {\r\n type: 'number',\r\n description: 'Maximum number of results to return (1-10)',\r\n default: 10\r\n },\r\n allowed_domains: {\r\n type: 'array',\r\n items: { type: 'string' },\r\n description: 'Only include results from these domains'\r\n },\r\n blocked_domains: {\r\n type: 'array',\r\n items: { type: 'string' },\r\n description: 'Never include results from these domains'\r\n }\r\n },\r\n required: ['reason_text', 'query']\r\n }\r\n },\r\n\r\n async execute(args: Record<string, any>, context: ToolExecutionContext): Promise<string> {\r\n const query = args.query as string;\r\n const limit = Math.min(Math.max(args.limit || 10, 1), 10);\r\n const allowedDomains = args.allowed_domains as string[] | undefined;\r\n const blockedDomains = args.blocked_domains as string[] | undefined;\r\n\r\n if (!query || query.length < 2) {\r\n throw new Error('Search query must be at least 2 characters');\r\n }\r\n\r\n if (query.length > 200) {\r\n throw new Error('Search query must not exceed 200 characters');\r\n }\r\n\r\n try {\r\n // Perform the search via backend API\r\n const searchResponse = await performBackendSearch(\r\n query,\r\n limit,\r\n allowedDomains,\r\n blockedDomains\r\n );\r\n\r\n // Format results\r\n if (searchResponse.results.length === 0) {\r\n return `No results found for query: \"${query}\"`;\r\n }\r\n\r\n const formattedResults = searchResponse.results.map((result, index) => {\r\n return `${index + 1}. **${result.title}**\\n URL: ${result.url}\\n ${result.snippet}\\n`;\r\n }).join('\\n');\r\n\r\n return `Search results for \"${query}\" (${searchResponse.results.length} results):\\n\\n${formattedResults}`;\r\n\r\n } catch (error) {\r\n throw new Error(`Web search failed: ${(error as Error).message}`);\r\n }\r\n }\r\n};\r\n\r\nexport const fetchUrlTool: Tool = {\r\n schema: {\r\n name: 'fetch_url',\r\n description: `Fetch and extract content from a URL for in-depth research via backend API.\r\n\r\nIMPORTANT: You MUST provide a reason_text parameter explaining why you are fetching this URL and what information you need from it. This will be shown to the user before the fetch executes.\r\n\r\n- Fetches HTML content and converts it to readable text\r\n- Handles redirects automatically\r\n- Returns up to 15,000 characters of content\r\n- Use after web_search to get full content from promising URLs\r\n- Ideal for documentation, articles, tutorials, and blog posts\r\n- Works best with text-heavy pages (not ideal for complex web apps)\r\n- Requires authentication to use`,\r\n parameters: {\r\n type: 'object',\r\n properties: {\r\n reason_text: {\r\n type: 'string',\r\n description: 'REQUIRED: A brief explanation of why you are fetching this URL and what information you need from it. This will be shown to the user. Example: \"Fetching the React documentation page to understand the useEffect hook\"'\r\n },\r\n url: {\r\n type: 'string',\r\n description: 'The URL to fetch content from'\r\n }\r\n },\r\n required: ['reason_text', 'url']\r\n }\r\n },\r\n\r\n async execute(args: Record<string, any>, context: ToolExecutionContext): Promise<string> {\r\n const url = args.url as string;\r\n\r\n if (!url) {\r\n throw new Error('URL is required');\r\n }\r\n\r\n // Validate URL\r\n try {\r\n new URL(url);\r\n } catch {\r\n throw new Error('Invalid URL format');\r\n }\r\n\r\n try {\r\n const content = await fetchUrlViaBackend(url);\r\n return `Content from ${url}:\\n\\n${content}`;\r\n } catch (error) {\r\n throw new Error(`Failed to fetch URL: ${(error as Error).message}`);\r\n }\r\n }\r\n};\r\n\r\nexport default {\r\n webSearchTool,\r\n fetchUrlTool\r\n};\r\n"],"mappings":"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","names":[]}
@@ -1,87 +1,82 @@
1
- /**
2
- * Workflow Tool
3
- *
4
- * Allows the AI to manage workflow execution state.
5
- * Used during workflow execution mode to:
6
- * - Mark steps as complete
7
- * - Exit the workflow (on success, error, or cancellation)
8
- */
9
- export const workflowTool = {
10
- schema: {
11
- name: 'workflow',
12
- description: `Manage workflow execution state. Use this during workflow execution to signal step completion or to exit the workflow.
13
-
14
- ACTIONS:
15
- - step_complete: Call after successfully completing a workflow step
16
- - exit: Call to terminate the workflow (for errors or early termination)
17
-
18
- USAGE:
19
- - After completing step 3: workflow(action="step_complete", step_number=3)
20
- - On error: workflow(action="exit", exit_type="error", reason="Command failed with error...")
21
- - On success (final step): workflow(action="step_complete", step_number=N) - workflow ends automatically
22
-
1
+ const workflowTool = {
2
+ schema: {
3
+ name: "workflow",
4
+ description: `Manage workflow execution state. Use this during workflow execution to signal step completion or to exit the workflow.
5
+
6
+ ACTIONS:
7
+ - step_complete: Call after successfully completing a workflow step
8
+ - exit: Call to terminate the workflow (for errors or early termination)
9
+
10
+ USAGE:
11
+ - After completing step 3: workflow(action="step_complete", step_number=3)
12
+ - On error: workflow(action="exit", exit_type="error", reason="Command failed with error...")
13
+ - On success (final step): workflow(action="step_complete", step_number=N) - workflow ends automatically
14
+
23
15
  IMPORTANT: Always call step_complete after each step. The workflow will not proceed to the next step until you mark the current one as complete.`,
24
- parameters: {
25
- type: 'object',
26
- properties: {
27
- action: {
28
- type: 'string',
29
- enum: ['step_complete', 'exit'],
30
- description: 'The action to perform: step_complete to mark a step done, exit to terminate the workflow'
31
- },
32
- step_number: {
33
- type: 'number',
34
- description: 'The step number that was completed (1-indexed). Required for step_complete action.'
35
- },
36
- exit_type: {
37
- type: 'string',
38
- enum: ['success', 'error', 'cancelled'],
39
- description: 'Type of exit. Required for exit action.'
40
- },
41
- reason: {
42
- type: 'string',
43
- description: 'Reason for exiting (especially important for errors). Optional but recommended for exit action.'
44
- }
45
- },
46
- required: ['action'],
16
+ parameters: {
17
+ type: "object",
18
+ properties: {
19
+ action: {
20
+ type: "string",
21
+ enum: ["step_complete", "exit"],
22
+ description: "The action to perform: step_complete to mark a step done, exit to terminate the workflow"
47
23
  },
48
- },
49
- async execute(args) {
50
- const { action, step_number, exit_type, reason } = args;
51
- switch (action) {
52
- case 'step_complete':
53
- if (step_number === undefined || step_number === null) {
54
- return JSON.stringify({
55
- success: false,
56
- error: 'step_number is required for step_complete action'
57
- });
58
- }
59
- return JSON.stringify({
60
- success: true,
61
- action: 'step_complete',
62
- step_number: step_number,
63
- message: `Step ${step_number} marked as complete.`
64
- });
65
- case 'exit':
66
- if (!exit_type) {
67
- return JSON.stringify({
68
- success: false,
69
- error: 'exit_type is required for exit action'
70
- });
71
- }
72
- return JSON.stringify({
73
- success: true,
74
- action: 'exit',
75
- exit_type: exit_type,
76
- reason: reason || 'No reason provided',
77
- message: `Workflow exited with status: ${exit_type}${reason ? ` - ${reason}` : ''}`
78
- });
79
- default:
80
- return JSON.stringify({
81
- success: false,
82
- error: `Unknown action: ${action}. Use 'step_complete' or 'exit'.`
83
- });
24
+ step_number: {
25
+ type: "number",
26
+ description: "The step number that was completed (1-indexed). Required for step_complete action."
27
+ },
28
+ exit_type: {
29
+ type: "string",
30
+ enum: ["success", "error", "cancelled"],
31
+ description: "Type of exit. Required for exit action."
32
+ },
33
+ reason: {
34
+ type: "string",
35
+ description: "Reason for exiting (especially important for errors). Optional but recommended for exit action."
36
+ }
37
+ },
38
+ required: ["action"]
39
+ }
40
+ },
41
+ async execute(args) {
42
+ const { action, step_number, exit_type, reason } = args;
43
+ switch (action) {
44
+ case "step_complete":
45
+ if (step_number === void 0 || step_number === null) {
46
+ return JSON.stringify({
47
+ success: false,
48
+ error: "step_number is required for step_complete action"
49
+ });
84
50
  }
85
- },
51
+ return JSON.stringify({
52
+ success: true,
53
+ action: "step_complete",
54
+ step_number,
55
+ message: `Step ${step_number} marked as complete.`
56
+ });
57
+ case "exit":
58
+ if (!exit_type) {
59
+ return JSON.stringify({
60
+ success: false,
61
+ error: "exit_type is required for exit action"
62
+ });
63
+ }
64
+ return JSON.stringify({
65
+ success: true,
66
+ action: "exit",
67
+ exit_type,
68
+ reason: reason || "No reason provided",
69
+ message: `Workflow exited with status: ${exit_type}${reason ? ` - ${reason}` : ""}`
70
+ });
71
+ default:
72
+ return JSON.stringify({
73
+ success: false,
74
+ error: `Unknown action: ${action}. Use 'step_complete' or 'exit'.`
75
+ });
76
+ }
77
+ }
78
+ };
79
+ export {
80
+ workflowTool
86
81
  };
87
82
  //# sourceMappingURL=workflow-tool.js.map