@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
|
@@ -203,6 +203,27 @@ export function useSessionSupervisor(input) {
|
|
|
203
203
|
const [selectedPath, setSelectedPath] = useState(undefined);
|
|
204
204
|
/** True once the user picked a rail row by hand; see the selection effect. */
|
|
205
205
|
const [selectionManual, setSelectionManual] = useState(false);
|
|
206
|
+
/** The rail row whose sessions the pane is showing (or the fallback group). */
|
|
207
|
+
const selected = useMemo(() => {
|
|
208
|
+
const registered = railEntries.find(entry => entry.from === 'registry' && selectedPath !== undefined && samePath(entry.path, selectedPath));
|
|
209
|
+
if (registered !== undefined)
|
|
210
|
+
return registered;
|
|
211
|
+
if (selectedUnregisteredId !== undefined)
|
|
212
|
+
return railEntries.find(entry => entry.id === selectedUnregisteredId);
|
|
213
|
+
return railEntries.find(entry => samePath(entry.path, channel.cwd)) ?? railEntries[0];
|
|
214
|
+
}, [railEntries, selectedPath, selectedUnregisteredId, channel.cwd]);
|
|
215
|
+
// Recency chooses the default even when an older live row sorts above it.
|
|
216
|
+
const mostRecentIn = useCallback((path) => {
|
|
217
|
+
const needle = query.trim().toLowerCase();
|
|
218
|
+
let recent;
|
|
219
|
+
for (const session of groupedEntries.get(path) ?? []) {
|
|
220
|
+
if (sessionMatchesQuery(session, needle)
|
|
221
|
+
&& (recent === undefined || session.updatedAt > recent.updatedAt))
|
|
222
|
+
recent = session;
|
|
223
|
+
}
|
|
224
|
+
return recent?.id;
|
|
225
|
+
}, [groupedEntries, query]);
|
|
226
|
+
const recentSessionId = useMemo(() => selected === undefined ? undefined : mostRecentIn(selected.path), [selected?.path, mostRecentIn]);
|
|
206
227
|
/**
|
|
207
228
|
* The session column's cursor, as ONE fact.
|
|
208
229
|
*
|
|
@@ -224,13 +245,24 @@ export function useSessionSupervisor(input) {
|
|
|
224
245
|
* {@link focusIndex} is derived from it for the render, for movement and for
|
|
225
246
|
* Enter alike.
|
|
226
247
|
*/
|
|
227
|
-
const [focusSessionId,
|
|
248
|
+
const [focusSessionId, setFocusSessionIdState] = useState(recentSessionId);
|
|
249
|
+
const initialFocusPending = useRef(true);
|
|
250
|
+
const setFocusSessionId = useCallback((id) => {
|
|
251
|
+
initialFocusPending.current = false;
|
|
252
|
+
setFocusSessionIdState(id);
|
|
253
|
+
}, []);
|
|
254
|
+
// Keep the workspace's default current until the user chooses a list row.
|
|
255
|
+
React.useEffect(() => {
|
|
256
|
+
if (!initialFocusPending.current)
|
|
257
|
+
return;
|
|
258
|
+
setFocusSessionIdState(recentSessionId);
|
|
259
|
+
}, [recentSessionId]);
|
|
228
260
|
/**
|
|
229
261
|
* Which column owns the keyboard, and therefore which column draws the `❯`
|
|
230
262
|
* cursor. Exactly one at a time: two cursors mean "where does Enter go?" has
|
|
231
263
|
* no answer, and ←/→ is how this screen answers it.
|
|
232
264
|
*/
|
|
233
|
-
const [activePane, setActivePane] = useState('
|
|
265
|
+
const [activePane, setActivePane] = useState('list');
|
|
234
266
|
const [pins, setPins] = useState(() => readSessionPins(pinsDir));
|
|
235
267
|
/** A stored session being renamed / confirmed for deletion (non-DSH rows). */
|
|
236
268
|
const [sessionRename, setSessionRename] = useState(undefined);
|
|
@@ -295,11 +327,12 @@ export function useSessionSupervisor(input) {
|
|
|
295
327
|
slot.rows = slot.rows?.map(row => row.id === enriched.id ? enriched : row);
|
|
296
328
|
setSessions(current => current.map(row => row.id === enriched.id ? enriched : row));
|
|
297
329
|
}, partial => {
|
|
298
|
-
//
|
|
299
|
-
//
|
|
300
|
-
if (slot.requestGeneration !== generation
|
|
330
|
+
// Fresh workspace rows supersede cached metadata immediately;
|
|
331
|
+
// retain other cached workspaces until the full listing arrives.
|
|
332
|
+
if (slot.requestGeneration !== generation)
|
|
301
333
|
return;
|
|
302
|
-
setSessions(partial)
|
|
334
|
+
setSessions(current => [...new Map([...current, ...partial].map(row => [row.id, row])).values()]
|
|
335
|
+
.sort((left, right) => right.updatedAt - left.updatedAt));
|
|
303
336
|
setLoading(false);
|
|
304
337
|
});
|
|
305
338
|
// Recorded only after success: a failed listing keeps the previous
|
|
@@ -338,7 +371,7 @@ export function useSessionSupervisor(input) {
|
|
|
338
371
|
setLoading(false);
|
|
339
372
|
setRefreshing(false);
|
|
340
373
|
}
|
|
341
|
-
}, [channel, workspaceLedger]);
|
|
374
|
+
}, [channel, workspaceLedger, channel.cwd, channel.ready]);
|
|
342
375
|
React.useEffect(() => {
|
|
343
376
|
void reload();
|
|
344
377
|
}, [reload]);
|
|
@@ -402,15 +435,6 @@ export function useSessionSupervisor(input) {
|
|
|
402
435
|
React.useEffect(() => {
|
|
403
436
|
setRailFocus(current => Math.min(current, Math.max(0, railEntries.length - 1)));
|
|
404
437
|
}, [railEntries.length]);
|
|
405
|
-
/** The rail row whose sessions the pane is showing (or the fallback group). */
|
|
406
|
-
const selected = useMemo(() => {
|
|
407
|
-
const registered = railEntries.find(entry => entry.from === 'registry' && selectedPath !== undefined && samePath(entry.path, selectedPath));
|
|
408
|
-
if (registered !== undefined)
|
|
409
|
-
return registered;
|
|
410
|
-
if (selectedUnregisteredId !== undefined)
|
|
411
|
-
return railEntries.find(entry => entry.id === selectedUnregisteredId);
|
|
412
|
-
return railEntries[0];
|
|
413
|
-
}, [railEntries, selectedPath, selectedUnregisteredId]);
|
|
414
438
|
/**
|
|
415
439
|
* Sessions whose recorded cwd is the selected workspace, minus the search
|
|
416
440
|
* filter. Live sessions in this workspace sort above stopped ones, then by
|
|
@@ -456,18 +480,10 @@ export function useSessionSupervisor(input) {
|
|
|
456
480
|
const cardFocused = activePane === 'list' && sessionIndex === 0;
|
|
457
481
|
/** The new-session card is the list's row 0; sessions start at 1. */
|
|
458
482
|
const sessionAt = useCallback((index) => visibleSessions[index - 1], [visibleSessions]);
|
|
459
|
-
/**
|
|
460
|
-
* Enter the session column: land the cursor on the session this terminal is
|
|
461
|
-
* attached to (that is the one the user most likely means), else on the top
|
|
462
|
-
* row — which is the new-session card when the list sorted its live rows
|
|
463
|
-
* lower. A cursor that stayed put while the list scrolled elsewhere would act
|
|
464
|
-
* on a row the user never looked at.
|
|
465
|
-
*/
|
|
483
|
+
/** Enter the session column without changing its selected row. */
|
|
466
484
|
const activateList = useCallback(() => {
|
|
467
485
|
setActivePane('list');
|
|
468
|
-
|
|
469
|
-
setFocusSessionId(current?.id);
|
|
470
|
-
}, [liveStateOf, visibleSessions]);
|
|
486
|
+
}, []);
|
|
471
487
|
/** Enter the workspace column. */
|
|
472
488
|
const activateRail = useCallback(() => {
|
|
473
489
|
setActivePane('rail');
|
|
@@ -549,11 +565,17 @@ export function useSessionSupervisor(input) {
|
|
|
549
565
|
.catch(error => report(t(archiveSessions ? 'session-archive-failed' : 'session-delete-failed', { err: message(error) }), 'error'));
|
|
550
566
|
}, [archiveSessions, channel, holderOf, liveStateOf, reload, report]);
|
|
551
567
|
const selectEntry = useCallback((entry) => {
|
|
568
|
+
setActivePane('rail');
|
|
552
569
|
setSelectedPath(entry.from === 'registry' ? entry.path : undefined);
|
|
553
570
|
setSelectedUnregisteredId(entry.from === 'unregistered' ? entry.id : undefined);
|
|
554
571
|
setSelectionManual(true);
|
|
555
|
-
|
|
556
|
-
|
|
572
|
+
if (selected === undefined || !samePath(selected.path, entry.path)) {
|
|
573
|
+
// One selection belongs to the current workspace, without a per-workspace
|
|
574
|
+
// memory. A cold group's default follows incoming rows until list movement.
|
|
575
|
+
initialFocusPending.current = true;
|
|
576
|
+
setFocusSessionIdState(mostRecentIn(entry.path));
|
|
577
|
+
}
|
|
578
|
+
}, [selected, mostRecentIn]);
|
|
557
579
|
/**
|
|
558
580
|
* Mount a session, refusing one another terminal holds.
|
|
559
581
|
*
|
|
@@ -686,7 +708,7 @@ export function useSessionSupervisor(input) {
|
|
|
686
708
|
// put `❯` on the first session while the user had selected the card.
|
|
687
709
|
const landed = sessionAt(next);
|
|
688
710
|
setFocusSessionId(landed?.id);
|
|
689
|
-
}, [visibleSessions, sessionAt, sessionIndex]);
|
|
711
|
+
}, [visibleSessions, sessionAt, sessionIndex, setFocusSessionId]);
|
|
690
712
|
/** The session under the cursor, or undefined while the card (row 0) holds it. */
|
|
691
713
|
const focusedSession = sessionAt(sessionIndex);
|
|
692
714
|
return {
|
|
@@ -17,6 +17,11 @@ export declare function readResumeTarget(): string | undefined;
|
|
|
17
17
|
* verbatim and never parses them into DSH_TUI_RESUME_SESSION, so the
|
|
18
18
|
* in-profile plugin reads them itself. A bare flag with no id defers to the
|
|
19
19
|
* exit-time marker, exactly like the bin. An app-level `--` ends option parsing.
|
|
20
|
+
*
|
|
21
|
+
* A bare flag whose fallback is empty yields `undefined` here — the caller decides
|
|
22
|
+
* what that means, and both callers fail closed: the launcher reports "no session
|
|
23
|
+
* to resume" and exits non-zero, the boot treats it as "no target" only because the
|
|
24
|
+
* launcher already refused (roadmap §6 item 11). Never invent a fallback.
|
|
20
25
|
* @param argv - the app arguments from cmdlineArgs, after the host's own options.
|
|
21
26
|
* @returns The requested session id, or undefined when none was given.
|
|
22
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionHistory.d.ts","sourceRoot":"","sources":["../../src/sessionHistory.ts"],"names":[],"mappings":"AAyCA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGzD;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAOrD;AAED
|
|
1
|
+
{"version":3,"file":"sessionHistory.d.ts","sourceRoot":"","sources":["../../src/sessionHistory.ts"],"names":[],"mappings":"AAyCA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGzD;AAED,qEAAqE;AACrE,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAOrD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,MAAM,EAAE;AACvB;wEACwE;AACxE,YAAY,GAAE,MAAM,MAAM,GAAG,SAA4B,GACxD,MAAM,GAAG,SAAS,CAgBpB;AAaD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAejE;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAyB/D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAUpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAYrD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiBxE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAQ7D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAU9D"}
|
|
@@ -73,6 +73,11 @@ export function readResumeTarget() {
|
|
|
73
73
|
* verbatim and never parses them into DSH_TUI_RESUME_SESSION, so the
|
|
74
74
|
* in-profile plugin reads them itself. A bare flag with no id defers to the
|
|
75
75
|
* exit-time marker, exactly like the bin. An app-level `--` ends option parsing.
|
|
76
|
+
*
|
|
77
|
+
* A bare flag whose fallback is empty yields `undefined` here — the caller decides
|
|
78
|
+
* what that means, and both callers fail closed: the launcher reports "no session
|
|
79
|
+
* to resume" and exits non-zero, the boot treats it as "no target" only because the
|
|
80
|
+
* launcher already refused (roadmap §6 item 11). Never invent a fallback.
|
|
76
81
|
* @param argv - the app arguments from cmdlineArgs, after the host's own options.
|
|
77
82
|
* @returns The requested session id, or undefined when none was given.
|
|
78
83
|
*/
|
|
@@ -68,13 +68,15 @@ export declare function resolveSessionModes(raw: readonly SessionModeSpec[] | un
|
|
|
68
68
|
modes: readonly SessionModeSpec[];
|
|
69
69
|
dropped: readonly string[];
|
|
70
70
|
};
|
|
71
|
-
/** Display name:
|
|
72
|
-
*
|
|
71
|
+
/** Display name: a dynamic runtime preset's label (localized at render time
|
|
72
|
+
* for presets the TUI owns, so `/lang` applies without a roster rebuild) >
|
|
73
|
+
* explicit `label` > built-in i18n (`mode-default`/`mode-plan`/`mode-full`
|
|
74
|
+
* for those ids) > the raw id. */
|
|
73
75
|
export declare function modeDisplayName(spec: SessionModeSpec): string;
|
|
74
76
|
/**
|
|
75
77
|
* One dynamic Shift+Tab entry for a runtime permission preset. The id is
|
|
76
78
|
* namespaced so it can never collide with a configured mode id, the label
|
|
77
|
-
* carries the registry's display name, and the entry declares NO atoms: a
|
|
79
|
+
* carries the registry's display name (see modeDisplayName), and the entry declares NO atoms: a
|
|
78
80
|
* dynamic preset is selected through its durable `permission/preset`
|
|
79
81
|
* identity only, never by an atom wildcard match (which would steal the
|
|
80
82
|
* indicator on sessions that never held that identity).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionModes.d.ts","sourceRoot":"","sources":["../../src/sessionModes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"sessionModes.d.ts","sourceRoot":"","sources":["../../src/sessionModes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAazE;gEACgE;AAChE,eAAO,MAAM,qBAAqB,EAAE,SAAS,eAAe,EAI3D,CAAA;AAED;;;0CAG0C;AAC1C,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,CAI3D,CAAA;AAEF,8DAA8D;AAC9D,eAAO,MAAM,4BAA4B,EAAE,SAAS;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAA;IAC/D,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAA;CAC1B,EAIA,CAAA;AAED,0EAA0E;AAC1E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,mEAAmE;AACnE,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAAiC,CAAA;AAE7F;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,EAC/D,QAAQ,EAAE,KAAK,GAAG,OAAO,EACzB,MAAM,CAAC,EAAE,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,OAAO,CAAA;CAAE,EAAE,GAClI,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,SAAS,MAAM,EAAE,CAiBnB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,0BAA0B,EAClC,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,GACzC;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,0BAA0B,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAK9F;AAED;;;;;;;kEAOkE;AAClE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,GAAG;IAChF,KAAK,EAAE,SAAS,eAAe,EAAE,CAAA;IACjC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3B,CAgBA;AAED;;;mCAGmC;AACnC,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAS7D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,0BAA0B,GAAG,eAAe,CAEtF"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* `plan`, but not with `sandbox` or `approval`.
|
|
9
9
|
*/
|
|
10
10
|
import { t } from './i18n.js';
|
|
11
|
+
import { permissionPresetLabel } from './permissionPresetLabels.js';
|
|
11
12
|
/** The shipped cycle when cordis.yml pins no `modes` — array order IS the
|
|
12
13
|
* Shift+Tab cycle order; index 0 is the unmarked base mode. */
|
|
13
14
|
export const DEFAULT_SESSION_MODES = [
|
|
@@ -115,9 +116,14 @@ export function resolveSessionModes(raw) {
|
|
|
115
116
|
});
|
|
116
117
|
return modes.length === 0 ? { modes: DEFAULT_SESSION_MODES, dropped } : { modes, dropped };
|
|
117
118
|
}
|
|
118
|
-
/** Display name:
|
|
119
|
-
*
|
|
119
|
+
/** Display name: a dynamic runtime preset's label (localized at render time
|
|
120
|
+
* for presets the TUI owns, so `/lang` applies without a roster rebuild) >
|
|
121
|
+
* explicit `label` > built-in i18n (`mode-default`/`mode-plan`/`mode-full`
|
|
122
|
+
* for those ids) > the raw id. */
|
|
120
123
|
export function modeDisplayName(spec) {
|
|
124
|
+
if (spec.permission !== undefined && spec.label !== undefined && spec.id === `permission:${spec.permission}`) {
|
|
125
|
+
return permissionPresetLabel({ value: spec.permission, name: spec.label });
|
|
126
|
+
}
|
|
121
127
|
if (spec.label !== undefined)
|
|
122
128
|
return spec.label;
|
|
123
129
|
if (spec.id === 'default')
|
|
@@ -131,7 +137,7 @@ export function modeDisplayName(spec) {
|
|
|
131
137
|
/**
|
|
132
138
|
* One dynamic Shift+Tab entry for a runtime permission preset. The id is
|
|
133
139
|
* namespaced so it can never collide with a configured mode id, the label
|
|
134
|
-
* carries the registry's display name, and the entry declares NO atoms: a
|
|
140
|
+
* carries the registry's display name (see modeDisplayName), and the entry declares NO atoms: a
|
|
135
141
|
* dynamic preset is selected through its durable `permission/preset`
|
|
136
142
|
* identity only, never by an atom wildcard match (which would steal the
|
|
137
143
|
* indicator on sessions that never held that identity).
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SessionSummary } from '../adapter/ports/channel-session.js';
|
|
2
|
+
/** Undefined is unknown; an empty snapshot is a successful empty listing. */
|
|
3
|
+
export declare function readListingSnapshot(key: string): readonly SessionSummary[] | undefined;
|
|
4
|
+
/** Capture ordering before async work, including across distinct Context proxies. */
|
|
5
|
+
export declare function beginListingSnapshot(key: string): (rows: readonly SessionSummary[]) => void;
|
|
6
|
+
//# sourceMappingURL=listSnapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listSnapshot.d.ts","sourceRoot":"","sources":["../../../src/sessions/listSnapshot.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAiCzE,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,cAAc,EAAE,GAAG,SAAS,CAEtF;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,KAAK,IAAI,CAe3F"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** Last successful listing for first paint only; the backend still refreshes it. */
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { DATA_DIR } from '../utils/paths.js';
|
|
6
|
+
const directory = join(DATA_DIR, 'session-lists');
|
|
7
|
+
const generations = new Map();
|
|
8
|
+
const record = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
9
|
+
const finite = (value) => typeof value === 'number' && Number.isFinite(value);
|
|
10
|
+
const optionalText = (value) => value === undefined || typeof value === 'string';
|
|
11
|
+
function isSummary(value) {
|
|
12
|
+
if (!record(value) || typeof value.id !== 'string' || !value.id || typeof value.cwd !== 'string' ||
|
|
13
|
+
!finite(value.createdAt) || !finite(value.updatedAt) || typeof value.hasPrompt !== 'boolean' ||
|
|
14
|
+
!finite(value.childCount) || value.childCount < 0 ||
|
|
15
|
+
(value.bytes !== undefined && (!finite(value.bytes) || value.bytes < 0)) ||
|
|
16
|
+
!['backendId', 'agentPreset', 'model', 'label', 'branch'].every(key => optionalText(value[key])))
|
|
17
|
+
return false;
|
|
18
|
+
const { title, kind } = value;
|
|
19
|
+
if (!record(title) || typeof title.text !== 'string' || typeof title.source !== 'string' ||
|
|
20
|
+
!['renamed', 'auto', 'prompt', 'fallback'].includes(title.source) || !record(kind))
|
|
21
|
+
return false;
|
|
22
|
+
return kind.kind === 'root' ||
|
|
23
|
+
(kind.kind === 'fork' && typeof kind.parent === 'string') ||
|
|
24
|
+
(kind.kind === 'subagent' && optionalText(kind.parent) && finite(kind.depth) && kind.depth >= 0);
|
|
25
|
+
}
|
|
26
|
+
function fileOf(key) {
|
|
27
|
+
return join(directory, createHash('sha256').update(key).digest('hex') + '.json');
|
|
28
|
+
}
|
|
29
|
+
function read(key) {
|
|
30
|
+
try {
|
|
31
|
+
const value = JSON.parse(readFileSync(fileOf(key), 'utf8'));
|
|
32
|
+
if (!record(value) || value.version !== 1 || value.source !== key || !Array.isArray(value.rows) || !value.rows.every(isSummary))
|
|
33
|
+
return undefined;
|
|
34
|
+
if (new Set(value.rows.map(row => row.id)).size !== value.rows.length)
|
|
35
|
+
return undefined;
|
|
36
|
+
return value.rows;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Undefined is unknown; an empty snapshot is a successful empty listing. */
|
|
43
|
+
export function readListingSnapshot(key) {
|
|
44
|
+
return read(key);
|
|
45
|
+
}
|
|
46
|
+
/** Capture ordering before async work, including across distinct Context proxies. */
|
|
47
|
+
export function beginListingSnapshot(key) {
|
|
48
|
+
const generation = (generations.get(key) ?? 0) + 1;
|
|
49
|
+
generations.set(key, generation);
|
|
50
|
+
return rows => {
|
|
51
|
+
if (generations.get(key) !== generation)
|
|
52
|
+
return;
|
|
53
|
+
const file = fileOf(key);
|
|
54
|
+
const temporary = file + '.' + process.pid + '.tmp';
|
|
55
|
+
try {
|
|
56
|
+
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
57
|
+
writeFileSync(temporary, JSON.stringify({ version: 1, source: key, rows }), { mode: 0o600 });
|
|
58
|
+
renameSync(temporary, file);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
try {
|
|
62
|
+
rmSync(temporary, { force: true });
|
|
63
|
+
}
|
|
64
|
+
catch { /* A cache never blocks listing. */ }
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
@@ -225,6 +225,18 @@ export declare const SETTING_DEFINITIONS: {
|
|
|
225
225
|
};
|
|
226
226
|
}[];
|
|
227
227
|
};
|
|
228
|
+
launchpad: {
|
|
229
|
+
label: string;
|
|
230
|
+
descriptions: {
|
|
231
|
+
zh: string;
|
|
232
|
+
};
|
|
233
|
+
group: string;
|
|
234
|
+
hint: string;
|
|
235
|
+
hintDescriptions: {
|
|
236
|
+
zh: string;
|
|
237
|
+
};
|
|
238
|
+
kind: "boolean";
|
|
239
|
+
};
|
|
228
240
|
mathImageBacking: {
|
|
229
241
|
label: string;
|
|
230
242
|
descriptions: {
|
|
@@ -306,6 +318,25 @@ export declare const SETTING_DEFINITIONS: {
|
|
|
306
318
|
};
|
|
307
319
|
kind: "boolean";
|
|
308
320
|
};
|
|
321
|
+
notificationMethod: {
|
|
322
|
+
label: string;
|
|
323
|
+
descriptions: {
|
|
324
|
+
zh: string;
|
|
325
|
+
};
|
|
326
|
+
group: string;
|
|
327
|
+
hint: string;
|
|
328
|
+
hintDescriptions: {
|
|
329
|
+
zh: string;
|
|
330
|
+
};
|
|
331
|
+
kind: "select";
|
|
332
|
+
options: {
|
|
333
|
+
value: string;
|
|
334
|
+
label: string;
|
|
335
|
+
descriptions: {
|
|
336
|
+
zh: string;
|
|
337
|
+
};
|
|
338
|
+
}[];
|
|
339
|
+
};
|
|
309
340
|
pageMargin: {
|
|
310
341
|
label: string;
|
|
311
342
|
descriptions: {
|
|
@@ -657,6 +688,25 @@ export declare const SETTING_DEFINITIONS: {
|
|
|
657
688
|
kind: "boolean";
|
|
658
689
|
group: string;
|
|
659
690
|
};
|
|
691
|
+
taskNotifications: {
|
|
692
|
+
label: string;
|
|
693
|
+
descriptions: {
|
|
694
|
+
zh: string;
|
|
695
|
+
};
|
|
696
|
+
group: string;
|
|
697
|
+
hint: string;
|
|
698
|
+
hintDescriptions: {
|
|
699
|
+
zh: string;
|
|
700
|
+
};
|
|
701
|
+
kind: "select";
|
|
702
|
+
options: {
|
|
703
|
+
value: string;
|
|
704
|
+
label: string;
|
|
705
|
+
descriptions: {
|
|
706
|
+
zh: string;
|
|
707
|
+
};
|
|
708
|
+
}[];
|
|
709
|
+
};
|
|
660
710
|
terminalImages: {
|
|
661
711
|
label: string;
|
|
662
712
|
descriptions: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/settings/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAG5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,cAAc,GAAG,MAAM,GAAG,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;AAE7I,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/settings/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAG5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,cAAc,GAAG,MAAM,GAAG,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;AAE7I,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkhBa,CAAA;AAE7C,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,mBAAmB,CAAA;AAEzD;;;;;;;;;yCASyC;AACzC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjB,CAAA;AAEV;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAEjD,CAAA;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,iBAAiB,GAAG;IAAE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAE7F;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,CAuGnK,CAAA"}
|
|
@@ -42,8 +42,8 @@ export const SETTING_DEFINITIONS = {
|
|
|
42
42
|
label: 'Companion skin',
|
|
43
43
|
descriptions: { zh: '宠物皮肤' },
|
|
44
44
|
group: 'splash',
|
|
45
|
-
hint: 'Look of the companion panel pet (the panel is enabled by default and can be changed in sidePanel.panels): deepy (default, the deepy whale kit), whale (the same layered pixel whale as the splash) or whaleGirl (the user-provided whale-girl sticker pack, 22 animations). Applies immediately.',
|
|
46
|
-
hintDescriptions: { zh: '
|
|
45
|
+
hint: 'DeepSeek brand: whale allows the maid portrait; deepy/whaleGirl replace it. Claude uses its own art; Codex uses its own raster portrait or maid character-art fallback. Look of the companion panel pet (the panel is enabled by default and can be changed in sidePanel.panels): deepy (default, the deepy whale kit), whale (the same layered pixel whale as the splash) or whaleGirl (the user-provided whale-girl sticker pack, 22 animations). Applies immediately.',
|
|
46
|
+
hintDescriptions: { zh: 'DeepSeek 品牌:whale 才能用女仆娘立绘;deepy/whaleGirl 会替换它。Claude 使用自己的图案;Codex 优先显示自己的真图,不可用时回落女仆娘字符画。伙伴面板里宠物的外形(面板默认启用,可在 sidePanel.panels 中调整):deepy(默认,deepy 小鲸鱼素材包)、whale(与开屏同款的分层像素鲸鱼)或 whaleGirl(用户提供的鲸娘表情包,22 个动画)。立即生效。' },
|
|
47
47
|
kind: 'select',
|
|
48
48
|
options: [
|
|
49
49
|
{ value: 'deepy', label: 'Deepy', descriptions: { zh: 'Deepy 小鲸鱼' } },
|
|
@@ -140,6 +140,14 @@ export const SETTING_DEFINITIONS = {
|
|
|
140
140
|
{ value: 'en', label: 'English', descriptions: { zh: '英文' } },
|
|
141
141
|
],
|
|
142
142
|
},
|
|
143
|
+
'launchpad': {
|
|
144
|
+
label: 'Launchpad on boot',
|
|
145
|
+
descriptions: { zh: '启动页(落地页)' },
|
|
146
|
+
group: 'splash',
|
|
147
|
+
hint: 'On: an ordinary launch (no --resume, no first prompt) starts on the launchpad — the landing page where the first sentence gets typed, with the Continue / Sessions / Settings / Kernel row. Off: boots straight into the chat page. A resume target always skips the launchpad either way. On by default. Restart to apply.',
|
|
148
|
+
hintDescriptions: { zh: '开启:普通启动(不带 --resume、不带首句)先落启动页——输入第一句话的落地页,带「继续上次 / 会话与工作区 / 设置 / 内核」一行;关闭:直接进入聊天页。无论开关,指定恢复的会话总是直接打开。默认开启。重启生效。' },
|
|
149
|
+
kind: 'boolean',
|
|
150
|
+
},
|
|
143
151
|
'mathImageBacking': {
|
|
144
152
|
label: 'Formula image background',
|
|
145
153
|
descriptions: { zh: '公式图片底色' },
|
|
@@ -195,6 +203,19 @@ export const SETTING_DEFINITIONS = {
|
|
|
195
203
|
hintDescriptions: { zh: '只精简界面:隐藏开屏头部、emoji 状态符与装饰性配色,底栏只留模型与目录;代码高亮与工具配色保留。这是界面开关,不是 Agent 预设——模型能用哪些工具由内核预设决定(见 /preset)。' },
|
|
196
204
|
kind: 'boolean',
|
|
197
205
|
},
|
|
206
|
+
'notificationMethod': {
|
|
207
|
+
label: 'Notification method',
|
|
208
|
+
descriptions: { zh: '通知方式' },
|
|
209
|
+
group: 'conversation',
|
|
210
|
+
hint: 'Auto uses separate title/body notifications on Ghostty and WezTerm (OSC 777) and Kitty (OSC 99). iTerm2 and Warp use OSC 9 with a title prefix; other terminals ring the bell. Explicit OSC 9 also uses the title prefix. Delivery depends on terminal settings. In tmux, OSC notifications need allow-passthrough on. Applies immediately.',
|
|
211
|
+
hintDescriptions: { zh: '自动:Ghostty、WezTerm 使用 OSC 777,Kitty 使用 OSC 99,分别显示标题与正文;iTerm2、Warp 使用 OSC 9,将标题放在正文前;其他终端响铃。显式 OSC 9 同样使用标题前缀。实际提醒取决于终端设置;tmux 中 OSC 通知需要开启 allow-passthrough。立即生效。' },
|
|
212
|
+
kind: 'select',
|
|
213
|
+
options: [
|
|
214
|
+
{ value: 'auto', label: 'Auto', descriptions: { zh: '自动' } },
|
|
215
|
+
{ value: 'osc9', label: 'OSC 9', descriptions: { zh: 'OSC 9' } },
|
|
216
|
+
{ value: 'bel', label: 'Terminal bell', descriptions: { zh: '终端响铃' } },
|
|
217
|
+
],
|
|
218
|
+
},
|
|
198
219
|
'pageMargin': {
|
|
199
220
|
label: 'Page margin',
|
|
200
221
|
descriptions: { zh: '页边距' },
|
|
@@ -258,8 +279,8 @@ export const SETTING_DEFINITIONS = {
|
|
|
258
279
|
label: 'Chat column width',
|
|
259
280
|
descriptions: { zh: '聊天列占比' },
|
|
260
281
|
group: 'side-panel',
|
|
261
|
-
hint: 'Chat column as a fraction of the content width: 0.1-0.95, default 0.68. Type a decimal such as `0.6`;
|
|
262
|
-
hintDescriptions: { zh: '聊天列占内容宽度的比例:0.1-0.95,默认 0.68。输入小数如 `0.6
|
|
282
|
+
hint: 'Chat column as a fraction of the content width: 0.1-0.95, default 0.68. Type a decimal such as `0.6`; drag the divider or use +/- while the panel has focus to resize for the current session. Applies immediately.',
|
|
283
|
+
hintDescriptions: { zh: '聊天列占内容宽度的比例:0.1-0.95,默认 0.68。输入小数如 `0.6`;拖拽分隔线,或在面板获得焦点时用 +/-,可在当前会话内实时调宽。立即生效。' },
|
|
263
284
|
kind: 'number',
|
|
264
285
|
},
|
|
265
286
|
'sidePanel.splitEnabled': {
|
|
@@ -431,6 +452,19 @@ export const SETTING_DEFINITIONS = {
|
|
|
431
452
|
kind: 'boolean',
|
|
432
453
|
group: 'status-bar',
|
|
433
454
|
},
|
|
455
|
+
'taskNotifications': {
|
|
456
|
+
label: 'Task completion notifications',
|
|
457
|
+
descriptions: { zh: '任务完成通知' },
|
|
458
|
+
group: 'conversation',
|
|
459
|
+
hint: 'Notify when successful live work finishes with no queued follow-up or active goal. The title is dsh-TUI · Task complete; the body previews the latest reply as plain text in one line, with Markdown formatting removed, up to 200 characters. OSC 777/9 may shorten it further to fit a 2048-byte sequence budget without splitting characters. No reply shows only the title; BEL only rings. Default: only while the terminal is unfocused. Off disables notifications; Always also notifies while focused or when focus reporting is unavailable. Replay, cancellation and errors stay quiet. Applies immediately.',
|
|
460
|
+
hintDescriptions: { zh: '实时任务成功结束、没有排队的后续输入或活动目标时提醒。标题为「dsh-TUI · 任务已完成」,正文显示最新回复的单行纯文本摘要,去掉 Markdown 样式,最多 200 字符;OSC 777/9 还会按完整序列的 2048 字节预算截短,不拆字符;没有回复时只显示标题,BEL 只响铃。默认仅在终端失去焦点时通知;关闭可禁用,每次完成则在终端聚焦或不支持焦点报告时也通知。回放、取消和失败不通知。立即生效。' },
|
|
461
|
+
kind: 'select',
|
|
462
|
+
options: [
|
|
463
|
+
{ value: 'unfocused', label: 'When unfocused', descriptions: { zh: '仅失焦时' } },
|
|
464
|
+
{ value: 'always', label: 'Always', descriptions: { zh: '每次完成' } },
|
|
465
|
+
{ value: 'off', label: 'Off', descriptions: { zh: '关闭' } },
|
|
466
|
+
],
|
|
467
|
+
},
|
|
434
468
|
'terminalImages': {
|
|
435
469
|
label: 'Terminal image previews',
|
|
436
470
|
descriptions: { zh: '终端图片预览' },
|
|
@@ -476,16 +510,16 @@ export const SETTING_DEFINITIONS = {
|
|
|
476
510
|
label: 'Header art',
|
|
477
511
|
descriptions: { zh: '标题图形 logo' },
|
|
478
512
|
group: 'splash',
|
|
479
|
-
hint: '
|
|
480
|
-
hintDescriptions: { zh: '
|
|
513
|
+
hint: 'Header art. DeepSeek follows Companion skin and the maid toggle; Claude uses its own art; Codex uses its own raster portrait or maid character-art fallback. Off leaves a text-only header.',
|
|
514
|
+
hintDescriptions: { zh: '标题图形:DeepSeek 品牌随宠物皮肤与女仆娘开关,Claude 使用自己的图案;Codex 优先显示自己的真图,不可用时回落女仆娘字符画。关闭则只留文字标题。' },
|
|
481
515
|
kind: 'boolean',
|
|
482
516
|
},
|
|
483
517
|
'whaleGirl': {
|
|
484
518
|
label: 'Maid portrait',
|
|
485
519
|
descriptions: { zh: '女仆娘立绘' },
|
|
486
520
|
group: 'splash',
|
|
487
|
-
hint: '
|
|
488
|
-
hintDescriptions: { zh: '
|
|
521
|
+
hint: 'DeepSeek brand: choose whale in Companion skin, then enable this toggle. Claude uses its own art; Codex uses its own raster portrait or maid character-art fallback. Swaps the pixel whale for the author-designed maid portrait, preferring the real raster (Kitty/Sixel) with character-art fallback.',
|
|
522
|
+
hintDescriptions: { zh: 'DeepSeek 品牌:选 whale 皮肤并开启本项。Claude 使用自己的图案;Codex 优先显示自己的真图,不可用时回落女仆娘字符画。把像素鲸鱼换成项目作者绘制的女仆娘立绘,优先用终端图像协议(Kitty/Sixel)渲染真图,不支持时回落字符画。' },
|
|
489
523
|
kind: 'boolean',
|
|
490
524
|
},
|
|
491
525
|
'whaleIdle': {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CJK-adjacent strong emphasis for the shared `marked` instance.
|
|
3
|
+
*
|
|
4
|
+
* CommonMark cannot close `**label:**text` in CJK prose: the closing
|
|
5
|
+
* delimiter run must be right-flanking, and a run preceded by a
|
|
6
|
+
* punctuation mark (the fullwidth colon/period/quote that ends a Chinese
|
|
7
|
+
* label) only qualifies when whitespace or more punctuation follows.
|
|
8
|
+
* Chinese does not space after punctuation, so the exact shape models
|
|
9
|
+
* write for emphasis labels — `**证据与影响:**源码中…` — keeps literal
|
|
10
|
+
* asterisks on GitHub and every strict CommonMark renderer alike.
|
|
11
|
+
*
|
|
12
|
+
* The tokenizer below takes over exactly that shape: a `**` pair whose
|
|
13
|
+
* body ends with a Unicode punctuation mark and whose closer is
|
|
14
|
+
* immediately followed by a CJK ideograph, kana, hangul syllable or
|
|
15
|
+
* fullwidth form. Every other case is declined, so the built-in em
|
|
16
|
+
* tokenizer keeps its behavior — including the ASCII one
|
|
17
|
+
* (`**note:**see`), which stays literal to stay consistent with GitHub.
|
|
18
|
+
*
|
|
19
|
+
* Deliberately left literal (same gap upstream, rarer):
|
|
20
|
+
* - `***` triple runs (em+strong) and single-`*` emphasis — terminal
|
|
21
|
+
* italics are barely legible for CJK anyway;
|
|
22
|
+
* - bodies containing a backtick, where the pair could straddle a code
|
|
23
|
+
* span (the math tokenizer guards `$` bodies the same way).
|
|
24
|
+
*/
|
|
25
|
+
import type { TokenizerExtension } from 'marked';
|
|
26
|
+
/** Tokenizer extensions for `marked.use({ extensions })`. */
|
|
27
|
+
export declare const CJK_EMPHASIS_EXTENSIONS: readonly TokenizerExtension[];
|
|
28
|
+
//# sourceMappingURL=cjk-emphasis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cjk-emphasis.d.ts","sourceRoot":"","sources":["../../../src/terminal-utils/cjk-emphasis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAU,MAAM,QAAQ,CAAA;AAaxD,6DAA6D;AAC7D,eAAO,MAAM,uBAAuB,EAAE,SAAS,kBAAkB,EAoBhE,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** Scripts whose prose does not space after punctuation. CJK punctuation
|
|
2
|
+
* itself is excluded: a closer followed by punctuation is already
|
|
3
|
+
* right-flanking per CommonMark, so the built-in tokenizer closes it. */
|
|
4
|
+
const AFTER_CLOSER = '[\u3040-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uAC00-\uD7AF\uFF00-\uFFEF]';
|
|
5
|
+
/** `**body<punct>**` glued to the scripts above. The body excludes `*`
|
|
6
|
+
* (triple runs stay with the built-in tokenizer), line breaks and
|
|
7
|
+
* backticks (code-span straddling). */
|
|
8
|
+
const CJK_STRONG = new RegExp('^\\*\\*([^*\\n`]+?\\p{P})\\*\\*(?=' + AFTER_CLOSER + ')', 'u');
|
|
9
|
+
/** Tokenizer extensions for `marked.use({ extensions })`. */
|
|
10
|
+
export const CJK_EMPHASIS_EXTENSIONS = [
|
|
11
|
+
{
|
|
12
|
+
name: 'cjkStrong',
|
|
13
|
+
level: 'inline',
|
|
14
|
+
start: (source) => {
|
|
15
|
+
const index = source.indexOf('**');
|
|
16
|
+
return index >= 0 ? index : undefined;
|
|
17
|
+
},
|
|
18
|
+
tokenizer(src) {
|
|
19
|
+
const match = CJK_STRONG.exec(src);
|
|
20
|
+
if (match === null)
|
|
21
|
+
return undefined;
|
|
22
|
+
const text = match[1];
|
|
23
|
+
return {
|
|
24
|
+
type: 'strong',
|
|
25
|
+
raw: match[0],
|
|
26
|
+
text,
|
|
27
|
+
tokens: this.lexer.inlineTokens(text, []),
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
];
|
|
@@ -24,7 +24,9 @@ export declare function stripPromptXMLTags(content: string): string;
|
|
|
24
24
|
* Configure the shared `marked` instance once. Strikethrough stays on
|
|
25
25
|
* marked's built-in del tokenizer, which only matches double-tilde pairs —
|
|
26
26
|
* single tildes (`~100`, models' "approximate") never pair up and render
|
|
27
|
-
* literally. LaTeX math becomes `math`/`mathBlock` tokens (see math.ts)
|
|
27
|
+
* literally. LaTeX math becomes `math`/`mathBlock` tokens (see math.ts),
|
|
28
|
+
* and CJK-adjacent strong emphasis (`**标签:**中文`, unclosable under
|
|
29
|
+
* CommonMark's flanking rule) closes via cjk-emphasis.ts.
|
|
28
30
|
* Every lexer caller — Markdown and StreamingMarkdown's boundary
|
|
29
31
|
* lex — must run this first so both agree on block boundaries.
|
|
30
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/terminal-utils/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAA4B,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;AAO1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/terminal-utils/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAA4B,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;AAO1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA6CrD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO1D;AAID;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAStC;AAmFD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EACZ,SAAS,SAAI,EACb,iBAAiB,GAAE,MAAM,GAAG,IAAW,EACvC,MAAM,GAAE,KAAK,GAAG,IAAW,EAC3B,SAAS,GAAE,YAAY,GAAG,IAAW,GACpC,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,YAAY,GAAG,IAAW,GACpC,MAAM,CAiBR;AA8HD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,CA2BzF;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK1E;AA2RD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GACpD,MAAM,CAUR"}
|
|
@@ -24,6 +24,7 @@ import { createHyperlink } from './hyperlink.js';
|
|
|
24
24
|
import { fileLinkUrl, linkifyFilePaths, looksLikeFilePath } from '../utils/fileTarget.js';
|
|
25
25
|
import { getMathRendering } from '../tuiDisplayPrefs.js';
|
|
26
26
|
import { noteCodeHighlight, noteFormatToken } from '../ink/render-stats.js';
|
|
27
|
+
import { CJK_EMPHASIS_EXTENSIONS } from './cjk-emphasis.js';
|
|
27
28
|
import { isMathBlockToken, isMathToken, MATH_MARKDOWN_EXTENSIONS, renderInlineMath, } from './math.js';
|
|
28
29
|
// '\n' is used unconditionally — os.EOL is '\r\n' on Windows, and the stray
|
|
29
30
|
// '\r' breaks the character-to-segment mapping in applyStylesToWrappedText,
|
|
@@ -67,7 +68,9 @@ let markedInitialized = false;
|
|
|
67
68
|
* Configure the shared `marked` instance once. Strikethrough stays on
|
|
68
69
|
* marked's built-in del tokenizer, which only matches double-tilde pairs —
|
|
69
70
|
* single tildes (`~100`, models' "approximate") never pair up and render
|
|
70
|
-
* literally. LaTeX math becomes `math`/`mathBlock` tokens (see math.ts)
|
|
71
|
+
* literally. LaTeX math becomes `math`/`mathBlock` tokens (see math.ts),
|
|
72
|
+
* and CJK-adjacent strong emphasis (`**标签:**中文`, unclosable under
|
|
73
|
+
* CommonMark's flanking rule) closes via cjk-emphasis.ts.
|
|
71
74
|
* Every lexer caller — Markdown and StreamingMarkdown's boundary
|
|
72
75
|
* lex — must run this first so both agree on block boundaries.
|
|
73
76
|
*/
|
|
@@ -76,7 +79,9 @@ export function configureMarked() {
|
|
|
76
79
|
return;
|
|
77
80
|
markedInitialized = true;
|
|
78
81
|
marked.use({
|
|
79
|
-
|
|
82
|
+
// Math first: a $…$ body holding emphasis-looking ** stays a formula;
|
|
83
|
+
// the CJK strong pass only sees what math declined.
|
|
84
|
+
extensions: [...MATH_MARKDOWN_EXTENSIONS, ...CJK_EMPHASIS_EXTENSIONS],
|
|
80
85
|
});
|
|
81
86
|
}
|
|
82
87
|
/** Inline code is painted with the active theme's permission accent. */
|