@nanocollective/nanocoder 1.22.4 → 1.23.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/README.md +93 -30
- package/assets/nanocoder-vscode.vsix +0 -0
- package/dist/ai-sdk-client/chat/chat-handler.js +1 -1
- package/dist/ai-sdk-client/chat/chat-handler.js.map +1 -1
- package/dist/ai-sdk-client/chat/tool-processor.d.ts +1 -1
- package/dist/ai-sdk-client/chat/tool-processor.d.ts.map +1 -1
- package/dist/ai-sdk-client/chat/tool-processor.js +8 -3
- package/dist/ai-sdk-client/chat/tool-processor.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 +4 -1
- package/dist/ai-sdk-client/error-handling/error-parser.js.map +1 -1
- package/dist/app/App.d.ts.map +1 -1
- package/dist/app/App.js +106 -11
- package/dist/app/App.js.map +1 -1
- package/dist/app/components/chat-input.d.ts +6 -1
- package/dist/app/components/chat-input.d.ts.map +1 -1
- package/dist/app/components/chat-input.js +9 -7
- package/dist/app/components/chat-input.js.map +1 -1
- package/dist/app/utils/app-util.d.ts +5 -0
- package/dist/app/utils/app-util.d.ts.map +1 -1
- package/dist/app/utils/app-util.js +265 -0
- package/dist/app/utils/app-util.js.map +1 -1
- package/dist/client-factory.d.ts.map +1 -1
- package/dist/client-factory.js +3 -2
- package/dist/client-factory.js.map +1 -1
- package/dist/commands/context-max.d.ts +15 -0
- package/dist/commands/context-max.d.ts.map +1 -0
- package/dist/commands/context-max.js +22 -0
- package/dist/commands/context-max.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/ide.d.ts +3 -0
- package/dist/commands/ide.d.ts.map +1 -0
- package/dist/commands/ide.js +10 -0
- package/dist/commands/ide.js.map +1 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -0
- package/dist/commands/index.js.map +1 -1
- 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/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +4 -3
- package/dist/commands/usage.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/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/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/user-input.d.ts +2 -1
- package/dist/components/user-input.d.ts.map +1 -1
- package/dist/components/user-input.js +8 -15
- package/dist/components/user-input.js.map +1 -1
- package/dist/config/themes.d.ts.map +1 -1
- package/dist/config/themes.js +20 -0
- package/dist/config/themes.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +55 -0
- package/dist/constants.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 +115 -48
- package/dist/custom-commands/parser.js.map +1 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts +1 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts.map +1 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.js +37 -5
- package/dist/hooks/chat-handler/conversation/conversation-loop.js.map +1 -1
- package/dist/hooks/chat-handler/conversation/tool-executor.js +1 -1
- package/dist/hooks/chat-handler/conversation/tool-executor.js.map +1 -1
- package/dist/hooks/chat-handler/types.d.ts +3 -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 +13 -5
- package/dist/hooks/chat-handler/useChatHandler.js.map +1 -1
- package/dist/hooks/useAppHandlers.d.ts +2 -0
- package/dist/hooks/useAppHandlers.d.ts.map +1 -1
- package/dist/hooks/useAppHandlers.js +5 -0
- package/dist/hooks/useAppHandlers.js.map +1 -1
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +4 -1
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useAppState.d.ts +15 -0
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +23 -0
- 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 +4 -1
- package/dist/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/hooks/useModeHandlers.js +11 -1
- package/dist/hooks/useModeHandlers.js.map +1 -1
- package/dist/hooks/useNonInteractiveMode.d.ts.map +1 -1
- package/dist/hooks/useNonInteractiveMode.js +3 -1
- 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/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 +20 -1
- package/dist/mcp/mcp-client.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 +116 -88
- 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/tool-calling/json-parser.d.ts +7 -3
- package/dist/tool-calling/json-parser.d.ts.map +1 -1
- package/dist/tool-calling/json-parser.js +59 -23
- package/dist/tool-calling/json-parser.js.map +1 -1
- package/dist/tool-calling/tool-parser.d.ts +2 -2
- package/dist/tool-calling/tool-parser.d.ts.map +1 -1
- package/dist/tool-calling/tool-parser.js +27 -23
- 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.js +1 -1
- package/dist/tools/execute-bash.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 +126 -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 +76 -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 +88 -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 +126 -0
- package/dist/tools/file-ops/move-file.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/{string-replace.js → file-ops/string-replace.js} +17 -17
- 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} +31 -17
- package/dist/tools/file-ops/write-file.js.map +1 -0
- package/dist/tools/git/git-reset.js +1 -1
- package/dist/tools/git/git-reset.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.map +1 -1
- package/dist/tools/index.js +8 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/search-file-contents.d.ts.map +1 -1
- package/dist/tools/search-file-contents.js +59 -10
- package/dist/tools/search-file-contents.js.map +1 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +9 -0
- package/dist/tools/tool-manager.js.map +1 -1
- package/dist/types/app.d.ts +2 -0
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/commands.d.ts +20 -0
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/types/core.d.ts +2 -1
- 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/ui.d.ts +1 -1
- package/dist/types/ui.d.ts.map +1 -1
- 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/file-content-loader.d.ts.map +1 -1
- package/dist/utils/file-content-loader.js +58 -1
- package/dist/utils/file-content-loader.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/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 +387 -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/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/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/steps/mcp-step.js +1 -1
- package/dist/wizards/steps/mcp-step.js.map +1 -1
- package/dist/wizards/steps/provider-step.js +1 -1
- package/dist/wizards/steps/provider-step.js.map +1 -1
- 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 +35 -2
- 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 -3
- package/dist/wizards/validation.js.map +1 -1
- package/package.json +9 -18
- package/source/app/prompts/main-prompt.md +21 -3
- 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/tools/string-replace.d.ts +0 -3
- package/dist/tools/string-replace.d.ts.map +0 -1
- 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
package/README.md
CHANGED
|
@@ -414,6 +414,7 @@ Nanocoder looks for configuration in the following order (first found wins):
|
|
|
414
414
|
Keep API keys out of version control using environment variables. Variables are loaded from shell environment (`.bashrc`, `.zshrc`) or `.env` file in your working directory.
|
|
415
415
|
|
|
416
416
|
- `NANOCODER_CONFIG_DIR`: Override the global configuration directory.
|
|
417
|
+
- `NANOCODER_CONTEXT_LIMIT`: Set a default context limit (in tokens) for models not found on models.dev. This is used as a fallback when the model's context window is unknown, enabling auto-compact and `/usage` to work correctly.
|
|
417
418
|
- `NANOCODER_DATA_DIR`: Override the application data directory used for internal data like usage statistics.
|
|
418
419
|
|
|
419
420
|
**Syntax:** `$VAR_NAME`, `${VAR_NAME}`, or `${VAR_NAME:-default}`
|
|
@@ -594,18 +595,22 @@ You can override this directory using `NANOCODER_DATA_DIR`.
|
|
|
594
595
|
- `/model` - Switch between available models
|
|
595
596
|
- `/provider` - Switch between configured AI providers
|
|
596
597
|
- `/status` - Display current status (CWD, provider, model, theme, available updates, AGENTS setup)
|
|
598
|
+
- `/tasks` - Manage task list for tracking complex work (see [Task Management](#task-management) section)
|
|
597
599
|
- `/model-database` - Browse coding models from OpenRouter (searchable, filterable by open/proprietary)
|
|
598
600
|
- `/settings` - Interactive menu to access Nanocoder theme settings (theme, title-shape, nanocoder-shape) and commands
|
|
599
601
|
- `/mcp` - Show connected MCP servers and their tools
|
|
600
602
|
- `/custom-commands` - List all custom commands
|
|
601
603
|
- `/checkpoint` - Save and restore conversation snapshots (see [Checkpointing](#checkpointing) section)
|
|
602
604
|
- `/compact` - Compress message history to reduce context usage (see [Context Compression](docs/context-compression.md))
|
|
605
|
+
- `/context-max` - Set maximum context length for the current session (useful for models not listed on models.dev)
|
|
603
606
|
- `/exit` - Exit the application
|
|
604
607
|
- `/export` - Export current session to markdown file
|
|
605
608
|
- `/update` - Update Nanocoder to the latest version
|
|
606
609
|
- `/usage` – Get current model context usage visually
|
|
607
610
|
- `/lsp` – List connected LSP servers
|
|
611
|
+
- `/schedule` – Schedule recurring AI tasks (see [Scheduled Tasks](#scheduled-tasks) section)
|
|
608
612
|
- `/explorer` - Interactive file browser to navigate, preview, and select files for context
|
|
613
|
+
- `/ide` - Connect to an IDE for live integration (e.g., VS Code diff previews)
|
|
609
614
|
- `!command` - Execute bash commands directly without leaving Nanocoder (output becomes context for the LLM)
|
|
610
615
|
- `@file` - Include file contents in messages automatically via fuzzy search as you type
|
|
611
616
|
|
|
@@ -669,6 +674,73 @@ Nanocoder supports conversation checkpointing, allowing you to save snapshots of
|
|
|
669
674
|
/checkpoint list
|
|
670
675
|
```
|
|
671
676
|
|
|
677
|
+
#### Task Management
|
|
678
|
+
|
|
679
|
+
Nanocoder provides a task management system for tracking complex multi-step work. Tasks persist in `.nanocoder/tasks.json` and are useful for both users and AI models to track progress on involved tasks.
|
|
680
|
+
|
|
681
|
+
The LLM has access to task management tools (`create_task`, `list_tasks`, `update_task`, `delete_task`) and will automatically use them to track progress on complex work. You don't need to manually create tasks if you don't want to - the AI will manage them for you.
|
|
682
|
+
|
|
683
|
+
**Task Commands:**
|
|
684
|
+
|
|
685
|
+
- `/tasks` - Show all tasks with their status
|
|
686
|
+
- `/tasks add <title>` - Add a new task (also works: `/tasks <title>`)
|
|
687
|
+
- `/tasks remove <number>` - Remove a task by number (alias: `/tasks rm <number>`)
|
|
688
|
+
- `/tasks clear` - Clear all tasks
|
|
689
|
+
|
|
690
|
+
**Examples:**
|
|
691
|
+
|
|
692
|
+
```bash
|
|
693
|
+
# View current tasks
|
|
694
|
+
/tasks
|
|
695
|
+
|
|
696
|
+
# Add a new task
|
|
697
|
+
/tasks add Implement user authentication
|
|
698
|
+
|
|
699
|
+
# Or simply type the task title
|
|
700
|
+
/tasks Implement user authentication
|
|
701
|
+
|
|
702
|
+
# Remove a task (note the number)
|
|
703
|
+
/tasks remove 1
|
|
704
|
+
|
|
705
|
+
# Clear all tasks
|
|
706
|
+
/tasks clear
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
**Storage:**
|
|
710
|
+
|
|
711
|
+
- Tasks are stored in `.nanocoder/tasks.json` in your project directory
|
|
712
|
+
- Tasks are automatically cleared when Nanocoder starts (to keep the task list fresh)
|
|
713
|
+
- Tasks are also cleared when using the `/clear` command
|
|
714
|
+
- Consider adding `.nanocoder/tasks.json` to your `.gitignore` if you want to exclude it from version control
|
|
715
|
+
|
|
716
|
+
#### Scheduled Tasks
|
|
717
|
+
|
|
718
|
+
Nanocoder supports scheduling recurring AI tasks using cron expressions. This is useful for automating routine coding tasks like dependency updates, code reviews, or daily standup summaries.
|
|
719
|
+
|
|
720
|
+
**Quick Start:**
|
|
721
|
+
|
|
722
|
+
```bash
|
|
723
|
+
# Create a new scheduled task file
|
|
724
|
+
/schedule create deps-update
|
|
725
|
+
|
|
726
|
+
# Add a schedule for it (every Monday at 9am)
|
|
727
|
+
/schedule add "0 9 * * MON" deps-update
|
|
728
|
+
|
|
729
|
+
# Start the scheduler
|
|
730
|
+
/schedule start
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
**Commands:**
|
|
734
|
+
|
|
735
|
+
- `/schedule create <name>` - Create a new scheduled task file
|
|
736
|
+
- `/schedule add "<cron>" <name>` - Add a schedule for a task (`.md` extension inferred)
|
|
737
|
+
- `/schedule list` - Show all configured schedules
|
|
738
|
+
- `/schedule remove <id>` - Remove a schedule by ID
|
|
739
|
+
- `/schedule logs [id]` - Show execution logs
|
|
740
|
+
- `/schedule start` - Enter scheduler mode to run scheduled tasks
|
|
741
|
+
|
|
742
|
+
> **Full documentation**: See the [Scheduled Tasks Guide](docs/scheduler.md) for detailed usage, examples, and tips.
|
|
743
|
+
|
|
672
744
|
#### File Explorer
|
|
673
745
|
|
|
674
746
|
The `/explorer` command opens an interactive file browser for navigating your project, previewing files with syntax highlighting, and selecting multiple files to add as context.
|
|
@@ -715,44 +787,34 @@ The `/explorer` command opens an interactive file browser for navigating your pr
|
|
|
715
787
|
|
|
716
788
|
#### Custom Commands
|
|
717
789
|
|
|
718
|
-
Nanocoder supports custom commands defined as markdown files in
|
|
790
|
+
Nanocoder supports custom commands defined as markdown files in `.nanocoder/commands/`. Define reusable AI prompts with parameters, aliases, and auto-injection support, organized per project.
|
|
791
|
+
|
|
792
|
+
```bash
|
|
793
|
+
# Create a command with AI assistance
|
|
794
|
+
/commands create review-code
|
|
795
|
+
|
|
796
|
+
# Or create the file manually in .nanocoder/commands/review-code.md
|
|
797
|
+
```
|
|
719
798
|
|
|
720
|
-
**Example
|
|
799
|
+
**Example** (`.nanocoder/commands/test.md`):
|
|
721
800
|
|
|
722
801
|
```markdown
|
|
723
802
|
---
|
|
724
|
-
description:
|
|
725
|
-
aliases: [
|
|
726
|
-
parameters:
|
|
727
|
-
- name: 'component'
|
|
728
|
-
description: 'The component or function to test'
|
|
729
|
-
required: true
|
|
803
|
+
description: Generate comprehensive unit tests
|
|
804
|
+
aliases: [unittest, test-gen]
|
|
805
|
+
parameters: [filename]
|
|
730
806
|
---
|
|
731
807
|
|
|
732
|
-
Generate comprehensive unit tests for {{
|
|
733
|
-
|
|
734
|
-
- Happy path scenarios
|
|
735
|
-
- Edge cases and error handling
|
|
736
|
-
- Mock dependencies where appropriate
|
|
737
|
-
- Clear test descriptions
|
|
808
|
+
Generate comprehensive unit tests for {{filename}}.
|
|
738
809
|
```
|
|
739
810
|
|
|
740
|
-
**Usage**: `/test
|
|
741
|
-
|
|
742
|
-
**Features**:
|
|
811
|
+
**Usage**: `/test src/utils.ts`
|
|
743
812
|
|
|
744
|
-
|
|
745
|
-
- Template variable substitution with `{{parameter}}` syntax
|
|
746
|
-
- Namespace support through directories (e.g., `/refactor:dry`)
|
|
747
|
-
- Autocomplete integration for command discovery
|
|
748
|
-
- Parameter validation and prompting
|
|
813
|
+
**Commands**: `/commands` (list), `/commands show <name>`, `/commands refresh`, `/commands create <name>`
|
|
749
814
|
|
|
750
|
-
**Pre-installed
|
|
815
|
+
**Pre-installed**: `/test`, `/review`, `/refactor:dry`, `/refactor:solid`
|
|
751
816
|
|
|
752
|
-
|
|
753
|
-
- `/review` - Perform thorough code reviews with suggestions
|
|
754
|
-
- `/refactor:dry` - Apply DRY (Don't Repeat Yourself) principle
|
|
755
|
-
- `/refactor:solid` - Apply SOLID design principles
|
|
817
|
+
> **Full documentation**: See the [Custom Commands Guide](docs/custom-commands.md) for frontmatter reference, auto-injection, resources, namespaces, and more.
|
|
756
818
|
|
|
757
819
|
## Features
|
|
758
820
|
|
|
@@ -775,10 +837,11 @@ Generate comprehensive unit tests for {{component}}. Include:
|
|
|
775
837
|
### Custom Command System
|
|
776
838
|
|
|
777
839
|
- **Markdown-based commands**: Define reusable prompts in `.nanocoder/commands/`
|
|
840
|
+
- **AI-assisted creation**: `/commands create <name>` scaffolds a command and helps you write it
|
|
778
841
|
- **Template variables**: Use `{{parameter}}` syntax for dynamic content
|
|
779
|
-
- **
|
|
780
|
-
- **
|
|
781
|
-
- **Rich metadata**: YAML frontmatter for descriptions, aliases, and
|
|
842
|
+
- **Auto-injection**: Commands with tags/triggers are automatically injected into context when relevant
|
|
843
|
+
- **Namespace organization**: Organize commands in folders (e.g., `refactor/dry.md` becomes `/refactor:dry`)
|
|
844
|
+
- **Rich metadata**: YAML frontmatter for descriptions, aliases, parameters, and [more](docs/custom-commands.md)
|
|
782
845
|
|
|
783
846
|
### Enhanced User Experience
|
|
784
847
|
|
|
Binary file
|
|
@@ -158,7 +158,7 @@ export async function handleChat(params) {
|
|
|
158
158
|
}
|
|
159
159
|
// Check for XML tool calls if no native ones
|
|
160
160
|
let content = fullText;
|
|
161
|
-
const xmlResult = processXMLToolCalls(content, tools, callbacks);
|
|
161
|
+
const xmlResult = await processXMLToolCalls(content, tools, callbacks);
|
|
162
162
|
if (xmlResult.toolCalls.length > 0) {
|
|
163
163
|
toolCalls.push(...xmlResult.toolCalls);
|
|
164
164
|
content = xmlResult.cleanedContent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-handler.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat-handler.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/chat-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@ export interface XMLToolProcessingResult {
|
|
|
6
6
|
/**
|
|
7
7
|
* Processes XML tool calls from response content
|
|
8
8
|
*/
|
|
9
|
-
export declare function processXMLToolCalls(
|
|
9
|
+
export declare function processXMLToolCalls(response: unknown, tools: Record<string, AISDKCoreTool>, callbacks: StreamCallbacks): Promise<XMLToolProcessingResult>;
|
|
10
10
|
//# sourceMappingURL=tool-processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-processor.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/tool-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-processor.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/tool-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAC;AAI5E,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACxC,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACpC,SAAS,EAAE,eAAe,GACxB,OAAO,CAAC,uBAAuB,CAAC,CA2DlC"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { XMLToolCallParser } from '../../tool-calling/xml-parser.js';
|
|
2
2
|
import { getLogger } from '../../utils/logging/index.js';
|
|
3
|
+
import { normalizeLLMResponse } from '../../utils/response-formatter.js';
|
|
3
4
|
/**
|
|
4
5
|
* Processes XML tool calls from response content
|
|
5
6
|
*/
|
|
6
|
-
export function processXMLToolCalls(
|
|
7
|
+
export async function processXMLToolCalls(response, tools, callbacks) {
|
|
7
8
|
const logger = getLogger();
|
|
8
9
|
const toolCalls = [];
|
|
9
|
-
|
|
10
|
+
// NEW: Normalize response before processing
|
|
11
|
+
const normalized = await normalizeLLMResponse(response);
|
|
12
|
+
const content = normalized.content;
|
|
10
13
|
// Only process if tools are available and no native tool calls were found
|
|
11
14
|
if (Object.keys(tools).length === 0 || !content) {
|
|
12
|
-
return { toolCalls, cleanedContent };
|
|
15
|
+
return { toolCalls, cleanedContent: content };
|
|
13
16
|
}
|
|
14
17
|
logger.debug('Checking for XML tool calls in response content');
|
|
18
|
+
// Initialize cleanedContent with original content (preserved if no tool calls found)
|
|
19
|
+
let cleanedContent = content;
|
|
15
20
|
// First check for malformed XML tool calls
|
|
16
21
|
const malformedError = XMLToolCallParser.detectMalformedToolCall(content);
|
|
17
22
|
if (malformedError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-processor.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/tool-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-processor.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/chat/tool-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAC,MAAM,4BAA4B,CAAC;AAOhE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,QAAiB,EACjB,KAAoC,EACpC,SAA0B;IAE1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,4CAA4C;IAC5C,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAEnC,0EAA0E;IAC1E,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO,EAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAEhE,qFAAqF;IACrF,IAAI,cAAc,GAAG,OAAO,CAAC;IAE7B,2CAA2C;IAC3C,MAAM,cAAc,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC1E,IAAI,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;YAC/C,KAAK,EAAE,cAAc,CAAC,KAAK;SAC3B,CAAC,CAAC;QAEH,mDAAmD;QACnD,2EAA2E;QAC3E,MAAM,aAAa,GAAa;YAC/B,EAAE,EAAE,0BAA0B;YAC9B,QAAQ,EAAE;gBACT,IAAI,EAAE,0BAA0B;gBAChC,SAAS,EAAE;oBACV,KAAK,EAAE,cAAc,CAAC,KAAK;iBAC3B;aACD;SACD,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9B,SAAS,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,CAAC;QACtC,cAAc,GAAG,EAAE,CAAC,CAAC,uCAAuC;IAC7D,CAAC;SAAM,IAAI,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAEpD,0CAA0C;QAC1C,MAAM,eAAe,GAAG,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,YAAY,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAC3E,cAAc,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAEvE,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;YACrC,aAAa,EAAE,YAAY,CAAC,MAAM;YAClC,aAAa,EAAE,cAAc,CAAC,MAAM;SACpC,CAAC,CAAC;QAEH,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,cAAc,EAAC,CAAC;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-parser.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/error-handling/error-parser.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"error-parser.d.ts","sourceRoot":"","sources":["../../../source/ai-sdk-client/error-handling/error-parser.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA4JpD"}
|
|
@@ -113,7 +113,10 @@ export function parseAPIError(error) {
|
|
|
113
113
|
}
|
|
114
114
|
// Handle network errors
|
|
115
115
|
if (errorMessage.includes('ECONNREFUSED') ||
|
|
116
|
-
errorMessage.includes('
|
|
116
|
+
errorMessage.includes('ECONNRESET') ||
|
|
117
|
+
errorMessage.includes('ENOTFOUND') ||
|
|
118
|
+
errorMessage.includes('connect ETIMEDOUT') ||
|
|
119
|
+
errorMessage.includes('Failed to fetch')) {
|
|
117
120
|
return 'Connection failed: Unable to reach the model server';
|
|
118
121
|
}
|
|
119
122
|
// Handle context length errors
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-parser.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/error-handling/error-parser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"error-parser.js","sourceRoot":"","sources":["../../../source/ai-sdk-client/error-handling/error-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/app/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../source/app/App.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../source/app/App.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAwC1C,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAC3B,UAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,kBAA0B,GAC1B,EAAE,QAAQ,2CAuvBV"}
|
package/dist/app/App.js
CHANGED
|
@@ -8,8 +8,11 @@ import { ChatInput } from '../app/components/chat-input.js';
|
|
|
8
8
|
import { ModalSelectors } from '../app/components/modal-selectors.js';
|
|
9
9
|
import { shouldRenderWelcome } from '../app/helpers.js';
|
|
10
10
|
import { FileExplorer } from '../components/file-explorer.js';
|
|
11
|
+
import { IdeSelector } from '../components/ide-selector.js';
|
|
12
|
+
import { SuccessMessage } from '../components/message-box.js';
|
|
13
|
+
import { SchedulerView } from '../components/scheduler-view.js';
|
|
11
14
|
import SecurityDisclaimer from '../components/security-disclaimer.js';
|
|
12
|
-
import {
|
|
15
|
+
import { VSCodeExtensionPrompt } from '../components/vscode-extension-prompt.js';
|
|
13
16
|
import WelcomeMessage from '../components/welcome-message.js';
|
|
14
17
|
import { updateSelectedTheme } from '../config/preferences.js';
|
|
15
18
|
import { getThemeColors } from '../config/themes.js';
|
|
@@ -18,9 +21,11 @@ import { useChatHandler } from '../hooks/chat-handler/index.js';
|
|
|
18
21
|
import { useAppHandlers } from '../hooks/useAppHandlers.js';
|
|
19
22
|
import { useAppInitialization } from '../hooks/useAppInitialization.js';
|
|
20
23
|
import { useAppState } from '../hooks/useAppState.js';
|
|
24
|
+
import { useContextPercentage } from '../hooks/useContextPercentage.js';
|
|
21
25
|
import { useDirectoryTrust } from '../hooks/useDirectoryTrust.js';
|
|
22
26
|
import { useModeHandlers } from '../hooks/useModeHandlers.js';
|
|
23
27
|
import { useNonInteractiveMode } from '../hooks/useNonInteractiveMode.js';
|
|
28
|
+
import { useSchedulerMode } from '../hooks/useSchedulerMode.js';
|
|
24
29
|
import { ThemeContext } from '../hooks/useTheme.js';
|
|
25
30
|
import { TitleShapeContext, updateTitleShape } from '../hooks/useTitleShape.js';
|
|
26
31
|
import { useToolHandler } from '../hooks/useToolHandler.js';
|
|
@@ -29,6 +34,9 @@ import { useVSCodeServer } from '../hooks/useVSCodeServer.js';
|
|
|
29
34
|
import { generateCorrelationId, withNewCorrelationContext, } from '../utils/logging/index.js';
|
|
30
35
|
import { createPinoLogger } from '../utils/logging/pino-logger.js';
|
|
31
36
|
import { setGlobalMessageQueue } from '../utils/message-queue.js';
|
|
37
|
+
import { setGlobalQuestionHandler, } from '../utils/question-queue.js';
|
|
38
|
+
import { getShutdownManager } from '../utils/shutdown/index.js';
|
|
39
|
+
import { isExtensionInstalled } from '../vscode/extension-installer.js';
|
|
32
40
|
export default function App({ vscodeMode = false, vscodePort, nonInteractivePrompt, nonInteractiveMode = false, }) {
|
|
33
41
|
// Memoize the logger to prevent recreation on every render
|
|
34
42
|
const logger = useMemo(() => createPinoLogger(), []);
|
|
@@ -62,13 +70,11 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
62
70
|
});
|
|
63
71
|
}, [appState.developmentMode, logger]);
|
|
64
72
|
// VS Code extension installation prompt state
|
|
65
|
-
const [showExtensionPrompt, setShowExtensionPrompt] = React.useState(() => vscodeMode &&
|
|
73
|
+
const [showExtensionPrompt, setShowExtensionPrompt] = React.useState(() => vscodeMode && !isExtensionInstalled());
|
|
66
74
|
const [extensionPromptComplete, setExtensionPromptComplete] = React.useState(false);
|
|
67
75
|
const handleExit = () => {
|
|
68
76
|
exit();
|
|
69
|
-
|
|
70
|
-
// TODO: Replace with ShutdownManager.gracefulShutdown() once #239 is implemented
|
|
71
|
-
process.exit(0);
|
|
77
|
+
void getShutdownManager().gracefulShutdown(0);
|
|
72
78
|
};
|
|
73
79
|
// VS Code server integration
|
|
74
80
|
// Reference to handleMessageSubmit that will be set after appHandlers is created
|
|
@@ -108,8 +114,9 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
108
114
|
});
|
|
109
115
|
}
|
|
110
116
|
}, [logger]);
|
|
117
|
+
const effectiveVscodeEnabled = vscodeMode || appState.isVscodeEnabled;
|
|
111
118
|
const vscodeServer = useVSCodeServer({
|
|
112
|
-
enabled:
|
|
119
|
+
enabled: effectiveVscodeEnabled,
|
|
113
120
|
port: vscodePort,
|
|
114
121
|
currentModel: appState.currentModel,
|
|
115
122
|
currentProvider: appState.currentProvider,
|
|
@@ -139,6 +146,27 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
139
146
|
chatQueueFunction: 'addToChatQueue',
|
|
140
147
|
});
|
|
141
148
|
}, [appState.addToChatQueue, logger]);
|
|
149
|
+
// Question handler - ref holds the resolver for the pending question promise
|
|
150
|
+
const questionResolverRef = React.useRef(null);
|
|
151
|
+
// Initialize global question handler
|
|
152
|
+
React.useEffect(() => {
|
|
153
|
+
setGlobalQuestionHandler((question) => {
|
|
154
|
+
return new Promise(resolve => {
|
|
155
|
+
questionResolverRef.current = resolve;
|
|
156
|
+
appState.setPendingQuestion(question);
|
|
157
|
+
appState.setIsQuestionMode(true);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
}, [appState.setPendingQuestion, appState.setIsQuestionMode, appState]);
|
|
161
|
+
// Handle user answering a question
|
|
162
|
+
const handleQuestionAnswer = React.useCallback((answer) => {
|
|
163
|
+
if (questionResolverRef.current) {
|
|
164
|
+
questionResolverRef.current(answer);
|
|
165
|
+
questionResolverRef.current = null;
|
|
166
|
+
}
|
|
167
|
+
appState.setIsQuestionMode(false);
|
|
168
|
+
appState.setPendingQuestion(null);
|
|
169
|
+
}, [appState.setIsQuestionMode, appState.setPendingQuestion, appState]);
|
|
142
170
|
// Log important application state changes
|
|
143
171
|
React.useEffect(() => {
|
|
144
172
|
if (appState.client) {
|
|
@@ -176,6 +204,7 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
176
204
|
const chatHandler = useChatHandler({
|
|
177
205
|
client: appState.client,
|
|
178
206
|
toolManager: appState.toolManager,
|
|
207
|
+
customCommandLoader: appState.customCommandLoader,
|
|
179
208
|
messages: appState.messages,
|
|
180
209
|
setMessages: appState.updateMessages,
|
|
181
210
|
currentProvider: appState.currentProvider,
|
|
@@ -202,6 +231,18 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
202
231
|
appState.setIsConversationComplete(true);
|
|
203
232
|
},
|
|
204
233
|
});
|
|
234
|
+
// Track context window usage percentage
|
|
235
|
+
useContextPercentage({
|
|
236
|
+
currentModel: appState.currentModel,
|
|
237
|
+
messages: appState.messages,
|
|
238
|
+
tokenizer: appState.tokenizer,
|
|
239
|
+
getMessageTokens: appState.getMessageTokens,
|
|
240
|
+
toolManager: appState.toolManager,
|
|
241
|
+
streamingTokenCount: chatHandler.tokenCount,
|
|
242
|
+
contextLimit: appState.contextLimit,
|
|
243
|
+
setContextPercentUsed: appState.setContextPercentUsed,
|
|
244
|
+
setContextLimit: appState.setContextLimit,
|
|
245
|
+
});
|
|
205
246
|
// Setup tool handler
|
|
206
247
|
const toolHandler = useToolHandler({
|
|
207
248
|
pendingToolCalls: appState.pendingToolCalls,
|
|
@@ -298,10 +339,47 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
298
339
|
setIsSettingsMode: appState.setIsSettingsMode,
|
|
299
340
|
setIsMcpWizardMode: appState.setIsMcpWizardMode,
|
|
300
341
|
setIsExplorerMode: appState.setIsExplorerMode,
|
|
342
|
+
setIsIdeSelectionMode: appState.setIsIdeSelectionMode,
|
|
301
343
|
addToChatQueue: appState.addToChatQueue,
|
|
302
344
|
getNextComponentKey: appState.getNextComponentKey,
|
|
303
345
|
reinitializeMCPServers: appInitialization.reinitializeMCPServers,
|
|
304
346
|
});
|
|
347
|
+
// Scheduler mode enter handler
|
|
348
|
+
const enterSchedulerMode = React.useCallback(() => {
|
|
349
|
+
appState.setIsSchedulerMode(true);
|
|
350
|
+
}, [appState.setIsSchedulerMode, appState]);
|
|
351
|
+
// Scheduler mode exit handler
|
|
352
|
+
const exitSchedulerMode = React.useCallback(() => {
|
|
353
|
+
appState.setIsSchedulerMode(false);
|
|
354
|
+
}, [appState.setIsSchedulerMode, appState]);
|
|
355
|
+
// IDE selection handler
|
|
356
|
+
const handleIdeSelect = React.useCallback((ide) => {
|
|
357
|
+
appState.setIsIdeSelectionMode(false);
|
|
358
|
+
if (ide === 'vscode') {
|
|
359
|
+
appState.setIsVscodeEnabled(true);
|
|
360
|
+
// Check if extension needs installing
|
|
361
|
+
if (!isExtensionInstalled()) {
|
|
362
|
+
setShowExtensionPrompt(true);
|
|
363
|
+
setExtensionPromptComplete(false);
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
appState.addToChatQueue(_jsx(SuccessMessage, { message: "VS Code integration enabled. Starting server...", hideBox: true }, `ide-vscode-enabled-${appState.getNextComponentKey()}`));
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}, [appState]);
|
|
370
|
+
// Show confirmation once VS Code server is ready with its port
|
|
371
|
+
const prevVscodePortRef = React.useRef(vscodeServer.actualPort);
|
|
372
|
+
React.useEffect(() => {
|
|
373
|
+
const prevPort = prevVscodePortRef.current;
|
|
374
|
+
prevVscodePortRef.current = vscodeServer.actualPort;
|
|
375
|
+
// Only show message when port transitions from null to a value
|
|
376
|
+
// and it was triggered by /ide (not the --vscode CLI flag)
|
|
377
|
+
if (prevPort === null &&
|
|
378
|
+
vscodeServer.actualPort !== null &&
|
|
379
|
+
appState.isVscodeEnabled) {
|
|
380
|
+
appState.addToChatQueue(_jsx(SuccessMessage, { message: `VS Code server listening on port ${vscodeServer.actualPort}`, hideBox: true }, `ide-vscode-ready-${appState.getNextComponentKey()}`));
|
|
381
|
+
}
|
|
382
|
+
}, [vscodeServer.actualPort, appState]);
|
|
305
383
|
// Setup app handlers
|
|
306
384
|
const appHandlers = useAppHandlers({
|
|
307
385
|
messages: appState.messages,
|
|
@@ -336,6 +414,8 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
336
414
|
enterSettingsMode: modeHandlers.enterSettingsMode,
|
|
337
415
|
enterMcpWizardMode: modeHandlers.enterMcpWizardMode,
|
|
338
416
|
enterExplorerMode: modeHandlers.enterExplorerMode,
|
|
417
|
+
enterIdeSelectionMode: modeHandlers.enterIdeSelectionMode,
|
|
418
|
+
enterSchedulerMode,
|
|
339
419
|
handleChatMessage: chatHandler.handleChatMessage,
|
|
340
420
|
});
|
|
341
421
|
// Update the ref so VS Code prompts can be submitted
|
|
@@ -357,6 +437,19 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
357
437
|
setDevelopmentMode: appState.setDevelopmentMode,
|
|
358
438
|
handleMessageSubmit: appHandlers.handleMessageSubmit,
|
|
359
439
|
});
|
|
440
|
+
// Setup scheduler mode
|
|
441
|
+
const schedulerMode = useSchedulerMode({
|
|
442
|
+
isSchedulerMode: appState.isSchedulerMode,
|
|
443
|
+
mcpInitialized: appState.mcpInitialized,
|
|
444
|
+
setDevelopmentMode: appState.setDevelopmentMode,
|
|
445
|
+
handleMessageSubmit: appHandlers.handleMessageSubmit,
|
|
446
|
+
clearMessages: appHandlers.clearMessages,
|
|
447
|
+
isConversationComplete: appState.isConversationComplete,
|
|
448
|
+
isToolExecuting: appState.isToolExecuting,
|
|
449
|
+
isToolConfirmationMode: appState.isToolConfirmationMode,
|
|
450
|
+
messages: appState.messages,
|
|
451
|
+
addToChatQueue: appState.addToChatQueue,
|
|
452
|
+
});
|
|
360
453
|
const shouldShowWelcome = shouldRenderWelcome(nonInteractiveMode);
|
|
361
454
|
// Memoize static components
|
|
362
455
|
const staticComponents = React.useMemo(() => createStaticComponents({
|
|
@@ -369,7 +462,7 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
369
462
|
lspServersStatus: appState.lspServersStatus,
|
|
370
463
|
preferencesLoaded: appState.preferencesLoaded,
|
|
371
464
|
customCommandsCount: appState.customCommandsCount,
|
|
372
|
-
vscodeMode,
|
|
465
|
+
vscodeMode: effectiveVscodeEnabled,
|
|
373
466
|
vscodePort: vscodeServer.actualPort,
|
|
374
467
|
vscodeRequestedPort: vscodeServer.requestedPort,
|
|
375
468
|
}), [
|
|
@@ -382,7 +475,7 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
382
475
|
appState.lspServersStatus,
|
|
383
476
|
appState.preferencesLoaded,
|
|
384
477
|
appState.customCommandsCount,
|
|
385
|
-
|
|
478
|
+
effectiveVscodeEnabled,
|
|
386
479
|
vscodeServer.actualPort,
|
|
387
480
|
vscodeServer.requestedPort,
|
|
388
481
|
]);
|
|
@@ -423,13 +516,14 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
423
516
|
} })] }) }) }));
|
|
424
517
|
}
|
|
425
518
|
// Main application render
|
|
426
|
-
return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: _jsx(TitleShapeContext.Provider, { value: titleShapeContextValue, children: _jsx(UIStateProvider, { children: _jsxs(Box, { flexDirection: "column", padding: 1, width: "100%", children: [_jsx(ChatHistory, { startChat: appState.startChat, staticComponents: staticComponents, queuedComponents: appState.chatComponents, liveComponent: appState.liveComponent }), appState.isExplorerMode && (_jsx(Box, { marginLeft: -1, flexDirection: "column", children: _jsx(FileExplorer, { onClose: modeHandlers.handleExplorerCancel }) })), (appState.isModelSelectionMode ||
|
|
519
|
+
return (_jsx(ThemeContext.Provider, { value: themeContextValue, children: _jsx(TitleShapeContext.Provider, { value: titleShapeContextValue, children: _jsx(UIStateProvider, { children: _jsxs(Box, { flexDirection: "column", padding: 1, width: "100%", children: [_jsx(ChatHistory, { startChat: appState.startChat, staticComponents: staticComponents, queuedComponents: appState.chatComponents, liveComponent: appState.liveComponent }), appState.isExplorerMode && (_jsx(Box, { marginLeft: -1, flexDirection: "column", children: _jsx(FileExplorer, { onClose: modeHandlers.handleExplorerCancel }) })), appState.isIdeSelectionMode && (_jsx(Box, { marginLeft: -1, flexDirection: "column", children: _jsx(IdeSelector, { onSelect: handleIdeSelect, onCancel: modeHandlers.handleIdeSelectionCancel }) })), (appState.isModelSelectionMode ||
|
|
427
520
|
appState.isProviderSelectionMode ||
|
|
428
521
|
appState.isModelDatabaseMode ||
|
|
429
522
|
appState.isConfigWizardMode ||
|
|
430
523
|
appState.isMcpWizardMode ||
|
|
431
524
|
appState.isSettingsMode ||
|
|
432
|
-
appState.isCheckpointLoadMode) && (_jsx(Box, { marginLeft: -1, flexDirection: "column", children: _jsx(ModalSelectors, { isModelSelectionMode: appState.isModelSelectionMode, isProviderSelectionMode: appState.isProviderSelectionMode, isModelDatabaseMode: appState.isModelDatabaseMode, isConfigWizardMode: appState.isConfigWizardMode, isMcpWizardMode: appState.isMcpWizardMode, isSettingsMode: appState.isSettingsMode, isCheckpointLoadMode: appState.isCheckpointLoadMode, client: appState.client, currentModel: appState.currentModel, currentProvider: appState.currentProvider, checkpointLoadData: appState.checkpointLoadData, onModelSelect: modeHandlers.handleModelSelect, onModelSelectionCancel: modeHandlers.handleModelSelectionCancel, onProviderSelect: modeHandlers.handleProviderSelect, onProviderSelectionCancel: modeHandlers.handleProviderSelectionCancel, onModelDatabaseCancel: modeHandlers.handleModelDatabaseCancel, onConfigWizardComplete: modeHandlers.handleConfigWizardComplete, onConfigWizardCancel: modeHandlers.handleConfigWizardCancel, onMcpWizardComplete: modeHandlers.handleMcpWizardComplete, onMcpWizardCancel: modeHandlers.handleMcpWizardCancel, onSettingsCancel: modeHandlers.handleSettingsCancel, onCheckpointSelect: appHandlers.handleCheckpointSelect, onCheckpointCancel: appHandlers.handleCheckpointCancel }) })), appState.startChat &&
|
|
525
|
+
appState.isCheckpointLoadMode) && (_jsx(Box, { marginLeft: -1, flexDirection: "column", children: _jsx(ModalSelectors, { isModelSelectionMode: appState.isModelSelectionMode, isProviderSelectionMode: appState.isProviderSelectionMode, isModelDatabaseMode: appState.isModelDatabaseMode, isConfigWizardMode: appState.isConfigWizardMode, isMcpWizardMode: appState.isMcpWizardMode, isSettingsMode: appState.isSettingsMode, isCheckpointLoadMode: appState.isCheckpointLoadMode, client: appState.client, currentModel: appState.currentModel, currentProvider: appState.currentProvider, checkpointLoadData: appState.checkpointLoadData, onModelSelect: modeHandlers.handleModelSelect, onModelSelectionCancel: modeHandlers.handleModelSelectionCancel, onProviderSelect: modeHandlers.handleProviderSelect, onProviderSelectionCancel: modeHandlers.handleProviderSelectionCancel, onModelDatabaseCancel: modeHandlers.handleModelDatabaseCancel, onConfigWizardComplete: modeHandlers.handleConfigWizardComplete, onConfigWizardCancel: modeHandlers.handleConfigWizardCancel, onMcpWizardComplete: modeHandlers.handleMcpWizardComplete, onMcpWizardCancel: modeHandlers.handleMcpWizardCancel, onSettingsCancel: modeHandlers.handleSettingsCancel, onCheckpointSelect: appHandlers.handleCheckpointSelect, onCheckpointCancel: appHandlers.handleCheckpointCancel }) })), appState.isSchedulerMode && (_jsx(SchedulerView, { activeJobCount: schedulerMode.activeJobCount, queueLength: schedulerMode.queueLength, isProcessing: schedulerMode.isProcessing, currentJobCommand: schedulerMode.currentJobCommand, developmentMode: appState.developmentMode, contextPercentUsed: appState.contextPercentUsed, onExit: exitSchedulerMode })), appState.startChat &&
|
|
526
|
+
!appState.isSchedulerMode &&
|
|
433
527
|
!(appState.isModelSelectionMode ||
|
|
434
528
|
appState.isProviderSelectionMode ||
|
|
435
529
|
appState.isModelDatabaseMode ||
|
|
@@ -437,6 +531,7 @@ export default function App({ vscodeMode = false, vscodePort, nonInteractiveProm
|
|
|
437
531
|
appState.isSettingsMode ||
|
|
438
532
|
appState.isMcpWizardMode ||
|
|
439
533
|
appState.isCheckpointLoadMode ||
|
|
440
|
-
appState.isExplorerMode
|
|
534
|
+
appState.isExplorerMode ||
|
|
535
|
+
appState.isIdeSelectionMode) && (_jsx(ChatInput, { isCancelling: appState.isCancelling, isToolExecuting: appState.isToolExecuting, isToolConfirmationMode: appState.isToolConfirmationMode, isQuestionMode: appState.isQuestionMode, pendingToolCalls: appState.pendingToolCalls, currentToolIndex: appState.currentToolIndex, pendingQuestion: appState.pendingQuestion, onQuestionAnswer: handleQuestionAnswer, mcpInitialized: appState.mcpInitialized, client: appState.client, nonInteractivePrompt: nonInteractivePrompt, nonInteractiveLoadingMessage: nonInteractiveLoadingMessage, customCommands: Array.from(appState.customCommandCache.keys()), inputDisabled: chatHandler.isGenerating || appState.isToolExecuting, developmentMode: appState.developmentMode, contextPercentUsed: appState.contextPercentUsed, onToolConfirm: toolHandler.handleToolConfirmation, onToolCancel: toolHandler.handleToolConfirmationCancel, onSubmit: appHandlers.handleMessageSubmit, onCancel: appHandlers.handleCancel, onToggleMode: appHandlers.handleToggleDevelopmentMode }))] }) }) }) }));
|
|
441
536
|
}
|
|
442
537
|
//# sourceMappingURL=App.js.map
|