@gguf/coder 0.3.0 → 0.3.1
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/.editorconfig +16 -0
- package/.env.example +63 -0
- package/.gitattributes +1 -0
- package/.semgrepignore +19 -0
- package/coder-dummy-file.ts +52 -0
- package/coder.config.example.json +59 -0
- package/coder.config.json +13 -0
- package/color_picker.html +36 -0
- package/package.json +2 -14
- package/scripts/extract-changelog.js +73 -0
- package/scripts/fetch-models.js +143 -0
- package/scripts/test.sh +40 -0
- package/scripts/update-homebrew-formula.sh +125 -0
- package/scripts/update-nix-version.sh +157 -0
- package/source/ai-sdk-client/AISDKClient.spec.ts +117 -0
- package/source/ai-sdk-client/AISDKClient.ts +155 -0
- package/source/ai-sdk-client/chat/chat-handler.spec.ts +121 -0
- package/source/ai-sdk-client/chat/chat-handler.ts +276 -0
- package/source/ai-sdk-client/chat/streaming-handler.spec.ts +173 -0
- package/source/ai-sdk-client/chat/streaming-handler.ts +110 -0
- package/source/ai-sdk-client/chat/tool-processor.spec.ts +92 -0
- package/source/ai-sdk-client/chat/tool-processor.ts +70 -0
- package/source/ai-sdk-client/converters/message-converter.spec.ts +220 -0
- package/source/ai-sdk-client/converters/message-converter.ts +113 -0
- package/source/ai-sdk-client/converters/tool-converter.spec.ts +90 -0
- package/source/ai-sdk-client/converters/tool-converter.ts +46 -0
- package/source/ai-sdk-client/error-handling/error-extractor.spec.ts +55 -0
- package/source/ai-sdk-client/error-handling/error-extractor.ts +15 -0
- package/source/ai-sdk-client/error-handling/error-parser.spec.ts +169 -0
- package/source/ai-sdk-client/error-handling/error-parser.ts +161 -0
- package/source/ai-sdk-client/index.ts +7 -0
- package/source/ai-sdk-client/providers/provider-factory.spec.ts +71 -0
- package/source/ai-sdk-client/providers/provider-factory.ts +41 -0
- package/source/ai-sdk-client/types.ts +9 -0
- package/source/ai-sdk-client-empty-message.spec.ts +141 -0
- package/source/ai-sdk-client-error-handling.spec.ts +186 -0
- package/source/ai-sdk-client-maxretries.spec.ts +114 -0
- package/source/ai-sdk-client-preparestep.spec.ts +279 -0
- package/source/app/App.spec.tsx +32 -0
- package/source/app/App.tsx +480 -0
- package/source/app/components/AppContainer.spec.tsx +96 -0
- package/source/app/components/AppContainer.tsx +56 -0
- package/source/app/components/ChatInterface.spec.tsx +163 -0
- package/source/app/components/ChatInterface.tsx +144 -0
- package/source/app/components/ModalSelectors.spec.tsx +141 -0
- package/source/app/components/ModalSelectors.tsx +135 -0
- package/source/app/helpers.spec.ts +97 -0
- package/source/app/helpers.ts +63 -0
- package/source/app/index.ts +4 -0
- package/source/app/types.ts +39 -0
- package/source/app/utils/appUtils.ts +294 -0
- package/source/app/utils/conversationState.ts +310 -0
- package/source/app.spec.tsx +244 -0
- package/source/cli.spec.ts +73 -0
- package/source/cli.tsx +51 -0
- package/source/client-factory.spec.ts +48 -0
- package/source/client-factory.ts +178 -0
- package/source/command-parser.spec.ts +127 -0
- package/source/command-parser.ts +36 -0
- package/source/commands/checkpoint.spec.tsx +277 -0
- package/source/commands/checkpoint.tsx +366 -0
- package/source/commands/clear.tsx +22 -0
- package/source/commands/custom-commands.tsx +121 -0
- package/source/commands/exit.ts +21 -0
- package/source/commands/export.spec.tsx +131 -0
- package/source/commands/export.tsx +79 -0
- package/source/commands/help.tsx +120 -0
- package/source/commands/index.ts +17 -0
- package/source/commands/init.tsx +339 -0
- package/source/commands/lsp-command.spec.tsx +281 -0
- package/source/commands/lsp.tsx +120 -0
- package/source/commands/mcp-command.spec.tsx +313 -0
- package/source/commands/mcp.tsx +162 -0
- package/source/commands/model-database.spec.tsx +758 -0
- package/source/commands/model-database.tsx +418 -0
- package/source/commands/model.ts +12 -0
- package/source/commands/provider.ts +12 -0
- package/source/commands/setup-config.tsx +16 -0
- package/source/commands/simple-commands.spec.tsx +175 -0
- package/source/commands/status.ts +12 -0
- package/source/commands/theme.ts +12 -0
- package/source/commands/update.spec.tsx +261 -0
- package/source/commands/update.tsx +201 -0
- package/source/commands/usage.spec.tsx +495 -0
- package/source/commands/usage.tsx +100 -0
- package/source/commands.spec.ts +436 -0
- package/source/commands.ts +83 -0
- package/source/components/assistant-message.spec.tsx +796 -0
- package/source/components/assistant-message.tsx +34 -0
- package/source/components/bash-execution-indicator.tsx +21 -0
- package/source/components/cancelling-indicator.tsx +16 -0
- package/source/components/chat-queue.spec.tsx +83 -0
- package/source/components/chat-queue.tsx +36 -0
- package/source/components/checkpoint-display.spec.tsx +219 -0
- package/source/components/checkpoint-display.tsx +126 -0
- package/source/components/checkpoint-selector.spec.tsx +173 -0
- package/source/components/checkpoint-selector.tsx +173 -0
- package/source/components/development-mode-indicator.spec.tsx +268 -0
- package/source/components/development-mode-indicator.tsx +38 -0
- package/source/components/message-box.spec.tsx +427 -0
- package/source/components/message-box.tsx +87 -0
- package/source/components/model-selector.tsx +132 -0
- package/source/components/provider-selector.tsx +75 -0
- package/source/components/random-spinner.tsx +19 -0
- package/source/components/security-disclaimer.tsx +73 -0
- package/source/components/status-connection-display.spec.tsx +133 -0
- package/source/components/status.tsx +267 -0
- package/source/components/theme-selector.tsx +126 -0
- package/source/components/tool-confirmation.tsx +190 -0
- package/source/components/tool-execution-indicator.tsx +33 -0
- package/source/components/tool-message.tsx +85 -0
- package/source/components/ui/titled-box.spec.tsx +207 -0
- package/source/components/ui/titled-box.tsx +57 -0
- package/source/components/usage/progress-bar.spec.tsx +398 -0
- package/source/components/usage/progress-bar.tsx +30 -0
- package/source/components/usage/usage-display.spec.tsx +780 -0
- package/source/components/usage/usage-display.tsx +291 -0
- package/source/components/user-input.spec.tsx +327 -0
- package/source/components/user-input.tsx +533 -0
- package/source/components/user-message.spec.tsx +230 -0
- package/source/components/user-message.tsx +84 -0
- package/source/components/welcome-message.tsx +76 -0
- package/source/config/env-substitution.ts +65 -0
- package/source/config/index.spec.ts +171 -0
- package/source/config/index.ts +154 -0
- package/source/config/paths.spec.ts +241 -0
- package/source/config/paths.ts +55 -0
- package/source/config/preferences.ts +51 -0
- package/source/config/themes.ts +315 -0
- package/source/constants.ts +130 -0
- package/source/context/mode-context.spec.ts +79 -0
- package/source/context/mode-context.ts +24 -0
- package/source/custom-commands/executor.spec.ts +142 -0
- package/source/custom-commands/executor.ts +64 -0
- package/source/custom-commands/loader.spec.ts +314 -0
- package/source/custom-commands/loader.ts +153 -0
- package/source/custom-commands/parser.ts +196 -0
- package/source/hooks/chat-handler/conversation/conversation-loop.spec.ts +39 -0
- package/source/hooks/chat-handler/conversation/conversation-loop.tsx +511 -0
- package/source/hooks/chat-handler/conversation/tool-executor.spec.ts +50 -0
- package/source/hooks/chat-handler/conversation/tool-executor.tsx +109 -0
- package/source/hooks/chat-handler/index.ts +12 -0
- package/source/hooks/chat-handler/state/streaming-state.spec.ts +26 -0
- package/source/hooks/chat-handler/state/streaming-state.ts +19 -0
- package/source/hooks/chat-handler/types.ts +38 -0
- package/source/hooks/chat-handler/useChatHandler.spec.tsx +321 -0
- package/source/hooks/chat-handler/useChatHandler.tsx +194 -0
- package/source/hooks/chat-handler/utils/context-checker.spec.ts +60 -0
- package/source/hooks/chat-handler/utils/context-checker.tsx +73 -0
- package/source/hooks/chat-handler/utils/message-helpers.spec.ts +42 -0
- package/source/hooks/chat-handler/utils/message-helpers.tsx +36 -0
- package/source/hooks/chat-handler/utils/tool-filters.spec.ts +109 -0
- package/source/hooks/chat-handler/utils/tool-filters.ts +64 -0
- package/source/hooks/useAppHandlers.tsx +291 -0
- package/source/hooks/useAppInitialization.tsx +422 -0
- package/source/hooks/useAppState.tsx +311 -0
- package/source/hooks/useDirectoryTrust.tsx +98 -0
- package/source/hooks/useInputState.ts +414 -0
- package/source/hooks/useModeHandlers.tsx +302 -0
- package/source/hooks/useNonInteractiveMode.ts +140 -0
- package/source/hooks/useTerminalWidth.tsx +81 -0
- package/source/hooks/useTheme.ts +18 -0
- package/source/hooks/useToolHandler.tsx +349 -0
- package/source/hooks/useUIState.ts +61 -0
- package/source/init/agents-template-generator.ts +421 -0
- package/source/init/existing-rules-extractor.ts +319 -0
- package/source/init/file-scanner.spec.ts +227 -0
- package/source/init/file-scanner.ts +238 -0
- package/source/init/framework-detector.ts +382 -0
- package/source/init/language-detector.ts +269 -0
- package/source/init/project-analyzer.spec.ts +231 -0
- package/source/init/project-analyzer.ts +458 -0
- package/source/lsp/index.ts +31 -0
- package/source/lsp/lsp-client.spec.ts +508 -0
- package/source/lsp/lsp-client.ts +487 -0
- package/source/lsp/lsp-manager.spec.ts +477 -0
- package/source/lsp/lsp-manager.ts +419 -0
- package/source/lsp/protocol.spec.ts +502 -0
- package/source/lsp/protocol.ts +360 -0
- package/source/lsp/server-discovery.spec.ts +654 -0
- package/source/lsp/server-discovery.ts +515 -0
- package/source/markdown-parser/html-entities.spec.ts +88 -0
- package/source/markdown-parser/html-entities.ts +45 -0
- package/source/markdown-parser/index.spec.ts +281 -0
- package/source/markdown-parser/index.ts +126 -0
- package/source/markdown-parser/table-parser.spec.ts +133 -0
- package/source/markdown-parser/table-parser.ts +114 -0
- package/source/markdown-parser/utils.spec.ts +70 -0
- package/source/markdown-parser/utils.ts +13 -0
- package/source/mcp/mcp-client.spec.ts +81 -0
- package/source/mcp/mcp-client.ts +625 -0
- package/source/mcp/transport-factory.spec.ts +406 -0
- package/source/mcp/transport-factory.ts +312 -0
- package/source/message-handler.ts +67 -0
- package/source/model-database/database-engine.spec.ts +494 -0
- package/source/model-database/database-engine.ts +50 -0
- package/source/model-database/model-database.spec.ts +363 -0
- package/source/model-database/model-database.ts +91 -0
- package/source/model-database/model-engine.spec.ts +447 -0
- package/source/model-database/model-engine.ts +65 -0
- package/source/model-database/model-fetcher.spec.ts +583 -0
- package/source/model-database/model-fetcher.ts +330 -0
- package/source/models/index.ts +1 -0
- package/source/models/models-cache.spec.ts +214 -0
- package/source/models/models-cache.ts +78 -0
- package/source/models/models-dev-client.spec.ts +379 -0
- package/source/models/models-dev-client.ts +329 -0
- package/source/models/models-types.ts +68 -0
- package/source/prompt-history.ts +155 -0
- package/source/security/command-injection.spec.ts +240 -0
- package/source/services/checkpoint-manager.spec.ts +523 -0
- package/source/services/checkpoint-manager.ts +466 -0
- package/source/services/file-snapshot.spec.ts +569 -0
- package/source/services/file-snapshot.ts +220 -0
- package/source/test-utils/render-with-theme.tsx +48 -0
- package/source/tokenization/index.ts +1 -0
- package/source/tokenization/tokenizer-factory.spec.ts +170 -0
- package/source/tokenization/tokenizer-factory.ts +125 -0
- package/source/tokenization/tokenizers/anthropic-tokenizer.spec.ts +200 -0
- package/source/tokenization/tokenizers/anthropic-tokenizer.ts +43 -0
- package/source/tokenization/tokenizers/fallback-tokenizer.spec.ts +236 -0
- package/source/tokenization/tokenizers/fallback-tokenizer.ts +26 -0
- package/source/tokenization/tokenizers/llama-tokenizer.spec.ts +224 -0
- package/source/tokenization/tokenizers/llama-tokenizer.ts +41 -0
- package/source/tokenization/tokenizers/openai-tokenizer.spec.ts +184 -0
- package/source/tokenization/tokenizers/openai-tokenizer.ts +57 -0
- package/source/tool-calling/index.ts +5 -0
- package/source/tool-calling/json-parser.spec.ts +639 -0
- package/source/tool-calling/json-parser.ts +247 -0
- package/source/tool-calling/tool-parser.spec.ts +395 -0
- package/source/tool-calling/tool-parser.ts +120 -0
- package/source/tool-calling/xml-parser.spec.ts +662 -0
- package/source/tool-calling/xml-parser.ts +289 -0
- package/source/tools/execute-bash.spec.tsx +353 -0
- package/source/tools/execute-bash.tsx +219 -0
- package/source/tools/execute-function.spec.ts +130 -0
- package/source/tools/fetch-url.spec.tsx +342 -0
- package/source/tools/fetch-url.tsx +172 -0
- package/source/tools/find-files.spec.tsx +924 -0
- package/source/tools/find-files.tsx +293 -0
- package/source/tools/index.ts +102 -0
- package/source/tools/lsp-get-diagnostics.tsx +192 -0
- package/source/tools/needs-approval.spec.ts +282 -0
- package/source/tools/read-file.spec.tsx +801 -0
- package/source/tools/read-file.tsx +387 -0
- package/source/tools/search-file-contents.spec.tsx +1273 -0
- package/source/tools/search-file-contents.tsx +293 -0
- package/source/tools/string-replace.spec.tsx +730 -0
- package/source/tools/string-replace.tsx +548 -0
- package/source/tools/tool-manager.ts +210 -0
- package/source/tools/tool-registry.spec.ts +415 -0
- package/source/tools/tool-registry.ts +228 -0
- package/source/tools/web-search.tsx +223 -0
- package/source/tools/write-file.spec.tsx +559 -0
- package/source/tools/write-file.tsx +228 -0
- package/source/types/app.ts +37 -0
- package/source/types/checkpoint.ts +48 -0
- package/source/types/commands.ts +46 -0
- package/source/types/components.ts +27 -0
- package/source/types/config.ts +103 -0
- package/source/types/core-connection-status.spec.ts +67 -0
- package/source/types/core.ts +181 -0
- package/source/types/hooks.ts +50 -0
- package/source/types/index.ts +12 -0
- package/source/types/markdown-parser.ts +11 -0
- package/source/types/mcp.ts +52 -0
- package/source/types/system.ts +16 -0
- package/source/types/tokenization.ts +41 -0
- package/source/types/ui.ts +40 -0
- package/source/types/usage.ts +58 -0
- package/source/types/utils.ts +16 -0
- package/source/usage/calculator.spec.ts +385 -0
- package/source/usage/calculator.ts +104 -0
- package/source/usage/storage.spec.ts +703 -0
- package/source/usage/storage.ts +238 -0
- package/source/usage/tracker.spec.ts +456 -0
- package/source/usage/tracker.ts +102 -0
- package/source/utils/atomic-deletion.spec.ts +194 -0
- package/source/utils/atomic-deletion.ts +127 -0
- package/source/utils/bounded-map.spec.ts +300 -0
- package/source/utils/bounded-map.ts +193 -0
- package/source/utils/checkpoint-utils.spec.ts +222 -0
- package/source/utils/checkpoint-utils.ts +92 -0
- package/source/utils/error-formatter.spec.ts +169 -0
- package/source/utils/error-formatter.ts +194 -0
- package/source/utils/file-autocomplete.spec.ts +173 -0
- package/source/utils/file-autocomplete.ts +196 -0
- package/source/utils/file-cache.spec.ts +309 -0
- package/source/utils/file-cache.ts +195 -0
- package/source/utils/file-content-loader.spec.ts +180 -0
- package/source/utils/file-content-loader.ts +179 -0
- package/source/utils/file-mention-handler.spec.ts +261 -0
- package/source/utils/file-mention-handler.ts +84 -0
- package/source/utils/file-mention-parser.spec.ts +182 -0
- package/source/utils/file-mention-parser.ts +170 -0
- package/source/utils/fuzzy-matching.spec.ts +149 -0
- package/source/utils/fuzzy-matching.ts +146 -0
- package/source/utils/indentation-normalizer.spec.ts +216 -0
- package/source/utils/indentation-normalizer.ts +76 -0
- package/source/utils/installation-detector.spec.ts +178 -0
- package/source/utils/installation-detector.ts +153 -0
- package/source/utils/logging/config.spec.ts +311 -0
- package/source/utils/logging/config.ts +210 -0
- package/source/utils/logging/console-facade.spec.ts +184 -0
- package/source/utils/logging/console-facade.ts +384 -0
- package/source/utils/logging/correlation.spec.ts +679 -0
- package/source/utils/logging/correlation.ts +474 -0
- package/source/utils/logging/formatters.spec.ts +464 -0
- package/source/utils/logging/formatters.ts +207 -0
- package/source/utils/logging/health-monitor/alerts/alert-manager.spec.ts +93 -0
- package/source/utils/logging/health-monitor/alerts/alert-manager.ts +79 -0
- package/source/utils/logging/health-monitor/checks/configuration-check.spec.ts +56 -0
- package/source/utils/logging/health-monitor/checks/configuration-check.ts +43 -0
- package/source/utils/logging/health-monitor/checks/logging-check.spec.ts +56 -0
- package/source/utils/logging/health-monitor/checks/logging-check.ts +58 -0
- package/source/utils/logging/health-monitor/checks/memory-check.spec.ts +100 -0
- package/source/utils/logging/health-monitor/checks/memory-check.ts +78 -0
- package/source/utils/logging/health-monitor/checks/performance-check.spec.ts +56 -0
- package/source/utils/logging/health-monitor/checks/performance-check.ts +56 -0
- package/source/utils/logging/health-monitor/checks/request-check.spec.ts +56 -0
- package/source/utils/logging/health-monitor/checks/request-check.ts +76 -0
- package/source/utils/logging/health-monitor/core/health-check-runner.spec.ts +70 -0
- package/source/utils/logging/health-monitor/core/health-check-runner.ts +138 -0
- package/source/utils/logging/health-monitor/core/health-monitor.spec.ts +58 -0
- package/source/utils/logging/health-monitor/core/health-monitor.ts +344 -0
- package/source/utils/logging/health-monitor/core/scoring.spec.ts +65 -0
- package/source/utils/logging/health-monitor/core/scoring.ts +91 -0
- package/source/utils/logging/health-monitor/index.ts +15 -0
- package/source/utils/logging/health-monitor/instances.ts +48 -0
- package/source/utils/logging/health-monitor/middleware/http-middleware.spec.ts +141 -0
- package/source/utils/logging/health-monitor/middleware/http-middleware.ts +75 -0
- package/source/utils/logging/health-monitor/types.ts +126 -0
- package/source/utils/logging/index.spec.ts +284 -0
- package/source/utils/logging/index.ts +236 -0
- package/source/utils/logging/integration.spec.ts +441 -0
- package/source/utils/logging/log-method-factory.spec.ts +573 -0
- package/source/utils/logging/log-method-factory.ts +233 -0
- package/source/utils/logging/log-query/aggregation/aggregator.spec.ts +277 -0
- package/source/utils/logging/log-query/aggregation/aggregator.ts +159 -0
- package/source/utils/logging/log-query/aggregation/facet-generator.spec.ts +159 -0
- package/source/utils/logging/log-query/aggregation/facet-generator.ts +47 -0
- package/source/utils/logging/log-query/index.ts +23 -0
- package/source/utils/logging/log-query/query/filter-predicates.spec.ts +247 -0
- package/source/utils/logging/log-query/query/filter-predicates.ts +154 -0
- package/source/utils/logging/log-query/query/query-builder.spec.ts +182 -0
- package/source/utils/logging/log-query/query/query-builder.ts +151 -0
- package/source/utils/logging/log-query/query/query-engine.spec.ts +214 -0
- package/source/utils/logging/log-query/query/query-engine.ts +45 -0
- package/source/utils/logging/log-query/storage/circular-buffer.spec.ts +143 -0
- package/source/utils/logging/log-query/storage/circular-buffer.ts +75 -0
- package/source/utils/logging/log-query/storage/index-manager.spec.ts +150 -0
- package/source/utils/logging/log-query/storage/index-manager.ts +71 -0
- package/source/utils/logging/log-query/storage/log-storage.spec.ts +257 -0
- package/source/utils/logging/log-query/storage/log-storage.ts +80 -0
- package/source/utils/logging/log-query/types.ts +163 -0
- package/source/utils/logging/log-query/utils/helpers.spec.ts +263 -0
- package/source/utils/logging/log-query/utils/helpers.ts +72 -0
- package/source/utils/logging/log-query/utils/sorting.spec.ts +182 -0
- package/source/utils/logging/log-query/utils/sorting.ts +61 -0
- package/source/utils/logging/logger-provider.spec.ts +262 -0
- package/source/utils/logging/logger-provider.ts +362 -0
- package/source/utils/logging/performance.spec.ts +209 -0
- package/source/utils/logging/performance.ts +757 -0
- package/source/utils/logging/pino-logger.spec.ts +425 -0
- package/source/utils/logging/pino-logger.ts +514 -0
- package/source/utils/logging/redaction.spec.ts +490 -0
- package/source/utils/logging/redaction.ts +267 -0
- package/source/utils/logging/request-tracker.spec.ts +1198 -0
- package/source/utils/logging/request-tracker.ts +803 -0
- package/source/utils/logging/transports.spec.ts +505 -0
- package/source/utils/logging/transports.ts +305 -0
- package/source/utils/logging/types.ts +216 -0
- package/source/utils/message-builder.spec.ts +179 -0
- package/source/utils/message-builder.ts +101 -0
- package/source/utils/message-queue.tsx +486 -0
- package/source/utils/paste-detection.spec.ts +69 -0
- package/source/utils/paste-detection.ts +124 -0
- package/source/utils/paste-roundtrip.spec.ts +442 -0
- package/source/utils/paste-utils.spec.ts +128 -0
- package/source/utils/paste-utils.ts +52 -0
- package/source/utils/programming-language-helper.spec.ts +74 -0
- package/source/utils/programming-language-helper.ts +32 -0
- package/source/utils/prompt-assembly.spec.ts +221 -0
- package/source/utils/prompt-processor.ts +173 -0
- package/source/utils/tool-args-parser.spec.ts +136 -0
- package/source/utils/tool-args-parser.ts +54 -0
- package/source/utils/tool-cancellation.spec.ts +230 -0
- package/source/utils/tool-cancellation.ts +28 -0
- package/source/utils/tool-result-display.spec.tsx +469 -0
- package/source/utils/tool-result-display.tsx +90 -0
- package/source/utils/update-checker.spec.ts +383 -0
- package/source/utils/update-checker.ts +183 -0
- package/source/wizard/config-wizard.spec.tsx +103 -0
- package/source/wizard/config-wizard.tsx +382 -0
- package/source/wizard/steps/location-step.spec.tsx +186 -0
- package/source/wizard/steps/location-step.tsx +147 -0
- package/source/wizard/steps/mcp-step.spec.tsx +607 -0
- package/source/wizard/steps/mcp-step.tsx +632 -0
- package/source/wizard/steps/provider-step.spec.tsx +342 -0
- package/source/wizard/steps/provider-step.tsx +957 -0
- package/source/wizard/steps/summary-step.spec.tsx +749 -0
- package/source/wizard/steps/summary-step.tsx +228 -0
- package/source/wizard/templates/mcp-templates.spec.ts +613 -0
- package/source/wizard/templates/mcp-templates.ts +570 -0
- package/source/wizard/templates/provider-templates.spec.ts +152 -0
- package/source/wizard/templates/provider-templates.ts +485 -0
- package/source/wizard/utils/fetch-cloud-models.spec.ts +428 -0
- package/source/wizard/utils/fetch-cloud-models.ts +223 -0
- package/source/wizard/utils/fetch-local-models.spec.ts +297 -0
- package/source/wizard/utils/fetch-local-models.ts +192 -0
- package/source/wizard/validation-array.spec.ts +264 -0
- package/source/wizard/validation.spec.ts +373 -0
- package/source/wizard/validation.ts +232 -0
- package/source/app/prompts/main-prompt.md +0 -122
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {type Tool as AISDKTool, jsonSchema, tool} from 'ai';
|
|
4
|
+
|
|
5
|
+
export {tool, jsonSchema};
|
|
6
|
+
|
|
7
|
+
// Type for AI SDK tools (return type of tool() function)
|
|
8
|
+
// Tool<PARAMETERS, RESULT> is AI SDK's actual tool type
|
|
9
|
+
// We use 'any' for generics since we don't auto-execute tools (human-in-the-loop)
|
|
10
|
+
// biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required
|
|
11
|
+
export type AISDKCoreTool = AISDKTool<any, any>;
|
|
12
|
+
|
|
13
|
+
// Current Coder message format (OpenAI-compatible)
|
|
14
|
+
// Note: We maintain this format internally and convert to ModelMessage at AI SDK boundary
|
|
15
|
+
export interface Message {
|
|
16
|
+
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
17
|
+
content: string;
|
|
18
|
+
tool_calls?: ToolCall[];
|
|
19
|
+
tool_call_id?: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ToolCall {
|
|
24
|
+
id: string;
|
|
25
|
+
function: {
|
|
26
|
+
name: string;
|
|
27
|
+
arguments: Record<string, unknown>;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface ToolResult {
|
|
32
|
+
tool_call_id: string;
|
|
33
|
+
role: 'tool';
|
|
34
|
+
name: string;
|
|
35
|
+
content: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface ToolParameterSchema {
|
|
39
|
+
type?: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface Tool {
|
|
45
|
+
type: 'function';
|
|
46
|
+
function: {
|
|
47
|
+
name: string;
|
|
48
|
+
description: string;
|
|
49
|
+
parameters: {
|
|
50
|
+
type: 'object';
|
|
51
|
+
properties: Record<string, ToolParameterSchema>;
|
|
52
|
+
required: string[];
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Tool handlers accept dynamic args from LLM, so any is appropriate here
|
|
58
|
+
// biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required -- Tool arguments are dynamically typed
|
|
59
|
+
export type ToolHandler = (input: any) => Promise<string>;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Tool formatter type for Ink UI
|
|
63
|
+
* Formats tool arguments and results for display in the CLI
|
|
64
|
+
*/
|
|
65
|
+
export type ToolFormatter = (
|
|
66
|
+
// biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required -- Tool arguments are dynamically typed
|
|
67
|
+
args: any,
|
|
68
|
+
result?: string,
|
|
69
|
+
) =>
|
|
70
|
+
| string
|
|
71
|
+
| Promise<string>
|
|
72
|
+
| React.ReactElement
|
|
73
|
+
| Promise<React.ReactElement>;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Tool validator type for pre-execution validation
|
|
77
|
+
* Returns validation result with optional error message
|
|
78
|
+
*/
|
|
79
|
+
export type ToolValidator = (
|
|
80
|
+
// biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required -- Tool arguments are dynamically typed
|
|
81
|
+
args: any,
|
|
82
|
+
) => Promise<{valid: true} | {valid: false; error: string}>;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Coder tool export structure
|
|
86
|
+
*
|
|
87
|
+
* This is what individual tool files export (e.g., read-file.tsx, execute-bash.tsx).
|
|
88
|
+
* The handler is extracted from tool.execute() in tools/index.ts to avoid duplication.
|
|
89
|
+
*
|
|
90
|
+
* Structure:
|
|
91
|
+
* - name: Tool name as const for type safety
|
|
92
|
+
* - tool: Native AI SDK v6 CoreTool with execute() function
|
|
93
|
+
* - formatter: Optional React component for rich CLI UI display
|
|
94
|
+
* - validator: Optional pre-execution validation function
|
|
95
|
+
*/
|
|
96
|
+
export interface CoderToolExport {
|
|
97
|
+
name: string;
|
|
98
|
+
tool: AISDKCoreTool; // AI SDK v6 tool with execute()
|
|
99
|
+
formatter?: ToolFormatter; // For UI display
|
|
100
|
+
validator?: ToolValidator; // For pre-execution validation
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Internal tool entry used by ToolRegistry
|
|
105
|
+
*
|
|
106
|
+
* This is the complete tool entry including the handler extracted from tool.execute().
|
|
107
|
+
* Used internally by ToolRegistry and ToolManager for unified tool management.
|
|
108
|
+
*
|
|
109
|
+
* Structure:
|
|
110
|
+
* - name: Tool name for registry lookup
|
|
111
|
+
* - tool: Native AI SDK CoreTool (for passing to AI SDK)
|
|
112
|
+
* - handler: Extracted execute function (for human-in-the-loop execution)
|
|
113
|
+
* - formatter: Optional React component for rich CLI UI display
|
|
114
|
+
* - validator: Optional pre-execution validation function
|
|
115
|
+
*/
|
|
116
|
+
export interface ToolEntry {
|
|
117
|
+
name: string;
|
|
118
|
+
tool: AISDKCoreTool; // For AI SDK
|
|
119
|
+
handler: ToolHandler; // For execution (extracted from tool.execute)
|
|
120
|
+
formatter?: ToolFormatter; // For UI (React component)
|
|
121
|
+
validator?: ToolValidator; // For validation
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
interface LLMMessage {
|
|
125
|
+
role: 'assistant';
|
|
126
|
+
content: string;
|
|
127
|
+
tool_calls?: ToolCall[];
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export interface LLMChatResponse {
|
|
131
|
+
choices: Array<{
|
|
132
|
+
message: LLMMessage;
|
|
133
|
+
}>;
|
|
134
|
+
// Auto-executed messages (assistant + tool results) from AI SDK multi-step execution
|
|
135
|
+
// These need to be added to message history for proper context tracking
|
|
136
|
+
autoExecutedMessages?: Message[];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface StreamCallbacks {
|
|
140
|
+
onToken?: (token: string) => void;
|
|
141
|
+
onToolCall?: (toolCall: ToolCall) => void;
|
|
142
|
+
onToolExecuted?: (toolCall: ToolCall, result: string) => void;
|
|
143
|
+
onFinish?: () => void;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface LLMClient {
|
|
147
|
+
getCurrentModel(): string;
|
|
148
|
+
setModel(model: string): void;
|
|
149
|
+
getContextSize(): number;
|
|
150
|
+
getAvailableModels(): Promise<string[]>;
|
|
151
|
+
chat(
|
|
152
|
+
messages: Message[],
|
|
153
|
+
tools: Record<string, AISDKCoreTool>,
|
|
154
|
+
callbacks: StreamCallbacks,
|
|
155
|
+
signal?: AbortSignal,
|
|
156
|
+
): Promise<LLMChatResponse>;
|
|
157
|
+
clearContext(): Promise<void>;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export type DevelopmentMode = 'normal' | 'auto-accept' | 'plan';
|
|
161
|
+
|
|
162
|
+
export const DEVELOPMENT_MODE_LABELS: Record<DevelopmentMode, string> = {
|
|
163
|
+
normal: '▶ normal mode on',
|
|
164
|
+
'auto-accept': '⏵⏵ auto-accept mode on',
|
|
165
|
+
plan: '⏸ plan mode on',
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// Connection status types for MCP and LSP servers
|
|
169
|
+
export type ConnectionStatus = 'connected' | 'failed' | 'pending';
|
|
170
|
+
|
|
171
|
+
export interface MCPConnectionStatus {
|
|
172
|
+
name: string;
|
|
173
|
+
status: ConnectionStatus;
|
|
174
|
+
errorMessage?: string;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export interface LSPConnectionStatus {
|
|
178
|
+
name: string;
|
|
179
|
+
status: ConnectionStatus;
|
|
180
|
+
errorMessage?: string;
|
|
181
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Enum for all supported placeholder types - ensures type safety
|
|
2
|
+
export enum PlaceholderType {
|
|
3
|
+
PASTE = 'paste',
|
|
4
|
+
FILE = 'file',
|
|
5
|
+
// Future types can be added here:
|
|
6
|
+
// TEMPLATE = 'template',
|
|
7
|
+
// ENV_VAR = 'env_var',
|
|
8
|
+
// COMMAND_OUTPUT = 'command_output'
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// Base placeholder content structure
|
|
12
|
+
interface BasePlaceholderContent {
|
|
13
|
+
type: PlaceholderType;
|
|
14
|
+
displayText: string; // What shows in the placeholder (e.g., "[Paste #123: 567 chars]")
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Specific placeholder types with their own JSON data structures
|
|
18
|
+
export interface PastePlaceholderContent extends BasePlaceholderContent {
|
|
19
|
+
type: PlaceholderType.PASTE;
|
|
20
|
+
content: string; // The actual pasted text
|
|
21
|
+
originalSize: number;
|
|
22
|
+
detectionMethod?: 'rate' | 'size' | 'multiline';
|
|
23
|
+
timestamp?: number; // When the paste occurred
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface FilePlaceholderContent extends BasePlaceholderContent {
|
|
27
|
+
type: PlaceholderType.FILE;
|
|
28
|
+
filePath: string; // Absolute or relative path
|
|
29
|
+
content: string; // File contents at time of inclusion
|
|
30
|
+
lastModified?: number; // File modification time
|
|
31
|
+
encoding?: string; // File encoding (utf8, etc.)
|
|
32
|
+
fileSize?: number; // Original file size
|
|
33
|
+
checksum?: string; // For detecting file changes
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Union type for all placeholder content types - fully type-safe
|
|
37
|
+
export type PlaceholderContent =
|
|
38
|
+
| PastePlaceholderContent
|
|
39
|
+
| FilePlaceholderContent;
|
|
40
|
+
|
|
41
|
+
// Core data structure for placeholder handling system
|
|
42
|
+
export interface InputState {
|
|
43
|
+
// The text visible in the input field, including placeholders.
|
|
44
|
+
// e.g., "Analyze this: [Paste #1234: 567 chars] and compare with [File #5678: config.json]"
|
|
45
|
+
displayValue: string;
|
|
46
|
+
|
|
47
|
+
// A dictionary holding the full content and metadata for each placeholder.
|
|
48
|
+
// The key is the ID from the placeholder.
|
|
49
|
+
placeholderContent: Record<string, PlaceholderContent>;
|
|
50
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Re-export all types from organized modules
|
|
2
|
+
export * from '@/types/core';
|
|
3
|
+
export * from '@/types/config';
|
|
4
|
+
export * from '@/types/mcp';
|
|
5
|
+
export * from '@/types/commands';
|
|
6
|
+
export * from '@/types/ui';
|
|
7
|
+
export * from '@/types/app';
|
|
8
|
+
export * from '@/types/utils';
|
|
9
|
+
export * from '@/types/components';
|
|
10
|
+
export * from '@/types/hooks';
|
|
11
|
+
export * from '@/types/system';
|
|
12
|
+
export * from '@/types/checkpoint';
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export type MCPTransportType = 'stdio' | 'websocket' | 'http';
|
|
2
|
+
|
|
3
|
+
export interface MCPAuthConfig {
|
|
4
|
+
type: 'bearer' | 'basic' | 'api-key' | 'custom';
|
|
5
|
+
token?: string;
|
|
6
|
+
username?: string;
|
|
7
|
+
password?: string;
|
|
8
|
+
apiKey?: string;
|
|
9
|
+
customHeaders?: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface MCPServer {
|
|
13
|
+
name: string;
|
|
14
|
+
transport: MCPTransportType;
|
|
15
|
+
|
|
16
|
+
// STDIO-specific fields
|
|
17
|
+
command?: string;
|
|
18
|
+
args?: string[];
|
|
19
|
+
env?: Record<string, string>;
|
|
20
|
+
|
|
21
|
+
// Remote transport-specific fields
|
|
22
|
+
url?: string;
|
|
23
|
+
headers?: Record<string, string>;
|
|
24
|
+
auth?: MCPAuthConfig;
|
|
25
|
+
timeout?: number;
|
|
26
|
+
reconnect?: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
maxAttempts: number;
|
|
29
|
+
backoffMs: number;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Common fields
|
|
33
|
+
description?: string;
|
|
34
|
+
tags?: string[];
|
|
35
|
+
enabled?: boolean;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface MCPTool {
|
|
39
|
+
name: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
// JSON Schema for tool input - intentionally flexible
|
|
42
|
+
// biome-ignore lint/suspicious/noExplicitAny: Dynamic typing required
|
|
43
|
+
inputSchema?: any;
|
|
44
|
+
serverName: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface MCPInitResult {
|
|
48
|
+
serverName: string;
|
|
49
|
+
success: boolean;
|
|
50
|
+
toolCount?: number;
|
|
51
|
+
error?: string;
|
|
52
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ModelEntry {
|
|
2
|
+
id: string; // OpenRouter model ID (e.g., "openai/gpt-4")
|
|
3
|
+
name: string; // Display name
|
|
4
|
+
author: string; // Model creator/organization (e.g., "Meta", "Anthropic", "Qwen")
|
|
5
|
+
size: string; // Context length formatted (e.g., "128K", "1M")
|
|
6
|
+
local: boolean; // Open weights - can be run locally
|
|
7
|
+
api: boolean; // Available via hosted API (OpenRouter, etc.)
|
|
8
|
+
contextLength: number; // Raw context length in tokens
|
|
9
|
+
created: number; // Unix timestamp of model creation
|
|
10
|
+
quality: {
|
|
11
|
+
cost: number; // Cost-effectiveness (10 = free/cheap, 1 = very expensive)
|
|
12
|
+
};
|
|
13
|
+
costType: 'free' | 'paid';
|
|
14
|
+
costDetails: string; // e.g., "$1.25/M in, $5.00/M out"
|
|
15
|
+
hasToolSupport: boolean; // Whether model supports tool/function calling
|
|
16
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokenizer interface and types
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type {Message} from '@/types/core';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Tokenizer interface for encoding text and counting tokens
|
|
9
|
+
*/
|
|
10
|
+
export interface Tokenizer {
|
|
11
|
+
/**
|
|
12
|
+
* Encode text and return token count
|
|
13
|
+
*/
|
|
14
|
+
encode(text: string): number;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Count tokens in a message (content + role)
|
|
18
|
+
*/
|
|
19
|
+
countTokens(message: Message): number;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Get the tokenizer name/type
|
|
23
|
+
*/
|
|
24
|
+
getName(): string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Optional cleanup method for releasing resources
|
|
28
|
+
* Should be called when the tokenizer is no longer needed
|
|
29
|
+
*/
|
|
30
|
+
free?(): void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Provider types for tokenizer selection
|
|
35
|
+
*/
|
|
36
|
+
export type TokenizerProvider =
|
|
37
|
+
| 'openai'
|
|
38
|
+
| 'anthropic'
|
|
39
|
+
| 'llama'
|
|
40
|
+
| 'fallback'
|
|
41
|
+
| 'auto';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface Colors {
|
|
2
|
+
white: string;
|
|
3
|
+
black: string;
|
|
4
|
+
primary: string;
|
|
5
|
+
tool: string;
|
|
6
|
+
secondary: string;
|
|
7
|
+
success: string;
|
|
8
|
+
error: string;
|
|
9
|
+
info: string;
|
|
10
|
+
warning: string;
|
|
11
|
+
// Diff highlight colors
|
|
12
|
+
diffAdded: string;
|
|
13
|
+
diffRemoved: string;
|
|
14
|
+
diffAddedText: string;
|
|
15
|
+
diffRemovedText: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface Theme {
|
|
19
|
+
name: string;
|
|
20
|
+
displayName: string;
|
|
21
|
+
colors: Colors;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type ThemePreset =
|
|
25
|
+
| 'tokyo-night'
|
|
26
|
+
| 'synthwave-84'
|
|
27
|
+
| 'forest-night'
|
|
28
|
+
| 'material-ocean'
|
|
29
|
+
| 'sunset-glow'
|
|
30
|
+
| 'nord-frost'
|
|
31
|
+
| 'rose-pine-dawn'
|
|
32
|
+
| 'neon-jungle'
|
|
33
|
+
| 'midnight-amethyst'
|
|
34
|
+
| 'desert-mirage'
|
|
35
|
+
| 'cherry-blossom'
|
|
36
|
+
| 'electric-storm'
|
|
37
|
+
| 'deep-sea'
|
|
38
|
+
| 'volcanic-ash'
|
|
39
|
+
| 'cyberpunk-mint'
|
|
40
|
+
| 'dracula';
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token breakdown by category
|
|
3
|
+
*/
|
|
4
|
+
export interface TokenBreakdown {
|
|
5
|
+
system: number;
|
|
6
|
+
userMessages: number;
|
|
7
|
+
assistantMessages: number;
|
|
8
|
+
toolDefinitions: number;
|
|
9
|
+
toolResults: number;
|
|
10
|
+
total: number;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Session usage data
|
|
15
|
+
*/
|
|
16
|
+
export interface SessionUsage {
|
|
17
|
+
id: string;
|
|
18
|
+
timestamp: number;
|
|
19
|
+
provider: string;
|
|
20
|
+
model: string;
|
|
21
|
+
tokens: TokenBreakdown;
|
|
22
|
+
messageCount: number;
|
|
23
|
+
duration?: number; // Session duration in milliseconds
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Daily aggregate usage
|
|
28
|
+
*/
|
|
29
|
+
export interface DailyAggregate {
|
|
30
|
+
date: string; // YYYY-MM-DD format
|
|
31
|
+
sessions: number;
|
|
32
|
+
totalTokens: number;
|
|
33
|
+
providers: Record<string, number>; // Provider name -> token count
|
|
34
|
+
models: Record<string, number>; // Model name -> token count
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Persistent usage data structure
|
|
39
|
+
*/
|
|
40
|
+
export interface UsageData {
|
|
41
|
+
sessions: SessionUsage[]; // Last 100 sessions
|
|
42
|
+
dailyAggregates: DailyAggregate[]; // Last 30 days
|
|
43
|
+
totalLifetime: number;
|
|
44
|
+
lastUpdated: number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Current session statistics
|
|
49
|
+
*/
|
|
50
|
+
export interface CurrentSessionStats {
|
|
51
|
+
tokens: TokenBreakdown;
|
|
52
|
+
messageCount: number;
|
|
53
|
+
startTime: number;
|
|
54
|
+
provider: string;
|
|
55
|
+
model: string;
|
|
56
|
+
contextLimit: number | null;
|
|
57
|
+
percentUsed: number;
|
|
58
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type MessageType = 'info' | 'error' | 'success' | 'warning';
|
|
2
|
+
|
|
3
|
+
export interface NpmRegistryResponse {
|
|
4
|
+
version: string;
|
|
5
|
+
name: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface UpdateInfo {
|
|
10
|
+
hasUpdate: boolean;
|
|
11
|
+
currentVersion: string;
|
|
12
|
+
latestVersion?: string;
|
|
13
|
+
updateCommand?: string;
|
|
14
|
+
updateMessage?: string;
|
|
15
|
+
error?: string;
|
|
16
|
+
}
|