@deepseek-harness-tui/dsh-tui 0.14.1 → 0.16.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 +163 -17
- package/bin/dsh-tui.js +200 -34
- package/cordis.patch.yml +16 -52
- package/cordis.yml +6 -2
- package/guide/dsh-tui-guide/claude-backend.en.md +44 -7
- package/guide/dsh-tui-guide/claude-backend.md +28 -6
- package/guide/dsh-tui-guide/codex-backend.en.md +47 -10
- package/guide/dsh-tui-guide/codex-backend.md +26 -4
- package/guide/dsh-tui-guide/configuration.en.md +168 -18
- package/guide/dsh-tui-guide/configuration.md +144 -16
- package/guide/dsh-tui-guide/getting-started.en.md +15 -0
- package/guide/dsh-tui-guide/getting-started.md +15 -0
- package/guide/dsh-tui-guide/interaction.en.md +64 -24
- package/guide/dsh-tui-guide/interaction.md +49 -19
- package/guide/dsh-tui-guide/plugins.en.md +97 -3
- package/guide/dsh-tui-guide/plugins.md +55 -2
- package/guide/dsh-tui-guide/themes.en.md +23 -14
- package/guide/dsh-tui-guide/themes.md +19 -12
- package/guide/dsh-tui-guide/user-guide.en.md +53 -21
- package/guide/dsh-tui-guide/user-guide.md +43 -22
- package/lib/settings.json +103 -9
- package/lib/types/adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/adapter/channel/projection.js +1 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +1 -1
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +4 -0
- package/lib/types/adapter/channel/ui.d.ts +2 -0
- package/lib/types/adapter/channel/ui.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui.js +6 -2
- package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
- package/lib/types/adapter/kernel/runtime.js +2 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts +5 -1
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +14 -3
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +56 -12
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +68 -0
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel.d.ts +2 -0
- package/lib/types/adapter/ports/channel.d.ts.map +1 -1
- package/lib/types/adapter/spec/backend-capabilities.d.ts +22 -0
- package/lib/types/adapter/spec/backend-capabilities.d.ts.map +1 -0
- package/lib/types/adapter/spec/backend-capabilities.js +49 -0
- package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
- package/lib/types/adapter/spec/protocol-constants.js +10 -3
- package/lib/types/adapter/spec/tui-contributions.d.ts +3 -0
- package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
- package/lib/types/adapter/spec/tui-contributions.js +7 -0
- package/lib/types/adapter/standard/registry.d.ts +6 -0
- package/lib/types/adapter/standard/registry.d.ts.map +1 -1
- package/lib/types/adapter/standard/registry.js +65 -15
- package/lib/types/adapter/standard/tui-extension.d.ts.map +1 -1
- package/lib/types/adapter/standard/tui-extension.js +7 -1
- package/lib/types/adapter/standard/types.d.ts +10 -1
- package/lib/types/adapter/standard/types.d.ts.map +1 -1
- package/lib/types/adapter/upstream/host-descriptor-driver.d.ts.map +1 -1
- package/lib/types/adapter/upstream/host-descriptor-driver.js +52 -0
- package/lib/types/agent/backend-manifest.d.ts +152 -0
- package/lib/types/agent/backend-manifest.d.ts.map +1 -0
- package/lib/types/agent/backend-manifest.js +14 -0
- package/lib/types/agent/backend.d.ts +71 -5
- package/lib/types/agent/backend.d.ts.map +1 -1
- package/lib/types/agent/capabilities.d.ts +6 -0
- package/lib/types/agent/capabilities.d.ts.map +1 -1
- package/lib/types/agent/events.d.ts +3 -2
- package/lib/types/agent/events.d.ts.map +1 -1
- package/lib/types/agent/index.d.ts +2 -0
- package/lib/types/agent/index.d.ts.map +1 -1
- package/lib/types/agent/refs.d.ts +11 -1
- package/lib/types/agent/refs.d.ts.map +1 -1
- package/lib/types/agent/starting-session.d.ts +4 -0
- package/lib/types/agent/starting-session.d.ts.map +1 -0
- package/lib/types/agent/starting-session.js +19 -0
- package/lib/types/backends/claude/activity.d.ts +1 -1
- package/lib/types/backends/claude/activity.d.ts.map +1 -1
- package/lib/types/backends/claude/activity.js +5 -5
- package/lib/types/backends/claude/auth.d.ts.map +1 -1
- package/lib/types/backends/claude/auth.js +10 -3
- package/lib/types/backends/claude/backend.d.ts.map +1 -1
- package/lib/types/backends/claude/backend.js +103 -29
- package/lib/types/backends/claude/catalog.d.ts +2 -1
- package/lib/types/backends/claude/catalog.d.ts.map +1 -1
- package/lib/types/backends/claude/catalog.js +15 -5
- package/lib/types/backends/claude/channels.d.ts +5 -3
- package/lib/types/backends/claude/channels.d.ts.map +1 -1
- package/lib/types/backends/claude/channels.js +5 -4
- package/lib/types/backends/claude/contract.d.ts +4 -0
- package/lib/types/backends/claude/contract.d.ts.map +1 -1
- package/lib/types/backends/claude/contract.js +4 -0
- package/lib/types/backends/claude/controls.d.ts +4 -0
- package/lib/types/backends/claude/controls.d.ts.map +1 -1
- package/lib/types/backends/claude/controls.js +34 -42
- package/lib/types/backends/claude/dialogs.d.ts +8 -2
- package/lib/types/backends/claude/dialogs.d.ts.map +1 -1
- package/lib/types/backends/claude/dialogs.js +24 -16
- package/lib/types/backends/claude/images.d.ts +1 -1
- package/lib/types/backends/claude/images.d.ts.map +1 -1
- package/lib/types/backends/claude/images.js +7 -7
- package/lib/types/backends/claude/manifest.d.ts +21 -0
- package/lib/types/backends/claude/manifest.d.ts.map +1 -0
- package/lib/types/backends/claude/manifest.js +29 -0
- package/lib/types/backends/claude/older-history.js +2 -2
- package/lib/types/backends/claude/permissions.js +11 -11
- package/lib/types/backends/claude/prefs.d.ts +4 -2
- package/lib/types/backends/claude/prefs.d.ts.map +1 -1
- package/lib/types/backends/claude/prefs.js +4 -3
- package/lib/types/backends/claude/process.d.ts +16 -4
- package/lib/types/backends/claude/process.d.ts.map +1 -1
- package/lib/types/backends/claude/process.js +100 -37
- package/lib/types/backends/claude/send-message.d.ts +1 -1
- package/lib/types/backends/claude/send-message.d.ts.map +1 -1
- package/lib/types/backends/claude/session/auth.js +22 -22
- package/lib/types/backends/claude/session/channels.d.ts +4 -0
- package/lib/types/backends/claude/session/channels.d.ts.map +1 -1
- package/lib/types/backends/claude/session/channels.js +5 -3
- package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -1
- package/lib/types/backends/claude/session/lifecycle.js +31 -23
- package/lib/types/backends/claude/session/store.js +8 -8
- package/lib/types/backends/claude/session/subagents.js +2 -2
- package/lib/types/backends/claude/session/types.d.ts +7 -0
- package/lib/types/backends/claude/session/types.d.ts.map +1 -1
- package/lib/types/backends/claude/side-query.js +3 -3
- package/lib/types/backends/claude/task-output.js +5 -5
- package/lib/types/backends/claude/text.d.ts +778 -0
- package/lib/types/backends/claude/text.d.ts.map +1 -0
- package/lib/types/backends/claude/text.js +298 -0
- package/lib/types/backends/claude/transcript-file.d.ts +1 -1
- package/lib/types/backends/claude/transcript-file.d.ts.map +1 -1
- package/lib/types/backends/claude/transcript-file.js +4 -4
- package/lib/types/backends/claude/translate/attempts.js +2 -2
- package/lib/types/backends/claude/translate/core.js +3 -3
- package/lib/types/backends/claude/translate/messages.js +4 -4
- package/lib/types/backends/claude/translate/system.js +14 -14
- package/lib/types/backends/claude/translate/tasks.js +2 -2
- package/lib/types/backends/claude/translate/types.d.ts +1 -1
- package/lib/types/backends/claude/translate/types.d.ts.map +1 -1
- package/lib/types/backends/codex/auth/external-tokens.js +16 -16
- package/lib/types/backends/codex/auth/status.js +14 -14
- package/lib/types/backends/codex/backend.d.ts +4 -19
- package/lib/types/backends/codex/backend.d.ts.map +1 -1
- package/lib/types/backends/codex/backend.js +118 -25
- package/lib/types/backends/codex/catalog.d.ts +2 -1
- package/lib/types/backends/codex/catalog.d.ts.map +1 -1
- package/lib/types/backends/codex/catalog.js +63 -18
- package/lib/types/backends/codex/channels.d.ts +6 -3
- package/lib/types/backends/codex/channels.d.ts.map +1 -1
- package/lib/types/backends/codex/channels.js +15 -13
- package/lib/types/backends/codex/contract.d.ts +3 -0
- package/lib/types/backends/codex/contract.d.ts.map +1 -1
- package/lib/types/backends/codex/contract.js +3 -0
- package/lib/types/backends/codex/detect.d.ts.map +1 -1
- package/lib/types/backends/codex/detect.js +9 -6
- package/lib/types/backends/codex/manifest.d.ts +30 -0
- package/lib/types/backends/codex/manifest.d.ts.map +1 -0
- package/lib/types/backends/codex/manifest.js +23 -0
- package/lib/types/backends/codex/prefs.d.ts +4 -2
- package/lib/types/backends/codex/prefs.d.ts.map +1 -1
- package/lib/types/backends/codex/prefs.js +4 -3
- package/lib/types/backends/codex/rpc/hub.js +2 -2
- package/lib/types/backends/codex/session/activity.d.ts +1 -1
- package/lib/types/backends/codex/session/activity.d.ts.map +1 -1
- package/lib/types/backends/codex/session/activity.js +13 -13
- package/lib/types/backends/codex/session/approvals.js +30 -30
- package/lib/types/backends/codex/session/async-questions.d.ts +17 -0
- package/lib/types/backends/codex/session/async-questions.d.ts.map +1 -0
- package/lib/types/backends/codex/session/async-questions.js +89 -0
- package/lib/types/backends/codex/session/commands.d.ts +8 -2
- package/lib/types/backends/codex/session/commands.d.ts.map +1 -1
- package/lib/types/backends/codex/session/commands.js +71 -23
- package/lib/types/backends/codex/session/controls.d.ts +1 -1
- package/lib/types/backends/codex/session/controls.d.ts.map +1 -1
- package/lib/types/backends/codex/session/controls.js +21 -16
- package/lib/types/backends/codex/session/goals.d.ts.map +1 -1
- package/lib/types/backends/codex/session/goals.js +3 -3
- package/lib/types/backends/codex/session/history.js +2 -2
- package/lib/types/backends/codex/session/images.js +8 -8
- package/lib/types/backends/codex/session/input.d.ts +6 -2
- package/lib/types/backends/codex/session/input.d.ts.map +1 -1
- package/lib/types/backends/codex/session/input.js +55 -13
- package/lib/types/backends/codex/session/plan-review.js +6 -6
- package/lib/types/backends/codex/session/session.d.ts.map +1 -1
- package/lib/types/backends/codex/session/session.js +100 -42
- package/lib/types/backends/codex/session/side-query.d.ts.map +1 -1
- package/lib/types/backends/codex/session/side-query.js +27 -9
- package/lib/types/backends/codex/session/state.d.ts +6 -1
- package/lib/types/backends/codex/session/state.d.ts.map +1 -1
- package/lib/types/backends/codex/session/subagents.js +5 -5
- package/lib/types/backends/codex/session/tasks.js +4 -4
- package/lib/types/backends/codex/text.d.ts +933 -0
- package/lib/types/backends/codex/text.d.ts.map +1 -0
- package/lib/types/backends/codex/text.js +313 -0
- package/lib/types/backends/codex/translate/items.d.ts.map +1 -1
- package/lib/types/backends/codex/translate/items.js +7 -5
- package/lib/types/backends/codex/translate/live.d.ts.map +1 -1
- package/lib/types/backends/codex/translate/live.js +11 -8
- package/lib/types/backends/codex/translate/notices.js +10 -10
- package/lib/types/backends/codex/translate/question-reply.d.ts +11 -0
- package/lib/types/backends/codex/translate/question-reply.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/question-reply.js +53 -0
- package/lib/types/backends/shared/channel-slug.d.ts +4 -0
- package/lib/types/backends/shared/channel-slug.d.ts.map +1 -0
- package/lib/types/backends/shared/channel-slug.js +25 -0
- package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -1
- package/lib/types/backends/shared/channel-tokens.js +30 -23
- package/lib/types/{channel → backends/shared}/elicitation.d.ts +78 -21
- package/lib/types/backends/shared/elicitation.d.ts.map +1 -0
- package/lib/types/{channel → backends/shared}/elicitation.js +64 -66
- package/lib/types/backends/shared/image-size.d.ts +33 -0
- package/lib/types/backends/shared/image-size.d.ts.map +1 -0
- package/lib/types/backends/shared/image-size.js +134 -0
- package/lib/types/{utils → backends/shared}/jsonl.d.ts +5 -1
- package/lib/types/backends/shared/jsonl.d.ts.map +1 -0
- package/lib/types/{utils → backends/shared}/jsonl.js +5 -1
- package/lib/types/backends/shared/localized-text.d.ts +30 -0
- package/lib/types/backends/shared/localized-text.d.ts.map +1 -0
- package/lib/types/backends/shared/localized-text.js +24 -0
- package/lib/types/backends/shared/platform-text.d.ts +88 -0
- package/lib/types/backends/shared/platform-text.d.ts.map +1 -0
- package/lib/types/backends/shared/platform-text.js +33 -0
- package/lib/types/branding.d.ts +13 -0
- package/lib/types/branding.d.ts.map +1 -1
- package/lib/types/branding.js +18 -0
- package/lib/types/channel/channel-slug.d.ts +3 -1
- package/lib/types/channel/channel-slug.d.ts.map +1 -1
- package/lib/types/channel/channel-slug.js +3 -1
- package/lib/types/channel/projection.d.ts.map +1 -1
- package/lib/types/channel/projection.js +10 -0
- package/lib/types/channel/sanitize.d.ts +7 -0
- package/lib/types/channel/sanitize.d.ts.map +1 -1
- package/lib/types/channel/sanitize.js +9 -0
- package/lib/types/channel/usage.d.ts.map +1 -1
- package/lib/types/channel/usage.js +5 -0
- package/lib/types/commands.d.ts +15 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +58 -10
- package/lib/types/components/AgentMessageComposer.d.ts.map +1 -1
- package/lib/types/components/AgentMessageComposer.js +3 -2
- package/lib/types/components/BtwPanel.d.ts.map +1 -1
- package/lib/types/components/BtwPanel.js +4 -2
- package/lib/types/components/Chat/JobCard.js +3 -3
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
- package/lib/types/components/CommandSuggestions.js +24 -7
- package/lib/types/components/ContextBarView.d.ts +5 -1
- package/lib/types/components/ContextBarView.d.ts.map +1 -1
- package/lib/types/components/ContextBarView.js +6 -3
- package/lib/types/components/ExtensionDialog.d.ts.map +1 -1
- package/lib/types/components/ExtensionDialog.js +2 -3
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/GoalTodoPanel.js +14 -3
- package/lib/types/components/InlineMathParagraph.js +1 -1
- package/lib/types/components/KernelPicker.d.ts.map +1 -1
- package/lib/types/components/KernelPicker.js +1 -1
- package/lib/types/components/LogoV2.d.ts +4 -1
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +14 -9
- package/lib/types/components/MarkdownTable.d.ts.map +1 -1
- package/lib/types/components/MarkdownTable.js +4 -3
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +109 -15
- package/lib/types/components/ModelPicker.d.ts +24 -31
- package/lib/types/components/ModelPicker.d.ts.map +1 -1
- package/lib/types/components/ModelPicker.js +115 -40
- package/lib/types/components/PermissionsPicker.d.ts +10 -1
- package/lib/types/components/PermissionsPicker.d.ts.map +1 -1
- package/lib/types/components/PermissionsPicker.js +24 -16
- package/lib/types/components/PluginInstallPane.d.ts +21 -0
- package/lib/types/components/PluginInstallPane.d.ts.map +1 -0
- package/lib/types/components/PluginInstallPane.js +84 -0
- package/lib/types/components/PluginManagePane.d.ts +21 -0
- package/lib/types/components/PluginManagePane.d.ts.map +1 -0
- package/lib/types/components/PluginManagePane.js +69 -0
- package/lib/types/components/PromptEditor.d.ts +3 -3
- package/lib/types/components/PromptInput.d.ts +21 -3
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +65 -121
- package/lib/types/components/SdkInstallWizard.d.ts +3 -1
- package/lib/types/components/SdkInstallWizard.d.ts.map +1 -1
- package/lib/types/components/SdkInstallWizard.js +8 -1
- package/lib/types/components/SearchBox.d.ts +13 -15
- package/lib/types/components/SearchBox.d.ts.map +1 -1
- package/lib/types/components/SearchBox.js +58 -27
- package/lib/types/components/SubagentCard.d.ts +13 -1
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +27 -12
- package/lib/types/components/SubagentDashboard.d.ts +8 -1
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
- package/lib/types/components/SubagentDashboard.js +58 -16
- package/lib/types/components/ThemePicker.d.ts +1 -1
- package/lib/types/components/ThemePicker.d.ts.map +1 -1
- package/lib/types/components/ThemePicker.js +14 -11
- package/lib/types/components/Tooltip.js +1 -1
- package/lib/types/components/WorkingSpinner.js +1 -1
- package/lib/types/components/WorkspaceFlowPicker.d.ts.map +1 -1
- package/lib/types/components/WorkspaceFlowPicker.js +4 -3
- package/lib/types/components/composerImageTokens.d.ts +24 -0
- package/lib/types/components/composerImageTokens.d.ts.map +1 -0
- package/lib/types/components/composerImageTokens.js +37 -0
- package/lib/types/components/design-system/InputCaret.d.ts +7 -0
- package/lib/types/components/design-system/InputCaret.d.ts.map +1 -0
- package/lib/types/components/design-system/InputCaret.js +9 -0
- package/lib/types/components/design-system/ListItem.d.ts +13 -2
- package/lib/types/components/design-system/ListItem.d.ts.map +1 -1
- package/lib/types/components/design-system/ListItem.js +11 -5
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +6 -8
- package/lib/types/components/kernelCatalog.d.ts +55 -11
- package/lib/types/components/kernelCatalog.d.ts.map +1 -1
- package/lib/types/components/kernelCatalog.js +42 -23
- package/lib/types/components/launchpadActions.d.ts +4 -0
- package/lib/types/components/launchpadActions.d.ts.map +1 -1
- package/lib/types/components/launchpadActions.js +5 -4
- package/lib/types/components/launchpadLayout.d.ts +14 -1
- package/lib/types/components/launchpadLayout.d.ts.map +1 -1
- package/lib/types/components/launchpadLayout.js +38 -19
- package/lib/types/components/messages/TeamMessageBubble.d.ts +20 -0
- package/lib/types/components/messages/TeamMessageBubble.d.ts.map +1 -0
- package/lib/types/components/messages/TeamMessageBubble.js +15 -0
- package/lib/types/components/messages/UserPromptMessage.d.ts +4 -3
- package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
- package/lib/types/components/messages/UserPromptMessage.js +4 -3
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +8 -3
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
- package/lib/types/components/questions/PlanReviewPanel.js +4 -3
- package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -1
- package/lib/types/components/questions/ProviderModelEditor.js +3 -13
- package/lib/types/components/sessions/ForeignSessionRow.d.ts +3 -1
- package/lib/types/components/sessions/ForeignSessionRow.d.ts.map +1 -1
- package/lib/types/components/sessions/ForeignSessionRow.js +5 -2
- package/lib/types/components/sessions/SessionListRow.d.ts +3 -1
- package/lib/types/components/sessions/SessionListRow.d.ts.map +1 -1
- package/lib/types/components/sessions/SessionListRow.js +5 -2
- package/lib/types/components/sidePanel/PanelBar.d.ts +1 -0
- package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelBar.js +21 -17
- package/lib/types/components/sidePanel/PanelHost.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelHost.js +5 -1
- package/lib/types/components/sidePanel/PanelStore.d.ts +8 -0
- package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelStore.js +11 -0
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.js +15 -2
- package/lib/types/components/sidePanel/SidePanelLayout.d.ts +6 -4
- package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelLayout.js +33 -7
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts +7 -0
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelRuntimeContext.js +4 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +7 -2
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwComposer.js +28 -8
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +2 -1
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +156 -21
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +6 -2
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadScene.js +64 -16
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +15 -5
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadView.js +101 -10
- package/lib/types/components/sidePanel/btw/threads.d.ts +18 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/threads.js +51 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
- package/lib/types/components/sidePanel/builtinPanels.js +5 -1
- package/lib/types/components/sidePanel/companion/CompanionPanel.js +2 -2
- package/lib/types/components/sidePanel/companion/SplashMascot.d.ts +5 -1
- package/lib/types/components/sidePanel/companion/SplashMascot.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/SplashMascot.js +19 -4
- package/lib/types/components/sidePanel/companion/skins.d.ts +8 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/skins.js +57 -12
- package/lib/types/components/sidePanel/types.d.ts +7 -1
- package/lib/types/components/sidePanel/types.d.ts.map +1 -1
- package/lib/types/components/sidePanel/useSidePanel.d.ts +2 -0
- package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/useSidePanel.js +11 -1
- package/lib/types/components/splashArtRows.d.ts +29 -0
- package/lib/types/components/splashArtRows.d.ts.map +1 -0
- package/lib/types/components/splashArtRows.js +31 -0
- package/lib/types/components/splashFonts.d.ts +24 -1
- package/lib/types/components/splashFonts.d.ts.map +1 -1
- package/lib/types/components/splashFonts.js +40 -5
- package/lib/types/components/teamRoster.d.ts +70 -0
- package/lib/types/components/teamRoster.d.ts.map +1 -0
- package/lib/types/components/teamRoster.js +78 -0
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
- package/lib/types/components/workspaces/HomeWorkspaceRow.js +5 -2
- package/lib/types/dsh-adapter/admission-loader.d.ts +102 -0
- package/lib/types/dsh-adapter/admission-loader.d.ts.map +1 -0
- package/lib/types/dsh-adapter/admission-loader.js +301 -0
- package/lib/types/dsh-adapter/agent-view.d.ts.map +1 -1
- package/lib/types/dsh-adapter/agent-view.js +3 -1
- package/lib/types/dsh-adapter/approvals.d.ts +7 -0
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
- package/lib/types/dsh-adapter/approvals.js +45 -1
- package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -1
- package/lib/types/dsh-adapter/backend/translate.js +71 -8
- package/lib/types/dsh-adapter/backend-admission.d.ts +64 -0
- package/lib/types/dsh-adapter/backend-admission.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend-admission.js +34 -0
- package/lib/types/dsh-adapter/backend-assembly.d.ts +31 -0
- package/lib/types/dsh-adapter/backend-assembly.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend-assembly.js +225 -0
- package/lib/types/dsh-adapter/backend-contribution.d.ts +62 -0
- package/lib/types/dsh-adapter/backend-contribution.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend-contribution.js +78 -0
- package/lib/types/dsh-adapter/backend-registry.d.ts +136 -0
- package/lib/types/dsh-adapter/backend-registry.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend-registry.js +304 -0
- package/lib/types/dsh-adapter/backends.d.ts +67 -24
- package/lib/types/dsh-adapter/backends.d.ts.map +1 -1
- package/lib/types/dsh-adapter/backends.generated.d.ts +12 -0
- package/lib/types/dsh-adapter/backends.generated.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backends.generated.js +6 -0
- package/lib/types/dsh-adapter/backends.js +91 -46
- package/lib/types/dsh-adapter/bundled-presets.d.ts.map +1 -1
- package/lib/types/dsh-adapter/bundled-presets.js +60 -3
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +2 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.js +9 -3
- package/lib/types/dsh-adapter/channel/agent-view-projection.js +2 -2
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.js +8 -3
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +17 -3
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +19 -46
- package/lib/types/dsh-adapter/channel/channel-host.d.ts +45 -0
- package/lib/types/dsh-adapter/channel/channel-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/channel-host.js +1 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts +5 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/command-completions.js +79 -6
- package/lib/types/dsh-adapter/channel/compaction.d.ts +7 -2
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/compaction.js +100 -26
- package/lib/types/dsh-adapter/channel/composer-images.d.ts +4 -2
- package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/composer-images.js +36 -5
- package/lib/types/dsh-adapter/channel/cordis-host.d.ts +14 -0
- package/lib/types/dsh-adapter/channel/cordis-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/cordis-host.js +35 -0
- package/lib/types/dsh-adapter/channel/core/actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/actions.js +15 -6
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +10 -3
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/binding-feed.js +5 -1
- package/lib/types/dsh-adapter/channel/core/compose.d.ts +12 -28
- package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/compose.js +330 -117
- package/lib/types/dsh-adapter/channel/core/files.d.ts +7 -2
- package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/files.js +1 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts +12 -6
- package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/host.js +69 -35
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +5 -3
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/local-actions.js +5 -2
- package/lib/types/dsh-adapter/channel/core/session-controls.js +2 -2
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +7 -4
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/session-switch.js +8 -4
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/sessions.js +75 -16
- package/lib/types/dsh-adapter/channel/extensions.d.ts +4 -3
- package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/extensions.js +109 -30
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-delivery.js +14 -5
- package/lib/types/dsh-adapter/channel/job-projection.d.ts +4 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/job-projection.js +205 -24
- package/lib/types/dsh-adapter/channel/mentions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +7 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.js +235 -13
- package/lib/types/dsh-adapter/channel/model-actions.d.ts +5 -1
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.js +48 -29
- package/lib/types/dsh-adapter/channel/model-selection.d.ts +17 -0
- package/lib/types/dsh-adapter/channel/model-selection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/model-selection.js +109 -0
- package/lib/types/dsh-adapter/channel/model-switch.d.ts +12 -21
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-switch.js +39 -102
- package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/permissions.js +4 -1
- package/lib/types/dsh-adapter/channel/projection-helpers.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection-helpers.js +2 -0
- package/lib/types/dsh-adapter/channel/projection.js +1 -1
- package/lib/types/dsh-adapter/channel/reports.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/reports.js +11 -3
- package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.js +33 -20
- package/lib/types/dsh-adapter/channel/session-listing.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/session-listing.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-listing.js +51 -0
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +3 -1
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.js +60 -30
- package/lib/types/dsh-adapter/channel/session-reset.js +2 -2
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +22 -8
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-rewind.js +38 -24
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-tree-actions.js +38 -24
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +5 -2
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +136 -5
- package/lib/types/dsh-adapter/channel/state.d.ts +43 -1
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +14 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +84 -12
- package/lib/types/dsh-adapter/channel/task-completion.d.ts +6 -0
- package/lib/types/dsh-adapter/channel/task-completion.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/task-completion.js +114 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts +8 -1
- package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/transcript.js +20 -3
- package/lib/types/dsh-adapter/channel/upstream-retry.d.ts +81 -0
- package/lib/types/dsh-adapter/channel/upstream-retry.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/upstream-retry.js +138 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/workspace-actions.js +9 -8
- package/lib/types/dsh-adapter/channel-ui.d.ts +3 -1
- package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel-ui.js +4 -2
- package/lib/types/dsh-adapter/channel.d.ts +2 -2
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +19 -5
- package/lib/types/dsh-adapter/compat/agent-team-0.2.0.d.ts +55 -0
- package/lib/types/dsh-adapter/compat/agent-team-0.2.0.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/agent-team-0.2.0.js +96 -0
- package/lib/types/dsh-adapter/context-occupancy.d.ts +81 -4
- package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
- package/lib/types/dsh-adapter/context-occupancy.js +108 -17
- package/lib/types/dsh-adapter/contract.d.ts +4 -4
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +20 -5
- package/lib/types/dsh-adapter/effect-ledger.d.ts +7 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -1
- package/lib/types/dsh-adapter/effect-ledger.js +8 -1
- package/lib/types/dsh-adapter/entry-slot.d.ts +38 -0
- package/lib/types/dsh-adapter/entry-slot.d.ts.map +1 -0
- package/lib/types/dsh-adapter/entry-slot.js +28 -0
- package/lib/types/dsh-adapter/fresh-agent.d.ts +22 -0
- package/lib/types/dsh-adapter/fresh-agent.d.ts.map +1 -0
- package/lib/types/dsh-adapter/fresh-agent.js +226 -0
- package/lib/types/dsh-adapter/host-access.d.ts +16 -1
- package/lib/types/dsh-adapter/host-access.d.ts.map +1 -1
- package/lib/types/dsh-adapter/host-access.js +148 -2
- package/lib/types/dsh-adapter/host-contract.d.ts +103 -0
- package/lib/types/dsh-adapter/host-contract.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-contract.js +77 -0
- package/lib/types/dsh-adapter/host-dsh.d.ts +112 -0
- package/lib/types/dsh-adapter/host-dsh.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-dsh.js +481 -0
- package/lib/types/dsh-adapter/host-entry.d.ts +9 -0
- package/lib/types/dsh-adapter/host-entry.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-entry.js +253 -0
- package/lib/types/dsh-adapter/index.d.ts +53 -17
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +63 -9
- package/lib/types/dsh-adapter/install/executors.d.ts +44 -0
- package/lib/types/dsh-adapter/install/executors.d.ts.map +1 -0
- package/lib/types/dsh-adapter/install/executors.js +15 -0
- package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts +3 -0
- package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts.map +1 -0
- package/lib/types/dsh-adapter/install/pnpm-profile-add.js +150 -0
- package/lib/types/dsh-adapter/invariant.d.ts +7 -2
- package/lib/types/dsh-adapter/invariant.d.ts.map +1 -1
- package/lib/types/dsh-adapter/invariant.js +6 -3
- package/lib/types/dsh-adapter/jobs.d.ts +7 -0
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +13 -0
- package/lib/types/dsh-adapter/lite-profile.d.ts +50 -0
- package/lib/types/dsh-adapter/lite-profile.d.ts.map +1 -0
- package/lib/types/dsh-adapter/lite-profile.js +49 -0
- package/lib/types/dsh-adapter/migrate/index.js +2 -2
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -1
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
- package/lib/types/dsh-adapter/migrate/parse/jsonl.js +4 -3
- package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -1
- package/lib/types/dsh-adapter/oauth/profiles.js +5 -1
- package/lib/types/dsh-adapter/panels.d.ts +7 -0
- package/lib/types/dsh-adapter/panels.d.ts.map +1 -1
- package/lib/types/dsh-adapter/panels.js +41 -2
- package/lib/types/dsh-adapter/plugin-completions.d.ts +32 -0
- package/lib/types/dsh-adapter/plugin-completions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-completions.js +80 -0
- package/lib/types/dsh-adapter/plugin-declaration.d.ts +119 -0
- package/lib/types/dsh-adapter/plugin-declaration.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-declaration.js +183 -0
- package/lib/types/dsh-adapter/plugin-feed.d.ts +94 -0
- package/lib/types/dsh-adapter/plugin-feed.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-feed.js +135 -0
- package/lib/types/dsh-adapter/plugin-guard.d.ts +115 -0
- package/lib/types/dsh-adapter/plugin-guard.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-guard.js +108 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts +13 -2
- package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-host.js +34 -8
- package/lib/types/dsh-adapter/plugin-install.d.ts +160 -0
- package/lib/types/dsh-adapter/plugin-install.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-install.js +545 -0
- package/lib/types/dsh-adapter/plugin-manage.d.ts +178 -0
- package/lib/types/dsh-adapter/plugin-manage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-manage.js +468 -0
- package/lib/types/dsh-adapter/plugin-manager.d.ts +144 -0
- package/lib/types/dsh-adapter/plugin-manager.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-manager.js +83 -0
- package/lib/types/dsh-adapter/plugin.d.ts +50 -1
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +918 -234
- package/lib/types/dsh-adapter/plugins-info.d.ts +130 -8
- package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugins-info.js +469 -44
- package/lib/types/dsh-adapter/process-exit.d.ts +43 -0
- package/lib/types/dsh-adapter/process-exit.d.ts.map +1 -0
- package/lib/types/dsh-adapter/process-exit.js +60 -0
- package/lib/types/dsh-adapter/root-dispose.d.ts +18 -0
- package/lib/types/dsh-adapter/root-dispose.d.ts.map +1 -0
- package/lib/types/dsh-adapter/root-dispose.js +28 -0
- package/lib/types/dsh-adapter/session-list-metadata.d.ts +20 -0
- package/lib/types/dsh-adapter/session-list-metadata.d.ts.map +1 -0
- package/lib/types/dsh-adapter/session-list-metadata.js +56 -0
- package/lib/types/dsh-adapter/session-projection-store.d.ts +66 -0
- package/lib/types/dsh-adapter/session-projection-store.d.ts.map +1 -0
- package/lib/types/dsh-adapter/session-projection-store.js +149 -0
- package/lib/types/dsh-adapter/session-seed.d.ts +11 -0
- package/lib/types/dsh-adapter/session-seed.d.ts.map +1 -0
- package/lib/types/dsh-adapter/session-seed.js +47 -0
- package/lib/types/dsh-adapter/sessions/list.d.ts +3 -1
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +11 -5
- package/lib/types/dsh-adapter/sessions/snapshot.d.ts +0 -2
- package/lib/types/dsh-adapter/sessions/snapshot.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/snapshot.js +7 -70
- package/lib/types/dsh-adapter/settingsEditor.js +2 -2
- package/lib/types/dsh-adapter/sideQuestion.d.ts +21 -0
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.js +53 -0
- package/lib/types/dsh-adapter/startup-args.d.ts +2 -0
- package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -1
- package/lib/types/dsh-adapter/startup-args.js +5 -0
- package/lib/types/dsh-adapter/subagents.d.ts +33 -1
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +112 -9
- package/lib/types/dsh-adapter/team-mode.d.ts +74 -0
- package/lib/types/dsh-adapter/team-mode.d.ts.map +1 -0
- package/lib/types/dsh-adapter/team-mode.js +188 -0
- package/lib/types/dsh-adapter/team-roster.d.ts +67 -0
- package/lib/types/dsh-adapter/team-roster.d.ts.map +1 -0
- package/lib/types/dsh-adapter/team-roster.js +136 -0
- package/lib/types/dsh-adapter/team-tools.d.ts +58 -0
- package/lib/types/dsh-adapter/team-tools.d.ts.map +1 -0
- package/lib/types/dsh-adapter/team-tools.js +208 -0
- package/lib/types/dsh-adapter/tui-settings.d.ts +57 -0
- package/lib/types/dsh-adapter/tui-settings.d.ts.map +1 -0
- package/lib/types/dsh-adapter/tui-settings.js +199 -0
- package/lib/types/dsh-adapter/types.d.ts +1 -1
- package/lib/types/dsh-adapter/types.d.ts.map +1 -1
- package/lib/types/effortPrefs.d.ts +6 -3
- package/lib/types/effortPrefs.d.ts.map +1 -1
- package/lib/types/effortPrefs.js +7 -4
- package/lib/types/hostEntryRoute.d.ts +18 -0
- package/lib/types/hostEntryRoute.d.ts.map +1 -0
- package/lib/types/hostEntryRoute.js +57 -0
- package/lib/types/i18n.d.ts +961 -1439
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +443 -387
- package/lib/types/ink/components/AlternateScreen.js +2 -2
- package/lib/types/ink/components/App.d.ts +1 -0
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +16 -4
- package/lib/types/ink/components/CursorDeclarationContext.d.ts +9 -0
- package/lib/types/ink/components/CursorDeclarationContext.d.ts.map +1 -1
- package/lib/types/ink/components/CursorDeclarationContext.js +2 -0
- package/lib/types/ink/components/ScrollBox.d.ts +9 -0
- package/lib/types/ink/components/ScrollBox.d.ts.map +1 -1
- package/lib/types/ink/components/ScrollBox.js +23 -0
- package/lib/types/ink/dom.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-copy-on-select.d.ts +2 -2
- package/lib/types/ink/hooks/use-copy-on-select.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-copy-on-select.js +13 -7
- package/lib/types/ink/hooks/use-declared-cursor.d.ts +11 -3
- package/lib/types/ink/hooks/use-declared-cursor.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-declared-cursor.js +30 -10
- package/lib/types/ink/ink.d.ts +22 -17
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +151 -40
- package/lib/types/ink/kitty-graphics.d.ts +2 -0
- package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
- package/lib/types/ink/kitty-graphics.js +6 -1
- package/lib/types/ink/node-cache.d.ts +2 -1
- package/lib/types/ink/node-cache.d.ts.map +1 -1
- package/lib/types/ink/output.d.ts +10 -4
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +14 -10
- package/lib/types/ink/render-node-to-output.d.ts +5 -2
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +27 -9
- package/lib/types/ink/renderer.d.ts +1 -0
- package/lib/types/ink/renderer.d.ts.map +1 -1
- package/lib/types/ink/renderer.js +4 -3
- package/lib/types/ink/root.d.ts +4 -1
- package/lib/types/ink/root.d.ts.map +1 -1
- package/lib/types/ink/screen.d.ts +4 -2
- package/lib/types/ink/screen.d.ts.map +1 -1
- package/lib/types/ink/selection.d.ts +10 -1
- package/lib/types/ink/selection.d.ts.map +1 -1
- package/lib/types/ink/selection.js +94 -25
- package/lib/types/ink/stdin-handoff.d.ts +11 -0
- package/lib/types/ink/stdin-handoff.d.ts.map +1 -0
- package/lib/types/ink/stdin-handoff.js +20 -0
- package/lib/types/ink/styles.d.ts +2 -1
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.d.ts +6 -4
- package/lib/types/ink/terminal-image.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.js +16 -39
- package/lib/types/ink/terminal-notification.d.ts +8 -0
- package/lib/types/ink/terminal-notification.d.ts.map +1 -0
- package/lib/types/ink/terminal-notification.js +83 -0
- package/lib/types/ink/terminal.d.ts +9 -0
- package/lib/types/ink/terminal.d.ts.map +1 -1
- package/lib/types/ink/terminal.js +34 -1
- package/lib/types/ink/termio/csi.d.ts +11 -0
- package/lib/types/ink/termio/csi.d.ts.map +1 -1
- package/lib/types/ink/termio/csi.js +13 -0
- package/lib/types/ink/update-overflow-guard.d.ts +6 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.js +17 -0
- package/lib/types/ink/wrap-text.d.ts +6 -0
- package/lib/types/ink/wrap-text.d.ts.map +1 -1
- package/lib/types/ink/wrap-text.js +17 -0
- package/lib/types/kernelPrefs.d.ts +130 -17
- package/lib/types/kernelPrefs.d.ts.map +1 -1
- package/lib/types/kernelPrefs.js +98 -35
- package/lib/types/math/inline-layout.d.ts +2 -0
- package/lib/types/math/inline-layout.d.ts.map +1 -1
- package/lib/types/math/inline-layout.js +5 -27
- package/lib/types/modelGroups.d.ts +15 -27
- package/lib/types/modelGroups.d.ts.map +1 -1
- package/lib/types/modelGroups.js +17 -31
- package/lib/types/modelPrefs.d.ts +5 -4
- package/lib/types/modelPrefs.d.ts.map +1 -1
- package/lib/types/modelPrefs.js +5 -4
- package/lib/types/modelRoute.d.ts +23 -9
- package/lib/types/modelRoute.d.ts.map +1 -1
- package/lib/types/modelRoute.js +25 -11
- package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -1
- package/lib/types/native-ts/yoga-layout/index.js +8 -1
- package/lib/types/permissionPrefs.d.ts +34 -0
- package/lib/types/permissionPrefs.d.ts.map +1 -0
- package/lib/types/permissionPrefs.js +61 -0
- package/lib/types/permissionPresetLabels.d.ts +25 -0
- package/lib/types/permissionPresetLabels.d.ts.map +1 -0
- package/lib/types/permissionPresetLabels.js +33 -0
- package/lib/types/plugin-host.d.ts +1 -0
- package/lib/types/plugin-host.d.ts.map +1 -1
- package/lib/types/preset-patch.d.ts +22 -0
- package/lib/types/preset-patch.d.ts.map +1 -0
- package/lib/types/preset-patch.js +14 -0
- package/lib/types/presetPrefs.d.ts +17 -3
- package/lib/types/presetPrefs.d.ts.map +1 -1
- package/lib/types/presetPrefs.js +20 -3
- package/lib/types/reload.d.ts +6 -10
- package/lib/types/reload.d.ts.map +1 -1
- package/lib/types/reload.js +14 -14
- package/lib/types/screens/Chat.d.ts +55 -16
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +742 -280
- package/lib/types/screens/Launchpad.d.ts +33 -17
- package/lib/types/screens/Launchpad.d.ts.map +1 -1
- package/lib/types/screens/Launchpad.js +256 -78
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +53 -12
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/Settings.js +7 -0
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +24 -7
- package/lib/types/screens/StatusMetrics.d.ts +46 -1
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
- package/lib/types/screens/StatusMetrics.js +72 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts +8 -4
- package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -1
- package/lib/types/screens/chat/useKernelPicker.js +61 -21
- package/lib/types/screens/chat/useModelPicker.d.ts +42 -0
- package/lib/types/screens/chat/useModelPicker.d.ts.map +1 -0
- package/lib/types/screens/chat/useModelPicker.js +182 -0
- package/lib/types/screens/chat/usePluginWriteFlow.d.ts +68 -0
- package/lib/types/screens/chat/usePluginWriteFlow.d.ts.map +1 -0
- package/lib/types/screens/chat/usePluginWriteFlow.js +92 -0
- package/lib/types/screens/chatOverlay.d.ts +30 -5
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +0 -1
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts +4 -1
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.js +26 -5
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +51 -29
- package/lib/types/sessionHistory.d.ts +5 -0
- package/lib/types/sessionHistory.d.ts.map +1 -1
- package/lib/types/sessionHistory.js +5 -0
- package/lib/types/sessionModes.d.ts +5 -3
- package/lib/types/sessionModes.d.ts.map +1 -1
- package/lib/types/sessionModes.js +9 -3
- package/lib/types/sessions/listSnapshot.d.ts +6 -0
- package/lib/types/sessions/listSnapshot.d.ts.map +1 -0
- package/lib/types/sessions/listSnapshot.js +67 -0
- package/lib/types/settings/definitions.d.ts +50 -0
- package/lib/types/settings/definitions.d.ts.map +1 -1
- package/lib/types/settings/definitions.js +42 -8
- package/lib/types/terminal-utils/cjk-emphasis.d.ts +28 -0
- package/lib/types/terminal-utils/cjk-emphasis.d.ts.map +1 -0
- package/lib/types/terminal-utils/cjk-emphasis.js +31 -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 +7 -2
- package/lib/types/theme.d.ts +29 -12
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +310 -23
- package/lib/types/themeCatalog.d.ts.map +1 -1
- package/lib/types/themeCatalog.js +21 -2
- package/lib/types/tips.js +4 -4
- package/lib/types/tuiSettingsFile.d.ts +56 -0
- package/lib/types/tuiSettingsFile.d.ts.map +1 -0
- package/lib/types/tuiSettingsFile.js +206 -0
- package/lib/types/ui.d.ts +2 -0
- package/lib/types/ui.d.ts.map +1 -1
- package/lib/types/ui.js +2 -0
- package/lib/types/update.d.ts +72 -26
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +131 -43
- package/lib/types/utils/bmp.d.ts +7 -0
- package/lib/types/utils/bmp.d.ts.map +1 -1
- package/lib/types/utils/bmp.js +27 -0
- package/lib/types/utils/bootTrace.d.ts +2 -0
- package/lib/types/utils/bootTrace.d.ts.map +1 -0
- package/lib/types/utils/bootTrace.js +20 -0
- package/lib/types/utils/clipboard.d.ts.map +1 -1
- package/lib/types/utils/clipboard.js +11 -3
- package/lib/types/utils/credentials.d.ts +14 -2
- package/lib/types/utils/credentials.d.ts.map +1 -1
- package/lib/types/utils/credentials.js +34 -11
- package/lib/types/utils/imageResize.d.ts +10 -20
- package/lib/types/utils/imageResize.d.ts.map +1 -1
- package/lib/types/utils/imageResize.js +61 -134
- package/lib/types/utils/inputPaste.d.ts +2 -2
- package/lib/types/utils/inputPaste.js +2 -2
- package/lib/types/utils/pastedImagePath.d.ts +5 -0
- package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
- package/lib/types/utils/pastedImagePath.js +33 -0
- package/lib/types/utils/paths.d.ts +11 -0
- package/lib/types/utils/paths.d.ts.map +1 -1
- package/lib/types/utils/paths.js +13 -0
- package/package.json +150 -114
- package/presets/winbash.mjs +716 -0
- package/tui-profile/feed/README.md +63 -0
- package/tui-profile/feed/first-party.json +10 -0
- package/tui-profile/protocols/profile-definitions.d.ts +1 -0
- package/tui-profile/protocols/profile-definitions.js +14 -0
- package/tui-profile/protocols/tui-contributions.d.ts +55 -0
- package/tui-profile/protocols/tui-contributions.js +141 -0
- package/tui-profile/registry/contracts/backend-v1alpha1.json +13 -0
- package/tui-profile/registry/registry-0.15.json +12 -0
- package/lib/types/backends/claude/install.d.ts +0 -15
- package/lib/types/backends/claude/install.d.ts.map +0 -1
- package/lib/types/backends/claude/install.js +0 -91
- package/lib/types/channel/elicitation.d.ts.map +0 -1
- package/lib/types/dsh-adapter/channel/session-lineage.d.ts +0 -42
- package/lib/types/dsh-adapter/channel/session-lineage.d.ts.map +0 -1
- package/lib/types/dsh-adapter/channel/session-lineage.js +0 -51
- package/lib/types/utils/jsonl.d.ts.map +0 -1
package/bin/dsh-tui.js
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* `DSH_TUI_LANG` 显式指定时从其值,否则默认中文(同 src/i18n.ts 的缺省)。
|
|
29
29
|
*/
|
|
30
30
|
import { spawn, spawnSync } from 'node:child_process'
|
|
31
|
-
import { existsSync, readFileSync, readdirSync, realpathSync, rmSync } from 'node:fs'
|
|
31
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, rmSync } from 'node:fs'
|
|
32
32
|
import { homedir } from 'node:os'
|
|
33
33
|
import { dirname, isAbsolute, join, resolve } from 'node:path'
|
|
34
34
|
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
@@ -63,7 +63,14 @@ const ownVersion = ownPackage?.name === '@deepseek-harness-tui/dsh-tui' ? ownPac
|
|
|
63
63
|
const PACKAGE = '@deepseek-harness-tui/dsh-tui'
|
|
64
64
|
const PROFILE = 'dsh-tui'
|
|
65
65
|
// Kept local so the launcher also works without compiled modules.
|
|
66
|
-
|
|
66
|
+
/** 内置内核:只用于文案("内置 dsh / claude / codex")与 rescue/safe 提示。
|
|
67
|
+
* **不是校验来源**——插件后端由各自 profile 提供,启动器看不到,所以
|
|
68
|
+
* `--backend` 只做 id 语法校验(P0 D1)。 */
|
|
69
|
+
const BUILTIN_BACKEND_IDS = ['dsh', 'claude', 'codex']
|
|
70
|
+
/** 后端 id 语法,与 src/agent/backend-manifest.ts 的 BACKEND_ID_PATTERN 同一规则
|
|
71
|
+
* (启动器要能在没有编译产物时工作,所以这里是副本;两边改动必须同步)。 */
|
|
72
|
+
const BACKEND_ID_PATTERN = /^[a-z0-9][a-z0-9-]{0,31}$/
|
|
73
|
+
const isBackendIdSyntax = value => typeof value === 'string' && BACKEND_ID_PATTERN.test(value)
|
|
67
74
|
|
|
68
75
|
// 随包用户手册(guide/,见 scripts/build-guide.mjs):交给 dsh 当内核
|
|
69
76
|
// dsh-skill-filesystem 的随包技能根(rank 600 的 bundledSkillDir 默认取这个
|
|
@@ -111,6 +118,26 @@ const shellOpt = isWin ? { shell: true } : {}
|
|
|
111
118
|
const cmd = (command, args) =>
|
|
112
119
|
isWin ? [`${command} ${shellQuote(args).join(' ')}`, []] : [command, args]
|
|
113
120
|
|
|
121
|
+
// dsh CLI 预检(`dsh --version`),异步起、不占关键路径:本包入口不需要 dsh CLI,
|
|
122
|
+
// 只有 `dsh --profile` 出口(`requireDsh()`)与入口失败后的提示判定才消费结果。
|
|
123
|
+
// **不能** unref:`requireDsh()` await 它时若这是唯一活跃句柄,Node 会把顶层 await
|
|
124
|
+
// 判成永不结算、以 exit 13 终止启动器。
|
|
125
|
+
let dshProbe
|
|
126
|
+
const probeDsh = () => {
|
|
127
|
+
dshProbe ??= new Promise(resolve => {
|
|
128
|
+
const child = spawn(...cmd('dsh', ['--version']), { stdio: 'ignore', ...shellOpt })
|
|
129
|
+
child.on('error', () => resolve(false))
|
|
130
|
+
child.on('exit', code => resolve(code === 0))
|
|
131
|
+
})
|
|
132
|
+
return dshProbe
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const requireDsh = async () => {
|
|
136
|
+
if (await probeDsh()) return
|
|
137
|
+
console.error(msg('noDsh'))
|
|
138
|
+
process.exit(1)
|
|
139
|
+
}
|
|
140
|
+
|
|
114
141
|
// 内联 semver(解析 + 严格大于):启动器可能在依赖不完整的环境里被执行
|
|
115
142
|
// (迁移、半损坏安装、测试沙箱),零外部依赖是自保底线。覆盖 semver 的
|
|
116
143
|
// 核心-先行版比较规则:先行版标识符逐段比(数字段按数值、小于字母段),
|
|
@@ -195,6 +222,13 @@ const MSG = {
|
|
|
195
222
|
en: code => `[dsh-tui] dsh profile exited with code ${code}. Run it directly for diagnostics:\n dsh --profile ${PROFILE}`,
|
|
196
223
|
zh: code => `[dsh-tui] dsh profile 已退出(退出码 ${code})。可直接运行以下命令查看诊断:\n dsh --profile ${PROFILE}`,
|
|
197
224
|
},
|
|
225
|
+
// 裸 --resume / -c / --continue 派生不出目标(roadmap §6 第 11 条,B-2a):以前
|
|
226
|
+
// 这里不设 env,再把 --continue 交给下游=静默冷启动。恢复语义要求明确报错并非零
|
|
227
|
+
// 退出,用户去掉 --resume 之后才按普通启动流程处理。
|
|
228
|
+
resumeNoLastSession: {
|
|
229
|
+
en: backend => `[dsh-tui] No session to resume: the "${backend}" backend has not recorded one yet. Start without --resume for a fresh session, or name one with --resume <session id>.`,
|
|
230
|
+
zh: backend => `[dsh-tui] 没有可恢复的上次会话:后端「${backend}」还没有记录过会话。去掉 --resume 即可冷启动,或用 --resume <会话 id> 指定一个。`,
|
|
231
|
+
},
|
|
198
232
|
safeAsk: {
|
|
199
233
|
en: code => `dsh-tui exited unexpectedly (code ${code}). Enter safe mode? [Y/n] `,
|
|
200
234
|
zh: code => `dsh-tui 异常退出(码 ${code})。进入安全模式?[Y/n] `,
|
|
@@ -466,7 +500,8 @@ const MSG = {
|
|
|
466
500
|
`Options:\n` +
|
|
467
501
|
` --resume [id] Resume the last (or the given) session\n` +
|
|
468
502
|
` -c, --continue Same as --resume\n` +
|
|
469
|
-
` --backend <id> Agent backend: dsh | claude | codex
|
|
503
|
+
` --backend <id> Agent backend: dsh | claude | codex, or an installed plugin backend\n` +
|
|
504
|
+
` (claude, codex and plugin backends: experimental)\n` +
|
|
470
505
|
` -- <prompt...> Treat the remaining arguments as literal prompt text\n` +
|
|
471
506
|
` <path|url> Open with the given workspace target\n\n` +
|
|
472
507
|
`Leading DSH options (e.g. --dump-config, --patch <path>) are forwarded unchanged.\n` +
|
|
@@ -484,7 +519,8 @@ const MSG = {
|
|
|
484
519
|
`选项:\n` +
|
|
485
520
|
` --resume [id] 恢复上次(或指定 id 的)会话\n` +
|
|
486
521
|
` -c, --continue 同 --resume\n` +
|
|
487
|
-
` --backend <id> Agent 后端:dsh | claude | codex
|
|
522
|
+
` --backend <id> Agent 后端:dsh | claude | codex,或已安装的插件后端\n` +
|
|
523
|
+
` (claude、codex 与插件后端均为实验性)\n` +
|
|
488
524
|
` -- <提示词...> 将剩余参数作为字面提示词\n` +
|
|
489
525
|
` <路径|URL> 以指定工作区目标启动\n\n` +
|
|
490
526
|
`前置 DSH 选项(如 --dump-config、--patch <路径>)原样转发。\n` +
|
|
@@ -560,7 +596,20 @@ if (subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
|
|
|
560
596
|
process.exit(0)
|
|
561
597
|
}
|
|
562
598
|
/**
|
|
563
|
-
*
|
|
599
|
+
* The credential documents a read may consult, most authoritative first: the
|
|
600
|
+
* active home's store, then the default `~/.dsh` store. A `DSH_HOME` override
|
|
601
|
+
* moves the harness home, but a key the user stored where both READMEs name it
|
|
602
|
+
* must keep counting as set instead of failing the doctor.
|
|
603
|
+
* @param home - The DSH home directory that owns `.credentials.yaml`.
|
|
604
|
+
* @returns Candidate file paths, most authoritative first.
|
|
605
|
+
*/
|
|
606
|
+
const credentialStoreFiles = home => {
|
|
607
|
+
const active = join(home, '.credentials.yaml')
|
|
608
|
+
const fallback = join(homedir(), '.dsh', '.credentials.yaml')
|
|
609
|
+
return active === fallback ? [active] : [active, fallback]
|
|
610
|
+
}
|
|
611
|
+
/**
|
|
612
|
+
* Whether any DSH credential store declares a reference by this name.
|
|
564
613
|
*
|
|
565
614
|
* The launcher stays dependency-free, so the YAML is read as text: only the
|
|
566
615
|
* top-level `refs:` block maps reference names to stored secrets, and matching
|
|
@@ -572,15 +621,17 @@ if (subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
|
|
|
572
621
|
* @returns True when a `refs` entry with that name exists.
|
|
573
622
|
*/
|
|
574
623
|
const credentialRefDeclared = (home, name) => {
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
624
|
+
const escaped = name.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&')
|
|
625
|
+
const pattern = new RegExp(`^[ \t]+${escaped}[ \t]*:`, 'mu')
|
|
626
|
+
for (const file of credentialStoreFiles(home)) {
|
|
627
|
+
try {
|
|
628
|
+
const block = /^refs:[ \t]*\r?\n((?:[ \t]+\S.*(?:\r?\n|$))*)/mu.exec(readFileSync(file, 'utf8'))
|
|
629
|
+
if (block !== null && pattern.test(block[1])) return true
|
|
630
|
+
} catch {
|
|
631
|
+
// An unreadable or absent store simply does not declare the ref.
|
|
632
|
+
}
|
|
583
633
|
}
|
|
634
|
+
return false
|
|
584
635
|
}
|
|
585
636
|
|
|
586
637
|
// ─── doctor 检查逻辑(doctor 子命令与 safe 会话共用)──────────────────────────
|
|
@@ -756,13 +807,41 @@ const startDshSession = (dshArgs, profile = PROFILE, env = process.env) =>
|
|
|
756
807
|
})
|
|
757
808
|
})
|
|
758
809
|
|
|
810
|
+
// entry 子进程的 Node 编译缓存:纯 env 注入,替身进程继承。用户显式设过
|
|
811
|
+
// `NODE_COMPILE_CACHE`(含空串)不覆盖。
|
|
812
|
+
// 路径沿用 `join(homedir(), '.dsh-tui', …)` 写法,**不要**抽成共用的模块级常量:
|
|
813
|
+
// verify-safe-mode.mjs 把 readLastRunRecord 至「TTY 判定」注释之间的源码切进只注入
|
|
814
|
+
// 少数全局的 vm 沙箱,区间内引用的外部常量会是 `undefined`,套件静默转红。
|
|
815
|
+
// (别把那两处切片标记原文抄进注释:会让脚本的 indexOf 提前命中。)
|
|
816
|
+
const withCompileCache = env => {
|
|
817
|
+
if (env.NODE_COMPILE_CACHE !== undefined) return env
|
|
818
|
+
const cacheDir = join(homedir(), '.dsh-tui', 'compile-cache')
|
|
819
|
+
try {
|
|
820
|
+
mkdirSync(cacheDir, { recursive: true, mode: 0o700 })
|
|
821
|
+
} catch {
|
|
822
|
+
return env
|
|
823
|
+
}
|
|
824
|
+
return { ...env, NODE_COMPILE_CACHE: cacheDir }
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
// 本包自己的入口:`node <入口> <应用参数>`。结果模型与 startDshSession 相同。
|
|
828
|
+
const startEntrySession = (entry, appArgs, env = process.env) =>
|
|
829
|
+
new Promise(resolve => {
|
|
830
|
+
const child = spawn(process.execPath, [entry, ...appArgs], { stdio: 'inherit', env: withCompileCache(env) })
|
|
831
|
+
child.on('error', err => resolve({ kind: 'error', error: err }))
|
|
832
|
+
child.on('exit', (code, signal) => {
|
|
833
|
+
if (signal) resolve({ kind: 'signal', signal })
|
|
834
|
+
else resolve({ kind: 'exit', code: code ?? 0 })
|
|
835
|
+
})
|
|
836
|
+
})
|
|
837
|
+
|
|
759
838
|
// 救援子进程的环境:显式构造,而不是把宿主 process.env 原样交给它。救援的
|
|
760
839
|
// 语义是「干净冷启动」,而启动器自己写进 process.env 的会话控制变量会把刚
|
|
761
840
|
// 崩掉的主 profile 的会话 id / 工作区目标带进救援——救援 profile 里并不存在
|
|
762
841
|
// 那个会话,dsh 会在恢复时再报一次错,正好污染最该干净的通道。其余宿主变量
|
|
763
842
|
// (PATH / DSH_HOME / 凭据…)是救援能工作的前提,照常继承。
|
|
764
843
|
// home 层补丁不在此列:它由 createRescueProfile 的干净性门禁单独把关。
|
|
765
|
-
const RESCUE_DROPPED_ENV = ['DSH_TUI_RESUME_SESSION', 'DSH_TUI_WORKSPACE_TARGET']
|
|
844
|
+
const RESCUE_DROPPED_ENV = ['DSH_TUI_RESUME_SESSION', 'DSH_TUI_RESUME_BACKEND', 'DSH_TUI_WORKSPACE_TARGET']
|
|
766
845
|
const rescueEnv = () => {
|
|
767
846
|
const env = { ...process.env }
|
|
768
847
|
for (const key of RESCUE_DROPPED_ENV) delete env[key]
|
|
@@ -779,7 +858,7 @@ const readLastRunRecord = () => {
|
|
|
779
858
|
try {
|
|
780
859
|
const parsed = JSON.parse(readFileSync(join(homedir(), '.dsh-tui', 'last-run.json'), 'utf8'))
|
|
781
860
|
if (parsed === null || typeof parsed !== 'object') return undefined
|
|
782
|
-
if (!
|
|
861
|
+
if (!isBackendIdSyntax(parsed.backendId)) return undefined
|
|
783
862
|
if (typeof parsed.sessionId !== 'string' || typeof parsed.cwd !== 'string' || typeof parsed.attemptId !== 'string') return undefined
|
|
784
863
|
if (typeof parsed.updatedAt !== 'number' || !Number.isFinite(parsed.updatedAt)) return undefined
|
|
785
864
|
return parsed
|
|
@@ -790,14 +869,19 @@ const readLastRunRecord = () => {
|
|
|
790
869
|
// 记录 → 重试 env:DSH_TUI_BACKEND 与一次性的 DSH_TUI_BACKEND_HANDOFF(后者
|
|
791
870
|
// 压过 Config 行)都设成记录里的内核;记录有可恢复的会话 id 才设
|
|
792
871
|
// DSH_TUI_RESUME_SESSION,否则删掉继承来的值,在该内核上冷启动。
|
|
872
|
+
// DSH_TUI_RESUME_BACKEND 记下这个 id 是**从哪个内核读来的**:记录里的内核可能
|
|
873
|
+
// 已经不在注册表里,boot 会回落 dsh,届时这个 id 必须被撤销而不是交给 dsh
|
|
874
|
+
// (见 src/kernelPrefs.ts 的 resolveResumeTarget)。
|
|
793
875
|
const envFromLastRun = record => {
|
|
794
876
|
const env = { ...process.env }
|
|
795
877
|
env.DSH_TUI_BACKEND = record.backendId
|
|
796
878
|
env.DSH_TUI_BACKEND_HANDOFF = record.backendId
|
|
797
879
|
if (typeof record.sessionId === 'string' && record.sessionId.trim() !== '') {
|
|
798
880
|
env.DSH_TUI_RESUME_SESSION = record.sessionId
|
|
881
|
+
env.DSH_TUI_RESUME_BACKEND = record.backendId
|
|
799
882
|
} else {
|
|
800
883
|
delete env.DSH_TUI_RESUME_SESSION
|
|
884
|
+
delete env.DSH_TUI_RESUME_BACKEND
|
|
801
885
|
}
|
|
802
886
|
return env
|
|
803
887
|
}
|
|
@@ -817,13 +901,34 @@ const readBackendLastSession = backendId => {
|
|
|
817
901
|
return ''
|
|
818
902
|
}
|
|
819
903
|
}
|
|
904
|
+
|
|
905
|
+
// env 里的后端选择:先按 boot 侧 parseBackendId 的规则**归一**(trim + 小写)再判定。
|
|
906
|
+
// 拿原始值判定会让两侧分歧:`DSH_TUI_BACKEND=Codex` 时 boot 归一后起 codex,启动器
|
|
907
|
+
// 却当它没命中而读 dsh 的 resume.txt——codex 便拿着 DSH 的会话 id 去恢复(必报错)。
|
|
908
|
+
// 归一后 `dsh` 与非法/空值同样走 resume.txt 分支。
|
|
909
|
+
const backendChoiceFromEnv = () => {
|
|
910
|
+
const raw = process.env.DSH_TUI_BACKEND
|
|
911
|
+
if (typeof raw !== 'string') return undefined
|
|
912
|
+
const id = raw.trim().toLowerCase()
|
|
913
|
+
return isBackendIdSyntax(id) && id !== 'dsh' ? id : undefined
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
// 安全模式重试标记(与 src/kernelPrefs.ts 的 RESUME_RETRY_ENV 同一个字面量):重试
|
|
917
|
+
// 的目标派生自 last-run.json,而记录里的内核可能已经不在注册表里、boot 会回落 dsh
|
|
918
|
+
// 并撤销这个目标。重试是用户最后的退路,所以带这个标记的那次启动撤销后降级为告警 +
|
|
919
|
+
// 冷启动,而不是报错退出。一次性:boot 读到即从 process.env 删除,不传给子进程。
|
|
920
|
+
const RESUME_RETRY_ENV = 'DSH_TUI_RESUME_RETRY'
|
|
921
|
+
|
|
820
922
|
// 安全模式「重试正常启动」的环境(菜单选项 1,首启 fallback 与 `safe` 共用):
|
|
821
923
|
// 1. 本次启动之后写下的最后运行记录:崩溃时实际在跑的内核与会话,压过
|
|
822
924
|
// env 里的 --resume(内核切换是用户更新的选择)。
|
|
823
925
|
// 2. 没有这样的记录(崩得太早,或旧版本不写):env 里已有
|
|
824
926
|
// DSH_TUI_RESUME_SESSION 就照用;否则按 env 的后端读它的上次会话
|
|
825
927
|
// (resume.txt 或对应后端偏好文件),读不到就冷启动。
|
|
826
|
-
|
|
928
|
+
// 三条分支派生出来的目标都带上 RESUME_RETRY_ENV:它们是"回到崩溃前"的重试,撤销
|
|
929
|
+
// 只能降级为冷启动,不能把用户最后的退路一起关掉。
|
|
930
|
+
const resumeEnvForRetry = () => ({ ...resumeEnvForRetryTarget(), [RESUME_RETRY_ENV]: '1' })
|
|
931
|
+
const resumeEnvForRetryTarget = () => {
|
|
827
932
|
const chain = launchChain
|
|
828
933
|
const record = readLastRunRecord()
|
|
829
934
|
if (record !== undefined && chain !== null && record.updatedAt >= chain.startedAt) {
|
|
@@ -831,8 +936,13 @@ const resumeEnvForRetry = () => {
|
|
|
831
936
|
}
|
|
832
937
|
if (process.env.DSH_TUI_RESUME_SESSION !== undefined) return process.env
|
|
833
938
|
let target = ''
|
|
834
|
-
|
|
835
|
-
|
|
939
|
+
// 与裸 --resume 同理:这两个目标都是**派生**的,来源内核要一并记下,boot 回落
|
|
940
|
+
// 到别的内核时才撤得掉(显式 marker 走上面那条 return,不带来源)。
|
|
941
|
+
let source = 'dsh'
|
|
942
|
+
const backendChoice = backendChoiceFromEnv()
|
|
943
|
+
if (backendChoice !== undefined) {
|
|
944
|
+
target = readBackendLastSession(backendChoice)
|
|
945
|
+
source = backendChoice
|
|
836
946
|
} else {
|
|
837
947
|
try {
|
|
838
948
|
target = readFileSync(join(homedir(), '.dsh-tui', 'resume.txt'), 'utf8').trim()
|
|
@@ -840,7 +950,9 @@ const resumeEnvForRetry = () => {
|
|
|
840
950
|
// 没有历史会话可恢复——静默冷启动。
|
|
841
951
|
}
|
|
842
952
|
}
|
|
843
|
-
return target === ''
|
|
953
|
+
return target === ''
|
|
954
|
+
? process.env
|
|
955
|
+
: { ...process.env, DSH_TUI_RESUME_SESSION: target, DSH_TUI_RESUME_BACKEND: source }
|
|
844
956
|
}
|
|
845
957
|
|
|
846
958
|
// TTY 判定:询问与菜单都要求 stdin/stdout 均可交互(readline 需要 stdin,
|
|
@@ -1385,14 +1497,8 @@ if (!runningInsideProfile && ownVersion !== undefined && process.env.DSH_TUI_NO_
|
|
|
1385
1497
|
forwardExit(child)
|
|
1386
1498
|
} else {
|
|
1387
1499
|
// ─── profile 副本(或源码运行):完整启动逻辑 ─────────────────────────────
|
|
1388
|
-
// dsh CLI
|
|
1389
|
-
|
|
1390
|
-
const probe = spawnSync(...cmd('dsh', ['--version']), { stdio: 'pipe', ...shellOpt })
|
|
1391
|
-
if (probe.error || probe.status !== 0) {
|
|
1392
|
-
console.error(msg('noDsh'))
|
|
1393
|
-
process.exit(1)
|
|
1394
|
-
}
|
|
1395
|
-
}
|
|
1500
|
+
// dsh CLI 预检:异步起,结果在要起 dsh 的出口才消费(见 probeDsh)。
|
|
1501
|
+
void probeDsh()
|
|
1396
1502
|
|
|
1397
1503
|
let installedVersion
|
|
1398
1504
|
try {
|
|
@@ -1417,8 +1523,12 @@ if (!runningInsideProfile && ownVersion !== undefined && process.env.DSH_TUI_NO_
|
|
|
1417
1523
|
if (!runningInsideProfile) checkProfileAlignment(installedVersion)
|
|
1418
1524
|
|
|
1419
1525
|
// --resume / 工作区目标拦截(launcher 契约,见 src/sessionHistory.ts)。
|
|
1420
|
-
|
|
1526
|
+
// sourceBackend 只在**派生**目标时给出(读的是那个内核的上次会话);显式敲的
|
|
1527
|
+
// id 传 undefined,把来源标记删掉——它归用户管,启动器不替它作证。
|
|
1528
|
+
const setResumeEnv = (sessionId, sourceBackend) => {
|
|
1421
1529
|
process.env.DSH_TUI_RESUME_SESSION = sessionId
|
|
1530
|
+
if (sourceBackend === undefined) delete process.env.DSH_TUI_RESUME_BACKEND
|
|
1531
|
+
else process.env.DSH_TUI_RESUME_BACKEND = sourceBackend
|
|
1422
1532
|
}
|
|
1423
1533
|
const readLastResumeTarget = () => {
|
|
1424
1534
|
try {
|
|
@@ -1466,8 +1576,13 @@ if (!runningInsideProfile && ownVersion !== undefined && process.env.DSH_TUI_NO_
|
|
|
1466
1576
|
if (a === '--backend' || a.startsWith('--backend=')) {
|
|
1467
1577
|
const backend = a.startsWith('--backend=') ? a.slice('--backend='.length).trim() : (argv[i + 1] ?? '').trim()
|
|
1468
1578
|
if (a === '--backend' && argv[i + 1] !== undefined) i += 1
|
|
1469
|
-
|
|
1470
|
-
|
|
1579
|
+
// 只挡语法非法:合法但没装的 id(插件后端、或拼错的 id)进 TUI 后由 boot
|
|
1580
|
+
// 告警并回落 dsh——启动器拿不到 profile 里装了什么(P0 D1 的已知代价,
|
|
1581
|
+
// Stage C 的 /plugin 会让启动器读已装清单后恢复"装前即报错")。
|
|
1582
|
+
if (!isBackendIdSyntax(backend)) {
|
|
1583
|
+
console.error(lang === 'zh'
|
|
1584
|
+
? `非法的 --backend:${backend}(后端 id 只能是小写字母、数字与连字符,最长 32 字符;内置 ${BUILTIN_BACKEND_IDS.join(' / ')},插件后端需已安装)`
|
|
1585
|
+
: `Invalid --backend: ${backend} (a backend id is lowercase letters, digits and dashes, at most 32 characters; built-in: ${BUILTIN_BACKEND_IDS.join(' or ')} — a plugin backend must be installed)`)
|
|
1471
1586
|
process.exit(2)
|
|
1472
1587
|
}
|
|
1473
1588
|
process.env.DSH_TUI_BACKEND = backend
|
|
@@ -1494,10 +1609,40 @@ if (!runningInsideProfile && ownVersion !== undefined && process.env.DSH_TUI_NO_
|
|
|
1494
1609
|
}
|
|
1495
1610
|
|
|
1496
1611
|
// 按出现顺序重放 --resume:裸 --resume 时 DSH 读 resume.txt(契约不变),
|
|
1497
|
-
//
|
|
1612
|
+
// 其他内核读各自的上次会话。派生出来的目标同时记下**来源内核**
|
|
1613
|
+
// (DSH_TUI_RESUME_BACKEND),boot 若回落到别的内核就撤销它;显式给出的 id 不
|
|
1614
|
+
// 带来源,原样透传。
|
|
1615
|
+
// 裸请求**派生不出目标就是失败**(roadmap §6 第 11 条,B-2a):以前这里不设任何
|
|
1616
|
+
// env、随后把 --continue 交给下游,等于静默冷启动。只有最后那次请求算数(与
|
|
1617
|
+
// 上面"每个 flag 都设一次、最后者胜"一致),被后面的显式 id 顶掉的裸 flag 不报错。
|
|
1618
|
+
let bareWithoutTarget = ''
|
|
1498
1619
|
for (const flag of resumeFlags) {
|
|
1499
|
-
const
|
|
1500
|
-
if (
|
|
1620
|
+
const backendChoice = backendChoiceFromEnv()
|
|
1621
|
+
if (flag !== null) {
|
|
1622
|
+
setResumeEnv(flag, undefined)
|
|
1623
|
+
bareWithoutTarget = ''
|
|
1624
|
+
continue
|
|
1625
|
+
}
|
|
1626
|
+
// 没有 --backend 时裸 --resume 读的是 DSH 的 resume.txt,来源即 dsh:内存里
|
|
1627
|
+
// 记着的内核(kernel.json)可能把它顶掉,那时这个 id 同样不该跟过去。
|
|
1628
|
+
const sourceBackend = backendChoice ?? 'dsh'
|
|
1629
|
+
const sessionId = backendChoice !== undefined ? readBackendLastSession(backendChoice) : readLastResumeTarget()
|
|
1630
|
+
if (sessionId) {
|
|
1631
|
+
setResumeEnv(sessionId, sourceBackend)
|
|
1632
|
+
bareWithoutTarget = ''
|
|
1633
|
+
} else {
|
|
1634
|
+
bareWithoutTarget = sourceBackend
|
|
1635
|
+
}
|
|
1636
|
+
}
|
|
1637
|
+
// Keep the final bare request until boot knows the effective backend. A
|
|
1638
|
+
// missing/foreign marker must not erase it. --continue takes no id, so the
|
|
1639
|
+
// next prompt token cannot accidentally become a resume target.
|
|
1640
|
+
if (resumeFlags.at(-1) === null) {
|
|
1641
|
+
if (bareWithoutTarget !== '') {
|
|
1642
|
+
console.error(msg('resumeNoLastSession')(bareWithoutTarget))
|
|
1643
|
+
process.exit(1)
|
|
1644
|
+
}
|
|
1645
|
+
args.unshift('--continue')
|
|
1501
1646
|
}
|
|
1502
1647
|
|
|
1503
1648
|
// 启动:被委托场景下本副本自己的版本即对齐诊断所见的启动器代际。
|
|
@@ -1508,7 +1653,28 @@ if (!runningInsideProfile && ownVersion !== undefined && process.env.DSH_TUI_NO_
|
|
|
1508
1653
|
// DSH consumes its own --; only the app tail belongs behind it. Preserve
|
|
1509
1654
|
// the app-level separator too, and replay this same argv on a safe retry.
|
|
1510
1655
|
const firstArgs = [...hostArgs, ...(args.length > 0 ? ['--', ...args] : [])]
|
|
1656
|
+
|
|
1657
|
+
// 内核分流(docs/standalone-host-design.md):默认所有内核都走本包入口,由入口
|
|
1658
|
+
// 判定内核(src/hostEntryRoute.ts)。DSH_TUI_HOST_ENTRY=0 让所有内核回到
|
|
1659
|
+
// `dsh --profile`;dsh 自己的 hostArgs(--version、--dump-config* 等)始终交给 dsh。
|
|
1660
|
+
const hostEntry = join(ownDir, 'lib', 'types', 'dsh-adapter', 'host-entry.js')
|
|
1661
|
+
const hostEntryEnabled = process.env.DSH_TUI_HOST_ENTRY !== '0' && existsSync(hostEntry)
|
|
1511
1662
|
// 必须在首次 spawn 之前:本次启动的 TUI 写的记录都晚于这个时刻。
|
|
1512
1663
|
noteLaunchChain()
|
|
1513
|
-
|
|
1664
|
+
if (hostEntryEnabled && hostArgs.length === 0) {
|
|
1665
|
+
// 替身进程经它重起(src/update.ts restartArgv)。只在入口路线设置:带 hostArgs
|
|
1666
|
+
// (如 --patch)的 `dsh --profile` 启动重起时须原样重放整条 dsh argv。
|
|
1667
|
+
process.env.DSH_TUI_HOST_ENTRY_PATH = hostEntry
|
|
1668
|
+
process.env.DSH_TUI_PROFILE ??= PROFILE
|
|
1669
|
+
// The in-process DSH kernel reads the bundled guide skills like `dsh` does.
|
|
1670
|
+
const result = await startEntrySession(hostEntry, args, withGuideSkillDir(process.env))
|
|
1671
|
+
// 没有 dsh CLI:安全模式与排查提示都指向不存在的 `dsh --profile`(DSH 内核下
|
|
1672
|
+
// 入口已打印 noDsh),原样退出。
|
|
1673
|
+
if (result.kind === 'exit' && result.code !== 0 && !(await probeDsh())) process.exit(result.code)
|
|
1674
|
+
settleFirstResult(result, firstArgs)
|
|
1675
|
+
} else {
|
|
1676
|
+
// `dsh --profile` 出口:hostArgs,或入口被关闭的非默认路径。
|
|
1677
|
+
await requireDsh()
|
|
1678
|
+
settleFirstResult(await startDshSession(firstArgs), firstArgs)
|
|
1679
|
+
}
|
|
1514
1680
|
}
|
package/cordis.patch.yml
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# restates every key it owns (see the dsh-base patch for the shared
|
|
8
8
|
# defaults). The dsh-base core rows that need no dsh-tui value — tools,
|
|
9
9
|
# sandbox/approval policy, skills, goal, plan mode, workspace context,
|
|
10
|
-
# telemetry — are inherited
|
|
10
|
+
# telemetry — are inherited unchanged.
|
|
11
11
|
|
|
12
12
|
# ── surface-specific values over the dsh-base layer ─────────────────────────
|
|
13
13
|
|
|
@@ -54,53 +54,6 @@
|
|
|
54
54
|
config:
|
|
55
55
|
agents: []
|
|
56
56
|
|
|
57
|
-
# Preserve the TUI's opt-in privacy stance across the 0.1.2 base default
|
|
58
|
-
# change to FEEDBACK_ONLY. An explicit DSH_TELEMETRY_MODE still wins. This
|
|
59
|
-
# restates the whole 0.1.2 config because include patches replace config
|
|
60
|
-
# objects rather than merging them. The 0.2.0 base moved the collector to
|
|
61
|
-
# dsh-otel-collector and added maxRequestBytes; older cohorts keep the
|
|
62
|
-
# endpoint (and the key set) their base shipped, so both follow the
|
|
63
|
-
# installed package version.
|
|
64
|
-
- id: session-telemetry-otel
|
|
65
|
-
config: !!js >-
|
|
66
|
-
(() => {
|
|
67
|
-
let url = 'https://dsh-otel-collector.deepseeksvc.com/v1/logs'
|
|
68
|
-
let modern = false
|
|
69
|
-
try {
|
|
70
|
-
const require = process.getBuiltinModule('node:module').createRequire(ctx.baseUrl)
|
|
71
|
-
const fs = process.getBuiltinModule('node:fs')
|
|
72
|
-
const manifest = require.resolve('@deepseek-ai/dsh-session-telemetry-otel/package.json')
|
|
73
|
-
const version = String(JSON.parse(fs.readFileSync(manifest, 'utf8')).version ?? '')
|
|
74
|
-
const match = /^(\d+)\.(\d+)\./u.exec(version)
|
|
75
|
-
modern = match === null || Number(match[1]) > 0 || Number(match[2]) >= 2
|
|
76
|
-
if (!modern) url = 'https://harness-telemetry.deepseeksvc.com/v1/logs'
|
|
77
|
-
} catch {}
|
|
78
|
-
return {
|
|
79
|
-
mode: process.env.DSH_TELEMETRY_MODE || 'DISABLED',
|
|
80
|
-
shutdownTimeoutMillis: 3000,
|
|
81
|
-
// 0.2.0's base config caps one request at 4 MB; the older plugin's
|
|
82
|
-
// schema has no such key, so only a probed 0.2+ host gets it.
|
|
83
|
-
...(modern ? { maxRequestBytes: 4000000 } : {}),
|
|
84
|
-
exporter: {
|
|
85
|
-
url: process.env.DSH_TELEMETRY_OTLP_URL ?? url,
|
|
86
|
-
compression: 'gzip',
|
|
87
|
-
timeoutMillis: 1000,
|
|
88
|
-
},
|
|
89
|
-
processor: {
|
|
90
|
-
scheduledDelayMillis: 10000,
|
|
91
|
-
maxQueueSize: 2048,
|
|
92
|
-
maxExportBatchSize: 2048,
|
|
93
|
-
exportTimeoutMillis: 1500,
|
|
94
|
-
},
|
|
95
|
-
}
|
|
96
|
-
})()
|
|
97
|
-
|
|
98
|
-
# The 0.1.2 base sends the active Loader package inventory on official
|
|
99
|
-
# DeepSeek requests by default. TUI keeps that diagnostic metadata opt-in.
|
|
100
|
-
- id: plugin-package-inventory-deepseek
|
|
101
|
-
config:
|
|
102
|
-
enabled: false
|
|
103
|
-
|
|
104
57
|
# ── agent presets (issue #8) ────────────────────────────────────────────────
|
|
105
58
|
#
|
|
106
59
|
# The model-facing plugin set moves INTO the preset registry: every
|
|
@@ -218,7 +171,9 @@
|
|
|
218
171
|
|
|
219
172
|
# Windows has no sandbox confinement backend yet (sandbox-local's win32
|
|
220
173
|
# chain is empty); use danger-full-access on Windows so bash commands can
|
|
221
|
-
# run. Other platforms keep the base workspace-write default.
|
|
174
|
+
# run. Other platforms keep the base workspace-write default. DSH_PERMISSION_MODE
|
|
175
|
+
# is the INITIAL state of a launch — the remembered /permission pick
|
|
176
|
+
# (~/.dsh-tui/permission.json) outranks it whenever it is not set.
|
|
222
177
|
- id: sandbox-policy
|
|
223
178
|
config:
|
|
224
179
|
mode: !!js "process.platform === 'win32' ? 'danger-full-access' : (process.env.DSH_PERMISSION_MODE ?? 'workspace-write')"
|
|
@@ -467,6 +422,9 @@
|
|
|
467
422
|
# open. (The comment sits below the inject line:
|
|
468
423
|
# verify-workspace-attachment.mjs asserts the name→inject distance.)
|
|
469
424
|
config:
|
|
425
|
+
# `provider` + `model` are the deployment DEFAULT route (used until a
|
|
426
|
+
# `/model` pick is persisted in ~/.dsh-tui/model.json, which then wins
|
|
427
|
+
# whole); a half-pinned pair is ignored outright (issue #67).
|
|
470
428
|
provider: deepseek-official
|
|
471
429
|
# Alt-screen fullscreen 布局:应用内鼠标选区(选择即复制, OSC 52 +
|
|
472
430
|
# wl-copy/xclip/xsel 兜底)、滚轮滚动、双击选词/三击选行。出厂默认开启,
|
|
@@ -479,10 +437,15 @@
|
|
|
479
437
|
terminalImages: true
|
|
480
438
|
# diffLayout: auto
|
|
481
439
|
# mermaidDiagrams: true
|
|
440
|
+
# 任务完成通知:off / unfocused(默认)/ always;方式:auto(默认)/ osc9 / bel。
|
|
441
|
+
# taskNotifications: unfocused
|
|
442
|
+
# notificationMethod: auto
|
|
482
443
|
# 回复中 LaTeX 公式的显示方式:auto(默认,目前为 Unicode)/ image(支持图形的终端里块级公式显示为图片)/ unicode / source(保留源码)。/settings 可实时改。
|
|
483
444
|
# mathRendering: auto
|
|
484
445
|
# 每个请求实际生效的推理强度,按当前路由的 adapter 档位校验
|
|
485
446
|
#(deepseek: off/low/high/max);非法值回落 adapter 默认。
|
|
447
|
+
# 这是部署默认值:上一次 /effort 的持久化选择(~/.dsh-tui/effort.json)
|
|
448
|
+
# 优先于它,它只决定"还没有选择过"的会话。
|
|
486
449
|
effort: max
|
|
487
450
|
# Shift+Tab session-mode cycle (array order IS the cycle order;
|
|
488
451
|
# absent → the built-in default/plan/full trio below). Each entry
|
|
@@ -503,9 +466,10 @@
|
|
|
503
466
|
# plan: false
|
|
504
467
|
# sandbox: danger-full-access
|
|
505
468
|
# approval: never
|
|
506
|
-
#
|
|
507
|
-
#
|
|
508
|
-
#
|
|
469
|
+
# Deployment default for the Agent preset: the persisted `/preset`
|
|
470
|
+
# preference (~/.dsh-tui/agent-preset.json) outranks it, and
|
|
471
|
+
# DSH_TUI_PRESET (this run's explicit instruction) outranks both; the
|
|
472
|
+
# roster default (standard) closes the chain.
|
|
509
473
|
preset: !!js process.env.DSH_TUI_PRESET ?? undefined
|
|
510
474
|
workspace: !!js process.env.DSH_TUI_WORKSPACE_TARGET ?? undefined
|
|
511
475
|
sessionId: !!js process.env.DSH_TUI_RESUME_SESSION ?? undefined
|
package/cordis.yml
CHANGED
|
@@ -64,12 +64,16 @@
|
|
|
64
64
|
# 以下为 /settings 可改的显示设置;每项说明与默认值见应用内 /settings 屏。
|
|
65
65
|
terminalImages: true
|
|
66
66
|
# mermaidDiagrams: true
|
|
67
|
+
# 任务完成通知:off / unfocused(默认)/ always;方式:auto(默认)/ osc9 / bel。
|
|
68
|
+
# taskNotifications: unfocused
|
|
69
|
+
# notificationMethod: auto
|
|
67
70
|
# 回复中 LaTeX 公式的显示方式:auto(默认,目前为 Unicode)/ image(支持图形的终端里块级公式显示为图片)/ unicode / source(保留源码)。/settings 可实时改。
|
|
68
71
|
# mathRendering: auto
|
|
69
72
|
# Reasoning effort applied to every request, validated against the live
|
|
70
73
|
# route's adapter levels. An unlisted level falls back to the adapter
|
|
71
|
-
# default
|
|
72
|
-
#
|
|
74
|
+
# default. This is the deployment DEFAULT for sessions that carry no
|
|
75
|
+
# choice of their own: the persisted /effort pick (last session's level)
|
|
76
|
+
# outranks it, and it seeds the startup header/statusline.
|
|
73
77
|
effort: max
|
|
74
78
|
# Shift+Tab 会话模式循环(数组顺序即循环顺序;缺省为下面三档)。
|
|
75
79
|
# 每档可声明 plan(计划模式开/关)、sandbox(read-only/
|
|
@@ -18,7 +18,13 @@ You need:
|
|
|
18
18
|
entry or `/kernel`) and press Enter on the dim Claude row — the wizard
|
|
19
19
|
locates the profile directory and installs the pinned SDK via pnpm; the row
|
|
20
20
|
lights up when it finishes (standalone builds and profile-less launches get
|
|
21
|
-
manual instructions).
|
|
21
|
+
manual instructions). Before installing, the wizard pins the profile's pnpm
|
|
22
|
+
store to a stable path (storeDir: ../../.pnpm-store, written into
|
|
23
|
+
pnpm-workspace.yaml), so store drift caused by environment overrides (a
|
|
24
|
+
sandbox or relay that redirected XDG_DATA_HOME, and the like) cannot recur;
|
|
25
|
+
if the drift predates the install, the installer rebuilds the dependencies
|
|
26
|
+
automatically and retries — no manual cleanup needed. The manual equivalent,
|
|
27
|
+
run once in the dsh-tui profile
|
|
22
28
|
directory (`~/.dsh/profiles/dsh-tui`, or `$DSH_HOME/profiles/dsh-tui` when
|
|
23
29
|
`DSH_HOME` is set):
|
|
24
30
|
|
|
@@ -27,9 +33,16 @@ You need:
|
|
|
27
33
|
```
|
|
28
34
|
|
|
29
35
|
- A Claude credential; see "Signing in" below.
|
|
30
|
-
- The `claude` command is optional:
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
- The `claude` command is optional: dsh-TUI probes an **explicitly specified
|
|
37
|
+
executable path** (an environment variable, used as set, with no version check;
|
|
38
|
+
the variable name is in [Agent backends](agent-backend-design.md) (Chinese)) → a
|
|
39
|
+
`claude` on `PATH` → the native installer's directory under your home
|
|
40
|
+
(`%USERPROFILE%\.local\bin\claude.exe` on Windows, `~/.local/bin/claude` on
|
|
41
|
+
POSIX), and a `PATH` hit still wins; every candidate has to launch and report a
|
|
42
|
+
version before it is adopted (same version and session store as the CLI you
|
|
43
|
+
already use), and only when none does is the SDK's bundled binary used. When the
|
|
44
|
+
SDK is missing but a local Claude Code exists, the install wizard's confirmation
|
|
45
|
+
pane reports the CLI it found.
|
|
33
46
|
|
|
34
47
|
To pick the backend, use any of:
|
|
35
48
|
|
|
@@ -37,8 +50,13 @@ To pick the backend, use any of:
|
|
|
37
50
|
`/kernel` inside a session, which open the kernel picker. Picking the other
|
|
38
51
|
kernel remembers the choice (`~/.dsh-tui/kernel.json`) and restarts dsh-TUI
|
|
39
52
|
into a new session on it; the old session stays in `/resume`. A running turn
|
|
40
|
-
blocks the switch. Without the SDK
|
|
41
|
-
|
|
53
|
+
blocks the switch. Without the SDK the picker marks Claude as *Not installed*;
|
|
54
|
+
an undetected credential does **not** block the pick — a key may perfectly well
|
|
55
|
+
live where detection cannot see it (the Claude settings' `env`, an
|
|
56
|
+
`apiKeyHelper`, a relay channel). The row stays selectable (the bottom-right
|
|
57
|
+
plate never shows sign-in state; the picker's subtitle says *Not signed in*).
|
|
58
|
+
The CLI applies its own configuration after start; `/login` covers a
|
|
59
|
+
subscription sign-in in-session, `/channel` the relay route.
|
|
42
60
|
- `dsh-tui --backend claude` (this launch only).
|
|
43
61
|
- `backend: claude` in the dsh-tui config row.
|
|
44
62
|
|
|
@@ -98,7 +116,7 @@ Works, served by Claude:
|
|
|
98
116
|
Not available (hidden from completion; typing one shows a notice and nothing is
|
|
99
117
|
sent to the model): `/tree`, `/agentview`, `/bg`, `/home`, `/workspace`,
|
|
100
118
|
`/preset`, `/provider`, `/balance`, `/config`, `/reload`,
|
|
101
|
-
`/setup`, `/migrate`, `/skills`, `/
|
|
119
|
+
`/setup`, `/migrate`, `/skills`, `/plugin`, `/hooks`, `/add-dir`,
|
|
102
120
|
`/goal` (Claude has no goal capability). Other commands the DSH composition
|
|
103
121
|
registers (such as `/plan`) do not appear either.
|
|
104
122
|
|
|
@@ -151,6 +169,12 @@ a notice, so a cloned repository cannot silently switch off every check.
|
|
|
151
169
|
conversation continues), `Ctrl+R` renames, `Ctrl+D` deletes; the open session and
|
|
152
170
|
one another dsh-TUI terminal is using cannot be deleted. Pins are kept per
|
|
153
171
|
backend.
|
|
172
|
+
Reopening or restarting first paints the last complete list while the SDK refreshes it.
|
|
173
|
+
First-paint snapshots are isolated by Claude configuration directory. Without a snapshot,
|
|
174
|
+
up to 32 recent sessions from the SDK's default project scope appear first, including
|
|
175
|
+
the current directory and Git worktrees in the same repository, then the complete
|
|
176
|
+
project and other projects. A failed all-projects read retains the project's worktree
|
|
177
|
+
sessions. Failed reads preserve the last complete snapshot.
|
|
154
178
|
- From a shell: `dsh-tui --backend claude --resume <id>`; without an id it resumes
|
|
155
179
|
the last Claude session this install used. dsh-TUI prints that command on exit.
|
|
156
180
|
A session another dsh-TUI terminal has open is refused, and a `--resume` that
|
|
@@ -193,6 +217,19 @@ their prompts carried.
|
|
|
193
217
|
## Known limitations
|
|
194
218
|
|
|
195
219
|
- One dsh-TUI process runs one backend; switching restarts through `/kernel`.
|
|
220
|
+
- On Claude, `dsh-tui` starts the TUI from the package's own entry and
|
|
221
|
+
composes only a light profile (this package plus the third-party plugins the
|
|
222
|
+
profile declares, without DSH's agent core): the screen appears first and sending waits until
|
|
223
|
+
the session has opened. Until then Enter keeps the draft and says the kernel
|
|
224
|
+
is still starting, and a command-line prompt is sent once the session opens;
|
|
225
|
+
a failed open says why (the landing page closes to show it) and `/new`
|
|
226
|
+
retries. Third-party
|
|
227
|
+
DSH/Cordis plugins (themes, panels, decision hooks) load and join once the
|
|
228
|
+
screen is up; a plugin that needs DSH's own services (agents, tools, the LLM
|
|
229
|
+
layer) does not activate on this kernel. `DSH_TUI_HOST_ENTRY=0` goes back to
|
|
230
|
+
starting through `dsh --profile dsh-tui`. (The DSH kernel starts from the
|
|
231
|
+
package's entry by default too, but composes the whole DSH profile into that
|
|
232
|
+
process.)
|
|
196
233
|
- In a Claude session the side panel's workspace panel reports it is unsupported
|
|
197
234
|
and the trajectory panel stays empty.
|
|
198
235
|
- No `/add-dir`; the refusal dialog offers only *Retry* and *Cancel*; an MCP
|