@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
|
@@ -1,12 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The backend-neutral channel core: one composition for every
|
|
3
|
+
* `AgentSession`, whatever backend serves it.
|
|
4
|
+
*
|
|
5
|
+
* `createCoreChannel` acquires, in one owner transaction, the binding, the
|
|
6
|
+
* host seams and decision gate, the emitter, notifications, context
|
|
7
|
+
* bookkeeping, the IDE selection link, the composer and input pipeline (FIFO,
|
|
8
|
+
* `tui/input` decisions, `@` mentions, staged images, IDE selection) ending in
|
|
9
|
+
* `session.submit`, the shared projector feed, session switching (`/new`),
|
|
10
|
+
* local actions, files, reports and the capability-backed actions, and builds
|
|
11
|
+
* the common half of the `ChannelState`. Nothing is subscribed and no action
|
|
12
|
+
* is callable yet.
|
|
13
|
+
*
|
|
14
|
+
* An extension (the DSH extensions, `../extensions.ts`) then `extend`s the
|
|
15
|
+
* core: hooks into the feed and the emitter, state fields it serves, and its
|
|
16
|
+
* action delegates on top of the core's. `start()` installs the action table
|
|
17
|
+
* once, starts the runtime subscriptions, binds the session, and hands the
|
|
18
|
+
* channel lifetime to Cordis. A session no extension claims is served by the
|
|
19
|
+
* core alone: every action is backed by a capability, the core, or explicitly
|
|
20
|
+
* unavailable.
|
|
21
|
+
*/
|
|
1
22
|
import { markChannelReadDirty } from '../../../adapter/channel/read-view.js';
|
|
2
23
|
import { createActivityProjection } from '../../../channel/activity.js';
|
|
3
24
|
import { channelCapabilities } from '../../../channel/capabilities.js';
|
|
4
25
|
import { anchoredRow, prependHistoryRows, projectHistorySlice, restoreFoldedRows } from '../../../channel/history-restore.js';
|
|
5
26
|
import { t } from '../../../i18n.js';
|
|
6
27
|
import { WORKING_GATE_NOTICES } from '../../../commands.js';
|
|
28
|
+
import { markBoot } from '../../../utils/bootTrace.js';
|
|
7
29
|
import { logForDebugging } from '../../../utils/debug.js';
|
|
8
30
|
import { DEFAULT_SESSION_MODES } from '../../../sessionModes.js';
|
|
9
|
-
import { resolveContextOccupancy } from '../../context-occupancy.js';
|
|
31
|
+
import { resolveContextBreakdown, resolveContextOccupancy } from '../../context-occupancy.js';
|
|
10
32
|
import { IdeChannel, ideLockDir } from '../../ide-channel.js';
|
|
11
33
|
import { createChannelActionMethods, createChannelActionReadiness } from '../action-readiness.js';
|
|
12
34
|
import { createAttachedContextRegistry } from '../attached-context.js';
|
|
@@ -23,7 +45,7 @@ import { registerChannelOwner } from '../owner.js';
|
|
|
23
45
|
import { unavailablePermissionPresetSnapshot } from '../permissions.js';
|
|
24
46
|
import { createPreferences } from '../preferences.js';
|
|
25
47
|
import { createSettingsHosts } from '../settings-host.js';
|
|
26
|
-
import { createInitialChannelView } from '../state.js';
|
|
48
|
+
import { StartupOpenError, createInitialChannelView } from '../state.js';
|
|
27
49
|
import { createCapabilityDelegates, installChannelActions } from './actions.js';
|
|
28
50
|
import { createBindingFeed } from './binding-feed.js';
|
|
29
51
|
import { createCoreFiles, NO_COMPLETION_CATALOG } from './files.js';
|
|
@@ -53,6 +75,9 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
53
75
|
const host = resolveCoreHost(ctx, owner);
|
|
54
76
|
let extension = {};
|
|
55
77
|
let started = false;
|
|
78
|
+
/** One hook may extend the core during the first adoption; extend throws otherwise. */
|
|
79
|
+
let adoptHook;
|
|
80
|
+
let adoptWindow = false;
|
|
56
81
|
const emitter = createChannelEmitter(() => state, () => extension.flushDeferred?.() ?? false, {
|
|
57
82
|
// Folding drops a row's full text on the promise that `loadOlder`
|
|
58
83
|
// restores it; without a history slicer every row stays whole. A
|
|
@@ -205,7 +230,11 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
205
230
|
localImageStore ??= createLocalImageStore(() => binding.session.capabilities.images?.limits ?? NO_IMAGES);
|
|
206
231
|
return localImageStore;
|
|
207
232
|
};
|
|
208
|
-
const composer = createComposerImages(ctx, owner, {
|
|
233
|
+
const composer = createComposerImages(ctx, owner, {
|
|
234
|
+
generation: () => state.agentBindingGeneration,
|
|
235
|
+
sessionId: () => state.agentId,
|
|
236
|
+
localImages,
|
|
237
|
+
});
|
|
209
238
|
const files = createCoreFiles(ctx, {
|
|
210
239
|
owner,
|
|
211
240
|
binding,
|
|
@@ -227,7 +256,6 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
227
256
|
* matched by its call id, not by this.
|
|
228
257
|
*/
|
|
229
258
|
let agentMessageIntents = 0;
|
|
230
|
-
const messaging = binding.session.capabilities.subagents?.messaging;
|
|
231
259
|
const actionReadiness = createChannelActionReadiness();
|
|
232
260
|
const getReadyActions = () => {
|
|
233
261
|
owner.assertActive();
|
|
@@ -267,6 +295,74 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
267
295
|
// and never holding a non-DSH session's id): `read` is a cached lookup, so
|
|
268
296
|
// the accessor on the state below stays cheap.
|
|
269
297
|
const contextPressure = options.contextPressure;
|
|
298
|
+
const team = options.team;
|
|
299
|
+
/**
|
|
300
|
+
* The subagent control for `session`: interrupt always; the transcript read
|
|
301
|
+
* and messaging only while the session serves them. Rebuilt per adoption.
|
|
302
|
+
*/
|
|
303
|
+
const subagentControlFor = (session) => {
|
|
304
|
+
const messaging = session.capabilities.subagents?.messaging;
|
|
305
|
+
return {
|
|
306
|
+
interrupt: agentId => {
|
|
307
|
+
const control = binding.session.capabilities.subagents;
|
|
308
|
+
if (control === undefined) {
|
|
309
|
+
unavailable('agents');
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
const subagent = activity.subagent(agentId);
|
|
313
|
+
if (subagent === undefined || (subagent.status !== 'running' && subagent.status !== 'starting'))
|
|
314
|
+
return false;
|
|
315
|
+
void control.interrupt(subagent.agentId).then(stopped => {
|
|
316
|
+
if (!stopped && owner.current())
|
|
317
|
+
notify(t('subagent-interrupt-failed', { id: subagent.agentId.slice(0, 8) }), { color: 'warning', timeoutMs: 6000 });
|
|
318
|
+
}, (error) => {
|
|
319
|
+
if (owner.current())
|
|
320
|
+
notify(t('capability-failed', { name: 'agents', err: error instanceof Error ? error.message : String(error) }), { color: 'error', timeoutMs: 8000 });
|
|
321
|
+
});
|
|
322
|
+
return true;
|
|
323
|
+
},
|
|
324
|
+
// The child transcript source exists only while the bound session's
|
|
325
|
+
// `subagents.history` capability does (Claude's store read; the DSH
|
|
326
|
+
// extension replaces this whole control with one backed by its own
|
|
327
|
+
// child transcript reader). The detail scene renders a Transcript page
|
|
328
|
+
// only when this method exists. A failed read resolves null, so the
|
|
329
|
+
// scene shows "unavailable" rather than an empty transcript.
|
|
330
|
+
...(session.capabilities.subagents?.history === undefined ? {} : {
|
|
331
|
+
history: (agentId, window) => {
|
|
332
|
+
const history = binding.session.capabilities.subagents?.history;
|
|
333
|
+
if (history === undefined)
|
|
334
|
+
return Promise.resolve(null);
|
|
335
|
+
return history(agentId, window).catch(() => null);
|
|
336
|
+
},
|
|
337
|
+
}),
|
|
338
|
+
/** Parent-mediated messaging uses the session's submit pipeline. */
|
|
339
|
+
...(messaging === undefined ? {} : {
|
|
340
|
+
message: {
|
|
341
|
+
via: messaging,
|
|
342
|
+
steer: false,
|
|
343
|
+
listTargets: () => Promise.resolve(state.subagents.map(sub => ({
|
|
344
|
+
agentId: sub.agentId,
|
|
345
|
+
...(sub.sessionId === undefined ? {} : { sessionId: sub.sessionId }),
|
|
346
|
+
label: sub.description,
|
|
347
|
+
...(sub.mode === undefined ? {} : { mode: sub.mode }),
|
|
348
|
+
status: sub.status,
|
|
349
|
+
}))),
|
|
350
|
+
submit: (input) => {
|
|
351
|
+
const text = input.text.trim();
|
|
352
|
+
if (text === '')
|
|
353
|
+
return Promise.resolve({ ok: false, reason: 'failed', message: 'empty text' });
|
|
354
|
+
const name = input.targetName !== undefined && input.targetName.trim() !== '' ? input.targetName.trim() : input.targetId;
|
|
355
|
+
const tool = binding.session.capabilities.subagents?.messagingTool;
|
|
356
|
+
const envelope = tool === undefined ? t('agent-message-envelope', { name, id: input.targetId, text }) : t('agent-message-native-envelope', { tool, name, id: input.targetId, text });
|
|
357
|
+
const intentId = `agent-message-${(agentMessageIntents += 1)}`;
|
|
358
|
+
dispatchUserText(envelope, 'followup', [], undefined);
|
|
359
|
+
return Promise.resolve({ ok: true, intentId, state: 'issued' });
|
|
360
|
+
},
|
|
361
|
+
messages: () => activity.agentMessages(),
|
|
362
|
+
},
|
|
363
|
+
}),
|
|
364
|
+
};
|
|
365
|
+
};
|
|
270
366
|
const state = {
|
|
271
367
|
...createInputActions(() => state, () => binding.session, owner, inputConvergence, composer, (text, placement, images) => dispatchUserText(text, placement, images), (command, includeInContext) => getReadyActions().runLocalCommand(command, includeInContext), sessionId => { extension.touchSession?.(sessionId); }),
|
|
272
368
|
subscribe: emitter.subscribe,
|
|
@@ -303,6 +399,19 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
303
399
|
get contextOccupancy() {
|
|
304
400
|
return resolveContextOccupancy(contextPressure?.read(state.sessionId), state.lastUsage, state.contextWindow, feed.projector.contextUsage());
|
|
305
401
|
},
|
|
402
|
+
/**
|
|
403
|
+
* The composition half of the same meter unit, derived on read for the same
|
|
404
|
+
* reason (and refreshed by the same change feed). `undefined` on a harness
|
|
405
|
+
* whose meter publishes no `contextBreakdown`: the bar then weights its
|
|
406
|
+
* fills with this channel's own per-content-type estimates alone.
|
|
407
|
+
*/
|
|
408
|
+
get contextBreakdown() {
|
|
409
|
+
return resolveContextBreakdown(contextPressure?.readBreakdown?.(state.sessionId));
|
|
410
|
+
},
|
|
411
|
+
/** The bound session's Agent Team, a cached read of the team source. */
|
|
412
|
+
get team() {
|
|
413
|
+
return team?.teamOf(state.sessionId);
|
|
414
|
+
},
|
|
306
415
|
commandList: localCommandsFor(initialCapabilities.commands),
|
|
307
416
|
backendCapabilities: initialCapabilities,
|
|
308
417
|
capabilities: () => extension.agentCapabilities?.() ?? sessionAgentCapabilities(),
|
|
@@ -507,66 +616,7 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
507
616
|
};
|
|
508
617
|
},
|
|
509
618
|
...actionMethods,
|
|
510
|
-
subagentControl:
|
|
511
|
-
interrupt: agentId => {
|
|
512
|
-
const control = binding.session.capabilities.subagents;
|
|
513
|
-
if (control === undefined) {
|
|
514
|
-
unavailable('agents');
|
|
515
|
-
return false;
|
|
516
|
-
}
|
|
517
|
-
const subagent = activity.subagent(agentId);
|
|
518
|
-
if (subagent === undefined || (subagent.status !== 'running' && subagent.status !== 'starting'))
|
|
519
|
-
return false;
|
|
520
|
-
void control.interrupt(subagent.agentId).then(stopped => {
|
|
521
|
-
if (!stopped && owner.current())
|
|
522
|
-
notify(t('subagent-interrupt-failed', { id: subagent.agentId.slice(0, 8) }), { color: 'warning', timeoutMs: 6000 });
|
|
523
|
-
}, (error) => {
|
|
524
|
-
if (owner.current())
|
|
525
|
-
notify(t('capability-failed', { name: 'agents', err: error instanceof Error ? error.message : String(error) }), { color: 'error', timeoutMs: 8000 });
|
|
526
|
-
});
|
|
527
|
-
return true;
|
|
528
|
-
},
|
|
529
|
-
// The child transcript source exists only while the bound session's
|
|
530
|
-
// `subagents.history` capability does (Claude's store read; the DSH
|
|
531
|
-
// extension replaces this whole control with one backed by its own
|
|
532
|
-
// child transcript reader). The detail scene renders a Transcript page
|
|
533
|
-
// only when this method exists. A failed read resolves null, so the
|
|
534
|
-
// scene shows "unavailable" rather than an empty transcript.
|
|
535
|
-
...(binding.session.capabilities.subagents?.history === undefined ? {} : {
|
|
536
|
-
history: (agentId, window) => {
|
|
537
|
-
const history = binding.session.capabilities.subagents?.history;
|
|
538
|
-
if (history === undefined)
|
|
539
|
-
return Promise.resolve(null);
|
|
540
|
-
return history(agentId, window).catch(() => null);
|
|
541
|
-
},
|
|
542
|
-
}),
|
|
543
|
-
/** Parent-mediated messaging uses the session's submit pipeline. */
|
|
544
|
-
...(messaging === undefined ? {} : {
|
|
545
|
-
message: {
|
|
546
|
-
via: messaging,
|
|
547
|
-
steer: false,
|
|
548
|
-
listTargets: () => Promise.resolve(state.subagents.map(sub => ({
|
|
549
|
-
agentId: sub.agentId,
|
|
550
|
-
...(sub.sessionId === undefined ? {} : { sessionId: sub.sessionId }),
|
|
551
|
-
label: sub.description,
|
|
552
|
-
...(sub.mode === undefined ? {} : { mode: sub.mode }),
|
|
553
|
-
status: sub.status,
|
|
554
|
-
}))),
|
|
555
|
-
submit: (input) => {
|
|
556
|
-
const text = input.text.trim();
|
|
557
|
-
if (text === '')
|
|
558
|
-
return Promise.resolve({ ok: false, reason: 'failed', message: 'empty text' });
|
|
559
|
-
const name = input.targetName !== undefined && input.targetName.trim() !== '' ? input.targetName.trim() : input.targetId;
|
|
560
|
-
const tool = binding.session.capabilities.subagents?.messagingTool;
|
|
561
|
-
const envelope = tool === undefined ? t('agent-message-envelope', { name, id: input.targetId, text }) : t('agent-message-native-envelope', { tool, name, id: input.targetId, text });
|
|
562
|
-
const intentId = `agent-message-${(agentMessageIntents += 1)}`;
|
|
563
|
-
dispatchUserText(envelope, 'followup', [], undefined);
|
|
564
|
-
return Promise.resolve({ ok: true, intentId, state: 'issued' });
|
|
565
|
-
},
|
|
566
|
-
messages: () => activity.agentMessages(),
|
|
567
|
-
},
|
|
568
|
-
}),
|
|
569
|
-
},
|
|
619
|
+
subagentControl: subagentControlFor(initialSession),
|
|
570
620
|
jobControl: {
|
|
571
621
|
kill: id => {
|
|
572
622
|
const tasks = binding.session.capabilities.tasks;
|
|
@@ -668,6 +718,13 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
668
718
|
state.emit();
|
|
669
719
|
}));
|
|
670
720
|
}
|
|
721
|
+
// Same for the team roster: the Lead log moves it between this session's events.
|
|
722
|
+
if (team !== undefined) {
|
|
723
|
+
owner.own(team.subscribe(() => {
|
|
724
|
+
if (owner.current())
|
|
725
|
+
state.emit();
|
|
726
|
+
}));
|
|
727
|
+
}
|
|
671
728
|
const controls = createSessionControls({ state: () => state, backendLabel: () => state.backendCapabilities.backendLabel });
|
|
672
729
|
const feed = createBindingFeed(ctx, {
|
|
673
730
|
owner,
|
|
@@ -683,7 +740,8 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
683
740
|
trajectory: { observe: (event, replaying) => { if (trajectoryOwned())
|
|
684
741
|
agentTrajectory.observe(event, replaying); } },
|
|
685
742
|
checkContextWarning, notify: (...args) => notify(...args),
|
|
686
|
-
|
|
743
|
+
// Read per event (late row).
|
|
744
|
+
get renderer() { return host.rendererRuntime; },
|
|
687
745
|
selectionAttached: messageId => selectionAttachments.take(messageId),
|
|
688
746
|
},
|
|
689
747
|
resetTrajectory: () => { if (trajectoryOwned())
|
|
@@ -769,10 +827,15 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
769
827
|
state,
|
|
770
828
|
rowIds,
|
|
771
829
|
resetProjection: feed.resetProjection,
|
|
772
|
-
resetActivity:
|
|
830
|
+
resetActivity: candidate => {
|
|
831
|
+
activity.reset();
|
|
832
|
+
if (activityOwned())
|
|
833
|
+
state.subagentControl = subagentControlFor(candidate);
|
|
834
|
+
},
|
|
773
835
|
snapshotOf,
|
|
774
836
|
resetControls: controls.reset,
|
|
775
837
|
bind: seed => feed.bind(seed),
|
|
838
|
+
attach: candidate => { attachOnAdopt(candidate); },
|
|
776
839
|
bound: () => binding.session,
|
|
777
840
|
mounts: SESSION_MOUNT_LEDGER,
|
|
778
841
|
...(options.sessionPrefs === undefined ? {} : { touch: (sessionId) => options.sessionPrefs?.touch(sessionId) }),
|
|
@@ -798,7 +861,7 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
798
861
|
binding,
|
|
799
862
|
state,
|
|
800
863
|
rowIds,
|
|
801
|
-
workspace
|
|
864
|
+
get workspace() { return host.workspaceService; },
|
|
802
865
|
resetProjection: feed.resetProjection,
|
|
803
866
|
notify,
|
|
804
867
|
unavailable,
|
|
@@ -821,15 +884,196 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
821
884
|
},
|
|
822
885
|
});
|
|
823
886
|
const reports = createCoreReports({ owner, binding, state: () => state });
|
|
887
|
+
/**
|
|
888
|
+
* Adopt the startup session once its open settles (`options.startup`). No
|
|
889
|
+
* switch: no veto, no switched notice, and the rows stay. A failed open
|
|
890
|
+
* leaves the placeholder bound and `ready` false, with a notice row
|
|
891
|
+
* pointing at `/new` (or a `StartupOpenError`'s own hint).
|
|
892
|
+
*/
|
|
893
|
+
const adoptStartup = (startup) => {
|
|
894
|
+
const adoption = binding.capture();
|
|
895
|
+
let history = [];
|
|
896
|
+
let route;
|
|
897
|
+
let agentPreset;
|
|
898
|
+
const backend = state.backendCapabilities.backendLabel;
|
|
899
|
+
// The shared open-failure funnel: also the tail segment's, so a throw
|
|
900
|
+
// after a successful open can never escape as an unhandled rejection.
|
|
901
|
+
const onOpenFailed = (error) => {
|
|
902
|
+
// Released, or a `/new` / `/resume` replaced the placeholder first.
|
|
903
|
+
// A tail throw released the channel (binding.adopt's rollback), so it
|
|
904
|
+
// takes this same early exit.
|
|
905
|
+
if (!owner.current() || binding.session !== adoption.session)
|
|
906
|
+
return;
|
|
907
|
+
logForDebugging(`channel: startup session failed to open (${error instanceof Error ? error.message : String(error)})`);
|
|
908
|
+
// A notice is one line: the reason's first line, and the way out on a
|
|
909
|
+
// row of its own so a long reason cannot crowd it out.
|
|
910
|
+
const reason = (error instanceof Error ? error.message : String(error)).split('\n')[0];
|
|
911
|
+
state.startupFailure = reason;
|
|
912
|
+
state.rows.push({ id: rowIds.value++, kind: 'notice', text: t('startup-open-failed', { backend, err: reason }) });
|
|
913
|
+
state.rows.push({ id: rowIds.value++, kind: 'notice', text: error instanceof StartupOpenError ? error.hint : t('startup-open-failed-hint') });
|
|
914
|
+
state.emit();
|
|
915
|
+
};
|
|
916
|
+
void binding.prepare(adoption, async () => {
|
|
917
|
+
const opened = await startup;
|
|
918
|
+
history = opened.history;
|
|
919
|
+
route = opened.route;
|
|
920
|
+
agentPreset = opened.agentPreset;
|
|
921
|
+
return opened.session;
|
|
922
|
+
}).then(async (candidate) => {
|
|
923
|
+
try {
|
|
924
|
+
const previousCwd = state.cwd;
|
|
925
|
+
binding.adopt(candidate, adoption, (_previous, disposePrevious) => {
|
|
926
|
+
feed.resetProjection();
|
|
927
|
+
if (activityOwned()) {
|
|
928
|
+
activity.reset();
|
|
929
|
+
state.subagentControl = subagentControlFor(candidate);
|
|
930
|
+
}
|
|
931
|
+
state.agentId = candidate.ref.sessionId;
|
|
932
|
+
state.sessionId = candidate.ref.sessionId;
|
|
933
|
+
// A resumed session runs where it was recorded, known only now.
|
|
934
|
+
state.cwd = candidate.cwd;
|
|
935
|
+
state.displayCwd = host.workspaceService.describe(candidate.cwd).description ?? candidate.cwd;
|
|
936
|
+
state.backendCapabilities = snapshotOf(candidate);
|
|
937
|
+
// Route and preset the opener resolved only now; written before the
|
|
938
|
+
// extensions attach, so theirs win.
|
|
939
|
+
if (route !== undefined) {
|
|
940
|
+
state.provider = route.provider;
|
|
941
|
+
state.model = route.model;
|
|
942
|
+
}
|
|
943
|
+
if (agentPreset !== undefined)
|
|
944
|
+
state.agentPreset = agentPreset;
|
|
945
|
+
controls.reset();
|
|
946
|
+
attachOnAdopt(candidate);
|
|
947
|
+
state.ready = true;
|
|
948
|
+
state.startupFailure = undefined;
|
|
949
|
+
feed.bind(history);
|
|
950
|
+
disposePrevious('dispose');
|
|
951
|
+
state.emit();
|
|
952
|
+
});
|
|
953
|
+
if (state.cwd !== previousCwd)
|
|
954
|
+
resetIdeSelection();
|
|
955
|
+
refreshGitBranch();
|
|
956
|
+
scheduleSessionPreload();
|
|
957
|
+
markBoot('startup-adopted');
|
|
958
|
+
}
|
|
959
|
+
catch (error) {
|
|
960
|
+
// The tail segment runs after the open succeeded; its throws take
|
|
961
|
+
// the open-failure funnel below instead of an unhandled rejection.
|
|
962
|
+
// binding.adopt() already revoked a failed transaction (the candidate
|
|
963
|
+
// is closed, the channel released); a throw from before that point
|
|
964
|
+
// still owns a prepared candidate, so hand it back for closing.
|
|
965
|
+
logForDebugging(`channel: startup adoption tail failed (${error instanceof Error ? error.message : String(error)})`);
|
|
966
|
+
try {
|
|
967
|
+
await binding.abandon(candidate);
|
|
968
|
+
}
|
|
969
|
+
catch { /* a failed close must not mask the setup error */ }
|
|
970
|
+
throw error;
|
|
971
|
+
}
|
|
972
|
+
}).catch(onOpenFailed);
|
|
973
|
+
};
|
|
824
974
|
/** A fresh session in another directory (the session browser's new-session
|
|
825
975
|
* card, `/workspace`'s handoff): the core `/new` with a target. */
|
|
826
976
|
const workspaces = createWorkspaceActions(state, {
|
|
827
977
|
owner,
|
|
828
|
-
service
|
|
978
|
+
get service() { return host.workspaceService; },
|
|
829
979
|
newSession: target => sessionSwitch.newSession(target),
|
|
830
980
|
refreshGitBranch: () => refreshGitBranch(),
|
|
831
981
|
notify,
|
|
832
982
|
});
|
|
983
|
+
/** The actions the core serves itself (read at install time: the
|
|
984
|
+
* completion catalog is the extension's). */
|
|
985
|
+
const coreDelegates = () => ({
|
|
986
|
+
commandCompletions: files.commandCompletions(extension.completions ?? NO_COMPLETION_CATALOG),
|
|
987
|
+
runLocalCommand: local.runLocalCommand,
|
|
988
|
+
loadOlder: local.loadOlder,
|
|
989
|
+
clear: () => {
|
|
990
|
+
local.clear();
|
|
991
|
+
clearedGeneration = state.agentBindingGeneration;
|
|
992
|
+
},
|
|
993
|
+
setActivityFrames: local.setActivityFrames,
|
|
994
|
+
pushLocal: local.pushLocal,
|
|
995
|
+
listFileCandidates: files.listFileCandidates,
|
|
996
|
+
listFiles: files.listFiles,
|
|
997
|
+
doctorInfo: reports.doctorInfo,
|
|
998
|
+
exportSession: reports.exportSession,
|
|
999
|
+
newSession: () => sessionSwitch.newSession(),
|
|
1000
|
+
// `/agents` from the event-driven roster (the DSH extension serves its own).
|
|
1001
|
+
mcpStatus: () => {
|
|
1002
|
+
if (binding.session.capabilities.mcp === undefined)
|
|
1003
|
+
return unavailableLines('mcp');
|
|
1004
|
+
const fence = mcpFence();
|
|
1005
|
+
return controls.mcpReport(fence.session, fence.current) ?? [t('backend-mcp-loading')];
|
|
1006
|
+
},
|
|
1007
|
+
listSubagents: () => Promise.resolve(binding.session.capabilities.subagents === undefined ? unavailableLines('agents') : activity.listLines()),
|
|
1008
|
+
resolveWorkspace: workspaces.resolveWorkspace,
|
|
1009
|
+
switchWorkspace: workspaces.switchWorkspace,
|
|
1010
|
+
...sessionActions.delegates,
|
|
1011
|
+
});
|
|
1012
|
+
let listedFrom;
|
|
1013
|
+
let listedCwd;
|
|
1014
|
+
const installActions = (replace) => {
|
|
1015
|
+
const listSessions = extension.delegates?.listSessions ?? sessionActions.delegates.listSessions;
|
|
1016
|
+
installChannelActions(actionReadiness, {
|
|
1017
|
+
unavailable,
|
|
1018
|
+
unavailableLines,
|
|
1019
|
+
capability: createCapabilityDelegates({
|
|
1020
|
+
owner,
|
|
1021
|
+
session: () => binding.session,
|
|
1022
|
+
state: () => state,
|
|
1023
|
+
notify,
|
|
1024
|
+
unavailable,
|
|
1025
|
+
unavailableLines,
|
|
1026
|
+
guarded,
|
|
1027
|
+
}),
|
|
1028
|
+
core: coreDelegates(),
|
|
1029
|
+
extension: {
|
|
1030
|
+
...extension.delegates,
|
|
1031
|
+
listSessions: (onEnriched, onPartial) => {
|
|
1032
|
+
listedFrom = listSessions;
|
|
1033
|
+
listedCwd = state.cwd;
|
|
1034
|
+
return listSessions(onEnriched, onPartial);
|
|
1035
|
+
},
|
|
1036
|
+
},
|
|
1037
|
+
}, replace);
|
|
1038
|
+
};
|
|
1039
|
+
/** The first adoption can install DSH listing actions or change cwd. */
|
|
1040
|
+
const scheduleSessionPreload = () => {
|
|
1041
|
+
if (options.sessionCatalog === undefined && extension.delegates?.listSessions === undefined)
|
|
1042
|
+
return;
|
|
1043
|
+
const preload = setImmediate(() => {
|
|
1044
|
+
releasePreload();
|
|
1045
|
+
const listSessions = extension.delegates?.listSessions ?? sessionActions.delegates.listSessions;
|
|
1046
|
+
if (!owner.current() || (listedFrom === listSessions && listedCwd === state.cwd))
|
|
1047
|
+
return;
|
|
1048
|
+
void state.listSessions().catch(error => {
|
|
1049
|
+
logForDebugging(`session list preload failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
1050
|
+
});
|
|
1051
|
+
});
|
|
1052
|
+
const releasePreload = owner.own(() => clearImmediate(preload));
|
|
1053
|
+
};
|
|
1054
|
+
/** Runs `adoptHook` after the core wrote the session's state, before the
|
|
1055
|
+
* bind; a throw fails the adoption transaction. */
|
|
1056
|
+
const attachOnAdopt = (candidate) => {
|
|
1057
|
+
const hook = adoptHook;
|
|
1058
|
+
if (hook === undefined)
|
|
1059
|
+
return;
|
|
1060
|
+
adoptHook = undefined;
|
|
1061
|
+
const before = extension;
|
|
1062
|
+
adoptWindow = true;
|
|
1063
|
+
try {
|
|
1064
|
+
hook(candidate);
|
|
1065
|
+
}
|
|
1066
|
+
finally {
|
|
1067
|
+
adoptWindow = false;
|
|
1068
|
+
}
|
|
1069
|
+
if (extension === before)
|
|
1070
|
+
return;
|
|
1071
|
+
installActions(true);
|
|
1072
|
+
if (extension.start !== before.start) {
|
|
1073
|
+
extension.start?.before?.();
|
|
1074
|
+
extension.start?.after?.();
|
|
1075
|
+
}
|
|
1076
|
+
};
|
|
833
1077
|
const refreshGitBranch = createGitBranchRefresher(ctx, {
|
|
834
1078
|
owner,
|
|
835
1079
|
state,
|
|
@@ -854,9 +1098,9 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
854
1098
|
reports,
|
|
855
1099
|
resetIdeSelection,
|
|
856
1100
|
refreshGitBranch,
|
|
857
|
-
/** Merge an extension's contributions (before `start
|
|
1101
|
+
/** Merge an extension's contributions (before `start`, or in the adoption window). */
|
|
858
1102
|
extend(next) {
|
|
859
|
-
if (started)
|
|
1103
|
+
if (started && !adoptWindow)
|
|
860
1104
|
throw new Error('dsh-tui: Channel extensions must attach before the channel starts');
|
|
861
1105
|
extension = {
|
|
862
1106
|
...extension,
|
|
@@ -864,67 +1108,34 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
864
1108
|
delegates: { ...extension.delegates, ...next.delegates },
|
|
865
1109
|
};
|
|
866
1110
|
},
|
|
1111
|
+
/** Register (before `start`) the adoption-window hook (see `adoptHook`). */
|
|
1112
|
+
extendOnAdopt(hook) {
|
|
1113
|
+
if (started)
|
|
1114
|
+
throw new Error('dsh-tui: Channel adoption extensions must register before the channel starts');
|
|
1115
|
+
if (adoptHook !== undefined)
|
|
1116
|
+
throw new Error('dsh-tui: Channel adoption extension already registered');
|
|
1117
|
+
adoptHook = hook;
|
|
1118
|
+
},
|
|
867
1119
|
/** Install the actions, start the runtime, bind the session. */
|
|
868
1120
|
start() {
|
|
869
1121
|
if (started)
|
|
870
1122
|
throw new Error('dsh-tui: Channel already started');
|
|
871
1123
|
started = true;
|
|
872
|
-
|
|
873
|
-
commandCompletions: files.commandCompletions(extension.completions ?? NO_COMPLETION_CATALOG),
|
|
874
|
-
runLocalCommand: local.runLocalCommand,
|
|
875
|
-
loadOlder: local.loadOlder,
|
|
876
|
-
clear: () => {
|
|
877
|
-
local.clear();
|
|
878
|
-
clearedGeneration = state.agentBindingGeneration;
|
|
879
|
-
},
|
|
880
|
-
setActivityFrames: local.setActivityFrames,
|
|
881
|
-
pushLocal: local.pushLocal,
|
|
882
|
-
listFileCandidates: files.listFileCandidates,
|
|
883
|
-
listFiles: files.listFiles,
|
|
884
|
-
doctorInfo: reports.doctorInfo,
|
|
885
|
-
exportSession: reports.exportSession,
|
|
886
|
-
newSession: () => sessionSwitch.newSession(),
|
|
887
|
-
// `/agents` from the event-driven roster (the DSH extension serves its own).
|
|
888
|
-
mcpStatus: () => {
|
|
889
|
-
if (binding.session.capabilities.mcp === undefined)
|
|
890
|
-
return unavailableLines('mcp');
|
|
891
|
-
const fence = mcpFence();
|
|
892
|
-
return controls.mcpReport(fence.session, fence.current) ?? [t('backend-mcp-loading')];
|
|
893
|
-
},
|
|
894
|
-
listSubagents: () => Promise.resolve(binding.session.capabilities.subagents === undefined ? unavailableLines('agents') : activity.listLines()),
|
|
895
|
-
resolveWorkspace: workspaces.resolveWorkspace,
|
|
896
|
-
switchWorkspace: workspaces.switchWorkspace,
|
|
897
|
-
...sessionActions.delegates,
|
|
898
|
-
};
|
|
899
|
-
installChannelActions(actionReadiness, {
|
|
900
|
-
unavailable,
|
|
901
|
-
unavailableLines,
|
|
902
|
-
capability: createCapabilityDelegates({
|
|
903
|
-
owner,
|
|
904
|
-
session: () => binding.session,
|
|
905
|
-
state: () => state,
|
|
906
|
-
notify,
|
|
907
|
-
unavailable,
|
|
908
|
-
unavailableLines,
|
|
909
|
-
guarded,
|
|
910
|
-
}),
|
|
911
|
-
core,
|
|
912
|
-
extension: extension.delegates,
|
|
913
|
-
});
|
|
1124
|
+
installActions(false);
|
|
914
1125
|
// Everything below can synchronously invoke external callbacks. It runs
|
|
915
1126
|
// only after the owner is registered and the complete delegate surface
|
|
916
1127
|
// is installed; the outer construction transaction rolls every step back.
|
|
917
1128
|
extension.start?.before?.();
|
|
918
|
-
startHostSubscriptions(host, owner, state);
|
|
1129
|
+
startHostSubscriptions(host, owner, state, ctx);
|
|
919
1130
|
extension.start?.after?.();
|
|
920
1131
|
// The startup session's history, read ahead of construction, paints
|
|
921
1132
|
// before any live event (an extension owning the facts replays its own).
|
|
922
1133
|
feed.bind(extension.bind?.ownsSessionFacts === true ? undefined : options.initialHistory);
|
|
923
|
-
|
|
1134
|
+
scheduleSessionPreload();
|
|
1135
|
+
// The host owns the Channel lifetime. Rebinding handles the common case;
|
|
924
1136
|
// this effect closes the final timer and releases the DecisionEvents
|
|
925
|
-
// dispatch-topology marker when the
|
|
926
|
-
|
|
927
|
-
effect?.call(ctx, () => () => {
|
|
1137
|
+
// dispatch-topology marker when the host unloads the Channel.
|
|
1138
|
+
ctx.effect?.(() => () => {
|
|
928
1139
|
// The context owns the complete Channel lifetime. Keep emitter and
|
|
929
1140
|
// IDE-link teardown in the same finally funnel.
|
|
930
1141
|
state.releaseContributions();
|
|
@@ -932,6 +1143,8 @@ export function createCoreChannel(ctx, initialSession, options, owner) {
|
|
|
932
1143
|
refreshGitBranch();
|
|
933
1144
|
if (extension.bind?.ownsSessionFacts !== true)
|
|
934
1145
|
state.emit();
|
|
1146
|
+
if (options.startup !== undefined)
|
|
1147
|
+
adoptStartup(options.startup);
|
|
935
1148
|
return state;
|
|
936
1149
|
},
|
|
937
1150
|
};
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* own commands join the command list itself (core/session-controls.ts), so
|
|
8
8
|
* completion lists them like any other entry.
|
|
9
9
|
*/
|
|
10
|
-
import type {
|
|
10
|
+
import type { ServiceLookup } from '../channel-host.js';
|
|
11
11
|
import type { CommandCompletionNode } from '../../../commands.js';
|
|
12
12
|
import type { ChannelBinding } from '../binding.js';
|
|
13
13
|
import type { ChannelOwner } from '../owner.js';
|
|
@@ -32,10 +32,15 @@ export interface CompletionCatalog {
|
|
|
32
32
|
}[];
|
|
33
33
|
warmEffortLevels(): void;
|
|
34
34
|
};
|
|
35
|
+
/** `/plugin info <name>`: the bundles the profile added (absent = no service). */
|
|
36
|
+
plugin?: {
|
|
37
|
+
warmPluginNames(): void;
|
|
38
|
+
pluginNames(): readonly CommandCompletionNode[];
|
|
39
|
+
};
|
|
35
40
|
}
|
|
36
41
|
/** No argument catalogs: the tree offers its static nodes only. */
|
|
37
42
|
export declare const NO_COMPLETION_CATALOG: CompletionCatalog;
|
|
38
|
-
export declare function createCoreFiles(ctx:
|
|
43
|
+
export declare function createCoreFiles(ctx: ServiceLookup, deps: {
|
|
39
44
|
owner: Pick<ChannelOwner, 'current' | 'signal'>;
|
|
40
45
|
binding: Pick<ChannelBinding, 'capture' | 'isCurrent'>;
|
|
41
46
|
state: () => ChannelState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../../src/dsh-adapter/channel/core/files.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../../src/dsh-adapter/channel/core/files.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAKnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,IAAI,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACnG,KAAK,EAAE;QACL,cAAc,IAAI,IAAI,CAAA;QACtB,UAAU,IAAI,SAAS,qBAAqB,EAAE,CAAA;QAC9C,iBAAiB,IAAI,IAAI,CAAA;QACzB,aAAa,IAAI,SAAS;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,EAAE,CAAA;QACpG,gBAAgB,IAAI,IAAI,CAAA;KACzB,CAAA;IACD,kFAAkF;IAClF,MAAM,CAAC,EAAE;QACP,eAAe,IAAI,IAAI,CAAA;QACvB,WAAW,IAAI,SAAS,qBAAqB,EAAE,CAAA;KAChD,CAAA;CACF;AAED,mEAAmE;AACnE,eAAO,MAAM,qBAAqB,EAAE,iBASnC,CAAA;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAA;IAC/C,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,WAAW,CAAC,CAAA;IACtD,KAAK,EAAE,MAAM,YAAY,CAAA;IACzB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,cAAc,CAAC,CAAA;IAClD,sEAAsE;IACtE,aAAa,IAAI,OAAO,CAAA;IACxB,gEAAgE;IAChE,UAAU,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;CAC7C;sBAIwB,SAAS,GAAG,SAAS;;cA5C9C,CAAA;YAAmB,CAAC;;;IAyDhB,qEAAqE;gCACzC,iBAAiB,GAAG,YAAY,CAAC,oBAAoB,CAAC;EAYrF"}
|
|
@@ -39,6 +39,7 @@ export function createCoreFiles(ctx, deps) {
|
|
|
39
39
|
workspaceCommands: catalog.workspaceCommands,
|
|
40
40
|
...(deps.mcpServers === undefined ? {} : { mcpServers: deps.mcpServers }),
|
|
41
41
|
model: catalog.model,
|
|
42
|
+
...(catalog.plugin === undefined ? {} : { plugin: catalog.plugin }),
|
|
42
43
|
});
|
|
43
44
|
},
|
|
44
45
|
};
|