@deepseek-harness-tui/dsh-tui 0.6.1 → 0.7.1
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 +77 -23
- package/bin/dsh-tui.js +132 -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} +198 -43
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -0
- package/lib/types/{channel.js → dsh-adapter/channel.js} +1129 -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} +294 -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 +981 -36
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +308 -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 +31 -10
- package/lib/invariant.js +0 -28
- 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
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** cmd.exe joins spawn arguments with spaces; quote anything that could split. */
|
|
2
|
+
export declare function shellQuote(args: readonly string[]): string[];
|
|
3
|
+
/** Escape a command path for a cmd.exe line: caret-escape metacharacters. */
|
|
4
|
+
export declare function cmdEscapeCommand(command: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Escape one argument for a cmd.exe line. Backslashes before a quote (or at
|
|
7
|
+
* the end, where our own closing quote will land) are doubled and the quote
|
|
8
|
+
* backslash-escaped so the target's argv parse keeps them literal; the whole
|
|
9
|
+
* argument is then quoted and every cmd metacharacter caret-escaped — twice
|
|
10
|
+
* when the command is a node_modules/.bin shim (those re-invoke node and
|
|
11
|
+
* parse the line a second time).
|
|
12
|
+
*/
|
|
13
|
+
export declare function cmdEscapeArgument(arg: string, doubleEscapeMetaChars?: boolean): string;
|
|
14
|
+
//# sourceMappingURL=shellQuote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shellQuote.d.ts","sourceRoot":"","sources":["../../../src/utils/shellQuote.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE5D;AAeD,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,qBAAqB,UAAQ,GAAG,MAAM,CAUpF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** cmd.exe joins spawn arguments with spaces; quote anything that could split. */
|
|
2
|
+
export function shellQuote(args) {
|
|
3
|
+
return args.map(arg => (/[ \t"^&|<>()]/.test(arg) ? `"${arg.replace(/"/g, '""')}"` : arg));
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* cmd.exe metacharacter escaping, vendored from cross-spawn@7
|
|
7
|
+
* (lib/util/escape.js, MIT © André Cruz et al.) — the ecosystem-standard
|
|
8
|
+
* answer to "run a .cmd/.bat through cmd.exe without the shell mangling
|
|
9
|
+
* paths that contain spaces, quotes, or metacharacters". See
|
|
10
|
+
* http://www.robvanderwoude.com/escapechars.php and https://qntm.org/cmd.
|
|
11
|
+
*
|
|
12
|
+
* The backslash/quote patterns use cross-spawn's post-CVE-2024-21538 forms
|
|
13
|
+
* (lookahead + backreference instead of a greedy star) so a pathological
|
|
14
|
+
* run of backslashes cannot hang the regex engine.
|
|
15
|
+
*/
|
|
16
|
+
const CMD_META_CHARS = /([()\][%!^"`<>&|;, *?])/g;
|
|
17
|
+
/** Escape a command path for a cmd.exe line: caret-escape metacharacters. */
|
|
18
|
+
export function cmdEscapeCommand(command) {
|
|
19
|
+
return command.replace(CMD_META_CHARS, '^$1');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Escape one argument for a cmd.exe line. Backslashes before a quote (or at
|
|
23
|
+
* the end, where our own closing quote will land) are doubled and the quote
|
|
24
|
+
* backslash-escaped so the target's argv parse keeps them literal; the whole
|
|
25
|
+
* argument is then quoted and every cmd metacharacter caret-escaped — twice
|
|
26
|
+
* when the command is a node_modules/.bin shim (those re-invoke node and
|
|
27
|
+
* parse the line a second time).
|
|
28
|
+
*/
|
|
29
|
+
export function cmdEscapeArgument(arg, doubleEscapeMetaChars = false) {
|
|
30
|
+
let out = `${arg}`;
|
|
31
|
+
out = out.replace(/(?=(\\+?)?)\1"/g, '$1$1\\"');
|
|
32
|
+
out = out.replace(/(?=(\\+?)?)\1$/, '$1$1');
|
|
33
|
+
out = `"${out}"`;
|
|
34
|
+
out = out.replace(CMD_META_CHARS, '^$1');
|
|
35
|
+
if (doubleEscapeMetaChars) {
|
|
36
|
+
out = out.replace(CMD_META_CHARS, '^$1');
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session working-directory resolution (issue #96, bug 2).
|
|
3
|
+
*
|
|
4
|
+
* The bare `process.cwd()` default made `@` file completion, mention
|
|
5
|
+
* expansion, and the statusline all relative to wherever `dsh` happened to
|
|
6
|
+
* be launched — launching from a repo SUBDIRECTORY listed that subdirectory
|
|
7
|
+
* instead of the repository the user is working in. The default now walks
|
|
8
|
+
* up from the launch directory to the nearest git worktree root (the
|
|
9
|
+
* workspace a coding agent is expected to operate on, Codex-style), falling
|
|
10
|
+
* back to the launch directory itself outside any worktree. An explicit
|
|
11
|
+
* cordis.yml `cwd` always wins.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the session cwd: an explicit `configured` value wins (resolved
|
|
15
|
+
* against the launch directory); otherwise the nearest ancestor of `start`
|
|
16
|
+
* containing a `.git` entry — a DIRECTORY for a plain clone, a FILE for a
|
|
17
|
+
* linked worktree or submodule — and `start` itself when no worktree
|
|
18
|
+
* encloses it.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveSessionCwd(configured: string | undefined, start?: string): string;
|
|
21
|
+
//# sourceMappingURL=workspaceRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceRoot.d.ts","sourceRoot":"","sources":["../../../src/utils/workspaceRoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,GAAE,MAAsB,GAC5B,MAAM,CAGR"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session working-directory resolution (issue #96, bug 2).
|
|
3
|
+
*
|
|
4
|
+
* The bare `process.cwd()` default made `@` file completion, mention
|
|
5
|
+
* expansion, and the statusline all relative to wherever `dsh` happened to
|
|
6
|
+
* be launched — launching from a repo SUBDIRECTORY listed that subdirectory
|
|
7
|
+
* instead of the repository the user is working in. The default now walks
|
|
8
|
+
* up from the launch directory to the nearest git worktree root (the
|
|
9
|
+
* workspace a coding agent is expected to operate on, Codex-style), falling
|
|
10
|
+
* back to the launch directory itself outside any worktree. An explicit
|
|
11
|
+
* cordis.yml `cwd` always wins.
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync } from 'node:fs';
|
|
14
|
+
import { homedir } from 'node:os';
|
|
15
|
+
import { dirname, join, resolve } from 'node:path';
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the session cwd: an explicit `configured` value wins (resolved
|
|
18
|
+
* against the launch directory); otherwise the nearest ancestor of `start`
|
|
19
|
+
* containing a `.git` entry — a DIRECTORY for a plain clone, a FILE for a
|
|
20
|
+
* linked worktree or submodule — and `start` itself when no worktree
|
|
21
|
+
* encloses it.
|
|
22
|
+
*/
|
|
23
|
+
export function resolveSessionCwd(configured, start = process.cwd()) {
|
|
24
|
+
if (configured !== undefined && configured !== '')
|
|
25
|
+
return resolve(configured);
|
|
26
|
+
return gitWorktreeRoot(start) ?? start;
|
|
27
|
+
}
|
|
28
|
+
/** Nearest ancestor of `start` (itself included) that is a git worktree root. */
|
|
29
|
+
function gitWorktreeRoot(start) {
|
|
30
|
+
let dir = resolve(start);
|
|
31
|
+
const home = homedir();
|
|
32
|
+
for (;;) {
|
|
33
|
+
// Dotfiles guard: a ~/.git (dotfiles management repo) must NOT promote
|
|
34
|
+
// the whole home directory to the workspace — /resume would list every
|
|
35
|
+
// session ever recorded under $HOME and @ completion would widen just
|
|
36
|
+
// as far. Stop the climb at home entirely: a worktree above $HOME is
|
|
37
|
+
// never a sensible session root either (review leftover).
|
|
38
|
+
if (dir === home)
|
|
39
|
+
return undefined;
|
|
40
|
+
if (existsSync(join(dir, '.git')))
|
|
41
|
+
return dir;
|
|
42
|
+
const parent = dirname(dir);
|
|
43
|
+
if (parent === dir)
|
|
44
|
+
return undefined;
|
|
45
|
+
dir = parent;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/workspaces.ts"],"names":[],"mappings":"AAEA,cAAc,6BAA6B,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-harness-tui/dsh-tui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Claude Code style interactive TUI front door for DeepSeek Harness agents, built on the ported Ink core.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -29,13 +29,20 @@
|
|
|
29
29
|
"types": "./lib/types/working-activity.d.ts",
|
|
30
30
|
"import": "./lib/types/working-activity.js"
|
|
31
31
|
},
|
|
32
|
+
"./workspaces": {
|
|
33
|
+
"types": "./lib/types/workspaces.d.ts",
|
|
34
|
+
"import": "./lib/types/workspaces.js"
|
|
35
|
+
},
|
|
36
|
+
"./command-trees": {
|
|
37
|
+
"types": "./lib/types/command-trees.d.ts",
|
|
38
|
+
"import": "./lib/types/command-trees.js"
|
|
39
|
+
},
|
|
32
40
|
"./invariant": {
|
|
33
|
-
"types": "./lib/types/invariant.d.ts",
|
|
34
|
-
"default": "./lib/invariant.js"
|
|
41
|
+
"types": "./lib/types/dsh-adapter/invariant.d.ts",
|
|
42
|
+
"default": "./lib/types/dsh-adapter/invariant.js"
|
|
35
43
|
},
|
|
36
44
|
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
37
|
-
"./package.json": "./package.json"
|
|
38
|
-
"./src/*": "./src/*"
|
|
45
|
+
"./package.json": "./package.json"
|
|
39
46
|
},
|
|
40
47
|
"files": [
|
|
41
48
|
"bin",
|
|
@@ -63,6 +70,9 @@
|
|
|
63
70
|
"@deepseek-ai/dsh-persona": "^0.1.0-rc.6",
|
|
64
71
|
"@deepseek-ai/dsh-session": "^0.1.0-rc.6",
|
|
65
72
|
"@deepseek-ai/dsh-skill": "^0.1.0-rc.6",
|
|
73
|
+
"@deepseek-ai/dsh-storage": "^0.1.0-rc.6",
|
|
74
|
+
"@deepseek-ai/dsh-storage-domain": "^0.1.0-rc.6",
|
|
75
|
+
"@deepseek-ai/dsh-storage-json": "^0.1.0-rc.6",
|
|
66
76
|
"@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6",
|
|
67
77
|
"@deepseek-ai/dsh-terminal": "^0.1.0-rc.6",
|
|
68
78
|
"@deepseek-ai/dsh-terminal-bash": "^0.1.0-rc.6",
|
|
@@ -71,6 +81,7 @@
|
|
|
71
81
|
"@deepseek-ai/dsh-tool-cordis": "^0.1.0-rc.6",
|
|
72
82
|
"@deepseek-ai/dsh-user-approval": "^0.1.0-rc.6",
|
|
73
83
|
"@deepseek-ai/dsh-user-questions": "^0.1.0-rc.6",
|
|
84
|
+
"@deepseek-ai/dsh-workspace": "^0.1.0-rc.6",
|
|
74
85
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
75
86
|
"auto-bind": "^4.0.0 || ^5.0.0",
|
|
76
87
|
"bidi-js": "^1.0.0",
|
|
@@ -108,18 +119,19 @@
|
|
|
108
119
|
"@deepseek-ai/dsh-fs": "^0.1.0-rc.6",
|
|
109
120
|
"@deepseek-ai/dsh-home-paths": "^0.1.0-rc.6",
|
|
110
121
|
"@deepseek-ai/dsh-invariants": "^0.1.0-rc.6",
|
|
111
|
-
"@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.0-rc.6",
|
|
112
|
-
"@deepseek-ai/dsh-session-persistence-sqlite": "^0.1.0-rc.6",
|
|
113
122
|
"@deepseek-ai/dsh-sandbox": "^0.1.0-rc.6",
|
|
114
123
|
"@deepseek-ai/dsh-sandbox-policy": "^0.1.0-rc.6",
|
|
115
124
|
"@deepseek-ai/dsh-scope": "^0.1.0-rc.6",
|
|
116
125
|
"@deepseek-ai/dsh-session-persistence": "^0.1.0-rc.6",
|
|
126
|
+
"@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.0-rc.6",
|
|
127
|
+
"@deepseek-ai/dsh-session-persistence-sqlite": "^0.1.0-rc.6",
|
|
117
128
|
"@deepseek-ai/dsh-settings": "^0.1.0-rc.6",
|
|
118
129
|
"@deepseek-ai/dsh-subprocess": "^0.1.0-rc.6",
|
|
119
130
|
"@deepseek-ai/dsh-timeout": "^0.1.0-rc.6",
|
|
120
131
|
"@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
|
|
121
132
|
"@deepseek-ai/dsh-typert-protocol": "^0.1.0-rc.6",
|
|
122
133
|
"@deepseek-ai/dsh-user-approval": "^0.1.0-rc.6",
|
|
134
|
+
"@deepseek-ai/dsh-web-app": "0.1.0-rc.6",
|
|
123
135
|
"@types/lodash-es": "^4.17.0",
|
|
124
136
|
"@types/node": "^22.0.0",
|
|
125
137
|
"@types/react": "^19.0.0",
|
|
@@ -127,7 +139,8 @@
|
|
|
127
139
|
"@types/semver": "^7.0.0",
|
|
128
140
|
"@xterm/headless": "^6.0.0",
|
|
129
141
|
"tsx": "^4.0.0",
|
|
130
|
-
"typescript": "^6.0.3"
|
|
142
|
+
"typescript": "^6.0.3",
|
|
143
|
+
"yaml": "^2.9.0"
|
|
131
144
|
},
|
|
132
145
|
"dsh": {
|
|
133
146
|
"bundle": {
|
|
@@ -135,8 +148,16 @@
|
|
|
135
148
|
}
|
|
136
149
|
},
|
|
137
150
|
"scripts": {
|
|
138
|
-
"
|
|
151
|
+
"clean": "node scripts/clean-lib.mjs",
|
|
152
|
+
"compile": "npm run clean && tsc -p tsconfig.json",
|
|
153
|
+
"build": "npm run compile && npm run verify:build",
|
|
139
154
|
"tui": "node --import tsx/esm scripts/run.ts",
|
|
140
|
-
"smoke": "node --import tsx/esm scripts/smoke.tsx"
|
|
155
|
+
"smoke": "node --import tsx/esm scripts/smoke.tsx",
|
|
156
|
+
"verify:build": "npm run verify:boundary && npm run verify:contract && npm run verify:patch-surface",
|
|
157
|
+
"verify:boundary": "node --import tsx/esm scripts/verify-adapter-boundary.ts",
|
|
158
|
+
"verify:contract": "node --import tsx/esm scripts/verify-upstream-contract.ts",
|
|
159
|
+
"verify:patch-surface": "node --import tsx/esm scripts/verify-patch-surface.ts",
|
|
160
|
+
"verify:package": "npm pack --dry-run --json --ignore-scripts | node scripts/verify-package.mjs",
|
|
161
|
+
"verify:clipboard-image": "node --import tsx/esm scripts/verify-clipboard-image.ts"
|
|
141
162
|
}
|
|
142
163
|
}
|
package/lib/invariant.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
//#region lib/types/invariant.js
|
|
2
|
-
/**
|
|
3
|
-
* Package-owned invariant companion for `@deepseek-harness-tui/dsh-tui`.
|
|
4
|
-
*
|
|
5
|
-
* The vendored Ink core under `src/ink` is third-party code written against
|
|
6
|
-
* looser compiler flags; the relaxed `tsconfig` options exist only for that
|
|
7
|
-
* subtree and must not spread to new code.
|
|
8
|
-
* @module @deepseek-harness-tui/dsh-tui/invariant
|
|
9
|
-
*/
|
|
10
|
-
const PACKAGE_NAME = "@deepseek-harness-tui/dsh-tui";
|
|
11
|
-
/** Cordis companion plugin name. */
|
|
12
|
-
const name = "dsh-tui-invariant";
|
|
13
|
-
/** Service required before the companion can reserve package ownership. */
|
|
14
|
-
const inject = ["invariants"];
|
|
15
|
-
/**
|
|
16
|
-
* No runtime invariant: this interactive TUI front door owns no independent
|
|
17
|
-
* lifecycle stream; state relations are owned by the agent/session seams it
|
|
18
|
-
* renders.
|
|
19
|
-
*/
|
|
20
|
-
const install = () => {};
|
|
21
|
-
/**
|
|
22
|
-
* Register this package's invariant companion.
|
|
23
|
-
* @param ctx - Cordis context carrying the invariant service.
|
|
24
|
-
* @returns the installed registration's disposer after setup succeeds.
|
|
25
|
-
*/
|
|
26
|
-
const apply = (ctx) => Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install));
|
|
27
|
-
//#endregion
|
|
28
|
-
export { apply, inject, name };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/approvals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAGtF,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AA0CD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,GAAG,CAAI;IACf;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAgC;IAErD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAO3C;;;OAGG;IACH,WAAW,IAAI,gBAAgB,GAAG,IAAI;IAItC,OAAO,CAAC,IAAI;IAIZ,gEAAgE;IAChE,OAAO,CAAC,eAAe;IAOvB;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA8BpD,8CAA8C;IAC9C,OAAO,CAAC,SAAS;IAOjB;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAUlD;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;CAQ1C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"childStderr.d.ts","sourceRoot":"","sources":["../../src/childStderr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAsDH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CA8BhF;AAED,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAChG;AAED,MAAM,WAAW,0BAA0B;IACzC,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,iDAAiD;IACjD,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CA4CrB"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compat boundary — every inelegant patch aimed at the harness core lives
|
|
3
|
-
* here, behind one import seam, so the render/interaction code stays clean.
|
|
4
|
-
*
|
|
5
|
-
* House rules for modules in this directory:
|
|
6
|
-
* - Each patch carries its own capability probe and self-disables or
|
|
7
|
-
* degrades to pre-patch behavior when upstream absorbs the quirk.
|
|
8
|
-
* - A patch must never throw into the caller: failure means "act as if the
|
|
9
|
-
* patch did not exist".
|
|
10
|
-
* - A patch states plainly which upstream change would retire it.
|
|
11
|
-
*
|
|
12
|
-
* Current residents:
|
|
13
|
-
* - sessionLog: marks third-party session-event types `ignorable` before
|
|
14
|
-
* resume, retiring the day `session.append` exposes `ignorable` or the
|
|
15
|
-
* types enter KNOWN_SESSION_EVENT_TYPES upstream.
|
|
16
|
-
* @module @deepseek-harness-tui/dsh-tui/compat
|
|
17
|
-
*/
|
|
18
|
-
export { prepareSessionForResume, readSessionTitleFromLog, repairSessionLogForResume } from './sessionLog.js';
|
|
19
|
-
export type { ResumeRepairOutcome } from './sessionLog.js';
|
|
20
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC7G,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/** Repair outcomes, surfaced for regression assertions and debug logging. */
|
|
2
|
-
export type ResumeRepairOutcome = 'repaired' | 'clean' | 'unavailable';
|
|
3
|
-
/**
|
|
4
|
-
* Repair one session's persisted log ahead of `agents.resume`: mark every
|
|
5
|
-
* event whose type is absent from KNOWN_SESSION_EVENT_TYPES as
|
|
6
|
-
* `ignorable: true` (envelope-legal, read path skips it). Never throws.
|
|
7
|
-
* @param sessionId - Session about to be resumed.
|
|
8
|
-
* @returns The repair outcome; 'unavailable' leaves the file untouched.
|
|
9
|
-
*/
|
|
10
|
-
export declare function repairSessionLogForResume(sessionId: string): ResumeRepairOutcome;
|
|
11
|
-
/**
|
|
12
|
-
* Read a session's display title from its persisted log, tolerantly.
|
|
13
|
-
*
|
|
14
|
-
* Why not `persistence.load()`: the backend validates every event against
|
|
15
|
-
* KNOWN_SESSION_EVENT_TYPES and throws the WHOLE load when a third-party
|
|
16
|
-
* plugin wrote an unmarked unknown type (e.g. activity/status before the
|
|
17
|
-
* resume repair touched it) — which is exactly why pickers fell back to the
|
|
18
|
-
* cwd basename for every working-activity session. A picker label is
|
|
19
|
-
* read-only UI state: decoding frames directly here keeps titles working
|
|
20
|
-
* for logs the strict path refuses, now and for future plugin event types.
|
|
21
|
-
*
|
|
22
|
-
* Title precedence: the LAST `session/title` event wins (a /rename append
|
|
23
|
-
* overrides the first-prompt auto title), falling back to the first user
|
|
24
|
-
* message text. `hasUserMessage` drives the picker's launch-artifact filter.
|
|
25
|
-
* @param sessionId - Session whose log should be read.
|
|
26
|
-
* @returns The title info, or undefined when the log is absent/undecodable.
|
|
27
|
-
*/
|
|
28
|
-
export declare function readSessionTitleFromLog(sessionId: string): {
|
|
29
|
-
title?: string;
|
|
30
|
-
hasUserMessage: boolean;
|
|
31
|
-
} | undefined;
|
|
32
|
-
/**
|
|
33
|
-
* Compat entry for the resume path: repair the target session's log, then
|
|
34
|
-
* let resume proceed regardless of outcome. Never throws, never blocks on
|
|
35
|
-
* anything but one small file — a repair miss degrades to the exact
|
|
36
|
-
* pre-patch behavior (resume may still succeed or fail as before).
|
|
37
|
-
* @param sessionId - Session about to be resumed.
|
|
38
|
-
*/
|
|
39
|
-
export declare function prepareSessionForResume(sessionId: string): Promise<void>;
|
|
40
|
-
//# sourceMappingURL=sessionLog.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessionLog.d.ts","sourceRoot":"","sources":["../../../src/compat/sessionLog.ts"],"names":[],"mappings":"AAiCA,6EAA6E;AAC7E,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,OAAO,GACP,aAAa,CAAA;AA4EjB;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAsChF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,GAChB;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CA2BzD;AAyBD;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9E"}
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compat patch: pre-resume session-log repair for third-party event types.
|
|
3
|
-
*
|
|
4
|
-
* Background: plugins like dsh-working-activity append `activity/status`
|
|
5
|
-
* through `session.append`, but rc.6's append exposes no `ignorable` flag
|
|
6
|
-
* and the type is absent from KNOWN_SESSION_EVENT_TYPES — so resume's seed
|
|
7
|
-
* validation rejects the WHOLE session ("unknown to this harness and not
|
|
8
|
-
* marked ignorable"). The event envelope legally accepts `ignorable: true`
|
|
9
|
-
* (seed validator at dsh-session/lib), which tells the read path to skip
|
|
10
|
-
* the event: exactly the right semantics for ephemeral UI frames.
|
|
11
|
-
*
|
|
12
|
-
* This patch repairs the target session's jsonl.zstd log in place before
|
|
13
|
-
* `agents.resume`: every event whose type is unknown to the harness gets
|
|
14
|
-
* `ignorable: true`. It is inherently self-adjusting — the capability probe
|
|
15
|
-
* IS the known-types list, so types upstream later adopts stop being
|
|
16
|
-
* marked, and already-known events are never touched.
|
|
17
|
-
*
|
|
18
|
-
* Storage notes: the jsonl persistence flushes by APPENDING zstd frames, so
|
|
19
|
-
* the file is a concatenation of frames. Frame layout is load-bearing: the
|
|
20
|
-
* backend asserts frame 0 holds EXACTLY the header line (listings read only
|
|
21
|
-
* that frame; `assertZstdHeaderFrame`), so the repair re-encodes each frame
|
|
22
|
-
* with its original line set — frame boundaries are preserved 1:1, and any
|
|
23
|
-
* frame whose lines were untouched is copied verbatim. Any decode/parse
|
|
24
|
-
* anomaly aborts the repair and resume proceeds unpatched — the failure
|
|
25
|
-
* mode degrades to the pre-patch behavior.
|
|
26
|
-
* @module @deepseek-harness-tui/dsh-tui/compat/sessionLog
|
|
27
|
-
*/
|
|
28
|
-
import { KNOWN_SESSION_EVENT_TYPES } from '@deepseek-ai/dsh-session';
|
|
29
|
-
import { randomUUID } from 'node:crypto';
|
|
30
|
-
import { existsSync, readdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
31
|
-
import { join } from 'node:path';
|
|
32
|
-
import { zstdCompressSync, zstdDecompressSync } from 'node:zlib';
|
|
33
|
-
/** Zstd frame magic number, little-endian (0xFD2FB528). */
|
|
34
|
-
const ZSTD_MAGIC = 0xfd2fb528;
|
|
35
|
-
/**
|
|
36
|
-
* Session-log storage root, mirroring the persistence plugin's `root`
|
|
37
|
-
* resolution in cordis.yml: DSH_CC_SESSION_ROOT, else ~/.dsh-cc/sessions.
|
|
38
|
-
*/
|
|
39
|
-
function sessionsRoot() {
|
|
40
|
-
const home = process.env.USERPROFILE ?? process.env.HOME ?? '';
|
|
41
|
-
return process.env.DSH_CC_SESSION_ROOT ?? join(home, '.dsh-cc', 'sessions');
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Locate a session's log by scanning workspace directories for the session
|
|
45
|
-
* id — deliberately NOT replicating the persistence plugin's workspace-key
|
|
46
|
-
* sanitization, so the repair survives upstream key-scheme changes.
|
|
47
|
-
* @param sessionId - Session id (directory name under each workspace dir).
|
|
48
|
-
* @returns Absolute path of session.jsonl.zstd, or undefined when absent.
|
|
49
|
-
*/
|
|
50
|
-
function findSessionLogFile(sessionId) {
|
|
51
|
-
const root = sessionsRoot();
|
|
52
|
-
let workspaces;
|
|
53
|
-
try {
|
|
54
|
-
workspaces = readdirSync(root);
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
for (const ws of workspaces) {
|
|
60
|
-
const candidate = join(root, ws, sessionId, 'session.jsonl.zstd');
|
|
61
|
-
if (existsSync(candidate))
|
|
62
|
-
return candidate;
|
|
63
|
-
}
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Decode a (possibly multi-frame) zstd jsonl log, keeping frames separate.
|
|
68
|
-
* Frames are split by magic scan; any frame failing to decode or any line
|
|
69
|
-
* failing to parse throws, so callers abort instead of rewriting a log they
|
|
70
|
-
* did not fully understand.
|
|
71
|
-
* @param buf - Raw file bytes.
|
|
72
|
-
* @returns Per-frame byte spans and parsed event envelopes, in log order.
|
|
73
|
-
*/
|
|
74
|
-
function decodeFrames(buf) {
|
|
75
|
-
const offsets = [];
|
|
76
|
-
for (let i = 0; i + 4 <= buf.length; i++) {
|
|
77
|
-
if (buf.readUInt32LE(i) === ZSTD_MAGIC)
|
|
78
|
-
offsets.push(i);
|
|
79
|
-
}
|
|
80
|
-
if (offsets.length === 0)
|
|
81
|
-
throw new Error('no zstd frame found');
|
|
82
|
-
return offsets.map((start, i) => {
|
|
83
|
-
const end = i + 1 < offsets.length ? offsets[i + 1] : buf.length;
|
|
84
|
-
const raw = buf.subarray(start, end);
|
|
85
|
-
const text = zstdDecompressSync(raw).toString('utf8');
|
|
86
|
-
const events = text
|
|
87
|
-
.split('\n')
|
|
88
|
-
.filter((line) => line.length > 0)
|
|
89
|
-
.map((line) => {
|
|
90
|
-
const parsed = JSON.parse(line);
|
|
91
|
-
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
92
|
-
throw new Error('session log line is not an event envelope');
|
|
93
|
-
}
|
|
94
|
-
return parsed;
|
|
95
|
-
});
|
|
96
|
-
return { raw, events };
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Repair one session's persisted log ahead of `agents.resume`: mark every
|
|
101
|
-
* event whose type is absent from KNOWN_SESSION_EVENT_TYPES as
|
|
102
|
-
* `ignorable: true` (envelope-legal, read path skips it). Never throws.
|
|
103
|
-
* @param sessionId - Session about to be resumed.
|
|
104
|
-
* @returns The repair outcome; 'unavailable' leaves the file untouched.
|
|
105
|
-
*/
|
|
106
|
-
export function repairSessionLogForResume(sessionId) {
|
|
107
|
-
try {
|
|
108
|
-
const file = findSessionLogFile(sessionId);
|
|
109
|
-
if (file === undefined)
|
|
110
|
-
return 'unavailable';
|
|
111
|
-
const frames = decodeFrames(readFileSync(file));
|
|
112
|
-
// Mark unknown types in place, tracking which frames actually changed:
|
|
113
|
-
// untouched frames are copied back verbatim, so the header frame keeps
|
|
114
|
-
// its exact original bytes (and the one-header-line invariant with it).
|
|
115
|
-
const dirty = new Set();
|
|
116
|
-
frames.forEach((frame, index) => {
|
|
117
|
-
for (const event of frame.events) {
|
|
118
|
-
const type = event['type'];
|
|
119
|
-
// Only real log entries carry a numeric seq — the seq-less header row
|
|
120
|
-
// is parsed by a separate path that must not see an extra field.
|
|
121
|
-
if (typeof type === 'string' &&
|
|
122
|
-
typeof event['seq'] === 'number' &&
|
|
123
|
-
!KNOWN_SESSION_EVENT_TYPES.has(type) &&
|
|
124
|
-
event['ignorable'] === undefined) {
|
|
125
|
-
event['ignorable'] = true;
|
|
126
|
-
dirty.add(index);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
if (dirty.size === 0)
|
|
131
|
-
return 'clean';
|
|
132
|
-
const parts = frames.map((frame, index) => {
|
|
133
|
-
if (!dirty.has(index))
|
|
134
|
-
return frame.raw;
|
|
135
|
-
const payload = frame.events.map((event) => JSON.stringify(event)).join('\n') + '\n';
|
|
136
|
-
return zstdCompressSync(Buffer.from(payload, 'utf8'));
|
|
137
|
-
});
|
|
138
|
-
const tmp = `${file}.compat-${randomUUID()}.tmp`;
|
|
139
|
-
writeFileSync(tmp, Buffer.concat(parts));
|
|
140
|
-
renameSync(tmp, file);
|
|
141
|
-
return 'repaired';
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
return 'unavailable';
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Read a session's display title from its persisted log, tolerantly.
|
|
149
|
-
*
|
|
150
|
-
* Why not `persistence.load()`: the backend validates every event against
|
|
151
|
-
* KNOWN_SESSION_EVENT_TYPES and throws the WHOLE load when a third-party
|
|
152
|
-
* plugin wrote an unmarked unknown type (e.g. activity/status before the
|
|
153
|
-
* resume repair touched it) — which is exactly why pickers fell back to the
|
|
154
|
-
* cwd basename for every working-activity session. A picker label is
|
|
155
|
-
* read-only UI state: decoding frames directly here keeps titles working
|
|
156
|
-
* for logs the strict path refuses, now and for future plugin event types.
|
|
157
|
-
*
|
|
158
|
-
* Title precedence: the LAST `session/title` event wins (a /rename append
|
|
159
|
-
* overrides the first-prompt auto title), falling back to the first user
|
|
160
|
-
* message text. `hasUserMessage` drives the picker's launch-artifact filter.
|
|
161
|
-
* @param sessionId - Session whose log should be read.
|
|
162
|
-
* @returns The title info, or undefined when the log is absent/undecodable.
|
|
163
|
-
*/
|
|
164
|
-
export function readSessionTitleFromLog(sessionId) {
|
|
165
|
-
try {
|
|
166
|
-
const file = findSessionLogFile(sessionId);
|
|
167
|
-
if (file === undefined)
|
|
168
|
-
return undefined;
|
|
169
|
-
const frames = decodeFrames(readFileSync(file));
|
|
170
|
-
let titled;
|
|
171
|
-
let firstUser;
|
|
172
|
-
let hasUserMessage = false;
|
|
173
|
-
for (const frame of frames) {
|
|
174
|
-
for (const event of frame.events) {
|
|
175
|
-
if (event['type'] === 'session/title') {
|
|
176
|
-
const title = event['data']?.['title'];
|
|
177
|
-
if (typeof title === 'string' && title.trim().length > 0)
|
|
178
|
-
titled = title;
|
|
179
|
-
}
|
|
180
|
-
else if (event['type'] === 'user/message') {
|
|
181
|
-
hasUserMessage = true;
|
|
182
|
-
if (firstUser === undefined) {
|
|
183
|
-
firstUser = firstTextOfContent(event['data']?.['content']);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return { title: titled ?? firstUser, hasUserMessage };
|
|
189
|
-
}
|
|
190
|
-
catch {
|
|
191
|
-
return undefined;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Extract the first text block from a user/message `content` payload.
|
|
196
|
-
* Content is normally a block array; a bare string is accepted defensively.
|
|
197
|
-
* @param content - The event's content field.
|
|
198
|
-
* @returns The trimmed text, or undefined when no text block exists.
|
|
199
|
-
*/
|
|
200
|
-
function firstTextOfContent(content) {
|
|
201
|
-
if (typeof content === 'string')
|
|
202
|
-
return content.trim() || undefined;
|
|
203
|
-
if (!Array.isArray(content))
|
|
204
|
-
return undefined;
|
|
205
|
-
for (const block of content) {
|
|
206
|
-
if (block !== null &&
|
|
207
|
-
typeof block === 'object' &&
|
|
208
|
-
block.type === 'text' &&
|
|
209
|
-
typeof block.text === 'string') {
|
|
210
|
-
const text = (block.text).trim();
|
|
211
|
-
if (text.length > 0)
|
|
212
|
-
return text;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
return undefined;
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Compat entry for the resume path: repair the target session's log, then
|
|
219
|
-
* let resume proceed regardless of outcome. Never throws, never blocks on
|
|
220
|
-
* anything but one small file — a repair miss degrades to the exact
|
|
221
|
-
* pre-patch behavior (resume may still succeed or fail as before).
|
|
222
|
-
* @param sessionId - Session about to be resumed.
|
|
223
|
-
*/
|
|
224
|
-
export async function prepareSessionForResume(sessionId) {
|
|
225
|
-
repairSessionLogForResume(sessionId);
|
|
226
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invariant.d.ts","sourceRoot":"","sources":["../../src/invariant.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,oCAAoC;AACpC,eAAO,MAAM,IAAI,sBAAsB,CAAA;AACvC,2EAA2E;AAC3E,eAAO,MAAM,MAAM,UAAiB,CAAA;AASpC;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,OAAO,KAAG,OAAO,CAAC,MAAM,IAAI,CACU,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"packaged-skills.d.ts","sourceRoot":"","sources":["../../src/packaged-skills.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA+BlD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAqBzD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAmBnC;;;;;;;;GAQG;AACH,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuTvE;AAyGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,GAAG;IACjF,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAcA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAGzD,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAA;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,IAAI,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAA;IAC3C,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC9C,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC/D,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAClE,yEAAyE;IACzE,UAAU,CAAC,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAC3D;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAEnE;AAED,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBhG;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqB5G;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,MAAM,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,MAAM,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CACnD,GAAG,MAAM,GAAG,SAAS,CAErB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAKpG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAEL,KAAK,qBAAqB,EAE1B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAA;AAExC;mEACmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAgBD,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;IACtC,yCAAyC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAiCD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAI;IACpB,yEAAyE;IACzE,OAAO,CAAC,SAAS,CAAwB;IACzC;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAgC;IAErD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAO3C;;;OAGG;IACH,WAAW,IAAI,gBAAgB,GAAG,IAAI;IAItC;;;OAGG;IACH,aAAa,IAAI,eAAe,EAAE;IAMlC,OAAO,CAAC,IAAI;IAIZ,sEAAsE;IACtE,OAAO,CAAC,eAAe;IAgBvB;;;;;;OAMG;IACH,GAAG,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA6BpE,8CAA8C;IAC9C,OAAO,CAAC,SAAS;IAOjB;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAwBjD,6DAA6D;IAC7D,aAAa,IAAI,IAAI;IAUrB,+DAA+D;IAC/D,SAAS,IAAI,IAAI;IASjB,wEAAwE;IACxE,OAAO,CAAC,MAAM;IAOd,yEAAyE;IACzE,OAAO,CAAC,IAAI;CAMb"}
|