@deepseek-harness-tui/dsh-tui 0.14.0 → 0.15.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 +73 -14
- 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 +34 -7
- package/guide/dsh-tui-guide/codex-backend.md +17 -2
- package/guide/dsh-tui-guide/configuration.en.md +129 -16
- package/guide/dsh-tui-guide/configuration.md +110 -14
- package/guide/dsh-tui-guide/interaction.en.md +57 -24
- package/guide/dsh-tui-guide/interaction.md +42 -19
- package/guide/dsh-tui-guide/plugins.en.md +36 -3
- package/guide/dsh-tui-guide/plugins.md +21 -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 +51 -20
- package/guide/dsh-tui-guide/user-guide.md +41 -21
- package/lib/settings.json +103 -9
- 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 +3 -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-settings.d.ts +9 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +50 -12
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +21 -0
- package/lib/types/adapter/ports/channel-view.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/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/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/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 +66 -34
- 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.js +4 -4
- 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/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/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 +5 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +47 -8
- 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 +20 -6
- 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.map +1 -1
- package/lib/types/components/LogoV2.js +9 -6
- 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 +18 -5
- 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/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 +58 -118
- 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/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.map +1 -1
- package/lib/types/components/launchpadLayout.js +2 -2
- 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/SidePanelColumn.d.ts +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.js +2 -1
- 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/btw/BtwComposer.d.ts +4 -2
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwComposer.js +12 -4
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +59 -15
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadScene.js +4 -2
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadView.js +12 -6
- package/lib/types/components/sidePanel/companion/CompanionPanel.js +2 -2
- package/lib/types/components/sidePanel/types.d.ts +1 -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/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/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 +20 -0
- package/lib/types/dsh-adapter/admission-loader.d.ts.map +1 -0
- package/lib/types/dsh-adapter/admission-loader.js +256 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -1
- package/lib/types/dsh-adapter/backend/translate.js +3 -0
- 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-contribution.d.ts +26 -0
- package/lib/types/dsh-adapter/backend-contribution.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend-contribution.js +37 -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 +285 -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 +92 -46
- 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 +16 -3
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +18 -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 +16 -0
- 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 +7 -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 +3 -0
- 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 +318 -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 +41 -22
- 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 +1 -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 +138 -8
- 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 +40 -28
- 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/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 +56 -27
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +15 -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 +2 -2
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +1 -0
- package/lib/types/dsh-adapter/channel/state.d.ts +37 -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 +66 -6
- 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 +1 -1
- package/lib/types/dsh-adapter/channel/transcript.js +1 -1
- 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/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 +1 -1
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +15 -0
- package/lib/types/dsh-adapter/entry-slot.d.ts +36 -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 +221 -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 +53 -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 +76 -0
- package/lib/types/dsh-adapter/host-dsh.d.ts +106 -0
- package/lib/types/dsh-adapter/host-dsh.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-dsh.js +466 -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 +228 -0
- package/lib/types/dsh-adapter/index.d.ts +55 -18
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +59 -7
- 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/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/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 +35 -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 +21 -0
- package/lib/types/dsh-adapter/plugin-declaration.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-declaration.js +53 -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-manager.d.ts +68 -0
- package/lib/types/dsh-adapter/plugin-manager.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-manager.js +51 -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 +870 -233
- package/lib/types/dsh-adapter/plugins-info.d.ts +44 -8
- package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugins-info.js +354 -34
- 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-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/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 +110 -8
- 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/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 +363 -1432
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +155 -385
- 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/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 +129 -16
- 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/permissionPrefs.d.ts +34 -0
- package/lib/types/permissionPrefs.d.ts.map +1 -0
- package/lib/types/permissionPrefs.js +61 -0
- package/lib/types/plugin-host.d.ts +1 -0
- package/lib/types/plugin-host.d.ts.map +1 -1
- 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 +22 -15
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +442 -272
- package/lib/types/screens/Launchpad.d.ts +27 -17
- package/lib/types/screens/Launchpad.d.ts.map +1 -1
- package/lib/types/screens/Launchpad.js +241 -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 +6 -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/chatOverlay.d.ts +11 -4
- 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/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/package.json +36 -6
- package/presets/winbash.mjs +716 -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
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { assertShadowPolicy } from '../../adapter/kernel/runtime.js';
|
|
2
2
|
import { t } from '../../i18n.js';
|
|
3
|
+
import { readPermissionPref, writePermissionPref } from '../../permissionPrefs.js';
|
|
3
4
|
import { modeDisplayName } from '../../sessionModes.js';
|
|
4
5
|
import { snapshotLiveSessionEvents } from '../compat/liveSession.js';
|
|
5
6
|
import { createModeActions, reportModeSwitchFailure } from './mode-actions.js';
|
|
6
7
|
import { createPermissionIdentity, foldPermissionPreset } from './mode-permission.js';
|
|
8
|
+
import { PERMISSION_PRESET_CUSTOM } from './permissions.js';
|
|
7
9
|
// Atom folds mirrored from mode-actions.ts: `createModeActions` does not
|
|
8
10
|
// export them, and the permission-aware derive below must reproduce its
|
|
9
11
|
// atom fallback exactly to stay the single source of the indicator.
|
|
@@ -90,6 +92,24 @@ export function createPermissionModeActions(ctx, state, deps) {
|
|
|
90
92
|
});
|
|
91
93
|
// An in-turn /plan off commits at pre-step, after the command has returned.
|
|
92
94
|
const explicitPlanExits = new WeakSet();
|
|
95
|
+
/** True while this composition is walking a session INTO plan mode — from
|
|
96
|
+
* the pre-plan identity capture until the plan atoms have been applied.
|
|
97
|
+
* The canonical preset the plan entry switches to is a transient working
|
|
98
|
+
* state (restored on exit), so the preference must not learn it. */
|
|
99
|
+
let planEntryInFlight = false;
|
|
100
|
+
/** Sessions the remembered permission was already seeded into (or decided
|
|
101
|
+
* against): one attempt per session object, rebinds stay quiet. */
|
|
102
|
+
const permissionPrefSeeded = new WeakSet();
|
|
103
|
+
/** Remember one durable permission identity for the next session (see
|
|
104
|
+
* permissionPrefs.ts). Undefined and custom identities carry no preset
|
|
105
|
+
* to remember; a failed write is a debug line, never user-facing. */
|
|
106
|
+
const persistPermissionPref = (value) => {
|
|
107
|
+
if (value === undefined || value === PERMISSION_PRESET_CUSTOM)
|
|
108
|
+
return;
|
|
109
|
+
if (!writePermissionPref(value)) {
|
|
110
|
+
ctx.logger.debug(`dsh-tui: permission preference write failed for "${value}"`);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
93
113
|
/** Re-derive the roster and the current mode. The roster rebuild rides on
|
|
94
114
|
* every refresh: a registry mount/unmount and a re-bind both land here. */
|
|
95
115
|
const refreshMode = () => {
|
|
@@ -131,6 +151,12 @@ export function createPermissionModeActions(ctx, state, deps) {
|
|
|
131
151
|
// canonicalization can append replacement events.
|
|
132
152
|
if (planChange && spec.plan === true && !planActive) {
|
|
133
153
|
permission.rememberPrePlanIdentity(session);
|
|
154
|
+
// The canonicalization below reseats the durable identity on the
|
|
155
|
+
// plan atoms (read-only/ask) until the exit restores it. Keep the
|
|
156
|
+
// preference on the identity the user actually sat on, and let the
|
|
157
|
+
// event observer below ignore the replacement while it is in flight.
|
|
158
|
+
persistPermissionPref(foldPermissionPreset(snapshotLiveSessionEvents(session)));
|
|
159
|
+
planEntryInFlight = true;
|
|
134
160
|
}
|
|
135
161
|
if (planChange && spec.plan === false) {
|
|
136
162
|
// An explicit switch away from plan owns its target mode; the
|
|
@@ -138,16 +164,27 @@ export function createPermissionModeActions(ctx, state, deps) {
|
|
|
138
164
|
explicitPlanExits.add(session);
|
|
139
165
|
permission.forgetPrePlanIdentity(session);
|
|
140
166
|
}
|
|
141
|
-
|
|
142
|
-
if (
|
|
167
|
+
try {
|
|
168
|
+
if (spec.permission !== undefined) {
|
|
169
|
+
if (!(await permission.applyPermissionIdentity(spec.permission)))
|
|
170
|
+
return;
|
|
171
|
+
persistPermissionPref(spec.permission);
|
|
172
|
+
}
|
|
173
|
+
else if (!(await permission.canonicalizeForMode(spec, session))) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
else if (spec.plan !== true) {
|
|
177
|
+
// A static mode the user cycled to owns its canonical preset
|
|
178
|
+
// identity (the plan spec's canonical form is transient instead).
|
|
179
|
+
persistPermissionPref(permission.canonicalPermissionForMode(spec, session));
|
|
180
|
+
}
|
|
181
|
+
if (!owner.current() || !binding.isCurrent(capture) || session !== agent.session)
|
|
143
182
|
return;
|
|
183
|
+
await base.applyMode(spec, capture);
|
|
144
184
|
}
|
|
145
|
-
|
|
146
|
-
|
|
185
|
+
finally {
|
|
186
|
+
planEntryInFlight = false;
|
|
147
187
|
}
|
|
148
|
-
if (!owner.current() || !binding.isCurrent(capture) || session !== agent.session)
|
|
149
|
-
return;
|
|
150
|
-
await base.applyMode(spec, capture);
|
|
151
188
|
if (!owner.current() || !binding.isCurrent(capture))
|
|
152
189
|
return;
|
|
153
190
|
const before = state.modeIndex;
|
|
@@ -175,8 +212,19 @@ export function createPermissionModeActions(ctx, state, deps) {
|
|
|
175
212
|
const sessionEvent = event;
|
|
176
213
|
base.onSessionEvent(subject, sessionEvent);
|
|
177
214
|
const type = sessionEvent.type;
|
|
178
|
-
if (type === 'permission/preset')
|
|
215
|
+
if (type === 'permission/preset') {
|
|
179
216
|
refreshMode();
|
|
217
|
+
// Every durable identity change on the bound session teaches the
|
|
218
|
+
// preference — including switches the official /permission command
|
|
219
|
+
// performed on its own (typed input, other UIs over the same
|
|
220
|
+
// registry) — except the two plan-transition shapes: the canonical
|
|
221
|
+
// preset a plan entry reseats to (in flight below) and any identity
|
|
222
|
+
// switched to while plan is active (the exit restore re-seats the
|
|
223
|
+
// pre-plan one, and that restore event lands here again).
|
|
224
|
+
if (!planEntryInFlight && !foldPlanActive(snapshotLiveSessionEvents(subject))) {
|
|
225
|
+
persistPermissionPref(foldPermissionPreset(snapshotLiveSessionEvents(subject)));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
180
228
|
if (type !== 'plan/mode' || sessionEvent.data.active !== false)
|
|
181
229
|
return;
|
|
182
230
|
const remembered = permission.prePlanPermissionIdentity(subject);
|
|
@@ -203,11 +251,93 @@ export function createPermissionModeActions(ctx, state, deps) {
|
|
|
203
251
|
});
|
|
204
252
|
});
|
|
205
253
|
};
|
|
254
|
+
/** The composition's default preset: the identity `dsh-permission-presets`
|
|
255
|
+
* pins into EVERY fresh session before it is published (`session/created` →
|
|
256
|
+
* `pinInitialPermission`), read fail-closed from the mounted service —
|
|
257
|
+
* undefined when it is absent or answers nothing usable. */
|
|
258
|
+
const compositionDefaultPreset = () => {
|
|
259
|
+
try {
|
|
260
|
+
const service = ctx.get('permissionPresets');
|
|
261
|
+
const value = service?.defaultPreset;
|
|
262
|
+
return typeof value === 'string' && value !== '' ? value : undefined;
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
return undefined;
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
/** Seed a session that never customized its permission planes with the
|
|
269
|
+
* persisted preference (permissionPrefs.ts): the last preset the user
|
|
270
|
+
* switched to, applied through the same official /permission path every
|
|
271
|
+
* manual switch takes. Never rejects.
|
|
272
|
+
*
|
|
273
|
+
* Holding permission-plane events is NOT evidence of a user choice: the
|
|
274
|
+
* composition pins `permission/preset` + `sandbox/mode` + `approval/policy`
|
|
275
|
+
* into every fresh session at creation. So a session only owns its planes
|
|
276
|
+
* when the log shows more than that pin — it ran a turn, or its durable
|
|
277
|
+
* identity is one the composition did not pin (`custom`, a preset a user
|
|
278
|
+
* switched to, a resumed log's own state). Everything else is untouched
|
|
279
|
+
* and seeds, which is what "starts where the last session ended" means.
|
|
280
|
+
*
|
|
281
|
+
* Yields to a DSH_PERMISSION_MODE launch pin (the composition's
|
|
282
|
+
* sandbox-policy/approval defaults came from it, so that invocation
|
|
283
|
+
* explicitly asked for that start state) and to shadow runtimes, which
|
|
284
|
+
* must not write durable session policy. */
|
|
285
|
+
const applyRememberedPermission = async () => {
|
|
286
|
+
try {
|
|
287
|
+
if (deps.runtime.mode === 'passive-shadow' || deps.runtime.mode === 'replay-shadow')
|
|
288
|
+
return;
|
|
289
|
+
const pinned = process.env.DSH_PERMISSION_MODE;
|
|
290
|
+
if (pinned !== undefined && pinned !== '')
|
|
291
|
+
return;
|
|
292
|
+
const pref = readPermissionPref();
|
|
293
|
+
if (pref === undefined)
|
|
294
|
+
return;
|
|
295
|
+
const agent = binding.agent;
|
|
296
|
+
const session = agent.session;
|
|
297
|
+
if (permissionPrefSeeded.has(session))
|
|
298
|
+
return;
|
|
299
|
+
const events = snapshotLiveSessionEvents(session);
|
|
300
|
+
const pinnedIdentity = compositionDefaultPreset();
|
|
301
|
+
let touchesPlanes = false;
|
|
302
|
+
for (const event of events) {
|
|
303
|
+
const known = event.type;
|
|
304
|
+
if (known === 'permission/preset' || known === 'sandbox/mode' || known === 'approval/policy') {
|
|
305
|
+
touchesPlanes = true;
|
|
306
|
+
}
|
|
307
|
+
else if (known === 'turn/start') {
|
|
308
|
+
// The session has been used: its planes are the ones it ran with,
|
|
309
|
+
// never this boot's preference.
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (touchesPlanes && (pinnedIdentity === undefined || foldPermissionPreset(events) !== pinnedIdentity))
|
|
314
|
+
return;
|
|
315
|
+
// Fail closed against the mounted roster: an identity this
|
|
316
|
+
// deployment does not offer must not be driven through /permission
|
|
317
|
+
// (it would surface as a boot-time switch failure).
|
|
318
|
+
const snapshot = roster.readSnapshot(agent);
|
|
319
|
+
if (snapshot === undefined || !snapshot.options.some(option => option.value === pref)) {
|
|
320
|
+
permissionPrefSeeded.add(session);
|
|
321
|
+
ctx.logger.debug(`dsh-tui: remembered permission preset "${pref}" is not on the mounted roster; skipped`);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
permissionPrefSeeded.add(session);
|
|
325
|
+
const ok = await permission.applyPermissionIdentity(pref);
|
|
326
|
+
if (ok && owner.current() && session === binding.agent.session) {
|
|
327
|
+
refreshMode();
|
|
328
|
+
state.emit();
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
ctx.logger.warn(`dsh-tui: remembered permission could not be applied: ${error instanceof Error ? error.message : String(error)}`);
|
|
333
|
+
}
|
|
334
|
+
};
|
|
206
335
|
return {
|
|
207
336
|
refreshMode,
|
|
208
337
|
cycleMode,
|
|
209
338
|
applyMode,
|
|
210
339
|
onSessionEvent,
|
|
340
|
+
applyRememberedPermission,
|
|
211
341
|
runPermissionPreset: name => permission.runPermissionPreset(name),
|
|
212
342
|
permission,
|
|
213
343
|
};
|
|
@@ -25,9 +25,13 @@ export declare function createModelActions(ctx: Context, state: Pick<ChannelStat
|
|
|
25
25
|
selection: ModelSelectionRef;
|
|
26
26
|
applyPreferredEffort: () => Promise<void>;
|
|
27
27
|
refreshEffortLevels: () => void;
|
|
28
|
-
listEfforts: (
|
|
28
|
+
listEfforts: (route?: {
|
|
29
|
+
provider: string;
|
|
30
|
+
model: string;
|
|
31
|
+
}) => Promise<{
|
|
29
32
|
efforts: readonly EffortOption[];
|
|
30
33
|
defaultEffort: string | undefined;
|
|
34
|
+
levelsFallback?: true;
|
|
31
35
|
}>;
|
|
32
36
|
setEffort: (id: string) => Promise<boolean>;
|
|
33
37
|
setDefaultEffort: (id: string | undefined) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-actions.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/model-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAMpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE1E,KAAK,OAAO,GAAG,iBAAiB,CAAA;AAEhC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,GAAG,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC,EAC3I,IAAI,EAAE;IACJ,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACpC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW,CAAC,CAAA;IAC/C,SAAS,EAAE,iBAAiB,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,IAAI,KAAK,CAAA;IACd,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC9B;6EACyE;IACzE,mBAAmB,IAAI,IAAI,CAAA;CAC5B;;
|
|
1
|
+
{"version":3,"file":"model-actions.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/model-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAMpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE1E,KAAK,OAAO,GAAG,iBAAiB,CAAA;AAEhC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,GAAG,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC,EAC3I,IAAI,EAAE;IACJ,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACpC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW,CAAC,CAAA;IAC/C,SAAS,EAAE,iBAAiB,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,IAAI,KAAK,CAAA;IACd,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC9B;6EACyE;IACzE,mBAAmB,IAAI,IAAI,CAAA;CAC5B;;gCAiGsC,OAAO,CAAC,IAAI,CAAC;+BAuDpB,IAAI;0BAqBD;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,cAAc,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC;oBA0BnJ,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;2BAqBxB,MAAM,GAAG,SAAS,KAAG,IAAI;4BAM1B,IAAI;sBAeV,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;;YAxOnB,MAAM;cAAQ,MAAM;;8BA6OzB,IAAI;0BACR,IAAI;;6BASD,IAAI;;uBAOJ,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;6BAQxB,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC;EAkChE"}
|
|
@@ -13,7 +13,7 @@ import { presetDisplayId, resolveCompatiblePreset, rosterOf } from '../preset-re
|
|
|
13
13
|
export function createModelActions(ctx, state, deps) {
|
|
14
14
|
const { owner, selection, notify } = deps;
|
|
15
15
|
const llmRuntime = ctx.get('llm');
|
|
16
|
-
let preferredEffort = deps.initialEffort
|
|
16
|
+
let preferredEffort = readEffortPref() ?? deps.initialEffort;
|
|
17
17
|
// Last fallback notice shown for a (preferred → applied) pair: bind fires on
|
|
18
18
|
// every session switch, so an unchanged downgrade must not re-toast.
|
|
19
19
|
let lastEffortFallbackNotice;
|
|
@@ -47,14 +47,16 @@ export function createModelActions(ctx, state, deps) {
|
|
|
47
47
|
deps.checkContextWarning();
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
|
-
/** Localized label of a standard ladder tier
|
|
51
|
-
*
|
|
50
|
+
/** Localized label of a standard ladder tier. The five names are the
|
|
51
|
+
* host's own vocabulary (`effort-tier-*`): they label a *route* that
|
|
52
|
+
* declares reasoning support without a tier list, whichever backend serves
|
|
53
|
+
* it. A backend that shows its own ladder carries its own copy (B-3). */
|
|
52
54
|
const STANDARD_EFFORT_LABEL_KEYS = {
|
|
53
|
-
low: '
|
|
54
|
-
medium: '
|
|
55
|
-
high: '
|
|
56
|
-
xhigh: '
|
|
57
|
-
max: '
|
|
55
|
+
low: 'effort-tier-low',
|
|
56
|
+
medium: 'effort-tier-medium',
|
|
57
|
+
high: 'effort-tier-high',
|
|
58
|
+
xhigh: 'effort-tier-xhigh',
|
|
59
|
+
max: 'effort-tier-max',
|
|
58
60
|
};
|
|
59
61
|
const standardEffortLabel = (id) => {
|
|
60
62
|
const key = STANDARD_EFFORT_LABEL_KEYS[id];
|
|
@@ -134,26 +136,18 @@ export function createModelActions(ctx, state, deps) {
|
|
|
134
136
|
state.reasoningEffort = shipped;
|
|
135
137
|
state.emit();
|
|
136
138
|
}
|
|
137
|
-
//
|
|
138
|
-
//
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
// OLD tier back on the wire while the readout above announces the model
|
|
143
|
-
// default. Drop the effort only: the provider/model half of the pin is
|
|
144
|
-
// this route's, not the stale tier's. No emit — setDefaultEffort reaches
|
|
145
|
-
// here through that same non-bind path, and nothing UI-visible reads this
|
|
146
|
-
// ref (it is the router's ModelSelectionRef, not the IDE ChannelSelection
|
|
147
|
-
// the status line shows); the readout above already emits when it moves.
|
|
139
|
+
// Existing agents retain their pin across reattachment, and /settings
|
|
140
|
+
// reaches this path without a bind. Remove an unsupported old effort
|
|
141
|
+
// while keeping the selected route; otherwise the wire would retain the
|
|
142
|
+
// old tier while the readout announces the model default. The ref is not
|
|
143
|
+
// UI state; the readout above already emits when it moves.
|
|
148
144
|
if (selection.current?.reasoningEffort !== undefined) {
|
|
149
145
|
selection.current = { provider: capture.provider, model: capture.model };
|
|
150
146
|
}
|
|
151
147
|
return;
|
|
152
148
|
}
|
|
153
|
-
// Dedupe gates ONLY the toast:
|
|
154
|
-
//
|
|
155
|
-
// early return here would ship the model default from the second session
|
|
156
|
-
// on (review C1). The status line shows the tier that actually ships.
|
|
149
|
+
// Dedupe gates ONLY the toast: a new Agent has a fresh selection, so the
|
|
150
|
+
// preference must apply even when the previous Agent used the same tier.
|
|
157
151
|
const fresh = lastEffortFallbackNotice?.preferred !== preferredEffort || lastEffortFallbackNotice.applied !== applied;
|
|
158
152
|
if (applied !== preferredEffort && fresh) {
|
|
159
153
|
lastEffortFallbackNotice = { preferred: preferredEffort, applied };
|
|
@@ -190,7 +184,24 @@ export function createModelActions(ctx, state, deps) {
|
|
|
190
184
|
notify(t('effort-switched', { name: effort.name }));
|
|
191
185
|
state.emit();
|
|
192
186
|
};
|
|
193
|
-
const listEfforts = async () => {
|
|
187
|
+
const listEfforts = async (route) => {
|
|
188
|
+
if (route !== undefined) {
|
|
189
|
+
const binding = deps.binding.capture();
|
|
190
|
+
if (llmRuntime === undefined || typeof llmRuntime.resolveModelInfo !== 'function')
|
|
191
|
+
return { efforts: [], defaultEffort: undefined };
|
|
192
|
+
// Preview is independent of the live effort operation: browsing the
|
|
193
|
+
// picker must neither invalidate a pending preference nor publish the
|
|
194
|
+
// candidate's context window/tiers into the current session.
|
|
195
|
+
const info = await llmRuntime.resolveModelInfo(route.provider, route.model);
|
|
196
|
+
if (!owner.current() || !deps.binding.isCurrent(binding))
|
|
197
|
+
return { efforts: [], defaultEffort: undefined };
|
|
198
|
+
return {
|
|
199
|
+
efforts: tiersOf(info.reasoning),
|
|
200
|
+
defaultEffort: typeof info.reasoning === 'object' && info.reasoning !== null ? info.reasoning.defaultEffort : undefined,
|
|
201
|
+
...(info.reasoning === true || (typeof info.reasoning === 'object' && info.reasoning !== null && info.reasoning.efforts === undefined)
|
|
202
|
+
? { levelsFallback: true } : {}),
|
|
203
|
+
};
|
|
204
|
+
}
|
|
194
205
|
const capture = captureEffort();
|
|
195
206
|
const resolved = await resolveEfforts(capture);
|
|
196
207
|
if (resolved === 'stale')
|
|
@@ -236,10 +247,11 @@ export function createModelActions(ctx, state, deps) {
|
|
|
236
247
|
};
|
|
237
248
|
/**
|
|
238
249
|
* Re-seat the future-sessions default reasoning effort. `id` is the settings
|
|
239
|
-
* user layer (
|
|
240
|
-
* an absent level re-derives the boot chain (
|
|
241
|
-
*
|
|
242
|
-
*
|
|
250
|
+
* user layer (an explicit value there outranks the persisted `/effort`
|
|
251
|
+
* choice); an absent level re-derives the boot chain (the persisted
|
|
252
|
+
* `/effort` choice → the cordis.yml `effort` deployment default). Also
|
|
253
|
+
* re-pins the live agent when its route offers the level, so the change
|
|
254
|
+
* lands on the next request. No-op when unchanged.
|
|
243
255
|
*/
|
|
244
256
|
const setDefaultEffort = (id) => {
|
|
245
257
|
const resolved = resolveEffortDefault(id, deps.initialEffort, readEffortPref());
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { Agent, ModelSelectionRef } from '@deepseek-ai/dsh-agent';
|
|
3
|
+
import { type ChannelOwner } from './owner.js';
|
|
4
|
+
/** Routing belongs to the live agent, including turns running while parked.
|
|
5
|
+
* The foreground facade follows the binding; each waterfall captures its own
|
|
6
|
+
* agent's ref so a later binding can never supply its route. */
|
|
7
|
+
export declare function createModelSelection(ctx: Context, deps: {
|
|
8
|
+
owner: ChannelOwner;
|
|
9
|
+
agent(): Agent;
|
|
10
|
+
}): {
|
|
11
|
+
selection: ModelSelectionRef;
|
|
12
|
+
bind: (agent: Agent, route: {
|
|
13
|
+
provider: string;
|
|
14
|
+
model: string;
|
|
15
|
+
}) => void;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=model-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-selection.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/model-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAEtE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAElE;;gEAEgE;AAChE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IACvD,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,IAAI,KAAK,CAAA;CACf;;kBAesB,KAAK,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAG,IAAI;EA2E9E"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { boundContextSummary, createUserMessage } from '@deepseek-ai/dsh-llm';
|
|
2
|
+
import { createChannelOwner } from './owner.js';
|
|
3
|
+
/** Routing belongs to the live agent, including turns running while parked.
|
|
4
|
+
* The foreground facade follows the binding; each waterfall captures its own
|
|
5
|
+
* agent's ref so a later binding can never supply its route. */
|
|
6
|
+
export function createModelSelection(ctx, deps) {
|
|
7
|
+
const entries = new Map();
|
|
8
|
+
const foreground = () => {
|
|
9
|
+
const entry = entries.get(deps.agent());
|
|
10
|
+
if (entry === undefined)
|
|
11
|
+
throw new Error('dsh-tui: model selection has not been bound');
|
|
12
|
+
return entry.ref;
|
|
13
|
+
};
|
|
14
|
+
const selection = {
|
|
15
|
+
get current() { return foreground().current; },
|
|
16
|
+
set current(value) { foreground().current = value; },
|
|
17
|
+
get assembled() { return foreground().assembled; },
|
|
18
|
+
set assembled(value) { foreground().assembled = value; },
|
|
19
|
+
};
|
|
20
|
+
deps.owner.own(ctx.on('agent/disposed', ({ agent }) => entries.get(agent)?.release()));
|
|
21
|
+
const bind = (agent, route) => {
|
|
22
|
+
deps.owner.assertActive();
|
|
23
|
+
if (entries.has(agent))
|
|
24
|
+
return;
|
|
25
|
+
const recorded = agent.session.requestHeader?.()?.config;
|
|
26
|
+
const hasCreatedRoute = agent.options?.provider !== undefined && agent.options.model !== undefined;
|
|
27
|
+
// Seeded children can deliberately replace the inherited header's route.
|
|
28
|
+
// Restore a recorded pin only when the caller actually adopted that route.
|
|
29
|
+
const usesRecordedRoute = recorded?.provider === route.provider && recorded?.model === route.model;
|
|
30
|
+
const ref = {
|
|
31
|
+
current: route.provider !== '' && route.model !== '' &&
|
|
32
|
+
(!hasCreatedRoute || (usesRecordedRoute &&
|
|
33
|
+
(route.provider !== agent.options.provider || route.model !== agent.options.model)))
|
|
34
|
+
? { ...route } : undefined,
|
|
35
|
+
assembled: undefined,
|
|
36
|
+
};
|
|
37
|
+
const lifetime = createChannelOwner();
|
|
38
|
+
lifetime.bind(deps.owner.current);
|
|
39
|
+
let assemblyOperation = 0;
|
|
40
|
+
const current = lifetime.current;
|
|
41
|
+
const release = deps.owner.own(() => {
|
|
42
|
+
entries.delete(agent);
|
|
43
|
+
lifetime.dispose();
|
|
44
|
+
});
|
|
45
|
+
entries.set(agent, { ref, release });
|
|
46
|
+
const own = (dispose) => {
|
|
47
|
+
lifetime.own(dispose);
|
|
48
|
+
lifetime.assertActive();
|
|
49
|
+
};
|
|
50
|
+
try {
|
|
51
|
+
own(agent.ctx.on('system-prompt/assemble', async (_assembly, _context, next) => {
|
|
52
|
+
const operation = ++assemblyOperation;
|
|
53
|
+
const selected = ref.current;
|
|
54
|
+
const assembled = await next();
|
|
55
|
+
if (!current())
|
|
56
|
+
return assembled;
|
|
57
|
+
// A slow context-panel inspection must not replace a newer turn's route.
|
|
58
|
+
if (operation === assemblyOperation)
|
|
59
|
+
ref.assembled = selected;
|
|
60
|
+
if (selected === undefined)
|
|
61
|
+
return assembled;
|
|
62
|
+
return { ...assembled, variables: { ...assembled.variables, provider: selected.provider, model: selected.model } };
|
|
63
|
+
}));
|
|
64
|
+
own(agent.ctx.on('agent/request', async (_payload, next) => {
|
|
65
|
+
const resolved = await next();
|
|
66
|
+
if (!current())
|
|
67
|
+
return resolved;
|
|
68
|
+
const selected = ref.assembled;
|
|
69
|
+
if (selected === undefined)
|
|
70
|
+
return resolved;
|
|
71
|
+
const { reasoningEffort: _inheritedEffort, ...withoutInheritedEffort } = resolved;
|
|
72
|
+
return {
|
|
73
|
+
...withoutInheritedEffort,
|
|
74
|
+
provider: selected.provider,
|
|
75
|
+
model: selected.model,
|
|
76
|
+
...(selected.reasoningEffort === undefined ? {} : { reasoningEffort: selected.reasoningEffort }),
|
|
77
|
+
};
|
|
78
|
+
}));
|
|
79
|
+
// Match upstream installModelSelection's admission-time provenance.
|
|
80
|
+
own(agent.ctx.on('agent/pre-step', async ({ agent: subject, messages, signal, step }, next) => {
|
|
81
|
+
const decision = await next();
|
|
82
|
+
if (!current() || decision.kind === 'reject' || signal.aborted)
|
|
83
|
+
return decision;
|
|
84
|
+
if (decision.messages.length === 0 && (step === 1 || messages.length > 0))
|
|
85
|
+
return decision;
|
|
86
|
+
const selected = ref.assembled;
|
|
87
|
+
const previous = subject.session.requestHeader()?.config;
|
|
88
|
+
if (selected === undefined || previous === undefined ||
|
|
89
|
+
(selected.provider === previous.provider && selected.model === previous.model))
|
|
90
|
+
return decision;
|
|
91
|
+
const from = selected.provider === previous.provider ? previous.model : `${previous.provider}/${previous.model}`;
|
|
92
|
+
const to = selected.provider === previous.provider ? selected.model : `${selected.provider}/${selected.model}`;
|
|
93
|
+
return { ...decision, messages: [...decision.messages, createUserMessage({
|
|
94
|
+
content: [{ type: 'text', text: `[model changed: assistant turns above this point were generated by ${from}; the session continues with ${to}]` }],
|
|
95
|
+
// Older source unions lack this kind; the runtime shape is unchanged.
|
|
96
|
+
source: { kind: 'model-selection', form: 'notice', summary: boundContextSummary(`${from} → ${to}`) },
|
|
97
|
+
})] };
|
|
98
|
+
}, { prepend: true }));
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
try {
|
|
102
|
+
release();
|
|
103
|
+
}
|
|
104
|
+
catch { /* preserve the registration failure */ }
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
return { selection, bind };
|
|
109
|
+
}
|
|
@@ -1,30 +1,21 @@
|
|
|
1
1
|
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
2
|
+
import type { ModelSelectionRef } from '@deepseek-ai/dsh-agent';
|
|
3
|
+
import type { createChannelBinding } from './binding.js';
|
|
4
4
|
import type { ChannelOwner } from './owner.js';
|
|
5
|
-
import { resetSessionProjection } from './session-reset.js';
|
|
6
5
|
import type { ChannelState } from './types.js';
|
|
7
|
-
type Binding =
|
|
8
|
-
type SwitchState =
|
|
9
|
-
/**
|
|
6
|
+
type Binding = ReturnType<typeof createChannelBinding>;
|
|
7
|
+
type SwitchState = Pick<ChannelState, 'working' | 'provider' | 'model' | 'contextWindow' | 'effortLevels' | 'reasoningEffort' | 'emit'>;
|
|
8
|
+
/** Select the next request's route without replacing the conversation or its agent. */
|
|
10
9
|
export declare function createModelSwitchAction(ctx: Context, state: SwitchState, deps: {
|
|
11
10
|
owner: Pick<ChannelOwner, 'current'>;
|
|
12
|
-
binding: Pick<Binding, '
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
resetProjector(): void;
|
|
18
|
-
resetSubagents(): void;
|
|
19
|
-
resetJobs(): void;
|
|
20
|
-
replay(events: readonly SessionEvent[]): void;
|
|
21
|
-
settleReplay(): void;
|
|
22
|
-
bindAgent(): void;
|
|
23
|
-
refreshCommands(): void;
|
|
24
|
-
refreshLoadedContext(): Promise<void>;
|
|
25
|
-
refreshSkillCommands(): Promise<void>;
|
|
26
|
-
clearStagedImages(): void;
|
|
11
|
+
binding: Pick<Binding, 'capture' | 'isCurrent'>;
|
|
12
|
+
selection: ModelSelectionRef;
|
|
13
|
+
/** Legacy DSH delegates from immutable creation options instead of request headers. */
|
|
14
|
+
supportsRouteSwitch: boolean;
|
|
15
|
+
applyPreferredEffort(): Promise<void>;
|
|
27
16
|
dropModelCompletion(): void;
|
|
17
|
+
/** No bind follows an in-session switch, so seed the new route here. */
|
|
18
|
+
seedUpstreamRetry(provider: string): void;
|
|
28
19
|
notify: ChannelState['notify'];
|
|
29
20
|
}): (provider: string, model: string) => Promise<boolean>;
|
|
30
21
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-switch.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/model-switch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"model-switch.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/model-switch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAI/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACtD,KAAK,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,GAAG,MAAM,CAAC,CAAA;AAEvI,uFAAuF;AACvF,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE;IACJ,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACpC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW,CAAC,CAAA;IAC/C,SAAS,EAAE,iBAAiB,CAAA;IAC5B,uFAAuF;IACvF,mBAAmB,EAAE,OAAO,CAAA;IAC5B,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,mBAAmB,IAAI,IAAI,CAAA;IAC3B,wEAAwE;IACxE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACzC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;CAC/B,IAGa,UAAU,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAwCjE"}
|