@nanocollective/nanocoder 1.23.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -15
- package/README.md +25 -884
- package/assets/nanocoder-vscode.vsix +0 -0
- package/dist/ai-sdk-client/ai-sdk-client.d.ts +3 -2
- package/dist/ai-sdk-client/ai-sdk-client.d.ts.map +1 -1
- package/dist/ai-sdk-client/ai-sdk-client.js +16 -2
- package/dist/ai-sdk-client/ai-sdk-client.js.map +1 -1
- package/dist/ai-sdk-client/chat/chat-handler.d.ts +2 -1
- package/dist/ai-sdk-client/chat/chat-handler.d.ts.map +1 -1
- package/dist/ai-sdk-client/chat/chat-handler.js +37 -70
- package/dist/ai-sdk-client/chat/chat-handler.js.map +1 -1
- package/dist/ai-sdk-client/chat/streaming-handler.d.ts +2 -2
- package/dist/ai-sdk-client/chat/streaming-handler.d.ts.map +1 -1
- package/dist/ai-sdk-client/chat/streaming-handler.js +4 -23
- package/dist/ai-sdk-client/chat/streaming-handler.js.map +1 -1
- package/dist/ai-sdk-client/error-handling/error-parser.d.ts.map +1 -1
- package/dist/ai-sdk-client/error-handling/error-parser.js +7 -2
- package/dist/ai-sdk-client/error-handling/error-parser.js.map +1 -1
- package/dist/ai-sdk-client/providers/provider-factory.d.ts +2 -1
- package/dist/ai-sdk-client/providers/provider-factory.d.ts.map +1 -1
- package/dist/ai-sdk-client/providers/provider-factory.js +55 -0
- package/dist/ai-sdk-client/providers/provider-factory.js.map +1 -1
- package/dist/app/App.d.ts +1 -1
- package/dist/app/App.d.ts.map +1 -1
- package/dist/app/App.js +66 -50
- package/dist/app/App.js.map +1 -1
- package/dist/app/components/chat-input.d.ts +4 -1
- package/dist/app/components/chat-input.d.ts.map +1 -1
- package/dist/app/components/chat-input.js +4 -3
- package/dist/app/components/chat-input.js.map +1 -1
- package/dist/app/components/modal-selectors.d.ts +6 -7
- package/dist/app/components/modal-selectors.d.ts.map +1 -1
- package/dist/app/components/modal-selectors.js +11 -7
- package/dist/app/components/modal-selectors.js.map +1 -1
- package/dist/app/components/settings-selector.d.ts.map +1 -1
- package/dist/app/components/settings-selector.js +3 -3
- package/dist/app/components/settings-selector.js.map +1 -1
- package/dist/app/helpers.d.ts.map +1 -1
- package/dist/app/helpers.js +2 -4
- package/dist/app/helpers.js.map +1 -1
- package/dist/app/index.d.ts +0 -1
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +0 -1
- package/dist/app/index.js.map +1 -1
- package/dist/app/types.d.ts +2 -0
- package/dist/app/types.d.ts.map +1 -1
- package/dist/app/utils/app-util.d.ts +1 -5
- package/dist/app/utils/app-util.d.ts.map +1 -1
- package/dist/app/utils/app-util.js +60 -460
- package/dist/app/utils/app-util.js.map +1 -1
- package/dist/app/utils/handlers/compact-handler.d.ts +6 -0
- package/dist/app/utils/handlers/compact-handler.d.ts.map +1 -0
- package/dist/app/utils/handlers/compact-handler.js +148 -0
- package/dist/app/utils/handlers/compact-handler.js.map +1 -0
- package/dist/app/utils/handlers/context-max-handler.d.ts +11 -0
- package/dist/app/utils/handlers/context-max-handler.d.ts.map +1 -0
- package/dist/app/utils/handlers/context-max-handler.js +102 -0
- package/dist/app/utils/handlers/context-max-handler.js.map +1 -0
- package/dist/app/utils/handlers/create-handler.d.ts +17 -0
- package/dist/app/utils/handlers/create-handler.d.ts.map +1 -0
- package/dist/app/utils/handlers/create-handler.js +112 -0
- package/dist/app/utils/handlers/create-handler.js.map +1 -0
- package/dist/app/utils/handlers/session-handler.d.ts +8 -0
- package/dist/app/utils/handlers/session-handler.d.ts.map +1 -0
- package/dist/app/utils/handlers/session-handler.js +99 -0
- package/dist/app/utils/handlers/session-handler.js.map +1 -0
- package/dist/auth/github-copilot.d.ts +44 -0
- package/dist/auth/github-copilot.d.ts.map +1 -0
- package/dist/auth/github-copilot.js +178 -0
- package/dist/auth/github-copilot.js.map +1 -0
- package/dist/cli.js +64 -3
- package/dist/cli.js.map +1 -1
- package/dist/client-factory.d.ts +1 -1
- package/dist/client-factory.d.ts.map +1 -1
- package/dist/client-factory.js +39 -8
- package/dist/client-factory.js.map +1 -1
- package/dist/commands/compact.d.ts +1 -6
- package/dist/commands/compact.d.ts.map +1 -1
- package/dist/commands/compact.js +2 -13
- package/dist/commands/compact.js.map +1 -1
- package/dist/commands/context-max.d.ts +1 -2
- package/dist/commands/context-max.d.ts.map +1 -1
- package/dist/commands/context-max.js +2 -9
- package/dist/commands/context-max.js.map +1 -1
- package/dist/commands/copilot-login-command.d.ts +3 -0
- package/dist/commands/copilot-login-command.d.ts.map +1 -0
- package/dist/commands/copilot-login-command.js +9 -0
- package/dist/commands/copilot-login-command.js.map +1 -0
- package/dist/commands/copilot-login.d.ts +9 -0
- package/dist/commands/copilot-login.d.ts.map +1 -0
- package/dist/commands/copilot-login.js +70 -0
- package/dist/commands/copilot-login.js.map +1 -0
- package/dist/commands/create-stub-command.d.ts +8 -0
- package/dist/commands/create-stub-command.d.ts.map +1 -0
- package/dist/commands/create-stub-command.js +14 -0
- package/dist/commands/create-stub-command.js.map +1 -0
- package/dist/commands/explorer.d.ts +1 -2
- package/dist/commands/explorer.d.ts.map +1 -1
- package/dist/commands/explorer.js +2 -9
- package/dist/commands/explorer.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +1 -1
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/ide.d.ts +1 -2
- package/dist/commands/ide.d.ts.map +1 -1
- package/dist/commands/ide.js +2 -9
- package/dist/commands/ide.js.map +1 -1
- package/dist/commands/index.d.ts +2 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/model.d.ts +1 -2
- package/dist/commands/model.d.ts.map +1 -1
- package/dist/commands/model.js +2 -10
- package/dist/commands/model.js.map +1 -1
- package/dist/commands/provider.d.ts +1 -2
- package/dist/commands/provider.d.ts.map +1 -1
- package/dist/commands/provider.js +2 -10
- package/dist/commands/provider.js.map +1 -1
- package/dist/commands/resume.d.ts +8 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +11 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/settings.d.ts +1 -2
- package/dist/commands/settings.d.ts.map +1 -1
- package/dist/commands/settings.js +2 -10
- package/dist/commands/settings.js.map +1 -1
- package/dist/commands/status.d.ts +1 -2
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -10
- package/dist/commands/status.js.map +1 -1
- package/dist/components/assistant-message.d.ts.map +1 -1
- package/dist/components/assistant-message.js +2 -27
- package/dist/components/assistant-message.js.map +1 -1
- package/dist/components/provider-selector.d.ts.map +1 -1
- package/dist/components/provider-selector.js +4 -3
- package/dist/components/provider-selector.js.map +1 -1
- package/dist/components/session-selector.d.ts +12 -0
- package/dist/components/session-selector.d.ts.map +1 -0
- package/dist/components/session-selector.js +108 -0
- package/dist/components/session-selector.js.map +1 -0
- package/dist/components/tool-confirmation.d.ts.map +1 -1
- package/dist/components/tool-confirmation.js +9 -6
- package/dist/components/tool-confirmation.js.map +1 -1
- package/dist/components/ui/styled-title.js +2 -2
- package/dist/components/ui/styled-title.js.map +1 -1
- package/dist/components/user-input.d.ts +3 -1
- package/dist/components/user-input.d.ts.map +1 -1
- package/dist/components/user-input.js +35 -23
- package/dist/components/user-input.js.map +1 -1
- package/dist/components/user-message.d.ts.map +1 -1
- package/dist/components/user-message.js +1 -23
- package/dist/components/user-message.js.map +1 -1
- package/dist/components/vscode-extension-prompt.d.ts +6 -1
- package/dist/components/vscode-extension-prompt.d.ts.map +1 -1
- package/dist/components/vscode-extension-prompt.js +80 -36
- package/dist/components/vscode-extension-prompt.js.map +1 -1
- package/dist/config/copilot-credentials.d.ts +27 -0
- package/dist/config/copilot-credentials.d.ts.map +1 -0
- package/dist/config/copilot-credentials.js +81 -0
- package/dist/config/copilot-credentials.js.map +1 -0
- package/dist/config/index.d.ts +0 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +63 -27
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-config-loader.d.ts +2 -3
- package/dist/config/mcp-config-loader.d.ts.map +1 -1
- package/dist/config/mcp-config-loader.js +136 -181
- package/dist/config/mcp-config-loader.js.map +1 -1
- package/dist/config/nanocoder-tools-config.js +2 -2
- package/dist/config/nanocoder-tools-config.js.map +1 -1
- package/dist/config/themes.d.ts.map +1 -1
- package/dist/config/themes.js +9 -766
- package/dist/config/themes.js.map +1 -1
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +0 -19
- package/dist/config/validation.js.map +1 -1
- package/dist/custom-commands/parser.d.ts.map +1 -1
- package/dist/custom-commands/parser.js +0 -9
- package/dist/custom-commands/parser.js.map +1 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts +5 -0
- package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts.map +1 -1
- package/dist/hooks/chat-handler/conversation/conversation-loop.js +78 -97
- package/dist/hooks/chat-handler/conversation/conversation-loop.js.map +1 -1
- package/dist/hooks/chat-handler/conversation/tool-executor.d.ts +7 -2
- package/dist/hooks/chat-handler/conversation/tool-executor.d.ts.map +1 -1
- package/dist/hooks/chat-handler/conversation/tool-executor.js +109 -41
- package/dist/hooks/chat-handler/conversation/tool-executor.js.map +1 -1
- package/dist/hooks/chat-handler/types.d.ts +3 -0
- 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 +7 -1
- package/dist/hooks/chat-handler/useChatHandler.js.map +1 -1
- package/dist/hooks/useAppHandlers.d.ts +8 -1
- package/dist/hooks/useAppHandlers.d.ts.map +1 -1
- package/dist/hooks/useAppHandlers.js +119 -13
- package/dist/hooks/useAppHandlers.js.map +1 -1
- package/dist/hooks/useAppInitialization.d.ts +5 -3
- package/dist/hooks/useAppInitialization.d.ts.map +1 -1
- package/dist/hooks/useAppInitialization.js +51 -30
- package/dist/hooks/useAppInitialization.js.map +1 -1
- package/dist/hooks/useAppState.d.ts +15 -10
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +37 -28
- package/dist/hooks/useAppState.js.map +1 -1
- package/dist/hooks/useModeHandlers.d.ts +8 -14
- package/dist/hooks/useModeHandlers.d.ts.map +1 -1
- package/dist/hooks/useModeHandlers.js +31 -101
- package/dist/hooks/useModeHandlers.js.map +1 -1
- package/dist/hooks/useNonInteractiveMode.d.ts +7 -0
- package/dist/hooks/useNonInteractiveMode.d.ts.map +1 -1
- package/dist/hooks/useNonInteractiveMode.js +39 -2
- package/dist/hooks/useNonInteractiveMode.js.map +1 -1
- package/dist/hooks/useSessionAutosave.d.ts +16 -0
- package/dist/hooks/useSessionAutosave.d.ts.map +1 -0
- package/dist/hooks/useSessionAutosave.js +133 -0
- package/dist/hooks/useSessionAutosave.js.map +1 -0
- package/dist/hooks/useToolHandler.d.ts +2 -1
- package/dist/hooks/useToolHandler.d.ts.map +1 -1
- package/dist/hooks/useToolHandler.js +9 -3
- package/dist/hooks/useToolHandler.js.map +1 -1
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +3 -2
- package/dist/mcp/mcp-client.js.map +1 -1
- package/dist/mcp/transport-factory.d.ts.map +1 -1
- package/dist/mcp/transport-factory.js +4 -36
- package/dist/mcp/transport-factory.js.map +1 -1
- package/dist/models/models-dev-client.d.ts.map +1 -1
- package/dist/models/models-dev-client.js +21 -14
- package/dist/models/models-dev-client.js.map +1 -1
- package/dist/session/session-manager.d.ts +57 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +361 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/test-utils/render-with-theme.d.ts.map +1 -1
- package/dist/test-utils/render-with-theme.js +2 -1
- package/dist/test-utils/render-with-theme.js.map +1 -1
- package/dist/tool-calling/tool-parser.d.ts +3 -2
- package/dist/tool-calling/tool-parser.d.ts.map +1 -1
- package/dist/tool-calling/tool-parser.js +6 -27
- package/dist/tool-calling/tool-parser.js.map +1 -1
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +5 -0
- package/dist/tools/execute-bash.js.map +1 -1
- package/dist/tools/fetch-url.d.ts.map +1 -1
- package/dist/tools/fetch-url.js +11 -2
- package/dist/tools/fetch-url.js.map +1 -1
- package/dist/tools/file-ops/copy-file.d.ts.map +1 -1
- package/dist/tools/file-ops/copy-file.js +6 -36
- package/dist/tools/file-ops/copy-file.js.map +1 -1
- package/dist/tools/file-ops/create-directory.d.ts.map +1 -1
- package/dist/tools/file-ops/create-directory.js +2 -19
- package/dist/tools/file-ops/create-directory.js.map +1 -1
- package/dist/tools/file-ops/delete-file.d.ts.map +1 -1
- package/dist/tools/file-ops/delete-file.js +6 -20
- package/dist/tools/file-ops/delete-file.js.map +1 -1
- package/dist/tools/file-ops/move-file.d.ts.map +1 -1
- package/dist/tools/file-ops/move-file.js +6 -36
- package/dist/tools/file-ops/move-file.js.map +1 -1
- package/dist/tools/file-ops/string-replace-preview.d.ts +10 -0
- package/dist/tools/file-ops/string-replace-preview.d.ts.map +1 -0
- package/dist/tools/file-ops/string-replace-preview.js +171 -0
- package/dist/tools/file-ops/string-replace-preview.js.map +1 -0
- package/dist/tools/file-ops/string-replace.d.ts.map +1 -1
- package/dist/tools/file-ops/string-replace.js +9 -292
- package/dist/tools/file-ops/string-replace.js.map +1 -1
- package/dist/tools/file-ops/write-file.d.ts.map +1 -1
- package/dist/tools/file-ops/write-file.js +7 -66
- package/dist/tools/file-ops/write-file.js.map +1 -1
- package/dist/tools/find-files.d.ts.map +1 -1
- package/dist/tools/find-files.js +1 -0
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/git/git-diff.d.ts.map +1 -1
- package/dist/tools/git/git-diff.js +1 -0
- package/dist/tools/git/git-diff.js.map +1 -1
- package/dist/tools/git/git-log.d.ts.map +1 -1
- package/dist/tools/git/git-log.js +1 -0
- package/dist/tools/git/git-log.js.map +1 -1
- package/dist/tools/git/git-status.d.ts.map +1 -1
- package/dist/tools/git/git-status.js +1 -0
- package/dist/tools/git/git-status.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-directory.d.ts.map +1 -1
- package/dist/tools/list-directory.js +2 -1
- package/dist/tools/list-directory.js.map +1 -1
- package/dist/tools/lsp-get-diagnostics.d.ts.map +1 -1
- package/dist/tools/lsp-get-diagnostics.js +1 -5
- package/dist/tools/lsp-get-diagnostics.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +1 -0
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/search-file-contents.d.ts.map +1 -1
- package/dist/tools/search-file-contents.js +1 -0
- package/dist/tools/search-file-contents.js.map +1 -1
- package/dist/tools/tasks/list-tasks.d.ts.map +1 -1
- package/dist/tools/tasks/list-tasks.js +1 -0
- package/dist/tools/tasks/list-tasks.js.map +1 -1
- package/dist/tools/tool-manager.d.ts +10 -0
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +16 -2
- package/dist/tools/tool-manager.js.map +1 -1
- package/dist/tools/tool-registry.d.ts +9 -1
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +17 -1
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +1 -0
- package/dist/tools/web-search.js.map +1 -1
- package/dist/types/app.d.ts +3 -0
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/commands.d.ts +1 -2
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/types/config.d.ts +11 -15
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/core.d.ts +13 -3
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/core.js.map +1 -1
- package/dist/types/markdown-parser.d.ts +2 -10
- package/dist/types/markdown-parser.d.ts.map +1 -1
- package/dist/types/mcp.d.ts +2 -28
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/ui.d.ts +1 -1
- package/dist/types/ui.d.ts.map +1 -1
- package/dist/utils/ansi-truncate.d.ts +6 -0
- package/dist/utils/ansi-truncate.d.ts.map +1 -0
- package/dist/utils/ansi-truncate.js +39 -0
- package/dist/utils/ansi-truncate.js.map +1 -0
- package/dist/utils/installation-detector.d.ts +6 -0
- package/dist/utils/installation-detector.d.ts.map +1 -1
- package/dist/utils/installation-detector.js +33 -19
- package/dist/utils/installation-detector.js.map +1 -1
- package/dist/utils/logging/health-monitor/checks/memory-check.d.ts.map +1 -1
- package/dist/utils/logging/health-monitor/checks/memory-check.js +2 -1
- package/dist/utils/logging/health-monitor/checks/memory-check.js.map +1 -1
- package/dist/utils/logging/health-monitor/core/health-monitor.d.ts.map +1 -1
- package/dist/utils/logging/health-monitor/core/health-monitor.js +3 -2
- package/dist/utils/logging/health-monitor/core/health-monitor.js.map +1 -1
- package/dist/utils/logging/performance.d.ts.map +1 -1
- package/dist/utils/logging/performance.js +21 -17
- package/dist/utils/logging/performance.js.map +1 -1
- package/dist/utils/logging/pino-logger.d.ts.map +1 -1
- package/dist/utils/logging/pino-logger.js +7 -8
- package/dist/utils/logging/pino-logger.js.map +1 -1
- package/dist/utils/logging/redaction.d.ts.map +1 -1
- package/dist/utils/logging/redaction.js +2 -0
- package/dist/utils/logging/redaction.js.map +1 -1
- package/dist/utils/logging/request-tracker.d.ts.map +1 -1
- package/dist/utils/logging/request-tracker.js +6 -5
- package/dist/utils/logging/request-tracker.js.map +1 -1
- package/dist/utils/logging/safe-process.d.ts +16 -0
- package/dist/utils/logging/safe-process.d.ts.map +1 -0
- package/dist/utils/logging/safe-process.js +37 -0
- package/dist/utils/logging/safe-process.js.map +1 -0
- package/dist/utils/logging/types.d.ts +0 -3
- package/dist/utils/logging/types.d.ts.map +1 -1
- package/dist/utils/message-builder.d.ts +0 -5
- package/dist/utils/message-builder.d.ts.map +1 -1
- package/dist/utils/message-builder.js +0 -8
- package/dist/utils/message-builder.js.map +1 -1
- package/dist/utils/path-validation.d.ts.map +1 -1
- package/dist/utils/path-validation.js +3 -1
- package/dist/utils/path-validation.js.map +1 -1
- package/dist/utils/path-validators.d.ts +16 -0
- package/dist/utils/path-validators.d.ts.map +1 -0
- package/dist/utils/path-validators.js +55 -0
- package/dist/utils/path-validators.js.map +1 -0
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +2 -17
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/text-wrapping.d.ts +8 -0
- package/dist/utils/text-wrapping.d.ts.map +1 -0
- package/dist/utils/text-wrapping.js +29 -0
- package/dist/utils/text-wrapping.js.map +1 -0
- package/dist/utils/tool-approval.d.ts +6 -0
- package/dist/utils/tool-approval.d.ts.map +1 -0
- package/dist/utils/tool-approval.js +15 -0
- package/dist/utils/tool-approval.js.map +1 -0
- package/dist/utils/tool-result-display.d.ts +15 -1
- package/dist/utils/tool-result-display.d.ts.map +1 -1
- package/dist/utils/tool-result-display.js +93 -3
- package/dist/utils/tool-result-display.js.map +1 -1
- package/dist/vscode/extension-installer.d.ts +34 -7
- package/dist/vscode/extension-installer.d.ts.map +1 -1
- package/dist/vscode/extension-installer.js +151 -64
- package/dist/vscode/extension-installer.js.map +1 -1
- package/dist/vscode/index.d.ts +1 -1
- package/dist/vscode/index.d.ts.map +1 -1
- package/dist/vscode/index.js +1 -1
- package/dist/vscode/index.js.map +1 -1
- package/dist/wizards/mcp-wizard.d.ts.map +1 -1
- package/dist/wizards/mcp-wizard.js +2 -1
- package/dist/wizards/mcp-wizard.js.map +1 -1
- package/dist/wizards/provider-wizard.d.ts.map +1 -1
- package/dist/wizards/provider-wizard.js +4 -2
- package/dist/wizards/provider-wizard.js.map +1 -1
- package/dist/wizards/steps/location-step.d.ts.map +1 -1
- package/dist/wizards/steps/location-step.js +2 -1
- package/dist/wizards/steps/location-step.js.map +1 -1
- package/dist/wizards/steps/mcp-step.d.ts.map +1 -1
- package/dist/wizards/steps/mcp-step.js +2 -1
- package/dist/wizards/steps/mcp-step.js.map +1 -1
- package/dist/wizards/steps/provider-step.d.ts.map +1 -1
- package/dist/wizards/steps/provider-step.js +4 -1
- package/dist/wizards/steps/provider-step.js.map +1 -1
- package/dist/wizards/steps/summary-step.d.ts.map +1 -1
- package/dist/wizards/steps/summary-step.js +2 -1
- package/dist/wizards/steps/summary-step.js.map +1 -1
- package/dist/wizards/templates/mcp-templates.d.ts +0 -8
- package/dist/wizards/templates/mcp-templates.d.ts.map +1 -1
- package/dist/wizards/templates/mcp-templates.js.map +1 -1
- package/dist/wizards/templates/provider-templates.d.ts.map +1 -1
- package/dist/wizards/templates/provider-templates.js +59 -0
- package/dist/wizards/templates/provider-templates.js.map +1 -1
- package/dist/wizards/validation.d.ts.map +1 -1
- package/dist/wizards/validation.js +0 -1
- package/dist/wizards/validation.js.map +1 -1
- package/package.json +20 -12
- package/source/config/themes.json +787 -0
- package/dist/ai-sdk-client/chat/tool-processor.d.ts +0 -10
- package/dist/ai-sdk-client/chat/tool-processor.d.ts.map +0 -1
- package/dist/ai-sdk-client/chat/tool-processor.js +0 -58
- package/dist/ai-sdk-client/chat/tool-processor.js.map +0 -1
- package/dist/tool-calling/json-parser.d.ts +0 -28
- package/dist/tool-calling/json-parser.d.ts.map +0 -1
- package/dist/tool-calling/json-parser.js +0 -219
- package/dist/tool-calling/json-parser.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-handler.js","sourceRoot":"","sources":["../../../../source/app/utils/handlers/session-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Copilot subscription auth: device OAuth flow and token refresh.
|
|
3
|
+
* Uses the same approach as opencode-copilot-auth for compatibility.
|
|
4
|
+
* @see https://github.com/anomalyco/opencode-copilot-auth
|
|
5
|
+
*
|
|
6
|
+
* CLIENT_ID: VS Code Copilot OAuth client (Iv1.b507a08c87ecfe98). External
|
|
7
|
+
* dependency; changing it may break device flow compatibility.
|
|
8
|
+
*/
|
|
9
|
+
/** Headers required by Copilot API; export for reuse in provider-factory. */
|
|
10
|
+
export declare const COPILOT_HEADERS: Record<string, string>;
|
|
11
|
+
export declare function getCopilotUrls(domain: string): {
|
|
12
|
+
deviceCodeUrl: string;
|
|
13
|
+
accessTokenUrl: string;
|
|
14
|
+
copilotTokenUrl: string;
|
|
15
|
+
};
|
|
16
|
+
export interface DeviceFlowResult {
|
|
17
|
+
verificationUri: string;
|
|
18
|
+
userCode: string;
|
|
19
|
+
deviceCode: string;
|
|
20
|
+
interval: number;
|
|
21
|
+
}
|
|
22
|
+
export interface CopilotTokenResult {
|
|
23
|
+
token: string;
|
|
24
|
+
expiresAt: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Clear the in-memory Copilot token cache so the next request fetches a new token.
|
|
28
|
+
* Use after credential change or logout so credentials can be invalidated without waiting for expiry.
|
|
29
|
+
*/
|
|
30
|
+
export declare function clearCopilotTokenCache(): void;
|
|
31
|
+
export declare function getCopilotAccessToken(githubOAuthToken: string, domain?: string, fetchFn?: typeof fetch): Promise<CopilotTokenResult>;
|
|
32
|
+
export declare function getCopilotBaseUrl(domain: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Run the full Copilot device-flow login: start flow, show code via callback, poll for token, save credential.
|
|
35
|
+
* Shared by CLI (cli.tsx) and in-chat UI (copilot-login.tsx) so the flow logic lives in one place.
|
|
36
|
+
*/
|
|
37
|
+
export declare function runCopilotLoginFlow(providerName: string, options: {
|
|
38
|
+
onShowCode: (verificationUri: string, userCode: string) => void;
|
|
39
|
+
onPollingStart?: () => void;
|
|
40
|
+
delayBeforePollMs?: number;
|
|
41
|
+
domain?: string;
|
|
42
|
+
fetchFn?: typeof fetch;
|
|
43
|
+
}): Promise<void>;
|
|
44
|
+
//# sourceMappingURL=github-copilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-copilot.d.ts","sourceRoot":"","sources":["../../source/auth/github-copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKlD,CAAC;AAMF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACxB,CAUA;AAED,MAAM,WAAW,gBAAgB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAkHD,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CAClB;AAcD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,wBAAsB,qBAAqB,CAC1C,gBAAgB,EAAE,MAAM,EACxB,MAAM,GAAE,MAAmB,EAC3B,OAAO,GAAE,OAAO,KAAa,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA+B7B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACxC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IACR,UAAU,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACvB,GACC,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Copilot subscription auth: device OAuth flow and token refresh.
|
|
3
|
+
* Uses the same approach as opencode-copilot-auth for compatibility.
|
|
4
|
+
* @see https://github.com/anomalyco/opencode-copilot-auth
|
|
5
|
+
*
|
|
6
|
+
* CLIENT_ID: VS Code Copilot OAuth client (Iv1.b507a08c87ecfe98). External
|
|
7
|
+
* dependency; changing it may break device flow compatibility.
|
|
8
|
+
*/
|
|
9
|
+
const GITHUB_COM = 'github.com';
|
|
10
|
+
const CLIENT_ID = 'Iv1.b507a08c87ecfe98';
|
|
11
|
+
/** Headers required by Copilot API; export for reuse in provider-factory. */
|
|
12
|
+
export const COPILOT_HEADERS = {
|
|
13
|
+
'User-Agent': 'GitHubCopilotChat/0.35.0',
|
|
14
|
+
'Editor-Version': 'vscode/1.107.0',
|
|
15
|
+
'Editor-Plugin-Version': 'copilot-chat/0.35.0',
|
|
16
|
+
'Copilot-Integration-Id': 'vscode-chat',
|
|
17
|
+
};
|
|
18
|
+
function normalizeDomain(url) {
|
|
19
|
+
return url.replace(/^https?:\/\//, '').replace(/\/$/, '');
|
|
20
|
+
}
|
|
21
|
+
export function getCopilotUrls(domain) {
|
|
22
|
+
const base = `https://${normalizeDomain(domain)}`;
|
|
23
|
+
return {
|
|
24
|
+
deviceCodeUrl: `${base}/login/device/code`,
|
|
25
|
+
accessTokenUrl: `${base}/login/oauth/access_token`,
|
|
26
|
+
copilotTokenUrl: domain === GITHUB_COM
|
|
27
|
+
? 'https://api.github.com/copilot_internal/v2/token'
|
|
28
|
+
: `https://api.${normalizeDomain(domain)}/copilot_internal/v2/token`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Start GitHub device OAuth flow. User must visit verificationUri and enter userCode.
|
|
33
|
+
* @internal Used by runCopilotLoginFlow.
|
|
34
|
+
*/
|
|
35
|
+
async function startDeviceFlow(domain = GITHUB_COM, fetchFn = fetch) {
|
|
36
|
+
const urls = getCopilotUrls(domain);
|
|
37
|
+
const res = await fetchFn(urls.deviceCodeUrl, {
|
|
38
|
+
method: 'POST',
|
|
39
|
+
headers: {
|
|
40
|
+
Accept: 'application/json',
|
|
41
|
+
'Content-Type': 'application/json',
|
|
42
|
+
'User-Agent': 'GitHubCopilotChat/0.35.0',
|
|
43
|
+
},
|
|
44
|
+
body: JSON.stringify({
|
|
45
|
+
client_id: CLIENT_ID,
|
|
46
|
+
scope: 'read:user',
|
|
47
|
+
}),
|
|
48
|
+
signal: AbortSignal.timeout(30_000),
|
|
49
|
+
});
|
|
50
|
+
if (!res.ok) {
|
|
51
|
+
const body = await res.text();
|
|
52
|
+
throw new Error(`Device code request failed (POST ${urls.deviceCodeUrl}): HTTP ${res.status} ${res.statusText}\nResponse: ${body}`);
|
|
53
|
+
}
|
|
54
|
+
const data = (await res.json());
|
|
55
|
+
return {
|
|
56
|
+
deviceCode: data.device_code,
|
|
57
|
+
userCode: data.user_code,
|
|
58
|
+
verificationUri: data.verification_uri,
|
|
59
|
+
interval: typeof data.interval === 'number' ? data.interval : 5,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Poll until user completes device flow; returns the GitHub OAuth access token
|
|
64
|
+
* (the `access_token` from the response). This token is stored as the credential
|
|
65
|
+
* and used to obtain short-lived Copilot API tokens via getCopilotAccessToken.
|
|
66
|
+
* @internal Used by runCopilotLoginFlow.
|
|
67
|
+
*/
|
|
68
|
+
const POLL_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes
|
|
69
|
+
async function pollForOAuthToken(deviceCode, intervalSeconds, domain = GITHUB_COM, fetchFn = fetch) {
|
|
70
|
+
const urls = getCopilotUrls(domain);
|
|
71
|
+
const intervalMs = Math.max(intervalSeconds * 1000, 1000);
|
|
72
|
+
const deadline = Date.now() + POLL_TIMEOUT_MS;
|
|
73
|
+
// eslint-disable-next-line no-constant-condition
|
|
74
|
+
while (true) {
|
|
75
|
+
if (Date.now() > deadline) {
|
|
76
|
+
throw new Error('Device code flow timed out. Please run login again and complete the flow within 15 minutes.');
|
|
77
|
+
}
|
|
78
|
+
const res = await fetchFn(urls.accessTokenUrl, {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
headers: {
|
|
81
|
+
Accept: 'application/json',
|
|
82
|
+
'Content-Type': 'application/json',
|
|
83
|
+
'User-Agent': 'GitHubCopilotChat/0.35.0',
|
|
84
|
+
},
|
|
85
|
+
body: JSON.stringify({
|
|
86
|
+
client_id: CLIENT_ID,
|
|
87
|
+
device_code: deviceCode,
|
|
88
|
+
grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
|
|
89
|
+
}),
|
|
90
|
+
});
|
|
91
|
+
if (!res.ok) {
|
|
92
|
+
const text = await res.text();
|
|
93
|
+
throw new Error(`Token exchange failed: ${res.status} ${text}`);
|
|
94
|
+
}
|
|
95
|
+
const data = (await res.json());
|
|
96
|
+
if (data.access_token) {
|
|
97
|
+
return data.access_token;
|
|
98
|
+
}
|
|
99
|
+
if (data.error === 'authorization_pending') {
|
|
100
|
+
await new Promise(r => setTimeout(r, intervalMs));
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (data.error === 'expired_token') {
|
|
104
|
+
throw new Error('Device code expired. Please run login again.');
|
|
105
|
+
}
|
|
106
|
+
if (data.error) {
|
|
107
|
+
throw new Error(`Authorization failed: ${data.error}`);
|
|
108
|
+
}
|
|
109
|
+
await new Promise(r => setTimeout(r, intervalMs));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
let cachedToken = null;
|
|
113
|
+
/**
|
|
114
|
+
* Get a short-lived access token for the Copilot API using the stored GitHub OAuth
|
|
115
|
+
* token (from device flow). Caches the result until close to expiry (5 min buffer).
|
|
116
|
+
* Cache key uses full token so different tokens never share an entry; key is only
|
|
117
|
+
* used in-process for lookup, not stored or logged.
|
|
118
|
+
*/
|
|
119
|
+
function tokenCacheKey(githubOAuthToken, domain) {
|
|
120
|
+
return `${domain}:${githubOAuthToken}`;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Clear the in-memory Copilot token cache so the next request fetches a new token.
|
|
124
|
+
* Use after credential change or logout so credentials can be invalidated without waiting for expiry.
|
|
125
|
+
*/
|
|
126
|
+
export function clearCopilotTokenCache() {
|
|
127
|
+
cachedToken = null;
|
|
128
|
+
}
|
|
129
|
+
export async function getCopilotAccessToken(githubOAuthToken, domain = GITHUB_COM, fetchFn = fetch) {
|
|
130
|
+
const cacheKey = tokenCacheKey(githubOAuthToken, domain);
|
|
131
|
+
const now = Date.now();
|
|
132
|
+
if (cachedToken?.key === cacheKey && cachedToken.result.expiresAt > now) {
|
|
133
|
+
return cachedToken.result;
|
|
134
|
+
}
|
|
135
|
+
const urls = getCopilotUrls(domain);
|
|
136
|
+
const res = await fetchFn(urls.copilotTokenUrl, {
|
|
137
|
+
headers: {
|
|
138
|
+
Accept: 'application/json',
|
|
139
|
+
Authorization: `Bearer ${githubOAuthToken}`,
|
|
140
|
+
...COPILOT_HEADERS,
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
if (!res.ok) {
|
|
144
|
+
const text = await res.text();
|
|
145
|
+
throw new Error(`Copilot token refresh failed: ${res.status} ${text}`);
|
|
146
|
+
}
|
|
147
|
+
const data = (await res.json());
|
|
148
|
+
if (!data.token || typeof data.token !== 'string') {
|
|
149
|
+
throw new Error('Copilot token endpoint returned no token. Your Copilot subscription may not include chat access.');
|
|
150
|
+
}
|
|
151
|
+
const expiresAt = (data.expires_at ?? 0) * 1000 - 5 * 60 * 1000; // 5 min buffer
|
|
152
|
+
const result = { token: data.token, expiresAt };
|
|
153
|
+
cachedToken = { key: cacheKey, result };
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
export function getCopilotBaseUrl(domain) {
|
|
157
|
+
if (domain === GITHUB_COM) {
|
|
158
|
+
return 'https://api.githubcopilot.com';
|
|
159
|
+
}
|
|
160
|
+
return `https://copilot-api.${normalizeDomain(domain)}`;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Run the full Copilot device-flow login: start flow, show code via callback, poll for token, save credential.
|
|
164
|
+
* Shared by CLI (cli.tsx) and in-chat UI (copilot-login.tsx) so the flow logic lives in one place.
|
|
165
|
+
*/
|
|
166
|
+
export async function runCopilotLoginFlow(providerName, options) {
|
|
167
|
+
const { onShowCode, onPollingStart, delayBeforePollMs = 0, domain = GITHUB_COM, fetchFn = fetch, } = options;
|
|
168
|
+
const { saveCopilotCredential } = await import('../config/copilot-credentials.js');
|
|
169
|
+
const flow = await startDeviceFlow(domain, fetchFn);
|
|
170
|
+
onShowCode(flow.verificationUri, flow.userCode);
|
|
171
|
+
if (delayBeforePollMs > 0) {
|
|
172
|
+
await new Promise(r => setTimeout(r, delayBeforePollMs));
|
|
173
|
+
}
|
|
174
|
+
onPollingStart?.();
|
|
175
|
+
const oauthToken = await pollForOAuthToken(flow.deviceCode, flow.interval, domain, fetchFn);
|
|
176
|
+
saveCopilotCredential(providerName, oauthToken);
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=github-copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-copilot.js","sourceRoot":"","sources":["../../source/auth/github-copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEzC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAA2B;IACtD,YAAY,EAAE,0BAA0B;IACxC,gBAAgB,EAAE,gBAAgB;IAClC,uBAAuB,EAAE,qBAAqB;IAC9C,wBAAwB,EAAE,aAAa;CACvC,CAAC;AAEF,SAAS,eAAe,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAK5C,MAAM,IAAI,GAAG,WAAW,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;IAClD,OAAO;QACN,aAAa,EAAE,GAAG,IAAI,oBAAoB;QAC1C,cAAc,EAAE,GAAG,IAAI,2BAA2B;QAClD,eAAe,EACd,MAAM,KAAK,UAAU;YACpB,CAAC,CAAC,kDAAkD;YACpD,CAAC,CAAC,eAAe,eAAe,CAAC,MAAM,CAAC,4BAA4B;KACtE,CAAC;AACH,CAAC;AASD;;;GAGG;AACH,KAAK,UAAU,eAAe,CAC7B,SAAiB,UAAU,EAC3B,UAAwB,KAAK;IAE7B,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE;QAC7C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACR,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,0BAA0B;SACxC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACpB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,WAAW;SAClB,CAAC;QACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACnC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACd,oCAAoC,IAAI,CAAC,aAAa,WAAW,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,eAAe,IAAI,EAAE,CAClH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAK7B,CAAC;IACF,OAAO;QACN,UAAU,EAAE,IAAI,CAAC,WAAW;QAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,eAAe,EAAE,IAAI,CAAC,gBAAgB;QACtC,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC/D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAErD,KAAK,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,eAAuB,EACvB,SAAiB,UAAU,EAC3B,UAAwB,KAAK;IAE7B,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC;IAE9C,iDAAiD;IACjD,OAAO,IAAI,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACd,6FAA6F,CAC7F,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACR,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,0BAA0B;aACxC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,UAAU;gBACvB,UAAU,EAAE,8CAA8C;aAC1D,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAG7B,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,YAAY,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,uBAAuB,EAAE,CAAC;YAC5C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YAClD,SAAS;QACV,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACnD,CAAC;AACF,CAAC;AAOD,IAAI,WAAW,GAAqD,IAAI,CAAC;AAEzE;;;;;GAKG;AACH,SAAS,aAAa,CAAC,gBAAwB,EAAE,MAAc;IAC9D,OAAO,GAAG,MAAM,IAAI,gBAAgB,EAAE,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACrC,WAAW,GAAG,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,gBAAwB,EACxB,SAAiB,UAAU,EAC3B,UAAwB,KAAK;IAE7B,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,WAAW,EAAE,GAAG,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;QACzE,OAAO,WAAW,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE;QAC/C,OAAO,EAAE;YACR,MAAM,EAAE,kBAAkB;YAC1B,aAAa,EAAE,UAAU,gBAAgB,EAAE;YAC3C,GAAG,eAAe;SAClB;KACD,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0C,CAAC;IACzE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACd,kGAAkG,CAClG,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,eAAe;IAChF,MAAM,MAAM,GAAuB,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAC,CAAC;IAClE,WAAW,GAAG,EAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAC,CAAC;IACtC,OAAO,MAAM,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC/C,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,+BAA+B,CAAC;IACxC,CAAC;IACD,OAAO,uBAAuB,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,YAAoB,EACpB,OAMC;IAED,MAAM,EACL,UAAU,EACV,cAAc,EACd,iBAAiB,GAAG,CAAC,EACrB,MAAM,GAAG,UAAU,EACnB,OAAO,GAAG,KAAK,GACf,GAAG,OAAO,CAAC;IACZ,MAAM,EAAC,qBAAqB,EAAC,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,cAAc,EAAE,EAAE,CAAC;IACnB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CACzC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,EACb,MAAM,EACN,OAAO,CACP,CAAC;IACF,qBAAqB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -15,14 +15,24 @@ if (args.includes('--version') || args.includes('-v')) {
|
|
|
15
15
|
// Handle --help/-h flag
|
|
16
16
|
if (args.includes('--help') || args.includes('-h')) {
|
|
17
17
|
console.log(`
|
|
18
|
-
Usage: nanocoder [options]
|
|
18
|
+
Usage: nanocoder [options] [command]
|
|
19
|
+
|
|
20
|
+
Commands:
|
|
21
|
+
copilot login [provider-name] Log in to GitHub Copilot (device flow). Saves credentials for the "GitHub Copilot" provider.
|
|
19
22
|
|
|
20
23
|
Options:
|
|
21
24
|
-v, --version Show version number
|
|
22
25
|
-h, --help Show help
|
|
23
26
|
--vscode Run in VS Code mode
|
|
24
27
|
--vscode-port Specify VS Code port
|
|
28
|
+
--provider Specify AI provider (must be configured in agents.config.json)
|
|
29
|
+
--model Specify AI model (must be available for the provider)
|
|
25
30
|
run Run in non-interactive mode
|
|
31
|
+
|
|
32
|
+
Examples:
|
|
33
|
+
nanocoder --provider openrouter --model google/gemini-3.1-flash run "analyze src/app.ts"
|
|
34
|
+
nanocoder --provider ollama --model llama3.1
|
|
35
|
+
nanocoder run --provider openrouter "refactor database module"
|
|
26
36
|
`);
|
|
27
37
|
process.exit(0);
|
|
28
38
|
}
|
|
@@ -36,6 +46,18 @@ if (portArgIndex !== -1 && args[portArgIndex + 1]) {
|
|
|
36
46
|
vscodePort = port;
|
|
37
47
|
}
|
|
38
48
|
}
|
|
49
|
+
// Extract --provider if specified
|
|
50
|
+
let cliProvider;
|
|
51
|
+
const providerArgIndex = args.findIndex(arg => arg === '--provider');
|
|
52
|
+
if (providerArgIndex !== -1 && args[providerArgIndex + 1]) {
|
|
53
|
+
cliProvider = args[providerArgIndex + 1];
|
|
54
|
+
}
|
|
55
|
+
// Extract --model if specified
|
|
56
|
+
let cliModel;
|
|
57
|
+
const modelArgIndex = args.findIndex(arg => arg === '--model');
|
|
58
|
+
if (modelArgIndex !== -1 && args[modelArgIndex + 1]) {
|
|
59
|
+
cliModel = args[modelArgIndex + 1];
|
|
60
|
+
}
|
|
39
61
|
// Check for non-interactive mode (run command)
|
|
40
62
|
let nonInteractivePrompt;
|
|
41
63
|
const runCommandIndex = args.findIndex(arg => arg === 'run');
|
|
@@ -43,7 +65,6 @@ const afterRunArgs = runCommandIndex !== -1 ? args.slice(runCommandIndex + 1) :
|
|
|
43
65
|
if (runCommandIndex !== -1 && args[runCommandIndex + 1]) {
|
|
44
66
|
// Filter out known flags after 'run' when constructing the prompt
|
|
45
67
|
const promptArgs = [];
|
|
46
|
-
const _knownFlags = new Set(['--vscode', '--vscode-port']);
|
|
47
68
|
for (let i = 0; i < afterRunArgs.length; i++) {
|
|
48
69
|
const arg = afterRunArgs[i];
|
|
49
70
|
if (arg === '--vscode') {
|
|
@@ -53,6 +74,14 @@ if (runCommandIndex !== -1 && args[runCommandIndex + 1]) {
|
|
|
53
74
|
i++; // skip this flag and its value
|
|
54
75
|
continue;
|
|
55
76
|
}
|
|
77
|
+
else if (arg === '--provider') {
|
|
78
|
+
i++; // skip this flag and its value
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
else if (arg === '--model') {
|
|
82
|
+
i++; // skip this flag and its value
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
56
85
|
else {
|
|
57
86
|
promptArgs.push(arg);
|
|
58
87
|
}
|
|
@@ -60,5 +89,37 @@ if (runCommandIndex !== -1 && args[runCommandIndex + 1]) {
|
|
|
60
89
|
nonInteractivePrompt = promptArgs.join(' ');
|
|
61
90
|
}
|
|
62
91
|
const nonInteractiveMode = runCommandIndex !== -1;
|
|
63
|
-
|
|
92
|
+
// Handle copilot login from CLI (no App)
|
|
93
|
+
if (args[0] === 'copilot' && args[1] === 'login') {
|
|
94
|
+
const providerName = args[2]?.trim() || 'GitHub Copilot';
|
|
95
|
+
(async () => {
|
|
96
|
+
try {
|
|
97
|
+
const { runCopilotLoginFlow } = await import('./auth/github-copilot.js');
|
|
98
|
+
console.log('Starting GitHub Copilot login...');
|
|
99
|
+
await runCopilotLoginFlow(providerName, {
|
|
100
|
+
onShowCode(verificationUri, userCode) {
|
|
101
|
+
console.log('');
|
|
102
|
+
console.log(' 1. Open this URL in your browser:');
|
|
103
|
+
console.log('');
|
|
104
|
+
console.log(' ' + verificationUri);
|
|
105
|
+
console.log('');
|
|
106
|
+
console.log(' 2. Enter this code when prompted:');
|
|
107
|
+
console.log('');
|
|
108
|
+
console.log(' ' + userCode);
|
|
109
|
+
console.log('');
|
|
110
|
+
console.log('Waiting for you to complete login...');
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
console.log('\nLogged in. Credential saved for "' + providerName + '".');
|
|
114
|
+
process.exit(0);
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
console.error(err instanceof Error ? err.message : err);
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
})();
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
render(_jsx(App, { vscodeMode: vscodeMode, vscodePort: vscodePort, nonInteractivePrompt: nonInteractivePrompt, nonInteractiveMode: nonInteractiveMode, cliProvider: cliProvider, cliModel: cliModel }));
|
|
124
|
+
}
|
|
64
125
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../source/cli.tsx"],"names":[],"mappings":";;AACA,OAAO,EAAC,MAAM,EAAC,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAC,aAAa,EAAC,MAAM,QAAQ,CAAC;AACrC,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAC,OAAO,EAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE7C,sBAAsB;AACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,2BAA2B;AAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,wBAAwB;AACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../source/cli.tsx"],"names":[],"mappings":"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"}
|
package/dist/client-factory.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare class ConfigurationError extends Error {
|
|
|
5
5
|
isEmptyConfig: boolean;
|
|
6
6
|
constructor(message: string, configPath: string, cwdPath?: string | undefined, isEmptyConfig?: boolean);
|
|
7
7
|
}
|
|
8
|
-
export declare function createLLMClient(provider?: string): Promise<{
|
|
8
|
+
export declare function createLLMClient(provider?: string, model?: string): Promise<{
|
|
9
9
|
client: LLMClient;
|
|
10
10
|
actualProvider: string;
|
|
11
11
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../source/client-factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../source/client-factory.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAmB,SAAS,EAAC,MAAM,eAAe,CAAC;AAI/D,qBAAa,kBAAmB,SAAQ,KAAK;IAGpC,UAAU,EAAE,MAAM;IAClB,OAAO,CAAC,EAAE,MAAM;IAChB,aAAa,EAAE,OAAO;gBAH7B,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,aAAa,GAAE,OAAe;CAKtC;AAED,wBAAsB,eAAe,CACpC,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAC,CAAC,CAOtD"}
|
package/dist/client-factory.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { AISDKClient } from './ai-sdk-client/index.js';
|
|
4
|
+
import { getCopilotNoCredentialsMessage, loadCopilotCredential, } from './config/copilot-credentials.js';
|
|
4
5
|
import { getClosestConfigFile } from './config/index.js';
|
|
5
6
|
import { loadAllProviderConfigs } from './config/mcp-config-loader.js';
|
|
6
7
|
import { loadPreferences } from './config/preferences.js';
|
|
@@ -19,21 +20,21 @@ export class ConfigurationError extends Error {
|
|
|
19
20
|
this.name = 'ConfigurationError';
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
|
-
export async function createLLMClient(provider) {
|
|
23
|
+
export async function createLLMClient(provider, model) {
|
|
23
24
|
// Check if agents.config.json exists
|
|
24
25
|
const agentsJsonPath = getClosestConfigFile('agents.config.json');
|
|
25
26
|
const hasConfigFile = existsSync(agentsJsonPath);
|
|
26
27
|
// Use AI SDK - it handles both tool-calling and non-tool-calling models
|
|
27
|
-
return createAISDKClient(provider, hasConfigFile);
|
|
28
|
+
return createAISDKClient(provider, model, hasConfigFile);
|
|
28
29
|
}
|
|
29
|
-
async function createAISDKClient(requestedProvider, hasConfigFile = true) {
|
|
30
|
+
async function createAISDKClient(requestedProvider, requestedModel, hasConfigFile = true) {
|
|
30
31
|
// Load provider configs
|
|
31
32
|
const providers = loadProviderConfigs();
|
|
33
|
+
const configPath = getClosestConfigFile('agents.config.json');
|
|
34
|
+
const cwd = process.cwd();
|
|
35
|
+
const isInCwd = configPath.startsWith(cwd);
|
|
36
|
+
const cwdPath = !isInCwd ? join(cwd, 'agents.config.json') : undefined;
|
|
32
37
|
if (providers.length === 0) {
|
|
33
|
-
const configPath = getClosestConfigFile('agents.config.json');
|
|
34
|
-
const cwd = process.cwd();
|
|
35
|
-
const isInCwd = configPath.startsWith(cwd);
|
|
36
|
-
const cwdPath = !isInCwd ? join(cwd, 'agents.config.json') : undefined;
|
|
37
38
|
if (!hasConfigFile) {
|
|
38
39
|
throw new ConfigurationError('No agents.config.json found', configPath, cwdPath, false);
|
|
39
40
|
}
|
|
@@ -51,6 +52,24 @@ async function createAISDKClient(requestedProvider, hasConfigFile = true) {
|
|
|
51
52
|
const preferences = loadPreferences();
|
|
52
53
|
targetProvider = preferences.lastProvider || providers[0].name;
|
|
53
54
|
}
|
|
55
|
+
// Validate provider exists if specified
|
|
56
|
+
if (requestedProvider) {
|
|
57
|
+
const providerConfig = providers.find(p => p.name === requestedProvider);
|
|
58
|
+
if (!providerConfig) {
|
|
59
|
+
const availableProviders = providers.map(p => p.name).join(', ');
|
|
60
|
+
throw new ConfigurationError(`Provider '${requestedProvider}' not found in agents.config.json. Available providers: ${availableProviders}`, configPath, cwdPath, false);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Validate model exists in the target provider's model list if specified
|
|
64
|
+
if (requestedModel) {
|
|
65
|
+
const resolvedProviderConfig = providers.find(p => p.name === targetProvider) || providers[0];
|
|
66
|
+
if (resolvedProviderConfig &&
|
|
67
|
+
resolvedProviderConfig.models.length > 0 &&
|
|
68
|
+
!resolvedProviderConfig.models.includes(requestedModel)) {
|
|
69
|
+
const availableModels = resolvedProviderConfig.models.join(', ');
|
|
70
|
+
throw new ConfigurationError(`Model '${requestedModel}' not available for provider '${resolvedProviderConfig.name}'. Available models: ${availableModels}`, configPath, cwdPath, false);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
54
73
|
// Order providers: requested first, then others
|
|
55
74
|
const availableProviders = providers.map(p => p.name);
|
|
56
75
|
const providerOrder = [
|
|
@@ -67,6 +86,10 @@ async function createAISDKClient(requestedProvider, hasConfigFile = true) {
|
|
|
67
86
|
// Test provider connection
|
|
68
87
|
await testProviderConnection(providerConfig);
|
|
69
88
|
const client = await AISDKClient.create(providerConfig);
|
|
89
|
+
// Set model if specified
|
|
90
|
+
if (requestedModel) {
|
|
91
|
+
client.setModel(requestedModel);
|
|
92
|
+
}
|
|
70
93
|
return { client, actualProvider: providerType };
|
|
71
94
|
}
|
|
72
95
|
catch (error) {
|
|
@@ -132,7 +155,15 @@ async function testProviderConnection(providerConfig) {
|
|
|
132
155
|
// Other errors (like HTTP errors) mean the server is responding, so pass
|
|
133
156
|
}
|
|
134
157
|
}
|
|
135
|
-
//
|
|
158
|
+
// GitHub Copilot: require stored credential instead of apiKey
|
|
159
|
+
if (providerConfig.sdkProvider === 'github-copilot') {
|
|
160
|
+
const credential = loadCopilotCredential(providerConfig.name);
|
|
161
|
+
if (!credential?.oauthToken) {
|
|
162
|
+
throw new Error(getCopilotNoCredentialsMessage(providerConfig.name));
|
|
163
|
+
}
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
// Require API key for other hosted providers
|
|
136
167
|
if (!providerConfig.config.apiKey &&
|
|
137
168
|
!(providerConfig.config.baseURL && isLocalURL(providerConfig.config.baseURL))) {
|
|
138
169
|
throw new Error('API key required for hosted providers');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-factory.js","sourceRoot":"","sources":["../source/client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,oBAAoB,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,8BAA8B,EAAC,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAE7C,4EAA4E;AAC5E,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGpC;IACA;IACA;IAJR,YACC,OAAe,EACR,UAAkB,EAClB,OAAgB,EAChB,gBAAyB,KAAK;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAS;QAChB,kBAAa,GAAb,aAAa,CAAiB;QAGrC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IAClC,CAAC;CACD;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,QAAiB;
|
|
1
|
+
{"version":3,"file":"client-factory.js","sourceRoot":"","sources":["../source/client-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Command } from '../types/commands.js';
|
|
2
1
|
/**
|
|
3
2
|
* The /compact command compresses message history to reduce context usage.
|
|
4
3
|
*
|
|
@@ -6,10 +5,6 @@ import type { Command } from '../types/commands.js';
|
|
|
6
5
|
* because it requires access to app state (messages, setMessages, provider, model)
|
|
7
6
|
* that isn't available through the standard command handler interface.
|
|
8
7
|
*
|
|
9
|
-
* This command definition exists to:
|
|
10
|
-
* 1. Register the command in the command registry for /help and autocomplete
|
|
11
|
-
* 2. Provide the command description to users
|
|
12
|
-
*
|
|
13
8
|
* Available flags:
|
|
14
9
|
* --aggressive - Aggressive compression mode (removes more content)
|
|
15
10
|
* --conservative - Conservative compression mode (preserves more content)
|
|
@@ -20,5 +15,5 @@ import type { Command } from '../types/commands.js';
|
|
|
20
15
|
* --auto-off - Disable auto-compact for this session
|
|
21
16
|
* --threshold <n> - Set auto-compact threshold (50-95%) for this session
|
|
22
17
|
*/
|
|
23
|
-
export declare const compactCommand: Command
|
|
18
|
+
export declare const compactCommand: import("../types/index.js").Command<void | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>>;
|
|
24
19
|
//# sourceMappingURL=compact.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../source/commands/compact.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../source/commands/compact.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,+HAG1B,CAAC"}
|
package/dist/commands/compact.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createStubCommand } from '../commands/create-stub-command.js';
|
|
2
2
|
/**
|
|
3
3
|
* The /compact command compresses message history to reduce context usage.
|
|
4
4
|
*
|
|
@@ -6,10 +6,6 @@ import React from 'react';
|
|
|
6
6
|
* because it requires access to app state (messages, setMessages, provider, model)
|
|
7
7
|
* that isn't available through the standard command handler interface.
|
|
8
8
|
*
|
|
9
|
-
* This command definition exists to:
|
|
10
|
-
* 1. Register the command in the command registry for /help and autocomplete
|
|
11
|
-
* 2. Provide the command description to users
|
|
12
|
-
*
|
|
13
9
|
* Available flags:
|
|
14
10
|
* --aggressive - Aggressive compression mode (removes more content)
|
|
15
11
|
* --conservative - Conservative compression mode (preserves more content)
|
|
@@ -20,12 +16,5 @@ import React from 'react';
|
|
|
20
16
|
* --auto-off - Disable auto-compact for this session
|
|
21
17
|
* --threshold <n> - Set auto-compact threshold (50-95%) for this session
|
|
22
18
|
*/
|
|
23
|
-
export const compactCommand =
|
|
24
|
-
name: 'compact',
|
|
25
|
-
description: 'Compress message history to reduce context usage (use --aggressive, --conservative, --preview, --restore, --auto-on, --auto-off, --threshold <n>)',
|
|
26
|
-
handler: async (_args, _messages, _metadata) => {
|
|
27
|
-
// Handler returns empty fragment - actual logic in app-util.ts handleCompactCommand()
|
|
28
|
-
return Promise.resolve(React.createElement(React.Fragment));
|
|
29
|
-
},
|
|
30
|
-
};
|
|
19
|
+
export const compactCommand = createStubCommand('compact', 'Compress message history to reduce context usage (use --aggressive, --conservative, --preview, --restore, --auto-on, --auto-off, --threshold <n>)');
|
|
31
20
|
//# sourceMappingURL=compact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../source/commands/compact.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../source/commands/compact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAC9C,SAAS,EACT,mJAAmJ,CACnJ,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Command } from '../types/commands.js';
|
|
2
1
|
/**
|
|
3
2
|
* The /context-max command sets the maximum context length for the current session.
|
|
4
3
|
*
|
|
@@ -11,5 +10,5 @@ import type { Command } from '../types/commands.js';
|
|
|
11
10
|
* /context-max - Show current effective context limit
|
|
12
11
|
* /context-max --reset - Clear session override
|
|
13
12
|
*/
|
|
14
|
-
export declare const contextMaxCommand: Command
|
|
13
|
+
export declare const contextMaxCommand: import("../types/index.js").Command<void | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>>;
|
|
15
14
|
//# sourceMappingURL=context-max.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-max.d.ts","sourceRoot":"","sources":["../../source/commands/context-max.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-max.d.ts","sourceRoot":"","sources":["../../source/commands/context-max.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,+HAG7B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { createStubCommand } from '../commands/create-stub-command.js';
|
|
2
2
|
/**
|
|
3
3
|
* The /context-max command sets the maximum context length for the current session.
|
|
4
4
|
*
|
|
@@ -11,12 +11,5 @@ import React from 'react';
|
|
|
11
11
|
* /context-max - Show current effective context limit
|
|
12
12
|
* /context-max --reset - Clear session override
|
|
13
13
|
*/
|
|
14
|
-
export const contextMaxCommand =
|
|
15
|
-
name: 'context-max',
|
|
16
|
-
description: 'Set maximum context length for this session (e.g. /context-max 128k, --reset to clear)',
|
|
17
|
-
handler: async (_args, _messages, _metadata) => {
|
|
18
|
-
// Handler returns empty fragment - actual logic in app-util.ts handleContextMaxCommand()
|
|
19
|
-
return Promise.resolve(React.createElement(React.Fragment));
|
|
20
|
-
},
|
|
21
|
-
};
|
|
14
|
+
export const contextMaxCommand = createStubCommand('context-max', 'Set maximum context length for this session (e.g. /context-max 128k, --reset to clear)');
|
|
22
15
|
//# sourceMappingURL=context-max.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-max.js","sourceRoot":"","sources":["../../source/commands/context-max.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"context-max.js","sourceRoot":"","sources":["../../source/commands/context-max.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CACjD,aAAa,EACb,wFAAwF,CACxF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-login-command.d.ts","sourceRoot":"","sources":["../../source/commands/copilot-login-command.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAE3C,eAAO,MAAM,mBAAmB,EAAE,OAQjC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const copilotLoginCommand = {
|
|
2
|
+
name: 'copilot-login',
|
|
3
|
+
description: 'Log in to GitHub Copilot (device flow). Saves credentials for the "GitHub Copilot" provider.',
|
|
4
|
+
handler: async () => {
|
|
5
|
+
// Handled via setLiveComponent in app-util.ts for animated UI.
|
|
6
|
+
// This handler is kept for command registry listing / help text.
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=copilot-login-command.js.map
|