dexto 1.6.1 → 1.6.3
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/analytics/wrapper.js +1 -1
- package/dist/cli/auth/dexto-api-key.d.ts +34 -0
- package/dist/cli/auth/dexto-api-key.d.ts.map +1 -0
- package/dist/cli/auth/dexto-api-key.js +161 -0
- package/dist/cli/auth/index.d.ts +2 -1
- package/dist/cli/auth/index.d.ts.map +1 -1
- package/dist/cli/auth/index.js +2 -1
- package/dist/cli/auth/oauth.d.ts +10 -0
- package/dist/cli/auth/oauth.d.ts.map +1 -1
- package/dist/cli/auth/oauth.js +142 -39
- package/dist/cli/auth/service.d.ts +1 -0
- package/dist/cli/auth/service.d.ts.map +1 -1
- package/dist/cli/auth/service.js +1 -0
- package/dist/cli/commands/auth/login.d.ts.map +1 -1
- package/dist/cli/commands/auth/login.js +40 -105
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +157 -120
- package/dist/cli/utils/config-validation.js +3 -3
- package/dist/cli/utils/options.d.ts.map +1 -1
- package/dist/cli/utils/options.js +6 -0
- package/dist/cli/utils/scaffolding-utils.d.ts.map +1 -1
- package/dist/cli/utils/scaffolding-utils.js +38 -4
- package/dist/index-main.js +78 -11
- package/dist/index.js +12 -0
- package/dist/web.d.ts.map +1 -1
- package/dist/web.js +18 -11
- package/dist/webui/assets/index-d6c-yJNn.js +2059 -0
- package/dist/webui/assets/index-yKdFLN1k.css +1 -0
- package/dist/webui/assets/react-vendor-l0sNRNKZ.js +1 -0
- package/dist/webui/assets/tanstack-BjCuxfF-.js +41 -0
- package/dist/webui/index.html +3 -4
- package/package.json +13 -23
- package/dist/cli/assets/sounds/SOURCES.md +0 -35
- package/dist/cli/assets/sounds/boot.wav +0 -0
- package/dist/cli/assets/sounds/chime.wav +0 -0
- package/dist/cli/assets/sounds/coin.wav +0 -0
- package/dist/cli/assets/sounds/confirm.wav +0 -0
- package/dist/cli/assets/sounds/levelup.wav +0 -0
- package/dist/cli/assets/sounds/ping.wav +0 -0
- package/dist/cli/assets/sounds/powerup.wav +0 -0
- package/dist/cli/assets/sounds/startup.wav +0 -0
- package/dist/cli/assets/sounds/success.wav +0 -0
- package/dist/cli/assets/sounds/treasure.wav +0 -0
- package/dist/cli/assets/sounds/win.wav +0 -0
- package/dist/cli/commands/interactive-commands/auth/index.d.ts +0 -12
- package/dist/cli/commands/interactive-commands/auth/index.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/auth/index.js +0 -20
- package/dist/cli/commands/interactive-commands/command-parser.d.ts +0 -56
- package/dist/cli/commands/interactive-commands/command-parser.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/command-parser.js +0 -173
- package/dist/cli/commands/interactive-commands/commands.d.ts +0 -52
- package/dist/cli/commands/interactive-commands/commands.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/commands.js +0 -142
- package/dist/cli/commands/interactive-commands/documentation-commands.d.ts +0 -15
- package/dist/cli/commands/interactive-commands/documentation-commands.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/documentation-commands.js +0 -39
- package/dist/cli/commands/interactive-commands/exit-handler.d.ts +0 -12
- package/dist/cli/commands/interactive-commands/exit-handler.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/exit-handler.js +0 -20
- package/dist/cli/commands/interactive-commands/exit-stats.d.ts +0 -24
- package/dist/cli/commands/interactive-commands/exit-stats.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/exit-stats.js +0 -17
- package/dist/cli/commands/interactive-commands/export/index.d.ts +0 -13
- package/dist/cli/commands/interactive-commands/export/index.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/export/index.js +0 -21
- package/dist/cli/commands/interactive-commands/general-commands.d.ts +0 -22
- package/dist/cli/commands/interactive-commands/general-commands.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/general-commands.js +0 -508
- package/dist/cli/commands/interactive-commands/mcp/index.d.ts +0 -13
- package/dist/cli/commands/interactive-commands/mcp/index.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/mcp/index.js +0 -18
- package/dist/cli/commands/interactive-commands/model/index.d.ts +0 -13
- package/dist/cli/commands/interactive-commands/model/index.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/model/index.js +0 -19
- package/dist/cli/commands/interactive-commands/plugin/index.d.ts +0 -13
- package/dist/cli/commands/interactive-commands/plugin/index.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/plugin/index.js +0 -18
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts +0 -25
- package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/prompt-commands.js +0 -284
- package/dist/cli/commands/interactive-commands/session/index.d.ts +0 -16
- package/dist/cli/commands/interactive-commands/session/index.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/session/index.js +0 -15
- package/dist/cli/commands/interactive-commands/session/session-commands.d.ts +0 -32
- package/dist/cli/commands/interactive-commands/session/session-commands.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/session/session-commands.js +0 -65
- package/dist/cli/commands/interactive-commands/system/index.d.ts +0 -13
- package/dist/cli/commands/interactive-commands/system/index.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/system/index.js +0 -12
- package/dist/cli/commands/interactive-commands/system/system-commands.d.ts +0 -6
- package/dist/cli/commands/interactive-commands/system/system-commands.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/system/system-commands.js +0 -188
- package/dist/cli/commands/interactive-commands/tool-commands.d.ts +0 -15
- package/dist/cli/commands/interactive-commands/tool-commands.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/tool-commands.js +0 -24
- package/dist/cli/commands/interactive-commands/utils/arg-parser.d.ts +0 -57
- package/dist/cli/commands/interactive-commands/utils/arg-parser.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/utils/arg-parser.js +0 -81
- package/dist/cli/commands/interactive-commands/utils/command-output.d.ts +0 -40
- package/dist/cli/commands/interactive-commands/utils/command-output.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/utils/command-output.js +0 -56
- package/dist/cli/commands/interactive-commands/utils/format-output.d.ts +0 -14
- package/dist/cli/commands/interactive-commands/utils/format-output.d.ts.map +0 -1
- package/dist/cli/commands/interactive-commands/utils/format-output.js +0 -18
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts +0 -52
- package/dist/cli/ink-cli/InkCLIRefactored.d.ts.map +0 -1
- package/dist/cli/ink-cli/InkCLIRefactored.js +0 -231
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts +0 -44
- package/dist/cli/ink-cli/components/ApprovalPrompt.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/ApprovalPrompt.js +0 -323
- package/dist/cli/ink-cli/components/BackgroundTasksPanel.d.ts +0 -18
- package/dist/cli/ink-cli/components/BackgroundTasksPanel.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/BackgroundTasksPanel.js +0 -48
- package/dist/cli/ink-cli/components/CustomInput.d.ts +0 -17
- package/dist/cli/ink-cli/components/CustomInput.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/CustomInput.js +0 -51
- package/dist/cli/ink-cli/components/CustomTextInput.d.ts +0 -16
- package/dist/cli/ink-cli/components/CustomTextInput.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/CustomTextInput.js +0 -36
- package/dist/cli/ink-cli/components/EditableMultiLineInput.d.ts +0 -19
- package/dist/cli/ink-cli/components/EditableMultiLineInput.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/EditableMultiLineInput.js +0 -120
- package/dist/cli/ink-cli/components/ElicitationForm.d.ts +0 -24
- package/dist/cli/ink-cli/components/ElicitationForm.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/ElicitationForm.js +0 -592
- package/dist/cli/ink-cli/components/ErrorBoundary.d.ts +0 -20
- package/dist/cli/ink-cli/components/ErrorBoundary.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/ErrorBoundary.js +0 -29
- package/dist/cli/ink-cli/components/Footer.d.ts +0 -22
- package/dist/cli/ink-cli/components/Footer.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/Footer.js +0 -76
- package/dist/cli/ink-cli/components/HistorySearchBar.d.ts +0 -17
- package/dist/cli/ink-cli/components/HistorySearchBar.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/HistorySearchBar.js +0 -8
- package/dist/cli/ink-cli/components/MultiLineInput.d.ts +0 -12
- package/dist/cli/ink-cli/components/MultiLineInput.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/MultiLineInput.js +0 -27
- package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts +0 -26
- package/dist/cli/ink-cli/components/ResourceAutocomplete.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/ResourceAutocomplete.js +0 -385
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts +0 -28
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/SlashCommandAutocomplete.js +0 -412
- package/dist/cli/ink-cli/components/StatusBar.d.ts +0 -41
- package/dist/cli/ink-cli/components/StatusBar.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/StatusBar.js +0 -116
- package/dist/cli/ink-cli/components/TextBufferInput.d.ts +0 -52
- package/dist/cli/ink-cli/components/TextBufferInput.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/TextBufferInput.js +0 -490
- package/dist/cli/ink-cli/components/TodoPanel.d.ts +0 -26
- package/dist/cli/ink-cli/components/TodoPanel.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/TodoPanel.js +0 -62
- package/dist/cli/ink-cli/components/base/BaseAutocomplete.d.ts +0 -29
- package/dist/cli/ink-cli/components/base/BaseAutocomplete.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/base/BaseAutocomplete.js +0 -98
- package/dist/cli/ink-cli/components/base/BaseSelector.d.ts +0 -37
- package/dist/cli/ink-cli/components/base/BaseSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/base/BaseSelector.js +0 -128
- package/dist/cli/ink-cli/components/base/index.d.ts +0 -6
- package/dist/cli/ink-cli/components/base/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/base/index.js +0 -5
- package/dist/cli/ink-cli/components/chat/ChatView.d.ts +0 -19
- package/dist/cli/ink-cli/components/chat/ChatView.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/ChatView.js +0 -11
- package/dist/cli/ink-cli/components/chat/Footer.d.ts +0 -9
- package/dist/cli/ink-cli/components/chat/Footer.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/Footer.js +0 -8
- package/dist/cli/ink-cli/components/chat/Header.d.ts +0 -18
- package/dist/cli/ink-cli/components/chat/Header.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/Header.js +0 -16
- package/dist/cli/ink-cli/components/chat/MessageItem.d.ts +0 -21
- package/dist/cli/ink-cli/components/chat/MessageItem.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/MessageItem.js +0 -182
- package/dist/cli/ink-cli/components/chat/MessageList.d.ts +0 -16
- package/dist/cli/ink-cli/components/chat/MessageList.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/MessageList.js +0 -20
- package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts +0 -16
- package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/QueuedMessagesDisplay.js +0 -27
- package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts +0 -18
- package/dist/cli/ink-cli/components/chat/ToolIcon.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/ToolIcon.js +0 -36
- package/dist/cli/ink-cli/components/chat/index.d.ts +0 -10
- package/dist/cli/ink-cli/components/chat/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/index.js +0 -9
- package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts +0 -10
- package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/ConfigBox.js +0 -6
- package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts +0 -10
- package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/HelpBox.js +0 -15
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts +0 -10
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/LogConfigBox.js +0 -9
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts +0 -10
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionHistoryBox.js +0 -37
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts +0 -10
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/SessionListBox.js +0 -9
- package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts +0 -10
- package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/ShortcutsBox.js +0 -6
- package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts +0 -10
- package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/StatsBox.js +0 -29
- package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts +0 -45
- package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/StyledBox.js +0 -38
- package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts +0 -10
- package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/SyspromptBox.js +0 -6
- package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts +0 -13
- package/dist/cli/ink-cli/components/chat/styled-boxes/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/chat/styled-boxes/index.js +0 -12
- package/dist/cli/ink-cli/components/input/InputArea.d.ts +0 -46
- package/dist/cli/ink-cli/components/input/InputArea.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/input/InputArea.js +0 -6
- package/dist/cli/ink-cli/components/input/index.d.ts +0 -5
- package/dist/cli/ink-cli/components/input/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/input/index.js +0 -4
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts +0 -27
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/modes/AlternateBufferCLI.js +0 -182
- package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts +0 -29
- package/dist/cli/ink-cli/components/modes/StaticCLI.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/modes/StaticCLI.js +0 -114
- package/dist/cli/ink-cli/components/modes/index.d.ts +0 -10
- package/dist/cli/ink-cli/components/modes/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/modes/index.js +0 -9
- package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts +0 -26
- package/dist/cli/ink-cli/components/overlays/ApiKeyInput.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/ApiKeyInput.js +0 -92
- package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.d.ts +0 -13
- package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/CommandOutputOverlay.js +0 -60
- package/dist/cli/ink-cli/components/overlays/ContextStatsOverlay.d.ts +0 -26
- package/dist/cli/ink-cli/components/overlays/ContextStatsOverlay.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/ContextStatsOverlay.js +0 -241
- package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts +0 -29
- package/dist/cli/ink-cli/components/overlays/CustomModelWizard.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/CustomModelWizard.js +0 -301
- package/dist/cli/ink-cli/components/overlays/ExportWizard.d.ts +0 -22
- package/dist/cli/ink-cli/components/overlays/ExportWizard.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/ExportWizard.js +0 -308
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts +0 -23
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/LogLevelSelector.js +0 -70
- package/dist/cli/ink-cli/components/overlays/MarketplaceAddPrompt.d.ts +0 -20
- package/dist/cli/ink-cli/components/overlays/MarketplaceAddPrompt.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/MarketplaceAddPrompt.js +0 -81
- package/dist/cli/ink-cli/components/overlays/MarketplaceBrowser.d.ts +0 -31
- package/dist/cli/ink-cli/components/overlays/MarketplaceBrowser.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/MarketplaceBrowser.js +0 -297
- package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts +0 -22
- package/dist/cli/ink-cli/components/overlays/McpAddChoice.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/McpAddChoice.js +0 -59
- package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts +0 -26
- package/dist/cli/ink-cli/components/overlays/McpAddSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/McpAddSelector.js +0 -73
- package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts +0 -21
- package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/McpCustomTypeSelector.js +0 -51
- package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts +0 -29
- package/dist/cli/ink-cli/components/overlays/McpCustomWizard.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/McpCustomWizard.js +0 -215
- package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts +0 -22
- package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/McpRemoveSelector.js +0 -80
- package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts +0 -21
- package/dist/cli/ink-cli/components/overlays/McpSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/McpSelector.js +0 -52
- package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts +0 -28
- package/dist/cli/ink-cli/components/overlays/McpServerActions.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/McpServerActions.js +0 -93
- package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts +0 -29
- package/dist/cli/ink-cli/components/overlays/McpServerList.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/McpServerList.js +0 -116
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts +0 -28
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/ModelSelectorRefactored.js +0 -743
- package/dist/cli/ink-cli/components/overlays/PluginActions.d.ts +0 -27
- package/dist/cli/ink-cli/components/overlays/PluginActions.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/PluginActions.js +0 -66
- package/dist/cli/ink-cli/components/overlays/PluginList.d.ts +0 -21
- package/dist/cli/ink-cli/components/overlays/PluginList.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/PluginList.js +0 -70
- package/dist/cli/ink-cli/components/overlays/PluginManager.d.ts +0 -21
- package/dist/cli/ink-cli/components/overlays/PluginManager.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/PluginManager.js +0 -63
- package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts +0 -22
- package/dist/cli/ink-cli/components/overlays/PromptAddChoice.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/PromptAddChoice.js +0 -52
- package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts +0 -29
- package/dist/cli/ink-cli/components/overlays/PromptAddWizard.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/PromptAddWizard.js +0 -166
- package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts +0 -27
- package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/PromptDeleteSelector.js +0 -119
- package/dist/cli/ink-cli/components/overlays/PromptList.d.ts +0 -33
- package/dist/cli/ink-cli/components/overlays/PromptList.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/PromptList.js +0 -143
- package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts +0 -23
- package/dist/cli/ink-cli/components/overlays/SearchOverlay.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/SearchOverlay.js +0 -189
- package/dist/cli/ink-cli/components/overlays/SessionRenameOverlay.d.ts +0 -21
- package/dist/cli/ink-cli/components/overlays/SessionRenameOverlay.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/SessionRenameOverlay.js +0 -63
- package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts +0 -26
- package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/SessionSelectorRefactored.js +0 -126
- package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts +0 -21
- package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/SessionSubcommandSelector.js +0 -42
- package/dist/cli/ink-cli/components/overlays/SoundsSelector.d.ts +0 -21
- package/dist/cli/ink-cli/components/overlays/SoundsSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/SoundsSelector.js +0 -566
- package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts +0 -20
- package/dist/cli/ink-cli/components/overlays/StreamSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/StreamSelector.js +0 -58
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts +0 -26
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/ToolBrowser.js +0 -697
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts +0 -25
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/LocalModelWizard.js +0 -604
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.d.ts +0 -15
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/index.js +0 -14
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts +0 -42
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/provider-config.js +0 -547
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts +0 -25
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ApiKeyStep.js +0 -29
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts +0 -17
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/ProviderSelector.js +0 -11
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts +0 -20
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/SetupInfoBanner.js +0 -10
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts +0 -30
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/WizardStepInput.js +0 -13
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.d.ts +0 -8
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/shared/index.js +0 -7
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts +0 -85
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/overlays/custom-model-wizard/types.js +0 -38
- package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts +0 -21
- package/dist/cli/ink-cli/components/renderers/DiffRenderer.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/renderers/DiffRenderer.js +0 -65
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts +0 -30
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/renderers/FilePreviewRenderer.js +0 -67
- package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts +0 -21
- package/dist/cli/ink-cli/components/renderers/FileRenderer.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/renderers/FileRenderer.js +0 -37
- package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts +0 -21
- package/dist/cli/ink-cli/components/renderers/GenericRenderer.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/renderers/GenericRenderer.js +0 -26
- package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts +0 -20
- package/dist/cli/ink-cli/components/renderers/SearchRenderer.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/renderers/SearchRenderer.js +0 -26
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts +0 -21
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/renderers/ShellRenderer.js +0 -15
- package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts +0 -61
- package/dist/cli/ink-cli/components/renderers/diff-shared.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/renderers/diff-shared.js +0 -158
- package/dist/cli/ink-cli/components/renderers/index.d.ts +0 -28
- package/dist/cli/ink-cli/components/renderers/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/renderers/index.js +0 -36
- package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.d.ts +0 -7
- package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/shared/FocusOverlayFrame.js +0 -8
- package/dist/cli/ink-cli/components/shared/HintBar.d.ts +0 -6
- package/dist/cli/ink-cli/components/shared/HintBar.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/shared/HintBar.js +0 -6
- package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts +0 -38
- package/dist/cli/ink-cli/components/shared/MarkdownText.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/shared/MarkdownText.js +0 -389
- package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts +0 -44
- package/dist/cli/ink-cli/components/shared/VirtualizedList.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/shared/VirtualizedList.js +0 -300
- package/dist/cli/ink-cli/components/shared/text-buffer.d.ts +0 -185
- package/dist/cli/ink-cli/components/shared/text-buffer.d.ts.map +0 -1
- package/dist/cli/ink-cli/components/shared/text-buffer.js +0 -1338
- package/dist/cli/ink-cli/constants/processingPhrases.d.ts +0 -10
- package/dist/cli/ink-cli/constants/processingPhrases.d.ts.map +0 -1
- package/dist/cli/ink-cli/constants/processingPhrases.js +0 -92
- package/dist/cli/ink-cli/constants/spinnerFrames.d.ts +0 -2
- package/dist/cli/ink-cli/constants/spinnerFrames.d.ts.map +0 -1
- package/dist/cli/ink-cli/constants/spinnerFrames.js +0 -1
- package/dist/cli/ink-cli/constants/tips.d.ts +0 -15
- package/dist/cli/ink-cli/constants/tips.d.ts.map +0 -1
- package/dist/cli/ink-cli/constants/tips.js +0 -58
- package/dist/cli/ink-cli/containers/InputContainer.d.ts +0 -62
- package/dist/cli/ink-cli/containers/InputContainer.d.ts.map +0 -1
- package/dist/cli/ink-cli/containers/InputContainer.js +0 -643
- package/dist/cli/ink-cli/containers/OverlayContainer.d.ts +0 -42
- package/dist/cli/ink-cli/containers/OverlayContainer.d.ts.map +0 -1
- package/dist/cli/ink-cli/containers/OverlayContainer.js +0 -1840
- package/dist/cli/ink-cli/containers/index.d.ts +0 -6
- package/dist/cli/ink-cli/containers/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/containers/index.js +0 -5
- package/dist/cli/ink-cli/contexts/KeypressContext.d.ts +0 -36
- package/dist/cli/ink-cli/contexts/KeypressContext.d.ts.map +0 -1
- package/dist/cli/ink-cli/contexts/KeypressContext.js +0 -461
- package/dist/cli/ink-cli/contexts/MouseContext.d.ts +0 -27
- package/dist/cli/ink-cli/contexts/MouseContext.d.ts.map +0 -1
- package/dist/cli/ink-cli/contexts/MouseContext.js +0 -102
- package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts +0 -33
- package/dist/cli/ink-cli/contexts/ScrollProvider.d.ts.map +0 -1
- package/dist/cli/ink-cli/contexts/ScrollProvider.js +0 -170
- package/dist/cli/ink-cli/contexts/SoundContext.d.ts +0 -23
- package/dist/cli/ink-cli/contexts/SoundContext.d.ts.map +0 -1
- package/dist/cli/ink-cli/contexts/SoundContext.js +0 -22
- package/dist/cli/ink-cli/contexts/index.d.ts +0 -8
- package/dist/cli/ink-cli/contexts/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/contexts/index.js +0 -7
- package/dist/cli/ink-cli/hooks/index.d.ts +0 -12
- package/dist/cli/ink-cli/hooks/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/index.js +0 -14
- package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts +0 -49
- package/dist/cli/ink-cli/hooks/useAgentEvents.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useAgentEvents.js +0 -369
- package/dist/cli/ink-cli/hooks/useAnimationTick.d.ts +0 -11
- package/dist/cli/ink-cli/hooks/useAnimationTick.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useAnimationTick.js +0 -54
- package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts +0 -14
- package/dist/cli/ink-cli/hooks/useBatchedScroll.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useBatchedScroll.js +0 -25
- package/dist/cli/ink-cli/hooks/useCLIState.d.ts +0 -52
- package/dist/cli/ink-cli/hooks/useCLIState.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useCLIState.js +0 -224
- package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts +0 -24
- package/dist/cli/ink-cli/hooks/useElapsedTime.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useElapsedTime.js +0 -69
- package/dist/cli/ink-cli/hooks/useGitBranch.d.ts +0 -13
- package/dist/cli/ink-cli/hooks/useGitBranch.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useGitBranch.js +0 -35
- package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts +0 -61
- package/dist/cli/ink-cli/hooks/useHistorySearch.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useHistorySearch.js +0 -210
- package/dist/cli/ink-cli/hooks/useInputHistory.d.ts +0 -18
- package/dist/cli/ink-cli/hooks/useInputHistory.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useInputHistory.js +0 -26
- package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts +0 -136
- package/dist/cli/ink-cli/hooks/useInputOrchestrator.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useInputOrchestrator.js +0 -715
- package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.d.ts +0 -21
- package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useKeyboardShortcuts.js +0 -80
- package/dist/cli/ink-cli/hooks/useKeypress.d.ts +0 -18
- package/dist/cli/ink-cli/hooks/useKeypress.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useKeypress.js +0 -26
- package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts +0 -30
- package/dist/cli/ink-cli/hooks/usePhraseCycler.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/usePhraseCycler.js +0 -68
- package/dist/cli/ink-cli/hooks/useStreaming.d.ts +0 -19
- package/dist/cli/ink-cli/hooks/useStreaming.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useStreaming.js +0 -26
- package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts +0 -14
- package/dist/cli/ink-cli/hooks/useTerminalSize.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useTerminalSize.js +0 -31
- package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts +0 -46
- package/dist/cli/ink-cli/hooks/useTokenCounter.d.ts.map +0 -1
- package/dist/cli/ink-cli/hooks/useTokenCounter.js +0 -122
- package/dist/cli/ink-cli/services/CommandService.d.ts +0 -58
- package/dist/cli/ink-cli/services/CommandService.d.ts.map +0 -1
- package/dist/cli/ink-cli/services/CommandService.js +0 -64
- package/dist/cli/ink-cli/services/InputService.d.ts +0 -40
- package/dist/cli/ink-cli/services/InputService.d.ts.map +0 -1
- package/dist/cli/ink-cli/services/InputService.js +0 -87
- package/dist/cli/ink-cli/services/MessageService.d.ts +0 -35
- package/dist/cli/ink-cli/services/MessageService.d.ts.map +0 -1
- package/dist/cli/ink-cli/services/MessageService.js +0 -49
- package/dist/cli/ink-cli/services/index.d.ts +0 -8
- package/dist/cli/ink-cli/services/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/services/index.js +0 -7
- package/dist/cli/ink-cli/services/processStream.d.ts +0 -75
- package/dist/cli/ink-cli/services/processStream.d.ts.map +0 -1
- package/dist/cli/ink-cli/services/processStream.js +0 -951
- package/dist/cli/ink-cli/state/actions.d.ts +0 -124
- package/dist/cli/ink-cli/state/actions.d.ts.map +0 -1
- package/dist/cli/ink-cli/state/actions.js +0 -8
- package/dist/cli/ink-cli/state/index.d.ts +0 -10
- package/dist/cli/ink-cli/state/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/state/index.js +0 -8
- package/dist/cli/ink-cli/state/initialState.d.ts +0 -12
- package/dist/cli/ink-cli/state/initialState.d.ts.map +0 -1
- package/dist/cli/ink-cli/state/initialState.js +0 -58
- package/dist/cli/ink-cli/state/reducer.d.ts +0 -15
- package/dist/cli/ink-cli/state/reducer.d.ts.map +0 -1
- package/dist/cli/ink-cli/state/reducer.js +0 -341
- package/dist/cli/ink-cli/state/streaming-state.d.ts +0 -27
- package/dist/cli/ink-cli/state/streaming-state.d.ts.map +0 -1
- package/dist/cli/ink-cli/state/streaming-state.js +0 -39
- package/dist/cli/ink-cli/state/types.d.ts +0 -378
- package/dist/cli/ink-cli/state/types.d.ts.map +0 -1
- package/dist/cli/ink-cli/state/types.js +0 -5
- package/dist/cli/ink-cli/utils/bracketedPaste.d.ts +0 -22
- package/dist/cli/ink-cli/utils/bracketedPaste.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/bracketedPaste.js +0 -27
- package/dist/cli/ink-cli/utils/clipboardUtils.d.ts +0 -49
- package/dist/cli/ink-cli/utils/clipboardUtils.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/clipboardUtils.js +0 -356
- package/dist/cli/ink-cli/utils/commandOverlays.d.ts +0 -33
- package/dist/cli/ink-cli/utils/commandOverlays.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/commandOverlays.js +0 -85
- package/dist/cli/ink-cli/utils/debugLog.d.ts +0 -38
- package/dist/cli/ink-cli/utils/debugLog.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/debugLog.js +0 -66
- package/dist/cli/ink-cli/utils/elicitationSchema.d.ts +0 -11
- package/dist/cli/ink-cli/utils/elicitationSchema.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/elicitationSchema.js +0 -80
- package/dist/cli/ink-cli/utils/idGenerator.d.ts +0 -10
- package/dist/cli/ink-cli/utils/idGenerator.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/idGenerator.js +0 -12
- package/dist/cli/ink-cli/utils/index.d.ts +0 -9
- package/dist/cli/ink-cli/utils/index.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/index.js +0 -13
- package/dist/cli/ink-cli/utils/input.d.ts +0 -25
- package/dist/cli/ink-cli/utils/input.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/input.js +0 -56
- package/dist/cli/ink-cli/utils/inputParsing.d.ts +0 -31
- package/dist/cli/ink-cli/utils/inputParsing.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/inputParsing.js +0 -70
- package/dist/cli/ink-cli/utils/llm-provider-display.d.ts +0 -3
- package/dist/cli/ink-cli/utils/llm-provider-display.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/llm-provider-display.js +0 -22
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts +0 -125
- package/dist/cli/ink-cli/utils/messageFormatting.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/messageFormatting.js +0 -485
- package/dist/cli/ink-cli/utils/mouse.d.ts +0 -61
- package/dist/cli/ink-cli/utils/mouse.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/mouse.js +0 -209
- package/dist/cli/ink-cli/utils/overlayPresentation.d.ts +0 -19
- package/dist/cli/ink-cli/utils/overlayPresentation.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/overlayPresentation.js +0 -33
- package/dist/cli/ink-cli/utils/overlaySizing.d.ts +0 -19
- package/dist/cli/ink-cli/utils/overlaySizing.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/overlaySizing.js +0 -11
- package/dist/cli/ink-cli/utils/soundNotification.d.ts +0 -77
- package/dist/cli/ink-cli/utils/soundNotification.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/soundNotification.js +0 -226
- package/dist/cli/ink-cli/utils/streamSplitter.d.ts +0 -44
- package/dist/cli/ink-cli/utils/streamSplitter.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/streamSplitter.js +0 -154
- package/dist/cli/ink-cli/utils/textUtils.d.ts +0 -63
- package/dist/cli/ink-cli/utils/textUtils.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/textUtils.js +0 -248
- package/dist/cli/ink-cli/utils/toolUtils.d.ts +0 -20
- package/dist/cli/ink-cli/utils/toolUtils.d.ts.map +0 -1
- package/dist/cli/ink-cli/utils/toolUtils.js +0 -25
- package/dist/webui/assets/index-C9JXwpvo.css +0 -1
- package/dist/webui/assets/index-CKhumsZA.js +0 -2059
- package/dist/webui/assets/react-vendor-gH-7aFTg.js +0 -17
- package/dist/webui/assets/tanstack-Br79RQ-n.js +0 -25
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* Footer Component
|
|
4
|
-
* Status line at the bottom showing CWD, branch, and model info.
|
|
5
|
-
*/
|
|
6
|
-
import { useEffect, useState } from 'react';
|
|
7
|
-
import path from 'node:path';
|
|
8
|
-
import { Box, Text } from 'ink';
|
|
9
|
-
import { getModelDisplayName } from '@dexto/core';
|
|
10
|
-
import { getLLMProviderDisplayName } from '../utils/llm-provider-display.js';
|
|
11
|
-
function getDirectoryName(cwd) {
|
|
12
|
-
const base = path.basename(cwd);
|
|
13
|
-
return base || cwd;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Pure presentational component for footer status line
|
|
17
|
-
*/
|
|
18
|
-
export function Footer({ agent, sessionId, modelName, cwd, branchName, autoApproveEdits, planModeActive, isShellMode, }) {
|
|
19
|
-
const displayPath = cwd ? getDirectoryName(cwd) : '';
|
|
20
|
-
const displayModelName = getModelDisplayName(modelName);
|
|
21
|
-
const [contextLeft, setContextLeft] = useState(null);
|
|
22
|
-
// Provider is session-scoped because /model can switch LLM per session.
|
|
23
|
-
const provider = sessionId ? agent.getCurrentLLMConfig(sessionId).provider : null;
|
|
24
|
-
const providerLabel = provider ? getLLMProviderDisplayName(provider) : null;
|
|
25
|
-
useEffect(() => {
|
|
26
|
-
if (!sessionId) {
|
|
27
|
-
setContextLeft(null);
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
let cancelled = false;
|
|
31
|
-
let refreshId = 0;
|
|
32
|
-
const refreshContext = async () => {
|
|
33
|
-
const requestId = ++refreshId;
|
|
34
|
-
try {
|
|
35
|
-
const stats = await agent.getContextStats(sessionId);
|
|
36
|
-
if (cancelled || requestId !== refreshId)
|
|
37
|
-
return;
|
|
38
|
-
const percentLeft = Math.max(0, Math.min(100, 100 - stats.usagePercent));
|
|
39
|
-
setContextLeft({
|
|
40
|
-
percentLeft,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
if (!cancelled) {
|
|
45
|
-
setContextLeft(null);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
refreshContext();
|
|
50
|
-
const controller = new AbortController();
|
|
51
|
-
const { signal } = controller;
|
|
52
|
-
const sessionEvents = [
|
|
53
|
-
'llm:response',
|
|
54
|
-
'context:compacted',
|
|
55
|
-
'context:pruned',
|
|
56
|
-
'context:cleared',
|
|
57
|
-
'message:dequeued',
|
|
58
|
-
'session:reset',
|
|
59
|
-
];
|
|
60
|
-
const handleEvent = (payload) => {
|
|
61
|
-
if (payload.sessionId && payload.sessionId !== sessionId)
|
|
62
|
-
return;
|
|
63
|
-
refreshContext();
|
|
64
|
-
};
|
|
65
|
-
for (const eventName of sessionEvents) {
|
|
66
|
-
agent.on(eventName, handleEvent, { signal });
|
|
67
|
-
}
|
|
68
|
-
return () => {
|
|
69
|
-
cancelled = true;
|
|
70
|
-
controller.abort();
|
|
71
|
-
};
|
|
72
|
-
}, [agent, sessionId]);
|
|
73
|
-
// Shell mode changes the path color to yellow as indicator
|
|
74
|
-
const pathColor = isShellMode ? 'yellow' : 'blue';
|
|
75
|
-
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsx(Text, { color: pathColor, children: displayPath }), branchName && _jsxs(Text, { color: "gray", children: [" (", branchName, ")"] })] }), _jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: displayModelName }), providerLabel && _jsxs(Text, { color: "gray", children: [" (", providerLabel, ")"] })] })] }), contextLeft && (_jsx(Box, { children: _jsxs(Text, { color: "gray", children: [contextLeft.percentLeft, "% context left"] }) })), isShellMode && (_jsxs(Box, { children: [_jsx(Text, { color: "yellow", bold: true, children: "!" }), _jsx(Text, { color: "gray", children: " for shell mode" })] })), planModeActive && !isShellMode && (_jsxs(Box, { children: [_jsx(Text, { color: "magentaBright", children: "plan mode" }), _jsx(Text, { color: "gray", children: " (shift + tab to cycle)" })] })), autoApproveEdits && !planModeActive && !isShellMode && (_jsxs(Box, { children: [_jsx(Text, { color: "yellowBright", children: "accept edits" }), _jsx(Text, { color: "gray", children: " (shift + tab to cycle)" })] }))] }));
|
|
76
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HistorySearchBar - UI for Ctrl+R reverse history search
|
|
3
|
-
*
|
|
4
|
-
* Displayed at the very bottom when search mode is active.
|
|
5
|
-
*/
|
|
6
|
-
interface HistorySearchBarProps {
|
|
7
|
-
/** Current search query */
|
|
8
|
-
query: string;
|
|
9
|
-
/** Whether there's a match for the current query */
|
|
10
|
-
hasMatch: boolean;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Search bar displayed during history search mode
|
|
14
|
-
*/
|
|
15
|
-
export declare function HistorySearchBar({ query, hasMatch }: HistorySearchBarProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=HistorySearchBar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HistorySearchBar.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/HistorySearchBar.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,UAAU,qBAAqB;IAC3B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAc1E"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Text } from 'ink';
|
|
3
|
-
/**
|
|
4
|
-
* Search bar displayed during history search mode
|
|
5
|
-
*/
|
|
6
|
-
export function HistorySearchBar({ query, hasMatch }) {
|
|
7
|
-
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { color: "gray", children: "Ctrl+R: older, Ctrl+E: newer, Enter: accept, Esc: cancel" }), _jsxs(Box, { children: [_jsx(Text, { color: "green", children: "search history: " }), _jsx(Text, { color: "cyan", children: query }), _jsx(Text, { color: "gray", children: "_" }), query && !hasMatch && _jsx(Text, { color: "red", children: " (no match)" })] })] }));
|
|
8
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
interface MultiLineInputProps {
|
|
2
|
-
value: string;
|
|
3
|
-
placeholder?: string;
|
|
4
|
-
prompt?: string;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Custom multi-line input display component
|
|
8
|
-
* Calculates height based on content and displays text with proper line breaks
|
|
9
|
-
*/
|
|
10
|
-
export default function MultiLineInput({ value, placeholder, prompt }: MultiLineInputProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=MultiLineInput.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MultiLineInput.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/MultiLineInput.tsx"],"names":[],"mappings":"AAGA,UAAU,mBAAmB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAa,EAAE,EAAE,mBAAmB,2CAgDhG"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo } from 'react';
|
|
3
|
-
import { Box, Text } from 'ink';
|
|
4
|
-
/**
|
|
5
|
-
* Custom multi-line input display component
|
|
6
|
-
* Calculates height based on content and displays text with proper line breaks
|
|
7
|
-
*/
|
|
8
|
-
export default function MultiLineInput({ value, placeholder, prompt = '> ' }) {
|
|
9
|
-
// Calculate number of lines (split by newlines and count)
|
|
10
|
-
const lines = useMemo(() => {
|
|
11
|
-
if (!value)
|
|
12
|
-
return [];
|
|
13
|
-
return value.split('\n');
|
|
14
|
-
}, [value]);
|
|
15
|
-
const lineCount = lines.length;
|
|
16
|
-
// If empty, show placeholder
|
|
17
|
-
if (!value && placeholder) {
|
|
18
|
-
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: "green", bold: true, children: prompt }), _jsx(Text, { color: "gray", children: placeholder })] }));
|
|
19
|
-
}
|
|
20
|
-
// Display multi-line text - show last N lines if too many
|
|
21
|
-
const visibleLines = lineCount > 10 ? lines.slice(-10) : lines;
|
|
22
|
-
const startOffset = lineCount > 10 ? lineCount - 10 : 0;
|
|
23
|
-
return (_jsxs(Box, { flexDirection: "column", children: [startOffset > 0 && (_jsx(Box, { children: _jsxs(Text, { color: "gray", children: ["... (", startOffset, " more lines above)"] }) })), visibleLines.map((line, index) => {
|
|
24
|
-
const actualIndex = startOffset + index;
|
|
25
|
-
return (_jsxs(Box, { flexDirection: "row", children: [index === 0 && (_jsx(Text, { color: "green", bold: true, children: prompt })), index > 0 && _jsx(Text, { color: "green", children: ' '.repeat(prompt.length) }), _jsx(Text, { wrap: "wrap", children: line || ' ' })] }, actualIndex));
|
|
26
|
-
})] }));
|
|
27
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { Key } from '../hooks/useInputOrchestrator.js';
|
|
3
|
-
import type { ResourceMetadata } from '@dexto/core';
|
|
4
|
-
import type { DextoAgent } from '@dexto/core';
|
|
5
|
-
export interface ResourceAutocompleteHandle {
|
|
6
|
-
handleInput: (input: string, key: Key) => boolean;
|
|
7
|
-
}
|
|
8
|
-
interface ResourceAutocompleteProps {
|
|
9
|
-
isVisible: boolean;
|
|
10
|
-
searchQuery: string;
|
|
11
|
-
onSelectResource: (resource: ResourceMetadata) => void;
|
|
12
|
-
onLoadIntoInput?: (text: string) => void;
|
|
13
|
-
onClose: () => void;
|
|
14
|
-
agent: DextoAgent;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Inner component - wrapped with React.memo below
|
|
18
|
-
*/
|
|
19
|
-
declare const ResourceAutocompleteInner: React.ForwardRefExoticComponent<ResourceAutocompleteProps & React.RefAttributes<ResourceAutocompleteHandle>>;
|
|
20
|
-
/**
|
|
21
|
-
* Export with React.memo to prevent unnecessary re-renders from parent
|
|
22
|
-
* Only re-renders when props actually change (shallow comparison)
|
|
23
|
-
*/
|
|
24
|
-
declare const ResourceAutocomplete: typeof ResourceAutocompleteInner;
|
|
25
|
-
export default ResourceAutocomplete;
|
|
26
|
-
//# sourceMappingURL=ResourceAutocomplete.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceAutocomplete.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/ResourceAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,MAAM,WAAW,0BAA0B;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,yBAAyB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;CACrB;AAsFD;;GAEG;AACH,QAAA,MAAM,yBAAyB,8GA4X9B,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,oBAAoB,EAErB,OAAO,yBAAyB,CAAC;AAEtC,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import React, { useState, useEffect, useRef, useMemo, useCallback, forwardRef, useImperativeHandle, } from 'react';
|
|
3
|
-
import { Box, Text } from 'ink';
|
|
4
|
-
import path from 'path';
|
|
5
|
-
import { centerTruncatePath } from '../utils/messageFormatting.js';
|
|
6
|
-
import { useTerminalSize } from '../hooks/useTerminalSize.js';
|
|
7
|
-
import { getMaxVisibleItemsForTerminalRows } from '../utils/overlaySizing.js';
|
|
8
|
-
/**
|
|
9
|
-
* Get match score for resource: 0 = no match, 1 = description/URI match, 2 = name includes, 3 = name starts with
|
|
10
|
-
* Prioritizes name matches over description/URI matches
|
|
11
|
-
*/
|
|
12
|
-
function getResourceMatchScore(resource, query) {
|
|
13
|
-
if (!query)
|
|
14
|
-
return 3; // Show all when no query
|
|
15
|
-
const lowerQuery = query.toLowerCase();
|
|
16
|
-
const name = (resource.name || '').toLowerCase();
|
|
17
|
-
const uri = resource.uri.toLowerCase();
|
|
18
|
-
const uriFilename = uri.split(/[\\/]/).pop()?.toLowerCase() || '';
|
|
19
|
-
const description = (resource.description || '').toLowerCase();
|
|
20
|
-
// Highest priority: name starts with query
|
|
21
|
-
if (name.startsWith(lowerQuery)) {
|
|
22
|
-
return 4;
|
|
23
|
-
}
|
|
24
|
-
// Second priority: name includes query
|
|
25
|
-
if (name.includes(lowerQuery)) {
|
|
26
|
-
return 3;
|
|
27
|
-
}
|
|
28
|
-
// Third priority: URI filename starts with query
|
|
29
|
-
if (uriFilename.startsWith(lowerQuery)) {
|
|
30
|
-
return 2;
|
|
31
|
-
}
|
|
32
|
-
// Fourth priority: URI filename includes query
|
|
33
|
-
if (uriFilename.includes(lowerQuery)) {
|
|
34
|
-
return 2;
|
|
35
|
-
}
|
|
36
|
-
// Fifth priority: URI includes query
|
|
37
|
-
if (uri.includes(lowerQuery)) {
|
|
38
|
-
return 1;
|
|
39
|
-
}
|
|
40
|
-
// Lowest priority: description includes query
|
|
41
|
-
if (description.includes(lowerQuery)) {
|
|
42
|
-
return 1;
|
|
43
|
-
}
|
|
44
|
-
return 0; // No match
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Check if resource matches query (for filtering)
|
|
48
|
-
*/
|
|
49
|
-
function matchesQuery(resource, query) {
|
|
50
|
-
return getResourceMatchScore(resource, query) > 0;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Sort resources by match score (highest first), then alphabetically
|
|
54
|
-
*/
|
|
55
|
-
function sortResources(resources, query) {
|
|
56
|
-
if (!query)
|
|
57
|
-
return resources;
|
|
58
|
-
const lowerQuery = query.toLowerCase();
|
|
59
|
-
return [...resources].sort((a, b) => {
|
|
60
|
-
const scoreA = getResourceMatchScore(a, lowerQuery);
|
|
61
|
-
const scoreB = getResourceMatchScore(b, lowerQuery);
|
|
62
|
-
// Sort by score first (higher score first)
|
|
63
|
-
if (scoreA !== scoreB) {
|
|
64
|
-
return scoreB - scoreA;
|
|
65
|
-
}
|
|
66
|
-
// If scores are equal, sort alphabetically by name
|
|
67
|
-
const aName = (a.name || '').toLowerCase();
|
|
68
|
-
const bName = (b.name || '').toLowerCase();
|
|
69
|
-
return aName.localeCompare(bName);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Inner component - wrapped with React.memo below
|
|
74
|
-
*/
|
|
75
|
-
const ResourceAutocompleteInner = forwardRef(function ResourceAutocomplete({ isVisible, searchQuery, onSelectResource, onLoadIntoInput, onClose, agent }, ref) {
|
|
76
|
-
const [resources, setResources] = useState([]);
|
|
77
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
78
|
-
const { columns: terminalWidth, rows: terminalRows } = useTerminalSize();
|
|
79
|
-
const maxVisibleItems = useMemo(() => {
|
|
80
|
-
return getMaxVisibleItemsForTerminalRows({
|
|
81
|
-
rows: terminalRows,
|
|
82
|
-
hardCap: 15,
|
|
83
|
-
reservedRows: 6,
|
|
84
|
-
});
|
|
85
|
-
}, [terminalRows]);
|
|
86
|
-
// Combined state to guarantee single render on navigation
|
|
87
|
-
const [selection, setSelection] = useState({ index: 0, offset: 0 });
|
|
88
|
-
const selectedIndexRef = useRef(0);
|
|
89
|
-
// Update selection AND scroll offset in a single state update
|
|
90
|
-
// This guarantees exactly one render per navigation action
|
|
91
|
-
const updateSelection = useCallback((indexUpdater) => {
|
|
92
|
-
setSelection((prev) => {
|
|
93
|
-
const newIndex = typeof indexUpdater === 'function'
|
|
94
|
-
? indexUpdater(prev.index)
|
|
95
|
-
: indexUpdater;
|
|
96
|
-
selectedIndexRef.current = newIndex;
|
|
97
|
-
// Calculate new scroll offset
|
|
98
|
-
let newOffset = prev.offset;
|
|
99
|
-
if (newIndex < prev.offset) {
|
|
100
|
-
newOffset = newIndex;
|
|
101
|
-
}
|
|
102
|
-
else if (newIndex >= prev.offset + maxVisibleItems) {
|
|
103
|
-
newOffset = Math.max(0, newIndex - maxVisibleItems + 1);
|
|
104
|
-
}
|
|
105
|
-
return { index: newIndex, offset: newOffset };
|
|
106
|
-
});
|
|
107
|
-
}, [maxVisibleItems]);
|
|
108
|
-
// Fetch resources from agent
|
|
109
|
-
useEffect(() => {
|
|
110
|
-
if (!isVisible)
|
|
111
|
-
return;
|
|
112
|
-
let cancelled = false;
|
|
113
|
-
setIsLoading(true);
|
|
114
|
-
const fetchResources = async () => {
|
|
115
|
-
try {
|
|
116
|
-
const resourceSet = await agent.listResources();
|
|
117
|
-
const resourceList = Object.values(resourceSet);
|
|
118
|
-
if (!cancelled) {
|
|
119
|
-
setResources(resourceList);
|
|
120
|
-
setIsLoading(false);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
if (!cancelled) {
|
|
125
|
-
// Silently fail - don't use console.error as it interferes with Ink rendering
|
|
126
|
-
setResources([]);
|
|
127
|
-
setIsLoading(false);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
void fetchResources();
|
|
132
|
-
return () => {
|
|
133
|
-
cancelled = true;
|
|
134
|
-
};
|
|
135
|
-
}, [isVisible, agent]);
|
|
136
|
-
// NOTE: Auto-close logic is handled synchronously in TextBufferInput.tsx
|
|
137
|
-
// (on backspace deleting @ and on space after @). We don't use useEffect here
|
|
138
|
-
// because React batches state updates, causing race conditions where isVisible
|
|
139
|
-
// and searchQuery update at different times.
|
|
140
|
-
// Extract query from @mention (everything after @)
|
|
141
|
-
const mentionQuery = useMemo(() => {
|
|
142
|
-
// Find the last @ that's at start or after space
|
|
143
|
-
const atIndex = searchQuery.lastIndexOf('@');
|
|
144
|
-
if (atIndex === -1)
|
|
145
|
-
return '';
|
|
146
|
-
// Check if @ is at start or preceded by space
|
|
147
|
-
const prevChar = searchQuery[atIndex - 1];
|
|
148
|
-
if (atIndex === 0 || (prevChar && /\s/.test(prevChar))) {
|
|
149
|
-
return searchQuery.slice(atIndex + 1).trim();
|
|
150
|
-
}
|
|
151
|
-
return '';
|
|
152
|
-
}, [searchQuery]);
|
|
153
|
-
// Extract directories and create display items (hybrid search)
|
|
154
|
-
const displayItems = useMemo(() => {
|
|
155
|
-
const items = [];
|
|
156
|
-
const directories = new Set();
|
|
157
|
-
// Process each resource to extract paths and directories
|
|
158
|
-
resources.forEach((resource) => {
|
|
159
|
-
// Convert URI to relative path
|
|
160
|
-
let relativePath = resource.uri;
|
|
161
|
-
const rawUri = relativePath.replace(/^(fs|file):\/\//, '');
|
|
162
|
-
if (path.isAbsolute(rawUri)) {
|
|
163
|
-
try {
|
|
164
|
-
const relPath = path.relative(process.cwd(), rawUri);
|
|
165
|
-
if (relPath && !relPath.startsWith('..')) {
|
|
166
|
-
relativePath = relPath;
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
// Outside cwd, use name as fallback
|
|
170
|
-
const uriParts = resource.uri.split(/[\\/]/);
|
|
171
|
-
relativePath =
|
|
172
|
-
resource.name || uriParts[uriParts.length - 1] || resource.uri;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
return; // Skip if path conversion fails
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
// Add file item
|
|
180
|
-
items.push({
|
|
181
|
-
path: relativePath,
|
|
182
|
-
isDirectory: false,
|
|
183
|
-
resource,
|
|
184
|
-
});
|
|
185
|
-
// Extract all parent directories (1-2 levels deep)
|
|
186
|
-
const segments = relativePath.split(path.sep).filter(Boolean);
|
|
187
|
-
for (let i = 0; i < Math.min(segments.length - 1, 2); i++) {
|
|
188
|
-
const dirPath = segments.slice(0, i + 1).join(path.sep) + path.sep;
|
|
189
|
-
directories.add(dirPath);
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
// Add directory items
|
|
193
|
-
directories.forEach((dirPath) => {
|
|
194
|
-
items.push({
|
|
195
|
-
path: dirPath,
|
|
196
|
-
isDirectory: true,
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
// Filter by query
|
|
200
|
-
const filtered = items.filter((item) => {
|
|
201
|
-
if (!mentionQuery)
|
|
202
|
-
return true; // Show all when no query
|
|
203
|
-
const lowerQuery = mentionQuery.toLowerCase();
|
|
204
|
-
const lowerPath = item.path.toLowerCase();
|
|
205
|
-
const pathParts = item.path.split(path.sep).filter(Boolean);
|
|
206
|
-
const lastSegment = pathParts[pathParts.length - 1]?.toLowerCase() || '';
|
|
207
|
-
// Match against filename/dirname or full path
|
|
208
|
-
if (lastSegment.includes(lowerQuery) || lowerPath.includes(lowerQuery)) {
|
|
209
|
-
return true;
|
|
210
|
-
}
|
|
211
|
-
// Also match against resource name and description (for files)
|
|
212
|
-
if (item.resource) {
|
|
213
|
-
const lowerName = (item.resource.name || '').toLowerCase();
|
|
214
|
-
const lowerDescription = (item.resource.description || '').toLowerCase();
|
|
215
|
-
if (lowerName.includes(lowerQuery) || lowerDescription.includes(lowerQuery)) {
|
|
216
|
-
return true;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
return false;
|
|
220
|
-
});
|
|
221
|
-
// Sort by relevance
|
|
222
|
-
return filtered.sort((a, b) => {
|
|
223
|
-
if (!mentionQuery) {
|
|
224
|
-
// No query: directories first, then alphabetically
|
|
225
|
-
if (a.isDirectory !== b.isDirectory) {
|
|
226
|
-
return a.isDirectory ? -1 : 1;
|
|
227
|
-
}
|
|
228
|
-
return a.path.localeCompare(b.path);
|
|
229
|
-
}
|
|
230
|
-
const lowerQuery = mentionQuery.toLowerCase();
|
|
231
|
-
const aPathParts = a.path.split(path.sep).filter(Boolean);
|
|
232
|
-
const bPathParts = b.path.split(path.sep).filter(Boolean);
|
|
233
|
-
const aLastSegment = aPathParts[aPathParts.length - 1]?.toLowerCase() || '';
|
|
234
|
-
const bLastSegment = bPathParts[bPathParts.length - 1]?.toLowerCase() || '';
|
|
235
|
-
// Score by match quality
|
|
236
|
-
const aStartsWith = aLastSegment.startsWith(lowerQuery);
|
|
237
|
-
const bStartsWith = bLastSegment.startsWith(lowerQuery);
|
|
238
|
-
const aIncludes = aLastSegment.includes(lowerQuery);
|
|
239
|
-
const bIncludes = bLastSegment.includes(lowerQuery);
|
|
240
|
-
// Priority 1: Prefix matches
|
|
241
|
-
if (aStartsWith && !bStartsWith)
|
|
242
|
-
return -1;
|
|
243
|
-
if (!aStartsWith && bStartsWith)
|
|
244
|
-
return 1;
|
|
245
|
-
// Priority 2: Substring matches
|
|
246
|
-
if (aIncludes && !bIncludes)
|
|
247
|
-
return -1;
|
|
248
|
-
if (!aIncludes && bIncludes)
|
|
249
|
-
return 1;
|
|
250
|
-
// Priority 3: Shallower paths first
|
|
251
|
-
const depthDiff = aPathParts.length - bPathParts.length;
|
|
252
|
-
if (depthDiff !== 0)
|
|
253
|
-
return depthDiff;
|
|
254
|
-
// Priority 4: Alphabetically
|
|
255
|
-
return a.path.localeCompare(b.path);
|
|
256
|
-
});
|
|
257
|
-
}, [resources, mentionQuery]);
|
|
258
|
-
// Track items length for reset detection
|
|
259
|
-
const prevItemsLengthRef = useRef(displayItems.length);
|
|
260
|
-
const itemsChanged = displayItems.length !== prevItemsLengthRef.current;
|
|
261
|
-
// Derive clamped selection values during render (always valid, no setState needed)
|
|
262
|
-
// This prevents the double-render that was causing flickering
|
|
263
|
-
const selectedIndex = itemsChanged
|
|
264
|
-
? 0
|
|
265
|
-
: Math.min(selection.index, Math.max(0, displayItems.length - 1));
|
|
266
|
-
const scrollOffset = itemsChanged
|
|
267
|
-
? 0
|
|
268
|
-
: Math.min(selection.offset, Math.max(0, displayItems.length - maxVisibleItems));
|
|
269
|
-
// Sync state only when items actually changed AND state differs
|
|
270
|
-
// This effect runs AFTER render, updating state for next user interaction
|
|
271
|
-
useEffect(() => {
|
|
272
|
-
if (itemsChanged) {
|
|
273
|
-
prevItemsLengthRef.current = displayItems.length;
|
|
274
|
-
// Only setState if values actually differ (prevents unnecessary re-render)
|
|
275
|
-
if (selection.index !== 0 || selection.offset !== 0) {
|
|
276
|
-
selectedIndexRef.current = 0;
|
|
277
|
-
setSelection({ index: 0, offset: 0 });
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
selectedIndexRef.current = 0;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}, [itemsChanged, displayItems.length, selection.index, selection.offset]);
|
|
284
|
-
// Calculate visible items based on scroll offset
|
|
285
|
-
const visibleResources = useMemo(() => {
|
|
286
|
-
return displayItems.slice(scrollOffset, scrollOffset + maxVisibleItems);
|
|
287
|
-
}, [displayItems, scrollOffset, maxVisibleItems]);
|
|
288
|
-
// Expose handleInput method via ref
|
|
289
|
-
useImperativeHandle(ref, () => ({
|
|
290
|
-
handleInput: (_input, key) => {
|
|
291
|
-
if (!isVisible)
|
|
292
|
-
return false;
|
|
293
|
-
// Escape always closes, regardless of item count
|
|
294
|
-
if (key.escape) {
|
|
295
|
-
onClose();
|
|
296
|
-
return true;
|
|
297
|
-
}
|
|
298
|
-
const itemsLength = displayItems.length;
|
|
299
|
-
if (itemsLength === 0)
|
|
300
|
-
return false;
|
|
301
|
-
if (key.upArrow) {
|
|
302
|
-
updateSelection((prev) => (prev - 1 + itemsLength) % itemsLength);
|
|
303
|
-
return true;
|
|
304
|
-
}
|
|
305
|
-
if (key.downArrow) {
|
|
306
|
-
updateSelection((prev) => (prev + 1) % itemsLength);
|
|
307
|
-
return true;
|
|
308
|
-
}
|
|
309
|
-
// Tab to load into input (for editing/browsing)
|
|
310
|
-
if (key.tab) {
|
|
311
|
-
const item = displayItems[selectedIndexRef.current];
|
|
312
|
-
if (!item)
|
|
313
|
-
return false;
|
|
314
|
-
const atIndex = searchQuery.lastIndexOf('@');
|
|
315
|
-
const reference = item.path; // Already a relative path
|
|
316
|
-
if (atIndex >= 0) {
|
|
317
|
-
const before = searchQuery.slice(0, atIndex + 1);
|
|
318
|
-
onLoadIntoInput?.(`${before}${reference}`);
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
onLoadIntoInput?.(`${searchQuery}@${reference}`);
|
|
322
|
-
}
|
|
323
|
-
return true;
|
|
324
|
-
}
|
|
325
|
-
// Enter to select (directories drill down, files select)
|
|
326
|
-
if (key.return) {
|
|
327
|
-
const item = displayItems[selectedIndexRef.current];
|
|
328
|
-
if (!item)
|
|
329
|
-
return false;
|
|
330
|
-
if (item.isDirectory) {
|
|
331
|
-
// Drill down into directory
|
|
332
|
-
const atIndex = searchQuery.lastIndexOf('@');
|
|
333
|
-
if (atIndex >= 0) {
|
|
334
|
-
const before = searchQuery.slice(0, atIndex + 1);
|
|
335
|
-
onLoadIntoInput?.(`${before}${item.path}`);
|
|
336
|
-
}
|
|
337
|
-
else {
|
|
338
|
-
onLoadIntoInput?.(`${searchQuery}@${item.path}`);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
else if (item.resource) {
|
|
342
|
-
// Select the file resource
|
|
343
|
-
onSelectResource(item.resource);
|
|
344
|
-
}
|
|
345
|
-
return true;
|
|
346
|
-
}
|
|
347
|
-
// Don't consume other keys (typing, backspace, etc.)
|
|
348
|
-
return false;
|
|
349
|
-
},
|
|
350
|
-
}), [
|
|
351
|
-
isVisible,
|
|
352
|
-
displayItems,
|
|
353
|
-
selectedIndexRef,
|
|
354
|
-
searchQuery,
|
|
355
|
-
onClose,
|
|
356
|
-
onLoadIntoInput,
|
|
357
|
-
onSelectResource,
|
|
358
|
-
updateSelection,
|
|
359
|
-
]);
|
|
360
|
-
if (!isVisible)
|
|
361
|
-
return null;
|
|
362
|
-
if (isLoading) {
|
|
363
|
-
return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { color: "gray", children: "Loading resources..." }) }));
|
|
364
|
-
}
|
|
365
|
-
if (displayItems.length === 0) {
|
|
366
|
-
return (_jsx(Box, { paddingX: 0, paddingY: 0, children: _jsx(Text, { color: "gray", children: mentionQuery
|
|
367
|
-
? `No resources match "${mentionQuery}"`
|
|
368
|
-
: 'No resources available. Connect an MCP server or enable internal resources.' }) }));
|
|
369
|
-
}
|
|
370
|
-
return (_jsx(Box, { flexDirection: "column", width: terminalWidth, paddingLeft: 2, children: visibleResources.map((item, visibleIndex) => {
|
|
371
|
-
const actualIndex = scrollOffset + visibleIndex;
|
|
372
|
-
const isSelected = actualIndex === selectedIndex;
|
|
373
|
-
// Use center truncation for long paths (and still force truncate to prevent wrapping)
|
|
374
|
-
const displayPath = centerTruncatePath(item.path, Math.max(20, terminalWidth - 16));
|
|
375
|
-
// Check if it's an image file
|
|
376
|
-
const isImage = item.resource?.mimeType?.startsWith('image/');
|
|
377
|
-
return (_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? 'cyan' : 'gray', children: isSelected ? '❯ ' : ' ' }), _jsxs(Text, { wrap: "truncate-end", color: isSelected ? 'cyan' : 'white', bold: isSelected, children: [isImage && '🖼️ ', displayPath, item.resource?.serverName && ` [${item.resource.serverName}]`] })] }, item.path));
|
|
378
|
-
}) }));
|
|
379
|
-
});
|
|
380
|
-
/**
|
|
381
|
-
* Export with React.memo to prevent unnecessary re-renders from parent
|
|
382
|
-
* Only re-renders when props actually change (shallow comparison)
|
|
383
|
-
*/
|
|
384
|
-
const ResourceAutocomplete = React.memo(ResourceAutocompleteInner);
|
|
385
|
-
export default ResourceAutocomplete;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { Key } from '../hooks/useInputOrchestrator.js';
|
|
3
|
-
import type { PromptInfo } from '@dexto/core';
|
|
4
|
-
import type { DextoAgent } from '@dexto/core';
|
|
5
|
-
export interface SlashCommandAutocompleteHandle {
|
|
6
|
-
handleInput: (input: string, key: Key) => boolean;
|
|
7
|
-
}
|
|
8
|
-
interface SlashCommandAutocompleteProps {
|
|
9
|
-
isVisible: boolean;
|
|
10
|
-
searchQuery: string;
|
|
11
|
-
onSelectPrompt: (prompt: PromptInfo) => void;
|
|
12
|
-
onSelectSystemCommand?: (command: string) => void;
|
|
13
|
-
onLoadIntoInput?: (command: string) => void;
|
|
14
|
-
onSubmitRaw?: ((text: string) => Promise<void> | void) | undefined;
|
|
15
|
-
onClose: () => void;
|
|
16
|
-
agent: DextoAgent;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Inner component - wrapped with React.memo below
|
|
20
|
-
*/
|
|
21
|
-
declare const SlashCommandAutocompleteInner: React.ForwardRefExoticComponent<SlashCommandAutocompleteProps & React.RefAttributes<SlashCommandAutocompleteHandle>>;
|
|
22
|
-
/**
|
|
23
|
-
* Export with React.memo to prevent unnecessary re-renders from parent
|
|
24
|
-
* Only re-renders when props actually change (shallow comparison)
|
|
25
|
-
*/
|
|
26
|
-
export declare const SlashCommandAutocomplete: typeof SlashCommandAutocompleteInner;
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=SlashCommandAutocomplete.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SlashCommandAutocomplete.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/components/SlashCommandAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM9C,MAAM,WAAW,8BAA8B;IAC3C,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CACrD;AAED,UAAU,6BAA6B;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC7C,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACnE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;CACrB;AAmGD;;GAEG;AACH,QAAA,MAAM,6BAA6B,sHA4bjC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAEhC,OAAO,6BAA6B,CAAC"}
|