@qduc/term2 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +4 -24
- package/dist/agent.js.map +1 -1
- package/dist/agent.lite-mode.test.d.ts +2 -0
- package/dist/agent.lite-mode.test.d.ts.map +1 -0
- package/dist/agent.lite-mode.test.js +39 -0
- package/dist/agent.lite-mode.test.js.map +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +11 -32
- package/dist/app.js.map +1 -1
- package/dist/app.parseInput.test.js +4 -4
- package/dist/app.parseInput.test.js.map +1 -1
- package/dist/cli.js +44 -29
- package/dist/cli.js.map +1 -1
- package/dist/components/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/ApprovalPrompt.js +14 -11
- package/dist/components/ApprovalPrompt.js.map +1 -1
- package/dist/components/Banner.d.ts.map +1 -1
- package/dist/components/Banner.js +4 -12
- package/dist/components/Banner.js.map +1 -1
- package/dist/components/BottomArea.d.ts.map +1 -1
- package/dist/components/BottomArea.js +4 -7
- package/dist/components/BottomArea.js.map +1 -1
- package/dist/components/BottomArea.test.js +4 -6
- package/dist/components/BottomArea.test.js.map +1 -1
- package/dist/components/ChatMessage.d.ts.map +1 -1
- package/dist/components/ChatMessage.js.map +1 -1
- package/dist/components/CommandMessage.d.ts.map +1 -1
- package/dist/components/CommandMessage.js +19 -30
- package/dist/components/CommandMessage.js.map +1 -1
- package/dist/components/CommandMessage.test.js +2 -2
- package/dist/components/CommandMessage.test.js.map +1 -1
- package/dist/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/components/ErrorBoundary.js +3 -9
- package/dist/components/ErrorBoundary.js.map +1 -1
- package/dist/components/ErrorBoundary.test.js +2 -2
- package/dist/components/ErrorBoundary.test.js.map +1 -1
- package/dist/components/Input/PopupManager.d.ts.map +1 -1
- package/dist/components/Input/PopupManager.js.map +1 -1
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +15 -33
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/InputBox.menu-logic.test.js +6 -7
- package/dist/components/InputBox.menu-logic.test.js.map +1 -1
- package/dist/components/InputBox.test.js +7 -9
- package/dist/components/InputBox.test.js.map +1 -1
- package/dist/components/LiveResponse.d.ts.map +1 -1
- package/dist/components/LiveResponse.js.map +1 -1
- package/dist/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/components/MarkdownRenderer.js +12 -12
- package/dist/components/MarkdownRenderer.js.map +1 -1
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js.map +1 -1
- package/dist/components/MessageList.test.js +1 -1
- package/dist/components/MessageList.test.js.map +1 -1
- package/dist/components/ModelSelectionMenu.d.ts.map +1 -1
- package/dist/components/ModelSelectionMenu.js +11 -16
- package/dist/components/ModelSelectionMenu.js.map +1 -1
- package/dist/components/ModelSelectionMenu.test.js +9 -9
- package/dist/components/ModelSelectionMenu.test.js.map +1 -1
- package/dist/components/PathSelectionMenu.d.ts.map +1 -1
- package/dist/components/PathSelectionMenu.js +1 -1
- package/dist/components/PathSelectionMenu.js.map +1 -1
- package/dist/components/SettingsSelectionMenu.d.ts.map +1 -1
- package/dist/components/SettingsSelectionMenu.js +1 -1
- package/dist/components/SettingsSelectionMenu.js.map +1 -1
- package/dist/components/SettingsSelectionMenu.test.js +4 -4
- package/dist/components/SettingsSelectionMenu.test.js.map +1 -1
- package/dist/components/SettingsValueSelectionMenu.d.ts.map +1 -1
- package/dist/components/SettingsValueSelectionMenu.js +5 -6
- package/dist/components/SettingsValueSelectionMenu.js.map +1 -1
- package/dist/components/SettingsValueSelectionMenu.test.js +5 -5
- package/dist/components/SettingsValueSelectionMenu.test.js.map +1 -1
- package/dist/components/SlashCommandMenu.d.ts.map +1 -1
- package/dist/components/SlashCommandMenu.js +1 -1
- package/dist/components/SlashCommandMenu.js.map +1 -1
- package/dist/components/StatusBar.d.ts.map +1 -1
- package/dist/components/StatusBar.js +3 -4
- package/dist/components/StatusBar.js.map +1 -1
- package/dist/components/TextInput.d.ts.map +1 -1
- package/dist/components/TextInput.js +2 -1
- package/dist/components/TextInput.js.map +1 -1
- package/dist/components/TextInput.test.js.map +1 -1
- package/dist/context/InputContext.d.ts.map +1 -1
- package/dist/context/InputContext.js.map +1 -1
- package/dist/context/InputContext.stability.test.js +1 -1
- package/dist/context/InputContext.stability.test.js.map +1 -1
- package/dist/context/InputContext.test.js +15 -15
- package/dist/context/InputContext.test.js.map +1 -1
- package/dist/debug_ask_mentor.d.ts +2 -0
- package/dist/debug_ask_mentor.d.ts.map +1 -0
- package/dist/debug_ask_mentor.js +73 -0
- package/dist/debug_ask_mentor.js.map +1 -0
- package/dist/hooks/use-conversation.d.ts +3 -13
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +35 -184
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-input-history.d.ts.map +1 -1
- package/dist/hooks/use-input-history.js +1 -3
- package/dist/hooks/use-input-history.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +8 -10
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/hooks/use-path-completion.d.ts.map +1 -1
- package/dist/hooks/use-path-completion.js +6 -6
- package/dist/hooks/use-path-completion.js.map +1 -1
- package/dist/hooks/use-setting.d.ts.map +1 -1
- package/dist/hooks/use-setting.js +3 -6
- package/dist/hooks/use-setting.js.map +1 -1
- package/dist/hooks/use-settings-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-completion.js +10 -12
- package/dist/hooks/use-settings-completion.js.map +1 -1
- package/dist/hooks/use-settings-completion.test.js +46 -46
- package/dist/hooks/use-settings-completion.test.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +13 -43
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.test.js +12 -18
- package/dist/hooks/use-settings-value-completion.test.js.map +1 -1
- package/dist/hooks/use-slash-commands.d.ts +1 -1
- package/dist/hooks/use-slash-commands.d.ts.map +1 -1
- package/dist/hooks/use-slash-commands.js +6 -11
- package/dist/hooks/use-slash-commands.js.map +1 -1
- package/dist/hooks/use-slash-commands.test.js +24 -24
- package/dist/hooks/use-slash-commands.test.js.map +1 -1
- package/dist/lib/editor-impl.d.ts.map +1 -1
- package/dist/lib/editor-impl.js +6 -16
- package/dist/lib/editor-impl.js.map +1 -1
- package/dist/lib/editor-impl.test.js.map +1 -1
- package/dist/lib/openai-agent-client.chat.test.js +33 -8
- package/dist/lib/openai-agent-client.chat.test.js.map +1 -1
- package/dist/lib/openai-agent-client.d.ts.map +1 -1
- package/dist/lib/openai-agent-client.flex-tier.test.js +5 -5
- package/dist/lib/openai-agent-client.flex-tier.test.js.map +1 -1
- package/dist/lib/openai-agent-client.js +89 -85
- package/dist/lib/openai-agent-client.js.map +1 -1
- package/dist/lib/openai-agent-client.public-methods.test.js +186 -12
- package/dist/lib/openai-agent-client.public-methods.test.js.map +1 -1
- package/dist/lib/openai-agent-client.test.js +17 -17
- package/dist/lib/openai-agent-client.test.js.map +1 -1
- package/dist/lib/openai-strict-tool-schema.d.ts +10 -0
- package/dist/lib/openai-strict-tool-schema.d.ts.map +1 -0
- package/dist/lib/openai-strict-tool-schema.js +39 -0
- package/dist/lib/openai-strict-tool-schema.js.map +1 -0
- package/dist/lib/openai-strict-tool-schema.test.d.ts +2 -0
- package/dist/lib/openai-strict-tool-schema.test.d.ts.map +1 -0
- package/dist/lib/openai-strict-tool-schema.test.js +26 -0
- package/dist/lib/openai-strict-tool-schema.test.js.map +1 -0
- package/dist/lib/tool-invoke.d.ts.map +1 -1
- package/dist/lib/tool-invoke.js.map +1 -1
- package/dist/lib/tool-invoke.test.js.map +1 -1
- package/dist/modes/companion/command-index.d.ts +26 -0
- package/dist/modes/companion/command-index.d.ts.map +1 -0
- package/dist/modes/companion/command-index.js +50 -0
- package/dist/modes/companion/command-index.js.map +1 -0
- package/dist/modes/companion/command-index.test.d.ts +2 -0
- package/dist/modes/companion/command-index.test.d.ts.map +1 -0
- package/dist/modes/companion/command-index.test.js +86 -0
- package/dist/modes/companion/command-index.test.js.map +1 -0
- package/dist/modes/companion/companion-app.d.ts +12 -0
- package/dist/modes/companion/companion-app.d.ts.map +1 -0
- package/dist/modes/companion/companion-app.js +297 -0
- package/dist/modes/companion/companion-app.js.map +1 -0
- package/dist/modes/companion/companion-session.d.ts +63 -0
- package/dist/modes/companion/companion-session.d.ts.map +1 -0
- package/dist/modes/companion/companion-session.js +146 -0
- package/dist/modes/companion/companion-session.js.map +1 -0
- package/dist/modes/companion/companion-session.test.d.ts +2 -0
- package/dist/modes/companion/companion-session.test.d.ts.map +1 -0
- package/dist/modes/companion/companion-session.test.js +28 -0
- package/dist/modes/companion/companion-session.test.js.map +1 -0
- package/dist/modes/companion/components/status-bar.d.ts +13 -0
- package/dist/modes/companion/components/status-bar.d.ts.map +1 -0
- package/dist/modes/companion/components/status-bar.js +26 -0
- package/dist/modes/companion/components/status-bar.js.map +1 -0
- package/dist/modes/companion/context-buffer.d.ts +65 -0
- package/dist/modes/companion/context-buffer.d.ts.map +1 -0
- package/dist/modes/companion/context-buffer.js +156 -0
- package/dist/modes/companion/context-buffer.js.map +1 -0
- package/dist/modes/companion/context-buffer.test.d.ts +2 -0
- package/dist/modes/companion/context-buffer.test.d.ts.map +1 -0
- package/dist/modes/companion/context-buffer.test.js +154 -0
- package/dist/modes/companion/context-buffer.test.js.map +1 -0
- package/dist/modes/companion/event-detector.d.ts +46 -0
- package/dist/modes/companion/event-detector.d.ts.map +1 -0
- package/dist/modes/companion/event-detector.js +169 -0
- package/dist/modes/companion/event-detector.js.map +1 -0
- package/dist/modes/companion/event-detector.test.d.ts +2 -0
- package/dist/modes/companion/event-detector.test.d.ts.map +1 -0
- package/dist/modes/companion/event-detector.test.js +121 -0
- package/dist/modes/companion/event-detector.test.js.map +1 -0
- package/dist/modes/companion/index.d.ts +33 -0
- package/dist/modes/companion/index.d.ts.map +1 -0
- package/dist/modes/companion/index.js +21 -0
- package/dist/modes/companion/index.js.map +1 -0
- package/dist/modes/companion/input-key-mapper.d.ts +3 -0
- package/dist/modes/companion/input-key-mapper.d.ts.map +1 -0
- package/dist/modes/companion/input-key-mapper.js +31 -0
- package/dist/modes/companion/input-key-mapper.js.map +1 -0
- package/dist/modes/companion/input-key-mapper.test.d.ts +2 -0
- package/dist/modes/companion/input-key-mapper.test.d.ts.map +1 -0
- package/dist/modes/companion/input-key-mapper.test.js +26 -0
- package/dist/modes/companion/input-key-mapper.test.js.map +1 -0
- package/dist/modes/companion/input-parser.d.ts +53 -0
- package/dist/modes/companion/input-parser.d.ts.map +1 -0
- package/dist/modes/companion/input-parser.js +114 -0
- package/dist/modes/companion/input-parser.js.map +1 -0
- package/dist/modes/companion/input-parser.test.d.ts +2 -0
- package/dist/modes/companion/input-parser.test.d.ts.map +1 -0
- package/dist/modes/companion/input-parser.test.js +123 -0
- package/dist/modes/companion/input-parser.test.js.map +1 -0
- package/dist/modes/companion/mode-manager.d.ts +41 -0
- package/dist/modes/companion/mode-manager.d.ts.map +1 -0
- package/dist/modes/companion/mode-manager.js +56 -0
- package/dist/modes/companion/mode-manager.js.map +1 -0
- package/dist/modes/companion/mode-manager.test.d.ts +2 -0
- package/dist/modes/companion/mode-manager.test.d.ts.map +1 -0
- package/dist/modes/companion/mode-manager.test.js +65 -0
- package/dist/modes/companion/mode-manager.test.js.map +1 -0
- package/dist/modes/companion/output-classifier.d.ts +15 -0
- package/dist/modes/companion/output-classifier.d.ts.map +1 -0
- package/dist/modes/companion/output-classifier.js +77 -0
- package/dist/modes/companion/output-classifier.js.map +1 -0
- package/dist/modes/companion/output-classifier.test.d.ts +2 -0
- package/dist/modes/companion/output-classifier.test.d.ts.map +1 -0
- package/dist/modes/companion/output-classifier.test.js +133 -0
- package/dist/modes/companion/output-classifier.test.js.map +1 -0
- package/dist/modes/companion/pty-wrapper.d.ts +46 -0
- package/dist/modes/companion/pty-wrapper.d.ts.map +1 -0
- package/dist/modes/companion/pty-wrapper.js +143 -0
- package/dist/modes/companion/pty-wrapper.js.map +1 -0
- package/dist/modes/companion/safety-classifier.d.ts +31 -0
- package/dist/modes/companion/safety-classifier.d.ts.map +1 -0
- package/dist/modes/companion/safety-classifier.js +140 -0
- package/dist/modes/companion/safety-classifier.js.map +1 -0
- package/dist/modes/companion/safety-classifier.test.d.ts +2 -0
- package/dist/modes/companion/safety-classifier.test.d.ts.map +1 -0
- package/dist/modes/companion/safety-classifier.test.js +151 -0
- package/dist/modes/companion/safety-classifier.test.js.map +1 -0
- package/dist/modes/companion/summarizer.d.ts +24 -0
- package/dist/modes/companion/summarizer.d.ts.map +1 -0
- package/dist/modes/companion/summarizer.js +132 -0
- package/dist/modes/companion/summarizer.js.map +1 -0
- package/dist/modes/companion/terminal-history.d.ts +27 -0
- package/dist/modes/companion/terminal-history.d.ts.map +1 -0
- package/dist/modes/companion/terminal-history.js +142 -0
- package/dist/modes/companion/terminal-history.js.map +1 -0
- package/dist/no-singleton-imports.test.js +1 -1
- package/dist/no-singleton-imports.test.js.map +1 -1
- package/dist/non-interactive.d.ts +20 -0
- package/dist/non-interactive.d.ts.map +1 -0
- package/dist/non-interactive.js +86 -0
- package/dist/non-interactive.js.map +1 -0
- package/dist/non-interactive.test.d.ts +2 -0
- package/dist/non-interactive.test.d.ts.map +1 -0
- package/dist/non-interactive.test.js +213 -0
- package/dist/non-interactive.test.js.map +1 -0
- package/dist/prompts/anthropic.md +11 -11
- package/dist/prompts/codex.md +63 -63
- package/dist/prompts/gpt-5.md +95 -95
- package/dist/prompts/mentor-addon.md +6 -5
- package/dist/prompts/prompt-selector.d.ts +8 -0
- package/dist/prompts/prompt-selector.d.ts.map +1 -0
- package/dist/prompts/prompt-selector.js +21 -0
- package/dist/prompts/prompt-selector.js.map +1 -0
- package/dist/prompts/prompt-selector.test.d.ts +2 -0
- package/dist/prompts/prompt-selector.test.d.ts.map +1 -0
- package/dist/prompts/prompt-selector.test.js +21 -0
- package/dist/prompts/prompt-selector.test.js.map +1 -0
- package/dist/prompts/prompt-selector.test.ts +32 -0
- package/dist/prompts/prompt-selector.ts +30 -0
- package/dist/prompts/simple-mentor.md +8 -0
- package/dist/prompts/simple.md +58 -58
- package/dist/providers/github-copilot/model.d.ts.map +1 -1
- package/dist/providers/github-copilot/model.js +25 -108
- package/dist/providers/github-copilot/model.js.map +1 -1
- package/dist/providers/github-copilot/model.test.d.ts +2 -0
- package/dist/providers/github-copilot/model.test.d.ts.map +1 -0
- package/dist/providers/github-copilot/model.test.js +63 -0
- package/dist/providers/github-copilot/model.test.js.map +1 -0
- package/dist/providers/github-copilot/provider.d.ts +0 -5
- package/dist/providers/github-copilot/provider.d.ts.map +1 -1
- package/dist/providers/github-copilot/provider.js +2 -7
- package/dist/providers/github-copilot/provider.js.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai-compatible/api.d.ts.map +1 -1
- package/dist/providers/openai-compatible/api.js.map +1 -1
- package/dist/providers/openai-compatible/model.d.ts.map +1 -1
- package/dist/providers/openai-compatible/model.js +22 -56
- package/dist/providers/openai-compatible/model.js.map +1 -1
- package/dist/providers/openai-compatible/provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible/provider.js.map +1 -1
- package/dist/providers/openai-compatible/reasoning-content.test.js +72 -2
- package/dist/providers/openai-compatible/reasoning-content.test.js.map +1 -1
- package/dist/providers/openai-compatible/utils.d.ts.map +1 -1
- package/dist/providers/openai-compatible/utils.js.map +1 -1
- package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible.provider.js +5 -1
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/providers/openai.provider.js +4 -0
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/openrouter/api.d.ts.map +1 -1
- package/dist/providers/openrouter/api.js +5 -13
- package/dist/providers/openrouter/api.js.map +1 -1
- package/dist/providers/openrouter/converters.d.ts.map +1 -1
- package/dist/providers/openrouter/converters.js +9 -28
- package/dist/providers/openrouter/converters.js.map +1 -1
- package/dist/providers/openrouter/converters.test.js +7 -11
- package/dist/providers/openrouter/converters.test.js.map +1 -1
- package/dist/providers/openrouter/index.d.ts.map +1 -1
- package/dist/providers/openrouter/index.js.map +1 -1
- package/dist/providers/openrouter/model.d.ts.map +1 -1
- package/dist/providers/openrouter/model.js +22 -58
- package/dist/providers/openrouter/model.js.map +1 -1
- package/dist/providers/openrouter/provider.d.ts.map +1 -1
- package/dist/providers/openrouter/provider.js.map +1 -1
- package/dist/providers/openrouter/reasoning-content.test.js +1 -1
- package/dist/providers/openrouter/reasoning-content.test.js.map +1 -1
- package/dist/providers/openrouter/utils.d.ts +1 -0
- package/dist/providers/openrouter/utils.d.ts.map +1 -1
- package/dist/providers/openrouter/utils.js +5 -3
- package/dist/providers/openrouter/utils.js.map +1 -1
- package/dist/providers/openrouter.api.retry.test.js.map +1 -1
- package/dist/providers/openrouter.provider.createRunner.test.js +1 -1
- package/dist/providers/openrouter.provider.createRunner.test.js.map +1 -1
- package/dist/providers/openrouter.provider.js +6 -4
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/openrouter.test.js +77 -17
- package/dist/providers/openrouter.test.js.map +1 -1
- package/dist/providers/registry.d.ts +5 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/registry.test.js +11 -11
- package/dist/providers/registry.test.js.map +1 -1
- package/dist/providers/web-search/index.d.ts +1 -1
- package/dist/providers/web-search/index.d.ts.map +1 -1
- package/dist/providers/web-search/index.js.map +1 -1
- package/dist/providers/web-search/registry.d.ts.map +1 -1
- package/dist/providers/web-search/registry.js.map +1 -1
- package/dist/providers/web-search/registry.test.js +14 -14
- package/dist/providers/web-search/registry.test.js.map +1 -1
- package/dist/providers/web-search/tavily.provider.d.ts.map +1 -1
- package/dist/providers/web-search/tavily.provider.js +4 -4
- package/dist/providers/web-search/tavily.provider.js.map +1 -1
- package/dist/providers/web-search/tavily.provider.test.js +7 -7
- package/dist/providers/web-search/tavily.provider.test.js.map +1 -1
- package/dist/providers/web-search/types.d.ts.map +1 -1
- package/dist/scripts/extract-provider-traffic.d.ts +3 -0
- package/dist/scripts/extract-provider-traffic.d.ts.map +1 -0
- package/dist/scripts/extract-provider-traffic.js +32 -0
- package/dist/scripts/extract-provider-traffic.js.map +1 -0
- package/dist/services/approval-state.d.ts +24 -0
- package/dist/services/approval-state.d.ts.map +1 -0
- package/dist/services/approval-state.js +41 -0
- package/dist/services/approval-state.js.map +1 -0
- package/dist/services/approval-state.test.d.ts +2 -0
- package/dist/services/approval-state.test.d.ts.map +1 -0
- package/dist/services/approval-state.test.js +59 -0
- package/dist/services/approval-state.test.js.map +1 -0
- package/dist/services/check_mock.d.ts +2 -0
- package/dist/services/check_mock.d.ts.map +1 -0
- package/dist/services/check_mock.js +22 -0
- package/dist/services/check_mock.js.map +1 -0
- package/dist/services/command-message-streaming.d.ts +12 -0
- package/dist/services/command-message-streaming.d.ts.map +1 -0
- package/dist/services/command-message-streaming.js +68 -0
- package/dist/services/command-message-streaming.js.map +1 -0
- package/dist/services/command-message-streaming.test.d.ts +2 -0
- package/dist/services/command-message-streaming.test.d.ts.map +1 -0
- package/dist/services/command-message-streaming.test.js +78 -0
- package/dist/services/command-message-streaming.test.js.map +1 -0
- package/dist/services/conversation-events.d.ts +2 -13
- package/dist/services/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation-integration.test.d.ts +2 -0
- package/dist/services/conversation-integration.test.d.ts.map +1 -0
- package/dist/services/conversation-integration.test.js +155 -0
- package/dist/services/conversation-integration.test.js.map +1 -0
- package/dist/services/conversation-service.d.ts +1 -1
- package/dist/services/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation-service.js.map +1 -1
- package/dist/services/conversation-service.test.d.ts +2 -0
- package/dist/services/conversation-service.test.d.ts.map +1 -0
- package/dist/services/conversation-service.test.js +149 -183
- package/dist/services/conversation-service.test.js.map +1 -0
- package/dist/services/conversation-session-reasoning.test.js +3 -3
- package/dist/services/conversation-session-reasoning.test.js.map +1 -1
- package/dist/services/conversation-session.d.ts +5 -17
- package/dist/services/conversation-session.d.ts.map +1 -1
- package/dist/services/conversation-session.js +164 -275
- package/dist/services/conversation-session.js.map +1 -1
- package/dist/services/conversation-store.d.ts.map +1 -1
- package/dist/services/conversation-store.js +3 -9
- package/dist/services/conversation-store.js.map +1 -1
- package/dist/services/conversation-store.test.js +17 -14
- package/dist/services/conversation-store.test.js.map +1 -1
- package/dist/services/execution-context.d.ts.map +1 -1
- package/dist/services/execution-context.js.map +1 -1
- package/dist/services/execution-context.test.js +7 -7
- package/dist/services/execution-context.test.js.map +1 -1
- package/dist/services/file-service.d.ts.map +1 -1
- package/dist/services/file-service.js +5 -9
- package/dist/services/file-service.js.map +1 -1
- package/dist/services/history-service.d.ts.map +1 -1
- package/dist/services/history-service.js +3 -7
- package/dist/services/history-service.js.map +1 -1
- package/dist/services/logging-contract.d.ts +74 -0
- package/dist/services/logging-contract.d.ts.map +1 -0
- package/dist/services/logging-contract.js +157 -0
- package/dist/services/logging-contract.js.map +1 -0
- package/dist/services/logging-contract.test.d.ts +2 -0
- package/dist/services/logging-contract.test.d.ts.map +1 -0
- package/dist/services/logging-contract.test.js +66 -0
- package/dist/services/logging-contract.test.js.map +1 -0
- package/dist/services/logging-service.d.ts +5 -0
- package/dist/services/logging-service.d.ts.map +1 -1
- package/dist/services/logging-service.js +93 -21
- package/dist/services/logging-service.js.map +1 -1
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +2 -2
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/model-service.test.js +6 -6
- package/dist/services/model-service.test.js.map +1 -1
- package/dist/services/service-interfaces.d.ts.map +1 -1
- package/dist/services/settings-env.d.ts +9 -0
- package/dist/services/settings-env.d.ts.map +1 -0
- package/dist/services/settings-env.js +75 -0
- package/dist/services/settings-env.js.map +1 -0
- package/dist/services/settings-env.test.d.ts +2 -0
- package/dist/services/settings-env.test.d.ts.map +1 -0
- package/dist/services/settings-env.test.js +32 -0
- package/dist/services/settings-env.test.js.map +1 -0
- package/dist/services/settings-merger.d.ts +26 -0
- package/dist/services/settings-merger.d.ts.map +1 -0
- package/dist/services/settings-merger.js +122 -0
- package/dist/services/settings-merger.js.map +1 -0
- package/dist/services/settings-merger.test.d.ts +2 -0
- package/dist/services/settings-merger.test.d.ts.map +1 -0
- package/dist/services/settings-merger.test.js +26 -0
- package/dist/services/settings-merger.test.js.map +1 -0
- package/dist/services/settings-persistence.d.ts +32 -0
- package/dist/services/settings-persistence.d.ts.map +1 -0
- package/dist/services/settings-persistence.js +134 -0
- package/dist/services/settings-persistence.js.map +1 -0
- package/dist/services/settings-persistence.test.d.ts +2 -0
- package/dist/services/settings-persistence.test.d.ts.map +1 -0
- package/dist/services/settings-persistence.test.js +51 -0
- package/dist/services/settings-persistence.test.js.map +1 -0
- package/dist/services/settings-schema.d.ts +320 -0
- package/dist/services/settings-schema.d.ts.map +1 -0
- package/dist/services/settings-schema.js +272 -0
- package/dist/services/settings-schema.js.map +1 -0
- package/dist/services/settings-service.d.ts +4 -248
- package/dist/services/settings-service.d.ts.map +1 -1
- package/dist/services/settings-service.js +45 -641
- package/dist/services/settings-service.js.map +1 -1
- package/dist/services/settings-service.mock.d.ts.map +1 -1
- package/dist/services/settings-service.mock.js.map +1 -1
- package/dist/services/singleton-deprecation.test.js +2 -2
- package/dist/services/singleton-deprecation.test.js.map +1 -1
- package/dist/services/ssh-service.d.ts.map +1 -1
- package/dist/services/ssh-service.js +8 -7
- package/dist/services/ssh-service.js.map +1 -1
- package/dist/services/ssh-service.test.js +15 -13
- package/dist/services/ssh-service.test.js.map +1 -1
- package/dist/services/stream-event-parsing.d.ts +4 -0
- package/dist/services/stream-event-parsing.d.ts.map +1 -0
- package/dist/services/stream-event-parsing.js +76 -0
- package/dist/services/stream-event-parsing.js.map +1 -0
- package/dist/services/stream-event-parsing.test.d.ts +2 -0
- package/dist/services/stream-event-parsing.test.d.ts.map +1 -0
- package/dist/services/stream-event-parsing.test.js +59 -0
- package/dist/services/stream-event-parsing.test.js.map +1 -0
- package/dist/tools/apply-patch.d.ts.map +1 -1
- package/dist/tools/apply-patch.js +45 -35
- package/dist/tools/apply-patch.js.map +1 -1
- package/dist/tools/apply-patch.test.js +23 -0
- package/dist/tools/apply-patch.test.js.map +1 -1
- package/dist/tools/ask-mentor.d.ts +1 -1
- package/dist/tools/ask-mentor.d.ts.map +1 -1
- package/dist/tools/ask-mentor.js +5 -15
- package/dist/tools/ask-mentor.js.map +1 -1
- package/dist/tools/ask-mentor.test.js +10 -4
- package/dist/tools/ask-mentor.test.js.map +1 -1
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +2 -2
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/create-file.test.js.map +1 -1
- package/dist/tools/edit-healing.d.ts.map +1 -1
- package/dist/tools/edit-healing.js +5 -4
- package/dist/tools/edit-healing.js.map +1 -1
- package/dist/tools/edit-healing.test.js.map +1 -1
- package/dist/tools/find-files.d.ts +2 -2
- package/dist/tools/find-files.d.ts.map +1 -1
- package/dist/tools/find-files.js +10 -27
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/find-files.test.js +8 -21
- package/dist/tools/find-files.test.js.map +1 -1
- package/dist/tools/format-helpers.d.ts.map +1 -1
- package/dist/tools/format-helpers.js +2 -6
- package/dist/tools/format-helpers.js.map +1 -1
- package/dist/tools/grep.d.ts +2 -2
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +7 -26
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/read-file.d.ts +2 -2
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +5 -11
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-file.test.js +7 -13
- package/dist/tools/read-file.test.js.map +1 -1
- package/dist/tools/search-replace.d.ts +1 -1
- package/dist/tools/search-replace.d.ts.map +1 -1
- package/dist/tools/search-replace.js +15 -31
- package/dist/tools/search-replace.js.map +1 -1
- package/dist/tools/search-replace.test.js.map +1 -1
- package/dist/tools/search.d.ts +5 -5
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +10 -29
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/shell.d.ts +3 -3
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +27 -55
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/shell.test.d.ts +2 -0
- package/dist/tools/shell.test.d.ts.map +1 -0
- package/dist/tools/shell.test.js +70 -0
- package/dist/tools/shell.test.js.map +1 -0
- package/dist/tools/tool-names.d.ts +3 -0
- package/dist/tools/tool-names.d.ts.map +1 -0
- package/dist/tools/tool-names.js +3 -0
- package/dist/tools/tool-names.js.map +1 -0
- package/dist/tools/tool-names.test.d.ts +2 -0
- package/dist/tools/tool-names.test.d.ts.map +1 -0
- package/dist/tools/tool-names.test.js +7 -0
- package/dist/tools/tool-names.test.js.map +1 -0
- package/dist/tools/tool-parameter-schema.test.d.ts +2 -0
- package/dist/tools/tool-parameter-schema.test.d.ts.map +1 -0
- package/dist/tools/tool-parameter-schema.test.js +88 -0
- package/dist/tools/tool-parameter-schema.test.js.map +1 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +3 -8
- package/dist/tools/utils.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +3 -3
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +7 -10
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-fetch.test.js +3 -3
- package/dist/tools/web-fetch.test.js.map +1 -1
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +6 -10
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools/web-search.test.js +12 -14
- package/dist/tools/web-search.test.js.map +1 -1
- package/dist/utils/command-logger.d.ts.map +1 -1
- package/dist/utils/command-logger.js.map +1 -1
- package/dist/utils/command-safety/constants.d.ts.map +1 -1
- package/dist/utils/command-safety/constants.js +1 -9
- package/dist/utils/command-safety/constants.js.map +1 -1
- package/dist/utils/command-safety/find-helpers.d.ts.map +1 -1
- package/dist/utils/command-safety/find-helpers.js +4 -9
- package/dist/utils/command-safety/find-helpers.js.map +1 -1
- package/dist/utils/command-safety/handlers/find-handler.d.ts.map +1 -1
- package/dist/utils/command-safety/handlers/find-handler.js +3 -10
- package/dist/utils/command-safety/handlers/find-handler.js.map +1 -1
- package/dist/utils/command-safety/handlers/git-handler.d.ts.map +1 -1
- package/dist/utils/command-safety/handlers/git-handler.js +2 -4
- package/dist/utils/command-safety/handlers/git-handler.js.map +1 -1
- package/dist/utils/command-safety/handlers/index.d.ts +1 -1
- package/dist/utils/command-safety/handlers/index.d.ts.map +1 -1
- package/dist/utils/command-safety/handlers/index.js.map +1 -1
- package/dist/utils/command-safety/handlers/sed-handler.d.ts.map +1 -1
- package/dist/utils/command-safety/handlers/sed-handler.js.map +1 -1
- package/dist/utils/command-safety/handlers/types.d.ts.map +1 -1
- package/dist/utils/command-safety/index.d.ts.map +1 -1
- package/dist/utils/command-safety/index.js +4 -10
- package/dist/utils/command-safety/index.js.map +1 -1
- package/dist/utils/command-safety/path-analysis.d.ts.map +1 -1
- package/dist/utils/command-safety/path-analysis.js +9 -20
- package/dist/utils/command-safety/path-analysis.js.map +1 -1
- package/dist/utils/command-safety/utils.d.ts.map +1 -1
- package/dist/utils/command-safety/utils.js +1 -3
- package/dist/utils/command-safety/utils.js.map +1 -1
- package/dist/utils/command-safety.d.ts.map +1 -1
- package/dist/utils/command-safety.devnull.test.d.ts +2 -0
- package/dist/utils/command-safety.devnull.test.d.ts.map +1 -0
- package/dist/utils/command-safety.devnull.test.js +13 -0
- package/dist/utils/command-safety.devnull.test.js.map +1 -0
- package/dist/utils/command-safety.find.test.js +44 -87
- package/dist/utils/command-safety.find.test.js.map +1 -1
- package/dist/utils/command-safety.js +10 -364
- package/dist/utils/command-safety.js.map +1 -1
- package/dist/utils/command-safety.path.test.js +32 -67
- package/dist/utils/command-safety.path.test.js.map +1 -1
- package/dist/utils/conversation-event-handler.d.ts +4 -16
- package/dist/utils/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation-event-handler.js +4 -8
- package/dist/utils/conversation-event-handler.js.map +1 -1
- package/dist/utils/conversation-event-handler.test.js +16 -18
- package/dist/utils/conversation-event-handler.test.js.map +1 -1
- package/dist/utils/conversation-utils.d.ts.map +1 -1
- package/dist/utils/conversation-utils.js +5 -8
- package/dist/utils/conversation-utils.js.map +1 -1
- package/dist/utils/conversation-utils.test.js +45 -44
- package/dist/utils/conversation-utils.test.js.map +1 -1
- package/dist/utils/diff.d.ts.map +1 -1
- package/dist/utils/diff.js +2 -4
- package/dist/utils/diff.js.map +1 -1
- package/dist/utils/diff.test.js +12 -12
- package/dist/utils/diff.test.js.map +1 -1
- package/dist/utils/error-helpers.d.ts.map +1 -1
- package/dist/utils/error-helpers.js +2 -6
- package/dist/utils/error-helpers.js.map +1 -1
- package/dist/utils/error-helpers.test.js +32 -32
- package/dist/utils/error-helpers.test.js.map +1 -1
- package/dist/utils/execute-shell.d.ts.map +1 -1
- package/dist/utils/execute-shell.js.map +1 -1
- package/dist/utils/execute-shell.test.js.map +1 -1
- package/dist/utils/extract-command-messages.d.ts.map +1 -1
- package/dist/utils/extract-command-messages.js +16 -21
- package/dist/utils/extract-command-messages.js.map +1 -1
- package/dist/utils/extract-command-messages.test.d.ts +2 -0
- package/dist/utils/extract-command-messages.test.d.ts.map +1 -0
- package/dist/utils/extract-command-messages.test.js +58 -51
- package/dist/utils/extract-command-messages.test.js.map +1 -0
- package/dist/utils/ink-render-options.d.ts.map +1 -1
- package/dist/utils/ink-render-options.js.map +1 -1
- package/dist/utils/log-viewer-filters.d.ts +29 -0
- package/dist/utils/log-viewer-filters.d.ts.map +1 -0
- package/dist/utils/log-viewer-filters.js +49 -0
- package/dist/utils/log-viewer-filters.js.map +1 -0
- package/dist/utils/log-viewer-filters.test.d.ts +2 -0
- package/dist/utils/log-viewer-filters.test.d.ts.map +1 -0
- package/dist/utils/log-viewer-filters.test.js +48 -0
- package/dist/utils/log-viewer-filters.test.js.map +1 -0
- package/dist/utils/message-buffer.d.ts.map +1 -1
- package/dist/utils/message-buffer.js.map +1 -1
- package/dist/utils/message-buffer.test.js +4 -4
- package/dist/utils/message-buffer.test.js.map +1 -1
- package/dist/utils/output-trim.d.ts.map +1 -1
- package/dist/utils/output-trim.js.map +1 -1
- package/dist/utils/provider-credentials.d.ts.map +1 -1
- package/dist/utils/provider-credentials.js +1 -1
- package/dist/utils/provider-credentials.js.map +1 -1
- package/dist/utils/provider-traffic-extractor.d.ts +18 -0
- package/dist/utils/provider-traffic-extractor.d.ts.map +1 -0
- package/dist/utils/provider-traffic-extractor.js +121 -0
- package/dist/utils/provider-traffic-extractor.js.map +1 -0
- package/dist/utils/provider-traffic-extractor.test.d.ts +2 -0
- package/dist/utils/provider-traffic-extractor.test.d.ts.map +1 -0
- package/dist/utils/provider-traffic-extractor.test.js +84 -0
- package/dist/utils/provider-traffic-extractor.test.js.map +1 -0
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +5 -12
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/ssh-config-parser.d.ts.map +1 -1
- package/dist/utils/ssh-config-parser.js.map +1 -1
- package/dist/utils/ssh-config-parser.test.js.map +1 -1
- package/dist/utils/streaming-session-factory.d.ts +33 -0
- package/dist/utils/streaming-session-factory.d.ts.map +1 -0
- package/dist/utils/streaming-session-factory.js +75 -0
- package/dist/utils/streaming-session-factory.js.map +1 -0
- package/dist/utils/streaming-session-factory.test.d.ts +2 -0
- package/dist/utils/streaming-session-factory.test.d.ts.map +1 -0
- package/dist/utils/streaming-session-factory.test.js +74 -0
- package/dist/utils/streaming-session-factory.test.js.map +1 -0
- package/dist/utils/streaming-updater.d.ts.map +1 -1
- package/dist/utils/streaming-updater.js.map +1 -1
- package/dist/utils/throttle.d.ts.map +1 -1
- package/dist/utils/throttle.js.map +1 -1
- package/dist/utils/token-usage.d.ts.map +1 -1
- package/dist/utils/token-usage.js +1 -2
- package/dist/utils/token-usage.js.map +1 -1
- package/dist/utils/token-usage.test.js +8 -8
- package/dist/utils/token-usage.test.js.map +1 -1
- package/dist/utils/trim-tool-output.d.ts.map +1 -1
- package/dist/utils/trim-tool-output.js +1 -1
- package/dist/utils/trim-tool-output.js.map +1 -1
- package/package.json +117 -111
- package/readme.md +196 -145
- package/dist/app.model-command-feedback.test.d.ts +0 -2
- package/dist/app.model-command-feedback.test.d.ts.map +0 -1
- package/dist/app.model-command-feedback.test.js +0 -19
- package/dist/app.model-command-feedback.test.js.map +0 -1
- package/dist/components/MentorMode.test.d.ts +0 -2
- package/dist/components/MentorMode.test.d.ts.map +0 -1
- package/dist/components/MentorMode.test.js.map +0 -1
- package/dist/components/StatusBar.test.d.ts +0 -2
- package/dist/components/StatusBar.test.d.ts.map +0 -1
- package/dist/components/StatusBar.test.js +0 -19
- package/dist/components/StatusBar.test.js.map +0 -1
- package/dist/debug-schema.d.ts +0 -2
- package/dist/debug-schema.d.ts.map +0 -1
- package/dist/debug-schema.js +0 -22
- package/dist/debug-schema.js.map +0 -1
- package/dist/hooks/use-model-selection.test.d.ts +0 -2
- package/dist/hooks/use-model-selection.test.d.ts.map +0 -1
- package/dist/hooks/use-model-selection.test.js +0 -28
- package/dist/hooks/use-model-selection.test.js.map +0 -1
- package/dist/hooks/use-path-completion.test.d.ts +0 -2
- package/dist/hooks/use-path-completion.test.d.ts.map +0 -1
- package/dist/hooks/use-path-completion.test.js +0 -29
- package/dist/hooks/use-path-completion.test.js.map +0 -1
- package/dist/prompts/default.md.bak +0 -77
- package/dist/providers/github-copilot/model-direct.d.ts +0 -34
- package/dist/providers/github-copilot/model-direct.d.ts.map +0 -1
- package/dist/providers/github-copilot/model-direct.js +0 -443
- package/dist/providers/github-copilot/model-direct.js.map +0 -1
- package/dist/providers/openrouter/merge-messages.test.d.ts +0 -2
- package/dist/providers/openrouter/merge-messages.test.d.ts.map +0 -1
- package/dist/providers/openrouter/merge-messages.test.js +0 -83
- package/dist/providers/openrouter/merge-messages.test.js.map +0 -1
- package/dist/providers/openrouter.history.test.d.ts +0 -2
- package/dist/providers/openrouter.history.test.d.ts.map +0 -1
- package/dist/providers/openrouter.history.test.js +0 -533
- package/dist/providers/openrouter.history.test.js.map +0 -1
- package/dist/reproduce_issue.test.d.ts +0 -2
- package/dist/reproduce_issue.test.d.ts.map +0 -1
- package/dist/reproduce_issue.test.js +0 -31
- package/dist/reproduce_issue.test.js.map +0 -1
- package/dist/services/conversation-session.usage.test.d.ts +0 -2
- package/dist/services/conversation-session.usage.test.d.ts.map +0 -1
- package/dist/services/conversation-session.usage.test.js +0 -59
- package/dist/services/conversation-session.usage.test.js.map +0 -1
- package/dist/test-search-tool.d.ts +0 -2
- package/dist/test-search-tool.d.ts.map +0 -1
- package/dist/test-search-tool.js +0 -36
- package/dist/test-search-tool.js.map +0 -1
- package/dist/utils/extract-command-messages.repro.test.d.ts +0 -2
- package/dist/utils/extract-command-messages.repro.test.d.ts.map +0 -1
- package/dist/utils/extract-command-messages.repro.test.js +0 -31
- package/dist/utils/extract-command-messages.repro.test.js.map +0 -1
- package/dist/utils/message-utils.d.ts +0 -17
- package/dist/utils/message-utils.d.ts.map +0 -1
- package/dist/utils/message-utils.js +0 -52
- package/dist/utils/message-utils.js.map +0 -1
- package/dist/utils/message-utils.test.d.ts +0 -2
- package/dist/utils/message-utils.test.d.ts.map +0 -1
- package/dist/utils/message-utils.test.js +0 -48
- package/dist/utils/message-utils.test.js.map +0 -1
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import test from 'ava';
|
|
2
|
-
import { renderHook } from 'ink-testing-library';
|
|
3
|
-
import { useModelSelection } from './use-model-selection.js';
|
|
4
|
-
import { InputProvider } from '../context/InputContext.js';
|
|
5
|
-
import React from 'react';
|
|
6
|
-
// Helper to render the hook with provider
|
|
7
|
-
const renderWithProvider = (fn) => {
|
|
8
|
-
const wrapper = (props) => React.createElement(InputProvider, props);
|
|
9
|
-
return renderHook(fn, { wrapper });
|
|
10
|
-
};
|
|
11
|
-
test('useModelSelection resets scroll and selection when query changes', t => {
|
|
12
|
-
const { result, rerender } = renderWithProvider(() => useModelSelection());
|
|
13
|
-
// Verify initial state
|
|
14
|
-
t.is(result.current.scrollOffset, 0, 'Initial scroll offset should be 0');
|
|
15
|
-
t.is(result.current.selectedIndex, 0, 'Initial selected index should be 0');
|
|
16
|
-
// When the user types a filter (query changes), scroll and selection should reset
|
|
17
|
-
// This test verifies that the hook properly resets these states to prevent
|
|
18
|
-
// showing "invisible" items that don't match the filter
|
|
19
|
-
// The actual filter happens through the context, but we verify the effect
|
|
20
|
-
// is in place by checking that the hook exports scrollOffset
|
|
21
|
-
t.truthy(result.current.scrollOffset !== undefined, 'Hook should expose scrollOffset');
|
|
22
|
-
});
|
|
23
|
-
test('useModelSelection provides scrollOffset in return value', t => {
|
|
24
|
-
const { result } = renderWithProvider(() => useModelSelection());
|
|
25
|
-
t.is(typeof result.current.scrollOffset, 'number', 'scrollOffset should be a number');
|
|
26
|
-
t.is(result.current.scrollOffset, 0, 'Initial scrollOffset should be 0');
|
|
27
|
-
});
|
|
28
|
-
//# sourceMappingURL=use-model-selection.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-model-selection.test.js","sourceRoot":"","sources":["../../source/hooks/use-model-selection.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,0CAA0C;AAC1C,MAAM,kBAAkB,GAAG,CAAC,EAAO,EAAE,EAAE;IACtC,MAAM,OAAO,GAAG,CAAC,KAAU,EAAE,EAAE,CAC9B,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,UAAU,CAAC,EAAE,EAAE,EAAC,OAAO,EAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,IAAI,CAAC,kEAAkE,EAAE,CAAC,CAAC,EAAE;IAC5E,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEzE,uBAAuB;IACvB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,mCAAmC,CAAC,CAAC;IAC1E,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAC;IAE5E,kFAAkF;IAClF,2EAA2E;IAC3E,wDAAwD;IAExD,0EAA0E;IAC1E,6DAA6D;IAC7D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,iCAAiC,CAAC,CAAC;AACxF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yDAAyD,EAAE,CAAC,CAAC,EAAE;IACnE,MAAM,EAAC,MAAM,EAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAE/D,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,iCAAiC,CAAC,CAAC;IACtF,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,kCAAkC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-path-completion.test.d.ts","sourceRoot":"","sources":["../../source/hooks/use-path-completion.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import test from 'ava';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { render } from 'ink-testing-library';
|
|
4
|
-
import { InputProvider } from '../context/InputContext.js';
|
|
5
|
-
import { usePathCompletion } from './use-path-completion.js';
|
|
6
|
-
test('open() is blocked immediately after close() for path completion', async (t) => {
|
|
7
|
-
let control = null;
|
|
8
|
-
const Test = () => {
|
|
9
|
-
const hook = usePathCompletion();
|
|
10
|
-
control = hook;
|
|
11
|
-
return React.createElement(React.Fragment, null, hook.isOpen ? 'OPEN' : 'CLOSED');
|
|
12
|
-
};
|
|
13
|
-
const { lastFrame } = render(React.createElement(InputProvider, null, React.createElement(Test, null)));
|
|
14
|
-
t.true(lastFrame().includes('CLOSED'));
|
|
15
|
-
control.open(0);
|
|
16
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
17
|
-
t.true(lastFrame().includes('OPEN'));
|
|
18
|
-
control.close();
|
|
19
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
20
|
-
t.true(lastFrame().includes('CLOSED'));
|
|
21
|
-
control.open(0);
|
|
22
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
23
|
-
t.true(lastFrame().includes('CLOSED'));
|
|
24
|
-
await new Promise(resolve => setTimeout(resolve, 350));
|
|
25
|
-
control.open(0);
|
|
26
|
-
await new Promise(resolve => setTimeout(resolve, 50));
|
|
27
|
-
t.true(lastFrame().includes('OPEN'));
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=use-path-completion.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-path-completion.test.js","sourceRoot":"","sources":["../../source/hooks/use-path-completion.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAE3D,IAAI,CAAC,iEAAiE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC9E,IAAI,OAAO,GAAQ,IAAI,CAAC;IAExB,MAAM,IAAI,GAAG,GAAG,EAAE;QACd,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtF,CAAC,CAAC;IAEF,MAAM,EAAC,SAAS,EAAC,GAAG,MAAM,CACtB,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAC5E,CAAC;IAEF,CAAC,CAAC,IAAI,CAAC,SAAS,EAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,IAAI,CAAC,SAAS,EAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,IAAI,CAAC,SAAS,EAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,IAAI,CAAC,SAAS,EAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,IAAI,CAAC,SAAS,EAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
## Introduction
|
|
2
|
-
|
|
3
|
-
Serve as a technically skilled reasoning partner: precise, objective, and contextually aware. Help solve problems by understanding requirements, thinking systematically when necessary, and delivering reliable results. Prioritize accuracy and usefulness over agreement or reassurance.
|
|
4
|
-
|
|
5
|
-
## Core Behavior
|
|
6
|
-
|
|
7
|
-
Communicate clearly and thoughtfully. Verify claims rather than accepting them at face value, and prioritize accuracy over persuasion. When user intent is unclear, reason carefully rather than making assumptions. When a task requires creativity, ground it in concrete reasoning. Operate within the constraints defined by the user's environment.
|
|
8
|
-
|
|
9
|
-
### Example: Interpreting Ambiguous Intent (DO vs. DON'T)
|
|
10
|
-
|
|
11
|
-
DON'T (overstates certainty, assumes intent):
|
|
12
|
-
User: "Optimize this algorithm; it's too slow."
|
|
13
|
-
Assistant: "I'll parallelize it across threads for a 10× speedup."
|
|
14
|
-
*(No code inspection; claims unsupported.)*
|
|
15
|
-
|
|
16
|
-
DO (investigate, reason, stay grounded):
|
|
17
|
-
Assistant: "Before proposing changes, I need to understand the existing implementation. Please share the current function or describe its inputs and constraints so I can identify actual bottlenecks."
|
|
18
|
-
|
|
19
|
-
## Working With Code and Tools
|
|
20
|
-
|
|
21
|
-
Be rigorous before acting. Review code completely before editing. Modify only what is directly necessary, avoiding unnecessary changes. Maintain safety boundaries around user input, execution environments, and external APIs. Use provided tools in preference to alternatives, and create files only when explicitly required.
|
|
22
|
-
|
|
23
|
-
### Example: Handling a Requested Refactor (DO vs. DON'T)
|
|
24
|
-
|
|
25
|
-
DON'T (changes code without review, adds speculative improvements):
|
|
26
|
-
User: "Fix the logging bug in this file."
|
|
27
|
-
Assistant: "I rewrote the logging module to be more modular and added retries."
|
|
28
|
-
*(Unnecessary changes; introduces new behavior.)*
|
|
29
|
-
|
|
30
|
-
DO (minimal, accurate, context-aware):
|
|
31
|
-
Assistant: "I'll inspect the file to understand the logging implementation and address only the bug you specified without altering unrelated code."
|
|
32
|
-
|
|
33
|
-
## Reasoning Style
|
|
34
|
-
|
|
35
|
-
Explain your thinking when it informs the user's decision, but avoid over-explaining routine steps. Keep reasoning internal when unnecessary, presenting only conclusions unless deeper analysis is needed. When comparing design options, articulate tradeoffs clearly and distinguish between established facts and assumptions.
|
|
36
|
-
|
|
37
|
-
### Example: Complex Tradeoff (DO vs. DON'T)
|
|
38
|
-
|
|
39
|
-
DON'T (selects approach without justification):
|
|
40
|
-
User: "Should we store this state in memory or persist it?"
|
|
41
|
-
Assistant: "In-memory storage is best."
|
|
42
|
-
*(No explanation; failure modes unaddressed.)*
|
|
43
|
-
|
|
44
|
-
DO (articulates meaningful tradeoffs):
|
|
45
|
-
Assistant: "In-memory storage provides faster access but loses state on process restart. Persistence adds overhead but ensures recovery. Your choice depends on whether crash resilience is more important than peak performance."
|
|
46
|
-
|
|
47
|
-
## Handling User Intent and Safety
|
|
48
|
-
|
|
49
|
-
Support user goals while maintaining boundaries around security, privacy, and correctness. Decline unsafe requests directly, offering secure alternatives when applicable. If a user pursues a harmful approach, redirect with transparent reasoning rather than compliance.
|
|
50
|
-
|
|
51
|
-
### Example: Misguided Technical Request (DO vs. DON'T)
|
|
52
|
-
|
|
53
|
-
DON'T:
|
|
54
|
-
User: "Bypass authentication checks for testing in production."
|
|
55
|
-
Assistant: "Here's how to comment out the auth middleware."
|
|
56
|
-
*(Creates security vulnerability.)*
|
|
57
|
-
|
|
58
|
-
DO:
|
|
59
|
-
Assistant: "Disabling authentication in production introduces serious security risks. For testing, use a mock auth layer or a development-only bypass that cannot activate in production builds. I can help implement that approach."
|
|
60
|
-
|
|
61
|
-
## Task Execution
|
|
62
|
-
|
|
63
|
-
Approach tasks with a clear plan when needed. Work systematically, maintaining single-threaded focus. Deliver functional implementations rather than theoretical descriptions, and follow established patterns in the environment. Avoid unnecessary refactoring, speculative enhancements, or unrelated changes.
|
|
64
|
-
|
|
65
|
-
### Example: Complex Implementation Flow (DO vs. DON'T)
|
|
66
|
-
|
|
67
|
-
DON'T:
|
|
68
|
-
User: "Add CSV export to this feature."
|
|
69
|
-
Assistant: "I redesigned the metrics system, added a plugin API, and included CSV, JSON, and XML exports."
|
|
70
|
-
*(Scope expansion; unrelated changes.)*
|
|
71
|
-
|
|
72
|
-
DO:
|
|
73
|
-
Assistant: "I'll add CSV export alongside existing exports, following established patterns. I'll review the serialization module, implement CSV output consistently with current exports, and validate with sample data. Unrelated logic remains unchanged."
|
|
74
|
-
|
|
75
|
-
## Communication Style
|
|
76
|
-
|
|
77
|
-
Communicate professionally and directly. Be concise without sacrificing clarity—maintain the efficiency of technical documentation with sufficient detail for understanding.
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GitHubCopilotDirectModel - Alternative implementation that lets Copilot SDK
|
|
3
|
-
* control the tool execution flow directly, without trying to integrate with
|
|
4
|
-
* OpenAI Agents SDK's approval pattern.
|
|
5
|
-
*
|
|
6
|
-
* This is simpler and more reliable because:
|
|
7
|
-
* 1. Copilot SDK handles its own event loop and tool execution
|
|
8
|
-
* 2. Tools execute immediately when called (no approval required)
|
|
9
|
-
* 3. We just translate events to the Agents SDK format for UI streaming
|
|
10
|
-
*/
|
|
11
|
-
import { type Model, type ModelRequest, type ModelResponse, type ResponseStreamEvent } from '@openai/agents-core';
|
|
12
|
-
import { CopilotClient, type CopilotSession } from '@github/copilot-sdk';
|
|
13
|
-
import type { ILoggingService, ISettingsService } from '../../services/service-interfaces.js';
|
|
14
|
-
export declare let sharedClient: CopilotClient | null;
|
|
15
|
-
export declare function getClient(): Promise<CopilotClient>;
|
|
16
|
-
export declare function extractCopilotTextDelta(accumulated: string, incoming: string): string;
|
|
17
|
-
/**
|
|
18
|
-
* Force stop the shared client (for cleanup/error recovery)
|
|
19
|
-
*/
|
|
20
|
-
export declare function forceStopClient(): Promise<void>;
|
|
21
|
-
export declare class GitHubCopilotDirectModel implements Model {
|
|
22
|
-
#private;
|
|
23
|
-
name: string;
|
|
24
|
-
constructor(deps: {
|
|
25
|
-
settingsService: ISettingsService;
|
|
26
|
-
loggingService: ILoggingService;
|
|
27
|
-
modelId?: string;
|
|
28
|
-
sessionMap?: Map<string, string>;
|
|
29
|
-
activeSessions?: Map<string, CopilotSession>;
|
|
30
|
-
});
|
|
31
|
-
getResponse(request: ModelRequest): Promise<ModelResponse>;
|
|
32
|
-
getStreamedResponse(request: ModelRequest): AsyncIterable<ResponseStreamEvent>;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=model-direct.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-direct.d.ts","sourceRoot":"","sources":["../../../source/providers/github-copilot/model-direct.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACH,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAC3B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EACR,eAAe,EACf,gBAAgB,EACnB,MAAM,sCAAsC,CAAC;AAc9C,eAAO,IAAI,YAAY,EAAE,aAAa,GAAG,IAAW,CAAC;AAErD,wBAAsB,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAMxD;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkBrF;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CASrD;AAOD,qBAAa,wBAAyB,YAAW,KAAK;;IAClD,IAAI,EAAE,MAAM,CAAC;gBAQD,IAAI,EAAE;QACd,eAAe,EAAE,gBAAgB,CAAC;QAClC,cAAc,EAAE,eAAe,CAAC;QAChC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;KAChD;IA8BK,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCzD,mBAAmB,CACtB,OAAO,EAAE,YAAY,GACtB,aAAa,CAAC,mBAAmB,CAAC;CA0XxC"}
|
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import fs from 'node:fs';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { CopilotClient } from '@github/copilot-sdk';
|
|
5
|
-
import { buildMessagesFromRequest, normalizeUsage, } from './converters.js';
|
|
6
|
-
import { getAgentDefinition } from '../../agent.js';
|
|
7
|
-
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
8
|
-
// Load simple.md system prompt (same as other providers)
|
|
9
|
-
const SIMPLE_PROMPT_PATH = path.join(import.meta.dirname, '../../prompts/simple.md');
|
|
10
|
-
const SIMPLE_PROMPT = fs.readFileSync(SIMPLE_PROMPT_PATH, 'utf-8').trim();
|
|
11
|
-
// Singleton client - SDK manages CLI process lifecycle
|
|
12
|
-
export let sharedClient = null;
|
|
13
|
-
export async function getClient() {
|
|
14
|
-
if (!sharedClient) {
|
|
15
|
-
sharedClient = new CopilotClient();
|
|
16
|
-
await sharedClient.start();
|
|
17
|
-
}
|
|
18
|
-
return sharedClient;
|
|
19
|
-
}
|
|
20
|
-
export function extractCopilotTextDelta(accumulated, incoming) {
|
|
21
|
-
if (!incoming)
|
|
22
|
-
return '';
|
|
23
|
-
if (!accumulated)
|
|
24
|
-
return incoming;
|
|
25
|
-
if (incoming.startsWith(accumulated)) {
|
|
26
|
-
return incoming.slice(accumulated.length);
|
|
27
|
-
}
|
|
28
|
-
const maxOverlap = Math.min(accumulated.length, incoming.length);
|
|
29
|
-
for (let len = maxOverlap; len > 0; len--) {
|
|
30
|
-
const suffix = accumulated.slice(-len);
|
|
31
|
-
const prefix = incoming.slice(0, len);
|
|
32
|
-
if (suffix === prefix) {
|
|
33
|
-
return incoming.slice(len);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return incoming;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Force stop the shared client (for cleanup/error recovery)
|
|
40
|
-
*/
|
|
41
|
-
export async function forceStopClient() {
|
|
42
|
-
if (sharedClient) {
|
|
43
|
-
try {
|
|
44
|
-
await sharedClient.forceStop();
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
// Ignore errors during cleanup
|
|
48
|
-
}
|
|
49
|
-
sharedClient = null;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
export class GitHubCopilotDirectModel {
|
|
53
|
-
name;
|
|
54
|
-
#modelId;
|
|
55
|
-
#settingsService;
|
|
56
|
-
#loggingService;
|
|
57
|
-
#sessionMap;
|
|
58
|
-
#activeSessions;
|
|
59
|
-
#toolMap;
|
|
60
|
-
constructor(deps) {
|
|
61
|
-
this.name = 'GitHubCopilotDirect';
|
|
62
|
-
this.#settingsService = deps.settingsService;
|
|
63
|
-
this.#loggingService = deps.loggingService;
|
|
64
|
-
this.#sessionMap = deps.sessionMap || new Map();
|
|
65
|
-
this.#activeSessions = deps.activeSessions || new Map();
|
|
66
|
-
this.#modelId =
|
|
67
|
-
deps.modelId ||
|
|
68
|
-
this.#settingsService.get('agent.github-copilot.model') ||
|
|
69
|
-
this.#settingsService.get('agent.model') ||
|
|
70
|
-
'gpt-4o';
|
|
71
|
-
// Build tool map for direct execution
|
|
72
|
-
this.#toolMap = this.#buildToolMap();
|
|
73
|
-
}
|
|
74
|
-
#buildToolMap() {
|
|
75
|
-
const agentDef = getAgentDefinition({
|
|
76
|
-
settingsService: this.#settingsService,
|
|
77
|
-
loggingService: this.#loggingService,
|
|
78
|
-
}, this.#modelId);
|
|
79
|
-
const toolMap = new Map();
|
|
80
|
-
for (const tool of agentDef.tools) {
|
|
81
|
-
toolMap.set(tool.name, tool);
|
|
82
|
-
}
|
|
83
|
-
return toolMap;
|
|
84
|
-
}
|
|
85
|
-
async getResponse(request) {
|
|
86
|
-
const events = [];
|
|
87
|
-
for await (const event of this.getStreamedResponse(request)) {
|
|
88
|
-
events.push(event);
|
|
89
|
-
}
|
|
90
|
-
const doneEvent = events.find((e) => e.type === 'response_done');
|
|
91
|
-
if (doneEvent?.response) {
|
|
92
|
-
return {
|
|
93
|
-
responseId: doneEvent.response.id || randomUUID(),
|
|
94
|
-
output: doneEvent.response.output || [],
|
|
95
|
-
usage: normalizeUsage(doneEvent.response.usage),
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
const textDeltas = events
|
|
99
|
-
.filter((e) => e.type === 'output_text_delta')
|
|
100
|
-
.map((e) => e.delta)
|
|
101
|
-
.join('');
|
|
102
|
-
return {
|
|
103
|
-
responseId: randomUUID(),
|
|
104
|
-
output: textDeltas ? [{
|
|
105
|
-
type: 'message',
|
|
106
|
-
role: 'assistant',
|
|
107
|
-
status: 'completed',
|
|
108
|
-
content: [{ type: 'output_text', text: textDeltas }],
|
|
109
|
-
}] : [],
|
|
110
|
-
usage: normalizeUsage({}),
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
async *getStreamedResponse(request) {
|
|
114
|
-
const client = await getClient();
|
|
115
|
-
const resolvedModelId = this.#resolveModelFromRequest(request) || this.#modelId;
|
|
116
|
-
const messages = buildMessagesFromRequest(request, resolvedModelId, this.#loggingService);
|
|
117
|
-
this.#loggingService.debug('GitHubCopilotDirect stream start', {
|
|
118
|
-
messageCount: messages.length,
|
|
119
|
-
modelId: resolvedModelId,
|
|
120
|
-
previousResponseId: request.previousResponseId || request.providerData?.previousResponseId,
|
|
121
|
-
});
|
|
122
|
-
// Build direct-execution tool handlers
|
|
123
|
-
const copilotTools = this.#buildCopilotToolHandlers();
|
|
124
|
-
let session;
|
|
125
|
-
try {
|
|
126
|
-
const prevResponseId = request.previousResponseId || request.providerData?.previousResponseId;
|
|
127
|
-
const prevSessionId = prevResponseId
|
|
128
|
-
? this.#sessionMap.get(prevResponseId)
|
|
129
|
-
: undefined;
|
|
130
|
-
const cachedSession = prevSessionId
|
|
131
|
-
? this.#activeSessions.get(prevSessionId)
|
|
132
|
-
: undefined;
|
|
133
|
-
if (cachedSession) {
|
|
134
|
-
this.#loggingService.debug('Reusing cached GitHubCopilotDirect session', {
|
|
135
|
-
sessionId: prevSessionId,
|
|
136
|
-
});
|
|
137
|
-
session = cachedSession;
|
|
138
|
-
session.registerTools(copilotTools);
|
|
139
|
-
}
|
|
140
|
-
else if (prevSessionId) {
|
|
141
|
-
this.#loggingService.debug('Resuming GitHubCopilotDirect session from server', {
|
|
142
|
-
sessionId: prevSessionId,
|
|
143
|
-
});
|
|
144
|
-
session = await client.resumeSession(prevSessionId, {
|
|
145
|
-
streaming: true,
|
|
146
|
-
tools: copilotTools,
|
|
147
|
-
});
|
|
148
|
-
this.#activeSessions.set(session.sessionId, session);
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
this.#loggingService.debug('Creating new GitHubCopilotDirect session');
|
|
152
|
-
session = await client.createSession({
|
|
153
|
-
model: resolvedModelId,
|
|
154
|
-
streaming: true,
|
|
155
|
-
tools: copilotTools,
|
|
156
|
-
availableTools: copilotTools.map((t) => t.name),
|
|
157
|
-
systemMessage: {
|
|
158
|
-
mode: 'replace',
|
|
159
|
-
content: SIMPLE_PROMPT,
|
|
160
|
-
},
|
|
161
|
-
});
|
|
162
|
-
this.#activeSessions.set(session.sessionId, session);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
catch (err) {
|
|
166
|
-
this.#loggingService.error('GitHubCopilotDirect session creation/resumption failed', {
|
|
167
|
-
error: err.message,
|
|
168
|
-
});
|
|
169
|
-
yield {
|
|
170
|
-
type: 'model',
|
|
171
|
-
event: { type: 'error', message: `Failed to create/resume Copilot session: ${err.message}` },
|
|
172
|
-
};
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
const state = {
|
|
176
|
-
accumulated: '',
|
|
177
|
-
accumulatedReasoningText: '',
|
|
178
|
-
accumulatedToolCalls: [],
|
|
179
|
-
toolOutputs: [],
|
|
180
|
-
responseId: randomUUID(),
|
|
181
|
-
usageData: null,
|
|
182
|
-
};
|
|
183
|
-
this.#sessionMap.set(state.responseId, session.sessionId);
|
|
184
|
-
// Use a queue-based approach with polling to yield events
|
|
185
|
-
const eventQueue = [];
|
|
186
|
-
let done = false;
|
|
187
|
-
let error = null;
|
|
188
|
-
// Register event handlers
|
|
189
|
-
const unsubscribe = session.on(async (event) => {
|
|
190
|
-
try {
|
|
191
|
-
switch (event.type) {
|
|
192
|
-
case 'assistant.message_delta':
|
|
193
|
-
if (event.data?.deltaContent) {
|
|
194
|
-
const delta = event.data.deltaContent;
|
|
195
|
-
state.accumulated += delta;
|
|
196
|
-
eventQueue.push({
|
|
197
|
-
type: 'output_text_delta',
|
|
198
|
-
delta,
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
break;
|
|
202
|
-
case 'assistant.reasoning_delta':
|
|
203
|
-
if (event.data?.deltaContent) {
|
|
204
|
-
state.accumulatedReasoningText += event.data.deltaContent;
|
|
205
|
-
eventQueue.push({
|
|
206
|
-
type: 'model',
|
|
207
|
-
event: {
|
|
208
|
-
type: 'reasoning_delta',
|
|
209
|
-
content: event.data.deltaContent,
|
|
210
|
-
},
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
break;
|
|
214
|
-
case 'tool.execution_start':
|
|
215
|
-
if (event.data) {
|
|
216
|
-
this.#loggingService.debug('GitHubCopilotDirect tool execution started', {
|
|
217
|
-
data: event.data,
|
|
218
|
-
});
|
|
219
|
-
const toolName = event.data.toolName;
|
|
220
|
-
const rawArgs = event.data.arguments || event.data.args || {};
|
|
221
|
-
const argsString = typeof rawArgs === 'string'
|
|
222
|
-
? rawArgs
|
|
223
|
-
: JSON.stringify(rawArgs);
|
|
224
|
-
const toolCall = {
|
|
225
|
-
type: 'function_call',
|
|
226
|
-
callId: event.data.toolCallId || event.data.callId || randomUUID(),
|
|
227
|
-
name: toolName,
|
|
228
|
-
arguments: argsString,
|
|
229
|
-
};
|
|
230
|
-
state.accumulatedToolCalls.push(toolCall);
|
|
231
|
-
eventQueue.push({
|
|
232
|
-
type: 'model',
|
|
233
|
-
event: {
|
|
234
|
-
type: 'tool_execution_start',
|
|
235
|
-
callId: toolCall.callId,
|
|
236
|
-
name: toolCall.name,
|
|
237
|
-
arguments: toolCall.arguments,
|
|
238
|
-
},
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
break;
|
|
242
|
-
case 'tool.execution_complete':
|
|
243
|
-
if (event.data) {
|
|
244
|
-
this.#loggingService.debug('GitHubCopilotDirect tool execution completed', {
|
|
245
|
-
toolName: event.data.toolName,
|
|
246
|
-
callId: event.data.toolCallId,
|
|
247
|
-
});
|
|
248
|
-
eventQueue.push({
|
|
249
|
-
type: 'model',
|
|
250
|
-
event: {
|
|
251
|
-
type: 'tool_execution_complete',
|
|
252
|
-
callId: event.data.toolCallId || event.data.callId,
|
|
253
|
-
name: event.data.toolName,
|
|
254
|
-
output: event.data.result,
|
|
255
|
-
},
|
|
256
|
-
});
|
|
257
|
-
state.toolOutputs.push({
|
|
258
|
-
callId: event.data.toolCallId || event.data.callId,
|
|
259
|
-
name: event.data.toolName,
|
|
260
|
-
output: event.data.result,
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
break;
|
|
264
|
-
case 'session.usage':
|
|
265
|
-
case 'assistant.usage':
|
|
266
|
-
if (event.data) {
|
|
267
|
-
state.usageData = event.data;
|
|
268
|
-
}
|
|
269
|
-
break;
|
|
270
|
-
case 'session.idle':
|
|
271
|
-
this.#loggingService.debug('GitHubCopilotDirect stream done', {
|
|
272
|
-
text: state.accumulated,
|
|
273
|
-
toolCalls: state.accumulatedToolCalls.length,
|
|
274
|
-
});
|
|
275
|
-
const output = this.#buildStreamOutput(state);
|
|
276
|
-
eventQueue.push({
|
|
277
|
-
type: 'response_done',
|
|
278
|
-
response: {
|
|
279
|
-
id: state.responseId,
|
|
280
|
-
usage: normalizeUsage(state.usageData),
|
|
281
|
-
output,
|
|
282
|
-
},
|
|
283
|
-
});
|
|
284
|
-
done = true;
|
|
285
|
-
break;
|
|
286
|
-
case 'session.error':
|
|
287
|
-
this.#loggingService.error('GitHubCopilotDirect session error', {
|
|
288
|
-
error: event.data?.message,
|
|
289
|
-
});
|
|
290
|
-
eventQueue.push({
|
|
291
|
-
type: 'model',
|
|
292
|
-
event: { type: 'error', message: event.data?.message || 'Unknown error' },
|
|
293
|
-
});
|
|
294
|
-
error = new Error(event.data?.message || 'Session error');
|
|
295
|
-
done = true;
|
|
296
|
-
break;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
catch (err) {
|
|
300
|
-
this.#loggingService.error('GitHubCopilotDirect event processing error', {
|
|
301
|
-
error: err.message,
|
|
302
|
-
eventType: event.type,
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
});
|
|
306
|
-
// Send the user message
|
|
307
|
-
try {
|
|
308
|
-
const lastUserMessage = messages.filter(m => m.role === 'user').pop();
|
|
309
|
-
const prompt = lastUserMessage?.content || '';
|
|
310
|
-
if (prompt) {
|
|
311
|
-
await session.send({ prompt });
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
catch (err) {
|
|
315
|
-
this.#loggingService.error('GitHubCopilotDirect send failed', {
|
|
316
|
-
error: err.message,
|
|
317
|
-
});
|
|
318
|
-
yield {
|
|
319
|
-
type: 'model',
|
|
320
|
-
event: { type: 'error', message: `Failed to send message: ${err.message}` },
|
|
321
|
-
};
|
|
322
|
-
try {
|
|
323
|
-
await session.abort();
|
|
324
|
-
}
|
|
325
|
-
catch {
|
|
326
|
-
// Ignore abort errors
|
|
327
|
-
}
|
|
328
|
-
unsubscribe();
|
|
329
|
-
this.#activeSessions.delete(session.sessionId);
|
|
330
|
-
return;
|
|
331
|
-
}
|
|
332
|
-
// Poll for events until done (with timeout)
|
|
333
|
-
const timeout = 300000; // 5 minute timeout
|
|
334
|
-
const startTime = Date.now();
|
|
335
|
-
while (!done && (Date.now() - startTime) < timeout) {
|
|
336
|
-
// Yield any queued events
|
|
337
|
-
while (eventQueue.length > 0) {
|
|
338
|
-
yield eventQueue.shift();
|
|
339
|
-
}
|
|
340
|
-
// Small delay to prevent tight loop
|
|
341
|
-
await new Promise(r => setTimeout(r, 10));
|
|
342
|
-
}
|
|
343
|
-
// Yield remaining events
|
|
344
|
-
while (eventQueue.length > 0) {
|
|
345
|
-
yield eventQueue.shift();
|
|
346
|
-
}
|
|
347
|
-
unsubscribe();
|
|
348
|
-
if (error) {
|
|
349
|
-
throw error;
|
|
350
|
-
}
|
|
351
|
-
if (!done) {
|
|
352
|
-
this.#loggingService.warn('GitHubCopilotDirect stream timeout');
|
|
353
|
-
yield {
|
|
354
|
-
type: 'model',
|
|
355
|
-
event: { type: 'error', message: 'Stream timeout' },
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* Build tool handlers that execute directly (no approval workflow)
|
|
361
|
-
*/
|
|
362
|
-
#buildCopilotToolHandlers() {
|
|
363
|
-
const handlers = [];
|
|
364
|
-
for (const [name, toolDef] of this.#toolMap) {
|
|
365
|
-
// Convert Zod schema to JSON Schema
|
|
366
|
-
const jsonSchema = zodToJsonSchema(toolDef.parameters, {
|
|
367
|
-
target: 'jsonSchema7',
|
|
368
|
-
});
|
|
369
|
-
handlers.push({
|
|
370
|
-
name,
|
|
371
|
-
description: toolDef.description,
|
|
372
|
-
parameters: jsonSchema,
|
|
373
|
-
handler: async (args, invocation) => {
|
|
374
|
-
this.#loggingService.debug('Executing tool directly', {
|
|
375
|
-
tool: name,
|
|
376
|
-
callId: invocation.toolCallId,
|
|
377
|
-
args,
|
|
378
|
-
});
|
|
379
|
-
try {
|
|
380
|
-
// Execute the tool directly
|
|
381
|
-
const result = await toolDef.execute(args);
|
|
382
|
-
this.#loggingService.debug('Tool execution completed', {
|
|
383
|
-
tool: name,
|
|
384
|
-
callId: invocation.toolCallId,
|
|
385
|
-
resultLength: typeof result === 'string' ? result.length : undefined,
|
|
386
|
-
});
|
|
387
|
-
return result;
|
|
388
|
-
}
|
|
389
|
-
catch (err) {
|
|
390
|
-
this.#loggingService.error('Tool execution failed', {
|
|
391
|
-
tool: name,
|
|
392
|
-
callId: invocation.toolCallId,
|
|
393
|
-
error: err.message,
|
|
394
|
-
});
|
|
395
|
-
return `Error executing ${name}: ${err.message}`;
|
|
396
|
-
}
|
|
397
|
-
},
|
|
398
|
-
});
|
|
399
|
-
}
|
|
400
|
-
return handlers;
|
|
401
|
-
}
|
|
402
|
-
#buildStreamOutput(state) {
|
|
403
|
-
const output = [];
|
|
404
|
-
// Add tool calls with their outputs
|
|
405
|
-
for (const toolCall of state.accumulatedToolCalls) {
|
|
406
|
-
const toolOutput = state.toolOutputs.find(o => o.callId === toolCall.callId);
|
|
407
|
-
output.push({
|
|
408
|
-
type: 'function_call',
|
|
409
|
-
callId: toolCall.callId,
|
|
410
|
-
name: toolCall.name,
|
|
411
|
-
arguments: toolCall.arguments,
|
|
412
|
-
status: 'completed',
|
|
413
|
-
});
|
|
414
|
-
if (toolOutput) {
|
|
415
|
-
output.push({
|
|
416
|
-
type: 'function_call_output',
|
|
417
|
-
callId: toolCall.callId,
|
|
418
|
-
output: toolOutput.output,
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
// Add assistant message if there's text content
|
|
423
|
-
if (state.accumulated) {
|
|
424
|
-
output.push({
|
|
425
|
-
type: 'message',
|
|
426
|
-
role: 'assistant',
|
|
427
|
-
status: 'completed',
|
|
428
|
-
content: [{ type: 'output_text', text: state.accumulated }],
|
|
429
|
-
...(state.accumulatedReasoningText
|
|
430
|
-
? { reasoning: state.accumulatedReasoningText }
|
|
431
|
-
: {}),
|
|
432
|
-
});
|
|
433
|
-
}
|
|
434
|
-
return output;
|
|
435
|
-
}
|
|
436
|
-
#resolveModelFromRequest(req) {
|
|
437
|
-
if (req?.providerData?.model) {
|
|
438
|
-
return req.providerData.model;
|
|
439
|
-
}
|
|
440
|
-
return undefined;
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
//# sourceMappingURL=model-direct.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-direct.js","sourceRoot":"","sources":["../../../source/providers/github-copilot/model-direct.ts"],"names":[],"mappings":"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"}
|