@nanocollective/nanocoder 1.22.5 → 1.24.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/LICENSE.md +1 -15
- package/README.md +25 -821
- package/assets/nanocoder-vscode.vsix +0 -0
- package/dist/ai-sdk-client/ai-sdk-client.d.ts +3 -2
- package/dist/ai-sdk-client/ai-sdk-client.d.ts.map +1 -1
- package/dist/ai-sdk-client/ai-sdk-client.js +16 -2
- package/dist/ai-sdk-client/ai-sdk-client.js.map +1 -1
- package/dist/ai-sdk-client/chat/chat-handler.d.ts +2 -1
- package/dist/ai-sdk-client/chat/chat-handler.d.ts.map +1 -1
- package/dist/ai-sdk-client/chat/chat-handler.js +37 -70
- package/dist/ai-sdk-client/chat/chat-handler.js.map +1 -1
- package/dist/ai-sdk-client/chat/streaming-handler.d.ts +2 -2
- package/dist/ai-sdk-client/chat/streaming-handler.d.ts.map +1 -1
- package/dist/ai-sdk-client/chat/streaming-handler.js +4 -23
- package/dist/ai-sdk-client/chat/streaming-handler.js.map +1 -1
- package/dist/ai-sdk-client/error-handling/error-parser.d.ts.map +1 -1
- package/dist/ai-sdk-client/error-handling/error-parser.js +11 -3
- package/dist/ai-sdk-client/error-handling/error-parser.js.map +1 -1
- package/dist/ai-sdk-client/providers/provider-factory.d.ts +2 -1
- package/dist/ai-sdk-client/providers/provider-factory.d.ts.map +1 -1
- package/dist/ai-sdk-client/providers/provider-factory.js +55 -0
- package/dist/ai-sdk-client/providers/provider-factory.js.map +1 -1
- package/dist/app/App.d.ts +1 -1
- package/dist/app/App.d.ts.map +1 -1
- package/dist/app/App.js +148 -37
- package/dist/app/App.js.map +1 -1
- package/dist/app/components/chat-input.d.ts +9 -1
- package/dist/app/components/chat-input.d.ts.map +1 -1
- package/dist/app/components/chat-input.js +11 -8
- package/dist/app/components/chat-input.js.map +1 -1
- package/dist/app/components/modal-selectors.d.ts +6 -7
- package/dist/app/components/modal-selectors.d.ts.map +1 -1
- package/dist/app/components/modal-selectors.js +11 -7
- package/dist/app/components/modal-selectors.js.map +1 -1
- package/dist/app/components/settings-selector.d.ts.map +1 -1
- package/dist/app/components/settings-selector.js +3 -3
- package/dist/app/components/settings-selector.js.map +1 -1
- package/dist/app/helpers.d.ts.map +1 -1
- package/dist/app/helpers.js +2 -4
- package/dist/app/helpers.js.map +1 -1
- package/dist/app/index.d.ts +0 -1
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +0 -1
- package/dist/app/index.js.map +1 -1
- package/dist/app/types.d.ts +2 -0
- package/dist/app/types.d.ts.map +1 -1
- package/dist/app/utils/app-util.d.ts +1 -0
- package/dist/app/utils/app-util.d.ts.map +1 -1
- package/dist/app/utils/app-util.js +69 -204
- package/dist/app/utils/app-util.js.map +1 -1
- package/dist/app/utils/handlers/compact-handler.d.ts +6 -0
- package/dist/app/utils/handlers/compact-handler.d.ts.map +1 -0
- package/dist/app/utils/handlers/compact-handler.js +148 -0
- package/dist/app/utils/handlers/compact-handler.js.map +1 -0
- package/dist/app/utils/handlers/context-max-handler.d.ts +11 -0
- package/dist/app/utils/handlers/context-max-handler.d.ts.map +1 -0
- package/dist/app/utils/handlers/context-max-handler.js +102 -0
- package/dist/app/utils/handlers/context-max-handler.js.map +1 -0
- package/dist/app/utils/handlers/create-handler.d.ts +17 -0
- package/dist/app/utils/handlers/create-handler.d.ts.map +1 -0
- package/dist/app/utils/handlers/create-handler.js +112 -0
- package/dist/app/utils/handlers/create-handler.js.map +1 -0
- package/dist/app/utils/handlers/session-handler.d.ts +8 -0
- package/dist/app/utils/handlers/session-handler.d.ts.map +1 -0
- package/dist/app/utils/handlers/session-handler.js +99 -0
- package/dist/app/utils/handlers/session-handler.js.map +1 -0
- package/dist/auth/github-copilot.d.ts +44 -0
- package/dist/auth/github-copilot.d.ts.map +1 -0
- package/dist/auth/github-copilot.js +178 -0
- package/dist/auth/github-copilot.js.map +1 -0
- package/dist/cli.js +64 -3
- package/dist/cli.js.map +1 -1
- package/dist/client-factory.d.ts +1 -1
- package/dist/client-factory.d.ts.map +1 -1
- package/dist/client-factory.js +42 -10
- package/dist/client-factory.js.map +1 -1
- package/dist/commands/compact.d.ts +1 -6
- package/dist/commands/compact.d.ts.map +1 -1
- package/dist/commands/compact.js +2 -13
- package/dist/commands/compact.js.map +1 -1
- package/dist/commands/context-max.d.ts +14 -0
- package/dist/commands/context-max.d.ts.map +1 -0
- package/dist/commands/context-max.js +15 -0
- package/dist/commands/context-max.js.map +1 -0
- package/dist/commands/copilot-login-command.d.ts +3 -0
- package/dist/commands/copilot-login-command.d.ts.map +1 -0
- package/dist/commands/copilot-login-command.js +9 -0
- package/dist/commands/copilot-login-command.js.map +1 -0
- package/dist/commands/copilot-login.d.ts +9 -0
- package/dist/commands/copilot-login.d.ts.map +1 -0
- package/dist/commands/copilot-login.js +70 -0
- package/dist/commands/copilot-login.js.map +1 -0
- package/dist/commands/create-stub-command.d.ts +8 -0
- package/dist/commands/create-stub-command.d.ts.map +1 -0
- package/dist/commands/create-stub-command.js +14 -0
- package/dist/commands/create-stub-command.js.map +1 -0
- package/dist/commands/custom-commands.d.ts.map +1 -1
- package/dist/commands/custom-commands.js +88 -4
- package/dist/commands/custom-commands.js.map +1 -1
- package/dist/commands/exit.d.ts.map +1 -1
- package/dist/commands/exit.js +5 -8
- package/dist/commands/exit.js.map +1 -1
- package/dist/commands/explorer.d.ts +1 -2
- package/dist/commands/explorer.d.ts.map +1 -1
- package/dist/commands/explorer.js +2 -9
- package/dist/commands/explorer.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +1 -1
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/ide.d.ts +2 -0
- package/dist/commands/ide.d.ts.map +1 -0
- package/dist/commands/ide.js +3 -0
- package/dist/commands/ide.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +5 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/model.d.ts +1 -2
- package/dist/commands/model.d.ts.map +1 -1
- package/dist/commands/model.js +2 -10
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/provider.d.ts +1 -2
- package/dist/commands/provider.d.ts.map +1 -1
- package/dist/commands/provider.js +2 -10
- package/dist/commands/provider.js.map +1 -1
- package/dist/commands/resume.d.ts +8 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +11 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/schedule.d.ts +3 -0
- package/dist/commands/schedule.d.ts.map +1 -0
- package/dist/commands/schedule.js +177 -0
- package/dist/commands/schedule.js.map +1 -0
- package/dist/commands/settings.d.ts +1 -2
- package/dist/commands/settings.d.ts.map +1 -1
- package/dist/commands/settings.js +2 -10
- package/dist/commands/settings.js.map +1 -1
- package/dist/commands/status.d.ts +1 -2
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -10
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +4 -3
- package/dist/commands/usage.js.map +1 -1
- package/dist/components/assistant-message.d.ts.map +1 -1
- package/dist/components/assistant-message.js +2 -27
- package/dist/components/assistant-message.js.map +1 -1
- package/dist/components/development-mode-indicator.d.ts +3 -2
- package/dist/components/development-mode-indicator.d.ts.map +1 -1
- package/dist/components/development-mode-indicator.js +23 -9
- package/dist/components/development-mode-indicator.js.map +1 -1
- package/dist/components/ide-selector.d.ts +7 -0
- package/dist/components/ide-selector.d.ts.map +1 -0
- package/dist/components/ide-selector.js +17 -0
- package/dist/components/ide-selector.js.map +1 -0
- package/dist/components/provider-selector.d.ts.map +1 -1
- package/dist/components/provider-selector.js +4 -3
- package/dist/components/provider-selector.js.map +1 -1
- package/dist/components/question-prompt.d.ts +8 -0
- package/dist/components/question-prompt.d.ts.map +1 -0
- package/dist/components/question-prompt.js +58 -0
- package/dist/components/question-prompt.js.map +1 -0
- package/dist/components/scheduler-view.d.ts +14 -0
- package/dist/components/scheduler-view.d.ts.map +1 -0
- package/dist/components/scheduler-view.js +17 -0
- package/dist/components/scheduler-view.js.map +1 -0
- package/dist/components/session-selector.d.ts +12 -0
- package/dist/components/session-selector.d.ts.map +1 -0
- package/dist/components/session-selector.js +108 -0
- package/dist/components/session-selector.js.map +1 -0
- package/dist/components/text-input.d.ts +13 -0
- package/dist/components/text-input.d.ts.map +1 -0
- package/dist/components/text-input.js +175 -0
- package/dist/components/text-input.js.map +1 -0
- package/dist/components/tool-confirmation.d.ts.map +1 -1
- package/dist/components/tool-confirmation.js +9 -6
- package/dist/components/tool-confirmation.js.map +1 -1
- package/dist/components/ui/styled-title.js +2 -2
- package/dist/components/ui/styled-title.js.map +1 -1
- package/dist/components/user-input.d.ts +4 -1
- package/dist/components/user-input.d.ts.map +1 -1
- package/dist/components/user-input.js +29 -24
- package/dist/components/user-input.js.map +1 -1
- package/dist/components/user-message.d.ts.map +1 -1
- package/dist/components/user-message.js +1 -23
- package/dist/components/user-message.js.map +1 -1
- package/dist/components/vscode-extension-prompt.d.ts +6 -1
- package/dist/components/vscode-extension-prompt.d.ts.map +1 -1
- package/dist/components/vscode-extension-prompt.js +80 -36
- package/dist/components/vscode-extension-prompt.js.map +1 -1
- package/dist/config/copilot-credentials.d.ts +27 -0
- package/dist/config/copilot-credentials.d.ts.map +1 -0
- package/dist/config/copilot-credentials.js +81 -0
- package/dist/config/copilot-credentials.js.map +1 -0
- package/dist/config/index.d.ts +0 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +63 -27
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-config-loader.d.ts +2 -3
- package/dist/config/mcp-config-loader.d.ts.map +1 -1
- package/dist/config/mcp-config-loader.js +136 -181
- package/dist/config/mcp-config-loader.js.map +1 -1
- package/dist/config/nanocoder-tools-config.js +2 -2
- package/dist/config/nanocoder-tools-config.js.map +1 -1
- package/dist/config/themes.d.ts.map +1 -1
- package/dist/config/themes.js +9 -746
- package/dist/config/themes.js.map +1 -1
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +0 -19
- package/dist/config/validation.js.map +1 -1
- package/dist/custom-commands/command-integration.d.ts +24 -0
- package/dist/custom-commands/command-integration.d.ts.map +1 -0
- package/dist/custom-commands/command-integration.js +68 -0
- package/dist/custom-commands/command-integration.js.map +1 -0
- package/dist/custom-commands/executor.d.ts.map +1 -1
- package/dist/custom-commands/executor.js +12 -2
- package/dist/custom-commands/executor.js.map +1 -1
- package/dist/custom-commands/loader.d.ts +33 -5
- package/dist/custom-commands/loader.d.ts.map +1 -1
- package/dist/custom-commands/loader.js +191 -18
- package/dist/custom-commands/loader.js.map +1 -1
- package/dist/custom-commands/parser.d.ts.map +1 -1
- package/dist/custom-commands/parser.js +106 -48
- package/dist/custom-commands/parser.js.map +1 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts +6 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts.map +1 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.js +89 -76
- package/dist/hooks/chat-handler/conversation/conversation-loop.js.map +1 -1
- package/dist/hooks/chat-handler/conversation/tool-executor.d.ts +7 -2
- package/dist/hooks/chat-handler/conversation/tool-executor.d.ts.map +1 -1
- package/dist/hooks/chat-handler/conversation/tool-executor.js +109 -41
- package/dist/hooks/chat-handler/conversation/tool-executor.js.map +1 -1
- package/dist/hooks/chat-handler/types.d.ts +6 -1
- package/dist/hooks/chat-handler/types.d.ts.map +1 -1
- package/dist/hooks/chat-handler/useChatHandler.d.ts +1 -1
- package/dist/hooks/chat-handler/useChatHandler.d.ts.map +1 -1
- package/dist/hooks/chat-handler/useChatHandler.js +19 -5
- package/dist/hooks/chat-handler/useChatHandler.js.map +1 -1
- package/dist/hooks/useAppHandlers.d.ts +10 -1
- package/dist/hooks/useAppHandlers.d.ts.map +1 -1
- package/dist/hooks/useAppHandlers.js +124 -13
- package/dist/hooks/useAppHandlers.js.map +1 -1
- package/dist/hooks/useAppInitialization.d.ts +5 -3
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +54 -30
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useAppState.d.ts +27 -7
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +54 -22
- package/dist/hooks/useAppState.js.map +1 -1
- package/dist/hooks/useContextPercentage.d.ts +17 -0
- package/dist/hooks/useContextPercentage.d.ts.map +1 -0
- package/dist/hooks/useContextPercentage.js +71 -0
- package/dist/hooks/useContextPercentage.js.map +1 -0
- package/dist/hooks/useModeHandlers.d.ts +9 -12
- package/dist/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/hooks/useModeHandlers.js +31 -91
- package/dist/hooks/useModeHandlers.js.map +1 -1
- package/dist/hooks/useNonInteractiveMode.d.ts +7 -0
- package/dist/hooks/useNonInteractiveMode.d.ts.map +1 -1
- package/dist/hooks/useNonInteractiveMode.js +42 -3
- package/dist/hooks/useNonInteractiveMode.js.map +1 -1
- package/dist/hooks/useSchedulerMode.d.ts +30 -0
- package/dist/hooks/useSchedulerMode.d.ts.map +1 -0
- package/dist/hooks/useSchedulerMode.js +99 -0
- package/dist/hooks/useSchedulerMode.js.map +1 -0
- package/dist/hooks/useSessionAutosave.d.ts +16 -0
- package/dist/hooks/useSessionAutosave.d.ts.map +1 -0
- package/dist/hooks/useSessionAutosave.js +133 -0
- package/dist/hooks/useSessionAutosave.js.map +1 -0
- package/dist/hooks/useToolHandler.d.ts +2 -1
- package/dist/hooks/useToolHandler.d.ts.map +1 -1
- package/dist/hooks/useToolHandler.js +9 -3
- package/dist/hooks/useToolHandler.js.map +1 -1
- package/dist/lsp/lsp-manager.d.ts.map +1 -1
- package/dist/lsp/lsp-manager.js +10 -0
- package/dist/lsp/lsp-manager.js.map +1 -1
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +23 -3
- package/dist/mcp/mcp-client.js.map +1 -1
- package/dist/mcp/transport-factory.d.ts.map +1 -1
- package/dist/mcp/transport-factory.js +4 -36
- package/dist/mcp/transport-factory.js.map +1 -1
- package/dist/models/index.d.ts +1 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/models-dev-client.d.ts +8 -1
- package/dist/models/models-dev-client.d.ts.map +1 -1
- package/dist/models/models-dev-client.js +71 -15
- package/dist/models/models-dev-client.js.map +1 -1
- package/dist/schedule/cron.d.ts +14 -0
- package/dist/schedule/cron.d.ts.map +1 -0
- package/dist/schedule/cron.js +107 -0
- package/dist/schedule/cron.js.map +1 -0
- package/dist/schedule/index.d.ts +4 -0
- package/dist/schedule/index.d.ts.map +1 -0
- package/dist/schedule/index.js +4 -0
- package/dist/schedule/index.js.map +1 -0
- package/dist/schedule/runner.d.ts +42 -0
- package/dist/schedule/runner.d.ts.map +1 -0
- package/dist/schedule/runner.js +136 -0
- package/dist/schedule/runner.js.map +1 -0
- package/dist/schedule/storage.d.ts +9 -0
- package/dist/schedule/storage.d.ts.map +1 -0
- package/dist/schedule/storage.js +68 -0
- package/dist/schedule/storage.js.map +1 -0
- package/dist/schedule/types.d.ts +24 -0
- package/dist/schedule/types.d.ts.map +1 -0
- package/dist/schedule/types.js +2 -0
- package/dist/schedule/types.js.map +1 -0
- package/dist/services/bash-executor.d.ts.map +1 -1
- package/dist/services/bash-executor.js +5 -0
- package/dist/services/bash-executor.js.map +1 -1
- package/dist/session/session-manager.d.ts +57 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +361 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/test-utils/render-with-theme.d.ts.map +1 -1
- package/dist/test-utils/render-with-theme.js +2 -1
- package/dist/test-utils/render-with-theme.js.map +1 -1
- package/dist/tool-calling/tool-parser.d.ts +4 -3
- package/dist/tool-calling/tool-parser.d.ts.map +1 -1
- package/dist/tool-calling/tool-parser.js +17 -34
- package/dist/tool-calling/tool-parser.js.map +1 -1
- package/dist/tool-calling/xml-parser.d.ts +8 -4
- package/dist/tool-calling/xml-parser.d.ts.map +1 -1
- package/dist/tool-calling/xml-parser.js +15 -5
- package/dist/tool-calling/xml-parser.js.map +1 -1
- package/dist/tools/ask-question.d.ts +3 -0
- package/dist/tools/ask-question.d.ts.map +1 -0
- package/dist/tools/ask-question.js +66 -0
- package/dist/tools/ask-question.js.map +1 -0
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +6 -1
- package/dist/tools/execute-bash.js.map +1 -1
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +11 -2
- package/dist/tools/fetch-url.js.map +1 -1
- package/dist/tools/file-ops/copy-file.d.ts +3 -0
- package/dist/tools/file-ops/copy-file.d.ts.map +1 -0
- package/dist/tools/file-ops/copy-file.js +96 -0
- package/dist/tools/file-ops/copy-file.js.map +1 -0
- package/dist/tools/file-ops/create-directory.d.ts +3 -0
- package/dist/tools/file-ops/create-directory.d.ts.map +1 -0
- package/dist/tools/file-ops/create-directory.js +59 -0
- package/dist/tools/file-ops/create-directory.js.map +1 -0
- package/dist/tools/file-ops/delete-file.d.ts +3 -0
- package/dist/tools/file-ops/delete-file.d.ts.map +1 -0
- package/dist/tools/file-ops/delete-file.js +74 -0
- package/dist/tools/file-ops/delete-file.js.map +1 -0
- package/dist/tools/file-ops/index.d.ts +3 -0
- package/dist/tools/file-ops/index.d.ts.map +1 -0
- package/dist/tools/file-ops/index.js +8 -0
- package/dist/tools/file-ops/index.js.map +1 -0
- package/dist/tools/file-ops/move-file.d.ts +3 -0
- package/dist/tools/file-ops/move-file.d.ts.map +1 -0
- package/dist/tools/file-ops/move-file.js +96 -0
- package/dist/tools/file-ops/move-file.js.map +1 -0
- package/dist/tools/file-ops/string-replace-preview.d.ts +10 -0
- package/dist/tools/file-ops/string-replace-preview.d.ts.map +1 -0
- package/dist/tools/file-ops/string-replace-preview.js +171 -0
- package/dist/tools/file-ops/string-replace-preview.js.map +1 -0
- package/dist/tools/file-ops/string-replace.d.ts +3 -0
- package/dist/tools/file-ops/string-replace.d.ts.map +1 -0
- package/dist/tools/file-ops/string-replace.js +178 -0
- package/dist/tools/file-ops/string-replace.js.map +1 -0
- package/dist/tools/file-ops/write-file.d.ts +3 -0
- package/dist/tools/file-ops/write-file.d.ts.map +1 -0
- package/dist/tools/{write-file.js → file-ops/write-file.js} +34 -79
- package/dist/tools/file-ops/write-file.js.map +1 -0
- package/dist/tools/find-files.d.ts.map +1 -1
- package/dist/tools/find-files.js +1 -0
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/git/git-diff.d.ts.map +1 -1
- package/dist/tools/git/git-diff.js +1 -0
- package/dist/tools/git/git-diff.js.map +1 -1
- package/dist/tools/git/git-log.d.ts.map +1 -1
- package/dist/tools/git/git-log.js +1 -0
- package/dist/tools/git/git-log.js.map +1 -1
- package/dist/tools/git/git-reset.js +1 -1
- package/dist/tools/git/git-reset.js.map +1 -1
- package/dist/tools/git/git-status.d.ts.map +1 -1
- package/dist/tools/git/git-status.js +1 -0
- package/dist/tools/git/git-status.js.map +1 -1
- package/dist/tools/git/index.js +3 -3
- package/dist/tools/git/index.js.map +1 -1
- package/dist/tools/git/utils.d.ts +4 -0
- package/dist/tools/git/utils.d.ts.map +1 -1
- package/dist/tools/git/utils.js +12 -0
- package/dist/tools/git/utils.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +2 -1
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
- package/dist/tools/lsp-get-diagnostics.js +1 -5
- package/dist/tools/lsp-get-diagnostics.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +1 -0
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/search-file-contents.d.ts.map +1 -1
- package/dist/tools/search-file-contents.js +60 -10
- package/dist/tools/search-file-contents.js.map +1 -1
- package/dist/tools/tasks/list-tasks.d.ts.map +1 -1
- package/dist/tools/tasks/list-tasks.js +1 -0
- package/dist/tools/tasks/list-tasks.js.map +1 -1
- package/dist/tools/tool-manager.d.ts +10 -0
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +25 -2
- package/dist/tools/tool-manager.js.map +1 -1
- package/dist/tools/tool-registry.d.ts +9 -1
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +17 -1
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +1 -0
- package/dist/tools/web-search.js.map +1 -1
- package/dist/types/app.d.ts +5 -0
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/commands.d.ts +20 -1
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/types/config.d.ts +11 -15
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/core.d.ts +15 -4
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js +7 -0
- package/dist/types/core.js.map +1 -1
- package/dist/types/markdown-parser.d.ts +2 -10
- package/dist/types/markdown-parser.d.ts.map +1 -1
- package/dist/types/mcp.d.ts +2 -28
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/ui.d.ts +1 -1
- package/dist/types/ui.d.ts.map +1 -1
- package/dist/utils/ansi-truncate.d.ts +6 -0
- package/dist/utils/ansi-truncate.d.ts.map +1 -0
- package/dist/utils/ansi-truncate.js +39 -0
- package/dist/utils/ansi-truncate.js.map +1 -0
- package/dist/utils/auto-compact.d.ts.map +1 -1
- package/dist/utils/auto-compact.js +13 -7
- package/dist/utils/auto-compact.js.map +1 -1
- package/dist/utils/installation-detector.d.ts +6 -0
- package/dist/utils/installation-detector.d.ts.map +1 -1
- package/dist/utils/installation-detector.js +33 -19
- package/dist/utils/installation-detector.js.map +1 -1
- package/dist/utils/logging/health-monitor/checks/memory-check.d.ts.map +1 -1
- package/dist/utils/logging/health-monitor/checks/memory-check.js +2 -1
- package/dist/utils/logging/health-monitor/checks/memory-check.js.map +1 -1
- package/dist/utils/logging/health-monitor/core/health-monitor.d.ts.map +1 -1
- package/dist/utils/logging/health-monitor/core/health-monitor.js +3 -2
- package/dist/utils/logging/health-monitor/core/health-monitor.js.map +1 -1
- package/dist/utils/logging/index.d.ts.map +1 -1
- package/dist/utils/logging/index.js +18 -30
- package/dist/utils/logging/index.js.map +1 -1
- package/dist/utils/logging/performance.d.ts.map +1 -1
- package/dist/utils/logging/performance.js +21 -17
- package/dist/utils/logging/performance.js.map +1 -1
- package/dist/utils/logging/pino-logger.d.ts.map +1 -1
- package/dist/utils/logging/pino-logger.js +7 -8
- package/dist/utils/logging/pino-logger.js.map +1 -1
- package/dist/utils/logging/redaction.d.ts.map +1 -1
- package/dist/utils/logging/redaction.js +2 -0
- package/dist/utils/logging/redaction.js.map +1 -1
- package/dist/utils/logging/request-tracker.d.ts.map +1 -1
- package/dist/utils/logging/request-tracker.js +6 -5
- package/dist/utils/logging/request-tracker.js.map +1 -1
- package/dist/utils/logging/safe-process.d.ts +16 -0
- package/dist/utils/logging/safe-process.d.ts.map +1 -0
- package/dist/utils/logging/safe-process.js +37 -0
- package/dist/utils/logging/safe-process.js.map +1 -0
- package/dist/utils/logging/types.d.ts +0 -3
- package/dist/utils/logging/types.d.ts.map +1 -1
- package/dist/utils/message-builder.d.ts +0 -5
- package/dist/utils/message-builder.d.ts.map +1 -1
- package/dist/utils/message-builder.js +0 -8
- package/dist/utils/message-builder.js.map +1 -1
- package/dist/utils/path-validation.d.ts.map +1 -1
- package/dist/utils/path-validation.js +3 -1
- package/dist/utils/path-validation.js.map +1 -1
- package/dist/utils/path-validators.d.ts +16 -0
- package/dist/utils/path-validators.d.ts.map +1 -0
- package/dist/utils/path-validators.js +55 -0
- package/dist/utils/path-validators.js.map +1 -0
- package/dist/utils/question-queue.d.ts +15 -0
- package/dist/utils/question-queue.d.ts.map +1 -0
- package/dist/utils/question-queue.js +25 -0
- package/dist/utils/question-queue.js.map +1 -0
- package/dist/utils/response-formatter.d.ts +108 -0
- package/dist/utils/response-formatter.d.ts.map +1 -0
- package/dist/utils/response-formatter.js +372 -0
- package/dist/utils/response-formatter.js.map +1 -0
- package/dist/utils/shutdown/index.d.ts +7 -0
- package/dist/utils/shutdown/index.d.ts.map +1 -0
- package/dist/utils/shutdown/index.js +6 -0
- package/dist/utils/shutdown/index.js.map +1 -0
- package/dist/utils/shutdown/shutdown-manager.d.ts +19 -0
- package/dist/utils/shutdown/shutdown-manager.d.ts.map +1 -0
- package/dist/utils/shutdown/shutdown-manager.js +100 -0
- package/dist/utils/shutdown/shutdown-manager.js.map +1 -0
- package/dist/utils/shutdown/types.d.ts +9 -0
- package/dist/utils/shutdown/types.d.ts.map +1 -0
- package/dist/utils/shutdown/types.js +2 -0
- package/dist/utils/shutdown/types.js.map +1 -0
- package/dist/utils/text-wrapping.d.ts +8 -0
- package/dist/utils/text-wrapping.d.ts.map +1 -0
- package/dist/utils/text-wrapping.js +29 -0
- package/dist/utils/text-wrapping.js.map +1 -0
- package/dist/utils/tool-approval.d.ts +6 -0
- package/dist/utils/tool-approval.d.ts.map +1 -0
- package/dist/utils/tool-approval.js +15 -0
- package/dist/utils/tool-approval.js.map +1 -0
- package/dist/utils/tool-result-display.d.ts +15 -1
- package/dist/utils/tool-result-display.d.ts.map +1 -1
- package/dist/utils/tool-result-display.js +93 -3
- package/dist/utils/tool-result-display.js.map +1 -1
- package/dist/utils/type-helpers.d.ts +140 -0
- package/dist/utils/type-helpers.d.ts.map +1 -0
- package/dist/utils/type-helpers.js +220 -0
- package/dist/utils/type-helpers.js.map +1 -0
- package/dist/utils/url-utils.d.ts +6 -0
- package/dist/utils/url-utils.d.ts.map +1 -0
- package/dist/utils/url-utils.js +22 -0
- package/dist/utils/url-utils.js.map +1 -0
- package/dist/vscode/extension-installer.d.ts +34 -7
- package/dist/vscode/extension-installer.d.ts.map +1 -1
- package/dist/vscode/extension-installer.js +151 -64
- package/dist/vscode/extension-installer.js.map +1 -1
- package/dist/vscode/index.d.ts +1 -1
- package/dist/vscode/index.d.ts.map +1 -1
- package/dist/vscode/index.js +1 -1
- package/dist/vscode/index.js.map +1 -1
- package/dist/vscode/vscode-server.d.ts.map +1 -1
- package/dist/vscode/vscode-server.js +10 -0
- package/dist/vscode/vscode-server.js.map +1 -1
- package/dist/wizards/mcp-wizard.d.ts.map +1 -1
- package/dist/wizards/mcp-wizard.js +2 -1
- package/dist/wizards/mcp-wizard.js.map +1 -1
- package/dist/wizards/provider-wizard.d.ts.map +1 -1
- package/dist/wizards/provider-wizard.js +4 -2
- package/dist/wizards/provider-wizard.js.map +1 -1
- package/dist/wizards/steps/location-step.d.ts.map +1 -1
- package/dist/wizards/steps/location-step.js +2 -1
- package/dist/wizards/steps/location-step.js.map +1 -1
- package/dist/wizards/steps/mcp-step.d.ts.map +1 -1
- package/dist/wizards/steps/mcp-step.js +3 -2
- package/dist/wizards/steps/mcp-step.js.map +1 -1
- package/dist/wizards/steps/provider-step.d.ts.map +1 -1
- package/dist/wizards/steps/provider-step.js +5 -2
- package/dist/wizards/steps/provider-step.js.map +1 -1
- package/dist/wizards/steps/summary-step.d.ts.map +1 -1
- package/dist/wizards/steps/summary-step.js +2 -1
- package/dist/wizards/steps/summary-step.js.map +1 -1
- package/dist/wizards/templates/mcp-templates.d.ts +0 -8
- package/dist/wizards/templates/mcp-templates.d.ts.map +1 -1
- package/dist/wizards/templates/mcp-templates.js +8 -6
- package/dist/wizards/templates/mcp-templates.js.map +1 -1
- package/dist/wizards/templates/provider-templates.d.ts.map +1 -1
- package/dist/wizards/templates/provider-templates.js +59 -0
- package/dist/wizards/templates/provider-templates.js.map +1 -1
- package/dist/wizards/validation.d.ts.map +1 -1
- package/dist/wizards/validation.js +2 -4
- package/dist/wizards/validation.js.map +1 -1
- package/package.json +22 -23
- package/source/app/prompts/main-prompt.md +21 -3
- package/source/config/themes.json +787 -0
- package/dist/ai-sdk-client/chat/tool-processor.d.ts +0 -10
- package/dist/ai-sdk-client/chat/tool-processor.d.ts.map +0 -1
- package/dist/ai-sdk-client/chat/tool-processor.js +0 -53
- package/dist/ai-sdk-client/chat/tool-processor.js.map +0 -1
- package/dist/hooks/chat-handler/utils/context-checker.d.ts +0 -15
- package/dist/hooks/chat-handler/utils/context-checker.d.ts.map +0 -1
- package/dist/hooks/chat-handler/utils/context-checker.js +0 -68
- package/dist/hooks/chat-handler/utils/context-checker.js.map +0 -1
- package/dist/tool-calling/json-parser.d.ts +0 -24
- package/dist/tool-calling/json-parser.d.ts.map +0 -1
- package/dist/tool-calling/json-parser.js +0 -202
- package/dist/tool-calling/json-parser.js.map +0 -1
- package/dist/tools/string-replace.d.ts +0 -3
- package/dist/tools/string-replace.d.ts.map +0 -1
- package/dist/tools/string-replace.js +0 -461
- package/dist/tools/string-replace.js.map +0 -1
- package/dist/tools/write-file.d.ts +0 -3
- package/dist/tools/write-file.d.ts.map +0 -1
- package/dist/tools/write-file.js.map +0 -1
|
@@ -38,19 +38,31 @@ export function useAppState() {
|
|
|
38
38
|
const [isSettingsMode, setIsSettingsMode] = useState(false);
|
|
39
39
|
// Cancellation state
|
|
40
40
|
const [abortController, setAbortController] = useState(null);
|
|
41
|
-
//
|
|
42
|
-
const [
|
|
43
|
-
const [
|
|
44
|
-
const [isModelDatabaseMode, setIsModelDatabaseMode] = useState(false);
|
|
45
|
-
const [isConfigWizardMode, setIsConfigWizardMode] = useState(false);
|
|
46
|
-
const [isMcpWizardMode, setIsMcpWizardMode] = useState(false);
|
|
47
|
-
const [isCheckpointLoadMode, setIsCheckpointLoadMode] = useState(false);
|
|
48
|
-
const [isExplorerMode, setIsExplorerMode] = useState(false);
|
|
41
|
+
// Unified modal/mode state - replaces 11 individual boolean states
|
|
42
|
+
const [activeMode, setActiveMode] = useState(null);
|
|
43
|
+
const [isVscodeEnabled, setIsVscodeEnabled] = useState(false);
|
|
49
44
|
const [checkpointLoadData, setCheckpointLoadData] = useState(null);
|
|
45
|
+
const [showAllSessions, setShowAllSessions] = useState(false);
|
|
46
|
+
const [currentSessionId, setCurrentSessionId] = useState(null);
|
|
50
47
|
const [isToolConfirmationMode, setIsToolConfirmationMode] = useState(false);
|
|
51
48
|
const [isToolExecuting, setIsToolExecuting] = useState(false);
|
|
49
|
+
// Compact tool display state
|
|
50
|
+
const [compactToolDisplay, setCompactToolDisplay] = useState(true);
|
|
51
|
+
// Ref keeps current value accessible to long-running async loops
|
|
52
|
+
const compactToolDisplayRef = useRef(true);
|
|
53
|
+
compactToolDisplayRef.current = compactToolDisplay;
|
|
54
|
+
const [compactToolCounts, setCompactToolCounts] = useState(null);
|
|
55
|
+
// Mutable ref for the compact counts accumulator - shared between
|
|
56
|
+
// the async conversation loop and the toggle handler
|
|
57
|
+
const compactToolCountsRef = useRef({});
|
|
58
|
+
// Question mode state (ask_question tool)
|
|
59
|
+
const [isQuestionMode, setIsQuestionMode] = useState(false);
|
|
60
|
+
const [pendingQuestion, setPendingQuestion] = useState(null);
|
|
52
61
|
// Development mode state
|
|
53
62
|
const [developmentMode, setDevelopmentMode] = useState('normal');
|
|
63
|
+
// Context usage state
|
|
64
|
+
const [contextPercentUsed, setContextPercentUsed] = useState(null);
|
|
65
|
+
const [contextLimit, setContextLimit] = useState(null);
|
|
54
66
|
// Tool confirmation state
|
|
55
67
|
const [pendingToolCalls, setPendingToolCalls] = useState([]);
|
|
56
68
|
const [currentToolIndex, setCurrentToolIndex] = useState(0);
|
|
@@ -164,17 +176,35 @@ export function useAppState() {
|
|
|
164
176
|
isConversationComplete,
|
|
165
177
|
isSettingsMode,
|
|
166
178
|
abortController,
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
179
|
+
// Unified mode state
|
|
180
|
+
activeMode,
|
|
181
|
+
setActiveMode,
|
|
182
|
+
// Derived mode booleans (read-only convenience)
|
|
183
|
+
isModelSelectionMode: activeMode === 'model',
|
|
184
|
+
isProviderSelectionMode: activeMode === 'provider',
|
|
185
|
+
isModelDatabaseMode: activeMode === 'modelDatabase',
|
|
186
|
+
isConfigWizardMode: activeMode === 'configWizard',
|
|
187
|
+
isMcpWizardMode: activeMode === 'mcpWizard',
|
|
188
|
+
isCheckpointLoadMode: activeMode === 'checkpointLoad',
|
|
189
|
+
isExplorerMode: activeMode === 'explorer',
|
|
190
|
+
isIdeSelectionMode: activeMode === 'ideSelection',
|
|
191
|
+
isSchedulerMode: activeMode === 'scheduler',
|
|
192
|
+
isSessionSelectorMode: activeMode === 'sessionSelector',
|
|
193
|
+
isVscodeEnabled,
|
|
174
194
|
checkpointLoadData,
|
|
195
|
+
showAllSessions,
|
|
196
|
+
currentSessionId,
|
|
175
197
|
isToolConfirmationMode,
|
|
176
198
|
isToolExecuting,
|
|
199
|
+
compactToolDisplay,
|
|
200
|
+
compactToolDisplayRef,
|
|
201
|
+
compactToolCounts,
|
|
202
|
+
compactToolCountsRef,
|
|
203
|
+
isQuestionMode,
|
|
204
|
+
pendingQuestion,
|
|
177
205
|
developmentMode,
|
|
206
|
+
contextPercentUsed,
|
|
207
|
+
contextLimit,
|
|
178
208
|
pendingToolCalls,
|
|
179
209
|
currentToolIndex,
|
|
180
210
|
completedToolResults,
|
|
@@ -206,17 +236,19 @@ export function useAppState() {
|
|
|
206
236
|
setIsConversationComplete,
|
|
207
237
|
setIsSettingsMode,
|
|
208
238
|
setAbortController,
|
|
209
|
-
|
|
210
|
-
setIsProviderSelectionMode,
|
|
211
|
-
setIsModelDatabaseMode,
|
|
212
|
-
setIsConfigWizardMode,
|
|
213
|
-
setIsMcpWizardMode,
|
|
214
|
-
setIsCheckpointLoadMode,
|
|
215
|
-
setIsExplorerMode,
|
|
239
|
+
setIsVscodeEnabled,
|
|
216
240
|
setCheckpointLoadData,
|
|
241
|
+
setShowAllSessions,
|
|
242
|
+
setCurrentSessionId,
|
|
217
243
|
setIsToolConfirmationMode,
|
|
218
244
|
setIsToolExecuting,
|
|
245
|
+
setCompactToolDisplay,
|
|
246
|
+
setCompactToolCounts,
|
|
247
|
+
setIsQuestionMode,
|
|
248
|
+
setPendingQuestion,
|
|
219
249
|
setDevelopmentMode,
|
|
250
|
+
setContextPercentUsed,
|
|
251
|
+
setContextLimit,
|
|
220
252
|
setPendingToolCalls,
|
|
221
253
|
setCurrentToolIndex,
|
|
222
254
|
setCompletedToolResults,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAppState.js","sourceRoot":"","sources":["../../source/hooks/useAppState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE/E,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAexD,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAppState.js","sourceRoot":"","sources":["../../source/hooks/useAppState.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ToolManager } from '../tools/tool-manager.js';
|
|
2
|
+
import type { Message } from '../types/core.js';
|
|
3
|
+
import type { Tokenizer } from '../types/tokenization.js';
|
|
4
|
+
interface UseContextPercentageProps {
|
|
5
|
+
currentModel: string;
|
|
6
|
+
messages: Message[];
|
|
7
|
+
tokenizer: Tokenizer;
|
|
8
|
+
getMessageTokens: (message: Message) => number;
|
|
9
|
+
toolManager: ToolManager | null;
|
|
10
|
+
streamingTokenCount: number;
|
|
11
|
+
contextLimit: number | null;
|
|
12
|
+
setContextPercentUsed: (value: number | null) => void;
|
|
13
|
+
setContextLimit: (value: number | null) => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function useContextPercentage({ currentModel, messages, tokenizer, getMessageTokens, toolManager, streamingTokenCount, contextLimit, setContextPercentUsed, setContextLimit, }: UseContextPercentageProps): void;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=useContextPercentage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useContextPercentage.d.ts","sourceRoot":"","sources":["../../source/hooks/useContextPercentage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAOpD,UAAU,yBAAyB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IAC/C,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,oBAAoB,CAAC,EACpC,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EACrB,eAAe,GACf,EAAE,yBAAyB,GAAG,IAAI,CA+ElC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { getModelContextLimit } from '../models/index.js';
|
|
3
|
+
import { calculateTokenBreakdown, calculateToolDefinitionsTokens, } from '../usage/calculator.js';
|
|
4
|
+
import { processPromptTemplate } from '../utils/prompt-processor.js';
|
|
5
|
+
export function useContextPercentage({ currentModel, messages, tokenizer, getMessageTokens, toolManager, streamingTokenCount, contextLimit, setContextPercentUsed, setContextLimit, }) {
|
|
6
|
+
const contextLimitRef = useRef(null);
|
|
7
|
+
const lastModelRef = useRef('');
|
|
8
|
+
// Effect 1: Resolve context limit when model changes
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!currentModel) {
|
|
11
|
+
contextLimitRef.current = null;
|
|
12
|
+
setContextLimit(null);
|
|
13
|
+
setContextPercentUsed(null);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (currentModel === lastModelRef.current)
|
|
17
|
+
return;
|
|
18
|
+
lastModelRef.current = currentModel;
|
|
19
|
+
let cancelled = false;
|
|
20
|
+
void getModelContextLimit(currentModel).then(limit => {
|
|
21
|
+
if (cancelled)
|
|
22
|
+
return;
|
|
23
|
+
contextLimitRef.current = limit;
|
|
24
|
+
setContextLimit(limit);
|
|
25
|
+
if (!limit) {
|
|
26
|
+
setContextPercentUsed(null);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return () => {
|
|
30
|
+
cancelled = true;
|
|
31
|
+
};
|
|
32
|
+
}, [currentModel, setContextLimit, setContextPercentUsed]);
|
|
33
|
+
// Effect 2: Recalculate percentage when messages, streaming tokens, or context limit change
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
const limit = contextLimitRef.current;
|
|
36
|
+
if (!limit) {
|
|
37
|
+
setContextPercentUsed(null);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Include system prompt in calculation (same as /usage command)
|
|
41
|
+
const systemPrompt = processPromptTemplate();
|
|
42
|
+
const systemMessage = {
|
|
43
|
+
role: 'system',
|
|
44
|
+
content: systemPrompt,
|
|
45
|
+
};
|
|
46
|
+
const breakdown = calculateTokenBreakdown([systemMessage, ...messages], tokenizer, (message) => {
|
|
47
|
+
// System message won't be in the cache, use tokenizer directly
|
|
48
|
+
if (message.role === 'system') {
|
|
49
|
+
return tokenizer.countTokens(message);
|
|
50
|
+
}
|
|
51
|
+
return getMessageTokens(message);
|
|
52
|
+
});
|
|
53
|
+
// Include tool definition overhead (same as /usage command)
|
|
54
|
+
const toolDefTokens = toolManager
|
|
55
|
+
? calculateToolDefinitionsTokens(Object.keys(toolManager.getToolRegistry()).length)
|
|
56
|
+
: 0;
|
|
57
|
+
const total = breakdown.total + toolDefTokens + streamingTokenCount;
|
|
58
|
+
const percent = Math.round((total / limit) * 100);
|
|
59
|
+
setContextPercentUsed(percent);
|
|
60
|
+
// contextLimit is included to re-trigger calculation after async limit resolution
|
|
61
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
62
|
+
}, [
|
|
63
|
+
messages,
|
|
64
|
+
tokenizer,
|
|
65
|
+
getMessageTokens,
|
|
66
|
+
toolManager,
|
|
67
|
+
streamingTokenCount,
|
|
68
|
+
setContextPercentUsed,
|
|
69
|
+
]);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=useContextPercentage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useContextPercentage.js","sourceRoot":"","sources":["../../source/hooks/useContextPercentage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,31 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { ActiveMode } from '../hooks/useAppState.js';
|
|
2
3
|
import { LLMClient, Message } from '../types/core.js';
|
|
3
|
-
import type { ThemePreset } from '../types/ui.js';
|
|
4
4
|
interface UseModeHandlersProps {
|
|
5
5
|
client: LLMClient | null;
|
|
6
6
|
currentModel: string;
|
|
7
7
|
currentProvider: string;
|
|
8
|
-
currentTheme: ThemePreset;
|
|
9
8
|
setClient: (client: LLMClient | null) => void;
|
|
10
9
|
setCurrentModel: (model: string) => void;
|
|
11
10
|
setCurrentProvider: (provider: string) => void;
|
|
12
|
-
setCurrentTheme: (theme: ThemePreset) => void;
|
|
13
11
|
setMessages: (messages: Message[]) => void;
|
|
14
|
-
|
|
15
|
-
setIsProviderSelectionMode: (mode: boolean) => void;
|
|
16
|
-
setIsModelDatabaseMode: (mode: boolean) => void;
|
|
17
|
-
setIsConfigWizardMode: (mode: boolean) => void;
|
|
12
|
+
setActiveMode: (mode: ActiveMode) => void;
|
|
18
13
|
setIsSettingsMode: (mode: boolean) => void;
|
|
19
|
-
setIsMcpWizardMode: (mode: boolean) => void;
|
|
20
|
-
setIsExplorerMode: (mode: boolean) => void;
|
|
21
14
|
addToChatQueue: (component: React.ReactNode) => void;
|
|
22
15
|
getNextComponentKey: () => number;
|
|
23
16
|
reinitializeMCPServers: (toolManager: import('../tools/tool-manager.js').ToolManager) => Promise<void>;
|
|
24
17
|
}
|
|
25
|
-
export declare function useModeHandlers({ client, currentModel, currentProvider,
|
|
18
|
+
export declare function useModeHandlers({ client, currentModel, currentProvider, setClient, setCurrentModel, setCurrentProvider, setMessages, setActiveMode, setIsSettingsMode, addToChatQueue, getNextComponentKey, reinitializeMCPServers, }: UseModeHandlersProps): {
|
|
19
|
+
enterMode: (mode: ActiveMode) => void;
|
|
20
|
+
exitMode: () => void;
|
|
26
21
|
enterModelSelectionMode: () => void;
|
|
27
22
|
enterProviderSelectionMode: () => void;
|
|
28
23
|
enterModelDatabaseMode: () => void;
|
|
29
24
|
enterConfigWizardMode: () => void;
|
|
30
|
-
enterSettingsMode: () => void;
|
|
31
25
|
enterMcpWizardMode: () => void;
|
|
26
|
+
enterExplorerMode: () => void;
|
|
27
|
+
enterIdeSelectionMode: () => void;
|
|
28
|
+
enterSettingsMode: () => void;
|
|
32
29
|
handleModelSelect: (selectedModel: string) => Promise<void>;
|
|
33
30
|
handleModelSelectionCancel: () => void;
|
|
34
31
|
handleProviderSelect: (selectedProvider: string) => Promise<void>;
|
|
@@ -39,8 +36,8 @@ export declare function useModeHandlers({ client, currentModel, currentProvider,
|
|
|
39
36
|
handleMcpWizardComplete: (configPath?: string) => Promise<void>;
|
|
40
37
|
handleMcpWizardCancel: () => void;
|
|
41
38
|
handleSettingsCancel: () => void;
|
|
42
|
-
enterExplorerMode: () => void;
|
|
43
39
|
handleExplorerCancel: () => void;
|
|
40
|
+
handleIdeSelectionCancel: () => void;
|
|
44
41
|
};
|
|
45
42
|
export {};
|
|
46
43
|
//# sourceMappingURL=useModeHandlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModeHandlers.d.ts","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useModeHandlers.d.ts","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,cAAc,CAAC;AAEhD,UAAU,oBAAoB;IAC7B,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,cAAc,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACrD,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAClC,sBAAsB,EAAE,CACvB,WAAW,EAAE,OAAO,sBAAsB,EAAE,WAAW,KACnD,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,EAC/B,MAAM,EACN,YAAY,EACZ,eAAe,EACf,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,GACtB,EAAE,oBAAoB;sBAEG,UAAU;;;;;;;;;;uCAIa,MAAM;;6CAwBA,MAAM;;;8CAiDL,MAAM;;2CAqET,MAAM;;;;;EA+D1D"}
|
|
@@ -4,15 +4,10 @@ import { ErrorMessage, SuccessMessage } from '../components/message-box.js';
|
|
|
4
4
|
import { reloadAppConfig } from '../config/index.js';
|
|
5
5
|
import { loadPreferences, updateLastUsed } from '../config/preferences.js';
|
|
6
6
|
import { getToolManager } from '../message-handler.js';
|
|
7
|
-
export function useModeHandlers({ client, currentModel, currentProvider,
|
|
8
|
-
//
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
// Helper function to enter provider selection mode
|
|
13
|
-
const enterProviderSelectionMode = () => {
|
|
14
|
-
setIsProviderSelectionMode(true);
|
|
15
|
-
};
|
|
7
|
+
export function useModeHandlers({ client, currentModel, currentProvider, setClient, setCurrentModel, setCurrentProvider, setMessages, setActiveMode, setIsSettingsMode, addToChatQueue, getNextComponentKey, reinitializeMCPServers, }) {
|
|
8
|
+
// Generic enter/exit helpers
|
|
9
|
+
const enterMode = (mode) => setActiveMode(mode);
|
|
10
|
+
const exitMode = () => setActiveMode(null);
|
|
16
11
|
// Handle model selection
|
|
17
12
|
const handleModelSelect = async (selectedModel) => {
|
|
18
13
|
if (client && selectedModel !== currentModel) {
|
|
@@ -23,71 +18,40 @@ export function useModeHandlers({ client, currentModel, currentProvider, current
|
|
|
23
18
|
await client.clearContext();
|
|
24
19
|
// Update preferences
|
|
25
20
|
updateLastUsed(currentProvider, selectedModel);
|
|
26
|
-
// Add success message to chat queue
|
|
27
21
|
addToChatQueue(_jsx(SuccessMessage, { message: `Model changed to: ${selectedModel}. Chat history cleared.`, hideBox: true }, `model-changed-${getNextComponentKey()}`));
|
|
28
22
|
}
|
|
29
|
-
|
|
30
|
-
};
|
|
31
|
-
// Handle model selection cancel
|
|
32
|
-
const handleModelSelectionCancel = () => {
|
|
33
|
-
setIsModelSelectionMode(false);
|
|
23
|
+
exitMode();
|
|
34
24
|
};
|
|
35
25
|
// Handle provider selection
|
|
36
26
|
const handleProviderSelect = async (selectedProvider) => {
|
|
37
27
|
if (selectedProvider !== currentProvider) {
|
|
38
28
|
try {
|
|
39
|
-
// Create new client for the selected provider
|
|
40
29
|
const { client: newClient, actualProvider } = await createLLMClient(selectedProvider);
|
|
41
|
-
// Check if we got the provider we requested
|
|
42
30
|
if (actualProvider !== selectedProvider) {
|
|
43
|
-
// Provider was forced to a different one (likely due to missing config)
|
|
44
31
|
addToChatQueue(_jsx(ErrorMessage, { message: `${selectedProvider} is not available. Please ensure it's properly configured in agents.config.json.`, hideBox: true }, `provider-forced-${getNextComponentKey()}`));
|
|
45
|
-
return;
|
|
32
|
+
return;
|
|
46
33
|
}
|
|
47
34
|
setClient(newClient);
|
|
48
35
|
setCurrentProvider(actualProvider);
|
|
49
|
-
// Set the model from the new client
|
|
50
36
|
const newModel = newClient.getCurrentModel();
|
|
51
37
|
setCurrentModel(newModel);
|
|
52
|
-
// Clear message history when switching providers
|
|
53
38
|
setMessages([]);
|
|
54
39
|
await newClient.clearContext();
|
|
55
|
-
// Update preferences - use the actualProvider (which is what was successfully created)
|
|
56
40
|
updateLastUsed(actualProvider, newModel);
|
|
57
|
-
// Add success message to chat queue
|
|
58
41
|
addToChatQueue(_jsx(SuccessMessage, { message: `Provider changed to: ${actualProvider}, model: ${newModel}. Chat history cleared.`, hideBox: true }, `provider-changed-${getNextComponentKey()}`));
|
|
59
42
|
}
|
|
60
43
|
catch (error) {
|
|
61
|
-
// Add error message if provider change fails
|
|
62
44
|
addToChatQueue(_jsx(ErrorMessage, { message: `Failed to change provider to ${selectedProvider}: ${String(error)}`, hideBox: true }, `provider-error-${getNextComponentKey()}`));
|
|
63
45
|
}
|
|
64
46
|
}
|
|
65
|
-
|
|
66
|
-
};
|
|
67
|
-
// Handle provider selection cancel
|
|
68
|
-
const handleProviderSelectionCancel = () => {
|
|
69
|
-
setIsProviderSelectionMode(false);
|
|
70
|
-
};
|
|
71
|
-
// Helper function to enter model database mode
|
|
72
|
-
const enterModelDatabaseMode = () => {
|
|
73
|
-
setIsModelDatabaseMode(true);
|
|
74
|
-
};
|
|
75
|
-
// Handle model database cancel
|
|
76
|
-
const handleModelDatabaseCancel = () => {
|
|
77
|
-
setIsModelDatabaseMode(false);
|
|
78
|
-
};
|
|
79
|
-
// Helper function to enter config wizard mode
|
|
80
|
-
const enterConfigWizardMode = () => {
|
|
81
|
-
setIsConfigWizardMode(true);
|
|
47
|
+
exitMode();
|
|
82
48
|
};
|
|
83
|
-
// Handle config wizard
|
|
49
|
+
// Handle config wizard complete - reinitializes client and MCP servers
|
|
84
50
|
const handleConfigWizardComplete = async (configPath) => {
|
|
85
|
-
|
|
51
|
+
exitMode();
|
|
86
52
|
if (configPath) {
|
|
87
53
|
addToChatQueue(_jsx(SuccessMessage, { message: `Configuration saved to: ${configPath}.`, hideBox: true }, `config-wizard-complete-${getNextComponentKey()}`));
|
|
88
|
-
// Reload the app configuration to pick up the newly saved config
|
|
89
54
|
reloadAppConfig();
|
|
90
|
-
// Reinitialize client with new configuration
|
|
91
55
|
try {
|
|
92
56
|
const preferences = loadPreferences();
|
|
93
57
|
const { client: newClient, actualProvider } = await createLLMClient(preferences.lastProvider);
|
|
@@ -95,10 +59,8 @@ export function useModeHandlers({ client, currentModel, currentProvider, current
|
|
|
95
59
|
setCurrentProvider(actualProvider);
|
|
96
60
|
const newModel = newClient.getCurrentModel();
|
|
97
61
|
setCurrentModel(newModel);
|
|
98
|
-
// Clear message history when switching providers
|
|
99
62
|
setMessages([]);
|
|
100
63
|
await newClient.clearContext();
|
|
101
|
-
// Reinitialize MCP servers with the new configuration
|
|
102
64
|
const toolManager = getToolManager();
|
|
103
65
|
if (toolManager) {
|
|
104
66
|
try {
|
|
@@ -116,21 +78,12 @@ export function useModeHandlers({ client, currentModel, currentProvider, current
|
|
|
116
78
|
}
|
|
117
79
|
}
|
|
118
80
|
};
|
|
119
|
-
|
|
120
|
-
setIsConfigWizardMode(false);
|
|
121
|
-
};
|
|
122
|
-
// Helper function to enter MCP wizard mode
|
|
123
|
-
const enterMcpWizardMode = () => {
|
|
124
|
-
setIsMcpWizardMode(true);
|
|
125
|
-
};
|
|
126
|
-
// Handle MCP wizard cancel/complete
|
|
81
|
+
// Handle MCP wizard complete - reinitializes MCP servers
|
|
127
82
|
const handleMcpWizardComplete = async (configPath) => {
|
|
128
|
-
|
|
83
|
+
exitMode();
|
|
129
84
|
if (configPath) {
|
|
130
85
|
addToChatQueue(_jsx(SuccessMessage, { message: `MCP configuration saved to: ${configPath}.`, hideBox: true }, `mcp-wizard-complete-${getNextComponentKey()}`));
|
|
131
|
-
// Reload the app configuration to pick up the newly saved config
|
|
132
86
|
reloadAppConfig();
|
|
133
|
-
// Reinitialize MCP servers with the new configuration
|
|
134
87
|
const toolManager = getToolManager();
|
|
135
88
|
if (toolManager) {
|
|
136
89
|
try {
|
|
@@ -143,44 +96,31 @@ export function useModeHandlers({ client, currentModel, currentProvider, current
|
|
|
143
96
|
}
|
|
144
97
|
}
|
|
145
98
|
};
|
|
146
|
-
const handleMcpWizardCancel = () => {
|
|
147
|
-
setIsMcpWizardMode(false);
|
|
148
|
-
};
|
|
149
|
-
// Helper function to enter settings mode
|
|
150
|
-
const enterSettingsMode = () => {
|
|
151
|
-
setIsSettingsMode(true);
|
|
152
|
-
};
|
|
153
|
-
// Handle settings cancel
|
|
154
|
-
const handleSettingsCancel = () => {
|
|
155
|
-
setIsSettingsMode(false);
|
|
156
|
-
};
|
|
157
|
-
// Helper function to enter explorer mode
|
|
158
|
-
const enterExplorerMode = () => {
|
|
159
|
-
setIsExplorerMode(true);
|
|
160
|
-
};
|
|
161
|
-
// Handle explorer cancel
|
|
162
|
-
const handleExplorerCancel = () => {
|
|
163
|
-
setIsExplorerMode(false);
|
|
164
|
-
};
|
|
165
99
|
return {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
100
|
+
enterMode,
|
|
101
|
+
exitMode,
|
|
102
|
+
// Convenience enter helpers
|
|
103
|
+
enterModelSelectionMode: () => enterMode('model'),
|
|
104
|
+
enterProviderSelectionMode: () => enterMode('provider'),
|
|
105
|
+
enterModelDatabaseMode: () => enterMode('modelDatabase'),
|
|
106
|
+
enterConfigWizardMode: () => enterMode('configWizard'),
|
|
107
|
+
enterMcpWizardMode: () => enterMode('mcpWizard'),
|
|
108
|
+
enterExplorerMode: () => enterMode('explorer'),
|
|
109
|
+
enterIdeSelectionMode: () => enterMode('ideSelection'),
|
|
110
|
+
enterSettingsMode: () => setIsSettingsMode(true),
|
|
111
|
+
// Cancel/complete handlers
|
|
172
112
|
handleModelSelect,
|
|
173
|
-
handleModelSelectionCancel,
|
|
113
|
+
handleModelSelectionCancel: exitMode,
|
|
174
114
|
handleProviderSelect,
|
|
175
|
-
handleProviderSelectionCancel,
|
|
176
|
-
handleModelDatabaseCancel,
|
|
115
|
+
handleProviderSelectionCancel: exitMode,
|
|
116
|
+
handleModelDatabaseCancel: exitMode,
|
|
177
117
|
handleConfigWizardComplete,
|
|
178
|
-
handleConfigWizardCancel,
|
|
118
|
+
handleConfigWizardCancel: exitMode,
|
|
179
119
|
handleMcpWizardComplete,
|
|
180
|
-
handleMcpWizardCancel,
|
|
181
|
-
handleSettingsCancel,
|
|
182
|
-
|
|
183
|
-
|
|
120
|
+
handleMcpWizardCancel: exitMode,
|
|
121
|
+
handleSettingsCancel: () => setIsSettingsMode(false),
|
|
122
|
+
handleExplorerCancel: exitMode,
|
|
123
|
+
handleIdeSelectionCancel: exitMode,
|
|
184
124
|
};
|
|
185
125
|
}
|
|
186
126
|
//# sourceMappingURL=useModeHandlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModeHandlers.js","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"useModeHandlers.js","sourceRoot":"","sources":["../../source/hooks/useModeHandlers.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,13 @@ export interface NonInteractiveModeResult {
|
|
|
13
13
|
nonInteractiveSubmitted: boolean;
|
|
14
14
|
nonInteractiveLoadingMessage: string | null;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Calculates the effective timeout based on provider configuration.
|
|
18
|
+
*
|
|
19
|
+
* @param client - The LLM client which may have provider-level timeouts
|
|
20
|
+
* @returns Final timeout in milliseconds
|
|
21
|
+
*/
|
|
22
|
+
export declare function calculateEffectiveTimeout(client: LLMClient | null): number;
|
|
16
23
|
/**
|
|
17
24
|
* Handles non-interactive mode logic:
|
|
18
25
|
* - Automatically submits prompt when ready
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNonInteractiveMode.d.ts","sourceRoot":"","sources":["../../source/hooks/useNonInteractiveMode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAGzD,OAAO,KAAK,EAAC,eAAe,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"useNonInteractiveMode.d.ts","sourceRoot":"","sources":["../../source/hooks/useNonInteractiveMode.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,aAAa,CAAC;AAGzD,OAAO,KAAK,EAAC,eAAe,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAIxD,UAAU,0BAA0B;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,wBAAwB;IACxC,uBAAuB,EAAE,OAAO,CAAC;IACjC,4BAA4B,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAQD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAsB1E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EACrC,oBAAoB,EACpB,cAAc,EACd,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,GACnB,EAAE,0BAA0B,GAAG,wBAAwB,CA+GvD"}
|
|
@@ -3,6 +3,36 @@ import { isNonInteractiveModeComplete } from '../app/helpers.js';
|
|
|
3
3
|
import { TIMEOUT_EXECUTION_MAX_MS, TIMEOUT_OUTPUT_FLUSH_MS } from '../constants.js';
|
|
4
4
|
import { setCurrentMode as setCurrentModeContext } from '../context/mode-context.js';
|
|
5
5
|
import { getLogger } from '../utils/logging/index.js';
|
|
6
|
+
import { getShutdownManager } from '../utils/shutdown/index.js';
|
|
7
|
+
// Buffer factor ensures we allow enough time for the provider response plus overhead
|
|
8
|
+
// Doubling is used because provider timeouts often refer to individual request segments
|
|
9
|
+
// or initial socket connection, while this execution timeout covers the entire
|
|
10
|
+
// multi-step process including output flushing and initial setup.
|
|
11
|
+
const TIMEOUT_BUFFER_FACTOR = 2;
|
|
12
|
+
/**
|
|
13
|
+
* Calculates the effective timeout based on provider configuration.
|
|
14
|
+
*
|
|
15
|
+
* @param client - The LLM client which may have provider-level timeouts
|
|
16
|
+
* @returns Final timeout in milliseconds
|
|
17
|
+
*/
|
|
18
|
+
export function calculateEffectiveTimeout(client) {
|
|
19
|
+
let effectiveTimeout = TIMEOUT_EXECUTION_MAX_MS;
|
|
20
|
+
if (client) {
|
|
21
|
+
const configuredTimeout = client.getTimeout();
|
|
22
|
+
if (configuredTimeout === -1) {
|
|
23
|
+
// -1 means no timeout
|
|
24
|
+
effectiveTimeout = Number.MAX_SAFE_INTEGER;
|
|
25
|
+
}
|
|
26
|
+
else if (configuredTimeout !== undefined) {
|
|
27
|
+
// If the provider timeout is longer than the default 5 mins,
|
|
28
|
+
// we should allow it to run for at least that long with a safety buffer.
|
|
29
|
+
// We use a buffer because the overall execution includes overhead beyond
|
|
30
|
+
// the raw provider request time.
|
|
31
|
+
effectiveTimeout = Math.max(TIMEOUT_EXECUTION_MAX_MS, configuredTimeout * TIMEOUT_BUFFER_FACTOR);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return effectiveTimeout;
|
|
35
|
+
}
|
|
6
36
|
/**
|
|
7
37
|
* Handles non-interactive mode logic:
|
|
8
38
|
* - Automatically submits prompt when ready
|
|
@@ -40,7 +70,9 @@ export function useNonInteractiveMode({ nonInteractivePrompt, mcpInitialized, cl
|
|
|
40
70
|
// Exit when processing is complete
|
|
41
71
|
React.useEffect(() => {
|
|
42
72
|
if (nonInteractivePrompt && nonInteractiveSubmitted) {
|
|
43
|
-
|
|
73
|
+
// Calculate timeout based on provider config if available
|
|
74
|
+
const effectiveTimeout = calculateEffectiveTimeout(client);
|
|
75
|
+
const { shouldExit, reason } = isNonInteractiveModeComplete(appState, startTime, effectiveTimeout);
|
|
44
76
|
if (shouldExit) {
|
|
45
77
|
const logger = getLogger();
|
|
46
78
|
if (reason === 'timeout') {
|
|
@@ -54,13 +86,20 @@ export function useNonInteractiveMode({ nonInteractivePrompt, mcpInitialized, cl
|
|
|
54
86
|
// Error message already printed by useChatHandler
|
|
55
87
|
}
|
|
56
88
|
// Wait a bit to ensure all output is flushed
|
|
89
|
+
const code = reason === 'error' || reason === 'tool-approval' ? 1 : 0;
|
|
57
90
|
const timer = setTimeout(() => {
|
|
58
|
-
|
|
91
|
+
void getShutdownManager().gracefulShutdown(code);
|
|
59
92
|
}, TIMEOUT_OUTPUT_FLUSH_MS);
|
|
60
93
|
return () => clearTimeout(timer);
|
|
61
94
|
}
|
|
62
95
|
}
|
|
63
|
-
}, [
|
|
96
|
+
}, [
|
|
97
|
+
nonInteractivePrompt,
|
|
98
|
+
nonInteractiveSubmitted,
|
|
99
|
+
appState,
|
|
100
|
+
startTime,
|
|
101
|
+
client,
|
|
102
|
+
]);
|
|
64
103
|
// Compute loading message
|
|
65
104
|
const nonInteractiveLoadingMessage = React.useMemo(() => {
|
|
66
105
|
if (!nonInteractivePrompt) {
|