centaurus-cli 3.0.1 → 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.
- package/dist/ai/types.js +0 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/cli-adapter.js +5047 -5158
- package/dist/cli-adapter.js.map +1 -1
- package/dist/commands/CommandParser.js +372 -315
- package/dist/commands/CommandParser.js.map +1 -1
- package/dist/config/build-config.js +11 -42
- package/dist/config/build-config.js.map +1 -1
- package/dist/config/defaultConfig.js +94 -82
- package/dist/config/defaultConfig.js.map +1 -1
- package/dist/config/manager.js +144 -160
- package/dist/config/manager.js.map +1 -1
- package/dist/config/mcp-config-manager.js +411 -364
- package/dist/config/mcp-config-manager.js.map +1 -1
- package/dist/config/models.js +118 -185
- package/dist/config/models.js.map +1 -1
- package/dist/config/slash-commands.js +186 -184
- package/dist/config/slash-commands.js.map +1 -1
- package/dist/config/types.js +33 -26
- package/dist/config/types.js.map +1 -1
- package/dist/context/command-detector.js +63 -67
- package/dist/context/command-detector.js.map +1 -1
- package/dist/context/context-manager.js +533 -518
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/handlers/docker-handler.js +518 -576
- package/dist/context/handlers/docker-handler.js.map +1 -1
- package/dist/context/handlers/ssh-handler.js +1050 -1109
- package/dist/context/handlers/ssh-handler.js.map +1 -1
- package/dist/context/handlers/wsl-handler.js +558 -630
- package/dist/context/handlers/wsl-handler.js.map +1 -1
- package/dist/context/index.js +42 -6
- package/dist/context/index.js.map +1 -1
- package/dist/context/subshell-handler.js +0 -4
- package/dist/context/subshell-handler.js.map +1 -1
- package/dist/context/types.js +20 -31
- package/dist/context/types.js.map +1 -1
- package/dist/hooks/useConnectivity.js +13 -10
- package/dist/hooks/useConnectivity.js.map +1 -1
- package/dist/hooks/useTerminalDimensions.js +67 -79
- package/dist/hooks/useTerminalDimensions.js.map +1 -1
- package/dist/index.js +228 -251
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp-command-handler.js +297 -260
- package/dist/mcp/mcp-command-handler.js.map +1 -1
- package/dist/mcp/mcp-server-manager.js +139 -155
- package/dist/mcp/mcp-server-manager.js.map +1 -1
- package/dist/mcp/mcp-tool-wrapper.js +74 -94
- package/dist/mcp/mcp-tool-wrapper.js.map +1 -1
- package/dist/services/ai-autocomplete-agent.js +169 -181
- package/dist/services/ai-autocomplete-agent.js.map +1 -1
- package/dist/services/ai-context-injector.js +180 -93
- package/dist/services/ai-context-injector.js.map +1 -1
- package/dist/services/ai-service-client.js +513 -456
- package/dist/services/ai-service-client.js.map +1 -1
- package/dist/services/api-client.js +443 -441
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/auth-handler.js +162 -198
- package/dist/services/auth-handler.js.map +1 -1
- package/dist/services/background-task-manager.js +258 -282
- package/dist/services/background-task-manager.js.map +1 -1
- package/dist/services/checkpoint-manager.js +1526 -1512
- package/dist/services/checkpoint-manager.js.map +1 -1
- package/dist/services/clipboard-service.js +151 -200
- package/dist/services/clipboard-service.js.map +1 -1
- package/dist/services/connectivity-manager.js +63 -65
- package/dist/services/connectivity-manager.js.map +1 -1
- package/dist/services/conversation-manager.js +118 -121
- package/dist/services/conversation-manager.js.map +1 -1
- package/dist/services/environment-context-injector.js +160 -187
- package/dist/services/environment-context-injector.js.map +1 -1
- package/dist/services/fast-context-agent.js +203 -243
- package/dist/services/fast-context-agent.js.map +1 -1
- package/dist/services/input-detection-agent.js +190 -202
- package/dist/services/input-detection-agent.js.map +1 -1
- package/dist/services/input-requirement-detector.js +155 -189
- package/dist/services/input-requirement-detector.js.map +1 -1
- package/dist/services/local-chat-storage.js +342 -365
- package/dist/services/local-chat-storage.js.map +1 -1
- package/dist/services/monitored-shell-manager.js +225 -233
- package/dist/services/monitored-shell-manager.js.map +1 -1
- package/dist/services/ollama-service.js +293 -310
- package/dist/services/ollama-service.js.map +1 -1
- package/dist/services/rules-storage.js +142 -0
- package/dist/services/rules-storage.js.map +1 -0
- package/dist/services/session-quota-manager.js +219 -235
- package/dist/services/session-quota-manager.js.map +1 -1
- package/dist/services/shell-input-agent.js +299 -334
- package/dist/services/shell-input-agent.js.map +1 -1
- package/dist/services/sub-agent-manager.js +459 -501
- package/dist/services/sub-agent-manager.js.map +1 -1
- package/dist/services/warpify-detector.js +133 -183
- package/dist/services/warpify-detector.js.map +1 -1
- package/dist/services/workflow-storage.js +202 -217
- package/dist/services/workflow-storage.js.map +1 -1
- package/dist/test-ssh-handler.js +148 -193
- package/dist/test-ssh-handler.js.map +1 -1
- package/dist/tools/add-mcp.js +161 -0
- package/dist/tools/add-mcp.js.map +1 -0
- package/dist/tools/background-command.js +240 -273
- package/dist/tools/background-command.js.map +1 -1
- package/dist/tools/command.js +447 -440
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/create-image.js +172 -202
- package/dist/tools/create-image.js.map +1 -1
- package/dist/tools/enter-remote-session.js +169 -215
- package/dist/tools/enter-remote-session.js.map +1 -1
- package/dist/tools/fast-context.js +60 -67
- package/dist/tools/fast-context.js.map +1 -1
- package/dist/tools/file-ops.js +601 -572
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/find-files.js +262 -303
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/get-diff.js +423 -406
- package/dist/tools/get-diff.js.map +1 -1
- package/dist/tools/grep-search.js +966 -948
- package/dist/tools/grep-search.js.map +1 -1
- package/dist/tools/inspect-symbol.js +308 -323
- package/dist/tools/inspect-symbol.js.map +1 -1
- package/dist/tools/plan-mode.js +459 -503
- package/dist/tools/plan-mode.js.map +1 -1
- package/dist/tools/read-binary-file.js +160 -190
- package/dist/tools/read-binary-file.js.map +1 -1
- package/dist/tools/registry.js +100 -84
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/reproduce_issue.js +170 -151
- package/dist/tools/reproduce_issue.js.map +1 -1
- package/dist/tools/sub-agent.js +223 -228
- package/dist/tools/sub-agent.js.map +1 -1
- package/dist/tools/task-complete.js +28 -27
- package/dist/tools/task-complete.js.map +1 -1
- package/dist/tools/types.js +0 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/validation.js +96 -118
- package/dist/tools/validation.js.map +1 -1
- package/dist/tools/web-search.js +194 -194
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools/workflow-tool.js +77 -82
- package/dist/tools/workflow-tool.js.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/rule.js +1 -0
- package/dist/types/rule.js.map +1 -0
- package/dist/types/workflow.js +0 -7
- package/dist/types/workflow.js.map +1 -1
- package/dist/ui/components/AgentTimer.js +24 -25
- package/dist/ui/components/AgentTimer.js.map +1 -1
- package/dist/ui/components/App.js +3266 -3263
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/AuthScreen.js +22 -34
- package/dist/ui/components/AuthScreen.js.map +1 -1
- package/dist/ui/components/AuthWelcomeScreen.js +30 -24
- package/dist/ui/components/AuthWelcomeScreen.js.map +1 -1
- package/dist/ui/components/Breadcrumbs.js +53 -82
- package/dist/ui/components/Breadcrumbs.js.map +1 -1
- package/dist/ui/components/CircularSelectInput.js +59 -67
- package/dist/ui/components/CircularSelectInput.js.map +1 -1
- package/dist/ui/components/ClipboardFileAutocomplete.js +78 -39
- package/dist/ui/components/ClipboardFileAutocomplete.js.map +1 -1
- package/dist/ui/components/CodeBlock.js +24 -42
- package/dist/ui/components/CodeBlock.js.map +1 -1
- package/dist/ui/components/ConfigViewer.js +18 -25
- package/dist/ui/components/ConfigViewer.js.map +1 -1
- package/dist/ui/components/ConfirmPrompt.js +49 -71
- package/dist/ui/components/ConfirmPrompt.js.map +1 -1
- package/dist/ui/components/ConnectionStatusMessage.js +32 -83
- package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
- package/dist/ui/components/ContextWindowIndicator.js +34 -49
- package/dist/ui/components/ContextWindowIndicator.js.map +1 -1
- package/dist/ui/components/DetailedPlanReviewScreen.js +104 -106
- package/dist/ui/components/DetailedPlanReviewScreen.js.map +1 -1
- package/dist/ui/components/DiffViewer.js +68 -121
- package/dist/ui/components/DiffViewer.js.map +1 -1
- package/dist/ui/components/ErrorBoundary.js +40 -48
- package/dist/ui/components/ErrorBoundary.js.map +1 -1
- package/dist/ui/components/FileCreationPreview.js +29 -60
- package/dist/ui/components/FileCreationPreview.js.map +1 -1
- package/dist/ui/components/FileOperation.js +34 -29
- package/dist/ui/components/FileOperation.js.map +1 -1
- package/dist/ui/components/FileTagAutocomplete.js +55 -25
- package/dist/ui/components/FileTagAutocomplete.js.map +1 -1
- package/dist/ui/components/FontRecommendation.js.map +1 -1
- package/dist/ui/components/GitDiffBreadcrumb.js +29 -0
- package/dist/ui/components/GitDiffBreadcrumb.js.map +1 -0
- package/dist/ui/components/InputBox.js +1620 -2150
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/InteractiveShell.js +234 -352
- package/dist/ui/components/InteractiveShell.js.map +1 -1
- package/dist/ui/components/KeyboardHelp.js +34 -35
- package/dist/ui/components/KeyboardHelp.js.map +1 -1
- package/dist/ui/components/LoadingIndicator.js +22 -25
- package/dist/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/ui/components/MCPAddScreen.js +40 -51
- package/dist/ui/components/MCPAddScreen.js.map +1 -1
- package/dist/ui/components/MCPListScreen.js +40 -48
- package/dist/ui/components/MCPListScreen.js.map +1 -1
- package/dist/ui/components/MCPServerListScreen.js +49 -56
- package/dist/ui/components/MCPServerListScreen.js.map +1 -1
- package/dist/ui/components/MarkdownRenderer.js +69 -96
- package/dist/ui/components/MarkdownRenderer.js.map +1 -1
- package/dist/ui/components/MessageBox.js +66 -48
- package/dist/ui/components/MessageBox.js.map +1 -1
- package/dist/ui/components/MessageDisplay.js +150 -142
- package/dist/ui/components/MessageDisplay.js.map +1 -1
- package/dist/ui/components/MonitorModeAIPanel.js +46 -65
- package/dist/ui/components/MonitorModeAIPanel.js.map +1 -1
- package/dist/ui/components/MultiLineInput.js +243 -277
- package/dist/ui/components/MultiLineInput.js.map +1 -1
- package/dist/ui/components/PasswordPrompt.js +37 -18
- package/dist/ui/components/PasswordPrompt.js.map +1 -1
- package/dist/ui/components/PlanAcceptedMessage.js +27 -38
- package/dist/ui/components/PlanAcceptedMessage.js.map +1 -1
- package/dist/ui/components/PlanReviewScreen.js +46 -50
- package/dist/ui/components/PlanReviewScreen.js.map +1 -1
- package/dist/ui/components/RulesEditorScreen.js +81 -0
- package/dist/ui/components/RulesEditorScreen.js.map +1 -0
- package/dist/ui/components/SelectPrompt.js +19 -8
- package/dist/ui/components/SelectPrompt.js.map +1 -1
- package/dist/ui/components/ShimmerText.js +44 -0
- package/dist/ui/components/ShimmerText.js.map +1 -0
- package/dist/ui/components/SlashCommandAutocomplete.js +49 -22
- package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -1
- package/dist/ui/components/StatusBar.js +56 -87
- package/dist/ui/components/StatusBar.js.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.js +116 -99
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
- package/dist/ui/components/TaskCompletedMessage.js +28 -23
- package/dist/ui/components/TaskCompletedMessage.js.map +1 -1
- package/dist/ui/components/TaskProgressIndicator.js +44 -70
- package/dist/ui/components/TaskProgressIndicator.js.map +1 -1
- package/dist/ui/components/ThinkingDisplay.js +44 -41
- package/dist/ui/components/ThinkingDisplay.js.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.js +772 -1326
- package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
- package/dist/ui/components/ToolExecutionStatus.js +53 -84
- package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
- package/dist/ui/components/ToolResult.js +22 -15
- package/dist/ui/components/ToolResult.js.map +1 -1
- package/dist/ui/components/VersionUpdatePrompt.js +88 -120
- package/dist/ui/components/VersionUpdatePrompt.js.map +1 -1
- package/dist/ui/components/WelcomeBanner.js +176 -26
- package/dist/ui/components/WelcomeBanner.js.map +1 -1
- package/dist/ui/components/WorkflowCreatorScreen.js +94 -161
- package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -1
- package/dist/utils/ansi-encoder.js +30 -61
- package/dist/utils/ansi-encoder.js.map +1 -1
- package/dist/utils/chat-formatter.js +327 -305
- package/dist/utils/chat-formatter.js.map +1 -1
- package/dist/utils/command-history.js +152 -174
- package/dist/utils/command-history.js.map +1 -1
- package/dist/utils/context-sanitizer.js +49 -112
- package/dist/utils/context-sanitizer.js.map +1 -1
- package/dist/utils/conversation-logger.js +292 -324
- package/dist/utils/conversation-logger.js.map +1 -1
- package/dist/utils/custom-commands-manager.js +126 -131
- package/dist/utils/custom-commands-manager.js.map +1 -1
- package/dist/utils/editor-utils.js +732 -837
- package/dist/utils/editor-utils.js.map +1 -1
- package/dist/utils/file.js +174 -213
- package/dist/utils/file.js.map +1 -1
- package/dist/utils/git-stats.js +169 -0
- package/dist/utils/git-stats.js.map +1 -0
- package/dist/utils/input-classifier.js +960 -482
- package/dist/utils/input-classifier.js.map +1 -1
- package/dist/utils/logger.js +48 -73
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/markdown-parser.js +277 -310
- package/dist/utils/markdown-parser.js.map +1 -1
- package/dist/utils/rule-reference-resolver.js +54 -0
- package/dist/utils/rule-reference-resolver.js.map +1 -0
- package/dist/utils/shell.js +144 -156
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/state.js +23 -22
- package/dist/utils/state.js.map +1 -1
- package/dist/utils/syntax-checker.js +279 -327
- package/dist/utils/syntax-checker.js.map +1 -1
- package/dist/utils/terminal-output.js +199 -302
- package/dist/utils/terminal-output.js.map +1 -1
- package/dist/utils/text-clipboard.js +47 -70
- package/dist/utils/text-clipboard.js.map +1 -1
- package/dist/utils/unicode-sanitizer.js +134 -197
- package/dist/utils/unicode-sanitizer.js.map +1 -1
- package/dist/utils/version-checker.js +46 -56
- package/dist/utils/version-checker.js.map +1 -1
- package/package.json +6 -4
- package/dist/ai/types.d.ts +0 -20
- package/dist/ai/types.d.ts.map +0 -1
- package/dist/cli-adapter.d.ts +0 -514
- package/dist/cli-adapter.d.ts.map +0 -1
- package/dist/commands/CommandParser.d.ts +0 -27
- package/dist/commands/CommandParser.d.ts.map +0 -1
- package/dist/config/build-config.d.ts +0 -42
- package/dist/config/build-config.d.ts.map +0 -1
- package/dist/config/defaultConfig.d.ts +0 -79
- package/dist/config/defaultConfig.d.ts.map +0 -1
- package/dist/config/manager.d.ts +0 -62
- package/dist/config/manager.d.ts.map +0 -1
- package/dist/config/mcp-config-manager.d.ts +0 -79
- package/dist/config/mcp-config-manager.d.ts.map +0 -1
- package/dist/config/models.d.ts +0 -83
- package/dist/config/models.d.ts.map +0 -1
- package/dist/config/slash-commands.d.ts +0 -23
- package/dist/config/slash-commands.d.ts.map +0 -1
- package/dist/config/types.d.ts +0 -35
- package/dist/config/types.d.ts.map +0 -1
- package/dist/context/command-detector.d.ts +0 -50
- package/dist/context/command-detector.d.ts.map +0 -1
- package/dist/context/context-manager.d.ts +0 -157
- package/dist/context/context-manager.d.ts.map +0 -1
- package/dist/context/handlers/docker-handler.d.ts +0 -130
- package/dist/context/handlers/docker-handler.d.ts.map +0 -1
- package/dist/context/handlers/ssh-handler.d.ts +0 -201
- package/dist/context/handlers/ssh-handler.d.ts.map +0 -1
- package/dist/context/handlers/wsl-handler.d.ts +0 -146
- package/dist/context/handlers/wsl-handler.d.ts.map +0 -1
- package/dist/context/index.d.ts +0 -8
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/subshell-handler.d.ts +0 -165
- package/dist/context/subshell-handler.d.ts.map +0 -1
- package/dist/context/types.d.ts +0 -70
- package/dist/context/types.d.ts.map +0 -1
- package/dist/hooks/useConnectivity.d.ts +0 -2
- package/dist/hooks/useConnectivity.d.ts.map +0 -1
- package/dist/hooks/useTerminalDimensions.d.ts +0 -41
- package/dist/hooks/useTerminalDimensions.d.ts.map +0 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/mcp/mcp-command-handler.d.ts +0 -47
- package/dist/mcp/mcp-command-handler.d.ts.map +0 -1
- package/dist/mcp/mcp-server-manager.d.ts +0 -30
- package/dist/mcp/mcp-server-manager.d.ts.map +0 -1
- package/dist/mcp/mcp-tool-wrapper.d.ts +0 -12
- package/dist/mcp/mcp-tool-wrapper.d.ts.map +0 -1
- package/dist/services/ai-autocomplete-agent.d.ts +0 -39
- package/dist/services/ai-autocomplete-agent.d.ts.map +0 -1
- package/dist/services/ai-context-injector.d.ts +0 -41
- package/dist/services/ai-context-injector.d.ts.map +0 -1
- package/dist/services/ai-service-client.d.ts +0 -128
- package/dist/services/ai-service-client.d.ts.map +0 -1
- package/dist/services/api-client.d.ts +0 -353
- package/dist/services/api-client.d.ts.map +0 -1
- package/dist/services/auth-handler.d.ts +0 -30
- package/dist/services/auth-handler.d.ts.map +0 -1
- package/dist/services/background-task-manager.d.ts +0 -114
- package/dist/services/background-task-manager.d.ts.map +0 -1
- package/dist/services/checkpoint-manager.d.ts +0 -204
- package/dist/services/checkpoint-manager.d.ts.map +0 -1
- package/dist/services/clipboard-service.d.ts +0 -37
- package/dist/services/clipboard-service.d.ts.map +0 -1
- package/dist/services/connectivity-manager.d.ts +0 -18
- package/dist/services/connectivity-manager.d.ts.map +0 -1
- package/dist/services/conversation-manager.d.ts +0 -73
- package/dist/services/conversation-manager.d.ts.map +0 -1
- package/dist/services/environment-context-injector.d.ts +0 -69
- package/dist/services/environment-context-injector.d.ts.map +0 -1
- package/dist/services/fast-context-agent.d.ts +0 -12
- package/dist/services/fast-context-agent.d.ts.map +0 -1
- package/dist/services/input-detection-agent.d.ts +0 -40
- package/dist/services/input-detection-agent.d.ts.map +0 -1
- package/dist/services/input-requirement-detector.d.ts +0 -28
- package/dist/services/input-requirement-detector.d.ts.map +0 -1
- package/dist/services/local-chat-storage.d.ts +0 -182
- package/dist/services/local-chat-storage.d.ts.map +0 -1
- package/dist/services/monitored-shell-manager.d.ts +0 -120
- package/dist/services/monitored-shell-manager.d.ts.map +0 -1
- package/dist/services/ollama-service.d.ts +0 -197
- package/dist/services/ollama-service.d.ts.map +0 -1
- package/dist/services/session-quota-manager.d.ts +0 -101
- package/dist/services/session-quota-manager.d.ts.map +0 -1
- package/dist/services/shell-input-agent.d.ts +0 -89
- package/dist/services/shell-input-agent.d.ts.map +0 -1
- package/dist/services/sub-agent-manager.d.ts +0 -140
- package/dist/services/sub-agent-manager.d.ts.map +0 -1
- package/dist/services/warpify-detector.d.ts +0 -43
- package/dist/services/warpify-detector.d.ts.map +0 -1
- package/dist/services/workflow-storage.d.ts +0 -72
- package/dist/services/workflow-storage.d.ts.map +0 -1
- package/dist/test-ssh-handler.d.ts +0 -8
- package/dist/test-ssh-handler.d.ts.map +0 -1
- package/dist/tools/background-command.d.ts +0 -11
- package/dist/tools/background-command.d.ts.map +0 -1
- package/dist/tools/command.d.ts +0 -3
- package/dist/tools/command.d.ts.map +0 -1
- package/dist/tools/create-image.d.ts +0 -10
- package/dist/tools/create-image.d.ts.map +0 -1
- package/dist/tools/enter-remote-session.d.ts +0 -48
- package/dist/tools/enter-remote-session.d.ts.map +0 -1
- package/dist/tools/fast-context.d.ts +0 -3
- package/dist/tools/fast-context.d.ts.map +0 -1
- package/dist/tools/file-ops.d.ts +0 -7
- package/dist/tools/file-ops.d.ts.map +0 -1
- package/dist/tools/find-files.d.ts +0 -49
- package/dist/tools/find-files.d.ts.map +0 -1
- package/dist/tools/get-diff.d.ts +0 -14
- package/dist/tools/get-diff.d.ts.map +0 -1
- package/dist/tools/grep-search.d.ts +0 -155
- package/dist/tools/grep-search.d.ts.map +0 -1
- package/dist/tools/inspect-symbol.d.ts +0 -32
- package/dist/tools/inspect-symbol.d.ts.map +0 -1
- package/dist/tools/plan-mode.d.ts +0 -140
- package/dist/tools/plan-mode.d.ts.map +0 -1
- package/dist/tools/read-binary-file.d.ts +0 -10
- package/dist/tools/read-binary-file.d.ts.map +0 -1
- package/dist/tools/registry.d.ts +0 -31
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/reproduce_issue.d.ts +0 -2
- package/dist/tools/reproduce_issue.d.ts.map +0 -1
- package/dist/tools/sub-agent.d.ts +0 -9
- package/dist/tools/sub-agent.d.ts.map +0 -1
- package/dist/tools/task-complete.d.ts +0 -3
- package/dist/tools/task-complete.d.ts.map +0 -1
- package/dist/tools/types.d.ts +0 -40
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/validation.d.ts +0 -47
- package/dist/tools/validation.d.ts.map +0 -1
- package/dist/tools/web-search.d.ts +0 -24
- package/dist/tools/web-search.d.ts.map +0 -1
- package/dist/tools/workflow-tool.d.ts +0 -11
- package/dist/tools/workflow-tool.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -123
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/workflow.d.ts +0 -110
- package/dist/types/workflow.d.ts.map +0 -1
- package/dist/ui/components/AgentTimer.d.ts +0 -7
- package/dist/ui/components/AgentTimer.d.ts.map +0 -1
- package/dist/ui/components/App.d.ts +0 -197
- package/dist/ui/components/App.d.ts.map +0 -1
- package/dist/ui/components/AuthScreen.d.ts +0 -8
- package/dist/ui/components/AuthScreen.d.ts.map +0 -1
- package/dist/ui/components/AuthWelcomeScreen.d.ts +0 -8
- package/dist/ui/components/AuthWelcomeScreen.d.ts.map +0 -1
- package/dist/ui/components/Breadcrumbs.d.ts +0 -13
- package/dist/ui/components/Breadcrumbs.d.ts.map +0 -1
- package/dist/ui/components/CircularSelectInput.d.ts +0 -24
- package/dist/ui/components/CircularSelectInput.d.ts.map +0 -1
- package/dist/ui/components/ClipboardFileAutocomplete.d.ts +0 -10
- package/dist/ui/components/ClipboardFileAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/CodeBlock.d.ts +0 -9
- package/dist/ui/components/CodeBlock.d.ts.map +0 -1
- package/dist/ui/components/ConfigViewer.d.ts +0 -11
- package/dist/ui/components/ConfigViewer.d.ts.map +0 -1
- package/dist/ui/components/ConfirmPrompt.d.ts +0 -13
- package/dist/ui/components/ConfirmPrompt.d.ts.map +0 -1
- package/dist/ui/components/ConnectionStatusMessage.d.ts +0 -17
- package/dist/ui/components/ConnectionStatusMessage.d.ts.map +0 -1
- package/dist/ui/components/ContextWindowIndicator.d.ts +0 -8
- package/dist/ui/components/ContextWindowIndicator.d.ts.map +0 -1
- package/dist/ui/components/DetailedPlanReviewScreen.d.ts +0 -17
- package/dist/ui/components/DetailedPlanReviewScreen.d.ts.map +0 -1
- package/dist/ui/components/DiffViewer.d.ts +0 -9
- package/dist/ui/components/DiffViewer.d.ts.map +0 -1
- package/dist/ui/components/ErrorBoundary.d.ts +0 -17
- package/dist/ui/components/ErrorBoundary.d.ts.map +0 -1
- package/dist/ui/components/FileCreationPreview.d.ts +0 -8
- package/dist/ui/components/FileCreationPreview.d.ts.map +0 -1
- package/dist/ui/components/FileOperation.d.ts +0 -10
- package/dist/ui/components/FileOperation.d.ts.map +0 -1
- package/dist/ui/components/FileTagAutocomplete.d.ts +0 -11
- package/dist/ui/components/FileTagAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/FontRecommendation.d.ts +0 -1
- package/dist/ui/components/FontRecommendation.d.ts.map +0 -1
- package/dist/ui/components/InputBox.d.ts +0 -42
- package/dist/ui/components/InputBox.d.ts.map +0 -1
- package/dist/ui/components/InteractiveShell.d.ts +0 -30
- package/dist/ui/components/InteractiveShell.d.ts.map +0 -1
- package/dist/ui/components/KeyboardHelp.d.ts +0 -7
- package/dist/ui/components/KeyboardHelp.d.ts.map +0 -1
- package/dist/ui/components/LoadingIndicator.d.ts +0 -3
- package/dist/ui/components/LoadingIndicator.d.ts.map +0 -1
- package/dist/ui/components/MCPAddScreen.d.ts +0 -13
- package/dist/ui/components/MCPAddScreen.d.ts.map +0 -1
- package/dist/ui/components/MCPListScreen.d.ts +0 -17
- package/dist/ui/components/MCPListScreen.d.ts.map +0 -1
- package/dist/ui/components/MCPServerListScreen.d.ts +0 -16
- package/dist/ui/components/MCPServerListScreen.d.ts.map +0 -1
- package/dist/ui/components/MarkdownRenderer.d.ts +0 -8
- package/dist/ui/components/MarkdownRenderer.d.ts.map +0 -1
- package/dist/ui/components/MessageBox.d.ts +0 -10
- package/dist/ui/components/MessageBox.d.ts.map +0 -1
- package/dist/ui/components/MessageDisplay.d.ts +0 -14
- package/dist/ui/components/MessageDisplay.d.ts.map +0 -1
- package/dist/ui/components/MonitorModeAIPanel.d.ts +0 -23
- package/dist/ui/components/MonitorModeAIPanel.d.ts.map +0 -1
- package/dist/ui/components/MultiLineInput.d.ts +0 -13
- package/dist/ui/components/MultiLineInput.d.ts.map +0 -1
- package/dist/ui/components/PasswordPrompt.d.ts +0 -9
- package/dist/ui/components/PasswordPrompt.d.ts.map +0 -1
- package/dist/ui/components/PlanAcceptedMessage.d.ts +0 -20
- package/dist/ui/components/PlanAcceptedMessage.d.ts.map +0 -1
- package/dist/ui/components/PlanReviewScreen.d.ts +0 -14
- package/dist/ui/components/PlanReviewScreen.d.ts.map +0 -1
- package/dist/ui/components/SelectPrompt.d.ts +0 -12
- package/dist/ui/components/SelectPrompt.d.ts.map +0 -1
- package/dist/ui/components/SlashCommandAutocomplete.d.ts +0 -13
- package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +0 -1
- package/dist/ui/components/StatusBar.d.ts +0 -14
- package/dist/ui/components/StatusBar.d.ts.map +0 -1
- package/dist/ui/components/StreamingMessageDisplay.d.ts +0 -15
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +0 -1
- package/dist/ui/components/TaskCompletedMessage.d.ts +0 -14
- package/dist/ui/components/TaskCompletedMessage.d.ts.map +0 -1
- package/dist/ui/components/TaskProgressIndicator.d.ts +0 -18
- package/dist/ui/components/TaskProgressIndicator.d.ts.map +0 -1
- package/dist/ui/components/ThinkingDisplay.d.ts +0 -15
- package/dist/ui/components/ThinkingDisplay.d.ts.map +0 -1
- package/dist/ui/components/ToolExecutionMessage.d.ts +0 -8
- package/dist/ui/components/ToolExecutionMessage.d.ts.map +0 -1
- package/dist/ui/components/ToolExecutionStatus.d.ts +0 -10
- package/dist/ui/components/ToolExecutionStatus.d.ts.map +0 -1
- package/dist/ui/components/ToolResult.d.ts +0 -10
- package/dist/ui/components/ToolResult.d.ts.map +0 -1
- package/dist/ui/components/VersionUpdatePrompt.d.ts +0 -9
- package/dist/ui/components/VersionUpdatePrompt.d.ts.map +0 -1
- package/dist/ui/components/WelcomeBanner.d.ts +0 -3
- package/dist/ui/components/WelcomeBanner.d.ts.map +0 -1
- package/dist/ui/components/WorkflowCreatorScreen.d.ts +0 -25
- package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +0 -1
- package/dist/utils/ansi-encoder.d.ts +0 -7
- package/dist/utils/ansi-encoder.d.ts.map +0 -1
- package/dist/utils/chat-formatter.d.ts +0 -12
- package/dist/utils/chat-formatter.d.ts.map +0 -1
- package/dist/utils/command-history.d.ts +0 -24
- package/dist/utils/command-history.d.ts.map +0 -1
- package/dist/utils/context-sanitizer.d.ts +0 -50
- package/dist/utils/context-sanitizer.d.ts.map +0 -1
- package/dist/utils/conversation-logger.d.ts +0 -142
- package/dist/utils/conversation-logger.d.ts.map +0 -1
- package/dist/utils/custom-commands-manager.d.ts +0 -59
- package/dist/utils/custom-commands-manager.d.ts.map +0 -1
- package/dist/utils/editor-utils.d.ts +0 -101
- package/dist/utils/editor-utils.d.ts.map +0 -1
- package/dist/utils/file.d.ts +0 -61
- package/dist/utils/file.d.ts.map +0 -1
- package/dist/utils/input-classifier.d.ts +0 -25
- package/dist/utils/input-classifier.d.ts.map +0 -1
- package/dist/utils/logger.d.ts +0 -17
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/markdown-parser.d.ts +0 -60
- package/dist/utils/markdown-parser.d.ts.map +0 -1
- package/dist/utils/shell.d.ts +0 -47
- package/dist/utils/shell.d.ts.map +0 -1
- package/dist/utils/state.d.ts +0 -13
- package/dist/utils/state.d.ts.map +0 -1
- package/dist/utils/syntax-checker.d.ts +0 -24
- package/dist/utils/syntax-checker.d.ts.map +0 -1
- package/dist/utils/terminal-output.d.ts +0 -25
- package/dist/utils/terminal-output.d.ts.map +0 -1
- package/dist/utils/text-clipboard.d.ts +0 -12
- package/dist/utils/text-clipboard.d.ts.map +0 -1
- package/dist/utils/unicode-sanitizer.d.ts +0 -44
- package/dist/utils/unicode-sanitizer.d.ts.map +0 -1
- package/dist/utils/version-checker.d.ts +0 -14
- package/dist/utils/version-checker.d.ts.map +0 -1
package/dist/tools/web-search.js
CHANGED
|
@@ -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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
if (!response.data || !response.data.success) {
|
|
28
|
+
throw new Error(response.data?.error?.message || "Search failed");
|
|
39
29
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
if (!response.data || !response.data.success) {
|
|
64
|
+
throw new Error(response.data?.error?.message || "Failed to fetch URL");
|
|
78
65
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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
|
|
211
|
-
|
|
212
|
-
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|