@deepseek-harness-tui/dsh-tui 0.6.0 → 0.7.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 +74 -21
- package/bin/dsh-tui.js +115 -25
- package/cordis.patch.yml +69 -17
- package/cordis.yml +50 -12
- package/lib/types/activityPrefs.d.ts +1 -1
- package/lib/types/activityPrefs.js +3 -3
- package/lib/types/cc/figures.d.ts +27 -20
- package/lib/types/cc/figures.d.ts.map +1 -1
- package/lib/types/cc/figures.js +43 -34
- package/lib/types/cc/format.d.ts +18 -9
- package/lib/types/cc/format.d.ts.map +1 -1
- package/lib/types/cc/format.js +26 -18
- package/lib/types/cc/markdown.d.ts +31 -16
- package/lib/types/cc/markdown.d.ts.map +1 -1
- package/lib/types/cc/markdown.js +283 -260
- package/lib/types/cc/terminal.d.ts +10 -7
- package/lib/types/cc/terminal.d.ts.map +1 -1
- package/lib/types/cc/terminal.js +62 -50
- package/lib/types/command-trees.d.ts +3 -0
- package/lib/types/command-trees.d.ts.map +1 -0
- package/lib/types/command-trees.js +4 -0
- package/lib/types/commands.d.ts +37 -1
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +68 -3
- package/lib/types/components/ActivityLine.d.ts +1 -1
- package/lib/types/components/ActivityLine.d.ts.map +1 -1
- package/lib/types/components/ActivityPicker.d.ts.map +1 -1
- package/lib/types/components/ActivityPicker.js +3 -4
- package/lib/types/components/BtwPanel.d.ts +16 -0
- package/lib/types/components/BtwPanel.d.ts.map +1 -0
- package/lib/types/components/BtwPanel.js +47 -0
- package/lib/types/components/CommandSuggestions.d.ts +4 -2
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
- package/lib/types/components/CommandSuggestions.js +2 -2
- package/lib/types/components/EffortSlider.d.ts +15 -0
- package/lib/types/components/EffortSlider.d.ts.map +1 -0
- package/lib/types/components/EffortSlider.js +17 -0
- package/lib/types/components/GoalTodoPanel.d.ts +1 -1
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/HelpMenu.d.ts +5 -2
- package/lib/types/components/HelpMenu.d.ts.map +1 -1
- package/lib/types/components/HelpMenu.js +8 -3
- package/lib/types/components/HistorySearchDialog.d.ts +1 -1
- package/lib/types/components/HistorySearchDialog.d.ts.map +1 -1
- package/lib/types/components/HistorySearchDialog.js +21 -10
- package/lib/types/components/InterruptedByUser.d.ts +2 -2
- package/lib/types/components/InterruptedByUser.d.ts.map +1 -1
- package/lib/types/components/InterruptedByUser.js +4 -3
- package/lib/types/components/LoadedContextPanel.d.ts +1 -1
- package/lib/types/components/LoadedContextPanel.d.ts.map +1 -1
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +2 -1
- package/lib/types/components/Markdown.d.ts +11 -11
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +63 -57
- package/lib/types/components/MarkdownTable.d.ts +1 -1
- package/lib/types/components/MarkdownTable.js +2 -2
- package/lib/types/components/MessageList.d.ts +10 -2
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +17 -10
- package/lib/types/components/ModelPicker.d.ts +4 -1
- package/lib/types/components/ModelPicker.d.ts.map +1 -1
- package/lib/types/components/ModelPicker.js +16 -4
- package/lib/types/components/OverlayAbove.d.ts +20 -0
- package/lib/types/components/OverlayAbove.d.ts.map +1 -0
- package/lib/types/components/OverlayAbove.js +18 -0
- package/lib/types/components/PresetPicker.d.ts +1 -1
- package/lib/types/components/PresetPicker.d.ts.map +1 -1
- package/lib/types/components/PresetPicker.js +2 -3
- package/lib/types/components/PromptInput.d.ts +5 -4
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +186 -39
- package/lib/types/components/ResumePicker.d.ts +15 -4
- package/lib/types/components/ResumePicker.d.ts.map +1 -1
- package/lib/types/components/ResumePicker.js +25 -9
- package/lib/types/components/RewindPicker.d.ts +1 -1
- package/lib/types/components/RewindPicker.d.ts.map +1 -1
- package/lib/types/components/RewindPicker.js +14 -5
- package/lib/types/components/SearchBox.d.ts +1 -1
- package/lib/types/components/SearchBox.js +1 -1
- package/lib/types/components/Spinner/GlimmerMessage.d.ts +1 -2
- package/lib/types/components/Spinner/GlimmerMessage.d.ts.map +1 -1
- package/lib/types/components/Spinner/GlimmerMessage.js +1 -2
- package/lib/types/components/Spinner/SpinnerAnimationRow.d.ts +1 -1
- package/lib/types/components/Spinner/SpinnerAnimationRow.js +2 -2
- package/lib/types/components/Spinner/SpinnerGlyph.d.ts +1 -1
- package/lib/types/components/Spinner/SpinnerGlyph.js +1 -1
- package/lib/types/components/Spinner/spinnerUtils.d.ts +13 -18
- package/lib/types/components/Spinner/spinnerUtils.d.ts.map +1 -1
- package/lib/types/components/Spinner/spinnerUtils.js +67 -71
- package/lib/types/components/Spinner/useStalledAnimation.d.ts +1 -2
- package/lib/types/components/Spinner/useStalledAnimation.d.ts.map +1 -1
- package/lib/types/components/Spinner/useStalledAnimation.js +1 -2
- package/lib/types/components/StreamingMarkdown.d.ts +1 -1
- package/lib/types/components/StreamingMarkdown.js +1 -1
- package/lib/types/components/ThemePicker.d.ts +13 -9
- package/lib/types/components/ThemePicker.d.ts.map +1 -1
- package/lib/types/components/ThemePicker.js +21 -15
- package/lib/types/components/ThinkingToggle.d.ts +1 -1
- package/lib/types/components/ThinkingToggle.d.ts.map +1 -1
- package/lib/types/components/ThinkingToggle.js +8 -8
- package/lib/types/components/ToolUseLoader.d.ts +1 -1
- package/lib/types/components/ToolUseLoader.js +1 -1
- package/lib/types/components/WorkingSpinner.d.ts +2 -2
- package/lib/types/components/WorkingSpinner.js +2 -2
- package/lib/types/components/WorkspaceFlowPicker.d.ts +15 -0
- package/lib/types/components/WorkspaceFlowPicker.d.ts.map +1 -0
- package/lib/types/components/WorkspaceFlowPicker.js +19 -0
- package/lib/types/components/WorkspacePicker.d.ts +9 -0
- package/lib/types/components/WorkspacePicker.d.ts.map +1 -0
- package/lib/types/components/WorkspacePicker.js +13 -0
- package/lib/types/components/approvals/ApprovalPanel.d.ts +1 -1
- package/lib/types/components/approvals/ApprovalPanel.d.ts.map +1 -1
- package/lib/types/components/approvals/ApprovalPanel.js +2 -1
- package/lib/types/components/design-system/Byline.d.ts +1 -1
- package/lib/types/components/design-system/Byline.js +1 -1
- package/lib/types/components/design-system/Divider.d.ts +1 -1
- package/lib/types/components/design-system/Divider.js +1 -1
- package/lib/types/components/design-system/HintLine.d.ts +12 -0
- package/lib/types/components/design-system/HintLine.d.ts.map +1 -0
- package/lib/types/components/design-system/HintLine.js +15 -0
- package/lib/types/components/design-system/KeyboardShortcutHint.d.ts +1 -1
- package/lib/types/components/design-system/KeyboardShortcutHint.js +1 -1
- package/lib/types/components/design-system/ListItem.d.ts +2 -2
- package/lib/types/components/design-system/ListItem.d.ts.map +1 -1
- package/lib/types/components/design-system/ListItem.js +35 -3
- package/lib/types/components/design-system/LoadingState.d.ts +1 -2
- package/lib/types/components/design-system/LoadingState.d.ts.map +1 -1
- package/lib/types/components/design-system/LoadingState.js +1 -2
- package/lib/types/components/design-system/Pane.d.ts +2 -2
- package/lib/types/components/design-system/Pane.js +2 -2
- package/lib/types/components/design-system/ProgressBar.d.ts +1 -2
- package/lib/types/components/design-system/ProgressBar.d.ts.map +1 -1
- package/lib/types/components/design-system/ProgressBar.js +1 -2
- package/lib/types/components/design-system/StatusIcon.d.ts +2 -2
- package/lib/types/components/design-system/StatusIcon.js +2 -2
- package/lib/types/components/design-system/ThemeProvider.d.ts +1 -1
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +87 -26
- package/lib/types/components/design-system/ThemedBox.d.ts +1 -1
- package/lib/types/components/design-system/ThemedBox.js +1 -1
- package/lib/types/components/design-system/ThemedText.d.ts +2 -2
- package/lib/types/components/design-system/ThemedText.js +2 -2
- package/lib/types/components/listWindow.d.ts +26 -0
- package/lib/types/components/listWindow.d.ts.map +1 -0
- package/lib/types/components/listWindow.js +47 -0
- package/lib/types/components/messages/AssistantTextMessage.d.ts +1 -2
- package/lib/types/components/messages/AssistantTextMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantTextMessage.js +1 -2
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +2 -2
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +6 -6
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +12 -4
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +9 -5
- package/lib/types/components/messages/MessageMetadata.d.ts +1 -1
- package/lib/types/components/messages/MessageMetadata.js +1 -1
- package/lib/types/components/messages/UserPromptMessage.d.ts +1 -1
- package/lib/types/components/messages/UserPromptMessage.js +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +5 -1
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +11 -9
- package/lib/types/components/questions/PlanReviewPanel.d.ts +1 -1
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
- package/lib/types/components/questions/PlanReviewPanel.js +3 -2
- package/lib/types/components/trajectory/HotspotView.d.ts +14 -0
- package/lib/types/components/trajectory/HotspotView.d.ts.map +1 -0
- package/lib/types/components/trajectory/HotspotView.js +83 -0
- package/lib/types/components/trajectory/Inspector.d.ts +31 -0
- package/lib/types/components/trajectory/Inspector.d.ts.map +1 -0
- package/lib/types/components/trajectory/Inspector.js +67 -0
- package/lib/types/components/trajectory/Ledger.d.ts +20 -0
- package/lib/types/components/trajectory/Ledger.d.ts.map +1 -0
- package/lib/types/components/trajectory/Ledger.js +112 -0
- package/lib/types/components/trajectory/MiniWake.d.ts +24 -0
- package/lib/types/components/trajectory/MiniWake.d.ts.map +1 -0
- package/lib/types/components/trajectory/MiniWake.js +99 -0
- package/lib/types/components/trajectory/WaveBand.d.ts +33 -0
- package/lib/types/components/trajectory/WaveBand.d.ts.map +1 -0
- package/lib/types/components/trajectory/WaveBand.js +145 -0
- package/lib/types/customTheme.d.ts +6 -6
- package/lib/types/customTheme.d.ts.map +1 -1
- package/lib/types/customTheme.js +15 -12
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -0
- package/lib/types/{channel.d.ts → dsh-adapter/channel.d.ts} +184 -43
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -0
- package/lib/types/{channel.js → dsh-adapter/channel.js} +972 -201
- package/lib/types/dsh-adapter/childStderr.d.ts.map +1 -0
- package/lib/types/{childStderr.js → dsh-adapter/childStderr.js} +1 -1
- package/lib/types/dsh-adapter/command-trees.d.ts +27 -0
- package/lib/types/dsh-adapter/command-trees.d.ts.map +1 -0
- package/lib/types/dsh-adapter/command-trees.js +42 -0
- package/lib/types/dsh-adapter/compat/index.d.ts +22 -0
- package/lib/types/dsh-adapter/compat/index.d.ts.map +1 -0
- package/lib/types/{compat → dsh-adapter/compat}/index.js +7 -4
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts +86 -0
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/sessionLog.js +347 -0
- package/lib/types/dsh-adapter/contract.d.ts +20 -0
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -0
- package/lib/types/dsh-adapter/contract.js +109 -0
- package/lib/types/dsh-adapter/index.d.ts +80 -0
- package/lib/types/dsh-adapter/index.d.ts.map +1 -0
- package/lib/types/dsh-adapter/index.js +45 -0
- package/lib/types/dsh-adapter/invariant.d.ts.map +1 -0
- package/lib/types/dsh-adapter/packaged-skills.d.ts.map +1 -0
- package/lib/types/{plugin.d.ts → dsh-adapter/plugin.d.ts} +17 -0
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -0
- package/lib/types/{plugin.js → dsh-adapter/plugin.js} +280 -80
- package/lib/types/dsh-adapter/presets.d.ts.map +1 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts +91 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -0
- package/lib/types/dsh-adapter/providerWizard.js +332 -0
- package/lib/types/{questions.d.ts → dsh-adapter/questions.d.ts} +7 -2
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -0
- package/lib/types/{questions.js → dsh-adapter/questions.js} +15 -7
- package/lib/types/dsh-adapter/sideQuestion.d.ts +38 -0
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sideQuestion.js +69 -0
- package/lib/types/dsh-adapter/trajectory/aggregate.d.ts +46 -0
- package/lib/types/dsh-adapter/trajectory/aggregate.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/aggregate.js +207 -0
- package/lib/types/dsh-adapter/trajectory/guards.d.ts +177 -0
- package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/guards.js +235 -0
- package/lib/types/dsh-adapter/trajectory/index.d.ts +16 -0
- package/lib/types/dsh-adapter/trajectory/index.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/index.js +15 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts +40 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/inspect.js +160 -0
- package/lib/types/dsh-adapter/trajectory/projection.d.ts +128 -0
- package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/projection.js +653 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts +232 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/types.js +70 -0
- package/lib/types/dsh-adapter/trajectory/wave.d.ts +45 -0
- package/lib/types/dsh-adapter/trajectory/wave.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/wave.js +210 -0
- package/lib/types/dsh-adapter/types.d.ts +23 -0
- package/lib/types/dsh-adapter/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/types.js +1 -0
- package/lib/types/dsh-adapter/workspace.d.ts +22 -0
- package/lib/types/dsh-adapter/workspace.d.ts.map +1 -0
- package/lib/types/dsh-adapter/workspace.js +16 -0
- package/lib/types/dsh-adapter/workspaces.d.ts +118 -0
- package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -0
- package/lib/types/dsh-adapter/workspaces.js +290 -0
- package/lib/types/effortPrefs.d.ts +1 -1
- package/lib/types/effortPrefs.js +3 -3
- package/lib/types/history.js +2 -2
- package/lib/types/hooks/useBlink.d.ts +1 -1
- package/lib/types/hooks/useBlink.js +1 -1
- package/lib/types/i18n.d.ts +977 -36
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +307 -30
- package/lib/types/index.d.ts +1 -69
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +3 -31
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +33 -19
- package/lib/types/ink/dom.d.ts +15 -0
- package/lib/types/ink/dom.d.ts.map +1 -1
- package/lib/types/ink/dom.js +32 -0
- package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-input.js +8 -0
- package/lib/types/ink/hooks/use-terminal-size.d.ts +1 -1
- package/lib/types/ink/hooks/use-terminal-size.js +1 -1
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +109 -28
- package/lib/types/ink/input-suppression.d.ts +20 -0
- package/lib/types/ink/input-suppression.d.ts.map +1 -0
- package/lib/types/ink/input-suppression.js +26 -0
- package/lib/types/ink/log-update.js +21 -6
- package/lib/types/ink/parse-keypress.d.ts +31 -0
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +442 -8
- package/lib/types/ink/terminal-querier.d.ts +5 -1
- package/lib/types/ink/terminal-querier.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.js +27 -3
- package/lib/types/ink/terminal.d.ts +18 -0
- package/lib/types/ink/terminal.d.ts.map +1 -1
- package/lib/types/ink/terminal.js +32 -4
- package/lib/types/ink/termio/csi.d.ts +10 -0
- package/lib/types/ink/termio/csi.d.ts.map +1 -1
- package/lib/types/ink/termio/csi.js +20 -0
- package/lib/types/ink/termio/tokenize.js +10 -0
- package/lib/types/modelPrefs.d.ts +1 -1
- package/lib/types/modelPrefs.js +3 -3
- package/lib/types/presetPrefs.d.ts +1 -1
- package/lib/types/presetPrefs.js +3 -3
- package/lib/types/screens/Chat.d.ts +20 -4
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +655 -55
- package/lib/types/screens/StatusLine.d.ts +17 -2
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +12 -4
- package/lib/types/screens/TrajectoryScene.d.ts +16 -0
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -0
- package/lib/types/screens/TrajectoryScene.js +305 -0
- package/lib/types/sessionHistory.d.ts +9 -1
- package/lib/types/sessionHistory.d.ts.map +1 -1
- package/lib/types/sessionHistory.js +56 -16
- package/lib/types/sessionModes.d.ts +29 -0
- package/lib/types/sessionModes.d.ts.map +1 -0
- package/lib/types/sessionModes.js +45 -0
- package/lib/types/theme.d.ts +27 -3
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +48 -4
- package/lib/types/themePrefs.d.ts +3 -3
- package/lib/types/themePrefs.js +5 -5
- package/lib/types/trajectory/format.d.ts +100 -0
- package/lib/types/trajectory/format.d.ts.map +1 -0
- package/lib/types/trajectory/format.js +213 -0
- package/lib/types/trajectory/motion.d.ts +99 -0
- package/lib/types/trajectory/motion.d.ts.map +1 -0
- package/lib/types/trajectory/motion.js +143 -0
- package/lib/types/trajectory/query.d.ts +83 -0
- package/lib/types/trajectory/query.d.ts.map +1 -0
- package/lib/types/trajectory/query.js +187 -0
- package/lib/types/trajectoryPrefs.d.ts +36 -0
- package/lib/types/trajectoryPrefs.d.ts.map +1 -0
- package/lib/types/trajectoryPrefs.js +65 -0
- package/lib/types/update.d.ts +3 -3
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +18 -7
- package/lib/types/utils/clipboard.d.ts +101 -29
- package/lib/types/utils/clipboard.d.ts.map +1 -1
- package/lib/types/utils/clipboard.js +533 -55
- package/lib/types/utils/debug.d.ts +1 -1
- package/lib/types/utils/debug.js +2 -2
- package/lib/types/utils/execFileNoThrow.d.ts.map +1 -1
- package/lib/types/utils/execFileNoThrow.js +16 -6
- package/lib/types/utils/externalEditor.d.ts +115 -0
- package/lib/types/utils/externalEditor.d.ts.map +1 -0
- package/lib/types/utils/externalEditor.js +270 -0
- package/lib/types/utils/fullscreen.d.ts +2 -2
- package/lib/types/utils/fullscreen.js +3 -3
- package/lib/types/utils/loaded-context.d.ts +1 -1
- package/lib/types/utils/loaded-context.d.ts.map +1 -1
- package/lib/types/utils/modifiers.d.ts +24 -0
- package/lib/types/utils/modifiers.d.ts.map +1 -1
- package/lib/types/utils/modifiers.js +27 -0
- package/lib/types/utils/paths.d.ts +45 -0
- package/lib/types/utils/paths.d.ts.map +1 -0
- package/lib/types/utils/paths.js +69 -0
- package/lib/types/utils/shellQuote.d.ts +14 -0
- package/lib/types/utils/shellQuote.d.ts.map +1 -0
- package/lib/types/utils/shellQuote.js +39 -0
- package/lib/types/utils/workspaceRoot.d.ts +21 -0
- package/lib/types/utils/workspaceRoot.d.ts.map +1 -0
- package/lib/types/utils/workspaceRoot.js +47 -0
- package/lib/types/workspaces.d.ts +3 -0
- package/lib/types/workspaces.d.ts.map +1 -0
- package/lib/types/workspaces.js +4 -0
- package/package.json +26 -8
- package/lib/types/approvals.d.ts.map +0 -1
- package/lib/types/channel.d.ts.map +0 -1
- package/lib/types/childStderr.d.ts.map +0 -1
- package/lib/types/compat/index.d.ts +0 -20
- package/lib/types/compat/index.d.ts.map +0 -1
- package/lib/types/compat/sessionLog.d.ts +0 -40
- package/lib/types/compat/sessionLog.d.ts.map +0 -1
- package/lib/types/compat/sessionLog.js +0 -226
- package/lib/types/invariant.d.ts.map +0 -1
- package/lib/types/packaged-skills.d.ts.map +0 -1
- package/lib/types/plugin.d.ts.map +0 -1
- package/lib/types/presets.d.ts.map +0 -1
- package/lib/types/questions.d.ts.map +0 -1
- /package/lib/types/{approvals.d.ts → dsh-adapter/approvals.d.ts} +0 -0
- /package/lib/types/{approvals.js → dsh-adapter/approvals.js} +0 -0
- /package/lib/types/{childStderr.d.ts → dsh-adapter/childStderr.d.ts} +0 -0
- /package/lib/types/{invariant.d.ts → dsh-adapter/invariant.d.ts} +0 -0
- /package/lib/types/{invariant.js → dsh-adapter/invariant.js} +0 -0
- /package/lib/types/{packaged-skills.d.ts → dsh-adapter/packaged-skills.d.ts} +0 -0
- /package/lib/types/{packaged-skills.js → dsh-adapter/packaged-skills.js} +0 -0
- /package/lib/types/{presets.d.ts → dsh-adapter/presets.d.ts} +0 -0
- /package/lib/types/{presets.js → dsh-adapter/presets.js} +0 -0
package/lib/types/cc/terminal.js
CHANGED
|
@@ -1,84 +1,96 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import wrapAnsi from 'wrap-ansi';
|
|
3
3
|
/**
|
|
4
|
-
* Terminal-width line truncation
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Terminal-width line truncation for long tool output: the first few
|
|
5
|
+
* wrapped rows are shown as-is, and any overflow is summarized with a dim
|
|
6
|
+
* `… +N lines (ctrl+o to expand)` hint.
|
|
7
|
+
*
|
|
8
|
+
* Wrapping reserves a few columns of slack so folded rows never touch the
|
|
9
|
+
* terminal edge, and huge inputs (e.g. multi-MB dumps) are pre-truncated
|
|
10
|
+
* to a character budget before wrapping so the cost stays proportional to
|
|
11
|
+
* what is actually rendered.
|
|
7
12
|
*/
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
/** Columns of slack reserved inside `terminalWidth` for the fold. */
|
|
14
|
+
const WRAP_WIDTH_PADDING = 4;
|
|
15
|
+
/** Rows shown above the fold before truncation kicks in. */
|
|
16
|
+
const MAX_VISIBLE_LINES = 3;
|
|
17
|
+
/** Character budget per visible row (× this) used to pre-truncate input. */
|
|
18
|
+
const PRETRUNCATE_MULTIPLIER = 4;
|
|
19
|
+
/**
|
|
20
|
+
* Wrap `text` to `width` and split it into a visible prefix and the number
|
|
21
|
+
* of lines hidden below the fold.
|
|
22
|
+
*
|
|
23
|
+
* Special case: when exactly one line falls below the fold, that line is
|
|
24
|
+
* shown directly and counted as visible, so short overflows never get a
|
|
25
|
+
* hint row of their own.
|
|
26
|
+
*/
|
|
27
|
+
function foldAtWidth(text, width) {
|
|
28
|
+
const lines = wrapAnsi(text, width, {
|
|
12
29
|
trim: false,
|
|
13
30
|
hard: false,
|
|
14
31
|
wordWrap: true,
|
|
15
32
|
}).split('\n');
|
|
16
|
-
const totalLines =
|
|
17
|
-
if (totalLines <=
|
|
33
|
+
const totalLines = lines.length;
|
|
34
|
+
if (totalLines <= MAX_VISIBLE_LINES) {
|
|
18
35
|
return {
|
|
19
|
-
|
|
20
|
-
|
|
36
|
+
visible: lines.join('\n').trimEnd(),
|
|
37
|
+
hidden: 0,
|
|
21
38
|
};
|
|
22
39
|
}
|
|
23
|
-
const
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
if (remainingLines === 1) {
|
|
40
|
+
const belowFold = totalLines - MAX_VISIBLE_LINES;
|
|
41
|
+
// One extra line is cheaper to show than to describe.
|
|
42
|
+
if (belowFold === 1) {
|
|
27
43
|
return {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
.join('\n')
|
|
31
|
-
.trimEnd(),
|
|
32
|
-
remainingLines: 0, // All lines are shown, nothing remaining
|
|
44
|
+
visible: lines.slice(0, MAX_VISIBLE_LINES + 1).join('\n').trimEnd(),
|
|
45
|
+
hidden: 0,
|
|
33
46
|
};
|
|
34
47
|
}
|
|
35
|
-
// Otherwise show the standard MAX_LINES_TO_SHOW
|
|
36
48
|
return {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
.join('\n')
|
|
40
|
-
.trimEnd(),
|
|
41
|
-
remainingLines: Math.max(0, remainingLines),
|
|
49
|
+
visible: lines.slice(0, MAX_VISIBLE_LINES).join('\n').trimEnd(),
|
|
50
|
+
hidden: belowFold,
|
|
42
51
|
};
|
|
43
52
|
}
|
|
44
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* The `(ctrl+o to expand)` hint, dimmed.
|
|
45
55
|
* @returns The dim hint text.
|
|
46
56
|
*/
|
|
47
57
|
export function ctrlOToExpand() {
|
|
48
58
|
return chalk.dim('(ctrl+o to expand)');
|
|
49
59
|
}
|
|
50
60
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
61
|
+
* Render `content` with line-based truncation for terminal display.
|
|
62
|
+
* Content that fits in the visible budget is returned unchanged (modulo
|
|
63
|
+
* trailing whitespace); longer content is folded with an overflow hint.
|
|
54
64
|
* @param content - Text to render; trailing whitespace is trimmed.
|
|
55
|
-
* @param terminalWidth - Terminal width in columns; the wrap width reserves
|
|
56
|
-
*
|
|
57
|
-
* @
|
|
65
|
+
* @param terminalWidth - Terminal width in columns; the wrap width reserves
|
|
66
|
+
* 4 columns of padding.
|
|
67
|
+
* @param suppressExpandHint - When true, omit the `(ctrl+o to expand)`
|
|
68
|
+
* suffix from the overflow hint.
|
|
69
|
+
* @returns The truncated text, or `''` when `content` is blank after trimming.
|
|
58
70
|
*/
|
|
59
71
|
export function renderTruncatedContent(content, terminalWidth, suppressExpandHint = false) {
|
|
60
72
|
const trimmedContent = content.trimEnd();
|
|
61
73
|
if (!trimmedContent) {
|
|
62
74
|
return '';
|
|
63
75
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
|
|
76
|
+
// Keep the wrap width within a sane range regardless of the caller.
|
|
77
|
+
const wrapWidth = Math.max(terminalWidth - WRAP_WIDTH_PADDING, 10);
|
|
78
|
+
// Pre-truncate oversized inputs before wrapping: only the characters
|
|
79
|
+
// that could possibly land on the visible rows are ever wrapped, which
|
|
80
|
+
// avoids O(n) wrapping on huge outputs (e.g. 64MB binary dumps).
|
|
81
|
+
const charBudget = MAX_VISIBLE_LINES * wrapWidth * PRETRUNCATE_MULTIPLIER;
|
|
82
|
+
const preTruncated = trimmedContent.length > charBudget;
|
|
69
83
|
const contentForWrapping = preTruncated
|
|
70
|
-
? trimmedContent.slice(0,
|
|
84
|
+
? trimmedContent.slice(0, charBudget)
|
|
71
85
|
: trimmedContent;
|
|
72
|
-
const {
|
|
86
|
+
const { visible, hidden } = foldAtWidth(contentForWrapping, wrapWidth);
|
|
87
|
+
// When the input was pre-truncated, the fold can undercount the real
|
|
88
|
+
// overflow, so fall back to a length-based estimate in that case.
|
|
73
89
|
const estimatedRemaining = preTruncated
|
|
74
|
-
? Math.max(
|
|
75
|
-
:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
: '',
|
|
81
|
-
]
|
|
82
|
-
.filter(Boolean)
|
|
83
|
-
.join('\n');
|
|
90
|
+
? Math.max(hidden, Math.ceil(trimmedContent.length / wrapWidth) - MAX_VISIBLE_LINES)
|
|
91
|
+
: hidden;
|
|
92
|
+
const overflowHint = estimatedRemaining > 0
|
|
93
|
+
? chalk.dim(`… +${estimatedRemaining} lines${suppressExpandHint ? '' : ` ${ctrlOToExpand()}`}`)
|
|
94
|
+
: '';
|
|
95
|
+
return [visible, overflowHint].filter(Boolean).join('\n');
|
|
84
96
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-trees.d.ts","sourceRoot":"","sources":["../../src/command-trees.ts"],"names":[],"mappings":"AAEA,cAAc,gCAAgC,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA"}
|
package/lib/types/commands.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* `runCommand` in the Chat screen dispatches either kind, with the registry
|
|
7
7
|
* handler winning for names both sides declare.
|
|
8
8
|
*/
|
|
9
|
+
export type LocalizedDescriptions = Readonly<Partial<Record<'zh' | 'en', string>>>;
|
|
9
10
|
export interface LocalCommand {
|
|
10
11
|
/** The command name without the slash, e.g. `clear`. */
|
|
11
12
|
name: string;
|
|
@@ -15,11 +16,38 @@ export interface LocalCommand {
|
|
|
15
16
|
* (see {@link localizedDescription}).
|
|
16
17
|
*/
|
|
17
18
|
description: string;
|
|
19
|
+
/** Provider-owned translations selected with the active TUI language. */
|
|
20
|
+
descriptions?: LocalizedDescriptions;
|
|
18
21
|
/** Optional bracket tag shown between name and description. */
|
|
19
22
|
tag?: string;
|
|
20
23
|
/** True when a DSH plugin registered this command (not built in). */
|
|
21
24
|
external?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* True when the entry is a user-invocable skill discovered by the DSH
|
|
27
|
+
* skill registry (issue #86). Skill entries are completion-only: dispatch
|
|
28
|
+
* falls through to the model as plain text, where dsh-tool-skill's
|
|
29
|
+
* pre-step hook injects the skill body — the same path a hand-typed
|
|
30
|
+
* `/skill-name` takes. The help menu hides them (chrome commands only).
|
|
31
|
+
*/
|
|
32
|
+
skill?: boolean;
|
|
22
33
|
}
|
|
34
|
+
/** One child in a slash-command tree contributed by a local feature/plugin. */
|
|
35
|
+
export interface CommandCompletionNode {
|
|
36
|
+
name: string;
|
|
37
|
+
aliases?: readonly string[];
|
|
38
|
+
description: string;
|
|
39
|
+
descriptions?: LocalizedDescriptions;
|
|
40
|
+
tag?: string;
|
|
41
|
+
/** Optional i18n key; plugin nodes normally rely on fallback text. */
|
|
42
|
+
descriptionKey?: string;
|
|
43
|
+
}
|
|
44
|
+
/** A concrete completion row, including the text inserted by Tab/Enter. */
|
|
45
|
+
export interface CommandCompletion extends LocalCommand {
|
|
46
|
+
replacement: string;
|
|
47
|
+
commandLine: string;
|
|
48
|
+
descriptionKey?: string;
|
|
49
|
+
}
|
|
50
|
+
export type CommandChildren = (canonicalPath: readonly string[]) => readonly CommandCompletionNode[];
|
|
23
51
|
/**
|
|
24
52
|
* The built-in slash commands (name + description pairs). Plugin-registered
|
|
25
53
|
* commands merge in at runtime; locals win on name collisions.
|
|
@@ -33,7 +61,9 @@ export declare const LOCAL_COMMANDS: LocalCommand[];
|
|
|
33
61
|
* render, so a `/lang` switch repaints descriptions immediately.
|
|
34
62
|
* @param command - The command whose description to localize.
|
|
35
63
|
*/
|
|
36
|
-
export declare function localizedDescription(command: LocalCommand
|
|
64
|
+
export declare function localizedDescription(command: LocalCommand & {
|
|
65
|
+
descriptionKey?: string;
|
|
66
|
+
}): string;
|
|
37
67
|
/**
|
|
38
68
|
* Parse a slash-command line into its name and the verbatim input following
|
|
39
69
|
* the name (separator whitespace included) — the same split the DSH command
|
|
@@ -65,4 +95,10 @@ export declare function isLocalCommandName(input: string, list?: readonly LocalC
|
|
|
65
95
|
* @returns Commands whose name starts with the prefix, in list order.
|
|
66
96
|
*/
|
|
67
97
|
export declare function filterCommands(input: string, list?: readonly LocalCommand[]): LocalCommand[];
|
|
98
|
+
/**
|
|
99
|
+
* Complete an arbitrary slash-command path. Root commands come from the
|
|
100
|
+
* ordinary DSH/TUI catalog; each resolved token asks the caller for its
|
|
101
|
+
* children, so PromptInput never needs feature- or plugin-specific cases.
|
|
102
|
+
*/
|
|
103
|
+
export declare function completeCommands(input: string, roots?: readonly LocalCommand[], children?: CommandChildren): CommandCompletion[];
|
|
68
104
|
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAElF,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,+EAA+E;AAC/E,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,KAAK,SAAS,qBAAqB,EAAE,CAAA;AAEpG;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,YAAY,EAuDxC,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAIhG;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAIhD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,SAAS,YAAY,EAAmB,GAC7C,OAAO,CAKT;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,SAAS,YAAY,EAAmB,GAC7C,YAAY,EAAE,CAKhB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,SAAS,YAAY,EAAmB,EAC/C,QAAQ,GAAE,eAA0B,GACnC,iBAAiB,EAAE,CAoCrB"}
|
package/lib/types/commands.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* `runCommand` in the Chat screen dispatches either kind, with the registry
|
|
7
7
|
* handler winning for names both sides declare.
|
|
8
8
|
*/
|
|
9
|
-
import { tOr } from './i18n.js';
|
|
9
|
+
import { getLang, tOr } from './i18n.js';
|
|
10
10
|
/**
|
|
11
11
|
* The built-in slash commands (name + description pairs). Plugin-registered
|
|
12
12
|
* commands merge in at runtime; locals win on name collisions.
|
|
@@ -20,6 +20,8 @@ export const LOCAL_COMMANDS = [
|
|
|
20
20
|
{ name: 'rename', description: 'Rename the current session' },
|
|
21
21
|
{ name: 'rewind', description: 'Rewind the conversation to a previous message' },
|
|
22
22
|
{ name: 'export', description: 'Export the conversation to a markdown file' },
|
|
23
|
+
{ name: 'btw', description: 'Ask a quick side question without interrupting the conversation' },
|
|
24
|
+
{ name: 'trace', description: 'Show the session event trace timeline' },
|
|
23
25
|
// Session / environment
|
|
24
26
|
{ name: 'status', description: 'Show session status' },
|
|
25
27
|
{ name: 'cost', description: 'Show session token usage' },
|
|
@@ -30,12 +32,14 @@ export const LOCAL_COMMANDS = [
|
|
|
30
32
|
// Model / display
|
|
31
33
|
{ name: 'activity', description: 'Switch the working-activity indicator preset' },
|
|
32
34
|
{ name: 'preset', description: 'Switch the agent preset (standard/code/minimal/cordis)' },
|
|
33
|
-
{ name: 'theme', description: 'Switch the color theme (built-in or custom)' },
|
|
35
|
+
{ name: 'theme', description: 'Switch the color theme (auto, built-in or custom)' },
|
|
34
36
|
{ name: 'lang', description: 'Switch the UI language (en / zh)' },
|
|
35
37
|
{ name: 'model', description: 'Show the active model' },
|
|
38
|
+
{ name: 'effort', description: 'Adjust the reasoning effort (slider)' },
|
|
36
39
|
{ name: 'thinking', description: 'Toggle extended thinking display' },
|
|
37
40
|
{ name: 'tokens', description: 'Show session token usage' },
|
|
38
41
|
// Account / policy
|
|
42
|
+
{ name: 'provider', description: 'Add an LLM provider (catalog or custom API endpoint)' },
|
|
39
43
|
{ name: 'login', description: 'Show API credential status' },
|
|
40
44
|
{ name: 'logout', description: 'Clear the API credential' },
|
|
41
45
|
{ name: 'permissions', description: 'Show permission policy status' },
|
|
@@ -56,9 +60,12 @@ export const LOCAL_COMMANDS = [
|
|
|
56
60
|
{ name: 'vim', description: 'Toggle vim mode' },
|
|
57
61
|
{ name: 'terminal-setup', description: 'Show terminal setup instructions' },
|
|
58
62
|
{ name: 'connect', description: 'Connect to a remote machine' },
|
|
63
|
+
{ name: 'workspace', description: 'Resume, rename, or open a workspace' },
|
|
59
64
|
// Help / exit
|
|
60
65
|
{ name: 'help', description: 'Show shortcuts and commands' },
|
|
61
66
|
{ name: 'exit', description: 'Exit dsh-tui' },
|
|
67
|
+
{ name: 'quit', description: 'Exit dsh-tui', tag: 'alias of /exit' },
|
|
68
|
+
{ name: 'q', description: 'Exit dsh-tui', tag: 'alias of /exit' },
|
|
62
69
|
];
|
|
63
70
|
/**
|
|
64
71
|
* Resolve a command's description in the active UI language. The en text in
|
|
@@ -69,7 +76,10 @@ export const LOCAL_COMMANDS = [
|
|
|
69
76
|
* @param command - The command whose description to localize.
|
|
70
77
|
*/
|
|
71
78
|
export function localizedDescription(command) {
|
|
72
|
-
|
|
79
|
+
const translated = command.descriptions?.[getLang()];
|
|
80
|
+
if (translated !== undefined)
|
|
81
|
+
return translated;
|
|
82
|
+
return tOr(command.descriptionKey ?? `cmd-desc-${command.name}`, command.description);
|
|
73
83
|
}
|
|
74
84
|
/**
|
|
75
85
|
* Parse a slash-command line into its name and the verbatim input following
|
|
@@ -112,3 +122,58 @@ export function filterCommands(input, list = LOCAL_COMMANDS) {
|
|
|
112
122
|
const prefix = input.replace(/^\//, '').trim().toLowerCase();
|
|
113
123
|
return list.filter(command => command.name.toLowerCase().startsWith(prefix));
|
|
114
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Complete an arbitrary slash-command path. Root commands come from the
|
|
127
|
+
* ordinary DSH/TUI catalog; each resolved token asks the caller for its
|
|
128
|
+
* children, so PromptInput never needs feature- or plugin-specific cases.
|
|
129
|
+
*/
|
|
130
|
+
export function completeCommands(input, roots = LOCAL_COMMANDS, children = () => []) {
|
|
131
|
+
if (!input.startsWith('/') || /[\r\n]/u.test(input))
|
|
132
|
+
return [];
|
|
133
|
+
const body = input.slice(1);
|
|
134
|
+
if (!/^[a-z0-9_-]*(?:[\t ]+[a-z0-9_-]*)*$/iu.test(body))
|
|
135
|
+
return [];
|
|
136
|
+
const trailingSeparator = /[\t ]$/u.test(body);
|
|
137
|
+
const tokens = body.split(/[\t ]+/u);
|
|
138
|
+
const prefix = trailingSeparator ? '' : (tokens.pop() ?? '');
|
|
139
|
+
if (trailingSeparator && tokens.at(-1) === '')
|
|
140
|
+
tokens.pop();
|
|
141
|
+
const canonicalPath = [];
|
|
142
|
+
let candidates = roots;
|
|
143
|
+
for (const token of tokens) {
|
|
144
|
+
const resolved = resolveCompletionNode(candidates, token);
|
|
145
|
+
if (resolved === undefined)
|
|
146
|
+
return [];
|
|
147
|
+
canonicalPath.push(resolved.name);
|
|
148
|
+
candidates = children(canonicalPath);
|
|
149
|
+
}
|
|
150
|
+
const normalizedPrefix = prefix.toLowerCase();
|
|
151
|
+
return candidates.flatMap(candidate => {
|
|
152
|
+
const completionToken = matchingCompletionToken(candidate, normalizedPrefix);
|
|
153
|
+
if (completionToken === undefined)
|
|
154
|
+
return [];
|
|
155
|
+
const path = [...tokens, completionToken];
|
|
156
|
+
const commandLine = `/${path.join(' ')}`;
|
|
157
|
+
return [{
|
|
158
|
+
name: path.join(' '),
|
|
159
|
+
description: candidate.description,
|
|
160
|
+
...(candidate.descriptions === undefined ? {} : { descriptions: candidate.descriptions }),
|
|
161
|
+
...(candidate.descriptionKey === undefined ? {} : { descriptionKey: candidate.descriptionKey }),
|
|
162
|
+
...(candidate.tag === undefined && candidate.aliases?.length
|
|
163
|
+
? { tag: `aliases: ${candidate.aliases.join(', ')}` }
|
|
164
|
+
: candidate.tag === undefined ? {} : { tag: candidate.tag }),
|
|
165
|
+
replacement: `${commandLine} `,
|
|
166
|
+
commandLine,
|
|
167
|
+
}];
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
function resolveCompletionNode(candidates, token) {
|
|
171
|
+
const normalized = token.toLowerCase();
|
|
172
|
+
return candidates.find(candidate => candidate.name.toLowerCase() === normalized
|
|
173
|
+
|| candidate.aliases?.some(alias => alias.toLowerCase() === normalized));
|
|
174
|
+
}
|
|
175
|
+
function matchingCompletionToken(candidate, prefix) {
|
|
176
|
+
if (candidate.name.toLowerCase().startsWith(prefix))
|
|
177
|
+
return candidate.name;
|
|
178
|
+
return candidate.aliases?.find(alias => alias.toLowerCase().startsWith(prefix));
|
|
179
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { ActivityStatus } from '../channel.js';
|
|
2
|
+
import type { ActivityStatus } from '../dsh-adapter/channel.js';
|
|
3
3
|
/**
|
|
4
4
|
* Context-pressure percentage (0–100) from the last usage snapshot, or
|
|
5
5
|
* undefined when unknown — shared by the spinner-line and status-line
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityLine.d.ts","sourceRoot":"","sources":["../../../src/components/ActivityLine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ActivityLine.d.ts","sourceRoot":"","sources":["../../../src/components/ActivityLine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EAC3E,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,MAAM,GAAG,SAAS,CAMpB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAc,EACd,OAAO,EACP,UAAU,EACV,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,cAAc,CAAA;IACxB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,KAAK,CAAC,SAAS,CAuClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityPicker.d.ts","sourceRoot":"","sources":["../../../src/components/ActivityPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ActivityPicker.d.ts","sourceRoot":"","sources":["../../../src/components/ActivityPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,aAAa,GACd,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC,GAAG,KAAK,CAAC,SAAS,CA0BlB"}
|
|
@@ -3,8 +3,7 @@ import { t } from '../i18n.js';
|
|
|
3
3
|
import { Box, Text } from '../ui.js';
|
|
4
4
|
import { Pane } from './design-system/Pane.js';
|
|
5
5
|
import { Select } from './Select.js';
|
|
6
|
-
import {
|
|
7
|
-
import { KeyboardShortcutHint } from './design-system/KeyboardShortcutHint.js';
|
|
6
|
+
import { HintLine } from './design-system/HintLine.js';
|
|
8
7
|
import { FRAME_PRESETS, PRESET_NAMES } from './activityFrames.js';
|
|
9
8
|
/**
|
|
10
9
|
* Working-activity indicator picker in the CC ModelPicker style (ported
|
|
@@ -14,11 +13,11 @@ import { FRAME_PRESETS, PRESET_NAMES } from './activityFrames.js';
|
|
|
14
13
|
* applies through `channel.setActivityFrames`, Esc cancels.
|
|
15
14
|
*/
|
|
16
15
|
export function ActivityPicker({ focusIndex, currentPreset, }) {
|
|
17
|
-
return (_jsx(Pane, { color: "permission", children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "remember", bold: true, children:
|
|
16
|
+
return (_jsx(Pane, { color: "permission", children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "remember", bold: true, children: t('picker-title-activity') }) }), _jsx(Select, { options: PRESET_NAMES.map(name => ({
|
|
18
17
|
value: name,
|
|
19
18
|
label: name,
|
|
20
19
|
description: name === 'random'
|
|
21
20
|
? t('activity-random-each-preset')
|
|
22
21
|
: FRAME_PRESETS[name].frames.slice(0, 5).join(' '),
|
|
23
|
-
})), focusIndex: focusIndex, selectedValue: currentPreset }), _jsx(Text, { dimColor: true, italic: true, children:
|
|
22
|
+
})), focusIndex: focusIndex, selectedValue: currentPreset }), _jsx(Text, { dimColor: true, italic: true, children: _jsx(HintLine, { text: t('hint-confirm-exit') }) })] }) }));
|
|
24
23
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* /btw side-question panel (CC's btw.tsx, inline-pane form like the local
|
|
4
|
+
* pickers): title line with the question, a scrollable answer body (error /
|
|
5
|
+
* markdown answer / answering spinner), and a hint line. Owns the keyboard
|
|
6
|
+
* while open — every key it sees is consumed here.
|
|
7
|
+
*/
|
|
8
|
+
export declare function BtwPanel({ question, answer, error, streaming, onClose, onCopy, }: {
|
|
9
|
+
question: string;
|
|
10
|
+
answer: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
streaming: boolean;
|
|
13
|
+
onClose: () => void;
|
|
14
|
+
onCopy: () => void;
|
|
15
|
+
}): React.ReactNode;
|
|
16
|
+
//# sourceMappingURL=BtwPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BtwPanel.d.ts","sourceRoot":"","sources":["../../../src/components/BtwPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,MAAM,EACN,KAAK,EACL,SAAS,EACT,OAAO,EACP,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,GAAG,KAAK,CAAC,SAAS,CA4DlB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text, useInput, ScrollBox, useTerminalSize } from '../ui.js';
|
|
4
|
+
import { Markdown } from './Markdown.js';
|
|
5
|
+
import { SpinnerGlyph } from './Spinner/SpinnerGlyph.js';
|
|
6
|
+
import { t } from '../i18n.js';
|
|
7
|
+
import { isPlainReturnInput } from '../utils/modifiers.js';
|
|
8
|
+
/**
|
|
9
|
+
* /btw side-question panel (CC's btw.tsx, inline-pane form like the local
|
|
10
|
+
* pickers): title line with the question, a scrollable answer body (error /
|
|
11
|
+
* markdown answer / answering spinner), and a hint line. Owns the keyboard
|
|
12
|
+
* while open — every key it sees is consumed here.
|
|
13
|
+
*/
|
|
14
|
+
export function BtwPanel({ question, answer, error, streaming, onClose, onCopy, }) {
|
|
15
|
+
const scrollRef = React.useRef(null);
|
|
16
|
+
const { rows } = useTerminalSize();
|
|
17
|
+
// Spinner frame (80ms cadence, only while waiting for the first text).
|
|
18
|
+
const [frame, setFrame] = React.useState(0);
|
|
19
|
+
React.useEffect(() => {
|
|
20
|
+
if (!streaming || answer !== '')
|
|
21
|
+
return;
|
|
22
|
+
const interval = setInterval(() => setFrame(f => f + 1), 80);
|
|
23
|
+
return () => clearInterval(interval);
|
|
24
|
+
}, [streaming, answer]);
|
|
25
|
+
useInput((input, key, event) => {
|
|
26
|
+
if (key.escape || isPlainReturnInput(input, key) || input === ' ') {
|
|
27
|
+
event.stopImmediatePropagation();
|
|
28
|
+
onClose();
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (key.upArrow || key.downArrow) {
|
|
32
|
+
scrollRef.current?.scrollBy(key.upArrow ? -3 : 3);
|
|
33
|
+
event.stopImmediatePropagation();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (input === 'c' && !key.ctrl) {
|
|
37
|
+
event.stopImmediatePropagation();
|
|
38
|
+
onCopy();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// The overlay owns the keyboard while open: swallow everything else so
|
|
42
|
+
// nothing leaks into the prompt input behind it.
|
|
43
|
+
event.stopImmediatePropagation();
|
|
44
|
+
});
|
|
45
|
+
const settled = answer !== '' || error !== undefined;
|
|
46
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: "warning", bold: true, children: "/btw " }), _jsx(Text, { dimColor: true, children: question })] }), _jsx(Box, { flexDirection: "column", maxHeight: Math.max(5, rows - 8), children: _jsx(Box, { marginLeft: 2, flexDirection: "column", flexGrow: 1, children: _jsx(ScrollBox, { ref: scrollRef, flexDirection: "column", flexGrow: 1, children: error !== undefined ? (_jsx(Text, { color: "error", children: error })) : answer !== '' ? (_jsx(Markdown, { cacheTokens: false, children: answer })) : (_jsxs(Box, { children: [_jsx(SpinnerGlyph, { frame: frame, messageColor: "warning" }), _jsxs(Text, { color: "warning", children: [" ", t('btw-answering')] })] })) }) }) }), _jsx(Text, { dimColor: true, children: settled ? t('btw-hint-done') : streaming ? t('btw-hint-loading') : t('btw-hint-done') })] }));
|
|
47
|
+
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { LocalCommand } from '../commands.js';
|
|
3
3
|
/**
|
|
4
|
-
* The slash-command suggestion overlay,
|
|
4
|
+
* The slash-command suggestion overlay, mirroring Claude Code's
|
|
5
5
|
* `PromptInputFooterSuggestions.tsx` (command layout only): a name column
|
|
6
6
|
* padded to a fixed width, optional `[tag]`, then a truncated description.
|
|
7
7
|
* The selected row renders in the theme's `suggestion` color, others dim.
|
|
8
8
|
*/
|
|
9
9
|
export declare function CommandSuggestions({ commands, selectedIndex, columns, }: {
|
|
10
|
-
commands: readonly LocalCommand
|
|
10
|
+
commands: readonly (LocalCommand & {
|
|
11
|
+
descriptionKey?: string;
|
|
12
|
+
})[];
|
|
11
13
|
selectedIndex: number;
|
|
12
14
|
columns: number;
|
|
13
15
|
}): React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandSuggestions.d.ts","sourceRoot":"","sources":["../../../src/components/CommandSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,aAAa,EACb,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"CommandSuggestions.d.ts","sourceRoot":"","sources":["../../../src/components/CommandSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,aAAa,EACb,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC,YAAY,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAA;IACjE,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,KAAK,CAAC,SAAS,CAqDlB"}
|
|
@@ -4,7 +4,7 @@ import { stringWidth } from '../ink/stringWidth.js';
|
|
|
4
4
|
import { truncateToWidth } from '../ink/truncateToWidth.js';
|
|
5
5
|
import { localizedDescription } from '../commands.js';
|
|
6
6
|
/**
|
|
7
|
-
* The slash-command suggestion overlay,
|
|
7
|
+
* The slash-command suggestion overlay, mirroring Claude Code's
|
|
8
8
|
* `PromptInputFooterSuggestions.tsx` (command layout only): a name column
|
|
9
9
|
* padded to a fixed width, optional `[tag]`, then a truncated description.
|
|
10
10
|
* The selected row renders in the theme's `suggestion` color, others dim.
|
|
@@ -13,7 +13,7 @@ export function CommandSuggestions({ commands, selectedIndex, columns, }) {
|
|
|
13
13
|
if (commands.length === 0)
|
|
14
14
|
return null;
|
|
15
15
|
// Cap the command name column at 40% of terminal width to ensure the
|
|
16
|
-
// description has space (same as
|
|
16
|
+
// description has space (same as Claude Code).
|
|
17
17
|
const maxNameWidth = Math.floor(columns * 0.4);
|
|
18
18
|
const nameWidth = Math.min(Math.max(...commands.map(c => stringWidth(c.name))) + 5, maxNameWidth);
|
|
19
19
|
const maxVisible = 5;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { EffortOption } from '../dsh-adapter/channel.js';
|
|
3
|
+
/**
|
|
4
|
+
* Reasoning-effort slider (`/effort`): a rheostat row of the live route's
|
|
5
|
+
* adapter-owned levels in adapter order, ←/→ moving focus (each move applies
|
|
6
|
+
* immediately through `channel.setEffort` — the slider IS the control; Enter
|
|
7
|
+
* or Esc just closes it). The current level carries `✓`; the focused level's
|
|
8
|
+
* description renders below the row.
|
|
9
|
+
*/
|
|
10
|
+
export declare function EffortSlider({ options, focusIndex, currentId, }: {
|
|
11
|
+
options: readonly EffortOption[];
|
|
12
|
+
focusIndex: number;
|
|
13
|
+
currentId: string | undefined;
|
|
14
|
+
}): React.ReactNode;
|
|
15
|
+
//# sourceMappingURL=EffortSlider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EffortSlider.d.ts","sourceRoot":"","sources":["../../../src/components/EffortSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,UAAU,EACV,SAAS,GACV,EAAE;IACD,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B,GAAG,KAAK,CAAC,SAAS,CAmClB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { t } from '../i18n.js';
|
|
4
|
+
import { Box, Text } from '../ui.js';
|
|
5
|
+
import { Pane } from './design-system/Pane.js';
|
|
6
|
+
import { HintLine } from './design-system/HintLine.js';
|
|
7
|
+
/**
|
|
8
|
+
* Reasoning-effort slider (`/effort`): a rheostat row of the live route's
|
|
9
|
+
* adapter-owned levels in adapter order, ←/→ moving focus (each move applies
|
|
10
|
+
* immediately through `channel.setEffort` — the slider IS the control; Enter
|
|
11
|
+
* or Esc just closes it). The current level carries `✓`; the focused level's
|
|
12
|
+
* description renders below the row.
|
|
13
|
+
*/
|
|
14
|
+
export function EffortSlider({ options, focusIndex, currentId, }) {
|
|
15
|
+
const focused = options[focusIndex];
|
|
16
|
+
return (_jsx(Pane, { color: "permission", children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "remember", bold: true, children: t('picker-title-effort') }) }), _jsx(Box, { flexDirection: "row", children: options.map((option, index) => (_jsxs(React.Fragment, { children: [index > 0 ? (_jsx(Text, { dimColor: true, children: " \u2500\u2500 " })) : null, _jsx(Text, { inverse: index === focusIndex, bold: index === focusIndex, children: option.name }), option.id === currentId ? _jsx(Text, { color: "remember", children: "\u2713" }) : null] }, option.id))) }), focused?.description !== undefined ? (_jsx(Text, { dimColor: true, children: focused.description })) : null, _jsx(Text, { dimColor: true, italic: true, children: _jsx(HintLine, { text: t('hint-adjust-done') }) })] }) }));
|
|
17
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { Channel } from '../channel.js';
|
|
2
|
+
import type { Channel } from '../dsh-adapter/channel.js';
|
|
3
3
|
/**
|
|
4
4
|
* Live goal + todo panel above the prompt input. Data rides on the channel:
|
|
5
5
|
* `channel.goal` is folded from `goal/change` context events and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoalTodoPanel.d.ts","sourceRoot":"","sources":["../../../src/components/GoalTodoPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,OAAO,EAA8B,MAAM,
|
|
1
|
+
{"version":3,"file":"GoalTodoPanel.d.ts","sourceRoot":"","sources":["../../../src/components/GoalTodoPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,OAAO,EAA8B,MAAM,2BAA2B,CAAA;AAwDpF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CA2DhF"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { LocalCommand } from '../commands.js';
|
|
3
3
|
/**
|
|
4
|
-
* The `?` help menu,
|
|
4
|
+
* The `?` help menu, mirroring Claude Code's `PromptInputHelpMenu.tsx`
|
|
5
5
|
* (three-column shortcut layout, trimmed to the keys dsh-tui actually binds).
|
|
6
6
|
* The command column lists the merged slash-command surface: built-in
|
|
7
7
|
* commands plus plugin-registered ones from the DSH registry (plan/goal/…).
|
|
8
|
-
*
|
|
8
|
+
* Skill entries (user-invocable skills merged for `/` completion, issue
|
|
9
|
+
* #86) are hidden — a skills directory can hold dozens of entries and the
|
|
10
|
+
* menu is for chrome commands. Modifier labels follow the platform
|
|
11
|
+
* convention: ⌘ on macOS, ctrl elsewhere.
|
|
9
12
|
*/
|
|
10
13
|
export declare function HelpMenu({ commands, }: {
|
|
11
14
|
commands: readonly LocalCommand[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpMenu.d.ts","sourceRoot":"","sources":["../../../src/components/HelpMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"HelpMenu.d.ts","sourceRoot":"","sources":["../../../src/components/HelpMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAKlD;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAA;CAClC,GAAG,KAAK,CAAC,SAAS,CAiElB"}
|