@deepseek-harness-tui/dsh-tui 0.8.0 → 0.8.2
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 +32 -15
- package/cordis.patch.yml +21 -2
- package/cordis.yml +12 -1
- package/dsh-ecosystem-spec/protocols/profile-definitions.d.ts +13 -0
- package/dsh-ecosystem-spec/protocols/profile-definitions.js +59 -0
- package/dsh-ecosystem-spec/protocols/tui-channel-http.d.ts +15 -0
- package/dsh-ecosystem-spec/protocols/tui-channel-http.js +32 -0
- package/dsh-ecosystem-spec/protocols/tui-channel.d.ts +59 -0
- package/dsh-ecosystem-spec/protocols/tui-channel.js +166 -0
- package/dsh-ecosystem-spec/protocols/tui-contributions.d.ts +42 -0
- package/dsh-ecosystem-spec/protocols/tui-contributions.js +143 -0
- package/dsh-ecosystem-spec/registry/README.md +14 -0
- package/dsh-ecosystem-spec/registry/contracts/decision-events-v1alpha1.json +13 -0
- package/dsh-ecosystem-spec/registry/contracts/scene-v1alpha1.json +13 -0
- package/dsh-ecosystem-spec/registry/contracts/settings-section-v1alpha1.json +13 -0
- package/dsh-ecosystem-spec/registry/contracts/tui-channel-v1alpha1.json +30 -0
- package/dsh-ecosystem-spec/registry/contracts/workspace-provider-v1alpha1.json +6 -0
- package/dsh-ecosystem-spec/registry/host-descriptor.tui.example.json +56 -0
- package/dsh-ecosystem-spec/registry/permissions-0.1.json +13 -0
- package/dsh-ecosystem-spec/registry/registry-0.15.json +149 -0
- package/dsh-ecosystem-spec/schemas/conformance-claim.schema.json +15 -0
- package/dsh-ecosystem-spec/schemas/effect-ledger-record.schema.json +16 -0
- package/dsh-ecosystem-spec/schemas/host-descriptor.schema.json +26 -0
- package/lib/types/cc/figures.d.ts +4 -0
- package/lib/types/cc/figures.d.ts.map +1 -1
- package/lib/types/cc/figures.js +4 -0
- package/lib/types/command-trees.d.ts +2 -1
- package/lib/types/command-trees.d.ts.map +1 -1
- package/lib/types/command-trees.js +1 -1
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +2 -0
- package/lib/types/components/ExtensionDialog.d.ts +40 -0
- package/lib/types/components/ExtensionDialog.d.ts.map +1 -0
- package/lib/types/components/ExtensionDialog.js +210 -0
- package/lib/types/components/HelpMenu.js +1 -1
- package/lib/types/components/LoadedContextPanel.d.ts +5 -5
- package/lib/types/components/LoadedContextPanel.js +6 -6
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +16 -8
- package/lib/types/components/Markdown.d.ts +13 -1
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +15 -1
- package/lib/types/components/MessageList.d.ts +3 -1
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +111 -6
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +26 -12
- package/lib/types/components/RewindPicker.d.ts +13 -1
- package/lib/types/components/RewindPicker.d.ts.map +1 -1
- package/lib/types/components/RewindPicker.js +26 -2
- package/lib/types/components/StreamingMarkdown.d.ts +2 -8
- package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
- package/lib/types/components/StreamingMarkdown.js +51 -9
- package/lib/types/components/ToolUseLoader.d.ts +8 -3
- package/lib/types/components/ToolUseLoader.d.ts.map +1 -1
- package/lib/types/components/ToolUseLoader.js +43 -9
- package/lib/types/components/activityFrames.d.ts +1 -1
- package/lib/types/components/activityFrames.d.ts.map +1 -1
- package/lib/types/components/activityFrames.js +4 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +5 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +26 -3
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +13 -2
- package/lib/types/dsh-adapter/channel.d.ts +61 -11
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +767 -120
- package/lib/types/dsh-adapter/childStderr.d.ts.map +1 -1
- package/lib/types/dsh-adapter/childStderr.js +10 -0
- package/lib/types/dsh-adapter/command-attribution.d.ts +51 -0
- package/lib/types/dsh-adapter/command-attribution.d.ts.map +1 -0
- package/lib/types/dsh-adapter/command-attribution.js +93 -0
- package/lib/types/dsh-adapter/command-errors.d.ts +42 -0
- package/lib/types/dsh-adapter/command-errors.d.ts.map +1 -0
- package/lib/types/dsh-adapter/command-errors.js +63 -0
- package/lib/types/dsh-adapter/command-trees.d.ts +7 -1
- package/lib/types/dsh-adapter/command-trees.d.ts.map +1 -1
- package/lib/types/dsh-adapter/command-trees.js +70 -20
- package/lib/types/dsh-adapter/component-identity.d.ts +33 -0
- package/lib/types/dsh-adapter/component-identity.d.ts.map +1 -0
- package/lib/types/dsh-adapter/component-identity.js +108 -0
- package/lib/types/dsh-adapter/contract.d.ts +1 -1
- package/lib/types/dsh-adapter/contract.js +2 -2
- package/lib/types/dsh-adapter/decision-guard.d.ts +84 -0
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -0
- package/lib/types/dsh-adapter/decision-guard.js +348 -0
- package/lib/types/dsh-adapter/dialogs.d.ts +145 -0
- package/lib/types/dsh-adapter/dialogs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/dialogs.js +316 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts +91 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -0
- package/lib/types/dsh-adapter/effect-ledger.js +251 -0
- package/lib/types/dsh-adapter/extension-events.d.ts +193 -0
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -0
- package/lib/types/dsh-adapter/extension-events.js +207 -0
- package/lib/types/dsh-adapter/extensions.d.ts +32 -0
- package/lib/types/dsh-adapter/extensions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/extensions.js +42 -0
- package/lib/types/dsh-adapter/grants.d.ts +25 -0
- package/lib/types/dsh-adapter/grants.d.ts.map +1 -0
- package/lib/types/dsh-adapter/grants.js +213 -0
- package/lib/types/dsh-adapter/host-access.d.ts +37 -0
- package/lib/types/dsh-adapter/host-access.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-access.js +652 -0
- package/lib/types/dsh-adapter/host-descriptor.d.ts +24 -0
- package/lib/types/dsh-adapter/host-descriptor.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-descriptor.js +169 -0
- package/lib/types/dsh-adapter/index.d.ts +4 -0
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +1 -0
- package/lib/types/dsh-adapter/message-observer.d.ts +173 -0
- package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -0
- package/lib/types/dsh-adapter/message-observer.js +553 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts +136 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-host.js +365 -0
- package/lib/types/dsh-adapter/plugin-storage.d.ts +108 -0
- package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-storage.js +397 -0
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +124 -14
- package/lib/types/dsh-adapter/plugins-info.d.ts +43 -0
- package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugins-info.js +276 -0
- package/lib/types/dsh-adapter/promptDebug.d.ts +0 -6
- package/lib/types/dsh-adapter/promptDebug.d.ts.map +1 -1
- package/lib/types/dsh-adapter/promptDebug.js +13 -4
- package/lib/types/dsh-adapter/renderers.d.ts +57 -0
- package/lib/types/dsh-adapter/renderers.d.ts.map +1 -0
- package/lib/types/dsh-adapter/renderers.js +173 -0
- package/lib/types/dsh-adapter/sanitize.d.ts +36 -0
- package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sanitize.js +65 -0
- package/lib/types/dsh-adapter/scenes.d.ts +15 -5
- package/lib/types/dsh-adapter/scenes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/scenes.js +149 -35
- package/lib/types/dsh-adapter/settings-sections.d.ts +7 -3
- package/lib/types/dsh-adapter/settings-sections.d.ts.map +1 -1
- package/lib/types/dsh-adapter/settings-sections.js +106 -26
- package/lib/types/dsh-adapter/shortcuts.d.ts +107 -0
- package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -0
- package/lib/types/dsh-adapter/shortcuts.js +340 -0
- package/lib/types/dsh-adapter/status.d.ts +74 -0
- package/lib/types/dsh-adapter/status.d.ts.map +1 -0
- package/lib/types/dsh-adapter/status.js +234 -0
- package/lib/types/dsh-adapter/workspaces.d.ts +16 -5
- package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -1
- package/lib/types/dsh-adapter/workspaces.js +287 -170
- package/lib/types/extensions.d.ts +13 -0
- package/lib/types/extensions.d.ts.map +1 -0
- package/lib/types/extensions.js +21 -0
- package/lib/types/force-production-react.d.ts +1 -0
- package/lib/types/force-production-react.d.ts.map +1 -0
- package/lib/types/force-production-react.js +12 -0
- package/lib/types/i18n.d.ts +174 -20
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +56 -6
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +1 -0
- package/lib/types/ink/components/App.d.ts +2 -0
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +4 -0
- package/lib/types/ink/ink.d.ts +31 -3
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +90 -5
- package/lib/types/ink/log-update.d.ts.map +1 -1
- package/lib/types/ink/log-update.js +225 -56
- package/lib/types/ink/output.d.ts +35 -2
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +281 -14
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +14 -6
- package/lib/types/ink/screen.d.ts +39 -0
- package/lib/types/ink/screen.d.ts.map +1 -1
- package/lib/types/ink/screen.js +117 -0
- package/lib/types/ink/terminal.d.ts.map +1 -1
- package/lib/types/ink/terminal.js +26 -6
- package/lib/types/ink/wrapAnsi.d.ts +1 -1
- package/lib/types/ink/wrapAnsi.d.ts.map +1 -1
- package/lib/types/ink/wrapAnsi.js +29 -2
- package/lib/types/plugin-host.d.ts +15 -0
- package/lib/types/plugin-host.d.ts.map +1 -0
- package/lib/types/plugin-host.js +17 -0
- package/lib/types/plugin-spec/negotiate.d.ts +11 -0
- package/lib/types/plugin-spec/negotiate.d.ts.map +1 -0
- package/lib/types/plugin-spec/negotiate.js +97 -0
- package/lib/types/plugin-spec/permission-scope.d.ts +32 -0
- package/lib/types/plugin-spec/permission-scope.d.ts.map +1 -0
- package/lib/types/plugin-spec/permission-scope.js +90 -0
- package/lib/types/plugin-spec/registry.d.ts +23 -0
- package/lib/types/plugin-spec/registry.d.ts.map +1 -0
- package/lib/types/plugin-spec/registry.js +252 -0
- package/lib/types/plugin-spec/schema-check.d.ts +17 -0
- package/lib/types/plugin-spec/schema-check.d.ts.map +1 -0
- package/lib/types/plugin-spec/schema-check.js +165 -0
- package/lib/types/plugin-spec/tui-extension.d.ts +16 -0
- package/lib/types/plugin-spec/tui-extension.d.ts.map +1 -0
- package/lib/types/plugin-spec/tui-extension.js +79 -0
- package/lib/types/plugin-spec/types.d.ts +114 -0
- package/lib/types/plugin-spec/types.d.ts.map +1 -0
- package/lib/types/plugin-spec/types.js +10 -0
- package/lib/types/plugin-spec/validate.d.ts +21 -0
- package/lib/types/plugin-spec/validate.d.ts.map +1 -0
- package/lib/types/plugin-spec/validate.js +138 -0
- package/lib/types/scenes.d.ts +2 -1
- package/lib/types/scenes.d.ts.map +1 -1
- package/lib/types/scenes.js +1 -1
- package/lib/types/screens/Chat.d.ts +14 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +173 -49
- package/lib/types/screens/SessionBrowser.d.ts.map +1 -1
- package/lib/types/screens/SessionBrowser.js +10 -3
- package/lib/types/sessions/view.d.ts +3 -2
- package/lib/types/sessions/view.d.ts.map +1 -1
- package/lib/types/sessions/view.js +18 -0
- package/lib/types/settings-sections.d.ts +2 -1
- package/lib/types/settings-sections.d.ts.map +1 -1
- package/lib/types/settings-sections.js +1 -1
- package/lib/types/theme.d.ts +5 -0
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +15 -0
- package/lib/types/update.d.ts +20 -0
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +54 -7
- package/lib/types/utils/execFileNoThrow.d.ts.map +1 -1
- package/lib/types/utils/execFileNoThrow.js +3 -0
- package/lib/types/utils/loaded-context.d.ts +8 -3
- package/lib/types/utils/loaded-context.d.ts.map +1 -1
- package/lib/types/utils/loaded-context.js +39 -3
- package/lib/types/utils/modifiers.d.ts.map +1 -1
- package/lib/types/utils/modifiers.js +3 -2
- package/lib/types/working-activity.d.ts +12 -0
- package/lib/types/working-activity.d.ts.map +1 -1
- package/lib/types/working-activity.js +13 -0
- package/lib/types/workspaces.d.ts +2 -1
- package/lib/types/workspaces.d.ts.map +1 -1
- package/lib/types/workspaces.js +1 -1
- package/node_modules/@dsh-std/command/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/command/LICENSE +21 -0
- package/node_modules/@dsh-std/command/README.md +26 -0
- package/node_modules/@dsh-std/command/README.zh.md +28 -0
- package/node_modules/@dsh-std/command/lib/index.d.ts +144 -0
- package/node_modules/@dsh-std/command/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/command/lib/index.js +252 -0
- package/node_modules/@dsh-std/command/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/command/package.json +22 -0
- package/node_modules/@dsh-std/connection/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/connection/LICENSE +21 -0
- package/node_modules/@dsh-std/connection/README.md +42 -0
- package/node_modules/@dsh-std/connection/README.zh.md +42 -0
- package/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts +125 -0
- package/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts.map +1 -0
- package/node_modules/@dsh-std/connection/lib/index.d.ts +89 -0
- package/node_modules/@dsh-std/connection/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/connection/lib/index.js +158 -0
- package/node_modules/@dsh-std/connection/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/connection/lib/memory.d.ts +24 -0
- package/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -0
- package/node_modules/@dsh-std/connection/lib/memory.js +258 -0
- package/node_modules/@dsh-std/connection/lib/memory.js.map +1 -0
- package/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js +226 -0
- package/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -0
- package/node_modules/@dsh-std/connection/package.json +20 -0
- package/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/core/LICENSE +21 -0
- package/node_modules/@dsh-std/core/README.md +13 -0
- package/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/core/package.json +21 -0
- package/node_modules/@dsh-std/manifest/CHANGELOG.md +9 -0
- package/node_modules/@dsh-std/manifest/LICENSE +21 -0
- package/node_modules/@dsh-std/manifest/README.md +5 -0
- package/node_modules/@dsh-std/manifest/README.zh.md +5 -0
- package/node_modules/@dsh-std/manifest/lib/index.d.ts +182 -0
- package/node_modules/@dsh-std/manifest/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/manifest/lib/index.js +625 -0
- package/node_modules/@dsh-std/manifest/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/manifest/package.json +20 -0
- package/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -0
- package/node_modules/@dsh-std/messages/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/messages/LICENSE +21 -0
- package/node_modules/@dsh-std/messages/README.md +5 -0
- package/node_modules/@dsh-std/messages/README.zh.md +7 -0
- package/node_modules/@dsh-std/messages/lib/index.d.ts +50 -0
- package/node_modules/@dsh-std/messages/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/messages/lib/index.js +151 -0
- package/node_modules/@dsh-std/messages/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/messages/package.json +20 -0
- package/node_modules/@dsh-std/messages/schema/message-observer-envelope-0.15.schema.json +54 -0
- package/node_modules/@dsh-std/presentation/CHANGELOG.md +9 -0
- package/node_modules/@dsh-std/presentation/LICENSE +21 -0
- package/node_modules/@dsh-std/presentation/README.md +27 -0
- package/node_modules/@dsh-std/presentation/README.zh.md +29 -0
- package/node_modules/@dsh-std/presentation/lib/callback.d.ts +2 -0
- package/node_modules/@dsh-std/presentation/lib/callback.js +179 -0
- package/node_modules/@dsh-std/presentation/lib/callback.js.map +1 -0
- package/node_modules/@dsh-std/presentation/lib/index.d.ts +262 -0
- package/node_modules/@dsh-std/presentation/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/presentation/lib/index.js +550 -0
- package/node_modules/@dsh-std/presentation/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/presentation/lib/interaction.d.ts +2 -0
- package/node_modules/@dsh-std/presentation/lib/interaction.js +2 -0
- package/node_modules/@dsh-std/presentation/lib/operations.d.ts +2 -0
- package/node_modules/@dsh-std/presentation/lib/operations.js +2 -0
- package/node_modules/@dsh-std/presentation/package.json +25 -0
- package/node_modules/@dsh-std/storage/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/storage/LICENSE +21 -0
- package/node_modules/@dsh-std/storage/README.md +5 -0
- package/node_modules/@dsh-std/storage/README.zh.md +7 -0
- package/node_modules/@dsh-std/storage/lib/index.d.ts +48 -0
- package/node_modules/@dsh-std/storage/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/storage/lib/index.js +104 -0
- package/node_modules/@dsh-std/storage/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/storage/package.json +20 -0
- package/node_modules/@dsh-std/storage/schema/local-storage-0.15.schema.json +56 -0
- package/package.json +110 -70
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/LICENSE +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.md +42 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.zh.md +42 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts +125 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.d.ts +89 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.js +158 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.d.ts +24 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js +258 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js +226 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/package.json +20 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/CHANGELOG.md +9 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/LICENSE +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.md +5 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.zh.md +5 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.d.ts +182 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.js +625 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/package.json +20 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/CHANGELOG.md +9 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/LICENSE +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.md +27 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.zh.md +29 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/callback.d.ts +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/callback.js +179 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/callback.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.d.ts +262 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js +550 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/interaction.d.ts +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/interaction.js +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/operations.d.ts +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/operations.js +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/package.json +25 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/LICENSE +21 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.md +42 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.zh.md +42 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts +125 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.d.ts +89 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.js +158 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.d.ts +24 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js +258 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js +226 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/package.json +20 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/package.json +21 -0
package/README.md
CHANGED
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
<a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-263146?style=flat-square"></a>
|
|
14
14
|
<img alt="Public beta" src="https://img.shields.io/badge/status-public%20beta-7da1de?style=flat-square">
|
|
15
15
|
<img alt="官方收录" src="https://img.shields.io/badge/DeepSeek%20Harness%20官方公众号-收录-brightgreen">
|
|
16
|
+
<a href="https://github.com/ccch1mneyyy/dsh-TUI/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/ccch1mneyyy/dsh-TUI?style=flat-square&color=4b6fff"></a>
|
|
17
|
+
<a href="https://www.npmjs.com/package/@deepseek-harness-tui/dsh-tui"><img alt="npm downloads" src="https://img.shields.io/npm/dm/@deepseek-harness-tui/dsh-tui?style=flat-square&color=4b6fff"></a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<a href="https://trendshift.io/repositories/146168" title="GitHub Trending 日榜 #7 · TypeScript 口径"><img alt="Trendshift" src="https://trendshift.io/api/badge/trendshift/repositories/146168/daily?language=TypeScript"></a>
|
|
16
22
|
</p>
|
|
17
23
|
|
|
18
24
|
# dsh-TUI
|
|
@@ -33,6 +39,12 @@
|
|
|
33
39
|
<img src="screenshots/wechat-official.png" alt="DeepSeek Harness 官方公众号推文收录 dsh-TUI" width="560">
|
|
34
40
|
</p>
|
|
35
41
|
|
|
42
|
+
同时也被 [dshfind](https://dshfind.com/ccch1mneyyy/dsh-TUI) 插件目录收录:
|
|
43
|
+
|
|
44
|
+
<p align="center">
|
|
45
|
+
<a href="https://dshfind.com/ccch1mneyyy/dsh-TUI"><img src="https://dshfind.com/api/card/ccch1mneyyy/dsh-TUI?lang=zh" alt="dsh-TUI on dshfind"></a>
|
|
46
|
+
</p>
|
|
47
|
+
|
|
36
48
|
## 核心能力
|
|
37
49
|
|
|
38
50
|
- **终端原生交互**:流式 Markdown、结构化工具卡、命令与文件补全、`@` 文件引用
|
|
@@ -94,7 +106,7 @@ TUI 启动后会在后台检查 npm 是否有新版本;发现更新时会提
|
|
|
94
106
|
|
|
95
107
|
| 键 | 功能 |
|
|
96
108
|
|---|---|
|
|
97
|
-
| `Enter` | 发送(`Shift+Enter`
|
|
109
|
+
| `Enter` | 发送(`Shift+Enter` 换行,无法上报修饰键时可用 `Ctrl+J`);命令菜单打开时执行选中项 |
|
|
98
110
|
| `Ctrl+C` | 中断当前回合;空闲时连按两次退出 |
|
|
99
111
|
| `Esc` | 关闭命令/文件菜单;空闲双击清空输入;**空输入双击 = 时间回溯** |
|
|
100
112
|
| `Ctrl+O` | 展开/收起详情(思考全文、工具参数与输出) |
|
|
@@ -136,13 +148,27 @@ macOS 自带 Terminal.app 会自行消费 `⌘` 快捷键,请继续使用 `Ctr
|
|
|
136
148
|
| 分组 | 命令 |
|
|
137
149
|
|---|---|
|
|
138
150
|
| 会话 | `/new` 新会话 · `/resume` 会话浏览器(搜索、预览、跨项目、折叠子 agent 运行) · `/rename` 重命名会话 · `/workspace resume|rename|open` 管理工作区 · `/clear` 清屏 · `/compact` 压缩 · `/export` 导出 Markdown · `/trace` 轨迹场景(亦可 `Ctrl+T`) |
|
|
139
|
-
| 状态 | `/status` 会话信息 · `/cost` token 用量 · `/doctor` 环境自检 · `/config` 配置来源 · `/init` 创建 AGENTS.md |
|
|
140
|
-
| 模型 | `/model` 选择器 · `/thinking` 思考显示 · `/tokens` token 明细 · `/theme` 主题选择器 · `/lang`
|
|
151
|
+
| 状态 | `/context` 已加载上下文明细 · `/status` 会话信息 · `/cost` token 用量 · `/doctor` 环境自检 · `/config` 配置来源 · `/init` 创建 AGENTS.md |
|
|
152
|
+
| 模型 | `/model` 选择器 · `/thinking` 思考显示 · `/tokens` token 明细 · `/theme` 主题选择器 · `/lang` 中英界面切换(`/settings` 中亦可选择) |
|
|
141
153
|
| 账号/策略 | `/provider` 添加模型提供方 · `/login` 凭证状态 · `/logout` 登出说明 · `/permissions` 权限说明 · `/add-dir` 文件策略范围 · `/hooks` · `/mcp` |
|
|
142
154
|
| 技能 | `/audit` 代码审计 · `/bug` bug 报告 · `/review` 代码评审 · `/practice` 编程练习 · `/pr_comments` PR 评论 · `/release-notes` 发布说明 · `/vuln-check` 漏洞检查 |
|
|
143
155
|
| 其它 | `/agents` 子代理列表 · `/update` 自动更新并重启 · `/vim` · `/terminal-setup` · `/connect` · `/help` · `/exit` |
|
|
144
156
|
| 注册表 | `/plan` `/goal`(DSH 命令注册表插件,随插件自动并入 `/` 菜单) |
|
|
145
157
|
|
|
158
|
+
## 插件生态
|
|
159
|
+
|
|
160
|
+
想为 dsh-TUI 做插件/扩展?欢迎加入生态!
|
|
161
|
+
|
|
162
|
+
- **接口与兼容性协定**:[终端交互生态插件准入规范与实施标准](https://github.com/T-Auto/dsh-ecosystem-spec)
|
|
163
|
+
- **插件开发指南**:[`docs/plugins.md`](docs/plugins.md)(接缝、契约、规范与验证清单)
|
|
164
|
+
- **生态组织**:[dsh-tui-ecosystem](https://github.com/dsh-tui-ecosystem)(社区插件与模板的家)
|
|
165
|
+
- **模板仓库**:[plugin-template](https://github.com/dsh-tui-ecosystem/plugin-template)(从模板起步,5 分钟出一个插件)
|
|
166
|
+
- **参考实现**:`dsh-working-activity`(实时工作状态行:TUI 槽位 + `activity/status` 会话事件双出口)
|
|
167
|
+
|
|
168
|
+
核心仓库不迁移、社区插件独立成仓。组织只维护收录列表与准入规范,不对社区插件
|
|
169
|
+
的功能、质量或安全作背书或担保;插件作者对自己的仓库保持完全所有权,并自行承担
|
|
170
|
+
维护与安全责任。
|
|
171
|
+
|
|
146
172
|
## 文档
|
|
147
173
|
|
|
148
174
|
| 主题 | 内容 |
|
|
@@ -250,25 +276,16 @@ pnpm smoke
|
|
|
250
276
|
构建门禁。npm Git URL 安装通过 `prepare` 生成同一套运行时。渲染、问卷和工具卡
|
|
251
277
|
改动还需运行对应回归脚本。
|
|
252
278
|
|
|
253
|
-
## 插件生态
|
|
254
|
-
|
|
255
|
-
想为 dsh-TUI 做插件/扩展?欢迎加入生态:
|
|
256
|
-
|
|
257
|
-
- **插件开发指南**:[`docs/plugins.md`](docs/plugins.md)(接缝、契约、规范与验证清单)
|
|
258
|
-
- **生态组织**:[dsh-tui-ecosystem](https://github.com/dsh-tui-ecosystem)(社区插件与模板的家)
|
|
259
|
-
- **模板仓库**:[plugin-template](https://github.com/dsh-tui-ecosystem/plugin-template)(从模板起步,5 分钟出一个插件)
|
|
260
|
-
- **参考实现**:`dsh-working-activity`(实时工作状态行:TUI 槽位 + `activity/status` 会话事件双出口)
|
|
261
279
|
|
|
262
|
-
核心仓库不迁移、社区插件独立成仓——组织只负责收录与背书,插件作者对自己的仓库保持完全所有权。
|
|
263
280
|
|
|
264
281
|
## 社区
|
|
265
282
|
|
|
266
283
|
- **生态组织**:[dsh-tui-ecosystem](https://github.com/dsh-tui-ecosystem) —— 社区插件、模板与收录列表的家。欢迎来发插件、提创意、互相取暖 🐋
|
|
267
284
|
- **社区交流群**:使用问题、插件创意、功能许愿,都欢迎进来聊。
|
|
268
285
|
|
|
269
|
-
| 微信群 | QQ 群(群号 572549239) |
|
|
270
|
-
| :---: | :---: |
|
|
271
|
-
| <img src="screenshots/wechat-group.jpg" alt="dsh-TUI 社区交流群微信群二维码" width="200"> | <img src="screenshots/qq-group.png" alt="dsh-TUI 社区交流群 QQ 群二维码" width="200"> |
|
|
286
|
+
| 微信群 | QQ 群(群号 572549239) | 微信三群 |
|
|
287
|
+
| :---: | :---: | :---: |
|
|
288
|
+
| <img src="screenshots/wechat-group.jpg" alt="dsh-TUI 社区交流群微信群二维码" width="200"> | <img src="screenshots/qq-group.png" alt="dsh-TUI 社区交流群 QQ 群二维码" width="200"> | <img src="screenshots/wechat-group3.jpg" alt="dsh-TUI 社区交流群微信三群二维码" width="200"> |
|
|
272
289
|
|
|
273
290
|
> 微信群二维码约 7 天过期一次,如遇失效请走 QQ 群(572549239),或开个 issue 提醒我们更新。
|
|
274
291
|
|
package/cordis.patch.yml
CHANGED
|
@@ -198,6 +198,24 @@
|
|
|
198
198
|
- id: dsh-tui-scenes
|
|
199
199
|
name: '@deepseek-harness-tui/dsh-tui/scenes'
|
|
200
200
|
|
|
201
|
+
# Plugin-interop anchor (Community Consensus v0.15): the unified grant
|
|
202
|
+
# store, runtime generation id, and Host Descriptor live here; later
|
|
203
|
+
# contract surfaces (plugin storage, message observation, effect
|
|
204
|
+
# ledger) mount off THIS row's apply, so the patch surface changes only
|
|
205
|
+
# once for the whole alignment. Mounted ahead of the extensions row and
|
|
206
|
+
# any third-party plugin row.
|
|
207
|
+
- id: dsh-tui-plugin-host
|
|
208
|
+
name: '@deepseek-harness-tui/dsh-tui/plugin-host'
|
|
209
|
+
|
|
210
|
+
# Plugin-facing UI seams (the pi-style extension surface): managed
|
|
211
|
+
# dialogs (select/confirm/input), keyed status-line contributions,
|
|
212
|
+
# keyboard shortcuts, and custom session-entry text renderers. The
|
|
213
|
+
# decision events (tui/input, tui/rewind-prompt, tui/session-switch,
|
|
214
|
+
# tui/compact, …) are fired by the channel on the cordis bus directly
|
|
215
|
+
# and need no row.
|
|
216
|
+
- id: dsh-tui-extensions
|
|
217
|
+
name: '@deepseek-harness-tui/dsh-tui/extensions'
|
|
218
|
+
|
|
201
219
|
# The agent-preset roster (issue #8): `ctx.agentPresets`, the service the
|
|
202
220
|
# TUI composes every session's model-facing world from. No `roots` here —
|
|
203
221
|
# the dsh CLI's profile-boot overlays its shipped `config/agent-presets/`
|
|
@@ -227,8 +245,9 @@
|
|
|
227
245
|
name: '@deepseek-harness-tui/dsh-tui'
|
|
228
246
|
# The entry-level dependency augments the plugin's `agents` inject and
|
|
229
247
|
# prevents startup Session creation from racing WorkspaceRegistry init.
|
|
230
|
-
inject: [workspaceRegistry, agents, tuiWorkspaces, tuiScenes]
|
|
231
|
-
# `tuiWorkspaces`/`tuiScenes`
|
|
248
|
+
inject: [workspaceRegistry, agents, tuiWorkspaces, tuiScenes, tuiDialogs, tuiStatus, tuiShortcuts, tuiRenderers]
|
|
249
|
+
# `tuiWorkspaces`/`tuiScenes` (and the dsh-tui-extensions services)
|
|
250
|
+
# live in the entry-level inject ONLY as an
|
|
232
251
|
# ordering (and reload-rebind) guarantee alongside their service rows
|
|
233
252
|
# above — they are deliberately absent from the plugin's code-level
|
|
234
253
|
# inject (issue #183): the dsh CLI may read this patch from an older
|
package/cordis.yml
CHANGED
|
@@ -37,9 +37,20 @@
|
|
|
37
37
|
- id: dsh-tui-scenes
|
|
38
38
|
name: '@deepseek-harness-tui/dsh-tui/scenes'
|
|
39
39
|
|
|
40
|
+
# Plugin-interop anchor (v0.15): unified grant store, runtime generation
|
|
41
|
+
# id, Host Descriptor; later contract surfaces mount off this row's apply.
|
|
42
|
+
- id: dsh-tui-plugin-host
|
|
43
|
+
name: '@deepseek-harness-tui/dsh-tui/plugin-host'
|
|
44
|
+
|
|
45
|
+
# Plugin-facing UI seams: managed dialogs, status-line contributions,
|
|
46
|
+
# keyboard shortcuts, custom session-entry renderers (decision events are
|
|
47
|
+
# fired by the channel and need no row).
|
|
48
|
+
- id: dsh-tui-extensions
|
|
49
|
+
name: '@deepseek-harness-tui/dsh-tui/extensions'
|
|
50
|
+
|
|
40
51
|
- id: dsh-tui
|
|
41
52
|
name: '@deepseek-harness-tui/dsh-tui'
|
|
42
|
-
inject: [agents, tuiWorkspaces, tuiScenes]
|
|
53
|
+
inject: [agents, tuiWorkspaces, tuiScenes, tuiDialogs, tuiStatus, tuiShortcuts, tuiRenderers]
|
|
43
54
|
config:
|
|
44
55
|
provider: deepseek-official
|
|
45
56
|
# Alt-screen fullscreen (CC 同款): 应用内鼠标选区(选择即复制, OSC 52 +
|
|
@@ -0,0 +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
|
|
@@ -0,0 +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
|
+
}
|
|
@@ -0,0 +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
|
|
@@ -0,0 +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
|
+
}
|
|
@@ -0,0 +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
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { defineCapabilityProtocol } from '@dsh-std/connection'
|
|
2
|
+
|
|
3
|
+
export const TUI_CHANNEL = Object.freeze({
|
|
4
|
+
apiVersion: 'tui.dsh/v1alpha1',
|
|
5
|
+
kind: 'Channel',
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
export const TUI_CHANNEL_WIRE_REVISION = 6
|
|
9
|
+
|
|
10
|
+
export const TUI_CHANNEL_FEATURES = Object.freeze([
|
|
11
|
+
'commands',
|
|
12
|
+
'credentials',
|
|
13
|
+
'diagnostics',
|
|
14
|
+
'files',
|
|
15
|
+
'models',
|
|
16
|
+
'modes',
|
|
17
|
+
'presets',
|
|
18
|
+
'presentation',
|
|
19
|
+
'provider-setup',
|
|
20
|
+
'scenes',
|
|
21
|
+
'session-history',
|
|
22
|
+
'session-input',
|
|
23
|
+
'session-lifecycle',
|
|
24
|
+
'session-state',
|
|
25
|
+
'settings',
|
|
26
|
+
'skills',
|
|
27
|
+
'subagents',
|
|
28
|
+
'trace',
|
|
29
|
+
'workspaces',
|
|
30
|
+
])
|
|
31
|
+
|
|
32
|
+
export const tuiChannelDefinition = defineCapabilityProtocol({
|
|
33
|
+
...TUI_CHANNEL,
|
|
34
|
+
validateRequirement: validateTuiChannelRequirement,
|
|
35
|
+
validateSupport: validateTuiChannelSupport,
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
export function validateTuiChannelRequirement(value) {
|
|
39
|
+
const spec = exactRecord(value, ['wireRevision', 'features'], 'Channel requirement')
|
|
40
|
+
const wireRevision = positiveInteger(spec.wireRevision, 'Channel requirement.wireRevision')
|
|
41
|
+
const features = featureList(spec.features, 'Channel requirement.features')
|
|
42
|
+
return Object.freeze({ wireRevision, features })
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function validateTuiChannelSupport(value) {
|
|
46
|
+
const spec = exactRecord(value, ['wireRevision', 'features'], 'Channel support')
|
|
47
|
+
const wireRevision = positiveInteger(spec.wireRevision, 'Channel support.wireRevision')
|
|
48
|
+
const features = featureList(spec.features, 'Channel support.features')
|
|
49
|
+
return Object.freeze({ wireRevision, features })
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function validateTuiChannelInput(operation, value) {
|
|
53
|
+
switch (operation) {
|
|
54
|
+
case 'open': {
|
|
55
|
+
const input = exactRecord(value, ['workspace', 'sessionId', 'options'], 'Channel.open input')
|
|
56
|
+
optionalString(input.workspace, 'Channel.open input.workspace')
|
|
57
|
+
optionalString(input.sessionId, 'Channel.open input.sessionId')
|
|
58
|
+
if (input.options !== undefined) jsonValue(input.options, 'Channel.open input.options', new Set())
|
|
59
|
+
return input
|
|
60
|
+
}
|
|
61
|
+
case 'subscribe': {
|
|
62
|
+
const input = exactRecord(value, ['channelId', 'afterVersion'], 'Channel.subscribe input')
|
|
63
|
+
nonEmpty(input.channelId, 'Channel.subscribe input.channelId')
|
|
64
|
+
nonNegativeInteger(input.afterVersion, 'Channel.subscribe input.afterVersion')
|
|
65
|
+
return input
|
|
66
|
+
}
|
|
67
|
+
case 'invoke': {
|
|
68
|
+
const input = exactRecord(value, ['channelId', 'method', 'arguments'], 'Channel.invoke input')
|
|
69
|
+
nonEmpty(input.channelId, 'Channel.invoke input.channelId')
|
|
70
|
+
nonEmpty(input.method, 'Channel.invoke input.method')
|
|
71
|
+
if (!Array.isArray(input.arguments)) throw new TypeError('Channel.invoke input.arguments must be an array')
|
|
72
|
+
jsonValue(input.arguments, 'Channel.invoke input.arguments', new Set())
|
|
73
|
+
return input
|
|
74
|
+
}
|
|
75
|
+
case 'close': {
|
|
76
|
+
const input = exactRecord(value, ['channelId'], 'Channel.close input')
|
|
77
|
+
nonEmpty(input.channelId, 'Channel.close input.channelId')
|
|
78
|
+
return input
|
|
79
|
+
}
|
|
80
|
+
default:
|
|
81
|
+
throw new TypeError(`Channel operation ${JSON.stringify(operation)} is not defined`)
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function validateTuiChannelSnapshot(value) {
|
|
86
|
+
const snapshot = exactRecord(value, ['wireRevision', 'channelId', 'version', 'state'], 'Channel snapshot')
|
|
87
|
+
positiveInteger(snapshot.wireRevision, 'Channel snapshot.wireRevision')
|
|
88
|
+
nonEmpty(snapshot.channelId, 'Channel snapshot.channelId')
|
|
89
|
+
nonNegativeInteger(snapshot.version, 'Channel snapshot.version')
|
|
90
|
+
const state = exactRecord(snapshot.state, Object.keys(snapshot.state ?? {}), 'Channel snapshot.state')
|
|
91
|
+
jsonValue(state, 'Channel snapshot.state', new Set())
|
|
92
|
+
return snapshot
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function validateTuiChannelOutput(operation, value) {
|
|
96
|
+
if (operation === 'open' || operation === 'subscribe') return validateTuiChannelSnapshot(value)
|
|
97
|
+
if (operation === 'invoke') {
|
|
98
|
+
const output = exactRecord(value, ['value', 'valueDefined', 'snapshot'], 'Channel.invoke output')
|
|
99
|
+
jsonValue(output.value, 'Channel.invoke output.value', new Set())
|
|
100
|
+
if (output.valueDefined !== undefined && typeof output.valueDefined !== 'boolean') {
|
|
101
|
+
throw new TypeError('Channel.invoke output.valueDefined must be boolean')
|
|
102
|
+
}
|
|
103
|
+
if (output.snapshot !== undefined) validateTuiChannelSnapshot(output.snapshot)
|
|
104
|
+
return output
|
|
105
|
+
}
|
|
106
|
+
if (operation === 'close') {
|
|
107
|
+
const output = exactRecord(value, ['closed'], 'Channel.close output')
|
|
108
|
+
if (output.closed !== true) throw new TypeError('Channel.close output.closed must be true')
|
|
109
|
+
return output
|
|
110
|
+
}
|
|
111
|
+
throw new TypeError(`Channel operation ${JSON.stringify(operation)} is not defined`)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function exactRecord(value, allowed, label) {
|
|
115
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new TypeError(`${label} must be an object`)
|
|
116
|
+
const unknown = Object.keys(value).filter(key => !allowed.includes(key) && !key.startsWith('x-'))
|
|
117
|
+
if (unknown.length > 0) throw new TypeError(`${label} contains unknown field ${JSON.stringify(unknown[0])}`)
|
|
118
|
+
return value
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function featureList(value, label) {
|
|
122
|
+
if (!Array.isArray(value) || value.length === 0) throw new TypeError(`${label} must be a non-empty array`)
|
|
123
|
+
const features = value.map((feature, index) => {
|
|
124
|
+
nonEmpty(feature, `${label}[${index}]`)
|
|
125
|
+
return feature
|
|
126
|
+
})
|
|
127
|
+
if (new Set(features).size !== features.length) throw new TypeError(`${label} contains duplicates`)
|
|
128
|
+
return Object.freeze([...features].sort())
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function positiveInteger(value, label) {
|
|
132
|
+
if (!Number.isSafeInteger(value) || value < 1) throw new TypeError(`${label} must be a positive integer`)
|
|
133
|
+
return value
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function nonNegativeInteger(value, label) {
|
|
137
|
+
if (!Number.isSafeInteger(value) || value < 0) throw new TypeError(`${label} must be a non-negative integer`)
|
|
138
|
+
return value
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function nonEmpty(value, label) {
|
|
142
|
+
if (typeof value !== 'string' || value.trim() === '') throw new TypeError(`${label} must be a non-empty string`)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function optionalString(value, label) {
|
|
146
|
+
if (value !== undefined) nonEmpty(value, label)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function jsonValue(value, label, ancestors) {
|
|
150
|
+
if (value === null || typeof value === 'boolean' || typeof value === 'string') return
|
|
151
|
+
if (typeof value === 'number') {
|
|
152
|
+
if (!Number.isFinite(value)) throw new TypeError(`${label} must contain only finite numbers`)
|
|
153
|
+
return
|
|
154
|
+
}
|
|
155
|
+
if (typeof value !== 'object') throw new TypeError(`${label} must be a JSON value`)
|
|
156
|
+
if (ancestors.has(value)) throw new TypeError(`${label} must not contain cycles`)
|
|
157
|
+
ancestors.add(value)
|
|
158
|
+
if (Array.isArray(value)) {
|
|
159
|
+
for (const [index, item] of value.entries()) jsonValue(item, `${label}[${index}]`, ancestors)
|
|
160
|
+
} else {
|
|
161
|
+
const prototype = Object.getPrototypeOf(value)
|
|
162
|
+
if (prototype !== Object.prototype && prototype !== null) throw new TypeError(`${label} must contain only plain objects`)
|
|
163
|
+
for (const [key, item] of Object.entries(value)) jsonValue(item, `${label}.${key}`, ancestors)
|
|
164
|
+
}
|
|
165
|
+
ancestors.delete(value)
|
|
166
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ApiReference } from '@dsh-std/core'
|
|
2
|
+
import type { ManifestDefinitionCatalog, ManifestObjectDefinition } from '@dsh-std/manifest'
|
|
3
|
+
|
|
4
|
+
export const API_VERSION: 'tui.dsh/v1alpha1'
|
|
5
|
+
export const SETTINGS_SECTION: Readonly<ApiReference & { kind: 'SettingsSection' }>
|
|
6
|
+
export const SCENE: Readonly<ApiReference & { kind: 'Scene' }>
|
|
7
|
+
|
|
8
|
+
export type LocalizedText = Readonly<Record<string, string>>
|
|
9
|
+
export type SettingsFieldKind = 'text' | 'number' | 'boolean' | 'select'
|
|
10
|
+
export interface SettingsFieldOption { readonly value: string; readonly label: string; readonly titles?: LocalizedText }
|
|
11
|
+
export interface SettingsFieldSpec {
|
|
12
|
+
readonly path: readonly string[]
|
|
13
|
+
readonly label: string
|
|
14
|
+
readonly titles?: LocalizedText
|
|
15
|
+
readonly hint?: string
|
|
16
|
+
readonly hintTitles?: LocalizedText
|
|
17
|
+
readonly kind: SettingsFieldKind
|
|
18
|
+
readonly options?: readonly SettingsFieldOption[]
|
|
19
|
+
readonly placeholder?: string
|
|
20
|
+
readonly secretRef?: string
|
|
21
|
+
}
|
|
22
|
+
export interface SettingsSectionSpec {
|
|
23
|
+
readonly namespace: string
|
|
24
|
+
readonly title: string
|
|
25
|
+
readonly titles?: LocalizedText
|
|
26
|
+
readonly fields: readonly SettingsFieldSpec[]
|
|
27
|
+
}
|
|
28
|
+
export interface SettingsSectionHandler {}
|
|
29
|
+
|
|
30
|
+
export interface SceneSpec { readonly title?: string; readonly titles?: LocalizedText }
|
|
31
|
+
export interface SceneHandler<Props = unknown, Result = unknown> {
|
|
32
|
+
readonly component: (props: Props) => Result
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const settingsSectionExtensionDefinition: ManifestObjectDefinition
|
|
36
|
+
export const sceneExtensionDefinition: ManifestObjectDefinition
|
|
37
|
+
export const contributionExtensionDefinitions: readonly ManifestObjectDefinition[]
|
|
38
|
+
export function validateSettingsSectionSpec(value: unknown): Readonly<SettingsSectionSpec>
|
|
39
|
+
export function validateSceneSpec(value: unknown): Readonly<SceneSpec>
|
|
40
|
+
export function registerTuiContributionExtensions(catalog: ManifestDefinitionCatalog): () => void
|
|
41
|
+
export function assertSettingsSectionHandler(value: unknown): asserts value is SettingsSectionHandler
|
|
42
|
+
export function assertSceneHandler(value: unknown): asserts value is SceneHandler
|