dexto 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -15
- package/dist/agents/agent-registry.json +9 -0
- package/dist/agents/coding-agent/coding-agent.yml +5 -0
- package/dist/agents/default-agent.yml +2 -2
- package/dist/api/server-hono.d.ts.map +1 -1
- package/dist/api/server-hono.js +39 -5
- package/dist/cli/cli-subscriber.d.ts.map +1 -1
- package/dist/cli/cli-subscriber.js +7 -1
- package/dist/cli/commands/helpers/formatters.d.ts.map +1 -1
- package/dist/cli/commands/helpers/formatters.js +2 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +14 -40
- package/dist/cli/commands/interactive-commands/command-parser.d.ts +17 -14
- package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/command-parser.js +0 -15
- package/dist/cli/commands/interactive-commands/commands.d.ts +4 -4
- package/dist/cli/commands/interactive-commands/commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/commands.js +34 -42
- package/dist/cli/commands/interactive-commands/documentation-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/documentation-commands.js +4 -7
- package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/general-commands.js +159 -117
- package/dist/cli/commands/interactive-commands/mcp/index.d.ts +9 -3
- package/dist/cli/commands/interactive-commands/mcp/index.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/mcp/index.js +18 -3
- package/dist/cli/commands/interactive-commands/model/index.d.ts +8 -6
- package/dist/cli/commands/interactive-commands/model/index.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/model/index.js +18 -6
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts +3 -2
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/prompt-commands.js +69 -52
- package/dist/cli/commands/interactive-commands/session/index.d.ts +7 -12
- package/dist/cli/commands/interactive-commands/session/index.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/session/index.js +7 -14
- package/dist/cli/commands/interactive-commands/session/session-commands.d.ts +10 -24
- package/dist/cli/commands/interactive-commands/session/session-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/session/session-commands.js +16 -371
- package/dist/cli/commands/interactive-commands/system/system-commands.d.ts +1 -0
- package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/system/system-commands.js +103 -74
- package/dist/cli/commands/interactive-commands/tool-commands.d.ts +1 -1
- package/dist/cli/commands/interactive-commands/tool-commands.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/tool-commands.js +5 -62
- package/dist/cli/commands/interactive-commands/utils/command-output.d.ts +13 -17
- package/dist/cli/commands/interactive-commands/utils/command-output.d.ts.map +1 -1
- package/dist/cli/commands/interactive-commands/utils/command-output.js +18 -37
- package/dist/cli/commands/list-agents.d.ts +2 -2
- package/dist/cli/commands/list-agents.d.ts.map +1 -1
- package/dist/cli/commands/list-agents.js +36 -32
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +4 -6
- package/dist/cli/commands/which.d.ts.map +1 -1
- package/dist/cli/commands/which.js +17 -3
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts +9 -22
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +1 -1
- package/dist/cli/ink-cli/InkCLIRefactored.js +50 -133
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +24 -3
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/ApprovalPrompt.js +160 -45
- package/dist/cli/ink-cli/components/ElicitationForm.d.ts +22 -0
- package/dist/cli/ink-cli/components/ElicitationForm.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/ElicitationForm.js +358 -0
- package/dist/cli/ink-cli/components/Footer.d.ts +16 -0
- package/dist/cli/ink-cli/components/Footer.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/Footer.js +27 -0
- package/dist/cli/ink-cli/components/HistorySearchBar.d.ts +17 -0
- package/dist/cli/ink-cli/components/HistorySearchBar.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/HistorySearchBar.js +8 -0
- package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts +15 -2
- package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/ResourceAutocomplete.js +126 -82
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts +15 -2
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +228 -122
- package/dist/cli/ink-cli/components/StatusBar.d.ts +15 -2
- package/dist/cli/ink-cli/components/StatusBar.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/StatusBar.js +46 -8
- package/dist/cli/ink-cli/components/TextBufferInput.d.ts +52 -0
- package/dist/cli/ink-cli/components/TextBufferInput.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/TextBufferInput.js +471 -0
- package/dist/cli/ink-cli/components/base/BaseSelector.d.ts +11 -1
- package/dist/cli/ink-cli/components/base/BaseSelector.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/base/BaseSelector.js +90 -49
- package/dist/cli/ink-cli/components/chat/Header.d.ts +1 -0
- package/dist/cli/ink-cli/components/chat/Header.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/Header.js +7 -2
- package/dist/cli/ink-cli/components/chat/MessageItem.d.ts +3 -0
- package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/MessageItem.js +95 -9
- package/dist/cli/ink-cli/components/chat/MessageList.js +1 -1
- package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts +16 -0
- package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.js +27 -0
- package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts +4 -2
- package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/chat/ToolIcon.js +19 -5
- package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts +10 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.js +6 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts +10 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.js +15 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts +10 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +9 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts +10 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.js +37 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts +10 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.js +9 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts +10 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.js +6 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts +10 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.js +29 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts +45 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.js +38 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts +10 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.js +6 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts +13 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/chat/styled-boxes/index.js +12 -0
- package/dist/cli/ink-cli/components/input/InputArea.d.ts +36 -8
- package/dist/cli/ink-cli/components/input/InputArea.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/input/InputArea.js +3 -3
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts +25 -0
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +166 -0
- package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts +27 -0
- package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/modes/StaticCLI.js +95 -0
- package/dist/cli/ink-cli/components/modes/index.d.ts +10 -0
- package/dist/cli/ink-cli/components/modes/index.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/modes/index.js +9 -0
- package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts +26 -0
- package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/ApiKeyInput.js +92 -0
- package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts +21 -0
- package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/CustomModelWizard.js +177 -0
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts +22 -0
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +59 -0
- package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts +22 -0
- package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/McpAddChoice.js +59 -0
- package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts +26 -0
- package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/McpAddSelector.js +73 -0
- package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts +21 -0
- package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.js +51 -0
- package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts +29 -0
- package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/McpCustomWizard.js +215 -0
- package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts +22 -0
- package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.js +74 -0
- package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts +21 -0
- package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/McpSelector.js +52 -0
- package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts +28 -0
- package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/McpServerActions.js +84 -0
- package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts +29 -0
- package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/McpServerList.js +109 -0
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts +15 -8
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +247 -24
- package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts +22 -0
- package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/PromptAddChoice.js +52 -0
- package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts +29 -0
- package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/PromptAddWizard.js +166 -0
- package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts +27 -0
- package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.js +119 -0
- package/dist/cli/ink-cli/components/overlays/PromptList.d.ts +33 -0
- package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/PromptList.js +144 -0
- package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts +23 -0
- package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/SearchOverlay.js +189 -0
- package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts +7 -2
- package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts.map +1 -1
- package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.js +19 -5
- package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts +21 -0
- package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.js +42 -0
- package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts +20 -0
- package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/StreamSelector.js +58 -0
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts +25 -0
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.js +400 -0
- package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts +21 -0
- package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/renderers/DiffRenderer.js +65 -0
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts +28 -0
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +66 -0
- package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts +19 -0
- package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/renderers/FileRenderer.js +26 -0
- package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts +21 -0
- package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/renderers/GenericRenderer.js +26 -0
- package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts +20 -0
- package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/renderers/SearchRenderer.js +12 -0
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts +21 -0
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.js +25 -0
- package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts +61 -0
- package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/renderers/diff-shared.js +158 -0
- package/dist/cli/ink-cli/components/renderers/index.d.ts +28 -0
- package/dist/cli/ink-cli/components/renderers/index.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/renderers/index.js +36 -0
- package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts +38 -0
- package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/shared/MarkdownText.js +360 -0
- package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts +44 -0
- package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/shared/VirtualizedList.js +300 -0
- package/dist/cli/ink-cli/components/shared/text-buffer.d.ts +185 -0
- package/dist/cli/ink-cli/components/shared/text-buffer.d.ts.map +1 -0
- package/dist/cli/ink-cli/components/shared/text-buffer.js +1338 -0
- package/dist/cli/ink-cli/constants/processingPhrases.d.ts +10 -0
- package/dist/cli/ink-cli/constants/processingPhrases.d.ts.map +1 -0
- package/dist/cli/ink-cli/constants/processingPhrases.js +64 -0
- package/dist/cli/ink-cli/constants/tips.d.ts +15 -0
- package/dist/cli/ink-cli/constants/tips.d.ts.map +1 -0
- package/dist/cli/ink-cli/constants/tips.js +53 -0
- package/dist/cli/ink-cli/containers/InputContainer.d.ts +42 -8
- package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +1 -1
- package/dist/cli/ink-cli/containers/InputContainer.js +491 -85
- package/dist/cli/ink-cli/containers/OverlayContainer.d.ts +23 -5
- package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +1 -1
- package/dist/cli/ink-cli/containers/OverlayContainer.js +1156 -130
- package/dist/cli/ink-cli/containers/index.d.ts +1 -1
- package/dist/cli/ink-cli/containers/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/contexts/KeypressContext.d.ts +36 -0
- package/dist/cli/ink-cli/contexts/KeypressContext.d.ts.map +1 -0
- package/dist/cli/ink-cli/contexts/KeypressContext.js +461 -0
- package/dist/cli/ink-cli/contexts/MouseContext.d.ts +27 -0
- package/dist/cli/ink-cli/contexts/MouseContext.d.ts.map +1 -0
- package/dist/cli/ink-cli/contexts/MouseContext.js +102 -0
- package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts +33 -0
- package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts.map +1 -0
- package/dist/cli/ink-cli/contexts/ScrollProvider.js +170 -0
- package/dist/cli/ink-cli/contexts/index.d.ts +7 -0
- package/dist/cli/ink-cli/contexts/index.d.ts.map +1 -0
- package/dist/cli/ink-cli/contexts/index.js +6 -0
- package/dist/cli/ink-cli/hooks/index.d.ts +5 -0
- package/dist/cli/ink-cli/hooks/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/index.js +6 -1
- package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts +26 -9
- package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useAgentEvents.js +86 -198
- package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts +14 -0
- package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useBatchedScroll.js +25 -0
- package/dist/cli/ink-cli/hooks/useCLIState.d.ts +50 -0
- package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useCLIState.js +188 -0
- package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts +24 -0
- package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useElapsedTime.js +69 -0
- package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts +61 -0
- package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useHistorySearch.js +210 -0
- package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts +136 -0
- package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useInputOrchestrator.js +663 -0
- package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.d.ts.map +1 -1
- package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.js +7 -26
- package/dist/cli/ink-cli/hooks/useKeypress.d.ts +18 -0
- package/dist/cli/ink-cli/hooks/useKeypress.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useKeypress.js +26 -0
- package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts +30 -0
- package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/usePhraseCycler.js +68 -0
- package/dist/cli/ink-cli/hooks/useStreaming.d.ts +19 -0
- package/dist/cli/ink-cli/hooks/useStreaming.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useStreaming.js +26 -0
- package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts +14 -0
- package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useTerminalSize.js +31 -0
- package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts +42 -0
- package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts.map +1 -0
- package/dist/cli/ink-cli/hooks/useTokenCounter.js +96 -0
- package/dist/cli/ink-cli/services/CommandService.d.ts +32 -1
- package/dist/cli/ink-cli/services/CommandService.d.ts.map +1 -1
- package/dist/cli/ink-cli/services/CommandService.js +36 -5
- package/dist/cli/ink-cli/services/InputService.d.ts +1 -5
- package/dist/cli/ink-cli/services/InputService.d.ts.map +1 -1
- package/dist/cli/ink-cli/services/InputService.js +1 -8
- package/dist/cli/ink-cli/services/index.d.ts +2 -1
- package/dist/cli/ink-cli/services/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/services/index.js +2 -1
- package/dist/cli/ink-cli/services/processStream.d.ts +69 -0
- package/dist/cli/ink-cli/services/processStream.d.ts.map +1 -0
- package/dist/cli/ink-cli/services/processStream.js +674 -0
- package/dist/cli/ink-cli/state/actions.d.ts +30 -60
- package/dist/cli/ink-cli/state/actions.d.ts.map +1 -1
- package/dist/cli/ink-cli/state/actions.js +3 -0
- package/dist/cli/ink-cli/state/index.d.ts +5 -3
- package/dist/cli/ink-cli/state/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/state/index.js +4 -3
- package/dist/cli/ink-cli/state/initialState.d.ts +4 -3
- package/dist/cli/ink-cli/state/initialState.d.ts.map +1 -1
- package/dist/cli/ink-cli/state/initialState.js +20 -4
- package/dist/cli/ink-cli/state/reducer.d.ts +3 -0
- package/dist/cli/ink-cli/state/reducer.d.ts.map +1 -1
- package/dist/cli/ink-cli/state/reducer.js +62 -168
- package/dist/cli/ink-cli/state/streaming-state.d.ts +27 -0
- package/dist/cli/ink-cli/state/streaming-state.d.ts.map +1 -0
- package/dist/cli/ink-cli/state/streaming-state.js +39 -0
- package/dist/cli/ink-cli/state/types.d.ts +222 -6
- package/dist/cli/ink-cli/state/types.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/bracketedPaste.d.ts +22 -0
- package/dist/cli/ink-cli/utils/bracketedPaste.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/bracketedPaste.js +27 -0
- package/dist/cli/ink-cli/utils/clipboardUtils.d.ts +49 -0
- package/dist/cli/ink-cli/utils/clipboardUtils.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/clipboardUtils.js +356 -0
- package/dist/cli/ink-cli/utils/commandOverlays.d.ts +33 -0
- package/dist/cli/ink-cli/utils/commandOverlays.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/commandOverlays.js +78 -0
- package/dist/cli/ink-cli/utils/debugLog.d.ts +38 -0
- package/dist/cli/ink-cli/utils/debugLog.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/debugLog.js +66 -0
- package/dist/cli/ink-cli/utils/index.d.ts +2 -1
- package/dist/cli/ink-cli/utils/index.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/index.js +3 -1
- package/dist/cli/ink-cli/utils/input.d.ts +25 -0
- package/dist/cli/ink-cli/utils/input.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/input.js +56 -0
- package/dist/cli/ink-cli/utils/inputParsing.d.ts +0 -9
- package/dist/cli/ink-cli/utils/inputParsing.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/inputParsing.js +0 -27
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts +54 -3
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +1 -1
- package/dist/cli/ink-cli/utils/messageFormatting.js +290 -20
- package/dist/cli/ink-cli/utils/mouse.d.ts +61 -0
- package/dist/cli/ink-cli/utils/mouse.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/mouse.js +209 -0
- package/dist/cli/ink-cli/utils/streamSplitter.d.ts +44 -0
- package/dist/cli/ink-cli/utils/streamSplitter.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/streamSplitter.js +154 -0
- package/dist/cli/ink-cli/utils/textUtils.d.ts +63 -0
- package/dist/cli/ink-cli/utils/textUtils.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/textUtils.js +248 -0
- package/dist/cli/ink-cli/utils/toolUtils.d.ts +9 -0
- package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +1 -0
- package/dist/cli/ink-cli/utils/toolUtils.js +13 -0
- package/dist/cli/utils/options.d.ts.map +1 -1
- package/dist/cli/utils/options.js +0 -2
- package/dist/config/cli-overrides.d.ts +1 -1
- package/dist/config/cli-overrides.d.ts.map +1 -1
- package/dist/config/cli-overrides.js +5 -10
- package/dist/index.js +66 -48
- package/dist/utils/agent-helpers.d.ts +95 -0
- package/dist/utils/agent-helpers.d.ts.map +1 -0
- package/dist/utils/agent-helpers.js +117 -0
- package/dist/webui/assets/index-BkwPkZpd.css +1 -0
- package/dist/webui/assets/index-D9u1XfyH.js +2025 -0
- package/dist/webui/assets/{tanstack-DgxBONJY.js → tanstack-Br79RQ-n.js} +1 -1
- package/dist/webui/index.html +3 -3
- package/package.json +16 -14
- package/dist/cli/commands/interactive-commands/index.d.ts +0 -63
- package/dist/cli/commands/interactive-commands/index.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/index.js +0 -73
- package/dist/cli/commands/interactive-commands/mcp/mcp-add-utils.d.ts +0 -34
- package/dist/cli/commands/interactive-commands/mcp/mcp-add-utils.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/mcp/mcp-add-utils.js +0 -178
- package/dist/cli/commands/interactive-commands/mcp/mcp-commands.d.ts +0 -9
- package/dist/cli/commands/interactive-commands/mcp/mcp-commands.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/mcp/mcp-commands.js +0 -325
- package/dist/cli/commands/interactive-commands/model/model-commands.d.ts +0 -21
- package/dist/cli/commands/interactive-commands/model/model-commands.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/model/model-commands.js +0 -190
- package/dist/cli/ink-cli/components/MultiLineTextInput.d.ts +0 -26
- package/dist/cli/ink-cli/components/MultiLineTextInput.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/MultiLineTextInput.js +0 -220
- package/dist/discord/bot.d.ts +0 -4
- package/dist/discord/bot.d.ts.map +0 -1
- package/dist/discord/bot.js +0 -193
- package/dist/telegram/bot.d.ts +0 -5
- package/dist/telegram/bot.d.ts.map +0 -1
- package/dist/telegram/bot.js +0 -251
- package/dist/webui/assets/index-DKq5Xng1.js +0 -687
- package/dist/webui/assets/index-D_0_GBu5.css +0 -1
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clipboard utilities for reading images from system clipboard
|
|
3
|
+
*
|
|
4
|
+
* Supports macOS, Windows/WSL, and Linux (Wayland + X11).
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
8
|
+
import { platform, release } from 'node:os';
|
|
9
|
+
import * as fs from 'node:fs/promises';
|
|
10
|
+
import * as path from 'node:path';
|
|
11
|
+
import * as os from 'node:os';
|
|
12
|
+
/**
|
|
13
|
+
* Execute a command and return stdout as a buffer
|
|
14
|
+
* @param command - The command to execute
|
|
15
|
+
* @param args - Command arguments
|
|
16
|
+
* @param timeoutMs - Timeout in milliseconds (default: 10000)
|
|
17
|
+
*/
|
|
18
|
+
async function execCommand(command, args, timeoutMs = 10000) {
|
|
19
|
+
return new Promise((resolve) => {
|
|
20
|
+
let timedOut = false;
|
|
21
|
+
const proc = spawn(command, args);
|
|
22
|
+
const stdoutChunks = [];
|
|
23
|
+
let stderr = '';
|
|
24
|
+
const timer = setTimeout(() => {
|
|
25
|
+
timedOut = true;
|
|
26
|
+
proc.kill();
|
|
27
|
+
resolve({
|
|
28
|
+
stdout: Buffer.concat(stdoutChunks),
|
|
29
|
+
stderr: stderr + '\nCommand timed out',
|
|
30
|
+
exitCode: 1,
|
|
31
|
+
});
|
|
32
|
+
}, timeoutMs);
|
|
33
|
+
proc.stdout.on('data', (chunk) => {
|
|
34
|
+
stdoutChunks.push(chunk);
|
|
35
|
+
});
|
|
36
|
+
proc.stderr.on('data', (chunk) => {
|
|
37
|
+
stderr += chunk.toString();
|
|
38
|
+
});
|
|
39
|
+
proc.on('close', (exitCode) => {
|
|
40
|
+
if (timedOut)
|
|
41
|
+
return;
|
|
42
|
+
clearTimeout(timer);
|
|
43
|
+
resolve({
|
|
44
|
+
stdout: Buffer.concat(stdoutChunks),
|
|
45
|
+
stderr,
|
|
46
|
+
exitCode: exitCode ?? 1,
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
proc.on('error', () => {
|
|
50
|
+
if (timedOut)
|
|
51
|
+
return;
|
|
52
|
+
clearTimeout(timer);
|
|
53
|
+
resolve({
|
|
54
|
+
stdout: Buffer.concat(stdoutChunks),
|
|
55
|
+
stderr,
|
|
56
|
+
exitCode: 1,
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Execute an osascript command and return stdout as string
|
|
63
|
+
*/
|
|
64
|
+
async function execOsascript(script) {
|
|
65
|
+
const result = await execCommand('osascript', ['-e', script]);
|
|
66
|
+
return {
|
|
67
|
+
stdout: result.stdout.toString().trim(),
|
|
68
|
+
success: result.exitCode === 0,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Read image from clipboard on macOS
|
|
73
|
+
* Uses osascript to save clipboard image to temp file, reads it, then cleans up
|
|
74
|
+
*/
|
|
75
|
+
async function readClipboardImageMacOS() {
|
|
76
|
+
const tmpFile = path.join(os.tmpdir(), `dexto-clipboard-${Date.now()}-${process.pid}.png`);
|
|
77
|
+
try {
|
|
78
|
+
// AppleScript to save clipboard image as PNG to temp file
|
|
79
|
+
const script = `
|
|
80
|
+
set imageData to the clipboard as "PNGf"
|
|
81
|
+
set fileRef to open for access POSIX file "${tmpFile}" with write permission
|
|
82
|
+
set eof fileRef to 0
|
|
83
|
+
write imageData to fileRef
|
|
84
|
+
close access fileRef
|
|
85
|
+
`;
|
|
86
|
+
const result = await execOsascript(script);
|
|
87
|
+
if (!result.success) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
// Read the temp file
|
|
91
|
+
const buffer = await fs.readFile(tmpFile);
|
|
92
|
+
if (buffer.length === 0) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
data: buffer.toString('base64'),
|
|
97
|
+
mimeType: 'image/png',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
// Clean up temp file
|
|
105
|
+
try {
|
|
106
|
+
await fs.unlink(tmpFile);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Ignore cleanup errors
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Read image from clipboard on Windows (including WSL)
|
|
115
|
+
* Uses PowerShell to get clipboard image and convert to base64
|
|
116
|
+
*/
|
|
117
|
+
async function readClipboardImageWindows() {
|
|
118
|
+
try {
|
|
119
|
+
// PowerShell script to get clipboard image as base64 PNG
|
|
120
|
+
const script = `
|
|
121
|
+
Add-Type -AssemblyName System.Windows.Forms
|
|
122
|
+
$img = [System.Windows.Forms.Clipboard]::GetImage()
|
|
123
|
+
if ($img) {
|
|
124
|
+
$ms = New-Object System.IO.MemoryStream
|
|
125
|
+
$img.Save($ms, [System.Drawing.Imaging.ImageFormat]::Png)
|
|
126
|
+
[System.Convert]::ToBase64String($ms.ToArray())
|
|
127
|
+
}
|
|
128
|
+
`.trim();
|
|
129
|
+
// Use powershell.exe for both native Windows and WSL (works on both)
|
|
130
|
+
const powershellCmd = 'powershell.exe';
|
|
131
|
+
const result = await execCommand(powershellCmd, ['-command', script]);
|
|
132
|
+
const base64 = result.stdout.toString().trim();
|
|
133
|
+
if (!base64 || result.exitCode !== 0) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
// Validate it's actually base64 data
|
|
137
|
+
const buffer = Buffer.from(base64, 'base64');
|
|
138
|
+
if (buffer.length === 0) {
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
data: base64,
|
|
143
|
+
mimeType: 'image/png',
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if current environment is WSL (Windows Subsystem for Linux)
|
|
152
|
+
* Checks for both 'wsl' (WSL2) and 'microsoft' (WSL1) in kernel release
|
|
153
|
+
*/
|
|
154
|
+
function isWSL() {
|
|
155
|
+
if (platform() !== 'linux')
|
|
156
|
+
return false;
|
|
157
|
+
const rel = release().toLowerCase();
|
|
158
|
+
return rel.includes('wsl') || rel.includes('microsoft');
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Read image from clipboard on Linux
|
|
162
|
+
* Tries Wayland (wl-paste) first, then X11 (xclip)
|
|
163
|
+
*/
|
|
164
|
+
async function readClipboardImageLinux() {
|
|
165
|
+
// Try Wayland first (wl-paste)
|
|
166
|
+
try {
|
|
167
|
+
const result = await execCommand('wl-paste', ['-t', 'image/png']);
|
|
168
|
+
if (result.exitCode === 0 && result.stdout.length > 0) {
|
|
169
|
+
return {
|
|
170
|
+
data: result.stdout.toString('base64'),
|
|
171
|
+
mimeType: 'image/png',
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// wl-paste not available or failed, try xclip
|
|
177
|
+
}
|
|
178
|
+
// Try X11 (xclip)
|
|
179
|
+
try {
|
|
180
|
+
const result = await execCommand('xclip', [
|
|
181
|
+
'-selection',
|
|
182
|
+
'clipboard',
|
|
183
|
+
'-t',
|
|
184
|
+
'image/png',
|
|
185
|
+
'-o',
|
|
186
|
+
]);
|
|
187
|
+
if (result.exitCode === 0 && result.stdout.length > 0) {
|
|
188
|
+
return {
|
|
189
|
+
data: result.stdout.toString('base64'),
|
|
190
|
+
mimeType: 'image/png',
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// xclip not available or failed
|
|
196
|
+
}
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Read image from system clipboard
|
|
201
|
+
*
|
|
202
|
+
* @returns ClipboardImageContent if clipboard contains an image, undefined otherwise
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* const image = await readClipboardImage();
|
|
207
|
+
* if (image) {
|
|
208
|
+
* console.log(`Got ${image.mimeType} image, ${image.data.length} bytes base64`);
|
|
209
|
+
* }
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
export async function readClipboardImage() {
|
|
213
|
+
const os = platform();
|
|
214
|
+
if (os === 'darwin') {
|
|
215
|
+
return readClipboardImageMacOS();
|
|
216
|
+
}
|
|
217
|
+
if (os === 'win32' || isWSL()) {
|
|
218
|
+
return readClipboardImageWindows();
|
|
219
|
+
}
|
|
220
|
+
if (os === 'linux') {
|
|
221
|
+
return readClipboardImageLinux();
|
|
222
|
+
}
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Write text to system clipboard
|
|
227
|
+
*
|
|
228
|
+
* @param text - The text to copy to clipboard
|
|
229
|
+
* @returns true if successful, false otherwise
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* const success = await writeToClipboard('Hello, World!');
|
|
234
|
+
* if (success) {
|
|
235
|
+
* console.log('Copied to clipboard');
|
|
236
|
+
* }
|
|
237
|
+
* ```
|
|
238
|
+
*/
|
|
239
|
+
export async function writeToClipboard(text) {
|
|
240
|
+
const os = platform();
|
|
241
|
+
try {
|
|
242
|
+
if (os === 'darwin') {
|
|
243
|
+
// macOS: use pbcopy
|
|
244
|
+
const proc = spawn('pbcopy');
|
|
245
|
+
proc.stdin.write(text);
|
|
246
|
+
proc.stdin.end();
|
|
247
|
+
return new Promise((resolve) => {
|
|
248
|
+
proc.on('close', (code) => resolve(code === 0));
|
|
249
|
+
proc.on('error', () => resolve(false));
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
if (os === 'win32' || isWSL()) {
|
|
253
|
+
// Windows/WSL: use clip.exe (simpler than PowerShell)
|
|
254
|
+
const proc = spawn('clip.exe');
|
|
255
|
+
proc.stdin.write(text);
|
|
256
|
+
proc.stdin.end();
|
|
257
|
+
return new Promise((resolve) => {
|
|
258
|
+
proc.on('close', (code) => resolve(code === 0));
|
|
259
|
+
proc.on('error', () => resolve(false));
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
if (os === 'linux') {
|
|
263
|
+
// Try Wayland first (wl-copy), fall back to X11 (xclip)
|
|
264
|
+
const tryClipboardTool = (cmd, args = []) => {
|
|
265
|
+
return new Promise((resolve) => {
|
|
266
|
+
const proc = spawn(cmd, args);
|
|
267
|
+
let errorOccurred = false;
|
|
268
|
+
proc.on('error', () => {
|
|
269
|
+
errorOccurred = true;
|
|
270
|
+
resolve(false);
|
|
271
|
+
});
|
|
272
|
+
proc.stdin.write(text);
|
|
273
|
+
proc.stdin.end();
|
|
274
|
+
proc.on('close', (code) => {
|
|
275
|
+
if (!errorOccurred) {
|
|
276
|
+
resolve(code === 0);
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
};
|
|
281
|
+
// Try wl-copy first, then xclip
|
|
282
|
+
const wlResult = await tryClipboardTool('wl-copy');
|
|
283
|
+
if (wlResult)
|
|
284
|
+
return true;
|
|
285
|
+
return tryClipboardTool('xclip', ['-selection', 'clipboard']);
|
|
286
|
+
}
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Check if clipboard contains an image (without reading it)
|
|
295
|
+
* This is a lighter-weight check that doesn't require reading the full image data.
|
|
296
|
+
*
|
|
297
|
+
* @returns true if clipboard likely contains an image
|
|
298
|
+
*/
|
|
299
|
+
export async function clipboardHasImage() {
|
|
300
|
+
const os = platform();
|
|
301
|
+
if (os === 'darwin') {
|
|
302
|
+
try {
|
|
303
|
+
const result = await execOsascript('clipboard info');
|
|
304
|
+
// Check for image types in clipboard info
|
|
305
|
+
const imageRegex = /«class PNGf»|TIFF picture|JPEG picture|GIF picture|«class JPEG»|«class TIFF»/;
|
|
306
|
+
return imageRegex.test(result.stdout);
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if (os === 'win32' || isWSL()) {
|
|
313
|
+
try {
|
|
314
|
+
// Quick check if clipboard has an image
|
|
315
|
+
const script = `
|
|
316
|
+
Add-Type -AssemblyName System.Windows.Forms
|
|
317
|
+
[System.Windows.Forms.Clipboard]::ContainsImage()
|
|
318
|
+
`.trim();
|
|
319
|
+
const powershellCmd = 'powershell.exe';
|
|
320
|
+
const result = await execCommand(powershellCmd, ['-command', script]);
|
|
321
|
+
return result.stdout.toString().trim().toLowerCase() === 'true';
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (os === 'linux') {
|
|
328
|
+
// Try Wayland first
|
|
329
|
+
try {
|
|
330
|
+
const result = await execCommand('wl-paste', ['--list-types']);
|
|
331
|
+
if (result.exitCode === 0 && result.stdout.toString().includes('image/')) {
|
|
332
|
+
return true;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
// Try X11
|
|
337
|
+
}
|
|
338
|
+
// Try X11
|
|
339
|
+
try {
|
|
340
|
+
const result = await execCommand('xclip', [
|
|
341
|
+
'-selection',
|
|
342
|
+
'clipboard',
|
|
343
|
+
'-t',
|
|
344
|
+
'TARGETS',
|
|
345
|
+
'-o',
|
|
346
|
+
]);
|
|
347
|
+
if (result.exitCode === 0 && result.stdout.toString().includes('image/')) {
|
|
348
|
+
return true;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
// xclip not available
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return false;
|
|
356
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Overlay Registry
|
|
3
|
+
*
|
|
4
|
+
* Central source of truth for command-to-overlay mappings.
|
|
5
|
+
* When adding a new interactive command, add it here - no other files need changes.
|
|
6
|
+
*/
|
|
7
|
+
import type { OverlayType } from '../state/types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get the overlay for a command submission (with parsed args).
|
|
10
|
+
* Used by InputContainer.handleSubmit
|
|
11
|
+
*
|
|
12
|
+
* @param command - The base command name (e.g., 'mcp', 'search')
|
|
13
|
+
* @param args - Arguments passed to the command
|
|
14
|
+
* @returns Overlay type to show, or null to execute command handler
|
|
15
|
+
*/
|
|
16
|
+
export declare function getCommandOverlay(command: string, args: string[]): OverlayType | null;
|
|
17
|
+
/**
|
|
18
|
+
* Get the overlay for a command selected from autocomplete.
|
|
19
|
+
* Used by OverlayContainer.handleSystemCommandSelect
|
|
20
|
+
*
|
|
21
|
+
* When selecting from autocomplete, there are never args -
|
|
22
|
+
* we just need to know if this command has an overlay.
|
|
23
|
+
*
|
|
24
|
+
* @param command - The command name selected from autocomplete
|
|
25
|
+
* @returns Overlay type to show, or null to execute command
|
|
26
|
+
*/
|
|
27
|
+
export declare function getCommandOverlayForSelect(command: string): OverlayType | null;
|
|
28
|
+
/**
|
|
29
|
+
* Check if a command has any overlay behavior.
|
|
30
|
+
* Useful for determining if a command should be handled specially.
|
|
31
|
+
*/
|
|
32
|
+
export declare function isInteractiveCommand(command: string): boolean;
|
|
33
|
+
//# sourceMappingURL=commandOverlays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commandOverlays.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/commandOverlays.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA2BrD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAYrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAU9E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Overlay Registry
|
|
3
|
+
*
|
|
4
|
+
* Central source of truth for command-to-overlay mappings.
|
|
5
|
+
* When adding a new interactive command, add it here - no other files need changes.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Commands that ALWAYS show an overlay when invoked.
|
|
9
|
+
* These commands have no handler logic - the overlay IS the functionality.
|
|
10
|
+
*/
|
|
11
|
+
const ALWAYS_OVERLAY = {
|
|
12
|
+
search: 'search',
|
|
13
|
+
find: 'search', // alias
|
|
14
|
+
model: 'model-selector',
|
|
15
|
+
resume: 'session-selector',
|
|
16
|
+
switch: 'session-selector',
|
|
17
|
+
stream: 'stream-selector',
|
|
18
|
+
tools: 'tool-browser',
|
|
19
|
+
mcp: 'mcp-server-list',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Commands that show an overlay ONLY when invoked without arguments.
|
|
23
|
+
* With arguments, they execute their handler instead.
|
|
24
|
+
*/
|
|
25
|
+
const NO_ARGS_OVERLAY = {
|
|
26
|
+
session: 'session-subcommand-selector',
|
|
27
|
+
log: 'log-level-selector',
|
|
28
|
+
prompts: 'prompt-list',
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Get the overlay for a command submission (with parsed args).
|
|
32
|
+
* Used by InputContainer.handleSubmit
|
|
33
|
+
*
|
|
34
|
+
* @param command - The base command name (e.g., 'mcp', 'search')
|
|
35
|
+
* @param args - Arguments passed to the command
|
|
36
|
+
* @returns Overlay type to show, or null to execute command handler
|
|
37
|
+
*/
|
|
38
|
+
export function getCommandOverlay(command, args) {
|
|
39
|
+
// Commands that always show overlay
|
|
40
|
+
const alwaysOverlay = ALWAYS_OVERLAY[command];
|
|
41
|
+
if (alwaysOverlay)
|
|
42
|
+
return alwaysOverlay;
|
|
43
|
+
// Commands that show overlay only when no args
|
|
44
|
+
if (args.length === 0) {
|
|
45
|
+
const noArgsOverlay = NO_ARGS_OVERLAY[command];
|
|
46
|
+
if (noArgsOverlay)
|
|
47
|
+
return noArgsOverlay;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get the overlay for a command selected from autocomplete.
|
|
53
|
+
* Used by OverlayContainer.handleSystemCommandSelect
|
|
54
|
+
*
|
|
55
|
+
* When selecting from autocomplete, there are never args -
|
|
56
|
+
* we just need to know if this command has an overlay.
|
|
57
|
+
*
|
|
58
|
+
* @param command - The command name selected from autocomplete
|
|
59
|
+
* @returns Overlay type to show, or null to execute command
|
|
60
|
+
*/
|
|
61
|
+
export function getCommandOverlayForSelect(command) {
|
|
62
|
+
// Check "always overlay" commands first
|
|
63
|
+
const alwaysOverlay = ALWAYS_OVERLAY[command];
|
|
64
|
+
if (alwaysOverlay)
|
|
65
|
+
return alwaysOverlay;
|
|
66
|
+
// Check "no args overlay" commands (selecting = no args)
|
|
67
|
+
const noArgsOverlay = NO_ARGS_OVERLAY[command];
|
|
68
|
+
if (noArgsOverlay)
|
|
69
|
+
return noArgsOverlay;
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if a command has any overlay behavior.
|
|
74
|
+
* Useful for determining if a command should be handled specially.
|
|
75
|
+
*/
|
|
76
|
+
export function isInteractiveCommand(command) {
|
|
77
|
+
return command in ALWAYS_OVERLAY || command in NO_ARGS_OVERLAY;
|
|
78
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug Logging Utility
|
|
3
|
+
*
|
|
4
|
+
* Cross-platform debug logging that writes to temp directory.
|
|
5
|
+
* Controlled via environment variables for easy enable/disable.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { createDebugLogger } from './debugLog.js';
|
|
9
|
+
* const debug = createDebugLogger('stream');
|
|
10
|
+
* debug.log('EVENT', { foo: 'bar' });
|
|
11
|
+
*
|
|
12
|
+
* Enable via environment:
|
|
13
|
+
* DEXTO_DEBUG_STREAM=true dexto
|
|
14
|
+
* DEXTO_DEBUG_ALL=true dexto (enables all debug loggers)
|
|
15
|
+
*/
|
|
16
|
+
export interface DebugLogger {
|
|
17
|
+
/** Log a message with optional data */
|
|
18
|
+
log: (msg: string, data?: Record<string, unknown>) => void;
|
|
19
|
+
/** Check if debug logging is enabled */
|
|
20
|
+
isEnabled: () => boolean;
|
|
21
|
+
/** Get the log file path */
|
|
22
|
+
getLogPath: () => string;
|
|
23
|
+
/** Clear the log file and write a header */
|
|
24
|
+
reset: (header?: string) => void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates a debug logger for a specific component.
|
|
28
|
+
*
|
|
29
|
+
* @param name Component name (used in env var and filename)
|
|
30
|
+
* @returns Debug logger instance
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* const debug = createDebugLogger('stream');
|
|
34
|
+
* // Enabled via DEXTO_DEBUG_STREAM=true or DEXTO_DEBUG_ALL=true
|
|
35
|
+
* // Writes to: {tmpdir}/dexto-debug-stream.log
|
|
36
|
+
*/
|
|
37
|
+
export declare function createDebugLogger(name: string): DebugLogger;
|
|
38
|
+
//# sourceMappingURL=debugLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debugLog.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/debugLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,WAAW;IACxB,uCAAuC;IACvC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC3D,wCAAwC;IACxC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,4CAA4C;IAC5C,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAsC3D"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug Logging Utility
|
|
3
|
+
*
|
|
4
|
+
* Cross-platform debug logging that writes to temp directory.
|
|
5
|
+
* Controlled via environment variables for easy enable/disable.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* import { createDebugLogger } from './debugLog.js';
|
|
9
|
+
* const debug = createDebugLogger('stream');
|
|
10
|
+
* debug.log('EVENT', { foo: 'bar' });
|
|
11
|
+
*
|
|
12
|
+
* Enable via environment:
|
|
13
|
+
* DEXTO_DEBUG_STREAM=true dexto
|
|
14
|
+
* DEXTO_DEBUG_ALL=true dexto (enables all debug loggers)
|
|
15
|
+
*/
|
|
16
|
+
import { appendFileSync, writeFileSync } from 'fs';
|
|
17
|
+
import { tmpdir } from 'os';
|
|
18
|
+
import { join } from 'path';
|
|
19
|
+
/**
|
|
20
|
+
* Creates a debug logger for a specific component.
|
|
21
|
+
*
|
|
22
|
+
* @param name Component name (used in env var and filename)
|
|
23
|
+
* @returns Debug logger instance
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const debug = createDebugLogger('stream');
|
|
27
|
+
* // Enabled via DEXTO_DEBUG_STREAM=true or DEXTO_DEBUG_ALL=true
|
|
28
|
+
* // Writes to: {tmpdir}/dexto-debug-stream.log
|
|
29
|
+
*/
|
|
30
|
+
export function createDebugLogger(name) {
|
|
31
|
+
const envVar = `DEXTO_DEBUG_${name.toUpperCase()}`;
|
|
32
|
+
const logPath = join(tmpdir(), `dexto-debug-${name.toLowerCase()}.log`);
|
|
33
|
+
const isEnabled = () => {
|
|
34
|
+
return process.env[envVar] === 'true' || process.env.DEXTO_DEBUG_ALL === 'true';
|
|
35
|
+
};
|
|
36
|
+
const log = (msg, data) => {
|
|
37
|
+
if (!isEnabled())
|
|
38
|
+
return;
|
|
39
|
+
try {
|
|
40
|
+
const timestamp = new Date().toISOString().split('T')[1];
|
|
41
|
+
const dataStr = data ? ` ${JSON.stringify(data)}` : '';
|
|
42
|
+
const line = `[${timestamp}] ${msg}${dataStr}\n`;
|
|
43
|
+
appendFileSync(logPath, line);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Silently ignore serialization and write errors in debug logging
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const reset = (header) => {
|
|
50
|
+
if (!isEnabled())
|
|
51
|
+
return;
|
|
52
|
+
const defaultHeader = `=== DEXTO DEBUG [${name.toUpperCase()}] ${new Date().toISOString()} ===`;
|
|
53
|
+
try {
|
|
54
|
+
writeFileSync(logPath, `${header ?? defaultHeader}\n`);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Silently ignore write errors in debug logging
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
return {
|
|
61
|
+
log,
|
|
62
|
+
isEnabled,
|
|
63
|
+
getLogPath: () => logPath,
|
|
64
|
+
reset,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Utils module exports
|
|
3
3
|
*/
|
|
4
|
-
export { type AutocompleteType,
|
|
4
|
+
export { type AutocompleteType, detectAutocompleteType, extractSlashQuery, extractResourceQuery, findActiveAtIndex, } from './inputParsing.js';
|
|
5
|
+
export { getCommandOverlay, getCommandOverlayForSelect, isInteractiveCommand, } from './commandOverlays.js';
|
|
5
6
|
export { createUserMessage, createSystemMessage, createErrorMessage, createToolMessage, createStreamingMessage, convertHistoryToUIMessages, getStartupInfo, } from './messageFormatting.js';
|
|
6
7
|
export { generateMessageId } from './idGenerator.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACH,KAAK,gBAAgB,EACrB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACH,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,GACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Utils module exports
|
|
3
3
|
*/
|
|
4
4
|
// Input parsing
|
|
5
|
-
export { detectAutocompleteType,
|
|
5
|
+
export { detectAutocompleteType, extractSlashQuery, extractResourceQuery, findActiveAtIndex, } from './inputParsing.js';
|
|
6
|
+
// Command overlays (central registry)
|
|
7
|
+
export { getCommandOverlay, getCommandOverlayForSelect, isInteractiveCommand, } from './commandOverlays.js';
|
|
6
8
|
// Message formatting
|
|
7
9
|
export { createUserMessage, createSystemMessage, createErrorMessage, createToolMessage, createStreamingMessage, convertHistoryToUIMessages, getStartupInfo, } from './messageFormatting.js';
|
|
8
10
|
// ID generation
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input Utilities
|
|
3
|
+
* Constants and helpers for parsing terminal input sequences.
|
|
4
|
+
*/
|
|
5
|
+
export declare const ESC = "\u001B";
|
|
6
|
+
export declare const SGR_EVENT_PREFIX = "\u001B[<";
|
|
7
|
+
export declare const X11_EVENT_PREFIX = "\u001B[M";
|
|
8
|
+
export declare const FOCUS_IN = "\u001B[I";
|
|
9
|
+
export declare const FOCUS_OUT = "\u001B[O";
|
|
10
|
+
export declare const SGR_MOUSE_REGEX: RegExp;
|
|
11
|
+
export declare const X11_MOUSE_REGEX: RegExp;
|
|
12
|
+
/**
|
|
13
|
+
* Check if buffer could be a SGR mouse sequence (or prefix thereof)
|
|
14
|
+
*/
|
|
15
|
+
export declare function couldBeSGRMouseSequence(buffer: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Check if buffer could be any mouse sequence (or prefix thereof)
|
|
18
|
+
*/
|
|
19
|
+
export declare function couldBeMouseSequence(buffer: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Get the length of a complete mouse sequence at the start of buffer.
|
|
22
|
+
* Returns 0 if no complete sequence found.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getMouseSequenceLength(buffer: string): number;
|
|
25
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,GAAG,WAAW,CAAC;AAC5B,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAG3C,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,SAAS,aAAa,CAAC;AAKpC,eAAO,MAAM,eAAe,QAA2D,CAAC;AACxF,eAAO,MAAM,eAAe,QAA8C,CAAC;AAE3E;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAO/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAS5D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ7D"}
|