@deepseek-harness-tui/dsh-tui 0.8.5 → 0.8.7
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 +13 -3
- package/bin/dsh-tui.js +269 -218
- package/cordis.patch.yml +48 -22
- package/dsh-ecosystem-spec/protocols/profile-definitions.d.ts +13 -13
- package/dsh-ecosystem-spec/protocols/profile-definitions.js +59 -59
- package/dsh-ecosystem-spec/protocols/tui-channel-http.d.ts +15 -15
- package/dsh-ecosystem-spec/protocols/tui-channel-http.js +32 -32
- package/dsh-ecosystem-spec/protocols/tui-channel.d.ts +59 -59
- package/dsh-ecosystem-spec/protocols/tui-channel.js +166 -166
- package/dsh-ecosystem-spec/protocols/tui-contributions.d.ts +42 -42
- package/dsh-ecosystem-spec/protocols/tui-contributions.js +143 -143
- package/dsh-ecosystem-spec/registry/README.md +14 -14
- package/dsh-ecosystem-spec/registry/host-descriptor.tui.example.json +56 -56
- package/dsh-ecosystem-spec/registry/permissions-0.1.json +13 -13
- package/dsh-ecosystem-spec/registry/registry-0.15.json +149 -149
- package/lib/types/cc/figures.d.ts +7 -0
- package/lib/types/cc/figures.d.ts.map +1 -1
- package/lib/types/cc/figures.js +24 -0
- package/lib/types/cc/markdown.d.ts.map +1 -1
- package/lib/types/cc/markdown.js +47 -14
- package/lib/types/cc/syntaxRuns.d.ts +16 -0
- package/lib/types/cc/syntaxRuns.d.ts.map +1 -0
- package/lib/types/cc/syntaxRuns.js +79 -0
- package/lib/types/cc/syntaxTheme.d.ts +12 -0
- package/lib/types/cc/syntaxTheme.d.ts.map +1 -0
- package/lib/types/cc/syntaxTheme.js +76 -0
- package/lib/types/commands.d.ts +14 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +20 -1
- package/lib/types/components/Chat/SubagentMessage.d.ts +19 -0
- package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -0
- package/lib/types/components/Chat/SubagentMessage.js +75 -0
- package/lib/types/components/EffortChargeGlyph.d.ts +26 -0
- package/lib/types/components/EffortChargeGlyph.d.ts.map +1 -0
- package/lib/types/components/EffortChargeGlyph.js +70 -0
- package/lib/types/components/EffortInputBorder.d.ts +36 -0
- package/lib/types/components/EffortInputBorder.d.ts.map +1 -0
- package/lib/types/components/EffortInputBorder.js +73 -0
- package/lib/types/components/EffortTierBadge.d.ts +26 -0
- package/lib/types/components/EffortTierBadge.d.ts.map +1 -0
- package/lib/types/components/EffortTierBadge.js +97 -0
- package/lib/types/components/HelpMenu.d.ts +8 -1
- package/lib/types/components/HelpMenu.d.ts.map +1 -1
- package/lib/types/components/HelpMenu.js +15 -4
- package/lib/types/components/LoadedContextPanel.js +1 -1
- package/lib/types/components/LogoV2.d.ts +3 -1
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +2 -2
- package/lib/types/components/MessageList.d.ts +6 -2
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +22 -13
- package/lib/types/components/ModelPicker.js +2 -2
- package/lib/types/components/PromptInput.d.ts +1 -1
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +83 -18
- package/lib/types/components/SkillsPicker.js +2 -2
- package/lib/types/components/SplitDiffView.d.ts +2 -17
- package/lib/types/components/SplitDiffView.d.ts.map +1 -1
- package/lib/types/components/SplitDiffView.js +9 -162
- package/lib/types/components/StreamingMarkdown.js +1 -1
- package/lib/types/components/SubagentCard.d.ts +9 -0
- package/lib/types/components/SubagentCard.d.ts.map +1 -0
- package/lib/types/components/SubagentCard.js +26 -0
- package/lib/types/components/SubagentDashboard.d.ts +13 -0
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -0
- package/lib/types/components/SubagentDashboard.js +50 -0
- package/lib/types/components/SubagentDetailScene.d.ts +16 -0
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -0
- package/lib/types/components/SubagentDetailScene.js +141 -0
- package/lib/types/components/SyntaxText.d.ts +15 -0
- package/lib/types/components/SyntaxText.d.ts.map +1 -0
- package/lib/types/components/SyntaxText.js +34 -0
- package/lib/types/components/ThinkingToggle.d.ts +3 -10
- package/lib/types/components/ThinkingToggle.d.ts.map +1 -1
- package/lib/types/components/ThinkingToggle.js +4 -9
- package/lib/types/components/design-system/ListItem.d.ts.map +1 -1
- package/lib/types/components/design-system/ListItem.js +1 -1
- package/lib/types/components/design-system/ThemedBox.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemedBox.js +4 -1
- package/lib/types/components/design-system/ThemedText.js +2 -2
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +12 -6
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +37 -10
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +2 -0
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +71 -18
- package/lib/types/components/messages/UserPromptMessage.d.ts +4 -6
- package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -1
- package/lib/types/components/messages/UserPromptMessage.js +19 -10
- package/lib/types/dsh-adapter/channel.d.ts +58 -2
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +337 -7
- package/lib/types/dsh-adapter/contract.d.ts +27 -4
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +56 -10
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +9 -3
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +38 -0
- package/lib/types/dsh-adapter/shortcuts.js +3 -3
- package/lib/types/dsh-adapter/subagents.d.ts +87 -0
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -0
- package/lib/types/dsh-adapter/subagents.js +204 -0
- package/lib/types/herdr.d.ts +28 -0
- package/lib/types/herdr.d.ts.map +1 -0
- package/lib/types/herdr.js +133 -0
- package/lib/types/i18n.d.ts +215 -31
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +65 -14
- package/lib/types/ink/ink.d.ts +4 -0
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +46 -15
- package/lib/types/minimalMode.d.ts +13 -0
- package/lib/types/minimalMode.d.ts.map +1 -0
- package/lib/types/minimalMode.js +17 -0
- package/lib/types/screens/Chat.d.ts +1 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +95 -45
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +6 -2
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
- package/lib/types/screens/TrajectoryScene.js +4 -2
- package/lib/types/theme.d.ts +20 -0
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +77 -23
- package/lib/types/tips.js +3 -3
- package/lib/types/trajectory/effortIgnition.d.ts +66 -0
- package/lib/types/trajectory/effortIgnition.d.ts.map +1 -0
- package/lib/types/trajectory/effortIgnition.js +142 -0
- package/lib/types/update.d.ts +18 -0
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +73 -2
- package/lib/types/utils/execFileNoThrow.d.ts +3 -20
- package/lib/types/utils/execFileNoThrow.d.ts.map +1 -1
- package/lib/types/utils/execFileNoThrow.js +53 -32
- package/lib/types/utils/externalEditor.d.ts +12 -11
- package/lib/types/utils/externalEditor.d.ts.map +1 -1
- package/lib/types/utils/externalEditor.js +11 -11
- package/node_modules/@dsh-std/command/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/command/LICENSE +21 -21
- package/node_modules/@dsh-std/command/README.md +26 -26
- package/node_modules/@dsh-std/command/README.zh.md +28 -28
- package/node_modules/@dsh-std/command/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/command/package.json +22 -22
- package/node_modules/@dsh-std/connection/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/connection/LICENSE +21 -21
- package/node_modules/@dsh-std/connection/README.md +42 -42
- package/node_modules/@dsh-std/connection/README.zh.md +42 -42
- package/node_modules/@dsh-std/connection/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/connection/lib/memory.js.map +1 -1
- package/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -1
- package/node_modules/@dsh-std/connection/package.json +20 -20
- package/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/core/LICENSE +21 -21
- package/node_modules/@dsh-std/core/README.md +13 -13
- package/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/core/package.json +21 -21
- package/node_modules/@dsh-std/manifest/CHANGELOG.md +9 -9
- package/node_modules/@dsh-std/manifest/LICENSE +21 -21
- package/node_modules/@dsh-std/manifest/README.md +5 -5
- package/node_modules/@dsh-std/manifest/README.zh.md +5 -5
- package/node_modules/@dsh-std/manifest/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/manifest/package.json +20 -20
- package/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -144
- package/node_modules/@dsh-std/messages/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/messages/LICENSE +21 -21
- package/node_modules/@dsh-std/messages/README.md +5 -5
- package/node_modules/@dsh-std/messages/README.zh.md +7 -7
- package/node_modules/@dsh-std/messages/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/messages/package.json +20 -20
- package/node_modules/@dsh-std/messages/schema/message-observer-envelope-0.15.schema.json +54 -54
- package/node_modules/@dsh-std/presentation/CHANGELOG.md +9 -9
- package/node_modules/@dsh-std/presentation/LICENSE +21 -21
- package/node_modules/@dsh-std/presentation/README.md +27 -27
- package/node_modules/@dsh-std/presentation/README.zh.md +29 -29
- package/node_modules/@dsh-std/presentation/lib/callback.js.map +1 -1
- package/node_modules/@dsh-std/presentation/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/presentation/package.json +25 -25
- package/node_modules/@dsh-std/storage/CHANGELOG.md +8 -8
- package/node_modules/@dsh-std/storage/LICENSE +21 -21
- package/node_modules/@dsh-std/storage/README.md +5 -5
- package/node_modules/@dsh-std/storage/README.zh.md +7 -7
- package/node_modules/@dsh-std/storage/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/storage/package.json +20 -20
- package/node_modules/@dsh-std/storage/schema/local-storage-0.15.schema.json +56 -56
- package/package.json +64 -58
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/LICENSE +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.md +42 -42
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.zh.md +42 -42
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/package.json +20 -20
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/CHANGELOG.md +9 -9
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/LICENSE +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.md +5 -5
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.zh.md +5 -5
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/package.json +20 -20
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -144
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/CHANGELOG.md +9 -9
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/LICENSE +21 -21
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.md +27 -27
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.zh.md +29 -29
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/callback.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/package.json +25 -25
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/LICENSE +21 -21
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.md +42 -42
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.zh.md +42 -42
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/package.json +20 -20
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/package.json +21 -21
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/CHANGELOG.md +8 -8
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/LICENSE +21 -21
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.md +13 -13
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.zh.md +13 -13
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/package.json +21 -21
package/cordis.patch.yml
CHANGED
|
@@ -41,14 +41,17 @@
|
|
|
41
41
|
#
|
|
42
42
|
# The model-facing plugin set moves INTO the agent-presets roster: every
|
|
43
43
|
# session composes its tools/prompt sections from one preset directory
|
|
44
|
-
# (standard/code/minimal/cordis) instead of the host rows below. The
|
|
45
|
-
#
|
|
46
|
-
# shipped `config/agent-presets/` root
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
44
|
+
# (standard/code/minimal/cordis) instead of the host rows below. The TUI's
|
|
45
|
+
# roster row uses the scoped `dsh-tui-agent-presets` id and carries the
|
|
46
|
+
# shipped `config/agent-presets/` system root itself (derived from the dsh
|
|
47
|
+
# CLI installation through the launcher-maintained `profiles/node_modules`
|
|
48
|
+
# fallback link), because the official profile-boot root overlay only targets
|
|
49
|
+
# the unscoped `agent-presets` id that surface bundles own. The roster itself
|
|
50
|
+
# appends `$DSH_HOME/.agent-presets` (user-authored presets,
|
|
51
|
+
# `includeUserRoot` default). Mirroring the official dsh-web-app patch: every
|
|
52
|
+
# dsh-base row a preset now owns is disabled here, so a minimal agent does not
|
|
53
|
+
# leak host-layer tools (an agent's registry view resolves agent → preset →
|
|
54
|
+
# global).
|
|
52
55
|
|
|
53
56
|
- id: agent-instructions
|
|
54
57
|
disabled: true
|
|
@@ -162,21 +165,32 @@
|
|
|
162
165
|
# Workspace grouping is a separate durable ledger, not a cwd-derived
|
|
163
166
|
# projection. Mount the same domain stack and storage root as dsh-web-app
|
|
164
167
|
# so TUI-created sessions can attach to the exact registry Web reads.
|
|
165
|
-
|
|
168
|
+
#
|
|
169
|
+
# The six rows below own host-plane services that the official web-app
|
|
170
|
+
# bundle may already mount. Loader entry ids are process-global, so these
|
|
171
|
+
# rows use dsh-tui-* scoped ids and self-disable when an enabled row with
|
|
172
|
+
# the official id/name is already present in the tree. The disabled check
|
|
173
|
+
# is evaluated during the same include update that inserts every row, so
|
|
174
|
+
# it sees the web-app rows regardless of their activation state.
|
|
175
|
+
- id: dsh-tui-storage
|
|
166
176
|
name: '@deepseek-ai/dsh-storage'
|
|
177
|
+
disabled: !!js "[...ctx.loader.entries()].some(entry => entry.options.id === 'storage' && entry.options.name === '@deepseek-ai/dsh-storage' && !entry.disabled)"
|
|
167
178
|
|
|
168
|
-
- id: storage-json
|
|
179
|
+
- id: dsh-tui-storage-json
|
|
169
180
|
name: '@deepseek-ai/dsh-storage-json'
|
|
181
|
+
disabled: !!js "[...ctx.loader.entries()].some(entry => entry.options.id === 'storage-json' && entry.options.name === '@deepseek-ai/dsh-storage-json' && !entry.disabled)"
|
|
170
182
|
config:
|
|
171
183
|
root: !!js dshHomePath('storages')
|
|
172
184
|
|
|
173
|
-
- id: storage-domain
|
|
185
|
+
- id: dsh-tui-storage-domain
|
|
174
186
|
name: '@deepseek-ai/dsh-storage-domain'
|
|
187
|
+
disabled: !!js "[...ctx.loader.entries()].some(entry => entry.options.id === 'storage-domain' && entry.options.name === '@deepseek-ai/dsh-storage-domain' && !entry.disabled)"
|
|
175
188
|
config:
|
|
176
189
|
backend: json
|
|
177
190
|
|
|
178
|
-
- id: workspace
|
|
191
|
+
- id: dsh-tui-workspace
|
|
179
192
|
name: '@deepseek-ai/dsh-workspace'
|
|
193
|
+
disabled: !!js "[...ctx.loader.entries()].some(entry => entry.options.id === 'workspace' && entry.options.name === '@deepseek-ai/dsh-workspace' && !entry.disabled)"
|
|
180
194
|
|
|
181
195
|
# Generic terminal workspace registry. Optional plugins add providers;
|
|
182
196
|
# the TUI itself always supplies LOCAL and has no provider-specific code.
|
|
@@ -217,23 +231,35 @@
|
|
|
217
231
|
name: '@deepseek-harness-tui/dsh-tui/extensions'
|
|
218
232
|
|
|
219
233
|
# The agent-preset roster (issue #8): `ctx.agentPresets`, the service the
|
|
220
|
-
# TUI composes every session's model-facing world from.
|
|
221
|
-
# the
|
|
222
|
-
#
|
|
223
|
-
#
|
|
224
|
-
#
|
|
225
|
-
#
|
|
226
|
-
# the
|
|
227
|
-
- id: agent-presets
|
|
234
|
+
# TUI composes every session's model-facing world from. The scoped row
|
|
235
|
+
# carries the official CLI's shipped `config/agent-presets/` directory
|
|
236
|
+
# (standard/code/minimal/cordis, system trust) through the
|
|
237
|
+
# launcher-maintained profiles/node_modules fallback link; the roster
|
|
238
|
+
# itself appends `$DSH_HOME/.agent-presets` (user-authored presets,
|
|
239
|
+
# `includeUserRoot` default). A boot that never reached profile-boot
|
|
240
|
+
# leaves the system root empty and the roster finds only user presets.
|
|
241
|
+
- id: dsh-tui-agent-presets
|
|
228
242
|
name: '@deepseek-ai/dsh-agent-presets'
|
|
243
|
+
disabled: !!js "[...ctx.loader.entries()].some(entry => entry.options.id === 'agent-presets' && entry.options.name === '@deepseek-ai/dsh-agent-presets' && !entry.disabled)"
|
|
229
244
|
config:
|
|
230
245
|
default: standard
|
|
246
|
+
roots: !!js >-
|
|
247
|
+
(() => {
|
|
248
|
+
const base = ctx.baseUrl
|
|
249
|
+
if (!base) return undefined
|
|
250
|
+
const root = new URL('../node_modules/@deepseek-ai/dsh/config/agent-presets/', base)
|
|
251
|
+
let path = decodeURIComponent(root.pathname)
|
|
252
|
+
if (/^\/[A-Za-z]:/.test(path)) path = path.slice(1)
|
|
253
|
+
return [{ path, trust: 'system' }]
|
|
254
|
+
})()
|
|
231
255
|
|
|
232
256
|
# Host-plane services the `cordis` preset's plugin-experimentation tool
|
|
233
257
|
# waits on (dynamicCordisRunner/cordisInspect); dsh-base carries no such
|
|
234
|
-
# row — the official web app inserts it the same way
|
|
235
|
-
|
|
258
|
+
# row — the official web app inserts it the same way, so this copy yields
|
|
259
|
+
# to it when it is already present.
|
|
260
|
+
- id: dsh-tui-cordis-host-runner
|
|
236
261
|
name: '@deepseek-ai/dsh-cordis-host-runner'
|
|
262
|
+
disabled: !!js "[...ctx.loader.entries()].some(entry => entry.options.id === 'cordis-host-runner' && entry.options.name === '@deepseek-ai/dsh-cordis-host-runner' && !entry.disabled)"
|
|
237
263
|
|
|
238
264
|
# The interactive front door. The plugin creates/resumes its agent at
|
|
239
265
|
# runtime, seeds the startup status line, and disposes the whole app tree
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { ApiReference, ProtocolCatalog, ProtocolDefinition } from '@dsh-std/core'
|
|
2
|
-
export { registerTuiContributionExtensions } from './tui-contributions.js'
|
|
3
|
-
export * from './tui-channel.js'
|
|
4
|
-
|
|
5
|
-
export const DECISION_EVENTS: Readonly<ApiReference & {
|
|
6
|
-
apiVersion: 'tui.dsh/v1alpha1'
|
|
7
|
-
kind: 'DecisionEvents'
|
|
8
|
-
}>
|
|
9
|
-
|
|
10
|
-
export const decisionEventsDefinition: ProtocolDefinition
|
|
11
|
-
export const profileDefinitions: readonly ProtocolDefinition[]
|
|
12
|
-
|
|
13
|
-
export function registerProfileProtocols(catalog: ProtocolCatalog): () => void
|
|
1
|
+
import type { ApiReference, ProtocolCatalog, ProtocolDefinition } from '@dsh-std/core'
|
|
2
|
+
export { registerTuiContributionExtensions } from './tui-contributions.js'
|
|
3
|
+
export * from './tui-channel.js'
|
|
4
|
+
|
|
5
|
+
export const DECISION_EVENTS: Readonly<ApiReference & {
|
|
6
|
+
apiVersion: 'tui.dsh/v1alpha1'
|
|
7
|
+
kind: 'DecisionEvents'
|
|
8
|
+
}>
|
|
9
|
+
|
|
10
|
+
export const decisionEventsDefinition: ProtocolDefinition
|
|
11
|
+
export const profileDefinitions: readonly ProtocolDefinition[]
|
|
12
|
+
|
|
13
|
+
export function registerProfileProtocols(catalog: ProtocolCatalog): () => void
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
/** dsh-TUI private protocol definitions evaluated by @dsh-std/core. */
|
|
2
|
-
|
|
3
|
-
export { registerTuiContributionExtensions } from './tui-contributions.js'
|
|
4
|
-
export * from './tui-channel.js'
|
|
5
|
-
import { tuiChannelDefinition } from './tui-channel.js'
|
|
6
|
-
|
|
7
|
-
export const DECISION_EVENTS = Object.freeze({
|
|
8
|
-
apiVersion: 'tui.dsh/v1alpha1',
|
|
9
|
-
kind: 'DecisionEvents',
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
function featureSupport(value, label) {
|
|
13
|
-
if (value === undefined) return Object.freeze({ features: Object.freeze([]) })
|
|
14
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
15
|
-
throw new TypeError(`${label} support spec must be an object`)
|
|
16
|
-
}
|
|
17
|
-
const unknown = Object.keys(value).filter(key => key !== 'features' && !key.startsWith('x-'))
|
|
18
|
-
if (unknown.length > 0) throw new TypeError(`${label} support spec contains unknown field ${JSON.stringify(unknown[0])}`)
|
|
19
|
-
if (value.features !== undefined && (!Array.isArray(value.features)
|
|
20
|
-
|| value.features.some(feature => typeof feature !== 'string' || feature.trim() === ''))) {
|
|
21
|
-
throw new TypeError(`${label} support spec.features must be an array of non-empty strings`)
|
|
22
|
-
}
|
|
23
|
-
return Object.freeze({ features: Object.freeze([...(value.features ?? [])].sort()) })
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function providerDefinition(reference, label) {
|
|
27
|
-
return Object.freeze({
|
|
28
|
-
...reference,
|
|
29
|
-
validateRequirement(value) {
|
|
30
|
-
if (value !== undefined) throw new TypeError(`${label} requirement does not accept spec in manifest v0.15`)
|
|
31
|
-
return undefined
|
|
32
|
-
},
|
|
33
|
-
validateSupport(value) { return featureSupport(value, label) },
|
|
34
|
-
negotiate(input) {
|
|
35
|
-
const providers = [...new Set(input.supports.map(row => row.participant))].sort()
|
|
36
|
-
const issues = input.requirements.flatMap(row => providers.length === 0
|
|
37
|
-
? [{
|
|
38
|
-
code: row.requirement.optional === true ? 'optional-support-missing' : 'required-support-missing',
|
|
39
|
-
severity: row.requirement.optional === true ? 'warning' : 'error',
|
|
40
|
-
participant: row.participant,
|
|
41
|
-
message: `${label} has no provider in this negotiation scope`,
|
|
42
|
-
}]
|
|
43
|
-
: [])
|
|
44
|
-
return { agreement: Object.freeze({ providers: Object.freeze(providers) }), issues: Object.freeze(issues) }
|
|
45
|
-
},
|
|
46
|
-
})
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export const decisionEventsDefinition = providerDefinition(DECISION_EVENTS, 'DecisionEvents')
|
|
50
|
-
|
|
51
|
-
export const profileDefinitions = Object.freeze([
|
|
52
|
-
decisionEventsDefinition,
|
|
53
|
-
tuiChannelDefinition,
|
|
54
|
-
])
|
|
55
|
-
|
|
56
|
-
export function registerProfileProtocols(catalog) {
|
|
57
|
-
const disposers = profileDefinitions.map(definition => catalog.register(definition))
|
|
58
|
-
return () => { for (const dispose of disposers.reverse()) dispose() }
|
|
59
|
-
}
|
|
1
|
+
/** dsh-TUI private protocol definitions evaluated by @dsh-std/core. */
|
|
2
|
+
|
|
3
|
+
export { registerTuiContributionExtensions } from './tui-contributions.js'
|
|
4
|
+
export * from './tui-channel.js'
|
|
5
|
+
import { tuiChannelDefinition } from './tui-channel.js'
|
|
6
|
+
|
|
7
|
+
export const DECISION_EVENTS = Object.freeze({
|
|
8
|
+
apiVersion: 'tui.dsh/v1alpha1',
|
|
9
|
+
kind: 'DecisionEvents',
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
function featureSupport(value, label) {
|
|
13
|
+
if (value === undefined) return Object.freeze({ features: Object.freeze([]) })
|
|
14
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
15
|
+
throw new TypeError(`${label} support spec must be an object`)
|
|
16
|
+
}
|
|
17
|
+
const unknown = Object.keys(value).filter(key => key !== 'features' && !key.startsWith('x-'))
|
|
18
|
+
if (unknown.length > 0) throw new TypeError(`${label} support spec contains unknown field ${JSON.stringify(unknown[0])}`)
|
|
19
|
+
if (value.features !== undefined && (!Array.isArray(value.features)
|
|
20
|
+
|| value.features.some(feature => typeof feature !== 'string' || feature.trim() === ''))) {
|
|
21
|
+
throw new TypeError(`${label} support spec.features must be an array of non-empty strings`)
|
|
22
|
+
}
|
|
23
|
+
return Object.freeze({ features: Object.freeze([...(value.features ?? [])].sort()) })
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function providerDefinition(reference, label) {
|
|
27
|
+
return Object.freeze({
|
|
28
|
+
...reference,
|
|
29
|
+
validateRequirement(value) {
|
|
30
|
+
if (value !== undefined) throw new TypeError(`${label} requirement does not accept spec in manifest v0.15`)
|
|
31
|
+
return undefined
|
|
32
|
+
},
|
|
33
|
+
validateSupport(value) { return featureSupport(value, label) },
|
|
34
|
+
negotiate(input) {
|
|
35
|
+
const providers = [...new Set(input.supports.map(row => row.participant))].sort()
|
|
36
|
+
const issues = input.requirements.flatMap(row => providers.length === 0
|
|
37
|
+
? [{
|
|
38
|
+
code: row.requirement.optional === true ? 'optional-support-missing' : 'required-support-missing',
|
|
39
|
+
severity: row.requirement.optional === true ? 'warning' : 'error',
|
|
40
|
+
participant: row.participant,
|
|
41
|
+
message: `${label} has no provider in this negotiation scope`,
|
|
42
|
+
}]
|
|
43
|
+
: [])
|
|
44
|
+
return { agreement: Object.freeze({ providers: Object.freeze(providers) }), issues: Object.freeze(issues) }
|
|
45
|
+
},
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export const decisionEventsDefinition = providerDefinition(DECISION_EVENTS, 'DecisionEvents')
|
|
50
|
+
|
|
51
|
+
export const profileDefinitions = Object.freeze([
|
|
52
|
+
decisionEventsDefinition,
|
|
53
|
+
tuiChannelDefinition,
|
|
54
|
+
])
|
|
55
|
+
|
|
56
|
+
export function registerProfileProtocols(catalog) {
|
|
57
|
+
const disposers = profileDefinitions.map(definition => catalog.register(definition))
|
|
58
|
+
return () => { for (const dispose of disposers.reverse()) dispose() }
|
|
59
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export const TUI_CHANNEL_HTTP_API_VERSION: 'tui.dsh/v1alpha1'
|
|
2
|
-
export const TUI_CHANNEL_HTTP_KIND: 'ChannelEndpoint'
|
|
3
|
-
export const TUI_CHANNEL_HTTP_HEALTH_PATH: '/dsh-tui/v1/health'
|
|
4
|
-
export const TUI_CHANNEL_HTTP_DESCRIPTOR_PATH: '/dsh-tui/v1/endpoint'
|
|
5
|
-
export const TUI_CHANNEL_HTTP_WEBSOCKET_PATH: '/dsh-tui/v1/connection'
|
|
6
|
-
|
|
7
|
-
export interface TuiChannelEndpointDescriptor {
|
|
8
|
-
readonly apiVersion: typeof TUI_CHANNEL_HTTP_API_VERSION
|
|
9
|
-
readonly kind: typeof TUI_CHANNEL_HTTP_KIND
|
|
10
|
-
readonly origin: string
|
|
11
|
-
readonly connection: typeof TUI_CHANNEL_HTTP_WEBSOCKET_PATH
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export function createTuiChannelEndpointDescriptor(origin: string): TuiChannelEndpointDescriptor
|
|
15
|
-
export function validateTuiChannelEndpointDescriptor(value: unknown): TuiChannelEndpointDescriptor
|
|
1
|
+
export const TUI_CHANNEL_HTTP_API_VERSION: 'tui.dsh/v1alpha1'
|
|
2
|
+
export const TUI_CHANNEL_HTTP_KIND: 'ChannelEndpoint'
|
|
3
|
+
export const TUI_CHANNEL_HTTP_HEALTH_PATH: '/dsh-tui/v1/health'
|
|
4
|
+
export const TUI_CHANNEL_HTTP_DESCRIPTOR_PATH: '/dsh-tui/v1/endpoint'
|
|
5
|
+
export const TUI_CHANNEL_HTTP_WEBSOCKET_PATH: '/dsh-tui/v1/connection'
|
|
6
|
+
|
|
7
|
+
export interface TuiChannelEndpointDescriptor {
|
|
8
|
+
readonly apiVersion: typeof TUI_CHANNEL_HTTP_API_VERSION
|
|
9
|
+
readonly kind: typeof TUI_CHANNEL_HTTP_KIND
|
|
10
|
+
readonly origin: string
|
|
11
|
+
readonly connection: typeof TUI_CHANNEL_HTTP_WEBSOCKET_PATH
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function createTuiChannelEndpointDescriptor(origin: string): TuiChannelEndpointDescriptor
|
|
15
|
+
export function validateTuiChannelEndpointDescriptor(value: unknown): TuiChannelEndpointDescriptor
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
export const TUI_CHANNEL_HTTP_API_VERSION = 'tui.dsh/v1alpha1'
|
|
2
|
-
export const TUI_CHANNEL_HTTP_KIND = 'ChannelEndpoint'
|
|
3
|
-
export const TUI_CHANNEL_HTTP_HEALTH_PATH = '/dsh-tui/v1/health'
|
|
4
|
-
export const TUI_CHANNEL_HTTP_DESCRIPTOR_PATH = '/dsh-tui/v1/endpoint'
|
|
5
|
-
export const TUI_CHANNEL_HTTP_WEBSOCKET_PATH = '/dsh-tui/v1/connection'
|
|
6
|
-
|
|
7
|
-
export function createTuiChannelEndpointDescriptor(origin) {
|
|
8
|
-
const normalized = new URL(origin)
|
|
9
|
-
if (normalized.protocol !== 'http:' && normalized.protocol !== 'https:') {
|
|
10
|
-
throw new TypeError('TUI Channel endpoint origin must use http or https')
|
|
11
|
-
}
|
|
12
|
-
normalized.pathname = '/'
|
|
13
|
-
normalized.search = ''
|
|
14
|
-
normalized.hash = ''
|
|
15
|
-
return Object.freeze({
|
|
16
|
-
apiVersion: TUI_CHANNEL_HTTP_API_VERSION,
|
|
17
|
-
kind: TUI_CHANNEL_HTTP_KIND,
|
|
18
|
-
origin: normalized.toString().replace(/\/$/u, ''),
|
|
19
|
-
connection: TUI_CHANNEL_HTTP_WEBSOCKET_PATH,
|
|
20
|
-
})
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export function validateTuiChannelEndpointDescriptor(value) {
|
|
24
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new TypeError('TUI Channel endpoint descriptor must be an object')
|
|
25
|
-
if (value.apiVersion !== TUI_CHANNEL_HTTP_API_VERSION || value.kind !== TUI_CHANNEL_HTTP_KIND) {
|
|
26
|
-
throw new TypeError('TUI Channel endpoint descriptor version or kind is unsupported')
|
|
27
|
-
}
|
|
28
|
-
if (typeof value.origin !== 'string') throw new TypeError('TUI Channel endpoint origin must be a string')
|
|
29
|
-
createTuiChannelEndpointDescriptor(value.origin)
|
|
30
|
-
if (value.connection !== TUI_CHANNEL_HTTP_WEBSOCKET_PATH) throw new TypeError('TUI Channel endpoint connection path is unsupported')
|
|
31
|
-
return value
|
|
32
|
-
}
|
|
1
|
+
export const TUI_CHANNEL_HTTP_API_VERSION = 'tui.dsh/v1alpha1'
|
|
2
|
+
export const TUI_CHANNEL_HTTP_KIND = 'ChannelEndpoint'
|
|
3
|
+
export const TUI_CHANNEL_HTTP_HEALTH_PATH = '/dsh-tui/v1/health'
|
|
4
|
+
export const TUI_CHANNEL_HTTP_DESCRIPTOR_PATH = '/dsh-tui/v1/endpoint'
|
|
5
|
+
export const TUI_CHANNEL_HTTP_WEBSOCKET_PATH = '/dsh-tui/v1/connection'
|
|
6
|
+
|
|
7
|
+
export function createTuiChannelEndpointDescriptor(origin) {
|
|
8
|
+
const normalized = new URL(origin)
|
|
9
|
+
if (normalized.protocol !== 'http:' && normalized.protocol !== 'https:') {
|
|
10
|
+
throw new TypeError('TUI Channel endpoint origin must use http or https')
|
|
11
|
+
}
|
|
12
|
+
normalized.pathname = '/'
|
|
13
|
+
normalized.search = ''
|
|
14
|
+
normalized.hash = ''
|
|
15
|
+
return Object.freeze({
|
|
16
|
+
apiVersion: TUI_CHANNEL_HTTP_API_VERSION,
|
|
17
|
+
kind: TUI_CHANNEL_HTTP_KIND,
|
|
18
|
+
origin: normalized.toString().replace(/\/$/u, ''),
|
|
19
|
+
connection: TUI_CHANNEL_HTTP_WEBSOCKET_PATH,
|
|
20
|
+
})
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function validateTuiChannelEndpointDescriptor(value) {
|
|
24
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new TypeError('TUI Channel endpoint descriptor must be an object')
|
|
25
|
+
if (value.apiVersion !== TUI_CHANNEL_HTTP_API_VERSION || value.kind !== TUI_CHANNEL_HTTP_KIND) {
|
|
26
|
+
throw new TypeError('TUI Channel endpoint descriptor version or kind is unsupported')
|
|
27
|
+
}
|
|
28
|
+
if (typeof value.origin !== 'string') throw new TypeError('TUI Channel endpoint origin must be a string')
|
|
29
|
+
createTuiChannelEndpointDescriptor(value.origin)
|
|
30
|
+
if (value.connection !== TUI_CHANNEL_HTTP_WEBSOCKET_PATH) throw new TypeError('TUI Channel endpoint connection path is unsupported')
|
|
31
|
+
return value
|
|
32
|
+
}
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
import type { ApiReference, ProtocolDefinition } from '@dsh-std/core'
|
|
2
|
-
|
|
3
|
-
export type JsonValue = null | boolean | number | string | readonly JsonValue[] | { readonly [key: string]: JsonValue }
|
|
4
|
-
|
|
5
|
-
export const TUI_CHANNEL: Readonly<ApiReference & {
|
|
6
|
-
apiVersion: 'tui.dsh/v1alpha1'
|
|
7
|
-
kind: 'Channel'
|
|
8
|
-
}>
|
|
9
|
-
export const TUI_CHANNEL_WIRE_REVISION: 6
|
|
10
|
-
export const TUI_CHANNEL_FEATURES: readonly string[]
|
|
11
|
-
|
|
12
|
-
export interface TuiChannelRequirementSpec {
|
|
13
|
-
readonly wireRevision: number
|
|
14
|
-
readonly features: readonly string[]
|
|
15
|
-
}
|
|
16
|
-
export interface TuiChannelSupportSpec extends TuiChannelRequirementSpec {}
|
|
17
|
-
|
|
18
|
-
export interface TuiChannelSnapshot {
|
|
19
|
-
readonly wireRevision: number
|
|
20
|
-
readonly channelId: string
|
|
21
|
-
readonly version: number
|
|
22
|
-
readonly state: Readonly<Record<string, JsonValue>>
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface TuiChannelWorkspaceFlowChoice {
|
|
26
|
-
readonly id: string
|
|
27
|
-
readonly label: string
|
|
28
|
-
readonly description?: string
|
|
29
|
-
readonly badge?: string
|
|
30
|
-
readonly action: string
|
|
31
|
-
readonly input?: {
|
|
32
|
-
readonly action: string
|
|
33
|
-
readonly initialValue?: string
|
|
34
|
-
readonly placeholder?: string
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export type TuiChannelWorkspaceFlowResult =
|
|
39
|
-
| { readonly kind: 'target'; readonly target: import('./tui-contributions.js').WorkspaceTarget }
|
|
40
|
-
| { readonly kind: 'choices'; readonly title: string; readonly choices: readonly TuiChannelWorkspaceFlowChoice[] }
|
|
41
|
-
|
|
42
|
-
export type TuiChannelInput =
|
|
43
|
-
| { readonly operation: 'open'; readonly value: { readonly workspace?: string; readonly sessionId?: string; readonly options?: JsonValue } }
|
|
44
|
-
| { readonly operation: 'subscribe'; readonly value: { readonly channelId: string; readonly afterVersion: number } }
|
|
45
|
-
| { readonly operation: 'invoke'; readonly value: { readonly channelId: string; readonly method: string; readonly arguments: readonly JsonValue[] } }
|
|
46
|
-
| { readonly operation: 'close'; readonly value: { readonly channelId: string } }
|
|
47
|
-
|
|
48
|
-
export interface TuiChannelInvokeOutput {
|
|
49
|
-
readonly value: JsonValue
|
|
50
|
-
readonly valueDefined?: boolean
|
|
51
|
-
readonly snapshot?: TuiChannelSnapshot
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export const tuiChannelDefinition: ProtocolDefinition
|
|
55
|
-
export function validateTuiChannelRequirement(value: unknown): TuiChannelRequirementSpec
|
|
56
|
-
export function validateTuiChannelSupport(value: unknown): TuiChannelSupportSpec
|
|
57
|
-
export function validateTuiChannelInput(operation: string, value: unknown): object
|
|
58
|
-
export function validateTuiChannelSnapshot(value: unknown): TuiChannelSnapshot
|
|
59
|
-
export function validateTuiChannelOutput(operation: string, value: unknown): object
|
|
1
|
+
import type { ApiReference, ProtocolDefinition } from '@dsh-std/core'
|
|
2
|
+
|
|
3
|
+
export type JsonValue = null | boolean | number | string | readonly JsonValue[] | { readonly [key: string]: JsonValue }
|
|
4
|
+
|
|
5
|
+
export const TUI_CHANNEL: Readonly<ApiReference & {
|
|
6
|
+
apiVersion: 'tui.dsh/v1alpha1'
|
|
7
|
+
kind: 'Channel'
|
|
8
|
+
}>
|
|
9
|
+
export const TUI_CHANNEL_WIRE_REVISION: 6
|
|
10
|
+
export const TUI_CHANNEL_FEATURES: readonly string[]
|
|
11
|
+
|
|
12
|
+
export interface TuiChannelRequirementSpec {
|
|
13
|
+
readonly wireRevision: number
|
|
14
|
+
readonly features: readonly string[]
|
|
15
|
+
}
|
|
16
|
+
export interface TuiChannelSupportSpec extends TuiChannelRequirementSpec {}
|
|
17
|
+
|
|
18
|
+
export interface TuiChannelSnapshot {
|
|
19
|
+
readonly wireRevision: number
|
|
20
|
+
readonly channelId: string
|
|
21
|
+
readonly version: number
|
|
22
|
+
readonly state: Readonly<Record<string, JsonValue>>
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface TuiChannelWorkspaceFlowChoice {
|
|
26
|
+
readonly id: string
|
|
27
|
+
readonly label: string
|
|
28
|
+
readonly description?: string
|
|
29
|
+
readonly badge?: string
|
|
30
|
+
readonly action: string
|
|
31
|
+
readonly input?: {
|
|
32
|
+
readonly action: string
|
|
33
|
+
readonly initialValue?: string
|
|
34
|
+
readonly placeholder?: string
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export type TuiChannelWorkspaceFlowResult =
|
|
39
|
+
| { readonly kind: 'target'; readonly target: import('./tui-contributions.js').WorkspaceTarget }
|
|
40
|
+
| { readonly kind: 'choices'; readonly title: string; readonly choices: readonly TuiChannelWorkspaceFlowChoice[] }
|
|
41
|
+
|
|
42
|
+
export type TuiChannelInput =
|
|
43
|
+
| { readonly operation: 'open'; readonly value: { readonly workspace?: string; readonly sessionId?: string; readonly options?: JsonValue } }
|
|
44
|
+
| { readonly operation: 'subscribe'; readonly value: { readonly channelId: string; readonly afterVersion: number } }
|
|
45
|
+
| { readonly operation: 'invoke'; readonly value: { readonly channelId: string; readonly method: string; readonly arguments: readonly JsonValue[] } }
|
|
46
|
+
| { readonly operation: 'close'; readonly value: { readonly channelId: string } }
|
|
47
|
+
|
|
48
|
+
export interface TuiChannelInvokeOutput {
|
|
49
|
+
readonly value: JsonValue
|
|
50
|
+
readonly valueDefined?: boolean
|
|
51
|
+
readonly snapshot?: TuiChannelSnapshot
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export const tuiChannelDefinition: ProtocolDefinition
|
|
55
|
+
export function validateTuiChannelRequirement(value: unknown): TuiChannelRequirementSpec
|
|
56
|
+
export function validateTuiChannelSupport(value: unknown): TuiChannelSupportSpec
|
|
57
|
+
export function validateTuiChannelInput(operation: string, value: unknown): object
|
|
58
|
+
export function validateTuiChannelSnapshot(value: unknown): TuiChannelSnapshot
|
|
59
|
+
export function validateTuiChannelOutput(operation: string, value: unknown): object
|