@deepseek-harness-tui/dsh-tui 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -14
- package/bin/dsh-tui.js +200 -34
- package/cordis.patch.yml +16 -52
- package/cordis.yml +6 -2
- package/guide/dsh-tui-guide/claude-backend.en.md +44 -7
- package/guide/dsh-tui-guide/claude-backend.md +28 -6
- package/guide/dsh-tui-guide/codex-backend.en.md +34 -7
- package/guide/dsh-tui-guide/codex-backend.md +17 -2
- package/guide/dsh-tui-guide/configuration.en.md +129 -16
- package/guide/dsh-tui-guide/configuration.md +110 -14
- package/guide/dsh-tui-guide/interaction.en.md +57 -24
- package/guide/dsh-tui-guide/interaction.md +42 -19
- package/guide/dsh-tui-guide/plugins.en.md +36 -3
- package/guide/dsh-tui-guide/plugins.md +21 -2
- package/guide/dsh-tui-guide/themes.en.md +23 -14
- package/guide/dsh-tui-guide/themes.md +19 -12
- package/guide/dsh-tui-guide/user-guide.en.md +51 -20
- package/guide/dsh-tui-guide/user-guide.md +41 -21
- package/lib/settings.json +103 -9
- package/lib/types/adapter/channel/ui-policy.d.ts +1 -1
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +3 -0
- package/lib/types/adapter/channel/ui.d.ts +2 -0
- package/lib/types/adapter/channel/ui.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui.js +6 -2
- package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
- package/lib/types/adapter/kernel/runtime.js +2 -0
- package/lib/types/adapter/ports/channel-settings.d.ts +9 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +50 -12
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +21 -0
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/adapter/spec/backend-capabilities.d.ts +22 -0
- package/lib/types/adapter/spec/backend-capabilities.d.ts.map +1 -0
- package/lib/types/adapter/spec/backend-capabilities.js +49 -0
- package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
- package/lib/types/adapter/spec/protocol-constants.js +10 -3
- package/lib/types/adapter/spec/tui-contributions.d.ts +3 -0
- package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
- package/lib/types/adapter/spec/tui-contributions.js +7 -0
- package/lib/types/adapter/standard/registry.d.ts +6 -0
- package/lib/types/adapter/standard/registry.d.ts.map +1 -1
- package/lib/types/adapter/standard/registry.js +65 -15
- package/lib/types/adapter/standard/tui-extension.d.ts.map +1 -1
- package/lib/types/adapter/standard/tui-extension.js +7 -1
- package/lib/types/adapter/standard/types.d.ts +10 -1
- package/lib/types/adapter/standard/types.d.ts.map +1 -1
- package/lib/types/adapter/upstream/host-descriptor-driver.d.ts.map +1 -1
- package/lib/types/adapter/upstream/host-descriptor-driver.js +52 -0
- package/lib/types/agent/backend-manifest.d.ts +152 -0
- package/lib/types/agent/backend-manifest.d.ts.map +1 -0
- package/lib/types/agent/backend-manifest.js +14 -0
- package/lib/types/agent/backend.d.ts +71 -5
- package/lib/types/agent/backend.d.ts.map +1 -1
- package/lib/types/agent/capabilities.d.ts +6 -0
- package/lib/types/agent/capabilities.d.ts.map +1 -1
- package/lib/types/agent/index.d.ts +2 -0
- package/lib/types/agent/index.d.ts.map +1 -1
- package/lib/types/agent/refs.d.ts +11 -1
- package/lib/types/agent/refs.d.ts.map +1 -1
- package/lib/types/agent/starting-session.d.ts +4 -0
- package/lib/types/agent/starting-session.d.ts.map +1 -0
- package/lib/types/agent/starting-session.js +19 -0
- package/lib/types/backends/claude/activity.d.ts +1 -1
- package/lib/types/backends/claude/activity.d.ts.map +1 -1
- package/lib/types/backends/claude/activity.js +5 -5
- package/lib/types/backends/claude/auth.d.ts.map +1 -1
- package/lib/types/backends/claude/auth.js +10 -3
- package/lib/types/backends/claude/backend.d.ts.map +1 -1
- package/lib/types/backends/claude/backend.js +103 -29
- package/lib/types/backends/claude/catalog.d.ts +2 -1
- package/lib/types/backends/claude/catalog.d.ts.map +1 -1
- package/lib/types/backends/claude/catalog.js +15 -5
- package/lib/types/backends/claude/channels.d.ts +5 -3
- package/lib/types/backends/claude/channels.d.ts.map +1 -1
- package/lib/types/backends/claude/channels.js +5 -4
- package/lib/types/backends/claude/contract.d.ts +4 -0
- package/lib/types/backends/claude/contract.d.ts.map +1 -1
- package/lib/types/backends/claude/contract.js +4 -0
- package/lib/types/backends/claude/controls.d.ts +4 -0
- package/lib/types/backends/claude/controls.d.ts.map +1 -1
- package/lib/types/backends/claude/controls.js +34 -42
- package/lib/types/backends/claude/dialogs.d.ts +8 -2
- package/lib/types/backends/claude/dialogs.d.ts.map +1 -1
- package/lib/types/backends/claude/dialogs.js +24 -16
- package/lib/types/backends/claude/images.d.ts +1 -1
- package/lib/types/backends/claude/images.d.ts.map +1 -1
- package/lib/types/backends/claude/images.js +7 -7
- package/lib/types/backends/claude/manifest.d.ts +21 -0
- package/lib/types/backends/claude/manifest.d.ts.map +1 -0
- package/lib/types/backends/claude/manifest.js +29 -0
- package/lib/types/backends/claude/older-history.js +2 -2
- package/lib/types/backends/claude/permissions.js +11 -11
- package/lib/types/backends/claude/prefs.d.ts +4 -2
- package/lib/types/backends/claude/prefs.d.ts.map +1 -1
- package/lib/types/backends/claude/prefs.js +4 -3
- package/lib/types/backends/claude/process.d.ts +16 -4
- package/lib/types/backends/claude/process.d.ts.map +1 -1
- package/lib/types/backends/claude/process.js +100 -37
- package/lib/types/backends/claude/send-message.d.ts +1 -1
- package/lib/types/backends/claude/send-message.d.ts.map +1 -1
- package/lib/types/backends/claude/session/auth.js +22 -22
- package/lib/types/backends/claude/session/channels.d.ts +4 -0
- package/lib/types/backends/claude/session/channels.d.ts.map +1 -1
- package/lib/types/backends/claude/session/channels.js +5 -3
- package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -1
- package/lib/types/backends/claude/session/lifecycle.js +31 -23
- package/lib/types/backends/claude/session/store.js +8 -8
- package/lib/types/backends/claude/session/subagents.js +2 -2
- package/lib/types/backends/claude/session/types.d.ts +7 -0
- package/lib/types/backends/claude/session/types.d.ts.map +1 -1
- package/lib/types/backends/claude/side-query.js +3 -3
- package/lib/types/backends/claude/task-output.js +5 -5
- package/lib/types/backends/claude/text.d.ts +778 -0
- package/lib/types/backends/claude/text.d.ts.map +1 -0
- package/lib/types/backends/claude/text.js +298 -0
- package/lib/types/backends/claude/transcript-file.d.ts +1 -1
- package/lib/types/backends/claude/transcript-file.d.ts.map +1 -1
- package/lib/types/backends/claude/transcript-file.js +4 -4
- package/lib/types/backends/claude/translate/attempts.js +2 -2
- package/lib/types/backends/claude/translate/core.js +3 -3
- package/lib/types/backends/claude/translate/messages.js +4 -4
- package/lib/types/backends/claude/translate/system.js +14 -14
- package/lib/types/backends/claude/translate/tasks.js +2 -2
- package/lib/types/backends/claude/translate/types.d.ts +1 -1
- package/lib/types/backends/claude/translate/types.d.ts.map +1 -1
- package/lib/types/backends/codex/auth/external-tokens.js +16 -16
- package/lib/types/backends/codex/auth/status.js +14 -14
- package/lib/types/backends/codex/backend.d.ts +4 -19
- package/lib/types/backends/codex/backend.d.ts.map +1 -1
- package/lib/types/backends/codex/backend.js +118 -25
- package/lib/types/backends/codex/catalog.d.ts +2 -1
- package/lib/types/backends/codex/catalog.d.ts.map +1 -1
- package/lib/types/backends/codex/catalog.js +63 -18
- package/lib/types/backends/codex/channels.d.ts +6 -3
- package/lib/types/backends/codex/channels.d.ts.map +1 -1
- package/lib/types/backends/codex/channels.js +15 -13
- package/lib/types/backends/codex/detect.d.ts.map +1 -1
- package/lib/types/backends/codex/detect.js +9 -6
- package/lib/types/backends/codex/manifest.d.ts +30 -0
- package/lib/types/backends/codex/manifest.d.ts.map +1 -0
- package/lib/types/backends/codex/manifest.js +23 -0
- package/lib/types/backends/codex/prefs.d.ts +4 -2
- package/lib/types/backends/codex/prefs.d.ts.map +1 -1
- package/lib/types/backends/codex/prefs.js +4 -3
- package/lib/types/backends/codex/rpc/hub.js +2 -2
- package/lib/types/backends/codex/session/activity.d.ts +1 -1
- package/lib/types/backends/codex/session/activity.d.ts.map +1 -1
- package/lib/types/backends/codex/session/activity.js +13 -13
- package/lib/types/backends/codex/session/approvals.js +30 -30
- package/lib/types/backends/codex/session/commands.d.ts +8 -2
- package/lib/types/backends/codex/session/commands.d.ts.map +1 -1
- package/lib/types/backends/codex/session/commands.js +71 -23
- package/lib/types/backends/codex/session/controls.d.ts +1 -1
- package/lib/types/backends/codex/session/controls.d.ts.map +1 -1
- package/lib/types/backends/codex/session/controls.js +21 -16
- package/lib/types/backends/codex/session/goals.d.ts.map +1 -1
- package/lib/types/backends/codex/session/goals.js +3 -3
- package/lib/types/backends/codex/session/history.js +2 -2
- package/lib/types/backends/codex/session/images.js +8 -8
- package/lib/types/backends/codex/session/input.d.ts +6 -2
- package/lib/types/backends/codex/session/input.d.ts.map +1 -1
- package/lib/types/backends/codex/session/input.js +55 -13
- package/lib/types/backends/codex/session/plan-review.js +6 -6
- package/lib/types/backends/codex/session/session.d.ts.map +1 -1
- package/lib/types/backends/codex/session/session.js +66 -34
- package/lib/types/backends/codex/session/side-query.d.ts.map +1 -1
- package/lib/types/backends/codex/session/side-query.js +27 -9
- package/lib/types/backends/codex/session/state.d.ts +6 -1
- package/lib/types/backends/codex/session/state.d.ts.map +1 -1
- package/lib/types/backends/codex/session/subagents.js +5 -5
- package/lib/types/backends/codex/session/tasks.js +4 -4
- package/lib/types/backends/codex/text.d.ts +933 -0
- package/lib/types/backends/codex/text.d.ts.map +1 -0
- package/lib/types/backends/codex/text.js +313 -0
- package/lib/types/backends/codex/translate/items.js +4 -4
- package/lib/types/backends/codex/translate/live.d.ts.map +1 -1
- package/lib/types/backends/codex/translate/live.js +11 -8
- package/lib/types/backends/codex/translate/notices.js +10 -10
- package/lib/types/backends/shared/channel-slug.d.ts +4 -0
- package/lib/types/backends/shared/channel-slug.d.ts.map +1 -0
- package/lib/types/backends/shared/channel-slug.js +25 -0
- package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -1
- package/lib/types/backends/shared/channel-tokens.js +30 -23
- package/lib/types/{channel → backends/shared}/elicitation.d.ts +78 -21
- package/lib/types/backends/shared/elicitation.d.ts.map +1 -0
- package/lib/types/{channel → backends/shared}/elicitation.js +64 -66
- package/lib/types/backends/shared/image-size.d.ts +33 -0
- package/lib/types/backends/shared/image-size.d.ts.map +1 -0
- package/lib/types/backends/shared/image-size.js +134 -0
- package/lib/types/{utils → backends/shared}/jsonl.d.ts +5 -1
- package/lib/types/backends/shared/jsonl.d.ts.map +1 -0
- package/lib/types/{utils → backends/shared}/jsonl.js +5 -1
- package/lib/types/backends/shared/localized-text.d.ts +30 -0
- package/lib/types/backends/shared/localized-text.d.ts.map +1 -0
- package/lib/types/backends/shared/localized-text.js +24 -0
- package/lib/types/backends/shared/platform-text.d.ts +88 -0
- package/lib/types/backends/shared/platform-text.d.ts.map +1 -0
- package/lib/types/backends/shared/platform-text.js +33 -0
- package/lib/types/branding.d.ts +13 -0
- package/lib/types/branding.d.ts.map +1 -1
- package/lib/types/branding.js +18 -0
- package/lib/types/channel/channel-slug.d.ts +3 -1
- package/lib/types/channel/channel-slug.d.ts.map +1 -1
- package/lib/types/channel/channel-slug.js +3 -1
- package/lib/types/channel/sanitize.d.ts +7 -0
- package/lib/types/channel/sanitize.d.ts.map +1 -1
- package/lib/types/channel/sanitize.js +9 -0
- package/lib/types/channel/usage.d.ts.map +1 -1
- package/lib/types/channel/usage.js +5 -0
- package/lib/types/commands.d.ts +5 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +47 -8
- package/lib/types/components/AgentMessageComposer.d.ts.map +1 -1
- package/lib/types/components/AgentMessageComposer.js +3 -2
- package/lib/types/components/BtwPanel.d.ts.map +1 -1
- package/lib/types/components/BtwPanel.js +4 -2
- package/lib/types/components/Chat/JobCard.js +3 -3
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
- package/lib/types/components/CommandSuggestions.js +20 -6
- package/lib/types/components/ContextBarView.d.ts +5 -1
- package/lib/types/components/ContextBarView.d.ts.map +1 -1
- package/lib/types/components/ContextBarView.js +6 -3
- package/lib/types/components/ExtensionDialog.d.ts.map +1 -1
- package/lib/types/components/ExtensionDialog.js +2 -3
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/GoalTodoPanel.js +14 -3
- package/lib/types/components/InlineMathParagraph.js +1 -1
- package/lib/types/components/KernelPicker.d.ts.map +1 -1
- package/lib/types/components/KernelPicker.js +1 -1
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +9 -6
- package/lib/types/components/MarkdownTable.d.ts.map +1 -1
- package/lib/types/components/MarkdownTable.js +4 -3
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +18 -5
- package/lib/types/components/ModelPicker.d.ts +24 -31
- package/lib/types/components/ModelPicker.d.ts.map +1 -1
- package/lib/types/components/ModelPicker.js +115 -40
- package/lib/types/components/PromptEditor.d.ts +3 -3
- package/lib/types/components/PromptInput.d.ts +21 -3
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +58 -118
- package/lib/types/components/SdkInstallWizard.d.ts +3 -1
- package/lib/types/components/SdkInstallWizard.d.ts.map +1 -1
- package/lib/types/components/SdkInstallWizard.js +8 -1
- package/lib/types/components/SearchBox.d.ts +13 -15
- package/lib/types/components/SearchBox.d.ts.map +1 -1
- package/lib/types/components/SearchBox.js +58 -27
- package/lib/types/components/ThemePicker.d.ts +1 -1
- package/lib/types/components/ThemePicker.d.ts.map +1 -1
- package/lib/types/components/ThemePicker.js +14 -11
- package/lib/types/components/Tooltip.js +1 -1
- package/lib/types/components/WorkingSpinner.js +1 -1
- package/lib/types/components/WorkspaceFlowPicker.d.ts.map +1 -1
- package/lib/types/components/WorkspaceFlowPicker.js +4 -3
- package/lib/types/components/composerImageTokens.d.ts +24 -0
- package/lib/types/components/composerImageTokens.d.ts.map +1 -0
- package/lib/types/components/composerImageTokens.js +37 -0
- package/lib/types/components/design-system/InputCaret.d.ts +7 -0
- package/lib/types/components/design-system/InputCaret.d.ts.map +1 -0
- package/lib/types/components/design-system/InputCaret.js +9 -0
- package/lib/types/components/design-system/ListItem.d.ts +13 -2
- package/lib/types/components/design-system/ListItem.d.ts.map +1 -1
- package/lib/types/components/design-system/ListItem.js +11 -5
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +6 -8
- package/lib/types/components/kernelCatalog.d.ts +55 -11
- package/lib/types/components/kernelCatalog.d.ts.map +1 -1
- package/lib/types/components/kernelCatalog.js +42 -23
- package/lib/types/components/launchpadActions.d.ts +4 -0
- package/lib/types/components/launchpadActions.d.ts.map +1 -1
- package/lib/types/components/launchpadActions.js +5 -4
- package/lib/types/components/launchpadLayout.d.ts.map +1 -1
- package/lib/types/components/launchpadLayout.js +2 -2
- package/lib/types/components/messages/UserPromptMessage.d.ts +4 -3
- package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
- package/lib/types/components/messages/UserPromptMessage.js +4 -3
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +8 -3
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
- package/lib/types/components/questions/PlanReviewPanel.js +4 -3
- package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -1
- package/lib/types/components/questions/ProviderModelEditor.js +3 -13
- package/lib/types/components/sessions/ForeignSessionRow.d.ts +3 -1
- package/lib/types/components/sessions/ForeignSessionRow.d.ts.map +1 -1
- package/lib/types/components/sessions/ForeignSessionRow.js +5 -2
- package/lib/types/components/sessions/SessionListRow.d.ts +3 -1
- package/lib/types/components/sessions/SessionListRow.d.ts.map +1 -1
- package/lib/types/components/sessions/SessionListRow.js +5 -2
- package/lib/types/components/sidePanel/PanelBar.d.ts +1 -0
- package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelBar.js +21 -17
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.js +2 -1
- package/lib/types/components/sidePanel/SidePanelLayout.d.ts +6 -4
- package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelLayout.js +33 -7
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +4 -2
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwComposer.js +12 -4
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +59 -15
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadScene.js +4 -2
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -1
- package/lib/types/components/sidePanel/btw/BtwThreadView.js +12 -6
- package/lib/types/components/sidePanel/companion/CompanionPanel.js +2 -2
- package/lib/types/components/sidePanel/types.d.ts +1 -1
- package/lib/types/components/sidePanel/types.d.ts.map +1 -1
- package/lib/types/components/sidePanel/useSidePanel.d.ts +2 -0
- package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/useSidePanel.js +11 -1
- package/lib/types/components/splashFonts.d.ts +24 -1
- package/lib/types/components/splashFonts.d.ts.map +1 -1
- package/lib/types/components/splashFonts.js +40 -5
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
- package/lib/types/components/workspaces/HomeWorkspaceRow.js +5 -2
- package/lib/types/dsh-adapter/admission-loader.d.ts +20 -0
- package/lib/types/dsh-adapter/admission-loader.d.ts.map +1 -0
- package/lib/types/dsh-adapter/admission-loader.js +256 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -1
- package/lib/types/dsh-adapter/backend/translate.js +3 -0
- package/lib/types/dsh-adapter/backend-admission.d.ts +64 -0
- package/lib/types/dsh-adapter/backend-admission.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend-admission.js +34 -0
- package/lib/types/dsh-adapter/backend-contribution.d.ts +26 -0
- package/lib/types/dsh-adapter/backend-contribution.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend-contribution.js +37 -0
- package/lib/types/dsh-adapter/backend-registry.d.ts +136 -0
- package/lib/types/dsh-adapter/backend-registry.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend-registry.js +285 -0
- package/lib/types/dsh-adapter/backends.d.ts +67 -24
- package/lib/types/dsh-adapter/backends.d.ts.map +1 -1
- package/lib/types/dsh-adapter/backends.generated.d.ts +12 -0
- package/lib/types/dsh-adapter/backends.generated.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backends.generated.js +6 -0
- package/lib/types/dsh-adapter/backends.js +92 -46
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +2 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.js +9 -3
- package/lib/types/dsh-adapter/channel/agent-view-projection.js +2 -2
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.js +8 -3
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +16 -3
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +18 -46
- package/lib/types/dsh-adapter/channel/channel-host.d.ts +45 -0
- package/lib/types/dsh-adapter/channel/channel-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/channel-host.js +1 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts +5 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/command-completions.js +16 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts +4 -2
- package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/composer-images.js +36 -5
- package/lib/types/dsh-adapter/channel/cordis-host.d.ts +14 -0
- package/lib/types/dsh-adapter/channel/cordis-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/cordis-host.js +35 -0
- package/lib/types/dsh-adapter/channel/core/actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/actions.js +15 -6
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +7 -3
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/binding-feed.js +3 -0
- package/lib/types/dsh-adapter/channel/core/compose.d.ts +12 -28
- package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/compose.js +318 -117
- package/lib/types/dsh-adapter/channel/core/files.d.ts +7 -2
- package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/files.js +1 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts +12 -6
- package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/host.js +69 -35
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +5 -3
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/local-actions.js +5 -2
- package/lib/types/dsh-adapter/channel/core/session-controls.js +2 -2
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +7 -4
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/session-switch.js +8 -4
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/core/sessions.js +75 -16
- package/lib/types/dsh-adapter/channel/extensions.d.ts +4 -3
- package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/extensions.js +41 -22
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-delivery.js +14 -5
- package/lib/types/dsh-adapter/channel/job-projection.d.ts +4 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/job-projection.js +205 -24
- package/lib/types/dsh-adapter/channel/mentions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +1 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.js +138 -8
- package/lib/types/dsh-adapter/channel/model-actions.d.ts +5 -1
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.js +40 -28
- package/lib/types/dsh-adapter/channel/model-selection.d.ts +17 -0
- package/lib/types/dsh-adapter/channel/model-selection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/model-selection.js +109 -0
- package/lib/types/dsh-adapter/channel/model-switch.d.ts +12 -21
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-switch.js +39 -102
- package/lib/types/dsh-adapter/channel/projection.js +1 -1
- package/lib/types/dsh-adapter/channel/reports.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/reports.js +11 -3
- package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.js +33 -20
- package/lib/types/dsh-adapter/channel/session-listing.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/session-listing.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-listing.js +51 -0
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +3 -1
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.js +56 -27
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +15 -8
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-rewind.js +38 -24
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-tree-actions.js +38 -24
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +1 -0
- package/lib/types/dsh-adapter/channel/state.d.ts +37 -1
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +14 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +66 -6
- package/lib/types/dsh-adapter/channel/task-completion.d.ts +6 -0
- package/lib/types/dsh-adapter/channel/task-completion.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/task-completion.js +114 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/transcript.js +1 -1
- package/lib/types/dsh-adapter/channel/upstream-retry.d.ts +81 -0
- package/lib/types/dsh-adapter/channel/upstream-retry.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/upstream-retry.js +138 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/workspace-actions.js +9 -8
- package/lib/types/dsh-adapter/channel-ui.d.ts +3 -1
- package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel-ui.js +4 -2
- package/lib/types/dsh-adapter/channel.d.ts +2 -2
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +19 -5
- package/lib/types/dsh-adapter/context-occupancy.d.ts +81 -4
- package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
- package/lib/types/dsh-adapter/context-occupancy.js +108 -17
- package/lib/types/dsh-adapter/contract.d.ts +1 -1
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +15 -0
- package/lib/types/dsh-adapter/entry-slot.d.ts +36 -0
- package/lib/types/dsh-adapter/entry-slot.d.ts.map +1 -0
- package/lib/types/dsh-adapter/entry-slot.js +28 -0
- package/lib/types/dsh-adapter/fresh-agent.d.ts +22 -0
- package/lib/types/dsh-adapter/fresh-agent.d.ts.map +1 -0
- package/lib/types/dsh-adapter/fresh-agent.js +221 -0
- package/lib/types/dsh-adapter/host-access.d.ts +16 -1
- package/lib/types/dsh-adapter/host-access.d.ts.map +1 -1
- package/lib/types/dsh-adapter/host-access.js +53 -2
- package/lib/types/dsh-adapter/host-contract.d.ts +103 -0
- package/lib/types/dsh-adapter/host-contract.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-contract.js +76 -0
- package/lib/types/dsh-adapter/host-dsh.d.ts +106 -0
- package/lib/types/dsh-adapter/host-dsh.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-dsh.js +466 -0
- package/lib/types/dsh-adapter/host-entry.d.ts +9 -0
- package/lib/types/dsh-adapter/host-entry.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-entry.js +228 -0
- package/lib/types/dsh-adapter/index.d.ts +55 -18
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +59 -7
- package/lib/types/dsh-adapter/install/executors.d.ts +44 -0
- package/lib/types/dsh-adapter/install/executors.d.ts.map +1 -0
- package/lib/types/dsh-adapter/install/executors.js +15 -0
- package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts +3 -0
- package/lib/types/dsh-adapter/install/pnpm-profile-add.d.ts.map +1 -0
- package/lib/types/dsh-adapter/install/pnpm-profile-add.js +150 -0
- package/lib/types/dsh-adapter/jobs.d.ts +7 -0
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +13 -0
- package/lib/types/dsh-adapter/lite-profile.d.ts +50 -0
- package/lib/types/dsh-adapter/lite-profile.d.ts.map +1 -0
- package/lib/types/dsh-adapter/lite-profile.js +49 -0
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -1
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
- package/lib/types/dsh-adapter/migrate/parse/jsonl.js +4 -3
- package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -1
- package/lib/types/dsh-adapter/oauth/profiles.js +5 -1
- package/lib/types/dsh-adapter/panels.d.ts +7 -0
- package/lib/types/dsh-adapter/panels.d.ts.map +1 -1
- package/lib/types/dsh-adapter/panels.js +35 -2
- package/lib/types/dsh-adapter/plugin-completions.d.ts +32 -0
- package/lib/types/dsh-adapter/plugin-completions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-completions.js +80 -0
- package/lib/types/dsh-adapter/plugin-declaration.d.ts +21 -0
- package/lib/types/dsh-adapter/plugin-declaration.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-declaration.js +53 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts +13 -2
- package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-host.js +34 -8
- package/lib/types/dsh-adapter/plugin-manager.d.ts +68 -0
- package/lib/types/dsh-adapter/plugin-manager.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-manager.js +51 -0
- package/lib/types/dsh-adapter/plugin.d.ts +50 -1
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +870 -233
- package/lib/types/dsh-adapter/plugins-info.d.ts +44 -8
- package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugins-info.js +354 -34
- package/lib/types/dsh-adapter/process-exit.d.ts +43 -0
- package/lib/types/dsh-adapter/process-exit.d.ts.map +1 -0
- package/lib/types/dsh-adapter/process-exit.js +60 -0
- package/lib/types/dsh-adapter/root-dispose.d.ts +18 -0
- package/lib/types/dsh-adapter/root-dispose.d.ts.map +1 -0
- package/lib/types/dsh-adapter/root-dispose.js +28 -0
- package/lib/types/dsh-adapter/session-list-metadata.d.ts +20 -0
- package/lib/types/dsh-adapter/session-list-metadata.d.ts.map +1 -0
- package/lib/types/dsh-adapter/session-list-metadata.js +56 -0
- package/lib/types/dsh-adapter/session-seed.d.ts +11 -0
- package/lib/types/dsh-adapter/session-seed.d.ts.map +1 -0
- package/lib/types/dsh-adapter/session-seed.js +47 -0
- package/lib/types/dsh-adapter/sessions/list.d.ts +3 -1
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +11 -5
- package/lib/types/dsh-adapter/sessions/snapshot.d.ts +0 -2
- package/lib/types/dsh-adapter/sessions/snapshot.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/snapshot.js +7 -70
- package/lib/types/dsh-adapter/startup-args.d.ts +2 -0
- package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -1
- package/lib/types/dsh-adapter/startup-args.js +5 -0
- package/lib/types/dsh-adapter/subagents.d.ts +33 -1
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +110 -8
- package/lib/types/dsh-adapter/tui-settings.d.ts +57 -0
- package/lib/types/dsh-adapter/tui-settings.d.ts.map +1 -0
- package/lib/types/dsh-adapter/tui-settings.js +199 -0
- package/lib/types/effortPrefs.d.ts +6 -3
- package/lib/types/effortPrefs.d.ts.map +1 -1
- package/lib/types/effortPrefs.js +7 -4
- package/lib/types/hostEntryRoute.d.ts +18 -0
- package/lib/types/hostEntryRoute.d.ts.map +1 -0
- package/lib/types/hostEntryRoute.js +57 -0
- package/lib/types/i18n.d.ts +363 -1432
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +155 -385
- package/lib/types/ink/components/AlternateScreen.js +2 -2
- package/lib/types/ink/components/App.d.ts +1 -0
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +16 -4
- package/lib/types/ink/components/CursorDeclarationContext.d.ts +9 -0
- package/lib/types/ink/components/CursorDeclarationContext.d.ts.map +1 -1
- package/lib/types/ink/components/CursorDeclarationContext.js +2 -0
- package/lib/types/ink/hooks/use-copy-on-select.d.ts +2 -2
- package/lib/types/ink/hooks/use-copy-on-select.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-copy-on-select.js +13 -7
- package/lib/types/ink/hooks/use-declared-cursor.d.ts +11 -3
- package/lib/types/ink/hooks/use-declared-cursor.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-declared-cursor.js +30 -10
- package/lib/types/ink/ink.d.ts +22 -17
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +151 -40
- package/lib/types/ink/kitty-graphics.d.ts +2 -0
- package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
- package/lib/types/ink/kitty-graphics.js +6 -1
- package/lib/types/ink/node-cache.d.ts +2 -1
- package/lib/types/ink/node-cache.d.ts.map +1 -1
- package/lib/types/ink/output.d.ts +10 -4
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +14 -10
- package/lib/types/ink/render-node-to-output.d.ts +5 -2
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +27 -9
- package/lib/types/ink/renderer.d.ts +1 -0
- package/lib/types/ink/renderer.d.ts.map +1 -1
- package/lib/types/ink/renderer.js +4 -3
- package/lib/types/ink/root.d.ts +4 -1
- package/lib/types/ink/root.d.ts.map +1 -1
- package/lib/types/ink/screen.d.ts +4 -2
- package/lib/types/ink/screen.d.ts.map +1 -1
- package/lib/types/ink/selection.d.ts +10 -1
- package/lib/types/ink/selection.d.ts.map +1 -1
- package/lib/types/ink/selection.js +94 -25
- package/lib/types/ink/stdin-handoff.d.ts +11 -0
- package/lib/types/ink/stdin-handoff.d.ts.map +1 -0
- package/lib/types/ink/stdin-handoff.js +20 -0
- package/lib/types/ink/styles.d.ts +2 -1
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.d.ts +6 -4
- package/lib/types/ink/terminal-image.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.js +16 -39
- package/lib/types/ink/terminal-notification.d.ts +8 -0
- package/lib/types/ink/terminal-notification.d.ts.map +1 -0
- package/lib/types/ink/terminal-notification.js +83 -0
- package/lib/types/ink/terminal.d.ts +9 -0
- package/lib/types/ink/terminal.d.ts.map +1 -1
- package/lib/types/ink/terminal.js +34 -1
- package/lib/types/ink/termio/csi.d.ts +11 -0
- package/lib/types/ink/termio/csi.d.ts.map +1 -1
- package/lib/types/ink/termio/csi.js +13 -0
- package/lib/types/ink/update-overflow-guard.d.ts +6 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.js +17 -0
- package/lib/types/ink/wrap-text.d.ts +6 -0
- package/lib/types/ink/wrap-text.d.ts.map +1 -1
- package/lib/types/ink/wrap-text.js +17 -0
- package/lib/types/kernelPrefs.d.ts +129 -16
- package/lib/types/kernelPrefs.d.ts.map +1 -1
- package/lib/types/kernelPrefs.js +98 -35
- package/lib/types/math/inline-layout.d.ts +2 -0
- package/lib/types/math/inline-layout.d.ts.map +1 -1
- package/lib/types/math/inline-layout.js +5 -27
- package/lib/types/modelGroups.d.ts +15 -27
- package/lib/types/modelGroups.d.ts.map +1 -1
- package/lib/types/modelGroups.js +17 -31
- package/lib/types/modelPrefs.d.ts +5 -4
- package/lib/types/modelPrefs.d.ts.map +1 -1
- package/lib/types/modelPrefs.js +5 -4
- package/lib/types/modelRoute.d.ts +23 -9
- package/lib/types/modelRoute.d.ts.map +1 -1
- package/lib/types/modelRoute.js +25 -11
- package/lib/types/permissionPrefs.d.ts +34 -0
- package/lib/types/permissionPrefs.d.ts.map +1 -0
- package/lib/types/permissionPrefs.js +61 -0
- package/lib/types/plugin-host.d.ts +1 -0
- package/lib/types/plugin-host.d.ts.map +1 -1
- package/lib/types/presetPrefs.d.ts +17 -3
- package/lib/types/presetPrefs.d.ts.map +1 -1
- package/lib/types/presetPrefs.js +20 -3
- package/lib/types/reload.d.ts +6 -10
- package/lib/types/reload.d.ts.map +1 -1
- package/lib/types/reload.js +14 -14
- package/lib/types/screens/Chat.d.ts +22 -15
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +442 -272
- package/lib/types/screens/Launchpad.d.ts +27 -17
- package/lib/types/screens/Launchpad.d.ts.map +1 -1
- package/lib/types/screens/Launchpad.js +241 -78
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +53 -12
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/Settings.js +6 -0
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +24 -7
- package/lib/types/screens/StatusMetrics.d.ts +46 -1
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
- package/lib/types/screens/StatusMetrics.js +72 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts +8 -4
- package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -1
- package/lib/types/screens/chat/useKernelPicker.js +61 -21
- package/lib/types/screens/chat/useModelPicker.d.ts +42 -0
- package/lib/types/screens/chat/useModelPicker.d.ts.map +1 -0
- package/lib/types/screens/chat/useModelPicker.js +182 -0
- package/lib/types/screens/chatOverlay.d.ts +11 -4
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +0 -1
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts +4 -1
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/ForeignSessionPanes.js +26 -5
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +51 -29
- package/lib/types/sessionHistory.d.ts +5 -0
- package/lib/types/sessionHistory.d.ts.map +1 -1
- package/lib/types/sessionHistory.js +5 -0
- package/lib/types/sessions/listSnapshot.d.ts +6 -0
- package/lib/types/sessions/listSnapshot.d.ts.map +1 -0
- package/lib/types/sessions/listSnapshot.js +67 -0
- package/lib/types/settings/definitions.d.ts +50 -0
- package/lib/types/settings/definitions.d.ts.map +1 -1
- package/lib/types/settings/definitions.js +42 -8
- package/lib/types/terminal-utils/cjk-emphasis.d.ts +28 -0
- package/lib/types/terminal-utils/cjk-emphasis.d.ts.map +1 -0
- package/lib/types/terminal-utils/cjk-emphasis.js +31 -0
- package/lib/types/terminal-utils/markdown.d.ts +3 -1
- package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
- package/lib/types/terminal-utils/markdown.js +7 -2
- package/lib/types/theme.d.ts +29 -12
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +310 -23
- package/lib/types/themeCatalog.d.ts.map +1 -1
- package/lib/types/themeCatalog.js +21 -2
- package/lib/types/tips.js +4 -4
- package/lib/types/tuiSettingsFile.d.ts +56 -0
- package/lib/types/tuiSettingsFile.d.ts.map +1 -0
- package/lib/types/tuiSettingsFile.js +206 -0
- package/lib/types/ui.d.ts +2 -0
- package/lib/types/ui.d.ts.map +1 -1
- package/lib/types/ui.js +2 -0
- package/lib/types/update.d.ts +72 -26
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +131 -43
- package/lib/types/utils/bmp.d.ts +7 -0
- package/lib/types/utils/bmp.d.ts.map +1 -1
- package/lib/types/utils/bmp.js +27 -0
- package/lib/types/utils/bootTrace.d.ts +2 -0
- package/lib/types/utils/bootTrace.d.ts.map +1 -0
- package/lib/types/utils/bootTrace.js +20 -0
- package/lib/types/utils/clipboard.d.ts.map +1 -1
- package/lib/types/utils/clipboard.js +11 -3
- package/lib/types/utils/credentials.d.ts +14 -2
- package/lib/types/utils/credentials.d.ts.map +1 -1
- package/lib/types/utils/credentials.js +34 -11
- package/lib/types/utils/imageResize.d.ts +10 -20
- package/lib/types/utils/imageResize.d.ts.map +1 -1
- package/lib/types/utils/imageResize.js +61 -134
- package/lib/types/utils/inputPaste.d.ts +2 -2
- package/lib/types/utils/inputPaste.js +2 -2
- package/lib/types/utils/pastedImagePath.d.ts +5 -0
- package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
- package/lib/types/utils/pastedImagePath.js +33 -0
- package/package.json +36 -6
- package/presets/winbash.mjs +716 -0
- package/tui-profile/protocols/profile-definitions.d.ts +1 -0
- package/tui-profile/protocols/profile-definitions.js +14 -0
- package/tui-profile/protocols/tui-contributions.d.ts +55 -0
- package/tui-profile/protocols/tui-contributions.js +141 -0
- package/tui-profile/registry/contracts/backend-v1alpha1.json +13 -0
- package/tui-profile/registry/registry-0.15.json +12 -0
- package/lib/types/backends/claude/install.d.ts +0 -15
- package/lib/types/backends/claude/install.d.ts.map +0 -1
- package/lib/types/backends/claude/install.js +0 -91
- package/lib/types/channel/elicitation.d.ts.map +0 -1
- package/lib/types/dsh-adapter/channel/session-lineage.d.ts +0 -42
- package/lib/types/dsh-adapter/channel/session-lineage.d.ts.map +0 -1
- package/lib/types/dsh-adapter/channel/session-lineage.js +0 -51
- package/lib/types/utils/jsonl.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-readiness.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/action-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,YAAY,EAClD,oBAAoB,GACpB,WAAW,GACX,UAAU,GACV,cAAc,GACd,aAAa,GACb,UAAU,GACV,YAAY,GACZ,gBAAgB,GAChB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,qBAAqB,GACrB,aAAa,GACb,aAAa,GACb,WAAW,GACX,kBAAkB,GAClB,WAAW,GACX,qBAAqB,GACrB,OAAO,GACP,mBAAmB,GACnB,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,GACf,2BAA2B,GAC3B,YAAY,GACZ,oBAAoB,GACpB,aAAa,GACb,cAAc,GACd,oBAAoB,GACpB,WAAW,GACX,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,GACtB,mBAAmB,GACnB,eAAe,GACf,oBAAoB,GACpB,yBAAyB,GACzB,qBAAqB,GACrB,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,mBAAmB,GACnB,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,SAAS,GACT,eAAe,GACf,oBAAoB,GACpB,2BAA2B,GAC3B,WAAW,GACX,WAAW,GACX,eAAe,GACf,eAAe,GACf,YAAY,GACZ,aAAa,GACb,eAAe,CAClB,GAAG;IACF,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3E,CAAA;AAED,KAAK,uBAAuB,GAAG,OAAO,CAAC,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,CAAA;AACvF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAA;AAE9E;4EAC4E;AAC5E,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,sBAAsB,GAC5C,oBAAoB,CAyEtB;AAED,wBAAgB,4BAA4B;kBAG1B,sBAAsB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"action-readiness.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/action-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,YAAY,EAClD,oBAAoB,GACpB,WAAW,GACX,UAAU,GACV,cAAc,GACd,aAAa,GACb,UAAU,GACV,YAAY,GACZ,gBAAgB,GAChB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,qBAAqB,GACrB,aAAa,GACb,aAAa,GACb,WAAW,GACX,kBAAkB,GAClB,WAAW,GACX,qBAAqB,GACrB,OAAO,GACP,mBAAmB,GACnB,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,GACf,2BAA2B,GAC3B,YAAY,GACZ,oBAAoB,GACpB,aAAa,GACb,cAAc,GACd,oBAAoB,GACpB,WAAW,GACX,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,GACtB,mBAAmB,GACnB,eAAe,GACf,oBAAoB,GACpB,yBAAyB,GACzB,qBAAqB,GACrB,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,mBAAmB,GACnB,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,SAAS,GACT,eAAe,GACf,oBAAoB,GACpB,2BAA2B,GAC3B,WAAW,GACX,WAAW,GACX,eAAe,GACf,eAAe,GACf,YAAY,GACZ,aAAa,GACb,eAAe,CAClB,GAAG;IACF,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3E,CAAA;AAED,KAAK,uBAAuB,GAAG,OAAO,CAAC,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,CAAA;AACvF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAA;AAE9E;4EAC4E;AAC5E,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,MAAM,sBAAsB,GAC5C,oBAAoB,CAyEtB;AAED,wBAAgB,4BAA4B;kBAG1B,sBAAsB,GAAG,IAAI;IAI3C,oFAAoF;oBACpE,sBAAsB,GAAG,IAAI;uBAI1B,sBAAsB;EAK5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACnC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,GAC3C,sBAAsB,CA2FxB"}
|
|
@@ -22,7 +22,7 @@ export function createChannelActionMethods(getReadyActions) {
|
|
|
22
22
|
workspaceCommands: () => getReadyActions().workspaceCommands(),
|
|
23
23
|
runWorkspaceCommand: (name, input) => getReadyActions().runWorkspaceCommand(name, input),
|
|
24
24
|
switchModel: (provider, model) => getReadyActions().switchModel(provider, model),
|
|
25
|
-
listEfforts:
|
|
25
|
+
listEfforts: route => getReadyActions().listEfforts(route),
|
|
26
26
|
setEffort: id => getReadyActions().setEffort(id),
|
|
27
27
|
setDefaultEffort: id => getReadyActions().setDefaultEffort(id),
|
|
28
28
|
cycleMode: () => getReadyActions().cycleMode(),
|
|
@@ -65,7 +65,7 @@ export function createChannelActionMethods(getReadyActions) {
|
|
|
65
65
|
cancelCompact: () => getReadyActions().cancelCompact(),
|
|
66
66
|
runExternalCommand: (name, rawInput) => getReadyActions().runExternalCommand(name, rawInput),
|
|
67
67
|
runExternalCommandOutcome: (name, rawInput, images) => getReadyActions().runExternalCommandOutcome(name, rawInput, images),
|
|
68
|
-
pushLocal: (title, lines) => getReadyActions().pushLocal(title, lines),
|
|
68
|
+
pushLocal: (title, lines, options) => getReadyActions().pushLocal(title, lines, options),
|
|
69
69
|
mcpStatus: () => getReadyActions().mcpStatus(),
|
|
70
70
|
exportSession: () => getReadyActions().exportSession(),
|
|
71
71
|
initWorkspace: () => getReadyActions().initWorkspace(),
|
|
@@ -82,6 +82,12 @@ export function createChannelActionReadiness() {
|
|
|
82
82
|
throw new Error('dsh-tui: Channel actions are already installed');
|
|
83
83
|
delegates = Object.freeze(next);
|
|
84
84
|
},
|
|
85
|
+
/** Replace the installed table (the adoption-window extension, core/compose.ts). */
|
|
86
|
+
reinstall(next) {
|
|
87
|
+
if (delegates === undefined)
|
|
88
|
+
throw new Error('dsh-tui: Channel actions are not installed');
|
|
89
|
+
delegates = Object.freeze(next);
|
|
90
|
+
},
|
|
85
91
|
getReadyActions() {
|
|
86
92
|
if (delegates === undefined)
|
|
87
93
|
throw new Error('dsh-tui: Channel actions are not installed');
|
|
@@ -192,7 +198,7 @@ export function createUnavailableActionDelegates(unavailable, unavailableLines)
|
|
|
192
198
|
exportSession: () => refuse('export', null),
|
|
193
199
|
initWorkspace: () => refuse('init', null),
|
|
194
200
|
doctorInfo: () => unavailableLines('doctor'),
|
|
195
|
-
pluginsInfo: () => unavailableLines('
|
|
201
|
+
pluginsInfo: () => Promise.resolve(unavailableLines('plugin')),
|
|
196
202
|
listSubagents: () => Promise.resolve(unavailableLines('agents')),
|
|
197
203
|
};
|
|
198
204
|
}
|
|
@@ -3,7 +3,7 @@ import { SessionId } from '@deepseek-ai/dsh-session';
|
|
|
3
3
|
import { randomUUID } from 'node:crypto';
|
|
4
4
|
import { resolveModelRoute, validateModelRoute } from '../../modelRoute.js';
|
|
5
5
|
import { readModelPref } from '../../modelPrefs.js';
|
|
6
|
-
import { readPresetPref } from '../../presetPrefs.js';
|
|
6
|
+
import { presetOverrideFromEnv, readPresetPref } from '../../presetPrefs.js';
|
|
7
7
|
import { forgetAgentViewSession, readAgentViewSessions, touchAgentViewSession, touchSession } from '../../sessionHistory.js';
|
|
8
8
|
import { t } from '../../i18n.js';
|
|
9
9
|
import { AGENT_VIEW_STATUS_ORDER, agentViewLivePreview, agentViewStatusOf, foldAgentViewEvents, oneLine, sessionTitleFallback, } from '../agent-view.js';
|
|
@@ -141,7 +141,7 @@ export function createAgentViewProjection(ctx, deps) {
|
|
|
141
141
|
let detached;
|
|
142
142
|
try {
|
|
143
143
|
deps.owner.assertActive();
|
|
144
|
-
const composed = await composePreset(ctx,
|
|
144
|
+
const composed = await composePreset(ctx, presetOverrideFromEnv() ?? readPresetPref() ?? deps.configuredPreset);
|
|
145
145
|
const resolved = resolveModelRoute({ provider: deps.configuredProvider, model: deps.configuredModel }, readModelPref(), { provider: deps.provider, model: deps.model });
|
|
146
146
|
const llm = ctx.get('llm');
|
|
147
147
|
const { route } = await validateModelRoute(llm, resolved, { provider: deps.provider, model: deps.model });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-action.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/background-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,wBAAwB,CAAA;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"background-action.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/background-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,wBAAwB,CAAA;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAclD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEhE,KAAK,OAAO,GAAG,iBAAiB,CAAA;AAEhC;iFACiF;AACjF,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,IAAI,CAAC,YAAY,EACtB,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,eAAe,GAC9E,cAAc,GAAG,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,EACxG,OAAO,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAC9H,IAAI,EAAE;IACJ,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACpC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,CAAA;IACjF,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC3C,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACzB,cAAc,IAAI,IAAI,CAAA;IACtB,cAAc,IAAI,IAAI,CAAA;IACtB,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IAChD,SAAS,IAAI,IAAI,CAAA;IACjB,mBAAmB,IAAI,IAAI,CAAA;IAC3B,SAAS,IAAI,IAAI,CAAA;IACjB,eAAe,IAAI,IAAI,CAAA;IACvB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,iBAAiB,IAAI,IAAI,CAAA;IACzB,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7F,4EAA4E;IAC5E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAA;IAC5F,eAAe,IAAI,IAAI,CAAA;CACxB,GACA,MAAM,OAAO,CAAC,gBAAgB,CAAC,CA+FjC"}
|
|
@@ -2,12 +2,13 @@ import { SessionId } from '@deepseek-ai/dsh-session';
|
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { resolveModelRoute, validateModelRoute } from '../../modelRoute.js';
|
|
4
4
|
import { readModelPref } from '../../modelPrefs.js';
|
|
5
|
-
import { readPresetPref } from '../../presetPrefs.js';
|
|
5
|
+
import { presetOverrideFromEnv, readPresetPref } from '../../presetPrefs.js';
|
|
6
6
|
import { clearResumeTarget, touchAgentViewSession, touchSession } from '../../sessionHistory.js';
|
|
7
7
|
import { t } from '../../i18n.js';
|
|
8
8
|
import { reserveMount } from '../../sessionMounts.js';
|
|
9
9
|
import { mountFailureText } from '../../sessions/resumeFailure.js';
|
|
10
10
|
import { composePreset } from '../presets.js';
|
|
11
|
+
import { createFreshAgent } from '../fresh-agent.js';
|
|
11
12
|
import { createDshSession, dshHandleOf } from '../backend/session.js';
|
|
12
13
|
import { attachSessionToWorkspace } from '../workspace.js';
|
|
13
14
|
import { resetSessionProjection } from './session-reset.js';
|
|
@@ -30,9 +31,13 @@ export function createBackgroundCurrentAction(ctx, state, options, deps) {
|
|
|
30
31
|
deps.notify(mountFailureText(reserved), { color: 'warning', timeoutMs: 8000 });
|
|
31
32
|
const reservation = reserved.ok ? reserved.reservation : { settle: () => { }, abandon: () => { } };
|
|
32
33
|
try {
|
|
33
|
-
const composed = await composePreset(ctx,
|
|
34
|
+
const composed = await composePreset(ctx, presetOverrideFromEnv() ?? readPresetPref() ?? options.configuredPreset);
|
|
34
35
|
const route = await validateModelRoute(ctx.get('llm'), resolveModelRoute({ provider: options.configuredProvider, model: options.configuredModel }, readModelPref(), { provider: options.provider, model: options.model }), { provider: options.provider, model: options.model });
|
|
35
|
-
|
|
36
|
+
// `/bg` starts an unseeded session nobody has typed into yet, so it
|
|
37
|
+
// shares the fresh-session gate: creation-time checkpoints (the
|
|
38
|
+
// projection cache flushes on `session/created`) must not publish the
|
|
39
|
+
// permission-only shell before the first real event.
|
|
40
|
+
const candidate = await deps.binding.prepare(adoption, async () => createDshSession(ctx, await createFreshAgent(ctx, agents, {
|
|
36
41
|
sessionId,
|
|
37
42
|
meta: { cwd: state.cwd, ...(composed.agentPreset === undefined ? {} : { agentPreset: composed.agentPreset }) },
|
|
38
43
|
agentOptions: route.route,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { Agent, AssistantStreamFrame
|
|
1
|
+
import type { Agent, AssistantStreamFrame } from '@deepseek-ai/dsh-agent';
|
|
2
2
|
import type { Context } from '@deepseek-ai/cordis';
|
|
3
3
|
import type { ChannelProjection } from '../../channel/projection.js';
|
|
4
4
|
import { type BindingScope } from './core/binding-feed.js';
|
|
5
5
|
import type { InputConvergence } from './input-actions.js';
|
|
6
6
|
import type { DshChannelBinding } from './binding.js';
|
|
7
7
|
import type { ChannelOwner } from './owner.js';
|
|
8
|
+
import type { createModelSelection } from './model-selection.js';
|
|
8
9
|
import type { ChannelState } from './types.js';
|
|
9
10
|
/**
|
|
10
11
|
* Foreground transcript listeners capture a binding generation: the bound
|
|
@@ -32,14 +33,16 @@ export declare function createBindingEvents(ctx: Context, deps: {
|
|
|
32
33
|
* request reports usage. */
|
|
33
34
|
seedContextOccupancy?(session: unknown): void;
|
|
34
35
|
inputConvergence: InputConvergence;
|
|
35
|
-
|
|
36
|
+
modelSelection: ReturnType<typeof createModelSelection>;
|
|
36
37
|
modelActions: {
|
|
37
38
|
applyPreferredEffort(): Promise<void>;
|
|
38
|
-
selection: ModelSelectionRef;
|
|
39
39
|
};
|
|
40
40
|
modeActions: {
|
|
41
41
|
refreshMode(): void;
|
|
42
42
|
onSessionEvent(session: unknown, event: unknown): void;
|
|
43
|
+
/** Seed an untouched session with the persisted permission preference
|
|
44
|
+
* (permissionPrefs.ts); fire-and-forget on bind, never rejects. */
|
|
45
|
+
applyRememberedPermission(): Promise<void>;
|
|
43
46
|
};
|
|
44
47
|
projector: ChannelProjection;
|
|
45
48
|
subagents: {
|
|
@@ -59,12 +62,22 @@ export declare function createBindingEvents(ctx: Context, deps: {
|
|
|
59
62
|
}, parent: object | null): void;
|
|
60
63
|
forget?(agent: Agent): void;
|
|
61
64
|
};
|
|
65
|
+
/** The job projection's own raw-event half: it times the card hold a tool
|
|
66
|
+
* call puts on the job it registers (see channel/job-projection.ts). */
|
|
67
|
+
jobs?: {
|
|
68
|
+
onSessionEvent(event: unknown): void;
|
|
69
|
+
};
|
|
62
70
|
agentView: {
|
|
63
71
|
schedule(): void;
|
|
64
72
|
};
|
|
65
73
|
messageObserver?: {
|
|
66
74
|
publish(session: unknown, event: unknown): void;
|
|
67
75
|
};
|
|
76
|
+
/** Seed the upstream auto-retry policy (upstream-retry.ts) for the
|
|
77
|
+
* provider route this session actually uses; fire-and-forget on bind,
|
|
78
|
+
* never rejects, never blocks. Optional for direct/embed constructors
|
|
79
|
+
* that bring no settings seam. */
|
|
80
|
+
seedUpstreamRetry?(provider: string | undefined): void;
|
|
68
81
|
/** Drop a pre-step attachment registered by this channel for one message id
|
|
69
82
|
* (input-delivery's `retireAttachment`); see the discard hook below.
|
|
70
83
|
* Optional for direct/embed constructors that never emit inbox discards;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding-events.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/binding-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"binding-events.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/binding-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAIpE,OAAO,EAAwE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAChI,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IACtD,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,KAAK,EAAE,YAAY,CAAA;IACnB;;;;iDAI6C;IAC7C,YAAY,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACrC;;;;iCAI6B;IAC7B,oBAAoB,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,cAAc,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;IACvD,YAAY,EAAE;QAAE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAA;IACvD,WAAW,EAAE;QACX,WAAW,IAAI,IAAI,CAAA;QACnB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;QACtD;4EACoE;QACpE,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KAC3C,CAAA;IACD,SAAS,EAAE,iBAAiB,CAAA;IAC5B,SAAS,EAAE;QACT,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAA;QACzD,aAAa,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAA;QACpE,OAAO,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;QAC7G,KAAK,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAA;SAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;QAC9H,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;KAC5B,CAAA;IACD;6EACyE;IACzE,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAA;IAC/C,SAAS,EAAE;QAAE,QAAQ,IAAI,IAAI,CAAA;KAAE,CAAA;IAC/B,eAAe,CAAC,EAAE;QAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAA;IACrE;;;uCAGmC;IACnC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;IACtD;;;sCAGkC;IAClC,gBAAgB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3C;;;;wBAsEmB,IAAI;+CAImB,YAAY,GAAG,IAAI;;EAuD7D;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA"}
|
|
@@ -17,7 +17,7 @@ export function createBindingEvents(ctx, deps) {
|
|
|
17
17
|
/**
|
|
18
18
|
* Preset of the last binding we announced a capability gap for. The gap is a
|
|
19
19
|
* property of the agent's PRESET, so it is reported once per entry into a
|
|
20
|
-
* preset that lacks it (a rebind to the SAME preset — /
|
|
20
|
+
* preset that lacks it (a rebind to the SAME preset — /rewind —
|
|
21
21
|
* stays quiet; switching away and back reports again). Facts come from
|
|
22
22
|
* `channel/capabilities.ts`, never from a preset-id list: a user preset that
|
|
23
23
|
* adds compaction/pruning back gets no warning at all.
|
|
@@ -82,9 +82,9 @@ export function createBindingEvents(ctx, deps) {
|
|
|
82
82
|
/**
|
|
83
83
|
* The DSH half of every bind (core/binding-feed.ts runs it): the owner-level
|
|
84
84
|
* child listeners once, then per binding the activity seed, the model
|
|
85
|
-
* selection
|
|
86
|
-
*
|
|
87
|
-
* before the core's session subscription, so each raw event reaches the
|
|
85
|
+
* selection activation, the preferred effort and mode refresh, and the raw
|
|
86
|
+
* durable-event subscribers. Routing listeners survive foreground rebinds.
|
|
87
|
+
* Registered before the core's session subscription, so each raw event reaches the
|
|
88
88
|
* DSH specialists before the projector folds it.
|
|
89
89
|
*/
|
|
90
90
|
const hooks = {
|
|
@@ -99,13 +99,22 @@ export function createBindingEvents(ctx, deps) {
|
|
|
99
99
|
onBind({ capture, current, register }) {
|
|
100
100
|
deps.seedActivity?.(deps.binding.agent.session);
|
|
101
101
|
deps.seedContextOccupancy?.(deps.binding.agent.session);
|
|
102
|
-
deps.
|
|
103
|
-
deps.
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
deps.modelSelection.bind(deps.binding.agent, { provider: deps.state.provider, model: deps.state.model });
|
|
103
|
+
const selected = deps.modelSelection.selection.current;
|
|
104
|
+
// A parked turn may not have logged its first selected request yet.
|
|
105
|
+
if (selected !== undefined) {
|
|
106
|
+
deps.state.provider = selected.provider;
|
|
107
|
+
deps.state.model = selected.model;
|
|
106
108
|
}
|
|
107
109
|
void deps.modelActions.applyPreferredEffort();
|
|
108
110
|
deps.modeActions.refreshMode();
|
|
111
|
+
// Same pattern as the preferred effort above: the remembered
|
|
112
|
+
// permission preference seeds sessions that never chose their own.
|
|
113
|
+
void deps.modeActions.applyRememberedPermission();
|
|
114
|
+
// The upstream auto-retry policy follows the route in use: the
|
|
115
|
+
// agent's own options name it after a resume, and a fresh session
|
|
116
|
+
// falls back to the launch route (/model seeds its own selection).
|
|
117
|
+
deps.seedUpstreamRetry?.(selected?.provider ?? deps.binding.agent.options?.provider ?? deps.state.provider);
|
|
109
118
|
// Entering/resuming a session whose preset serves neither automatic
|
|
110
119
|
// compaction nor tool-result pruning changes what the user can expect
|
|
111
120
|
// from a long session; say it once, here, before the turn starts.
|
|
@@ -113,44 +122,6 @@ export function createBindingEvents(ctx, deps) {
|
|
|
113
122
|
const native = capture.session.capabilities.native.dsh;
|
|
114
123
|
if (native === undefined)
|
|
115
124
|
return;
|
|
116
|
-
// Keep the upstream assembly/request pairing, but own each listener as
|
|
117
|
-
// soon as it is installed. The upstream combined disposer is too late
|
|
118
|
-
// if request registration throws, and its post-await assembly write is
|
|
119
|
-
// unsafe after a rebind (including A→B→A ABA).
|
|
120
|
-
const disposeAssembly = native.agent.ctx.on('system-prompt/assemble', async (_assembly, _context, next) => {
|
|
121
|
-
const selected = deps.selection.current;
|
|
122
|
-
const assembled = await next();
|
|
123
|
-
if (!current())
|
|
124
|
-
return assembled;
|
|
125
|
-
deps.selection.assembled = selected;
|
|
126
|
-
if (selected === undefined)
|
|
127
|
-
return assembled;
|
|
128
|
-
return {
|
|
129
|
-
...assembled,
|
|
130
|
-
variables: {
|
|
131
|
-
...assembled.variables,
|
|
132
|
-
provider: selected.provider,
|
|
133
|
-
model: selected.model,
|
|
134
|
-
},
|
|
135
|
-
};
|
|
136
|
-
});
|
|
137
|
-
register(disposeAssembly);
|
|
138
|
-
const disposeRequest = native.agent.ctx.on('agent/request', async (_payload, next) => {
|
|
139
|
-
const resolved = await next();
|
|
140
|
-
if (!current())
|
|
141
|
-
return resolved;
|
|
142
|
-
const selected = deps.selection.assembled;
|
|
143
|
-
if (selected === undefined)
|
|
144
|
-
return resolved;
|
|
145
|
-
const { reasoningEffort: _inheritedEffort, ...withoutInheritedEffort } = resolved;
|
|
146
|
-
return {
|
|
147
|
-
...withoutInheritedEffort,
|
|
148
|
-
provider: selected.provider,
|
|
149
|
-
model: selected.model,
|
|
150
|
-
...(selected.reasoningEffort === undefined ? {} : { reasoningEffort: selected.reasoningEffort }),
|
|
151
|
-
};
|
|
152
|
-
});
|
|
153
|
-
register(disposeRequest);
|
|
154
125
|
// Raw durable events for the DSH specialists. Registered before the
|
|
155
126
|
// session subscription, so each event reaches them before the
|
|
156
127
|
// projector folds it.
|
|
@@ -159,6 +130,7 @@ export function createBindingEvents(ctx, deps) {
|
|
|
159
130
|
return;
|
|
160
131
|
deps.messageObserver?.publish(native.agent.session, event);
|
|
161
132
|
deps.modeActions.onSessionEvent(native.agent.session, event);
|
|
133
|
+
deps.jobs?.onSessionEvent(event);
|
|
162
134
|
}));
|
|
163
135
|
},
|
|
164
136
|
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a channel composition needs from its host, without naming Cordis:
|
|
3
|
+
* service lookups, a logger, the lifetime hook, the DecisionEvents dispatch
|
|
4
|
+
* and gate, and the DSH-only `agent/pre-step` waterfall. Implemented by
|
|
5
|
+
* `cordis-host.ts`. Lookups for services the host does not mount return
|
|
6
|
+
* undefined, and every consumer degrades on that.
|
|
7
|
+
*/
|
|
8
|
+
import type { PreStepDecision } from '@deepseek-ai/dsh-agent';
|
|
9
|
+
import type { AdapterRuntimeOptions } from '../../adapter/kernel/runtime.js';
|
|
10
|
+
import type { GrantStore } from '../../adapter/standard/grants.js';
|
|
11
|
+
import type { TuiSettingsSectionsHost } from '../settings-sections.js';
|
|
12
|
+
/** Named host service lookup (`fs`, `attachments`, `shell`, `settings`,
|
|
13
|
+
* `credentials`, `llm`, `dshAuth` and the `tui*` rows); a Cordis context
|
|
14
|
+
* satisfies it as is. */
|
|
15
|
+
export interface ServiceLookup {
|
|
16
|
+
get(name: string): unknown;
|
|
17
|
+
}
|
|
18
|
+
export interface ChannelHostLogger {
|
|
19
|
+
warn(message: string, ...args: unknown[]): void;
|
|
20
|
+
}
|
|
21
|
+
/** The `agent/pre-step` waterfall listener (DSH sessions only). */
|
|
22
|
+
export type AgentPreStepListener = (payload: unknown, next: () => Promise<PreStepDecision>) => Promise<PreStepDecision>;
|
|
23
|
+
export interface ChannelHost extends ServiceLookup {
|
|
24
|
+
readonly logger: ChannelHostLogger;
|
|
25
|
+
/** The adapter-mode snapshot of this composition root. */
|
|
26
|
+
readonly runtime: AdapterRuntimeOptions;
|
|
27
|
+
/** Tie a teardown to the host's lifetime; absent = the channel owner's
|
|
28
|
+
* release is the only teardown. */
|
|
29
|
+
effect?(setup: () => () => void, label?: string): void;
|
|
30
|
+
/** Subscribe to the agent's pre-step waterfall; absent off DSH. */
|
|
31
|
+
onAgentPreStep?(listener: AgentPreStepListener): () => void;
|
|
32
|
+
/** Run a `tui/*` decision event through its registered handlers. */
|
|
33
|
+
dispatchDecision<T>(name: string, payload: Record<string, unknown>, normalize: (result: unknown, warn: (what: string) => void) => T | undefined): Promise<T | undefined>;
|
|
34
|
+
/** Fire a `tui/*` notification event (no result). */
|
|
35
|
+
dispatchNotification(name: string, payload: Record<string, unknown>): Promise<void>;
|
|
36
|
+
/** Install the default-deny decision-subscription gate (idempotent per root). */
|
|
37
|
+
installDecisionGuard(grants: GrantStore): void;
|
|
38
|
+
/** Record that this composition dispatches DecisionEvents; returns the undo. */
|
|
39
|
+
markDecisionDispatchTopology(): () => void;
|
|
40
|
+
/** The in-package settings-sections host, used when no row provides one. */
|
|
41
|
+
localSettingsSections(): TuiSettingsSectionsHost;
|
|
42
|
+
/** Hear about named services coming or going after construction; absent = never. */
|
|
43
|
+
watchServices?(listener: (name: string) => void): () => void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=channel-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-host.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/channel-host.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAEtE;;0BAE0B;AAC1B,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;CAChD;AAED,mEAAmE;AACnE,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,KACjC,OAAO,CAAC,eAAe,CAAC,CAAA;AAE7B,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC;wCACoC;IACpC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtD,mEAAmE;IACnE,cAAc,CAAC,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAAA;IAC3D,oEAAoE;IACpE,gBAAgB,CAAC,CAAC,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,GAAG,SAAS,GAC1E,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;IACzB,qDAAqD;IACrD,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnF,iFAAiF;IACjF,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IAC9C,gFAAgF;IAChF,4BAA4B,IAAI,MAAM,IAAI,CAAA;IAC1C,4EAA4E;IAC5E,qBAAqB,IAAI,uBAAuB,CAAA;IAChD,oFAAoF;IACpF,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -16,6 +16,11 @@ export declare function createCommandCompletions(deps: {
|
|
|
16
16
|
/** The bound backend's MCP server names when it controls them
|
|
17
17
|
* (`/mcp reconnect|toggle`); undefined = `/mcp` takes no arguments. */
|
|
18
18
|
mcpServers?(): readonly string[] | undefined;
|
|
19
|
+
/** `/plugin info <name>`: the profile's added bundles, warm-and-read. */
|
|
20
|
+
plugin?: {
|
|
21
|
+
warmPluginNames(): void;
|
|
22
|
+
pluginNames(): readonly CommandCompletionNode[];
|
|
23
|
+
};
|
|
19
24
|
model: {
|
|
20
25
|
warmModelNodes(): void;
|
|
21
26
|
modelNodes(): readonly CommandCompletionNode[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-completions.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/command-completions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAK1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,wFAAwF;AACxF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,KAAK,EAAE,MAAM,YAAY,CAAA;IACzB,SAAS,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,qBAAqB,EAAE,CAAA;KAAE,CAAA;IACtF,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;4EACwE;IACxE,UAAU,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IAC5C,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;CACF,IAES,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"command-completions.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/command-completions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAK1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,wFAAwF;AACxF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,KAAK,EAAE,MAAM,YAAY,CAAA;IACzB,SAAS,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,qBAAqB,EAAE,CAAA;KAAE,CAAA;IACtF,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;4EACwE;IACxE,UAAU,CAAC,IAAI,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IAC5C,yEAAyE;IACzE,MAAM,CAAC,EAAE;QACP,eAAe,IAAI,IAAI,CAAA;QACvB,WAAW,IAAI,SAAS,qBAAqB,EAAE,CAAA;KAChD,CAAA;IACD,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;CACF,IAES,OAAO,MAAM,qDAsHtB"}
|
|
@@ -18,6 +18,8 @@ export function createCommandCompletions(deps) {
|
|
|
18
18
|
model.warmPresetOptions();
|
|
19
19
|
if ('effort'.startsWith(head))
|
|
20
20
|
model.warmEffortLevels();
|
|
21
|
+
if ('plugin'.startsWith(head))
|
|
22
|
+
deps.plugin?.warmPluginNames();
|
|
21
23
|
}
|
|
22
24
|
return completeCommands(input, state.commandList, path => {
|
|
23
25
|
if (path.length === 1 && path[0] === 'model') {
|
|
@@ -125,6 +127,20 @@ export function createCommandCompletions(deps) {
|
|
|
125
127
|
{ name: 'on', description: 'Enter plan mode: read-only, plan before acting', descriptionKey: 'plan-mode-on-desc' },
|
|
126
128
|
{ name: 'off', description: 'Exit plan mode, back to normal execution', descriptionKey: 'plan-mode-off-desc' },
|
|
127
129
|
];
|
|
130
|
+
// `/plugin`'s own forms. The subcommand list is static — it is what the
|
|
131
|
+
// command accepts — while `info`'s argument is whatever the profile
|
|
132
|
+
// actually holds (an absent service answers an empty list, never a throw).
|
|
133
|
+
if (path.length === 1 && path[0] === 'plugin')
|
|
134
|
+
return [
|
|
135
|
+
{ name: 'list', description: 'List the plugins this profile added', descriptionKey: 'sugg-plugin-list-desc' },
|
|
136
|
+
{ name: 'info', description: 'Describe an installed plugin or an install spec', descriptionKey: 'sugg-plugin-info-desc' },
|
|
137
|
+
{ name: 'registries', description: 'Show where installations ask', descriptionKey: 'sugg-plugin-registries-desc' },
|
|
138
|
+
{ name: 'check', description: 'Validate a plugin manifest without installing it', descriptionKey: 'sugg-plugin-check-desc' },
|
|
139
|
+
];
|
|
140
|
+
if (path.length === 2 && path[0] === 'plugin' && path[1] === 'info') {
|
|
141
|
+
deps.plugin?.warmPluginNames();
|
|
142
|
+
return deps.plugin?.pluginNames() ?? [];
|
|
143
|
+
}
|
|
128
144
|
return commandTrees?.children(path) ?? [];
|
|
129
145
|
});
|
|
130
146
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ServiceLookup } from './channel-host.js';
|
|
2
2
|
import type { LocalImageStore } from './core/local-images.js';
|
|
3
3
|
import type { ChannelOwner } from './owner.js';
|
|
4
4
|
import type { ChannelImageBlock, ComposerImageRef, StagedImageHandle, StagedImageInput, TranscriptImage } from './types.js';
|
|
@@ -57,8 +57,10 @@ export interface ComposerImages {
|
|
|
57
57
|
* capability map, its preview facades and the `[Image #N]` compatibility
|
|
58
58
|
* bindings minted by the public scene `stageImage()` API.
|
|
59
59
|
*/
|
|
60
|
-
export declare function createComposerImages(ctx:
|
|
60
|
+
export declare function createComposerImages(ctx: ServiceLookup, owner: ChannelOwner, deps: {
|
|
61
61
|
generation(): number;
|
|
62
|
+
/** An empty startup id adopts its first real session without losing the draft. */
|
|
63
|
+
sessionId?(): string;
|
|
62
64
|
/** The in-memory store of a session that takes images itself (a
|
|
63
65
|
* backend with the `images` capability); undefined = the DSH
|
|
64
66
|
* attachments service. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer-images.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/composer-images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"composer-images.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/composer-images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAOtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAEhB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAA;AAEnB,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,QAAqB,CAAA;AAEtD;6EAC6E;AAC7E,eAAO,MAAM,0BAA0B,QAAsB,CAAA;AAE7D,eAAO,MAAM,sBAAsB,GAAI,WAAW,MAAM,KAAG,MACe,CAAA;AAE1E;;;2EAG2E;AAC3E,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,gBAAgB,EAAE,EACjC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAC7B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAehB;AAED;;4EAE4E;AAC5E,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,MAAM,GAAG,SAAS,CAKpB;AAOD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC;iEAC6D;IAC7D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,6BAA6B;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC;AAED,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B;sEACkE;IAClE,qBAAqB,IAAI,MAAM,CAAA;IAC/B;yEACqE;IACrE,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD;iFAC6E;IAC7E,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC3F,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;IACxC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACzC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAA;IACzD,iBAAiB,IAAI,mBAAmB,GAAG,SAAS,CAAA;IACpD;0EACsE;IACtE,iBAAiB,IAAI,IAAI,CAAA;IACzB,6EAA6E;IAC7E,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAA;IAChE;4DACwD;IACxD,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,gBAAgB,EAAE,CAAA;IACtG,wEAAwE;IACxE,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,gBAAgB,EAAE,CAAA;CACnG;AA0BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE;IACJ,UAAU,IAAI,MAAM,CAAA;IACpB,kFAAkF;IAClF,SAAS,CAAC,IAAI,MAAM,CAAA;IACpB;;+BAE2B;IAC3B,WAAW,CAAC,IAAI,eAAe,GAAG,SAAS,CAAA;CAC5C,GACA,cAAc,CAuRhB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { rememberImagePath, transcriptImageFromAttachment } from '../transcript-images.js';
|
|
3
|
-
import { probeImageSize, adaptImageForAdmission, withinDimensionLimits } from '../../utils/imageResize.js';
|
|
3
|
+
import { probeImageSize, sniffImageMediaType, adaptImageForAdmission, withinDimensionLimits } from '../../utils/imageResize.js';
|
|
4
|
+
import { logForDebugging } from '../../utils/debug.js';
|
|
4
5
|
import { mentionAttachments } from './mentions.js';
|
|
5
6
|
/** Every visible composer placeholder token, in source order. */
|
|
6
7
|
export const COMPOSER_IMAGE_TOKEN = /\[Image #\d+\]/gu;
|
|
@@ -58,7 +59,7 @@ function admissionFailure(outcome, context) {
|
|
|
58
59
|
case 'animated-unsupported':
|
|
59
60
|
return `resizing or converting this animated image cannot keep its frames (${outcome.detail})`;
|
|
60
61
|
default:
|
|
61
|
-
return `image could not be decoded
|
|
62
|
+
return `the pasted image data could not be decoded (${outcome.detail})`;
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
/** A store-reported pixel dimension, or the gate's own value when the store
|
|
@@ -102,18 +103,25 @@ export function createComposerImages(ctx, owner, deps) {
|
|
|
102
103
|
* point re-checks it, so a replacement session revokes the old draft's
|
|
103
104
|
* capabilities BEFORE any subscriber can observe it — the invariant the
|
|
104
105
|
* single-file channel got by clearing immediately after the agent rebind,
|
|
105
|
-
* made independent of the caller's ordering.
|
|
106
|
+
* made independent of the caller's ordering. The empty startup session's
|
|
107
|
+
* first real binding retains the same draft and image epoch. */
|
|
106
108
|
let syncedGeneration;
|
|
109
|
+
let syncedSessionId;
|
|
107
110
|
const syncSession = () => {
|
|
108
111
|
const generation = deps.generation();
|
|
112
|
+
const sessionId = deps.sessionId?.();
|
|
109
113
|
if (syncedGeneration === undefined) {
|
|
110
114
|
syncedGeneration = generation;
|
|
115
|
+
syncedSessionId = sessionId;
|
|
111
116
|
return;
|
|
112
117
|
}
|
|
113
118
|
if (generation === syncedGeneration)
|
|
114
119
|
return;
|
|
120
|
+
const startupAdoption = syncedSessionId === '' && sessionId !== undefined && sessionId !== '';
|
|
115
121
|
syncedGeneration = generation;
|
|
116
|
-
|
|
122
|
+
syncedSessionId = sessionId;
|
|
123
|
+
if (!startupAdoption)
|
|
124
|
+
clearStagedImages();
|
|
117
125
|
};
|
|
118
126
|
const includeLegacyImageRefs = (text, images) => {
|
|
119
127
|
if (legacyStagedImageRefs.size === 0)
|
|
@@ -168,6 +176,16 @@ export function createComposerImages(ctx, owner, deps) {
|
|
|
168
176
|
const pixelCap = attachments.imageLimits.maxImagePixels;
|
|
169
177
|
let mediaType = input.mediaType;
|
|
170
178
|
let data = input.data;
|
|
179
|
+
// The content wins over the declared label — the same rule the local
|
|
180
|
+
// image store applies (channel/core/local-images.ts): a paste declares
|
|
181
|
+
// its media type from the filename, and a renamed or mis-exported file
|
|
182
|
+
// (a wechat download, a re-saved screenshot) would otherwise be judged
|
|
183
|
+
// and stored under a type its bytes contradict. The sniff reads magic
|
|
184
|
+
// bytes only; content it cannot identify keeps the declared label and
|
|
185
|
+
// takes the decode-or-refuse path below.
|
|
186
|
+
const sniffed = sniffImageMediaType(data);
|
|
187
|
+
if (sniffed !== undefined && sniffed !== mediaType)
|
|
188
|
+
mediaType = sniffed;
|
|
171
189
|
let adapted;
|
|
172
190
|
if (typeof dimensionCap === 'number' && typeof pixelCap === 'number'
|
|
173
191
|
&& Number.isFinite(dimensionCap) && Number.isFinite(pixelCap)) {
|
|
@@ -197,8 +215,21 @@ export function createComposerImages(ctx, owner, deps) {
|
|
|
197
215
|
// (measured oversize, unaccepted format, decode failure, animation
|
|
198
216
|
// that cannot survive) is a refusal we can state now.
|
|
199
217
|
const degraded = outcome.reason === 'sharp-missing' && sourceAccepted && !knownOversize;
|
|
200
|
-
if (!degraded)
|
|
218
|
+
if (!degraded) {
|
|
219
|
+
// The refused bytes are the only forensic handle on a "could not
|
|
220
|
+
// be decoded" paste — the temp export is unlinked right after —
|
|
221
|
+
// so an opted-in run records what the gate actually saw.
|
|
222
|
+
logForDebugging('image ingress refused', {
|
|
223
|
+
reason: outcome.reason,
|
|
224
|
+
detail: outcome.detail,
|
|
225
|
+
declared: input.mediaType,
|
|
226
|
+
sniffed,
|
|
227
|
+
bytes: data.byteLength,
|
|
228
|
+
prefix: Buffer.from(data.subarray(0, 16)).toString('hex'),
|
|
229
|
+
...(input.name === undefined ? {} : { name: input.name }),
|
|
230
|
+
});
|
|
201
231
|
throw new Error(admissionFailure(outcome, { probe, mediaType, limits: dimensionLimits }));
|
|
232
|
+
}
|
|
202
233
|
}
|
|
203
234
|
}
|
|
204
235
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ChannelHost a Cordis plugin context provides. Root-keyed registries
|
|
3
|
+
* (adapter runtime, decision gate and handlers, local settings sections) stay
|
|
4
|
+
* keyed on the Cordis root, so the extensions row that also installs the gate
|
|
5
|
+
* meets the channel on one registry.
|
|
6
|
+
*/
|
|
7
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
8
|
+
import type { ChannelHost } from './channel-host.js';
|
|
9
|
+
/**
|
|
10
|
+
* @param services - Services served in place of the context's own (the
|
|
11
|
+
* TUI's file-backed `settings`, ../tui-settings.ts).
|
|
12
|
+
*/
|
|
13
|
+
export declare function cordisChannelHost(ctx: Context, services?: Readonly<Record<string, unknown>>): ChannelHost;
|
|
14
|
+
//# sourceMappingURL=cordis-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cordis-host.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/cordis-host.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GAAG,WAAW,CA2B7G"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { adapterRuntimeFor } from '../../adapter/kernel/runtime-context.js';
|
|
2
|
+
import { installDecisionGuard, markDecisionDispatchTopology } from '../decision-guard.js';
|
|
3
|
+
import { dispatchTuiDecision, dispatchTuiNotification } from '../extension-events.js';
|
|
4
|
+
import { getLocalSettingsSectionsHost } from '../settings-sections.js';
|
|
5
|
+
/**
|
|
6
|
+
* @param services - Services served in place of the context's own (the
|
|
7
|
+
* TUI's file-backed `settings`, ../tui-settings.ts).
|
|
8
|
+
*/
|
|
9
|
+
export function cordisChannelHost(ctx, services = {}) {
|
|
10
|
+
const withEffect = ctx;
|
|
11
|
+
return {
|
|
12
|
+
get: name => Object.hasOwn(services, name) ? services[name] : ctx.get(name),
|
|
13
|
+
// Read per use.
|
|
14
|
+
get logger() { return ctx.logger; },
|
|
15
|
+
runtime: adapterRuntimeFor(ctx),
|
|
16
|
+
// Bare embedders (scripts) mount without the effect capability.
|
|
17
|
+
...(withEffect.effect === undefined ? {} : {
|
|
18
|
+
effect: (setup, label) => { withEffect.effect?.call(ctx, setup, label); },
|
|
19
|
+
}),
|
|
20
|
+
onAgentPreStep: listener => ctx.on('agent/pre-step', listener),
|
|
21
|
+
dispatchDecision: (name, payload, normalize) => dispatchTuiDecision(ctx, name, payload, normalize),
|
|
22
|
+
dispatchNotification: (name, payload) => dispatchTuiNotification(ctx, name, payload),
|
|
23
|
+
installDecisionGuard: grants => { installDecisionGuard(ctx, grants); },
|
|
24
|
+
markDecisionDispatchTopology: () => markDecisionDispatchTopology(ctx),
|
|
25
|
+
localSettingsSections: () => getLocalSettingsSectionsHost(ctx),
|
|
26
|
+
// Cordis announces every service change on the root; bare embedders
|
|
27
|
+
// (scripts) without `on` hear nothing.
|
|
28
|
+
...(typeof ctx.on !== 'function' ? {} : {
|
|
29
|
+
watchServices: listener => ctx.on('internal/service', ((name) => {
|
|
30
|
+
if (typeof name === 'string')
|
|
31
|
+
listener(name);
|
|
32
|
+
})),
|
|
33
|
+
}),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
@@ -22,18 +22,18 @@ import type { ChannelState } from '../types.js';
|
|
|
22
22
|
export declare function createCapabilityDelegates(deps: {
|
|
23
23
|
owner: Pick<ChannelOwner, 'current'>;
|
|
24
24
|
session(): AgentSession;
|
|
25
|
-
state: () => Pick<ChannelState, 'provider' | 'backendCapabilities'>;
|
|
25
|
+
state: () => Pick<ChannelState, 'provider' | 'model' | 'backendCapabilities'>;
|
|
26
26
|
notify: ChannelState['notify'];
|
|
27
27
|
unavailable(name: string): void;
|
|
28
28
|
unavailableLines(name: string): string[];
|
|
29
29
|
guarded<T>(name: string, fallback: T, run: () => Promise<T>): Promise<T>;
|
|
30
30
|
}): Partial<ChannelActionDelegates>;
|
|
31
|
-
/** Merge the layers and install them
|
|
31
|
+
/** Merge the layers and install them (`replace`: the adoption-window reinstall, core/compose.ts). */
|
|
32
32
|
export declare function installChannelActions(readiness: ReturnType<typeof createChannelActionReadiness>, layers: {
|
|
33
33
|
unavailable(name: string): void;
|
|
34
34
|
unavailableLines(name: string): string[];
|
|
35
35
|
capability: Partial<ChannelActionDelegates>;
|
|
36
36
|
core: Partial<ChannelActionDelegates>;
|
|
37
37
|
extension: Partial<ChannelActionDelegates> | undefined;
|
|
38
|
-
}): void;
|
|
38
|
+
}, replace?: boolean): void;
|
|
39
39
|
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../../src/dsh-adapter/channel/core/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAG7D,OAAO,EAAoC,KAAK,sBAAsB,EAAE,KAAK,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AACzI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACpC,OAAO,IAAI,YAAY,CAAA;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,qBAAqB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../../src/dsh-adapter/channel/core/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAG7D,OAAO,EAAoC,KAAK,sBAAsB,EAAE,KAAK,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AACzI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACpC,OAAO,IAAI,YAAY,CAAA;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,GAAG,qBAAqB,CAAC,CAAA;IAC7E,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC9B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACzE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAmHlC;AAED,qGAAqG;AACrG,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,EAC1D,MAAM,EAAE;IACN,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxC,UAAU,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAC3C,IAAI,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACrC,SAAS,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAA;CACvD,EACD,OAAO,UAAQ,GACd,IAAI,CAON"}
|