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,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input Utilities
|
|
3
|
+
* Constants and helpers for parsing terminal input sequences.
|
|
4
|
+
*/
|
|
5
|
+
export const ESC = '\u001B';
|
|
6
|
+
export const SGR_EVENT_PREFIX = `${ESC}[<`;
|
|
7
|
+
export const X11_EVENT_PREFIX = `${ESC}[M`;
|
|
8
|
+
// Focus tracking sequences
|
|
9
|
+
export const FOCUS_IN = `${ESC}[I`;
|
|
10
|
+
export const FOCUS_OUT = `${ESC}[O`;
|
|
11
|
+
// Mouse event regex patterns
|
|
12
|
+
// Using ESC constant to avoid control-character lint warnings
|
|
13
|
+
const ESC_CHAR = String.fromCharCode(0x1b);
|
|
14
|
+
export const SGR_MOUSE_REGEX = new RegExp(`^${ESC_CHAR}\\[<(\\d+);(\\d+);(\\d+)([mM])`);
|
|
15
|
+
export const X11_MOUSE_REGEX = new RegExp(`^${ESC_CHAR}\\[M([\\s\\S]{3})`);
|
|
16
|
+
/**
|
|
17
|
+
* Check if buffer could be a SGR mouse sequence (or prefix thereof)
|
|
18
|
+
*/
|
|
19
|
+
export function couldBeSGRMouseSequence(buffer) {
|
|
20
|
+
if (buffer.length === 0)
|
|
21
|
+
return true;
|
|
22
|
+
// Check if buffer is a prefix of a mouse sequence starter
|
|
23
|
+
if (SGR_EVENT_PREFIX.startsWith(buffer))
|
|
24
|
+
return true;
|
|
25
|
+
// Check if buffer is a mouse sequence prefix
|
|
26
|
+
if (buffer.startsWith(SGR_EVENT_PREFIX))
|
|
27
|
+
return true;
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if buffer could be any mouse sequence (or prefix thereof)
|
|
32
|
+
*/
|
|
33
|
+
export function couldBeMouseSequence(buffer) {
|
|
34
|
+
if (buffer.length === 0)
|
|
35
|
+
return true;
|
|
36
|
+
// Check SGR prefix
|
|
37
|
+
if (SGR_EVENT_PREFIX.startsWith(buffer) || buffer.startsWith(SGR_EVENT_PREFIX))
|
|
38
|
+
return true;
|
|
39
|
+
// Check X11 prefix
|
|
40
|
+
if (X11_EVENT_PREFIX.startsWith(buffer) || buffer.startsWith(X11_EVENT_PREFIX))
|
|
41
|
+
return true;
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the length of a complete mouse sequence at the start of buffer.
|
|
46
|
+
* Returns 0 if no complete sequence found.
|
|
47
|
+
*/
|
|
48
|
+
export function getMouseSequenceLength(buffer) {
|
|
49
|
+
const sgrMatch = buffer.match(SGR_MOUSE_REGEX);
|
|
50
|
+
if (sgrMatch)
|
|
51
|
+
return sgrMatch[0].length;
|
|
52
|
+
const x11Match = buffer.match(X11_MOUSE_REGEX);
|
|
53
|
+
if (x11Match)
|
|
54
|
+
return x11Match[0].length;
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
@@ -3,23 +3,14 @@
|
|
|
3
3
|
* Helpers for detecting autocomplete triggers and parsing input
|
|
4
4
|
*/
|
|
5
5
|
import { parseInput } from '../../commands/interactive-commands/command-parser.js';
|
|
6
|
-
import type { CommandResult } from '../../commands/interactive-commands/command-parser.js';
|
|
7
6
|
/**
|
|
8
7
|
* Autocomplete type
|
|
9
8
|
*/
|
|
10
9
|
export type AutocompleteType = 'none' | 'slash' | 'resource';
|
|
11
|
-
/**
|
|
12
|
-
* Interactive selector type
|
|
13
|
-
*/
|
|
14
|
-
export type InteractiveSelectorType = 'none' | 'model' | 'session';
|
|
15
10
|
/**
|
|
16
11
|
* Detects what type of autocomplete should be shown based on input
|
|
17
12
|
*/
|
|
18
13
|
export declare function detectAutocompleteType(input: string): AutocompleteType;
|
|
19
|
-
/**
|
|
20
|
-
* Detects if an interactive selector should be shown based on parsed command
|
|
21
|
-
*/
|
|
22
|
-
export declare function detectInteractiveSelector(parsed: CommandResult): InteractiveSelectorType;
|
|
23
14
|
/**
|
|
24
15
|
* Extracts the query string for slash command autocomplete
|
|
25
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputParsing.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/inputParsing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uDAAuD,CAAC;
|
|
1
|
+
{"version":3,"file":"inputParsing.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/inputParsing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uDAAuD,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE7D;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAkBtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBtE;AAED;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -23,33 +23,6 @@ export function detectAutocompleteType(input) {
|
|
|
23
23
|
}
|
|
24
24
|
return 'none';
|
|
25
25
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Detects if an interactive selector should be shown based on parsed command
|
|
28
|
-
*/
|
|
29
|
-
export function detectInteractiveSelector(parsed) {
|
|
30
|
-
if (parsed.type !== 'command' || !parsed.command) {
|
|
31
|
-
return 'none';
|
|
32
|
-
}
|
|
33
|
-
const command = parsed.command;
|
|
34
|
-
const hasArgs = parsed.args && parsed.args.length > 0;
|
|
35
|
-
const hasSpaceAfterCommand = parsed.rawInput.includes(' ') && parsed.rawInput.trim().length > command.length + 1;
|
|
36
|
-
// Model selector
|
|
37
|
-
if (command === 'model' && !hasArgs && !hasSpaceAfterCommand) {
|
|
38
|
-
return 'model';
|
|
39
|
-
}
|
|
40
|
-
// Session selector
|
|
41
|
-
if ((command === 'resume' || command === 'switch') && !hasArgs && !hasSpaceAfterCommand) {
|
|
42
|
-
return 'session';
|
|
43
|
-
}
|
|
44
|
-
if (command === 'session' &&
|
|
45
|
-
parsed.args &&
|
|
46
|
-
parsed.args[0] === 'switch' &&
|
|
47
|
-
parsed.args.length === 1 &&
|
|
48
|
-
!hasSpaceAfterCommand) {
|
|
49
|
-
return 'session';
|
|
50
|
-
}
|
|
51
|
-
return 'none';
|
|
52
|
-
}
|
|
53
26
|
/**
|
|
54
27
|
* Extracts the query string for slash command autocomplete
|
|
55
28
|
*/
|
|
@@ -2,12 +2,63 @@
|
|
|
2
2
|
* Message formatting utilities
|
|
3
3
|
* Helpers for creating and formatting messages
|
|
4
4
|
*/
|
|
5
|
-
import type { DextoAgent } from '@dexto/core';
|
|
5
|
+
import type { DextoAgent, InternalMessage } from '@dexto/core';
|
|
6
6
|
import type { Message } from '../state/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Convert absolute path to display-friendly relative path.
|
|
9
|
+
* Strategy:
|
|
10
|
+
* 1. If path is under cwd → relative from cwd (e.g., "src/file.ts")
|
|
11
|
+
* 2. If path is under home → use tilde (e.g., "~/Projects/file.ts")
|
|
12
|
+
* 3. Otherwise → return absolute path
|
|
13
|
+
*/
|
|
14
|
+
export declare function makeRelativePath(absolutePath: string, cwd?: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Format a path for display: relative + center-truncate if needed.
|
|
17
|
+
* @param absolutePath - The absolute file path
|
|
18
|
+
* @param maxWidth - Maximum display width (default 60)
|
|
19
|
+
* @param cwd - Current working directory for relative path calculation
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatPathForDisplay(absolutePath: string, maxWidth?: number, cwd?: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Center-truncate a file path to keep the filename visible.
|
|
24
|
+
* e.g., "/Users/karaj/Projects/very/long/path/to/file.ts" → "/Users/karaj/…/to/file.ts"
|
|
25
|
+
*
|
|
26
|
+
* Strategy:
|
|
27
|
+
* 1. If path fits within maxWidth, return as-is
|
|
28
|
+
* 2. Keep first segment (root/home) and last 2 segments (parent + filename)
|
|
29
|
+
* 3. Add "…" in the middle
|
|
30
|
+
*/
|
|
31
|
+
export declare function centerTruncatePath(filePath: string, maxWidth: number): string;
|
|
32
|
+
/**
|
|
33
|
+
* Gets a user-friendly display name for a tool.
|
|
34
|
+
* Returns the friendly name if known, otherwise returns the original name
|
|
35
|
+
* with any "internal--" prefix stripped.
|
|
36
|
+
* MCP tools keep their server prefix for clarity (e.g., "mcp_server__tool").
|
|
37
|
+
*/
|
|
38
|
+
export declare function getToolDisplayName(toolName: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Formats tool arguments for display.
|
|
41
|
+
* Format: ToolName(primary_arg) or ToolName(primary_arg, key: value)
|
|
42
|
+
*
|
|
43
|
+
* Uses tool-specific config to determine which args to show.
|
|
44
|
+
* - File paths: converted to relative paths, center-truncated if needed
|
|
45
|
+
* - Commands/URLs: shown in full (never truncated)
|
|
46
|
+
* - Other args: truncated at 40 chars
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatToolArgsForDisplay(toolName: string, args: Record<string, unknown>): string;
|
|
49
|
+
/**
|
|
50
|
+
* Formats tool arguments for display (compact preview).
|
|
51
|
+
* @deprecated Use formatToolArgsForDisplay instead
|
|
52
|
+
*/
|
|
53
|
+
export declare function formatToolArgsPreview(args: Record<string, unknown>, maxLength?: number): string;
|
|
7
54
|
/**
|
|
8
55
|
* Creates a user message
|
|
9
56
|
*/
|
|
10
57
|
export declare function createUserMessage(content: string): Message;
|
|
58
|
+
/**
|
|
59
|
+
* Creates a queued user message (shown when message is queued while processing)
|
|
60
|
+
*/
|
|
61
|
+
export declare function createQueuedUserMessage(content: string, queuePosition: number): Message;
|
|
11
62
|
/**
|
|
12
63
|
* Creates a system message
|
|
13
64
|
*/
|
|
@@ -27,7 +78,7 @@ export declare function createStreamingMessage(): Message;
|
|
|
27
78
|
/**
|
|
28
79
|
* Converts session history messages to UI messages
|
|
29
80
|
*/
|
|
30
|
-
export declare function convertHistoryToUIMessages(history:
|
|
81
|
+
export declare function convertHistoryToUIMessages(history: InternalMessage[], sessionId: string): Message[];
|
|
31
82
|
/**
|
|
32
83
|
* Collects startup information for display in header
|
|
33
84
|
*/
|
|
@@ -38,6 +89,6 @@ export declare function getStartupInfo(agent: DextoAgent): Promise<{
|
|
|
38
89
|
};
|
|
39
90
|
failedConnections: string[];
|
|
40
91
|
toolCount: number;
|
|
41
|
-
logFile: string;
|
|
92
|
+
logFile: string | null;
|
|
42
93
|
}>;
|
|
43
94
|
//# sourceMappingURL=messageFormatting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageFormatting.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/messageFormatting.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"messageFormatting.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/messageFormatting.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAe,MAAM,aAAa,CAAC;AAE5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAmB1F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,MAAW,EACrB,GAAG,GAAE,MAAsB,GAC5B,MAAM,CAWR;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiC7E;AAmED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW3D;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAwEhG;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,GAAE,MAAW,GACvB,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CASvF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAQjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAQhD;AAgBD;;GAEG;AACH,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,eAAe,EAAE,EAC1B,SAAS,EAAE,MAAM,GAClB,OAAO,EAAE,CAmBX;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,UAAU;;;;;;;;GAiBrD"}
|
|
@@ -2,8 +2,271 @@
|
|
|
2
2
|
* Message formatting utilities
|
|
3
3
|
* Helpers for creating and formatting messages
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import os from 'os';
|
|
7
|
+
import { isTextPart } from '@dexto/core';
|
|
6
8
|
import { generateMessageId } from './idGenerator.js';
|
|
9
|
+
/**
|
|
10
|
+
* Convert absolute path to display-friendly relative path.
|
|
11
|
+
* Strategy:
|
|
12
|
+
* 1. If path is under cwd → relative from cwd (e.g., "src/file.ts")
|
|
13
|
+
* 2. If path is under home → use tilde (e.g., "~/Projects/file.ts")
|
|
14
|
+
* 3. Otherwise → return absolute path
|
|
15
|
+
*/
|
|
16
|
+
export function makeRelativePath(absolutePath, cwd = process.cwd()) {
|
|
17
|
+
// Normalize paths for comparison
|
|
18
|
+
const normalizedPath = path.normalize(absolutePath);
|
|
19
|
+
const normalizedCwd = path.normalize(cwd);
|
|
20
|
+
const homeDir = os.homedir();
|
|
21
|
+
// If under cwd, return relative path
|
|
22
|
+
if (normalizedPath.startsWith(normalizedCwd + path.sep) || normalizedPath === normalizedCwd) {
|
|
23
|
+
const relative = path.relative(normalizedCwd, normalizedPath);
|
|
24
|
+
return relative || '.';
|
|
25
|
+
}
|
|
26
|
+
// If under home directory, use tilde
|
|
27
|
+
if (normalizedPath.startsWith(homeDir + path.sep) || normalizedPath === homeDir) {
|
|
28
|
+
return '~' + normalizedPath.slice(homeDir.length);
|
|
29
|
+
}
|
|
30
|
+
// Return absolute path as-is
|
|
31
|
+
return absolutePath;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Format a path for display: relative + center-truncate if needed.
|
|
35
|
+
* @param absolutePath - The absolute file path
|
|
36
|
+
* @param maxWidth - Maximum display width (default 60)
|
|
37
|
+
* @param cwd - Current working directory for relative path calculation
|
|
38
|
+
*/
|
|
39
|
+
export function formatPathForDisplay(absolutePath, maxWidth = 60, cwd = process.cwd()) {
|
|
40
|
+
// First convert to relative
|
|
41
|
+
const relativePath = makeRelativePath(absolutePath, cwd);
|
|
42
|
+
// If fits, return as-is
|
|
43
|
+
if (relativePath.length <= maxWidth) {
|
|
44
|
+
return relativePath;
|
|
45
|
+
}
|
|
46
|
+
// Apply center-truncation
|
|
47
|
+
return centerTruncatePath(relativePath, maxWidth);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Center-truncate a file path to keep the filename visible.
|
|
51
|
+
* e.g., "/Users/karaj/Projects/very/long/path/to/file.ts" → "/Users/karaj/…/to/file.ts"
|
|
52
|
+
*
|
|
53
|
+
* Strategy:
|
|
54
|
+
* 1. If path fits within maxWidth, return as-is
|
|
55
|
+
* 2. Keep first segment (root/home) and last 2 segments (parent + filename)
|
|
56
|
+
* 3. Add "…" in the middle
|
|
57
|
+
*/
|
|
58
|
+
export function centerTruncatePath(filePath, maxWidth) {
|
|
59
|
+
if (filePath.length <= maxWidth) {
|
|
60
|
+
return filePath;
|
|
61
|
+
}
|
|
62
|
+
const sep = path.sep;
|
|
63
|
+
const segments = filePath.split(sep).filter(Boolean);
|
|
64
|
+
if (segments.length <= 3) {
|
|
65
|
+
// Too few segments to center-truncate, just end-truncate
|
|
66
|
+
return filePath.slice(0, maxWidth - 1) + '…';
|
|
67
|
+
}
|
|
68
|
+
// Keep first segment and last 2 segments
|
|
69
|
+
const first = filePath.startsWith(sep) ? sep + segments[0] : segments[0];
|
|
70
|
+
const lastTwo = segments.slice(-2).join(sep);
|
|
71
|
+
const truncated = `${first}${sep}…${sep}${lastTwo}`;
|
|
72
|
+
if (truncated.length <= maxWidth) {
|
|
73
|
+
return truncated;
|
|
74
|
+
}
|
|
75
|
+
// Still too long - try with just the filename
|
|
76
|
+
const filename = segments[segments.length - 1] || '';
|
|
77
|
+
const withJustFilename = `…${sep}${filename}`;
|
|
78
|
+
if (withJustFilename.length <= maxWidth) {
|
|
79
|
+
return withJustFilename;
|
|
80
|
+
}
|
|
81
|
+
// Filename itself is too long, end-truncate it
|
|
82
|
+
return filename.slice(0, maxWidth - 1) + '…';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Per-tool display configurations.
|
|
86
|
+
* Each tool specifies exactly which arguments to show and how.
|
|
87
|
+
*/
|
|
88
|
+
const TOOL_CONFIGS = {
|
|
89
|
+
// File tools - show file_path as primary
|
|
90
|
+
read_file: { displayName: 'Read', argsToShow: ['file_path'], primaryArg: 'file_path' },
|
|
91
|
+
write_file: { displayName: 'Write', argsToShow: ['file_path'], primaryArg: 'file_path' },
|
|
92
|
+
edit_file: { displayName: 'Update', argsToShow: ['file_path'], primaryArg: 'file_path' },
|
|
93
|
+
// Search tools - show pattern as primary, path as secondary
|
|
94
|
+
glob_files: {
|
|
95
|
+
displayName: 'Find files',
|
|
96
|
+
argsToShow: ['pattern', 'path'],
|
|
97
|
+
primaryArg: 'pattern',
|
|
98
|
+
},
|
|
99
|
+
grep_content: {
|
|
100
|
+
displayName: 'Search files',
|
|
101
|
+
argsToShow: ['pattern', 'path'],
|
|
102
|
+
primaryArg: 'pattern',
|
|
103
|
+
},
|
|
104
|
+
// Bash - show command only, skip description
|
|
105
|
+
bash_exec: { displayName: 'Bash', argsToShow: ['command'], primaryArg: 'command' },
|
|
106
|
+
bash_output: {
|
|
107
|
+
displayName: 'BashOutput',
|
|
108
|
+
argsToShow: ['process_id'],
|
|
109
|
+
primaryArg: 'process_id',
|
|
110
|
+
},
|
|
111
|
+
kill_process: { displayName: 'Kill', argsToShow: ['process_id'], primaryArg: 'process_id' },
|
|
112
|
+
// User interaction
|
|
113
|
+
ask_user: { displayName: 'Ask', argsToShow: ['question'], primaryArg: 'question' },
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Gets the display config for a tool.
|
|
117
|
+
* Handles internal-- prefix by stripping it before lookup.
|
|
118
|
+
*/
|
|
119
|
+
function getToolConfig(toolName) {
|
|
120
|
+
// Try direct lookup first
|
|
121
|
+
if (TOOL_CONFIGS[toolName]) {
|
|
122
|
+
return TOOL_CONFIGS[toolName];
|
|
123
|
+
}
|
|
124
|
+
// Strip internal-- prefix and try again
|
|
125
|
+
if (toolName.startsWith('internal--')) {
|
|
126
|
+
const baseName = toolName.replace('internal--', '');
|
|
127
|
+
return TOOL_CONFIGS[baseName];
|
|
128
|
+
}
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Gets a user-friendly display name for a tool.
|
|
133
|
+
* Returns the friendly name if known, otherwise returns the original name
|
|
134
|
+
* with any "internal--" prefix stripped.
|
|
135
|
+
* MCP tools keep their server prefix for clarity (e.g., "mcp_server__tool").
|
|
136
|
+
*/
|
|
137
|
+
export function getToolDisplayName(toolName) {
|
|
138
|
+
const config = getToolConfig(toolName);
|
|
139
|
+
if (config) {
|
|
140
|
+
return config.displayName;
|
|
141
|
+
}
|
|
142
|
+
// Strip "internal--" prefix for unknown internal tools
|
|
143
|
+
if (toolName.startsWith('internal--')) {
|
|
144
|
+
return toolName.replace('internal--', '');
|
|
145
|
+
}
|
|
146
|
+
// MCP tools keep their full name (server__tool format) for clarity
|
|
147
|
+
return toolName;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Fallback primary argument names for unknown tools.
|
|
151
|
+
* Used when we don't have a specific config for a tool.
|
|
152
|
+
*/
|
|
153
|
+
const FALLBACK_PRIMARY_ARGS = new Set([
|
|
154
|
+
'file_path',
|
|
155
|
+
'path',
|
|
156
|
+
'pattern',
|
|
157
|
+
'command',
|
|
158
|
+
'query',
|
|
159
|
+
'question',
|
|
160
|
+
'url',
|
|
161
|
+
]);
|
|
162
|
+
/**
|
|
163
|
+
* Arguments that are file paths and should use relative path formatting.
|
|
164
|
+
* These get converted to relative paths and center-truncated if needed.
|
|
165
|
+
*/
|
|
166
|
+
const PATH_ARGS = new Set(['file_path', 'path']);
|
|
167
|
+
/**
|
|
168
|
+
* Arguments that should never be truncated (urls, etc.)
|
|
169
|
+
* These provide important context that users need to see in full.
|
|
170
|
+
* Note: 'command' is handled specially - single-line commands are not truncated,
|
|
171
|
+
* but multi-line commands (heredocs) are truncated to first line only.
|
|
172
|
+
*/
|
|
173
|
+
const NEVER_TRUNCATE_ARGS = new Set(['url']);
|
|
174
|
+
/**
|
|
175
|
+
* Formats tool arguments for display.
|
|
176
|
+
* Format: ToolName(primary_arg) or ToolName(primary_arg, key: value)
|
|
177
|
+
*
|
|
178
|
+
* Uses tool-specific config to determine which args to show.
|
|
179
|
+
* - File paths: converted to relative paths, center-truncated if needed
|
|
180
|
+
* - Commands/URLs: shown in full (never truncated)
|
|
181
|
+
* - Other args: truncated at 40 chars
|
|
182
|
+
*/
|
|
183
|
+
export function formatToolArgsForDisplay(toolName, args) {
|
|
184
|
+
const entries = Object.entries(args);
|
|
185
|
+
if (entries.length === 0)
|
|
186
|
+
return '';
|
|
187
|
+
const config = getToolConfig(toolName);
|
|
188
|
+
const parts = [];
|
|
189
|
+
/**
|
|
190
|
+
* Format a single argument value for display
|
|
191
|
+
*/
|
|
192
|
+
const formatArgValue = (argName, value) => {
|
|
193
|
+
const strValue = typeof value === 'string' ? value : JSON.stringify(value);
|
|
194
|
+
// File paths: use relative path + center-truncation
|
|
195
|
+
if (PATH_ARGS.has(argName)) {
|
|
196
|
+
return formatPathForDisplay(strValue);
|
|
197
|
+
}
|
|
198
|
+
// Commands: show single-line in full, truncate multi-line (heredocs) to first line
|
|
199
|
+
if (argName === 'command') {
|
|
200
|
+
const newlineIndex = strValue.indexOf('\n');
|
|
201
|
+
if (newlineIndex === -1) {
|
|
202
|
+
// Single-line command: show in full (useful for complex pipes)
|
|
203
|
+
return strValue;
|
|
204
|
+
}
|
|
205
|
+
// Multi-line command (heredoc): show first line only
|
|
206
|
+
return strValue.slice(0, newlineIndex) + '...';
|
|
207
|
+
}
|
|
208
|
+
// URLs: never truncate
|
|
209
|
+
if (NEVER_TRUNCATE_ARGS.has(argName)) {
|
|
210
|
+
return strValue;
|
|
211
|
+
}
|
|
212
|
+
// Other args: simple truncation
|
|
213
|
+
return strValue.length > 40 ? strValue.slice(0, 37) + '...' : strValue;
|
|
214
|
+
};
|
|
215
|
+
if (config) {
|
|
216
|
+
// Use tool-specific config
|
|
217
|
+
for (const argName of config.argsToShow) {
|
|
218
|
+
if (!(argName in args))
|
|
219
|
+
continue;
|
|
220
|
+
if (parts.length >= 3)
|
|
221
|
+
break;
|
|
222
|
+
const formattedValue = formatArgValue(argName, args[argName]);
|
|
223
|
+
if (argName === config.primaryArg) {
|
|
224
|
+
// Primary arg without key name
|
|
225
|
+
parts.unshift(formattedValue);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
// Secondary args with key name
|
|
229
|
+
parts.push(`${argName}: ${formattedValue}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// Fallback for unknown tools (MCP, etc.)
|
|
235
|
+
for (const [key, value] of entries) {
|
|
236
|
+
if (parts.length >= 3)
|
|
237
|
+
break;
|
|
238
|
+
const formattedValue = formatArgValue(key, value);
|
|
239
|
+
if (FALLBACK_PRIMARY_ARGS.has(key) || PATH_ARGS.has(key)) {
|
|
240
|
+
// Primary arg without key name
|
|
241
|
+
parts.unshift(formattedValue);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
// Other args with key name
|
|
245
|
+
parts.push(`${key}: ${formattedValue}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return parts.join(', ');
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Formats tool arguments for display (compact preview).
|
|
253
|
+
* @deprecated Use formatToolArgsForDisplay instead
|
|
254
|
+
*/
|
|
255
|
+
export function formatToolArgsPreview(args, maxLength = 60) {
|
|
256
|
+
const entries = Object.entries(args);
|
|
257
|
+
if (entries.length === 0)
|
|
258
|
+
return '';
|
|
259
|
+
// Show key parameters in a compact format
|
|
260
|
+
const preview = entries
|
|
261
|
+
.slice(0, 3) // Max 3 params
|
|
262
|
+
.map(([key, value]) => {
|
|
263
|
+
const strValue = typeof value === 'string' ? value : JSON.stringify(value);
|
|
264
|
+
const truncated = strValue.length > 30 ? strValue.slice(0, 27) + '...' : strValue;
|
|
265
|
+
return `${key}: "${truncated}"`;
|
|
266
|
+
})
|
|
267
|
+
.join(', ');
|
|
268
|
+
return preview.length > maxLength ? preview.slice(0, maxLength - 3) + '...' : preview;
|
|
269
|
+
}
|
|
7
270
|
/**
|
|
8
271
|
* Creates a user message
|
|
9
272
|
*/
|
|
@@ -15,6 +278,19 @@ export function createUserMessage(content) {
|
|
|
15
278
|
timestamp: new Date(),
|
|
16
279
|
};
|
|
17
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* Creates a queued user message (shown when message is queued while processing)
|
|
283
|
+
*/
|
|
284
|
+
export function createQueuedUserMessage(content, queuePosition) {
|
|
285
|
+
return {
|
|
286
|
+
id: generateMessageId('user-queued'),
|
|
287
|
+
role: 'user',
|
|
288
|
+
content,
|
|
289
|
+
timestamp: new Date(),
|
|
290
|
+
isQueued: true,
|
|
291
|
+
queuePosition,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
18
294
|
/**
|
|
19
295
|
* Creates a system message
|
|
20
296
|
*/
|
|
@@ -62,42 +338,35 @@ export function createStreamingMessage() {
|
|
|
62
338
|
};
|
|
63
339
|
}
|
|
64
340
|
/**
|
|
65
|
-
* Extracts text content from message content (handles
|
|
341
|
+
* Extracts text content from message content (handles ContentPart array or null)
|
|
66
342
|
*/
|
|
67
343
|
function extractTextContent(content) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return content;
|
|
71
|
-
}
|
|
72
|
-
// Array of content parts (from Anthropic/OpenAI format)
|
|
73
|
-
if (Array.isArray(content)) {
|
|
74
|
-
return content
|
|
75
|
-
.filter((part) => part.type === 'text')
|
|
76
|
-
.map((part) => part.text || '')
|
|
77
|
-
.join('\n');
|
|
344
|
+
if (!content) {
|
|
345
|
+
return '';
|
|
78
346
|
}
|
|
79
|
-
|
|
80
|
-
|
|
347
|
+
return content
|
|
348
|
+
.filter(isTextPart)
|
|
349
|
+
.map((part) => part.text)
|
|
350
|
+
.join('\n');
|
|
81
351
|
}
|
|
82
352
|
/**
|
|
83
353
|
* Converts session history messages to UI messages
|
|
84
354
|
*/
|
|
85
355
|
export function convertHistoryToUIMessages(history, sessionId) {
|
|
86
356
|
const uiMessages = [];
|
|
87
|
-
|
|
88
|
-
const msg = history[index];
|
|
357
|
+
history.forEach((msg, index) => {
|
|
89
358
|
// Extract text content properly
|
|
90
359
|
const textContent = extractTextContent(msg.content);
|
|
91
360
|
// Skip empty messages
|
|
92
361
|
if (!textContent)
|
|
93
|
-
|
|
362
|
+
return;
|
|
94
363
|
uiMessages.push({
|
|
95
364
|
id: `session-${sessionId}-${index}`,
|
|
96
365
|
role: msg.role,
|
|
97
366
|
content: textContent,
|
|
98
|
-
timestamp: new Date(msg.timestamp
|
|
367
|
+
timestamp: new Date(msg.timestamp ?? Date.now() - (history.length - index) * 1000),
|
|
99
368
|
});
|
|
100
|
-
}
|
|
369
|
+
});
|
|
101
370
|
return uiMessages;
|
|
102
371
|
}
|
|
103
372
|
/**
|
|
@@ -108,7 +377,8 @@ export async function getStartupInfo(agent) {
|
|
|
108
377
|
const failedConnections = agent.mcpManager.getFailedConnections();
|
|
109
378
|
const tools = await agent.getAllTools();
|
|
110
379
|
const toolCount = Object.keys(tools).length;
|
|
111
|
-
|
|
380
|
+
// Use agent's logger which has the correct per-agent log path from enriched config
|
|
381
|
+
const logFile = agent.logger.getLogFilePath();
|
|
112
382
|
return {
|
|
113
383
|
connectedServers: {
|
|
114
384
|
count: connectedServers.size,
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mouse Event Utilities
|
|
3
|
+
* Provides trackpad/mouse scroll support.
|
|
4
|
+
*/
|
|
5
|
+
import { ESC } from './input.js';
|
|
6
|
+
export type MouseEventName = 'scroll-up' | 'scroll-down' | 'scroll-left' | 'scroll-right' | 'left-press' | 'left-release' | 'right-press' | 'right-release' | 'middle-press' | 'middle-release' | 'move';
|
|
7
|
+
export interface MouseEvent {
|
|
8
|
+
name: MouseEventName;
|
|
9
|
+
col: number;
|
|
10
|
+
row: number;
|
|
11
|
+
shift: boolean;
|
|
12
|
+
meta: boolean;
|
|
13
|
+
ctrl: boolean;
|
|
14
|
+
button: 'left' | 'middle' | 'right' | 'none';
|
|
15
|
+
}
|
|
16
|
+
export type MouseHandler = (event: MouseEvent) => void | boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Enable mouse events in the terminal.
|
|
19
|
+
* Uses SGR extended mouse mode for better coordinate handling.
|
|
20
|
+
*/
|
|
21
|
+
export declare function enableMouseEvents(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Disable mouse events in the terminal.
|
|
24
|
+
*/
|
|
25
|
+
export declare function disableMouseEvents(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get mouse event name from button code
|
|
28
|
+
*
|
|
29
|
+
* NOTE: X11 mouse protocol limitation - all button releases report the same code (3),
|
|
30
|
+
* so we cannot distinguish between left-release, middle-release, and right-release.
|
|
31
|
+
* This function returns 'left-release' for all releases in X11 mode.
|
|
32
|
+
* Consumers needing accurate release identification should track press state themselves.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getMouseEventName(buttonCode: number, isRelease: boolean): MouseEventName | null;
|
|
35
|
+
/**
|
|
36
|
+
* Parse SGR format mouse event
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseSGRMouseEvent(buffer: string): {
|
|
39
|
+
event: MouseEvent;
|
|
40
|
+
length: number;
|
|
41
|
+
} | null;
|
|
42
|
+
/**
|
|
43
|
+
* Parse X11 format mouse event
|
|
44
|
+
*/
|
|
45
|
+
export declare function parseX11MouseEvent(buffer: string): {
|
|
46
|
+
event: MouseEvent;
|
|
47
|
+
length: number;
|
|
48
|
+
} | null;
|
|
49
|
+
/**
|
|
50
|
+
* Parse mouse event from buffer (tries both SGR and X11 formats)
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseMouseEvent(buffer: string): {
|
|
53
|
+
event: MouseEvent;
|
|
54
|
+
length: number;
|
|
55
|
+
} | null;
|
|
56
|
+
/**
|
|
57
|
+
* Check if buffer could be an incomplete mouse sequence
|
|
58
|
+
*/
|
|
59
|
+
export declare function isIncompleteMouseSequence(buffer: string): boolean;
|
|
60
|
+
export { ESC };
|
|
61
|
+
//# sourceMappingURL=mouse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mouse.d.ts","sourceRoot":"","sources":["../../../../src/cli/ink-cli/utils/mouse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,GAAG,EAMN,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,cAAc,GACpB,WAAW,GACX,aAAa,GACb,aAAa,GACb,cAAc,GACd,YAAY,GACZ,cAAc,GACd,aAAa,GACb,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,MAAM,CAAC;AAEb,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;CAChD;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAmC/F;AAmBD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiC/F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoE/F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAE5F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAmBjE;AAGD,OAAO,EAAE,GAAG,EAAE,CAAC"}
|