@deepseek-harness-tui/dsh-tui 0.11.1 → 0.12.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 +70 -24
- package/assets/whale-girl/whale-girl-dark.png +0 -0
- package/assets/whale-girl/whale-girl-happy.png +0 -0
- package/assets/whale-girl/whale-girl.png +0 -0
- package/bin/dsh-tui.js +93 -6
- package/cordis.patch.yml +63 -22
- package/cordis.yml +3 -2
- package/guide/dsh-tui-guide/SKILL.md +37 -0
- package/guide/dsh-tui-guide/configuration.en.md +410 -0
- package/guide/dsh-tui-guide/configuration.md +349 -0
- package/guide/dsh-tui-guide/getting-started.en.md +398 -0
- package/guide/dsh-tui-guide/getting-started.md +397 -0
- package/guide/dsh-tui-guide/interaction.en.md +674 -0
- package/guide/dsh-tui-guide/interaction.md +747 -0
- package/guide/dsh-tui-guide/migrate.en.md +166 -0
- package/guide/dsh-tui-guide/migrate.md +132 -0
- package/guide/dsh-tui-guide/plugins.en.md +68 -0
- package/guide/dsh-tui-guide/plugins.md +56 -0
- package/guide/dsh-tui-guide/themes.en.md +192 -0
- package/guide/dsh-tui-guide/themes.md +185 -0
- package/guide/dsh-tui-guide/user-guide.en.md +608 -0
- package/guide/dsh-tui-guide/user-guide.md +586 -0
- package/guide/dsh-tui-guide/vscode.en.md +301 -0
- package/guide/dsh-tui-guide/vscode.md +272 -0
- package/lib/settings.json +1272 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +10 -2
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +17 -0
- package/lib/types/adapter/kernel/replay.d.ts.map +1 -1
- package/lib/types/adapter/kernel/replay.js +2 -0
- package/lib/types/adapter/ports/channel-display.d.ts +12 -0
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-session.d.ts +38 -0
- package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +14 -1
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +75 -6
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +86 -9
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +2 -0
- package/lib/types/components/BalanceReportRow.d.ts +10 -2
- package/lib/types/components/BalanceReportRow.d.ts.map +1 -1
- package/lib/types/components/BalanceReportRow.js +18 -4
- package/lib/types/components/Chat/JobCard.d.ts +9 -0
- package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
- package/lib/types/components/Chat/JobCard.js +42 -15
- package/lib/types/components/Chat/SubagentMessage.js +6 -6
- package/lib/types/components/CompactionStatusRow.d.ts +24 -0
- package/lib/types/components/CompactionStatusRow.d.ts.map +1 -0
- package/lib/types/components/CompactionStatusRow.js +72 -0
- package/lib/types/components/GoalTodoPanel.js +2 -2
- package/lib/types/components/HelpMenu.d.ts +2 -2
- package/lib/types/components/HelpMenu.d.ts.map +1 -1
- package/lib/types/components/HelpMenu.js +5 -4
- package/lib/types/components/InlineMathParagraph.d.ts +22 -0
- package/lib/types/components/InlineMathParagraph.d.ts.map +1 -0
- package/lib/types/components/InlineMathParagraph.js +178 -0
- package/lib/types/components/JobsPanel.d.ts.map +1 -1
- package/lib/types/components/JobsPanel.js +80 -33
- package/lib/types/components/LogoV2.d.ts +41 -3
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +148 -24
- package/lib/types/components/Markdown.d.ts +10 -3
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +47 -14
- package/lib/types/components/MathBlock.d.ts +13 -0
- package/lib/types/components/MathBlock.d.ts.map +1 -0
- package/lib/types/components/MathBlock.js +136 -0
- package/lib/types/components/MessageList.d.ts +10 -1
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +16 -7
- package/lib/types/components/MigratePicker.d.ts +30 -0
- package/lib/types/components/MigratePicker.d.ts.map +1 -0
- package/lib/types/components/MigratePicker.js +38 -0
- package/lib/types/components/PresetPicker.d.ts +4 -0
- package/lib/types/components/PresetPicker.d.ts.map +1 -1
- package/lib/types/components/PresetPicker.js +5 -1
- package/lib/types/components/PromptInput.d.ts +17 -0
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +60 -8
- package/lib/types/components/SplitDiffView.d.ts.map +1 -1
- package/lib/types/components/SplitDiffView.js +2 -1
- package/lib/types/components/StarPrompt.d.ts +59 -0
- package/lib/types/components/StarPrompt.d.ts.map +1 -0
- package/lib/types/components/StarPrompt.js +326 -0
- package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
- package/lib/types/components/StreamingMarkdown.js +20 -3
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +8 -8
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
- package/lib/types/components/SubagentDetailScene.js +108 -10
- package/lib/types/components/TimelineRail.d.ts.map +1 -1
- package/lib/types/components/TimelineRail.js +9 -1
- package/lib/types/components/Whale.d.ts +17 -8
- package/lib/types/components/Whale.d.ts.map +1 -1
- package/lib/types/components/Whale.js +25 -15
- package/lib/types/components/WhaleGirl.d.ts +35 -0
- package/lib/types/components/WhaleGirl.d.ts.map +1 -0
- package/lib/types/components/WhaleGirl.js +50 -0
- package/lib/types/components/WorkingSpinner.d.ts +4 -1
- package/lib/types/components/WorkingSpinner.d.ts.map +1 -1
- package/lib/types/components/WorkingSpinner.js +2 -2
- package/lib/types/components/bigfont.d.ts +47 -18
- package/lib/types/components/bigfont.d.ts.map +1 -1
- package/lib/types/components/bigfont.js +55 -40
- package/lib/types/components/design-system/ThemeProvider.d.ts +6 -0
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +40 -1
- package/lib/types/components/maidPortrait.d.ts +44 -0
- package/lib/types/components/maidPortrait.d.ts.map +1 -0
- package/lib/types/components/maidPortrait.js +178 -0
- package/lib/types/components/mathPreview.d.ts +25 -0
- package/lib/types/components/mathPreview.d.ts.map +1 -0
- package/lib/types/components/mathPreview.js +48 -0
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +6 -5
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +3 -2
- package/lib/types/components/messages/TranscriptImages.d.ts.map +1 -1
- package/lib/types/components/messages/TranscriptImages.js +11 -1
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +14 -2
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +80 -38
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
- package/lib/types/components/questions/PlanReviewPanel.js +3 -3
- package/lib/types/components/sessions/ForeignSessionRow.d.ts +34 -0
- package/lib/types/components/sessions/ForeignSessionRow.d.ts.map +1 -0
- package/lib/types/components/sessions/ForeignSessionRow.js +43 -0
- package/lib/types/components/sessions/SourceTabs.d.ts +52 -0
- package/lib/types/components/sessions/SourceTabs.d.ts.map +1 -0
- package/lib/types/components/sessions/SourceTabs.js +70 -0
- package/lib/types/components/splashEggs.d.ts +56 -0
- package/lib/types/components/splashEggs.d.ts.map +1 -0
- package/lib/types/components/splashEggs.js +67 -0
- package/lib/types/components/splashFonts.d.ts +119 -0
- package/lib/types/components/splashFonts.d.ts.map +1 -0
- package/lib/types/components/splashFonts.js +267 -0
- package/lib/types/components/splashLayout.d.ts +41 -0
- package/lib/types/components/splashLayout.d.ts.map +1 -0
- package/lib/types/components/splashLayout.js +40 -0
- package/lib/types/components/trajectory/MiniWake.d.ts +11 -1
- package/lib/types/components/trajectory/MiniWake.d.ts.map +1 -1
- package/lib/types/components/trajectory/MiniWake.js +9 -3
- package/lib/types/components/whaleGirlSprite.d.ts +17 -0
- package/lib/types/components/whaleGirlSprite.d.ts.map +1 -0
- package/lib/types/components/whaleGirlSprite.js +47 -0
- package/lib/types/deepseekPricing.d.ts +74 -0
- package/lib/types/deepseekPricing.d.ts.map +1 -1
- package/lib/types/deepseekPricing.js +110 -11
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.js +6 -1
- package/lib/types/dsh-adapter/channel/background-action.d.ts +1 -0
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.js +1 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +8 -9
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +69 -21
- package/lib/types/dsh-adapter/channel/compaction.d.ts +2 -1
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/compaction.js +35 -2
- package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/external-commands.js +8 -2
- package/lib/types/dsh-adapter/channel/job-projection.d.ts +1 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/job-projection.js +88 -3
- package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/local-actions.js +6 -1
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-actions.js +48 -7
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.js +25 -9
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-switch.js +5 -1
- package/lib/types/dsh-adapter/channel/paths.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/paths.js +7 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/preferences.js +31 -5
- package/lib/types/dsh-adapter/channel/projection.d.ts +1 -2
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection.js +127 -17
- package/lib/types/dsh-adapter/channel/question-record.d.ts +76 -0
- package/lib/types/dsh-adapter/channel/question-record.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/question-record.js +107 -0
- package/lib/types/dsh-adapter/channel/session-lineage.d.ts +42 -0
- package/lib/types/dsh-adapter/channel/session-lineage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-lineage.js +51 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +2 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.js +9 -3
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +2 -1
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.js +39 -7
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.js +7 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts +1 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +4 -2
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +8 -0
- package/lib/types/dsh-adapter/channel/state.d.ts +17 -2
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +6 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +30 -35
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +143 -4
- package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +35 -5
- package/lib/types/dsh-adapter/compat/messages.d.ts +6 -0
- package/lib/types/dsh-adapter/compat/messages.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/messages.js +9 -0
- package/lib/types/dsh-adapter/contract.d.ts +6 -5
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +14 -6
- package/lib/types/dsh-adapter/index.d.ts +36 -1
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +22 -6
- package/lib/types/dsh-adapter/jobs.d.ts +82 -16
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +104 -9
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.js +131 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.parse.d.ts +17 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.parse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.parse.js +329 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.js +102 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.parse.d.ts +16 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.parse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.parse.js +289 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.js +117 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.parse.d.ts +13 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.parse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.parse.js +178 -0
- package/lib/types/dsh-adapter/migrate/adapters/omp.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/omp.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/omp.js +133 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan-fs.d.ts +60 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan-fs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan-fs.js +178 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan.d.ts +8 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan.js +40 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.js +93 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.parse.d.ts +9 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.parse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.parse.js +89 -0
- package/lib/types/dsh-adapter/migrate/bin-path.d.ts +6 -0
- package/lib/types/dsh-adapter/migrate/bin-path.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/bin-path.js +30 -0
- package/lib/types/dsh-adapter/migrate/browse.d.ts +42 -0
- package/lib/types/dsh-adapter/migrate/browse.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/browse.js +90 -0
- package/lib/types/dsh-adapter/migrate/cli.d.ts +9 -0
- package/lib/types/dsh-adapter/migrate/cli.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/cli.js +106 -0
- package/lib/types/dsh-adapter/migrate/import-one.d.ts +89 -0
- package/lib/types/dsh-adapter/migrate/import-one.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/import-one.js +133 -0
- package/lib/types/dsh-adapter/migrate/index.d.ts +35 -0
- package/lib/types/dsh-adapter/migrate/index.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/index.js +107 -0
- package/lib/types/dsh-adapter/migrate/parse/injection.d.ts +40 -0
- package/lib/types/dsh-adapter/migrate/parse/injection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/injection.js +127 -0
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +28 -0
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/jsonl.js +40 -0
- package/lib/types/dsh-adapter/migrate/parse/role-turns.d.ts +28 -0
- package/lib/types/dsh-adapter/migrate/parse/role-turns.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/role-turns.js +50 -0
- package/lib/types/dsh-adapter/migrate/parse/title.d.ts +18 -0
- package/lib/types/dsh-adapter/migrate/parse/title.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/title.js +29 -0
- package/lib/types/dsh-adapter/migrate/parse/tools.d.ts +62 -0
- package/lib/types/dsh-adapter/migrate/parse/tools.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/parse/tools.js +110 -0
- package/lib/types/dsh-adapter/migrate/picker.d.ts +64 -0
- package/lib/types/dsh-adapter/migrate/picker.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/picker.js +86 -0
- package/lib/types/dsh-adapter/migrate/recent-agents.d.ts +40 -0
- package/lib/types/dsh-adapter/migrate/recent-agents.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/recent-agents.js +100 -0
- package/lib/types/dsh-adapter/migrate/sessionize.d.ts +39 -0
- package/lib/types/dsh-adapter/migrate/sessionize.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/sessionize.js +271 -0
- package/lib/types/dsh-adapter/migrate/types.d.ts +176 -0
- package/lib/types/dsh-adapter/migrate/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/types.js +11 -0
- package/lib/types/dsh-adapter/migrate/uuid.d.ts +7 -0
- package/lib/types/dsh-adapter/migrate/uuid.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/uuid.js +25 -0
- package/lib/types/dsh-adapter/oauth/bonus.d.ts +27 -0
- package/lib/types/dsh-adapter/oauth/bonus.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth/bonus.js +69 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.d.ts +2 -1
- package/lib/types/dsh-adapter/oauth/command.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.js +7 -4
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.d.ts +13 -10
- package/lib/types/dsh-adapter/oauth/credentials.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.js +61 -23
- package/lib/types/dsh-adapter/oauth/deepseek.d.ts +39 -0
- package/lib/types/dsh-adapter/oauth/deepseek.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth/deepseek.js +189 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.d.ts +24 -16
- package/lib/types/dsh-adapter/oauth/index.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.js +34 -20
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/interaction.d.ts +14 -12
- package/lib/types/dsh-adapter/oauth/interaction.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth/interaction.js +283 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.d.ts +2 -1
- package/lib/types/dsh-adapter/oauth/opener.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.js +1 -1
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.d.ts +10 -3
- package/lib/types/dsh-adapter/oauth/pi-ai.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.js +8 -3
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.d.ts +6 -3
- package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.js +11 -3
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.d.ts +14 -7
- package/lib/types/dsh-adapter/oauth/service.d.ts.map +1 -0
- package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.js +82 -17
- package/lib/types/dsh-adapter/plugin.d.ts +12 -3
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +215 -376
- package/lib/types/dsh-adapter/presets.d.ts +6 -4
- package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
- package/lib/types/dsh-adapter/presets.js +6 -4
- package/lib/types/dsh-adapter/providerWizard.d.ts +17 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/providerWizard.js +260 -68
- package/lib/types/dsh-adapter/questions.d.ts +22 -15
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.js +47 -45
- package/lib/types/dsh-adapter/sessions/digest.d.ts +11 -6
- package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/digest.js +20 -13
- package/lib/types/dsh-adapter/sessions/frames.d.ts +3 -1
- package/lib/types/dsh-adapter/sessions/frames.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/frames.js +5 -4
- package/lib/types/dsh-adapter/sessions/list.d.ts +6 -1
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +188 -164
- package/lib/types/dsh-adapter/sessions/recovery.d.ts +16 -0
- package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/recovery.js +108 -0
- package/lib/types/dsh-adapter/sessions/snapshot.d.ts +7 -0
- package/lib/types/dsh-adapter/sessions/snapshot.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/snapshot.js +90 -0
- package/lib/types/dsh-adapter/sessions/store.d.ts +10 -4
- package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/store.js +62 -25
- package/lib/types/dsh-adapter/sideQuestion.d.ts +41 -2
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.js +98 -2
- package/lib/types/dsh-adapter/subagents.d.ts +29 -3
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +87 -3
- package/lib/types/herdr.d.ts +2 -0
- package/lib/types/herdr.d.ts.map +1 -1
- package/lib/types/herdr.js +9 -3
- package/lib/types/i18n.d.ts +598 -60
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +198 -31
- package/lib/types/ink/components/App.d.ts +2 -2
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +15 -2
- package/lib/types/ink/components/Image.d.ts +14 -1
- package/lib/types/ink/components/Image.d.ts.map +1 -1
- package/lib/types/ink/components/Image.js +2 -2
- package/lib/types/ink/events/input-event.js +3 -3
- package/lib/types/ink/hooks/use-terminal-images.d.ts +12 -0
- package/lib/types/ink/hooks/use-terminal-images.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-terminal-images.js +13 -0
- package/lib/types/ink/ink.d.ts +6 -0
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +16 -1
- package/lib/types/ink/kitty-graphics.d.ts +44 -3
- package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
- package/lib/types/ink/kitty-graphics.js +184 -23
- package/lib/types/ink/output.d.ts +24 -2
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +83 -5
- package/lib/types/ink/parse-keypress.d.ts +61 -1
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +764 -93
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +8 -1
- package/lib/types/ink/screen.d.ts +24 -0
- package/lib/types/ink/screen.d.ts.map +1 -1
- package/lib/types/ink/screen.js +89 -0
- package/lib/types/ink/selection.d.ts +40 -18
- package/lib/types/ink/selection.d.ts.map +1 -1
- package/lib/types/ink/selection.js +142 -30
- package/lib/types/ink/sixel-codec.d.ts +12 -1
- package/lib/types/ink/sixel-codec.d.ts.map +1 -1
- package/lib/types/ink/sixel-codec.js +29 -5
- package/lib/types/ink/sixel-graphics.d.ts.map +1 -1
- package/lib/types/ink/sixel-graphics.js +5 -3
- package/lib/types/ink/styles.d.ts +9 -0
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.d.ts +8 -0
- package/lib/types/ink/terminal-image.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.d.ts +32 -1
- package/lib/types/ink/terminal-querier.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.js +54 -2
- package/lib/types/ink/timeline-rail.d.ts +5 -0
- package/lib/types/ink/timeline-rail.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.d.ts +24 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.js +25 -3
- package/lib/types/math/inline-layout.d.ts +29 -0
- package/lib/types/math/inline-layout.d.ts.map +1 -0
- package/lib/types/math/inline-layout.js +106 -0
- package/lib/types/math/layout.d.ts +58 -0
- package/lib/types/math/layout.d.ts.map +1 -0
- package/lib/types/math/layout.js +59 -0
- package/lib/types/math/renderer.d.ts +64 -0
- package/lib/types/math/renderer.d.ts.map +1 -0
- package/lib/types/math/renderer.js +256 -0
- package/lib/types/minimalUiMode.d.ts +19 -0
- package/lib/types/minimalUiMode.d.ts.map +1 -0
- package/lib/types/minimalUiMode.js +23 -0
- package/lib/types/oauth.d.ts +5 -10
- package/lib/types/oauth.d.ts.map +1 -1
- package/lib/types/oauth.js +5 -10
- package/lib/types/screens/Chat.d.ts +17 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +627 -54
- package/lib/types/screens/SessionSupervisor.d.ts +2 -1
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +156 -19
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/Settings.js +49 -11
- package/lib/types/screens/StatusLine.d.ts +4 -0
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +57 -27
- package/lib/types/screens/chatOverlay.d.ts +5 -0
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +1 -0
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts +47 -0
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts.map +1 -0
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.js +65 -0
- package/lib/types/screens/sessionSupervisor/model.d.ts +12 -0
- package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/model.js +26 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts +107 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts.map +1 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.js +312 -0
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +4 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +97 -14
- package/lib/types/sessionHistory.d.ts +2 -2
- package/lib/types/sessionHistory.d.ts.map +1 -1
- package/lib/types/sessionHistory.js +31 -5
- package/lib/types/settings/definitions.d.ts +681 -0
- package/lib/types/settings/definitions.d.ts.map +1 -0
- package/lib/types/settings/definitions.js +511 -0
- package/lib/types/starAction.d.ts +44 -0
- package/lib/types/starAction.d.ts.map +1 -0
- package/lib/types/starAction.js +52 -0
- package/lib/types/terminal-utils/latex.d.ts +10 -0
- package/lib/types/terminal-utils/latex.d.ts.map +1 -0
- package/lib/types/terminal-utils/latex.js +1417 -0
- package/lib/types/terminal-utils/markdown.d.ts +3 -1
- package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
- package/lib/types/terminal-utils/markdown.js +26 -1
- package/lib/types/terminal-utils/math.d.ts +66 -0
- package/lib/types/terminal-utils/math.d.ts.map +1 -0
- package/lib/types/terminal-utils/math.js +337 -0
- package/lib/types/tips.d.ts.map +1 -1
- package/lib/types/tips.js +16 -4
- package/lib/types/tuiDisplayPrefs.d.ts +67 -0
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +59 -0
- package/lib/types/ui.d.ts +1 -1
- package/lib/types/ui.d.ts.map +1 -1
- package/lib/types/ui.js +1 -1
- package/lib/types/update.js +2 -2
- package/lib/types/usageStats.d.ts +98 -0
- package/lib/types/usageStats.d.ts.map +1 -0
- package/lib/types/usageStats.js +169 -0
- package/lib/types/utils/bmp.d.ts +17 -0
- package/lib/types/utils/bmp.d.ts.map +1 -0
- package/lib/types/utils/bmp.js +154 -0
- package/lib/types/utils/clipboard.d.ts +14 -2
- package/lib/types/utils/clipboard.d.ts.map +1 -1
- package/lib/types/utils/clipboard.js +143 -8
- package/lib/types/utils/fold-long-lines.d.ts.map +1 -1
- package/lib/types/utils/fold-long-lines.js +2 -1
- package/lib/types/utils/keymap.d.ts +4 -1
- package/lib/types/utils/keymap.d.ts.map +1 -1
- package/lib/types/utils/keymap.js +8 -0
- package/lib/types/utils/modifiers.d.ts +4 -3
- package/lib/types/utils/modifiers.d.ts.map +1 -1
- package/lib/types/utils/modifiers.js +4 -3
- package/lib/types/utils/pastedImagePath.d.ts +8 -0
- package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
- package/lib/types/utils/pastedImagePath.js +29 -5
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/LICENSE +202 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/NOTICE +20 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/index.d.ts +16 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/lib/bundled-packages.json +4 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/lib/index.mjs +20 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/lib/index.mjs.LEGAL.txt +35 -0
- package/node_modules/@dsh-tui-vendor/mathjax-tex-svg/package.json +29 -0
- package/package.json +127 -102
- package/presets/liangshen/agent.cordis.yml +4 -1
- package/presets/liangshen/preset.yml +1 -1
- package/lib/types/minimalMode.d.ts +0 -13
- package/lib/types/minimalMode.d.ts.map +0 -1
- package/lib/types/minimalMode.js +0 -17
- package/node_modules/@deepseek-harness-tui/dsh-auth/LICENSE +0 -21
- package/node_modules/@deepseek-harness-tui/dsh-auth/README.md +0 -143
- package/node_modules/@deepseek-harness-tui/dsh-auth/cordis.patch.yml +0 -11
- package/node_modules/@deepseek-harness-tui/dsh-auth/dsh-plugin.json +0 -44
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/interaction.js +0 -193
- package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +0 -69
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
[Documentation index](README.md) · [简体中文](getting-started.md)
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- Node.js `^22.19 || >=24`; CI uses Node 24.
|
|
8
|
+
- The official DeepSeek Harness CLI: `@deepseek-ai/dsh`.
|
|
9
|
+
- `pnpm` **10 or newer** (CI uses 11). `dsh plugin` delegates profile
|
|
10
|
+
installation to pnpm; pnpm 9 hoists transitive dependencies differently,
|
|
11
|
+
leaving `dsh-working-activity` unresolvable inside the profile — the TUI
|
|
12
|
+
then exits right after startup with almost no error output (issue #60, see
|
|
13
|
+
Troubleshooting below).
|
|
14
|
+
- An interactive terminal TTY. `dsh-tui` cannot start with stdout redirected.
|
|
15
|
+
- The `deepseek-official` route needs `DEEPSEEK_API_KEY`; on DSH 0.2.0-rc.1+
|
|
16
|
+
the standard profile can instead sign in to the separate DeepSeek account
|
|
17
|
+
route with `/auth login deepseek-account`. Other supported accounts use
|
|
18
|
+
`/provider` or `/auth`. Set `DEEPSEEK_BASE_URL` for a compatible custom endpoint.
|
|
19
|
+
|
|
20
|
+
macOS/Linux:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
export DEEPSEEK_API_KEY='your-key'
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
PowerShell:
|
|
27
|
+
|
|
28
|
+
```powershell
|
|
29
|
+
$env:DEEPSEEK_API_KEY = 'your-key'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Never commit a real credential. A normal profile launch reads the environment
|
|
33
|
+
variable directly.
|
|
34
|
+
|
|
35
|
+
## Install
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
# Install the official CLI
|
|
39
|
+
npm install -g @deepseek-ai/dsh
|
|
40
|
+
|
|
41
|
+
# Install pnpm if needed (or use: corepack enable pnpm)
|
|
42
|
+
npm install -g pnpm
|
|
43
|
+
|
|
44
|
+
# Add the scoped package to the dsh-tui profile
|
|
45
|
+
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
From a checkout, the repository helper wraps the profile command:
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
sh install.sh
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`install.sh` checks for `dsh` and `pnpm` and then runs the profile plugin
|
|
55
|
+
command. It does not copy source files and does not require a local build.
|
|
56
|
+
|
|
57
|
+
## Migrate from the former package
|
|
58
|
+
|
|
59
|
+
Earlier releases used the unscoped `dsh-cc-tui` package and a `cc-tui` profile:
|
|
60
|
+
|
|
61
|
+
- `CC_TUI_*`/`DSH_CC_*` environment variables.
|
|
62
|
+
- a `~/.dsh-cc` data directory.
|
|
63
|
+
|
|
64
|
+
The current identity is `@deepseek-harness-tui/dsh-tui` in a `dsh-tui` profile,
|
|
65
|
+
using only `DSH_TUI_*` variables and `~/.dsh-tui`. Create the new profile with:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui
|
|
69
|
+
dsh --profile dsh-tui
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The current release no longer reads the old names and does not migrate data
|
|
73
|
+
automatically. After first launch, copy themes, configuration and history
|
|
74
|
+
files from the old data directory (`~/.dsh-cc`) into `~/.dsh-tui` yourself.
|
|
75
|
+
|
|
76
|
+
Once the new profile works:
|
|
77
|
+
|
|
78
|
+
- `$DSH_HOME/profiles/cc-tui` and the old data directory are just
|
|
79
|
+
former-installation leftovers and may be removed when convenient.
|
|
80
|
+
- Do not add both packages to the same profile.
|
|
81
|
+
|
|
82
|
+
## What installation does
|
|
83
|
+
|
|
84
|
+
On the first `dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui`, the official CLI:
|
|
85
|
+
|
|
86
|
+
1. Initializes `$DSH_HOME/profiles/dsh-tui/`. When `DSH_HOME` is unset, the
|
|
87
|
+
default root is normally `~/.dsh`.
|
|
88
|
+
2. Uses `@deepseek-ai/dsh-base` as the first profile bundle.
|
|
89
|
+
3. Installs `@deepseek-harness-tui/dsh-tui` inside the profile with pnpm.
|
|
90
|
+
4. Reads the package's `dsh.bundle.patch` metadata and adds its
|
|
91
|
+
`cordis.patch.yml` as a composition layer.
|
|
92
|
+
|
|
93
|
+
The important startup order is:
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
dsh-base -> other bundles -> @deepseek-harness-tui/dsh-tui patch -> user profile patch
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
- The base supplies agent, model, session, filesystem, shell, policy, and
|
|
100
|
+
registry services.
|
|
101
|
+
- The plugin patch overrides or inserts the TUI, agent-preset roster, SQLite
|
|
102
|
+
session persistence, and live activity row.
|
|
103
|
+
|
|
104
|
+
`dsh-working-activity` is already a dependency of this package and is inserted
|
|
105
|
+
by the `dsh-tui` patch. Do not separately add `dsh-working-activity` to the
|
|
106
|
+
same profile or duplicate rows may be mounted.
|
|
107
|
+
|
|
108
|
+
## Start the TUI
|
|
109
|
+
|
|
110
|
+
```sh
|
|
111
|
+
dsh --profile dsh-tui
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
The process starts in the current directory, which is also the Agent's default
|
|
115
|
+
workspace. Change into the target project before starting it.
|
|
116
|
+
|
|
117
|
+
On Windows, the checkout also provides:
|
|
118
|
+
|
|
119
|
+
```bat
|
|
120
|
+
dsh-tui.cmd
|
|
121
|
+
dsh-tui.cmd --resume
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
- `--resume` reads `%USERPROFILE%\.dsh-tui\resume.txt` and restores the
|
|
125
|
+
session last selected by the TUI.
|
|
126
|
+
- Set `DSH_TUI_WORKSPACE` to override the working directory used by the batch
|
|
127
|
+
launcher.
|
|
128
|
+
|
|
129
|
+
## CLI subcommands
|
|
130
|
+
|
|
131
|
+
`dsh-tui help` (or `dst help`) prints the full usage; the `dst` alias accepts
|
|
132
|
+
the same commands:
|
|
133
|
+
|
|
134
|
+
| Command | Purpose |
|
|
135
|
+
| --- | --- |
|
|
136
|
+
| `dsh-tui update` | Update the profile to the latest release and align the launcher (same install logic as the in-TUI `/update`, without restarting into the TUI) |
|
|
137
|
+
| `dsh-tui doctor` | Environment checks: dsh/pnpm, profile install and version alignment, whether the API key is set (state only, never the value), config file presence; complements the in-TUI `/doctor` session diagnostics |
|
|
138
|
+
| `dsh-tui safe` | Safe mode: read-only diagnostics, inventory, repair guidance (`safe --rescue` also creates/verifies the clean rescue profile) |
|
|
139
|
+
| `dsh-tui version` | Show the launcher and profile versions (`--version`/`-v` are equivalent) |
|
|
140
|
+
| `dsh-tui help` | Show usage (`--help`/`-h` are equivalent) |
|
|
141
|
+
|
|
142
|
+
`help`/`version` work even when dsh is missing or the profile is not
|
|
143
|
+
initialized; every other argument is forwarded verbatim to
|
|
144
|
+
`dsh --profile dsh-tui`.
|
|
145
|
+
|
|
146
|
+
## Safe mode (`dsh-tui safe`)
|
|
147
|
+
|
|
148
|
+
When dsh exits unexpectedly, safe mode provides read-only environment
|
|
149
|
+
diagnostics, a profile plugin inventory, and repair guidance.
|
|
150
|
+
|
|
151
|
+
- **Two entries**: run `dsh-tui safe` manually; or accept the prompt after
|
|
152
|
+
dsh exits with a non-zero code.
|
|
153
|
+
- The prompt only appears in interactive terminals; scripts and pipes get
|
|
154
|
+
a single hint line and keep the exit code.
|
|
155
|
+
- It covers only a non-zero exit of the final dsh child process, not a
|
|
156
|
+
startup hang (a spawn failure counts as exit code 1).
|
|
157
|
+
- **Read-only**: diagnostics, inventory, and guidance never change state. Two
|
|
158
|
+
exceptions:
|
|
159
|
+
- Retry normal startup; when `~/.dsh-tui/resume.txt` holds a pointer it is
|
|
160
|
+
passed along (`DSH_TUI_RESUME_SESSION`), so a retry after a crash returns
|
|
161
|
+
to the session you were in instead of a blank one.
|
|
162
|
+
- Create/reuse the rescue profile, writing only to
|
|
163
|
+
`$DSH_HOME/profiles/dsh-tui-safe/`.
|
|
164
|
+
Note: every dsh launch writes `$DSH_HOME/profiles/node_modules` fallback
|
|
165
|
+
links and the pnpm global store (not introduced by safe mode).
|
|
166
|
+
- **The rescue profile must be clean, or it refuses to start**. Each check
|
|
167
|
+
blocks startup if it fails:
|
|
168
|
+
- The candidate directory exists but is not a recognizable profile.
|
|
169
|
+
- The existing profile's root manifest declares third-party plugins.
|
|
170
|
+
- `$DSH_HOME/cordis.patch.yml` (home layer): **rejects if it exists**.
|
|
171
|
+
- `dsh-tui-safe/cordis.patch.yml` (profile layer): **rejects only if it has
|
|
172
|
+
entries**; the default "comments + `[]`" does not count as entries.
|
|
173
|
+
Before deleting or rebuilding a rescue profile, it checks the top-level
|
|
174
|
+
entries by **name and shape**; any other name or shape makes it refuse and
|
|
175
|
+
list them — never silently deleting your files.
|
|
176
|
+
- **Non-interactive**: `dsh-tui safe --rescue` runs the same gate plus
|
|
177
|
+
create/reuse and only reports the verdict (exit 0 when ready, 1 when
|
|
178
|
+
refused).
|
|
179
|
+
- **Outdated launcher**: upgrade first when the profile copy is unreadable or
|
|
180
|
+
too old:
|
|
181
|
+
`npm install -g --legacy-peer-deps @deepseek-harness-tui/dsh-tui@<version>`.
|
|
182
|
+
- **Run repair commands yourself** (safe mode only lists them):
|
|
183
|
+
- `dsh plugin --profile dsh-tui remove <third-party plugin>` removes
|
|
184
|
+
suspects one by one;
|
|
185
|
+
- `dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui@<version>`
|
|
186
|
+
reinstalls/aligns;
|
|
187
|
+
- `dsh-tui doctor` runs environment diagnostics.
|
|
188
|
+
|
|
189
|
+
## Running in VS Code / Herdr
|
|
190
|
+
|
|
191
|
+
- **VS Code**: run directly in the integrated terminal, or use the
|
|
192
|
+
`dsh-tui-vscode` companion extension on the Marketplace (real terminal
|
|
193
|
+
sessions, session history, specific-session resume, IDE selection channel).
|
|
194
|
+
See [VS Code guide](vscode.en.md).
|
|
195
|
+
- **Herdr**: run `dsh-tui` directly in a [Herdr](https://herdr.dev) pane with
|
|
196
|
+
no extra setup; dsh-TUI reports `idle` / `working` / `blocked` through
|
|
197
|
+
Herdr's local integration API (questionnaires and tool approvals count as
|
|
198
|
+
`blocked`), and stays completely inactive outside Herdr.
|
|
199
|
+
|
|
200
|
+
## Update to the latest version
|
|
201
|
+
|
|
202
|
+
The project moves fast. Updating reuses the install command with an explicit
|
|
203
|
+
`@latest`:
|
|
204
|
+
|
|
205
|
+
```sh
|
|
206
|
+
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui@latest
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
- Without `@latest`, pnpm resolves within the version range already recorded
|
|
210
|
+
in the profile's `package.json` (for example `^0.1.4`), so it may stay on an
|
|
211
|
+
old line. That is the usual reason "re-running the install command" appears
|
|
212
|
+
to change nothing.
|
|
213
|
+
- To confirm: the startup banner shows the running version
|
|
214
|
+
(`✦ dsh-TUI vX.Y.Z`).
|
|
215
|
+
- Your `cordis.patch.yml` override layer survives updates untouched.
|
|
216
|
+
- Session storage may move between versions (since 0.3.7, `/resume` uses the
|
|
217
|
+
JSONL session store shared with dsh web), so older sessions missing from the
|
|
218
|
+
list after a major update is expected — the underlying data is not deleted.
|
|
219
|
+
|
|
220
|
+
### pnpm install-script blocks and foreign-platform natives
|
|
221
|
+
|
|
222
|
+
If `dsh plugin` fails with `ERR_PNPM_IGNORED_BUILDS` (pnpm ≥11 blocks
|
|
223
|
+
dependencies that carry install scripts by default, e.g. `@google/genai` and
|
|
224
|
+
`protobufjs` — none of these scripts is needed at runtime, so they can safely
|
|
225
|
+
be ignored), add to the profile's `pnpm-workspace.yaml`:
|
|
226
|
+
|
|
227
|
+
```yaml
|
|
228
|
+
allowBuilds:
|
|
229
|
+
'@google/genai': false
|
|
230
|
+
protobufjs: false
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
`/update` and `dsh-tui update` seed this configuration automatically — no
|
|
234
|
+
manual step needed.
|
|
235
|
+
|
|
236
|
+
Updates also maintain `ignoredOptionalDependencies` covering foreign-platform
|
|
237
|
+
`@img/sharp-*` natives:
|
|
238
|
+
|
|
239
|
+
- sharp ships as all-platform optional dependencies, and an untouched
|
|
240
|
+
`pnpm update` downloads every platform's binaries (about 200MB measured).
|
|
241
|
+
- The list is recomputed for the running platform on every update. Foreign
|
|
242
|
+
natives are skipped while this platform's own and the platform-agnostic wasm
|
|
243
|
+
fallbacks stay.
|
|
244
|
+
- Move the profile to another platform or musl container and the next update
|
|
245
|
+
there refreshes it.
|
|
246
|
+
- An existing profile's lockfile still lists every platform, so its first
|
|
247
|
+
update downloads them once more before the filter takes effect.
|
|
248
|
+
- Entries outside those two platform tables (a user's `fsevents`, a
|
|
249
|
+
hand-written `@img/sharp-wasm32` exemption) are left as they are. This needs
|
|
250
|
+
a pnpm that supports the key; one that does not fails nothing — it merely
|
|
251
|
+
loses the saving.
|
|
252
|
+
|
|
253
|
+
## Profile configuration
|
|
254
|
+
|
|
255
|
+
The user override file is:
|
|
256
|
+
|
|
257
|
+
```text
|
|
258
|
+
$DSH_HOME/profiles/dsh-tui/cordis.patch.yml
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
When overriding a row, its `config` block is replaced as a whole rather than
|
|
262
|
+
deep-merged. Repeat every key you want to keep. See
|
|
263
|
+
[Configuration](configuration.en.md) for examples.
|
|
264
|
+
|
|
265
|
+
The root `cordis.yml` is a bare-composition example. A normal npm/profile
|
|
266
|
+
installation uses `cordis.patch.yml`; do not copy the root configuration into
|
|
267
|
+
the profile.
|
|
268
|
+
|
|
269
|
+
## Develop from source
|
|
270
|
+
|
|
271
|
+
```sh
|
|
272
|
+
git clone --recurse-submodules https://github.com/ccch1mneyyy/dsh-TUI.git
|
|
273
|
+
cd dsh-TUI
|
|
274
|
+
pnpm install --frozen-lockfile
|
|
275
|
+
pnpm build
|
|
276
|
+
pnpm smoke
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
The repository has two submodules; `vendor/dsh-std` is required to install:
|
|
280
|
+
|
|
281
|
+
- `vendor/dsh-std`: its `packages/*` are listed as workspace packages in
|
|
282
|
+
`pnpm-workspace.yaml`.
|
|
283
|
+
- `dsh-ecosystem-spec`: the ecosystem specification used by contract checks.
|
|
284
|
+
|
|
285
|
+
Without `--recurse-submodules` these directories stay empty and
|
|
286
|
+
`pnpm install --frozen-lockfile` fails outright. For a checkout that was
|
|
287
|
+
already cloned:
|
|
288
|
+
|
|
289
|
+
```sh
|
|
290
|
+
git submodule update --init --recursive
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
`pnpm build` cleans the ignored `lib/` directory, compiles `src/` into
|
|
294
|
+
`lib/types/`, and runs the build gates.
|
|
295
|
+
|
|
296
|
+
- **Git URL installs are not supported** (workspace deps / submodule / pnpm
|
|
297
|
+
≥11 prepare allowlist).
|
|
298
|
+
- The publish workflow performs an explicit clean compilation and
|
|
299
|
+
package-surface check before packing.
|
|
300
|
+
|
|
301
|
+
For an integration test of the current source, run this once after initial
|
|
302
|
+
setup or whenever the normal model/key configuration changes:
|
|
303
|
+
|
|
304
|
+
```sh
|
|
305
|
+
pnpm dev:copy-config
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
After each source change, build, pack, install in isolation, and launch with:
|
|
309
|
+
|
|
310
|
+
```sh
|
|
311
|
+
pnpm dev
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
`pnpm dev:copy-config` copies only `~/.dsh/settings.yaml` and
|
|
315
|
+
`~/.dsh/.credentials.yaml`. Files are set to mode `0600` on Unix; Windows uses
|
|
316
|
+
the OS-managed file ACL.
|
|
317
|
+
|
|
318
|
+
`pnpm dev` uses isolated `HOME`, `DSH_HOME`, and session directories, leaving
|
|
319
|
+
the normal `~/.dsh/profiles/dsh-tui`, `~/.dsh-tui`, and sessions untouched. The
|
|
320
|
+
test root defaults to:
|
|
321
|
+
|
|
322
|
+
- `$XDG_CACHE_HOME/dsh-tui-dev` on Unix (`~/.cache/dsh-tui-dev` when unset).
|
|
323
|
+
- `%LOCALAPPDATA%\dsh-tui-dev` on Windows.
|
|
324
|
+
- Override it with `DSH_TUI_DEV_ROOT`.
|
|
325
|
+
|
|
326
|
+
To verify only the build, pack, and install path without launching the TUI,
|
|
327
|
+
run:
|
|
328
|
+
|
|
329
|
+
```sh
|
|
330
|
+
pnpm dev:test
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
CI also runs three rendering regressions:
|
|
334
|
+
|
|
335
|
+
```sh
|
|
336
|
+
node --import tsx/esm scripts/repro-askpanel.tsx
|
|
337
|
+
node --import tsx/esm scripts/verify-askpanel-layout.tsx
|
|
338
|
+
node --import tsx/esm scripts/repro-toolcards.tsx
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
The `pnpm tui` script invokes `scripts/run.ts`, which directly composes
|
|
342
|
+
DeepSeek Harness source patches and assumes a Harness monorepo `packages/*`
|
|
343
|
+
layout by default. A standalone checkout must set `DSH_TUI_DEV_WORKSPACE` to
|
|
344
|
+
the Harness root. To test only this repository's current source, prefer
|
|
345
|
+
`pnpm dev`; it uses the same profile installation path as an end-user install.
|
|
346
|
+
|
|
347
|
+
## Troubleshooting
|
|
348
|
+
|
|
349
|
+
### `dsh-tui requires an interactive terminal`
|
|
350
|
+
|
|
351
|
+
stdout is not a TTY. Start the process directly in a terminal rather than
|
|
352
|
+
redirecting its main output to another command or file.
|
|
353
|
+
|
|
354
|
+
dsh-tui detects two things: stdout is not a TTY, and the process was not
|
|
355
|
+
started by the `dsh-tui` launcher. When both hold, it silently skips the TUI
|
|
356
|
+
frontend (no error, the host keeps booting). That is the case when dsh-tui is
|
|
357
|
+
only installed in a profile and a non-terminal host (Web / Tauri / GUI, stdout
|
|
358
|
+
piped or null) starts the DSH composition.
|
|
359
|
+
|
|
360
|
+
The error above only appears when `dsh-tui` (or the standalone portable build)
|
|
361
|
+
was explicitly launched without a TTY.
|
|
362
|
+
|
|
363
|
+
### `dsh` or `pnpm` cannot be found
|
|
364
|
+
|
|
365
|
+
Make sure the global npm bin directory is on `PATH`, then open a new terminal.
|
|
366
|
+
`install.sh` checks both commands before installation.
|
|
367
|
+
|
|
368
|
+
### The TUI exits right back to the shell with almost no error (pnpm 9)
|
|
369
|
+
|
|
370
|
+
In a profile installed by pnpm 9, the transitive dependency
|
|
371
|
+
`dsh-working-activity` is not hoisted where the loader can resolve it; the
|
|
372
|
+
failed module resolution tears down the whole plugin tree, and the TUI prints
|
|
373
|
+
the resume hint and exits (issue #60). Upgrade pnpm to 10+ and reinstall:
|
|
374
|
+
|
|
375
|
+
```sh
|
|
376
|
+
npm install -g pnpm@latest
|
|
377
|
+
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui@latest
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### The model reports missing credentials
|
|
381
|
+
|
|
382
|
+
For `deepseek-official`, confirm that `DEEPSEEK_API_KEY` is set in the same shell
|
|
383
|
+
that starts `dsh`. Check `DEEPSEEK_BASE_URL` too for a custom endpoint. For
|
|
384
|
+
`deepseek-account` or a subscription model, inspect `/auth status` and sign in again with
|
|
385
|
+
`/auth login <provider>` if needed.
|
|
386
|
+
|
|
387
|
+
### The activity row appears twice
|
|
388
|
+
|
|
389
|
+
Check whether `dsh-working-activity` was added separately to the profile. Keep
|
|
390
|
+
the row inserted by the dsh-tui patch and remove the duplicate bundle entry.
|
|
391
|
+
|
|
392
|
+
### The TUI is misaligned or leaves terminal state behind
|
|
393
|
+
|
|
394
|
+
Run `/doctor`, record the terminal and mode, then consult
|
|
395
|
+
[Interaction and commands](interaction.en.md) and
|
|
396
|
+
[Architecture and limitations](architecture.en.md). `DSH_TUI_RENDER_LOG` can
|
|
397
|
+
capture raw frames for rendering bugs, but those frames may contain visible
|
|
398
|
+
conversation content and should be handled as sensitive data.
|