@deepseek-harness-tui/dsh-tui 0.14.1 → 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":"tui-contributions.d.ts","sourceRoot":"","sources":["../../../../src/adapter/spec/tui-contributions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,kCAAkC,CAAA;AAChD,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"tui-contributions.d.ts","sourceRoot":"","sources":["../../../../src/adapter/spec/tui-contributions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,kCAAkC,CAAA;AAChD,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAMpE,OAAO,EACL,OAAO,EACP,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AACvC,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,WAAW,GACZ,MAAM,gCAAgC,CAAA;AAEvC,eAAO,MAAM,yBAAyB,qBAAqB,CAAA;AAE3D,oEAAoE;AACpE,eAAO,MAAM,0BAA0B;;;EAAkB,CAAA"}
|
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
import { DECISION_EVENTS } from '#tui-profile/profile-definitions';
|
|
11
11
|
export * from '#tui-profile/profile-definitions';
|
|
12
12
|
export { TUI_DECISION_EVENT_NAMES, TUI_EXTENSION_PERMISSION_NAMES, } from './protocol-constants.js';
|
|
13
|
+
export { BACKEND_CAPABILITY_NAMES } from './backend-capabilities.js';
|
|
14
|
+
// The Backend contribution family (B-2). `profile-definitions` re-exports only
|
|
15
|
+
// the registrar, and the definition itself must come from the profile module that
|
|
16
|
+
// authors it — still inside the spec boundary, the one layer allowed to resolve
|
|
17
|
+
// `#tui-profile/*`. The import map for this specifier already exists
|
|
18
|
+
// (`package.json` `imports`); nothing new is mounted.
|
|
19
|
+
export { BACKEND, BACKEND_CONFIRMATION_POLICIES, BACKEND_RESERVED_IDS, assertBackendHandler, backendExtensionDefinition, validateBackendSpec, } from '#tui-profile/tui-contributions';
|
|
13
20
|
export const TUI_EXTENSION_API_VERSION = 'tui.dsh/v1alpha1';
|
|
14
21
|
/** Re-exported from tui-profile; kept as a named friendly alias. */
|
|
15
22
|
export const DECISION_EVENTS_COORDINATE = DECISION_EVENTS;
|
|
@@ -15,6 +15,12 @@ export interface SpecData {
|
|
|
15
15
|
}
|
|
16
16
|
export declare function locateSpecDir(start?: string): string | undefined;
|
|
17
17
|
export declare function loadSpecData(dir?: string | undefined): SpecData | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Every registry entry this host can resolve a contract reference against, in
|
|
20
|
+
* section order: imported contracts, TUI-owned protocol definitions, and the
|
|
21
|
+
* manifest extension definitions (`Backend` is the family that made this section
|
|
22
|
+
* load-bearing — a bundle's declaration is admitted against it).
|
|
23
|
+
*/
|
|
18
24
|
export declare function registryEntries(registry: ContractRegistry): RegistryEntry[];
|
|
19
25
|
export declare function digestFile(dir: string, relative: string): `sha256:${string}`;
|
|
20
26
|
/** Verify definition availability and private profile digest pins. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/adapter/standard/registry.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAQvE,OAAO,KAAK,EAAE,gBAAgB,EAAmB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/adapter/standard/registry.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAQvE,OAAO,KAAK,EAAE,gBAAgB,EAAmB,kBAAkB,EAAwB,aAAa,EAAE,MAAM,YAAY,CAAA;AAE5H,eAAO,MAAM,gBAAgB,6CAA6C,CAAA;AAC1E,wDAAwD;AACxD,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,WAAW,EAAE,kBAAkB,CAAA;IAC/B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC/B,CAAA;CACF;AASD,wBAAgB,aAAa,CAAC,KAAK,GAAE,MAAgD,GAAG,MAAM,GAAG,SAAS,CASzG;AAgGD,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,GAAG,SAA2B,GAAG,QAAQ,GAAG,SAAS,CAiB5F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,aAAa,EAAE,CAG3E;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,MAAM,EAAE,CAE5E;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAuDvD;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAyD/D"}
|
|
@@ -34,7 +34,7 @@ function isRecord(value) {
|
|
|
34
34
|
}
|
|
35
35
|
function soundEntry(value, privateDefinition) {
|
|
36
36
|
if (!isRecord(value) || typeof value.name !== 'string' || value.name === ''
|
|
37
|
-
|| (value.kind !== 'capability' && value.kind !== 'event'))
|
|
37
|
+
|| (value.kind !== 'capability' && value.kind !== 'event' && value.kind !== 'extension'))
|
|
38
38
|
return false;
|
|
39
39
|
if (!isRecord(value.coordinates)
|
|
40
40
|
|| typeof value.coordinates.apiVersion !== 'string' || value.coordinates.apiVersion === ''
|
|
@@ -51,6 +51,16 @@ function soundEntry(value, privateDefinition) {
|
|
|
51
51
|
}
|
|
52
52
|
return typeof value.package === 'string' && /^@dsh-std\/[a-z0-9][a-z0-9-]*$/u.test(value.package);
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* An `extensions` entry is either imported (`authority: 'dsh-std'`, identified
|
|
56
|
+
* by its package) or TUI-owned (identified by its pinned profile) — the same
|
|
57
|
+
* split `imports` vs `definitions` makes, and the same one the profile's own
|
|
58
|
+
* conformance runner applies. Anything that is not explicitly dsh-std's must
|
|
59
|
+
* satisfy the TUI-owned shape, so an entry cannot dodge both.
|
|
60
|
+
*/
|
|
61
|
+
function soundExtension(value) {
|
|
62
|
+
return soundEntry(value, !(isRecord(value) && value.authority === 'dsh-std'));
|
|
63
|
+
}
|
|
54
64
|
function structurallySound(data) {
|
|
55
65
|
if (!isRecord(data.registry)
|
|
56
66
|
|| data.registry.profileVersion !== EXPECTED_PROFILE_VERSION
|
|
@@ -60,6 +70,7 @@ function structurallySound(data) {
|
|
|
60
70
|
|| data.registry.std.manifestVersion !== EXPECTED_STD_MANIFEST_VERSION
|
|
61
71
|
|| !Array.isArray(data.registry.imports)
|
|
62
72
|
|| !Array.isArray(data.registry.definitions)
|
|
73
|
+
|| !Array.isArray(data.registry.extensions)
|
|
63
74
|
|| !Array.isArray(data.registry.facetApiVersions)
|
|
64
75
|
|| data.registry.facetApiVersions.length === 0
|
|
65
76
|
|| !data.registry.facetApiVersions.every(version => typeof version === 'string'
|
|
@@ -71,7 +82,9 @@ function structurallySound(data) {
|
|
|
71
82
|
return false;
|
|
72
83
|
if (!data.registry.definitions.every(entry => soundEntry(entry, true)))
|
|
73
84
|
return false;
|
|
74
|
-
|
|
85
|
+
if (!data.registry.extensions.every(soundExtension))
|
|
86
|
+
return false;
|
|
87
|
+
const entries = [...data.registry.imports, ...data.registry.definitions, ...data.registry.extensions];
|
|
75
88
|
const names = new Set();
|
|
76
89
|
const coordinates = new Set();
|
|
77
90
|
for (const entry of entries) {
|
|
@@ -82,7 +95,9 @@ function structurallySound(data) {
|
|
|
82
95
|
if (coordinates.has(key))
|
|
83
96
|
return false;
|
|
84
97
|
coordinates.add(key);
|
|
85
|
-
|
|
98
|
+
// Only this profile's own entries must live in the private protocol group;
|
|
99
|
+
// an imported extension names a dsh-std coordinate (`workspace.dsh/…`).
|
|
100
|
+
if (entry.authority === 'dsh-tui' && !entry.coordinates.apiVersion.startsWith('tui.dsh/'))
|
|
86
101
|
return false;
|
|
87
102
|
}
|
|
88
103
|
if (!isRecord(data.permissions)
|
|
@@ -138,10 +153,15 @@ export function loadSpecData(dir = locateSpecDir()) {
|
|
|
138
153
|
return undefined;
|
|
139
154
|
}
|
|
140
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Every registry entry this host can resolve a contract reference against, in
|
|
158
|
+
* section order: imported contracts, TUI-owned protocol definitions, and the
|
|
159
|
+
* manifest extension definitions (`Backend` is the family that made this section
|
|
160
|
+
* load-bearing — a bundle's declaration is admitted against it).
|
|
161
|
+
*/
|
|
141
162
|
export function registryEntries(registry) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
: [];
|
|
163
|
+
const section = (value) => Array.isArray(value) ? value : [];
|
|
164
|
+
return [...section(registry.imports), ...section(registry.definitions), ...section(registry.extensions)];
|
|
145
165
|
}
|
|
146
166
|
export function digestFile(dir, relative) {
|
|
147
167
|
return `sha256:${createHash('sha256').update(readFileSync(join(dir, relative))).digest('hex')}`;
|
|
@@ -155,12 +175,16 @@ export function verifyRegistry(data) {
|
|
|
155
175
|
|| !Array.isArray(registry.definitions)) {
|
|
156
176
|
return ['registry imports/definitions are malformed'];
|
|
157
177
|
}
|
|
178
|
+
// `structurallySound()` requires the section; a hand-built `SpecData` (gates,
|
|
179
|
+
// fixtures) may omit it, and an absent section is an empty one.
|
|
180
|
+
const extensions = Array.isArray(registry.extensions) ? registry.extensions : [];
|
|
158
181
|
const names = new Set();
|
|
159
182
|
const coordinates = new Set();
|
|
160
|
-
const { protocols } = getAdmissionCatalog();
|
|
161
|
-
for (const raw of [...registry.imports, ...registry.definitions]) {
|
|
183
|
+
const { protocols, manifests } = getAdmissionCatalog();
|
|
184
|
+
for (const raw of [...registry.imports, ...registry.definitions, ...extensions]) {
|
|
162
185
|
const privateDefinition = registry.definitions.includes(raw);
|
|
163
|
-
|
|
186
|
+
const extension = extensions.includes(raw);
|
|
187
|
+
if (!soundEntry(raw, extension ? !(isRecord(raw) && raw.authority === 'dsh-std') : privateDefinition)) {
|
|
164
188
|
failures.push('registry entry is malformed');
|
|
165
189
|
continue;
|
|
166
190
|
}
|
|
@@ -172,11 +196,23 @@ export function verifyRegistry(data) {
|
|
|
172
196
|
if (coordinates.has(key))
|
|
173
197
|
failures.push(`${key}: duplicate registry coordinate`);
|
|
174
198
|
coordinates.add(key);
|
|
175
|
-
if ('authority' in entry && !entry.coordinates.apiVersion.startsWith('tui.dsh/')) {
|
|
199
|
+
if ('authority' in entry && entry.authority === 'dsh-tui' && !entry.coordinates.apiVersion.startsWith('tui.dsh/')) {
|
|
176
200
|
failures.push(`${key}: dsh-tui definition must use the private protocol group`);
|
|
177
201
|
}
|
|
178
|
-
if (
|
|
202
|
+
if (extension) {
|
|
203
|
+
// A manifest extension definition is published by the *manifest* catalog,
|
|
204
|
+
// never by the protocol catalog. Only an entry with a pinned profile is
|
|
205
|
+
// this host's own and must therefore resolve: an imported one names a
|
|
206
|
+
// dsh-std package this profile may not install (today `@dsh-std/workspace`),
|
|
207
|
+
// and dropping the whole descriptor over a definition the host does not
|
|
208
|
+
// ship — and never reads — would be a false alarm.
|
|
209
|
+
if ('profile' in entry && manifests.extension(entry.coordinates) === undefined) {
|
|
210
|
+
failures.push(`${key}: manifest extension definition unavailable`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
else if (!protocols.understands(entry.coordinates)) {
|
|
179
214
|
failures.push(`${key}: ProtocolCatalog definition unavailable`);
|
|
215
|
+
}
|
|
180
216
|
if ('profile' in entry) {
|
|
181
217
|
let actual;
|
|
182
218
|
try {
|
|
@@ -199,15 +235,24 @@ export function verifyContractProfiles(data) {
|
|
|
199
235
|
'errors', 'concurrency', 'timeout', 'cleanup', 'privacyClass', 'securityBoundary',
|
|
200
236
|
];
|
|
201
237
|
const failures = [];
|
|
202
|
-
|
|
203
|
-
|
|
238
|
+
const registry = data?.registry;
|
|
239
|
+
if (!isRecord(data?.registry) || !Array.isArray(registry?.definitions)) {
|
|
204
240
|
return ['registry definitions are malformed'];
|
|
205
241
|
}
|
|
206
|
-
|
|
207
|
-
|
|
242
|
+
const extensions = Array.isArray(registry.extensions) ? registry.extensions : [];
|
|
243
|
+
// TUI-owned extension profiles are held to the same ten-point shape as the
|
|
244
|
+
// protocol definitions: `Backend`'s contract profile is the pinned description
|
|
245
|
+
// of a contribution family third parties write against (W-2).
|
|
246
|
+
const ownedProfiles = [
|
|
247
|
+
...data.registry.definitions,
|
|
248
|
+
...extensions.filter(extension => isRecord(extension) && 'profile' in extension),
|
|
249
|
+
];
|
|
250
|
+
for (const raw of ownedProfiles) {
|
|
251
|
+
if (!soundEntry(raw, true)) {
|
|
208
252
|
failures.push('registry definition is malformed');
|
|
209
253
|
continue;
|
|
210
254
|
}
|
|
255
|
+
const entry = raw;
|
|
211
256
|
let profile;
|
|
212
257
|
try {
|
|
213
258
|
const loaded = loadJson(data.dir, entry.profile);
|
|
@@ -236,6 +281,11 @@ export function verifyContractProfiles(data) {
|
|
|
236
281
|
if (!('operations' in profile) || profile.securityBoundary !== false) {
|
|
237
282
|
failures.push(`${entry.name}: capability boundary is incomplete`);
|
|
238
283
|
}
|
|
284
|
+
// The section is what selects the reader (manifest definition vs protocol
|
|
285
|
+
// definition), so a profile may not disagree with it.
|
|
286
|
+
if (extensions.includes(entry) && profile.kind !== 'extension') {
|
|
287
|
+
failures.push(`${entry.name}: extension definition profile must declare kind "extension"`);
|
|
288
|
+
}
|
|
239
289
|
}
|
|
240
290
|
return failures;
|
|
241
291
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-extension.d.ts","sourceRoot":"","sources":["../../../../src/adapter/standard/tui-extension.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAO7D,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,8BAA8B,CAAA;AAErC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,eAAe,CAAA;IAC1B,SAAS,EAAE,yBAAyB,CAAA;CACrC;
|
|
1
|
+
{"version":3,"file":"tui-extension.d.ts","sourceRoot":"","sources":["../../../../src/adapter/standard/tui-extension.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAO7D,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,8BAA8B,CAAA;AAErC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,eAAe,CAAA;IAC1B,SAAS,EAAE,yBAAyB,CAAA;CACrC;AAyBD;0EAC0E;AAC1E,wBAAgB,mBAAmB,IAAI,gBAAgB,CAGtD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD"}
|
|
@@ -12,7 +12,7 @@ import { register as registerCommand } from '@dsh-std/command';
|
|
|
12
12
|
import { register as registerMessages } from '@dsh-std/messages';
|
|
13
13
|
import { register as registerPresentation } from '@dsh-std/presentation';
|
|
14
14
|
import { register as registerStorage } from '@dsh-std/storage';
|
|
15
|
-
import { registerProfileProtocols } from '../spec/tui-contributions.js';
|
|
15
|
+
import { registerProfileProtocols, registerTuiContributionExtensions } from '../spec/tui-contributions.js';
|
|
16
16
|
export { TUI_EXTENSION_API_VERSION, DECISION_EVENTS_COORDINATE, DECISION_EVENTS, TUI_DECISION_EVENT_NAMES, TUI_EXTENSION_PERMISSION_NAMES, decisionEventsDefinition, profileDefinitions, registerProfileProtocols, tuiChannelDefinition, TUI_CHANNEL, TUI_CHANNEL_FEATURES, TUI_CHANNEL_WIRE_REVISION, } from '../spec/tui-contributions.js';
|
|
17
17
|
/** Build a fresh catalog. This is intentionally not exported as the
|
|
18
18
|
* production entry point; production callers must use `getAdmissionCatalog()`.
|
|
@@ -26,6 +26,12 @@ function buildAdmissionCatalog() {
|
|
|
26
26
|
registerMessages(protocols);
|
|
27
27
|
registerPresentation(protocols);
|
|
28
28
|
registerProfileProtocols(protocols);
|
|
29
|
+
// The manifest extension catalog every `x-dsh-tui` contribution is validated
|
|
30
|
+
// against (W-2). Without it a bundle's SettingsSection / Scene / Backend
|
|
31
|
+
// declaration has no definition to resolve, so the family could never be
|
|
32
|
+
// admitted by a third party. Registering it here — the one assembly point of
|
|
33
|
+
// the canonical catalog, built lazily on first use — adds no startup ordering.
|
|
34
|
+
registerTuiContributionExtensions(manifests);
|
|
29
35
|
return { protocols, manifests };
|
|
30
36
|
}
|
|
31
37
|
let canonicalAdmissionCatalog;
|
|
@@ -81,7 +81,9 @@ export interface PermissionRegistry {
|
|
|
81
81
|
interface RegistryEntryBase {
|
|
82
82
|
name: string;
|
|
83
83
|
coordinates: ContractCoordinate;
|
|
84
|
-
|
|
84
|
+
/** What the entry registers: a contract capability, an event point, or a
|
|
85
|
+
* manifest extension definition (`SettingsSection` / `Scene` / `Backend` …). */
|
|
86
|
+
kind: 'capability' | 'event' | 'extension';
|
|
85
87
|
permissions: string[];
|
|
86
88
|
eventEnvelope?: string;
|
|
87
89
|
}
|
|
@@ -103,6 +105,13 @@ export interface ContractRegistry {
|
|
|
103
105
|
};
|
|
104
106
|
imports: ImportedRegistryEntry[];
|
|
105
107
|
definitions: PrivateRegistryEntry[];
|
|
108
|
+
/**
|
|
109
|
+
* Manifest extension definitions, both imported and TUI-owned (W-2). The
|
|
110
|
+
* section is what a contribution family is *published* from: `Backend` lives
|
|
111
|
+
* here, which is why the registry reader, the descriptor's supported-contract
|
|
112
|
+
* derivation and the admission gates all read it (`src/adapter/standard/registry.ts`).
|
|
113
|
+
*/
|
|
114
|
+
extensions: RegistryEntry[];
|
|
106
115
|
facetApiVersions: string[];
|
|
107
116
|
}
|
|
108
117
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapter/standard/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/adapter/standard/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-descriptor-driver.d.ts","sourceRoot":"","sources":["../../../../src/adapter/upstream/host-descriptor-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAUjE,OAAO,KAAK,EAAE,SAAS,EAAqB,MAAM,gBAAgB,CAAA;AAClE,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAA;AA8BtE;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAwCtE;
|
|
1
|
+
{"version":3,"file":"host-descriptor-driver.d.ts","sourceRoot":"","sources":["../../../../src/adapter/upstream/host-descriptor-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAUjE,OAAO,KAAK,EAAE,SAAS,EAAqB,MAAM,gBAAgB,CAAA;AAClE,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAA;AA8BtE;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAwCtE;AA+aD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,EAAE,CAejF;AAED;;;;;;;;GAQG;AACH,wBAAsB,+BAA+B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA0ElG;AAED,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,EAAE,cAclC,CAAA"}
|
|
@@ -88,6 +88,10 @@ function contractServiceName(coordinate) {
|
|
|
88
88
|
case 'LocalStorage': return 'tuiPluginStorage';
|
|
89
89
|
case 'MessageObserver': return 'tuiMessageObserver';
|
|
90
90
|
case 'DecisionEvents': return 'tuiPluginHost';
|
|
91
|
+
// The `Backend` contribution family is not a plugin-visible service; the
|
|
92
|
+
// host row that owns the descriptor owns its admission machine too, and
|
|
93
|
+
// reports it through the read-only probe below (W-2).
|
|
94
|
+
case 'Backend': return 'tuiPluginHost';
|
|
91
95
|
default: return '';
|
|
92
96
|
}
|
|
93
97
|
}
|
|
@@ -382,12 +386,44 @@ async function probeMessageLive(service) {
|
|
|
382
386
|
};
|
|
383
387
|
}
|
|
384
388
|
}
|
|
389
|
+
/** The backend admission machine probe (W-2).
|
|
390
|
+
*
|
|
391
|
+
* `Backend` is a manifest extension family, not a plugin-visible service, and the
|
|
392
|
+
* contract may only be published when the host can actually admit a
|
|
393
|
+
* contribution. The host row that owns the descriptor reports that itself
|
|
394
|
+
* (`ctx.tuiPluginHost.probeBackendAdmission()`), read-only and side-effect free —
|
|
395
|
+
* the same shape as `probeDecisionEvents()`, which likewise reports topology the
|
|
396
|
+
* service row alone cannot prove. */
|
|
397
|
+
function probeBackendAdmissionMachine(service) {
|
|
398
|
+
if (!hasFunction(service, 'probeBackendAdmission')) {
|
|
399
|
+
return { evidence: [], missing: ['tuiPluginHost.probeBackendAdmission()'] };
|
|
400
|
+
}
|
|
401
|
+
try {
|
|
402
|
+
const result = service.probeBackendAdmission();
|
|
403
|
+
if (result?.verdict !== 'compatible') {
|
|
404
|
+
throw new Error('backend admission probe did not admit a contribution declaration');
|
|
405
|
+
}
|
|
406
|
+
return {
|
|
407
|
+
evidence: [
|
|
408
|
+
probeEvidence('tuiPluginHost.probeBackendAdmission()', `backend admission machine answered ${String(result.verdict)} (${String(result.registered)} registered, ${String(result.offered)} offered)`),
|
|
409
|
+
],
|
|
410
|
+
missing: [],
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
catch (error) {
|
|
414
|
+
return {
|
|
415
|
+
evidence: [probeEvidence('tuiPluginHost.probeBackendAdmission()', errorText(error))],
|
|
416
|
+
missing: ['tuiPluginHost.probeBackendAdmission()'],
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
}
|
|
385
420
|
function probeForCoordinate(service, coordinate) {
|
|
386
421
|
switch (coordinate.kind) {
|
|
387
422
|
case 'Command': return probeCommand(service);
|
|
388
423
|
case 'LocalStorage': return probeStorage(service);
|
|
389
424
|
case 'MessageObserver': return probeMessageObserver(service);
|
|
390
425
|
case 'DecisionEvents': return probeDecisionEvents(service);
|
|
426
|
+
case 'Backend': return probeBackendAdmissionMachine(service);
|
|
391
427
|
default: return { evidence: [], missing: [] };
|
|
392
428
|
}
|
|
393
429
|
}
|
|
@@ -442,6 +478,12 @@ function contractDetection(ctx, coordinate) {
|
|
|
442
478
|
else
|
|
443
479
|
evidence.push(methodEvidence(serviceName, 'subscribeDecision'));
|
|
444
480
|
break;
|
|
481
|
+
case 'Backend':
|
|
482
|
+
if (!hasFunction(service, 'probeBackendAdmission'))
|
|
483
|
+
missing.push('tuiPluginHost.probeBackendAdmission()');
|
|
484
|
+
else
|
|
485
|
+
evidence.push(methodEvidence(serviceName, 'probeBackendAdmission'));
|
|
486
|
+
break;
|
|
445
487
|
}
|
|
446
488
|
const probe = probeForCoordinate(service, coordinate);
|
|
447
489
|
evidence.push(...probe.evidence);
|
|
@@ -578,6 +620,16 @@ export async function refreshHostCapabilityLifecycles(ctx) {
|
|
|
578
620
|
missing.push(...probe.missing);
|
|
579
621
|
}
|
|
580
622
|
break;
|
|
623
|
+
case 'Backend':
|
|
624
|
+
// The same probe as the synchronous projection: a completed refresh
|
|
625
|
+
// replaces the whole lifecycle set, so leaving `Backend` out here would
|
|
626
|
+
// publish it before the first refresh and drop it right after.
|
|
627
|
+
{
|
|
628
|
+
const probe = probeBackendAdmissionMachine(service);
|
|
629
|
+
evidence.push(...probe.evidence);
|
|
630
|
+
missing.push(...probe.missing);
|
|
631
|
+
}
|
|
632
|
+
break;
|
|
581
633
|
default:
|
|
582
634
|
break;
|
|
583
635
|
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A backend's static description — the runtime form of the `manifest.ts` that
|
|
3
|
+
* every `src/backends/<id>/` directory ships (roadmap Stage A / P0).
|
|
4
|
+
*
|
|
5
|
+
* It is **pure data**: the build-time index (`scripts/gen-backend-index.mjs`)
|
|
6
|
+
* imports each manifest statically, so a manifest may import nothing at all
|
|
7
|
+
* except types, plus the single allowlisted version constant inside its own
|
|
8
|
+
* backend (the Claude SDK pin — see `scripts/verify-backend-registry.ts`).
|
|
9
|
+
* The backend implementation stays behind the registry's lazy `load()`.
|
|
10
|
+
*
|
|
11
|
+
* This module sits in the neutral domain layer (`src/agent/**`) on purpose: the
|
|
12
|
+
* host registry, the boundary gate and the UI all need these shapes, and none
|
|
13
|
+
* of them may import a concrete backend.
|
|
14
|
+
*/
|
|
15
|
+
import type { BackendInstallRecipe } from './backend.js';
|
|
16
|
+
/**
|
|
17
|
+
* How a backend is named in the kernel picker (`backend-registry` D2).
|
|
18
|
+
*
|
|
19
|
+
* `key` is the host vocabulary (`t(key)`) and is reserved for the backends that
|
|
20
|
+
* ship inside this package (`inTree`): a plugin writing
|
|
21
|
+
* `{ kind: 'key', key: 'kernel-label-dsh' }` would otherwise be able to claim a
|
|
22
|
+
* first-party name, so `registerBackend()` rejects that combination outright.
|
|
23
|
+
*
|
|
24
|
+
* `literal` is external text: it is rendered as-is, **never** through `t()` and
|
|
25
|
+
* never into the message catalog, and it is treated as untrusted input (width
|
|
26
|
+
* truncation with the repo's terminal helpers, no template expansion).
|
|
27
|
+
*/
|
|
28
|
+
export type KernelLabel = {
|
|
29
|
+
readonly kind: 'key';
|
|
30
|
+
readonly key: string;
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: 'literal';
|
|
33
|
+
readonly text: string;
|
|
34
|
+
};
|
|
35
|
+
/** One backend's static facts. See the P0 checklist §3 for the field rationale. */
|
|
36
|
+
export interface BackendManifest {
|
|
37
|
+
readonly id: string;
|
|
38
|
+
/** Full name: picker rows (`KernelPicker`) — `key` for in-tree, `literal` for plugins. */
|
|
39
|
+
readonly label: KernelLabel;
|
|
40
|
+
/** Short brand name (the launchpad corner plate, the handoff notices): never
|
|
41
|
+
* localized, and short enough for a narrow terminal (the full name is 40
|
|
42
|
+
* columns wide and would push the cwd plate off the bottom edge). */
|
|
43
|
+
readonly shortLabel: string;
|
|
44
|
+
/** Product a version belongs to (`claude-code v2.1.0`); absent = bare version. */
|
|
45
|
+
readonly product?: string;
|
|
46
|
+
/** Ships inside this package (dsh / claude / codex): the only source allowed
|
|
47
|
+
* to use `label.kind === 'key'` and a `native.<key>` channel. */
|
|
48
|
+
readonly inTree: boolean;
|
|
49
|
+
/** Always selectable and not an `AgentBackend` at all (only `dsh` today:
|
|
50
|
+
* `buildKernelCatalog`'s `selectable` and the dsh version row need it).
|
|
51
|
+
* Distinct from `inTree` — claude and codex are in-tree but optional. */
|
|
52
|
+
readonly alwaysAvailable?: true;
|
|
53
|
+
/** Module export holding the `AgentBackend` (default `backend`; claude's
|
|
54
|
+
* barrel exports `claudeBackend`). Absent = this entry has no `load`. */
|
|
55
|
+
readonly backendExport?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Module export closing this backend's **module-level / process-wide**
|
|
58
|
+
* resource pool (codex: `closeAllCodexHubs`). Session-scoped resources
|
|
59
|
+
* (child processes, transcript handles) belong to `session.dispose()`, which
|
|
60
|
+
* the fiber owns — never here.
|
|
61
|
+
*
|
|
62
|
+
* The registry only remembers the hook of an entry it actually loaded, so
|
|
63
|
+
* "never loaded" also means "never imported" and "never closed" (D4).
|
|
64
|
+
*/
|
|
65
|
+
readonly unloadExport?: string;
|
|
66
|
+
/** Gate derivation only (backend scope, `verify-adapter-boundary`): vendor
|
|
67
|
+
* package prefixes this backend may import (claude: `@anthropic-ai/`). */
|
|
68
|
+
readonly vendorPackages?: readonly string[];
|
|
69
|
+
/** Gate derivation only: the `native.<key>` slot this backend owns. **Absent
|
|
70
|
+
* means "this backend does not use a native channel"** — claude must stay
|
|
71
|
+
* absent (its channel is not declared today, and deriving one would widen
|
|
72
|
+
* the boundary gate). */
|
|
73
|
+
readonly nativeKey?: string;
|
|
74
|
+
/**
|
|
75
|
+
* The session capabilities this backend's handler actually serves, in the
|
|
76
|
+
* `SessionCapabilities` vocabulary (`src/agent/capabilities.ts` —
|
|
77
|
+
* `BackendHost`-visible subset; `src/adapter/spec/backend-capabilities.ts` is
|
|
78
|
+
* the spec-plane copy the admission compares against). Declaring it is how a
|
|
79
|
+
* backend says "these are the optional surfaces I answer to" *before* it runs;
|
|
80
|
+
* a name this host does not know degrades the admission (`compatible_degraded`)
|
|
81
|
+
* rather than refusing it (§0 D-3).
|
|
82
|
+
*
|
|
83
|
+
* The declaration must **cover** what the session actually serves (the set the
|
|
84
|
+
* runtime hands back is a subset of this list), and the conformance fixture
|
|
85
|
+
* checks the other direction at the seam: its `open()` must not answer with a
|
|
86
|
+
* capability key outside what it declared
|
|
87
|
+
* (`scripts/verify-backend-contribution.ts`). Absent = "nothing declared", which
|
|
88
|
+
* the projection turns into the empty list.
|
|
89
|
+
*/
|
|
90
|
+
readonly capabilities?: readonly string[];
|
|
91
|
+
/**
|
|
92
|
+
* The host permissions this backend asks for, by the host's own vocabulary
|
|
93
|
+
* (`registry/permissions-0.1.json`). Today every in-tree backend declares
|
|
94
|
+
* `[]`: none of the eight existing permission names describes what a backend
|
|
95
|
+
* actually needs (spawning a child process, reading its own prefs, network) —
|
|
96
|
+
* those are optional host capabilities on `BackendHost`, feature-detected, not
|
|
97
|
+
* grants (D-3). A name with no grant lands the entry in `waiting_authorization`,
|
|
98
|
+
* an unknown name degrades it; neither is a silent "usable".
|
|
99
|
+
*/
|
|
100
|
+
readonly grants?: readonly string[];
|
|
101
|
+
/**
|
|
102
|
+
* What the host's install wizard would install, and with which of the host's
|
|
103
|
+
* executors (§6 item 12). Declaring it is how a backend says "there is
|
|
104
|
+
* something to install for me": no backend id is privileged any longer, and
|
|
105
|
+
* codex's "there is nothing to install, the user's own binary is the
|
|
106
|
+
* dependency" is the absent case — still a first-class row (a hint, no fake
|
|
107
|
+
* button).
|
|
108
|
+
*
|
|
109
|
+
* Whether the named `executor` is one *this* host implements is a runtime
|
|
110
|
+
* question the registry answers by table lookup; an unknown value means "no
|
|
111
|
+
* install surface", never a failed registration.
|
|
112
|
+
*/
|
|
113
|
+
readonly install?: BackendInstallRecipe;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* One registry record: the manifest plus the lazy loader of its **module
|
|
117
|
+
* namespace** — not of the `AgentBackend` itself, because the registry resolves
|
|
118
|
+
* both `backendExport` and `unloadExport` from it (D4). `dsh` has no loader: it
|
|
119
|
+
* is not an `AgentBackend` (see `src/dsh-adapter/backend/session.ts`).
|
|
120
|
+
*/
|
|
121
|
+
export interface BackendEntry {
|
|
122
|
+
readonly manifest: BackendManifest;
|
|
123
|
+
readonly load?: () => Promise<Record<string, unknown>>;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* The syntax every backend id must match: readable, sortable, usable as a file
|
|
127
|
+
* name. `:` is deliberately excluded — a plugin id could otherwise not become
|
|
128
|
+
* `~/.dsh-tui/backends/<id>/` on Windows (drive letters / alternate data
|
|
129
|
+
* streams), and `AgentSessionRef` disambiguation would need the full id set,
|
|
130
|
+
* which is exactly what a plugin registry cannot enumerate (P0 §5).
|
|
131
|
+
*
|
|
132
|
+
* Mirrored in `bin/dsh-tui.js`, which must work without compiled modules.
|
|
133
|
+
*/
|
|
134
|
+
export declare const BACKEND_ID_PATTERN: RegExp;
|
|
135
|
+
declare const validatedBackendId: unique symbol;
|
|
136
|
+
/**
|
|
137
|
+
* A backend id that passed the syntax gate. The brand is what keeps an
|
|
138
|
+
* *unvalidated* string out of `backendId:sessionId` references and
|
|
139
|
+
* `~/.dsh-tui/backends/<id>/` paths at compile time — the whole point of R11.
|
|
140
|
+
*
|
|
141
|
+
* It means "validated input", not "installed": membership is a runtime question
|
|
142
|
+
* the registry answers (`parseBackendChoice`), and every caller that only has the
|
|
143
|
+
* syntax half (`kernelPrefs`' `parseBackendId`, the launcher's mirror) still gets
|
|
144
|
+
* the same protection for refs and paths, which is the part that matters there.
|
|
145
|
+
*/
|
|
146
|
+
export type BackendId = string & {
|
|
147
|
+
readonly [validatedBackendId]: true;
|
|
148
|
+
};
|
|
149
|
+
/** Whether an untrusted value may pass into a session ref, a path or a log. */
|
|
150
|
+
export declare function isBackendIdSyntax(value: unknown): value is BackendId;
|
|
151
|
+
export {};
|
|
152
|
+
//# sourceMappingURL=backend-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-manifest.d.ts","sourceRoot":"","sources":["../../../src/agent/backend-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvD,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAA;IAC3B;;0EAEsE;IACtE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB;sEACkE;IAClE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB;;8EAE0E;IAC1E,QAAQ,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;IAC/B;8EAC0E;IAC1E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;+EAC2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C;;;8BAG0B;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAA;CACxC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACvD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,QAA+B,CAAA;AAE9D,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,MAAM,CAAA;AAE/C;;;;;;;;;GASG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAExE,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAEpE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The syntax every backend id must match: readable, sortable, usable as a file
|
|
3
|
+
* name. `:` is deliberately excluded — a plugin id could otherwise not become
|
|
4
|
+
* `~/.dsh-tui/backends/<id>/` on Windows (drive letters / alternate data
|
|
5
|
+
* streams), and `AgentSessionRef` disambiguation would need the full id set,
|
|
6
|
+
* which is exactly what a plugin registry cannot enumerate (P0 §5).
|
|
7
|
+
*
|
|
8
|
+
* Mirrored in `bin/dsh-tui.js`, which must work without compiled modules.
|
|
9
|
+
*/
|
|
10
|
+
export const BACKEND_ID_PATTERN = /^[a-z0-9][a-z0-9-]{0,31}$/u;
|
|
11
|
+
/** Whether an untrusted value may pass into a session ref, a path or a log. */
|
|
12
|
+
export function isBackendIdSyntax(value) {
|
|
13
|
+
return typeof value === 'string' && BACKEND_ID_PATTERN.test(value);
|
|
14
|
+
}
|