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.
- package/dist/ai/types.js +0 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/cli-adapter.js +5047 -5037
- 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 +1513 -973
- 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 +605 -537
- 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 -400
- 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 -3249
- 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 -511
- 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 -167
- 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/validation.js
CHANGED
|
@@ -1,124 +1,102 @@
|
|
|
1
|
-
import * as fs from
|
|
2
|
-
import * as path from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export function createFlexibleRegex(pattern) {
|
|
10
|
-
// 1. Escape special regex characters
|
|
11
|
-
const escaped = pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
12
|
-
// 2. Split into tokens by whitespace
|
|
13
|
-
// This handles the "internal" flexibility
|
|
14
|
-
const tokens = escaped.trim().split(/\s+/);
|
|
15
|
-
// 3. Rejoin with \s+ (one or more whitespace characters)
|
|
16
|
-
const internalPattern = tokens.join('\\s+');
|
|
17
|
-
// 4. Wrap with [^\S\r\n]* (zero or more whitespace EXCEPT newlines) on BOTH sides
|
|
18
|
-
// This ensures we match and consume the file's existing indentation
|
|
19
|
-
// but NOT the trailing newlines, preventing accidental line merging.
|
|
20
|
-
// [^\S\r\n] matches any whitespace character that is not CR or LF.
|
|
21
|
-
const finalPattern = `[^\\S\\r\\n]*${internalPattern}[^\\S\\r\\n]*`;
|
|
22
|
-
return new RegExp(finalPattern, 'g');
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
function createFlexibleRegex(pattern) {
|
|
4
|
+
const escaped = pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
5
|
+
const tokens = escaped.trim().split(/\s+/);
|
|
6
|
+
const internalPattern = tokens.join("\\s+");
|
|
7
|
+
const finalPattern = `[^\\S\\r\\n]*${internalPattern}[^\\S\\r\\n]*`;
|
|
8
|
+
return new RegExp(finalPattern, "g");
|
|
23
9
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
// Validation passed
|
|
63
|
-
return { valid: true };
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
return {
|
|
67
|
-
valid: false,
|
|
68
|
-
error: `Validation error: ${error instanceof Error ? error.message : String(error)}`,
|
|
69
|
-
suggestion: 'Check the file path and ensure you have read permissions.',
|
|
70
|
-
};
|
|
71
|
-
}
|
|
10
|
+
class ToolValidator {
|
|
11
|
+
/**
|
|
12
|
+
* Validate edit_file parameters before execution
|
|
13
|
+
*
|
|
14
|
+
* @param filePath - Path to the file to edit
|
|
15
|
+
* @param searchPattern - The exact text to search for
|
|
16
|
+
* @param replacement - The replacement text
|
|
17
|
+
* @param cwd - Current working directory
|
|
18
|
+
* @returns Validation result with error and suggestion if invalid
|
|
19
|
+
*/
|
|
20
|
+
async validateEditFile(filePath, searchPattern, replacement, cwd) {
|
|
21
|
+
try {
|
|
22
|
+
const fullPath = path.resolve(cwd, filePath);
|
|
23
|
+
if (!fs.existsSync(fullPath)) {
|
|
24
|
+
return {
|
|
25
|
+
valid: false,
|
|
26
|
+
error: `File not found: ${filePath}`,
|
|
27
|
+
suggestion: "Verify the file path is correct and the file exists. Use list_directory to check the structure."
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const content = fs.readFileSync(fullPath, "utf-8");
|
|
31
|
+
const patternCheck = this.checkPatternExists(content, searchPattern);
|
|
32
|
+
if (!patternCheck.exists) {
|
|
33
|
+
return this.generateValidationResult("not_found", {});
|
|
34
|
+
}
|
|
35
|
+
if (patternCheck.count > 1) {
|
|
36
|
+
return this.generateValidationResult("multiple_matches", {
|
|
37
|
+
count: patternCheck.count
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return { valid: true };
|
|
41
|
+
} catch (error) {
|
|
42
|
+
return {
|
|
43
|
+
valid: false,
|
|
44
|
+
error: `Validation error: ${error instanceof Error ? error.message : String(error)}`,
|
|
45
|
+
suggestion: "Check the file path and ensure you have read permissions."
|
|
46
|
+
};
|
|
72
47
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
// Fallback to flexible regex match
|
|
87
|
-
const regex = createFlexibleRegex(pattern);
|
|
88
|
-
const matches = content.match(regex);
|
|
89
|
-
if (!matches || matches.length === 0) {
|
|
90
|
-
return { exists: false, count: 0 };
|
|
91
|
-
}
|
|
92
|
-
return { exists: true, count: matches.length };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if pattern exists in file content using flexible whitespace matching
|
|
51
|
+
*
|
|
52
|
+
* @param content - File content to search
|
|
53
|
+
* @param pattern - Pattern to find
|
|
54
|
+
* @returns Object with exists flag and occurrence count
|
|
55
|
+
*/
|
|
56
|
+
checkPatternExists(content, pattern) {
|
|
57
|
+
if (content.includes(pattern)) {
|
|
58
|
+
const count = content.split(pattern).length - 1;
|
|
59
|
+
return { exists: true, count };
|
|
93
60
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
* @param details - Additional details about the issue
|
|
99
|
-
* @returns ValidationResult with error and suggestion
|
|
100
|
-
*/
|
|
101
|
-
generateValidationResult(issue, details) {
|
|
102
|
-
switch (issue) {
|
|
103
|
-
case 'not_found':
|
|
104
|
-
return {
|
|
105
|
-
valid: false,
|
|
106
|
-
error: 'Pattern not found in file (even with flexible whitespace matching).',
|
|
107
|
-
suggestion: 'Possible reasons:\n1. The file content has changed.\n2. The pattern does not match exactly (check whitespace/indentation).\n3. You are looking at an old version of the file.\n\nAction: Use \'view_file\' to get the latest content and copy the pattern EXACTLY.',
|
|
108
|
-
};
|
|
109
|
-
case 'multiple_matches':
|
|
110
|
-
return {
|
|
111
|
-
valid: false,
|
|
112
|
-
error: `Pattern appears ${details.count} times in the file. It must be unique.`,
|
|
113
|
-
suggestion: 'Include more surrounding context (2-3 lines before and after the target) to make the pattern unique.',
|
|
114
|
-
};
|
|
115
|
-
default:
|
|
116
|
-
return {
|
|
117
|
-
valid: false,
|
|
118
|
-
error: 'Unknown validation error.',
|
|
119
|
-
suggestion: 'Please try again or contact support.',
|
|
120
|
-
};
|
|
121
|
-
}
|
|
61
|
+
const regex = createFlexibleRegex(pattern);
|
|
62
|
+
const matches = content.match(regex);
|
|
63
|
+
if (!matches || matches.length === 0) {
|
|
64
|
+
return { exists: false, count: 0 };
|
|
122
65
|
}
|
|
66
|
+
return { exists: true, count: matches.length };
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate a validation result with appropriate error message and suggestion
|
|
70
|
+
*
|
|
71
|
+
* @param issue - Type of validation issue
|
|
72
|
+
* @param details - Additional details about the issue
|
|
73
|
+
* @returns ValidationResult with error and suggestion
|
|
74
|
+
*/
|
|
75
|
+
generateValidationResult(issue, details) {
|
|
76
|
+
switch (issue) {
|
|
77
|
+
case "not_found":
|
|
78
|
+
return {
|
|
79
|
+
valid: false,
|
|
80
|
+
error: "Pattern not found in file (even with flexible whitespace matching).",
|
|
81
|
+
suggestion: "Possible reasons:\n1. The file content has changed.\n2. The pattern does not match exactly (check whitespace/indentation).\n3. You are looking at an old version of the file.\n\nAction: Use 'view_file' to get the latest content and copy the pattern EXACTLY."
|
|
82
|
+
};
|
|
83
|
+
case "multiple_matches":
|
|
84
|
+
return {
|
|
85
|
+
valid: false,
|
|
86
|
+
error: `Pattern appears ${details.count} times in the file. It must be unique.`,
|
|
87
|
+
suggestion: "Include more surrounding context (2-3 lines before and after the target) to make the pattern unique."
|
|
88
|
+
};
|
|
89
|
+
default:
|
|
90
|
+
return {
|
|
91
|
+
valid: false,
|
|
92
|
+
error: "Unknown validation error.",
|
|
93
|
+
suggestion: "Please try again or contact support."
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
123
97
|
}
|
|
98
|
+
export {
|
|
99
|
+
ToolValidator,
|
|
100
|
+
createFlexibleRegex
|
|
101
|
+
};
|
|
124
102
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/tools/validation.ts"],"sourcesContent":["import * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\n/**\r\n * Result of a validation operation\r\n */\r\nexport interface ValidationResult {\r\n valid: boolean;\r\n error?: string;\r\n suggestion?: string;\r\n}\r\n\r\n/**\r\n * Type of validation issue detected\r\n */\r\ntype ValidationIssue = 'not_found' | 'multiple_matches' | 'whitespace_mismatch';\r\n\r\n/**\r\n * Details about validation issues\r\n */\r\ninterface ValidationIssueDetails {\r\n count?: number;\r\n normalizedMatch?: boolean;\r\n}\r\n\r\n/**\r\n * Create a flexible regex from a search pattern that ignores whitespace differences\r\n * AND consumes surrounding whitespace to prevent double-indentation on replacement.\r\n * @param pattern - The search pattern\r\n * @returns RegExp that matches the pattern with flexible whitespace\r\n */\r\nexport function createFlexibleRegex(pattern: string): RegExp {\r\n // 1. Escape special regex characters\r\n const escaped = pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n\r\n // 2. Split into tokens by whitespace\r\n // This handles the \"internal\" flexibility\r\n const tokens = escaped.trim().split(/\\s+/);\r\n\r\n // 3. Rejoin with \\s+ (one or more whitespace characters)\r\n const internalPattern = tokens.join('\\\\s+');\r\n\r\n // 4. Wrap with [^\\S\\r\\n]* (zero or more whitespace EXCEPT newlines) on BOTH sides\r\n // This ensures we match and consume the file's existing indentation \r\n // but NOT the trailing newlines, preventing accidental line merging.\r\n // [^\\S\\r\\n] matches any whitespace character that is not CR or LF.\r\n const finalPattern = `[^\\\\S\\\\r\\\\n]*${internalPattern}[^\\\\S\\\\r\\\\n]*`;\r\n\r\n return new RegExp(finalPattern, 'g');\r\n}\r\n\r\n/**\r\n * Intelligent tool validator that catches common mistakes before execution\r\n */\r\nexport class ToolValidator {\r\n /**\r\n * Validate edit_file parameters before execution\r\n * \r\n * @param filePath - Path to the file to edit\r\n * @param searchPattern - The exact text to search for\r\n * @param replacement - The replacement text\r\n * @param cwd - Current working directory\r\n * @returns Validation result with error and suggestion if invalid\r\n */\r\n async validateEditFile(\r\n filePath: string,\r\n searchPattern: string,\r\n replacement: string,\r\n cwd: string\r\n ): Promise<ValidationResult> {\r\n try {\r\n // Resolve full path\r\n const fullPath = path.resolve(cwd, filePath);\r\n\r\n // Check if file exists\r\n if (!fs.existsSync(fullPath)) {\r\n return {\r\n valid: false,\r\n error: `File not found: ${filePath}`,\r\n suggestion: 'Verify the file path is correct and the file exists. Use list_directory to check the structure.',\r\n };\r\n }\r\n\r\n // Read file content\r\n const content = fs.readFileSync(fullPath, 'utf-8');\r\n\r\n // Check if pattern exists (using flexible matching)\r\n const patternCheck = this.checkPatternExists(content, searchPattern);\r\n\r\n if (!patternCheck.exists) {\r\n return this.generateValidationResult('not_found', {});\r\n }\r\n\r\n // Check for multiple matches\r\n if (patternCheck.count > 1) {\r\n return this.generateValidationResult('multiple_matches', {\r\n count: patternCheck.count,\r\n });\r\n }\r\n\r\n // Validation passed\r\n return { valid: true };\r\n } catch (error) {\r\n return {\r\n valid: false,\r\n error: `Validation error: ${error instanceof Error ? error.message : String(error)}`,\r\n suggestion: 'Check the file path and ensure you have read permissions.',\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Check if pattern exists in file content using flexible whitespace matching\r\n * \r\n * @param content - File content to search\r\n * @param pattern - Pattern to find\r\n * @returns Object with exists flag and occurrence count\r\n */\r\n private checkPatternExists(\r\n content: string,\r\n pattern: string\r\n ): { exists: boolean; count: number } {\r\n // Try exact match first (fast path)\r\n if (content.includes(pattern)) {\r\n const count = content.split(pattern).length - 1;\r\n return { exists: true, count };\r\n }\r\n\r\n // Fallback to flexible regex match\r\n const regex = createFlexibleRegex(pattern);\r\n const matches = content.match(regex);\r\n\r\n if (!matches || matches.length === 0) {\r\n return { exists: false, count: 0 };\r\n }\r\n\r\n return { exists: true, count: matches.length };\r\n }\r\n\r\n /**\r\n * Generate a validation result with appropriate error message and suggestion\r\n * \r\n * @param issue - Type of validation issue\r\n * @param details - Additional details about the issue\r\n * @returns ValidationResult with error and suggestion\r\n */\r\n private generateValidationResult(\r\n issue: ValidationIssue,\r\n details: ValidationIssueDetails\r\n ): ValidationResult {\r\n switch (issue) {\r\n case 'not_found':\r\n return {\r\n valid: false,\r\n error: 'Pattern not found in file (even with flexible whitespace matching).',\r\n suggestion:\r\n 'Possible reasons:\\n1. The file content has changed.\\n2. The pattern does not match exactly (check whitespace/indentation).\\n3. You are looking at an old version of the file.\\n\\nAction: Use \\'view_file\\' to get the latest content and copy the pattern EXACTLY.',\r\n };\r\n\r\n case 'multiple_matches':\r\n return {\r\n valid: false,\r\n error: `Pattern appears ${details.count} times in the file. It must be unique.`,\r\n suggestion:\r\n 'Include more surrounding context (2-3 lines before and after the target) to make the pattern unique.',\r\n };\r\n\r\n default:\r\n return {\r\n valid: false,\r\n error: 'Unknown validation error.',\r\n suggestion: 'Please try again or contact support.',\r\n };\r\n }\r\n }\r\n}\r\n"],"mappings":"AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AA8Bf,SAAS,oBAAoB,SAAyB;AAE3D,QAAM,UAAU,QAAQ,QAAQ,uBAAuB,MAAM;AAI7D,QAAM,SAAS,QAAQ,KAAK,EAAE,MAAM,KAAK;AAGzC,QAAM,kBAAkB,OAAO,KAAK,MAAM;AAM1C,QAAM,eAAe,gBAAgB,eAAe;AAEpD,SAAO,IAAI,OAAO,cAAc,GAAG;AACrC;AAKO,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUzB,MAAM,iBACJ,UACA,eACA,aACA,KAC2B;AAC3B,QAAI;AAEF,YAAM,WAAW,KAAK,QAAQ,KAAK,QAAQ;AAG3C,UAAI,CAAC,GAAG,WAAW,QAAQ,GAAG;AAC5B,eAAO;AAAA,UACL,OAAO;AAAA,UACP,OAAO,mBAAmB,QAAQ;AAAA,UAClC,YAAY;AAAA,QACd;AAAA,MACF;AAGA,YAAM,UAAU,GAAG,aAAa,UAAU,OAAO;AAGjD,YAAM,eAAe,KAAK,mBAAmB,SAAS,aAAa;AAEnE,UAAI,CAAC,aAAa,QAAQ;AACxB,eAAO,KAAK,yBAAyB,aAAa,CAAC,CAAC;AAAA,MACtD;AAGA,UAAI,aAAa,QAAQ,GAAG;AAC1B,eAAO,KAAK,yBAAyB,oBAAoB;AAAA,UACvD,OAAO,aAAa;AAAA,QACtB,CAAC;AAAA,MACH;AAGA,aAAO,EAAE,OAAO,KAAK;AAAA,IACvB,SAAS,OAAO;AACd,aAAO;AAAA,QACL,OAAO;AAAA,QACP,OAAO,qBAAqB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,QAClF,YAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,mBACN,SACA,SACoC;AAEpC,QAAI,QAAQ,SAAS,OAAO,GAAG;AAC7B,YAAM,QAAQ,QAAQ,MAAM,OAAO,EAAE,SAAS;AAC9C,aAAO,EAAE,QAAQ,MAAM,MAAM;AAAA,IAC/B;AAGA,UAAM,QAAQ,oBAAoB,OAAO;AACzC,UAAM,UAAU,QAAQ,MAAM,KAAK;AAEnC,QAAI,CAAC,WAAW,QAAQ,WAAW,GAAG;AACpC,aAAO,EAAE,QAAQ,OAAO,OAAO,EAAE;AAAA,IACnC;AAEA,WAAO,EAAE,QAAQ,MAAM,OAAO,QAAQ,OAAO;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,yBACN,OACA,SACkB;AAClB,YAAQ,OAAO;AAAA,MACb,KAAK;AACH,eAAO;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,UACP,YACE;AAAA,QACJ;AAAA,MAEF,KAAK;AACH,eAAO;AAAA,UACL,OAAO;AAAA,UACP,OAAO,mBAAmB,QAAQ,KAAK;AAAA,UACvC,YACE;AAAA,QACJ;AAAA,MAEF;AACE,eAAO;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,UACP,YAAY;AAAA,QACd;AAAA,IACJ;AAAA,EACF;AACF;","names":[]}
|