@deepseek-harness-tui/dsh-tui 0.10.0 → 0.10.1
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 +146 -2
- package/bin/dsh-tui.js +99 -33
- package/cordis.patch.yml +25 -5
- package/lib/types/adapter/channel/actions.d.ts +17 -0
- package/lib/types/adapter/channel/actions.d.ts.map +1 -0
- package/lib/types/adapter/channel/actions.js +28 -0
- package/lib/types/adapter/channel/consumer.d.ts +34 -0
- package/lib/types/adapter/channel/consumer.d.ts.map +1 -0
- package/lib/types/adapter/channel/consumer.js +87 -0
- package/lib/types/adapter/channel/features.d.ts +12 -0
- package/lib/types/adapter/channel/features.d.ts.map +1 -0
- package/lib/types/adapter/channel/features.js +41 -0
- package/lib/types/adapter/channel/host-registry.d.ts +40 -0
- package/lib/types/adapter/channel/host-registry.d.ts.map +1 -0
- package/lib/types/adapter/channel/host-registry.js +120 -0
- package/lib/types/adapter/channel/index.d.ts +22 -0
- package/lib/types/adapter/channel/index.d.ts.map +1 -0
- package/lib/types/adapter/channel/index.js +21 -0
- package/lib/types/adapter/channel/internal-token.d.ts +12 -0
- package/lib/types/adapter/channel/internal-token.d.ts.map +1 -0
- package/lib/types/adapter/channel/internal-token.js +11 -0
- package/lib/types/adapter/channel/plugins.d.ts +17 -0
- package/lib/types/adapter/channel/plugins.d.ts.map +1 -0
- package/lib/types/adapter/channel/plugins.js +47 -0
- package/lib/types/adapter/channel/projection.d.ts +15 -0
- package/lib/types/adapter/channel/projection.d.ts.map +1 -0
- package/lib/types/adapter/channel/projection.js +59 -0
- package/lib/types/adapter/channel/provider.d.ts +52 -0
- package/lib/types/adapter/channel/provider.d.ts.map +1 -0
- package/lib/types/adapter/channel/provider.js +231 -0
- package/lib/types/adapter/channel/read-view.d.ts +4 -0
- package/lib/types/adapter/channel/read-view.d.ts.map +1 -0
- package/lib/types/adapter/channel/read-view.js +132 -0
- package/lib/types/adapter/channel/session-projection.d.ts +56 -0
- package/lib/types/adapter/channel/session-projection.d.ts.map +1 -0
- package/lib/types/adapter/channel/session-projection.js +247 -0
- package/lib/types/adapter/channel/state.d.ts +11 -0
- package/lib/types/adapter/channel/state.d.ts.map +1 -0
- package/lib/types/adapter/channel/state.js +55 -0
- package/lib/types/adapter/channel/transcript.d.ts +15 -0
- package/lib/types/adapter/channel/transcript.d.ts.map +1 -0
- package/lib/types/adapter/channel/transcript.js +22 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +106 -0
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -0
- package/lib/types/adapter/channel/ui-policy.js +166 -0
- package/lib/types/adapter/channel/ui.d.ts +16 -0
- package/lib/types/adapter/channel/ui.d.ts.map +1 -0
- package/lib/types/adapter/channel/ui.js +168 -0
- package/lib/types/adapter/index.d.ts +20 -0
- package/lib/types/adapter/index.d.ts.map +1 -0
- package/lib/types/adapter/index.js +19 -0
- package/lib/types/adapter/kernel/contract-catalog.d.ts +12 -0
- package/lib/types/adapter/kernel/contract-catalog.d.ts.map +1 -0
- package/lib/types/adapter/kernel/contract-catalog.js +11 -0
- package/lib/types/adapter/kernel/diagnostics.d.ts +18 -0
- package/lib/types/adapter/kernel/diagnostics.d.ts.map +1 -0
- package/lib/types/adapter/kernel/diagnostics.js +16 -0
- package/lib/types/adapter/kernel/driver-types.d.ts +16 -0
- package/lib/types/adapter/kernel/driver-types.d.ts.map +1 -0
- package/lib/types/adapter/kernel/driver-types.js +8 -0
- package/lib/types/adapter/kernel/host-facade.d.ts +65 -0
- package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -0
- package/lib/types/adapter/kernel/host-facade.js +215 -0
- package/lib/types/adapter/kernel/host-probe-access.d.ts +71 -0
- package/lib/types/adapter/kernel/host-probe-access.d.ts.map +1 -0
- package/lib/types/adapter/kernel/host-probe-access.js +121 -0
- package/lib/types/adapter/kernel/index.d.ts +20 -0
- package/lib/types/adapter/kernel/index.d.ts.map +1 -0
- package/lib/types/adapter/kernel/index.js +19 -0
- package/lib/types/adapter/kernel/kernel-runtime.d.ts +138 -0
- package/lib/types/adapter/kernel/kernel-runtime.d.ts.map +1 -0
- package/lib/types/adapter/kernel/kernel-runtime.js +572 -0
- package/lib/types/adapter/kernel/ledger.d.ts +55 -0
- package/lib/types/adapter/kernel/ledger.d.ts.map +1 -0
- package/lib/types/adapter/kernel/ledger.js +33 -0
- package/lib/types/adapter/kernel/legacy-facade.d.ts +22 -0
- package/lib/types/adapter/kernel/legacy-facade.d.ts.map +1 -0
- package/lib/types/adapter/kernel/legacy-facade.js +34 -0
- package/lib/types/adapter/kernel/lifecycle.d.ts +38 -0
- package/lib/types/adapter/kernel/lifecycle.d.ts.map +1 -0
- package/lib/types/adapter/kernel/lifecycle.js +53 -0
- package/lib/types/adapter/kernel/replay-isolation.d.ts +27 -0
- package/lib/types/adapter/kernel/replay-isolation.d.ts.map +1 -0
- package/lib/types/adapter/kernel/replay-isolation.js +45 -0
- package/lib/types/adapter/kernel/replay.d.ts +132 -0
- package/lib/types/adapter/kernel/replay.d.ts.map +1 -0
- package/lib/types/adapter/kernel/replay.js +425 -0
- package/lib/types/adapter/kernel/runtime-context.d.ts +15 -0
- package/lib/types/adapter/kernel/runtime-context.d.ts.map +1 -0
- package/lib/types/adapter/kernel/runtime-context.js +24 -0
- package/lib/types/adapter/kernel/runtime.d.ts +70 -0
- package/lib/types/adapter/kernel/runtime.d.ts.map +1 -0
- package/lib/types/adapter/kernel/runtime.js +325 -0
- package/lib/types/adapter/kernel/slices/channel.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/channel.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/channel.js +8 -0
- package/lib/types/adapter/kernel/slices/decisions.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/decisions.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/decisions.js +10 -0
- package/lib/types/adapter/kernel/slices/extensions.d.ts +8 -0
- package/lib/types/adapter/kernel/slices/extensions.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/extensions.js +43 -0
- package/lib/types/adapter/kernel/slices/index.d.ts +19 -0
- package/lib/types/adapter/kernel/slices/index.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/index.js +36 -0
- package/lib/types/adapter/kernel/slices/presentation.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/presentation.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/presentation.js +14 -0
- package/lib/types/adapter/kernel/slices/scenes.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/scenes.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/scenes.js +14 -0
- package/lib/types/adapter/kernel/slices/settings.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/settings.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/settings.js +12 -0
- package/lib/types/adapter/kernel/slices/types.d.ts +20 -0
- package/lib/types/adapter/kernel/slices/types.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/types.js +12 -0
- package/lib/types/adapter/kernel/slices/workspace.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/workspace.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/workspace.js +15 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts +90 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-catalog.js +2 -0
- package/lib/types/adapter/ports/channel-display.d.ts +90 -0
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-display.js +2 -0
- package/lib/types/adapter/ports/channel-session.d.ts +227 -0
- package/lib/types/adapter/ports/channel-session.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-session.js +2 -0
- package/lib/types/adapter/ports/channel-settings.d.ts +273 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-settings.js +1 -0
- package/lib/types/adapter/ports/channel-ui.d.ts +569 -0
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-ui.js +1 -0
- package/lib/types/adapter/ports/channel-view.d.ts +609 -0
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-view.js +2 -0
- package/lib/types/adapter/ports/channel-workspace.d.ts +45 -0
- package/lib/types/adapter/ports/channel-workspace.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-workspace.js +2 -0
- package/lib/types/adapter/ports/channel.d.ts +145 -0
- package/lib/types/adapter/ports/channel.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel.js +22 -0
- package/lib/types/adapter/ports/decisions.d.ts +18 -0
- package/lib/types/adapter/ports/decisions.d.ts.map +1 -0
- package/lib/types/adapter/ports/decisions.js +9 -0
- package/lib/types/adapter/ports/descriptor.d.ts +25 -0
- package/lib/types/adapter/ports/descriptor.d.ts.map +1 -0
- package/lib/types/adapter/ports/descriptor.js +11 -0
- package/lib/types/adapter/ports/extensions.d.ts +86 -0
- package/lib/types/adapter/ports/extensions.d.ts.map +1 -0
- package/lib/types/adapter/ports/extensions.js +9 -0
- package/lib/types/adapter/ports/index.d.ts +23 -0
- package/lib/types/adapter/ports/index.d.ts.map +1 -0
- package/lib/types/adapter/ports/index.js +14 -0
- package/lib/types/adapter/ports/owner.d.ts +19 -0
- package/lib/types/adapter/ports/owner.d.ts.map +1 -0
- package/lib/types/adapter/ports/owner.js +9 -0
- package/lib/types/adapter/ports/presentation.d.ts +81 -0
- package/lib/types/adapter/ports/presentation.d.ts.map +1 -0
- package/lib/types/adapter/ports/presentation.js +10 -0
- package/lib/types/adapter/ports/scenes.d.ts +24 -0
- package/lib/types/adapter/ports/scenes.d.ts.map +1 -0
- package/lib/types/adapter/ports/scenes.js +8 -0
- package/lib/types/adapter/ports/settings.d.ts +44 -0
- package/lib/types/adapter/ports/settings.d.ts.map +1 -0
- package/lib/types/adapter/ports/settings.js +9 -0
- package/lib/types/adapter/ports/workspace.d.ts +60 -0
- package/lib/types/adapter/ports/workspace.d.ts.map +1 -0
- package/lib/types/adapter/ports/workspace.js +8 -0
- package/lib/types/adapter/spec/index.d.ts +11 -0
- package/lib/types/adapter/spec/index.d.ts.map +1 -0
- package/lib/types/adapter/spec/index.js +10 -0
- package/lib/types/adapter/spec/profile.d.ts +10 -0
- package/lib/types/adapter/spec/profile.d.ts.map +1 -0
- package/lib/types/adapter/spec/profile.js +9 -0
- package/lib/types/adapter/spec/protocol-constants.d.ts +60 -0
- package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -0
- package/lib/types/adapter/spec/protocol-constants.js +129 -0
- package/lib/types/adapter/spec/tui-contributions.d.ts +18 -0
- package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -0
- package/lib/types/adapter/spec/tui-contributions.js +19 -0
- package/lib/types/adapter/standard/admission.d.ts +11 -0
- package/lib/types/adapter/standard/admission.d.ts.map +1 -0
- package/lib/types/adapter/standard/admission.js +10 -0
- package/lib/types/adapter/standard/descriptor.d.ts +74 -0
- package/lib/types/adapter/standard/descriptor.d.ts.map +1 -0
- package/lib/types/adapter/standard/descriptor.js +356 -0
- package/lib/types/{dsh-adapter → adapter/standard}/grants.d.ts +8 -3
- package/lib/types/adapter/standard/grants.d.ts.map +1 -0
- package/lib/types/{dsh-adapter → adapter/standard}/grants.js +14 -8
- package/lib/types/adapter/standard/index.d.ts +25 -0
- package/lib/types/adapter/standard/index.d.ts.map +1 -0
- package/lib/types/adapter/standard/index.js +24 -0
- package/lib/types/adapter/standard/negotiate.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/permission-scope.d.ts +3 -8
- package/lib/types/adapter/standard/permission-scope.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/permission-scope.js +4 -26
- package/lib/types/adapter/standard/protocols.d.ts +12 -0
- package/lib/types/adapter/standard/protocols.d.ts.map +1 -0
- package/lib/types/adapter/standard/protocols.js +11 -0
- package/lib/types/adapter/standard/registry.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/registry.js +3 -15
- package/lib/types/adapter/standard/schema-check.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/schema-check.js +4 -2
- package/lib/types/adapter/standard/tui-extension.d.ts +25 -0
- package/lib/types/adapter/standard/tui-extension.d.ts.map +1 -0
- package/lib/types/adapter/standard/tui-extension.js +45 -0
- package/lib/types/{plugin-spec → adapter/standard}/types.d.ts +3 -9
- package/lib/types/adapter/standard/types.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/validate.d.ts +3 -3
- package/lib/types/adapter/standard/validate.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/validate.js +14 -13
- package/lib/types/adapter/upstream/channel-driver.d.ts +22 -0
- package/lib/types/adapter/upstream/channel-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/channel-driver.js +424 -0
- package/lib/types/adapter/upstream/decisions-driver.d.ts +15 -0
- package/lib/types/adapter/upstream/decisions-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/decisions-driver.js +141 -0
- package/lib/types/adapter/upstream/detection.d.ts +26 -0
- package/lib/types/adapter/upstream/detection.d.ts.map +1 -0
- package/lib/types/adapter/upstream/detection.js +9 -0
- package/lib/types/adapter/upstream/driver.d.ts +50 -0
- package/lib/types/adapter/upstream/driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/driver.js +8 -0
- package/lib/types/adapter/upstream/extensions-driver.d.ts +24 -0
- package/lib/types/adapter/upstream/extensions-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/extensions-driver.js +697 -0
- package/lib/types/adapter/upstream/host-descriptor-driver.d.ts +45 -0
- package/lib/types/adapter/upstream/host-descriptor-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/host-descriptor-driver.js +606 -0
- package/lib/types/adapter/upstream/index.d.ts +18 -0
- package/lib/types/adapter/upstream/index.d.ts.map +1 -0
- package/lib/types/adapter/upstream/index.js +15 -0
- package/lib/types/adapter/upstream/presentation-driver.d.ts +17 -0
- package/lib/types/adapter/upstream/presentation-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/presentation-driver.js +129 -0
- package/lib/types/adapter/upstream/scenes-driver.d.ts +18 -0
- package/lib/types/adapter/upstream/scenes-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/scenes-driver.js +170 -0
- package/lib/types/adapter/upstream/settings-driver.d.ts +20 -0
- package/lib/types/adapter/upstream/settings-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/settings-driver.js +173 -0
- package/lib/types/adapter/upstream/workspace-driver.d.ts +19 -0
- package/lib/types/adapter/upstream/workspace-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/workspace-driver.js +190 -0
- package/lib/types/api.d.ts +1 -1
- package/lib/types/api.d.ts.map +1 -1
- package/lib/types/commands.d.ts +2 -41
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +1 -1
- package/lib/types/components/GoalTodoPanel.d.ts +2 -1
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/HistorySearchDialog.d.ts.map +1 -1
- package/lib/types/components/HistorySearchDialog.js +7 -5
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +36 -8
- package/lib/types/components/ModelPicker.d.ts +1 -1
- package/lib/types/components/ModelPicker.d.ts.map +1 -1
- package/lib/types/components/ModelPicker.js +8 -4
- package/lib/types/components/OverlayAbove.d.ts +22 -1
- package/lib/types/components/OverlayAbove.d.ts.map +1 -1
- package/lib/types/components/OverlayAbove.js +74 -5
- package/lib/types/components/PromptInput.d.ts +2 -1
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/RewindPicker.d.ts.map +1 -1
- package/lib/types/components/RewindPicker.js +14 -6
- package/lib/types/components/SkillsPicker.d.ts.map +1 -1
- package/lib/types/components/SkillsPicker.js +6 -4
- package/lib/types/components/Spinner/spinnerMode.d.ts +1 -5
- package/lib/types/components/Spinner/spinnerMode.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemedBox.d.ts +4 -2
- package/lib/types/components/design-system/ThemedBox.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemedBox.js +2 -2
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +69 -25
- package/lib/types/components/overlayBudget.d.ts +39 -0
- package/lib/types/components/overlayBudget.d.ts.map +1 -0
- package/lib/types/components/overlayBudget.js +43 -0
- package/lib/types/deepseekBalance.d.ts +2 -36
- package/lib/types/deepseekBalance.d.ts.map +1 -1
- package/lib/types/deepseekBalance.js +0 -14
- package/lib/types/deepseekPricing.d.ts +2 -1
- package/lib/types/deepseekPricing.d.ts.map +1 -1
- package/lib/types/deepseekPricing.js +8 -1
- package/lib/types/dsh-adapter/approvals.d.ts +11 -1
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
- package/lib/types/dsh-adapter/approvals.js +32 -12
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/action-readiness.js +83 -0
- package/lib/types/dsh-adapter/channel/activity.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/activity.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/activity.js +113 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +64 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.js +295 -0
- package/lib/types/dsh-adapter/channel/background-action.d.ts +41 -0
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/background-action.js +86 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +60 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/binding-events.js +159 -0
- package/lib/types/dsh-adapter/channel/binding.d.ts +41 -0
- package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/binding.js +227 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts +29 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/command-completions.js +94 -0
- package/lib/types/dsh-adapter/channel/commands.d.ts +8 -0
- package/lib/types/dsh-adapter/channel/commands.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/commands.js +9 -0
- package/lib/types/dsh-adapter/channel/compaction.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/compaction.js +116 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts +57 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/composer-images.js +217 -0
- package/lib/types/dsh-adapter/channel/composer-mentions.d.ts +15 -0
- package/lib/types/dsh-adapter/channel/composer-mentions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/composer-mentions.js +200 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +26 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.js +30 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/decisions.js +90 -0
- package/lib/types/dsh-adapter/channel/emitter.d.ts +10 -0
- package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/emitter.js +71 -0
- package/lib/types/dsh-adapter/channel/external-commands.d.ts +31 -0
- package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/external-commands.js +187 -0
- package/lib/types/dsh-adapter/channel/file-actions.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/file-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/file-actions.js +45 -0
- package/lib/types/dsh-adapter/channel/input-actions.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/input-actions.js +135 -0
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +34 -0
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/input-delivery.js +241 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts +28 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/job-projection.js +150 -0
- package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/lifetime-resources.js +33 -0
- package/lib/types/dsh-adapter/channel/loaded-context.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/loaded-context.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/loaded-context.js +62 -0
- package/lib/types/dsh-adapter/channel/local-actions.d.ts +70 -0
- package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/local-actions.js +108 -0
- package/lib/types/dsh-adapter/channel/mentions.d.ts +29 -0
- package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mentions.js +235 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +30 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-actions.js +247 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +35 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.js +199 -0
- package/lib/types/dsh-adapter/channel/mode-permission.d.ts +58 -0
- package/lib/types/dsh-adapter/channel/mode-permission.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-permission.js +240 -0
- package/lib/types/dsh-adapter/channel/mode-roster.d.ts +51 -0
- package/lib/types/dsh-adapter/channel/mode-roster.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-roster.js +119 -0
- package/lib/types/dsh-adapter/channel/model-actions.d.ts +46 -0
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/model-actions.js +275 -0
- package/lib/types/dsh-adapter/channel/model-switch.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/model-switch.js +98 -0
- package/lib/types/dsh-adapter/channel/notifications.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/notifications.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/notifications.js +24 -0
- package/lib/types/dsh-adapter/channel/owner.d.ts +18 -0
- package/lib/types/dsh-adapter/channel/owner.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/owner.js +73 -0
- package/lib/types/dsh-adapter/channel/paths.d.ts +31 -0
- package/lib/types/dsh-adapter/channel/paths.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/paths.js +147 -0
- package/lib/types/dsh-adapter/channel/permissions.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/permissions.js +184 -0
- package/lib/types/dsh-adapter/channel/preferences.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/preferences.js +103 -0
- package/lib/types/dsh-adapter/channel/projection-helpers.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/projection-helpers.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/projection-helpers.js +63 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/projection.js +1021 -0
- package/lib/types/dsh-adapter/channel/reports.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/reports.js +171 -0
- package/lib/types/dsh-adapter/channel/session-actions.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/session-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-actions.js +29 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-adoption.js +35 -0
- package/lib/types/dsh-adapter/channel/session-fork.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-fork.js +85 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.js +62 -0
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +81 -0
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-metadata.js +209 -0
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +11 -0
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-reset.js +44 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts +56 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-resume.js +240 -0
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-rewind.js +121 -0
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-tree-actions.js +132 -0
- package/lib/types/dsh-adapter/channel/session-tree.d.ts +10 -0
- package/lib/types/dsh-adapter/channel/session-tree.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-tree.js +503 -0
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +4 -0
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/settings-host.js +256 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +27 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.js +183 -0
- package/lib/types/dsh-adapter/channel/state.d.ts +46 -0
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/state.js +31 -0
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +47 -0
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/subagent-projection.js +140 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts +73 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/transcript.js +312 -0
- package/lib/types/dsh-adapter/channel/types.d.ts +162 -0
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/types.js +1 -0
- package/lib/types/dsh-adapter/channel/usage.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/usage.js +48 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.js +56 -0
- package/lib/types/dsh-adapter/channel-facade-actions.d.ts +25 -0
- package/lib/types/dsh-adapter/channel-facade-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel-facade-actions.js +55 -0
- package/lib/types/dsh-adapter/channel-scene-outlet.d.ts +6 -0
- package/lib/types/dsh-adapter/channel-scene-outlet.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel-scene-outlet.js +13 -0
- package/lib/types/dsh-adapter/channel-ui.d.ts +9 -0
- package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel-ui.js +128 -0
- package/lib/types/dsh-adapter/channel.d.ts +9 -1525
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +750 -8145
- package/lib/types/dsh-adapter/command-trees.d.ts +1 -0
- package/lib/types/dsh-adapter/command-trees.d.ts.map +1 -1
- package/lib/types/dsh-adapter/command-trees.js +20 -1
- package/lib/types/dsh-adapter/compat/liveSession.d.ts +3 -1
- package/lib/types/dsh-adapter/compat/liveSession.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/liveSession.js +23 -0
- package/lib/types/dsh-adapter/compat/persistence.d.ts +21 -0
- package/lib/types/dsh-adapter/compat/persistence.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/persistence.js +17 -0
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts +50 -11
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/sessionLog.js +325 -36
- package/lib/types/dsh-adapter/component-identity.d.ts +1 -1
- package/lib/types/dsh-adapter/component-identity.d.ts.map +1 -1
- package/lib/types/dsh-adapter/component-identity.js +1 -1
- package/lib/types/dsh-adapter/contract.d.ts +11 -9
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +19 -12
- package/lib/types/dsh-adapter/decision-guard.d.ts +56 -12
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/decision-guard.js +134 -22
- package/lib/types/dsh-adapter/dialogs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/dialogs.js +13 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts +5 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -1
- package/lib/types/dsh-adapter/effect-ledger.js +53 -15
- package/lib/types/dsh-adapter/extension-events.d.ts +2 -9
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/extension-events.js +0 -20
- package/lib/types/dsh-adapter/extensions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/extensions.js +3 -2
- package/lib/types/dsh-adapter/host-grants.d.ts +23 -0
- package/lib/types/dsh-adapter/host-grants.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-grants.js +45 -0
- package/lib/types/dsh-adapter/jobs.d.ts +2 -46
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +0 -25
- package/lib/types/dsh-adapter/message-observer.d.ts +15 -2
- package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -1
- package/lib/types/dsh-adapter/message-observer.js +157 -28
- package/lib/types/dsh-adapter/plugin-host.d.ts +80 -11
- package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-host.js +438 -41
- package/lib/types/dsh-adapter/plugin-storage.d.ts +11 -1
- package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-storage.js +150 -11
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +75 -34
- package/lib/types/dsh-adapter/plugins-info.d.ts +2 -2
- package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugins-info.js +11 -6
- package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
- package/lib/types/dsh-adapter/presets.js +3 -2
- package/lib/types/dsh-adapter/providerWizard.d.ts +2 -159
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.d.ts +8 -0
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.js +18 -0
- package/lib/types/dsh-adapter/recap.d.ts +1 -9
- package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
- package/lib/types/dsh-adapter/recap.js +0 -14
- package/lib/types/dsh-adapter/renderers.d.ts +1 -0
- package/lib/types/dsh-adapter/renderers.d.ts.map +1 -1
- package/lib/types/dsh-adapter/renderers.js +26 -1
- package/lib/types/dsh-adapter/scenes.d.ts +3 -1
- package/lib/types/dsh-adapter/scenes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/scenes.js +31 -0
- package/lib/types/dsh-adapter/sessionTree.d.ts +14 -95
- package/lib/types/dsh-adapter/sessionTree.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessionTree.js +51 -36
- package/lib/types/dsh-adapter/sessions/index.d.ts +1 -1
- package/lib/types/dsh-adapter/sessions/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/index.js +1 -1
- package/lib/types/dsh-adapter/sessions/list.d.ts +23 -0
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +25 -14
- package/lib/types/dsh-adapter/sessions/types.d.ts +2 -128
- package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/types.js +0 -13
- package/lib/types/dsh-adapter/settings-sections.d.ts +4 -95
- package/lib/types/dsh-adapter/settings-sections.d.ts.map +1 -1
- package/lib/types/dsh-adapter/settings-sections.js +50 -13
- package/lib/types/dsh-adapter/settingsEditor.d.ts +2 -36
- package/lib/types/dsh-adapter/settingsEditor.d.ts.map +1 -1
- package/lib/types/dsh-adapter/settingsEditor.js +0 -18
- package/lib/types/dsh-adapter/shortcuts.d.ts +5 -0
- package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -1
- package/lib/types/dsh-adapter/shortcuts.js +49 -0
- package/lib/types/dsh-adapter/status.d.ts +5 -0
- package/lib/types/dsh-adapter/status.d.ts.map +1 -1
- package/lib/types/dsh-adapter/status.js +29 -0
- package/lib/types/dsh-adapter/subagents.d.ts +9 -49
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +92 -1
- package/lib/types/dsh-adapter/themes.d.ts +1 -0
- package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/themes.js +29 -0
- package/lib/types/dsh-adapter/toast.d.ts +13 -0
- package/lib/types/dsh-adapter/toast.d.ts.map +1 -1
- package/lib/types/dsh-adapter/toast.js +31 -1
- package/lib/types/dsh-adapter/trajectory/aggregate.d.ts +2 -1
- package/lib/types/dsh-adapter/trajectory/aggregate.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/aggregate.js +2 -1
- package/lib/types/dsh-adapter/trajectory/guards.d.ts +37 -18
- package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/guards.js +43 -5
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts +2 -2
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/projection.d.ts +31 -13
- package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/projection.js +71 -14
- package/lib/types/dsh-adapter/trajectory/types.d.ts +1 -1
- package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/transcript-images.d.ts +2 -19
- package/lib/types/dsh-adapter/transcript-images.d.ts.map +1 -1
- package/lib/types/dsh-adapter/workspaces.d.ts +2 -49
- package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -1
- package/lib/types/dsh-adapter/workspaces.js +23 -3
- package/lib/types/i18n.d.ts +19 -7
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +8 -3
- package/lib/types/ink/render-node-to-output.d.ts +24 -1
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +103 -4
- package/lib/types/ink/renderer.d.ts.map +1 -1
- package/lib/types/ink/renderer.js +14 -2
- package/lib/types/ink/styles.d.ts +12 -0
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/modelGroups.d.ts +1 -1
- package/lib/types/modelGroups.d.ts.map +1 -1
- package/lib/types/modelRoute.js +1 -1
- package/lib/types/plugin-host.d.ts +3 -4
- package/lib/types/plugin-host.d.ts.map +1 -1
- package/lib/types/plugin-host.js +8 -6
- package/lib/types/screens/AgentView.d.ts +1 -1
- package/lib/types/screens/AgentView.d.ts.map +1 -1
- package/lib/types/screens/Chat.d.ts +3 -2
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +71 -9
- package/lib/types/screens/SessionBrowser.d.ts +1 -1
- package/lib/types/screens/SessionBrowser.d.ts.map +1 -1
- package/lib/types/screens/SessionTree.d.ts +1 -1
- package/lib/types/screens/SessionTree.d.ts.map +1 -1
- package/lib/types/screens/Settings.d.ts +1 -1
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.d.ts +1 -1
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +40 -1
- package/lib/types/screens/TrajectoryScene.d.ts +1 -1
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
- package/lib/types/sessionModes.d.ts +11 -15
- package/lib/types/sessionModes.d.ts.map +1 -1
- package/lib/types/sessionModes.js +11 -0
- package/lib/types/tuiDisplayPrefs.d.ts +2 -68
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +5 -1
- package/lib/types/utils/credentials.d.ts +13 -0
- package/lib/types/utils/credentials.d.ts.map +1 -0
- package/lib/types/utils/credentials.js +41 -0
- package/lib/types/utils/fileSuggestions.d.ts +2 -9
- package/lib/types/utils/fileSuggestions.d.ts.map +1 -1
- package/lib/types/utils/fold-long-lines.d.ts +38 -0
- package/lib/types/utils/fold-long-lines.d.ts.map +1 -0
- package/lib/types/utils/fold-long-lines.js +91 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/pi-ai.d.ts +1 -1
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/profiles.js +4 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/service.js +15 -2
- package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +10 -10
- package/package.json +124 -81
- package/presets/liangshen/.dsh-tui-managed.json +1 -1
- package/presets/liangshen/agent.cordis.yml +20 -4
- package/presets/liangshen/compaction-epoch.mjs +3 -1
- package/presets/liangshen/instruction-hint.mjs +2 -1
- package/presets/liangshen/session-events.mjs +8 -0
- package/lib/types/dsh-adapter/grants.d.ts.map +0 -1
- package/lib/types/dsh-adapter/host-descriptor.d.ts +0 -24
- package/lib/types/dsh-adapter/host-descriptor.d.ts.map +0 -1
- package/lib/types/dsh-adapter/host-descriptor.js +0 -169
- package/lib/types/dsh-adapter/plugin-test-utils.d.ts +0 -62
- package/lib/types/dsh-adapter/plugin-test-utils.d.ts.map +0 -1
- package/lib/types/dsh-adapter/plugin-test-utils.js +0 -61
- package/lib/types/plugin-spec/negotiate.d.ts.map +0 -1
- package/lib/types/plugin-spec/permission-scope.d.ts.map +0 -1
- package/lib/types/plugin-spec/registry.d.ts.map +0 -1
- package/lib/types/plugin-spec/schema-check.d.ts.map +0 -1
- package/lib/types/plugin-spec/tui-extension.d.ts +0 -16
- package/lib/types/plugin-spec/tui-extension.d.ts.map +0 -1
- package/lib/types/plugin-spec/tui-extension.js +0 -79
- package/lib/types/plugin-spec/types.d.ts.map +0 -1
- package/lib/types/plugin-spec/validate.d.ts.map +0 -1
- package/lib/types/test-utils.d.ts +0 -2
- package/lib/types/test-utils.d.ts.map +0 -1
- package/lib/types/test-utils.js +0 -8
- /package/lib/types/{plugin-spec → adapter/standard}/negotiate.d.ts +0 -0
- /package/lib/types/{plugin-spec → adapter/standard}/negotiate.js +0 -0
- /package/lib/types/{plugin-spec → adapter/standard}/registry.d.ts +0 -0
- /package/lib/types/{plugin-spec → adapter/standard}/schema-check.d.ts +0 -0
- /package/lib/types/{plugin-spec → adapter/standard}/types.js +0 -0
package/README.md
CHANGED
|
@@ -150,8 +150,152 @@ sh install.sh
|
|
|
150
150
|
| 实验性(仍可能随 dsh-std / 准入规范演进调整) | 九 决策事件 · toast 通知(`ctx.tuiToast`,新增) |
|
|
151
151
|
| 跟随上游(稳定性由 cordis / dsh 官方机制决定) | 一 会话事件 · 二 官方 prompt 槽位 · 三 技能打包 · 四 主题 · 五 system prompt 段 · 七 profile 组合 |
|
|
152
152
|
|
|
153
|
-
另:`@deepseek-harness-tui/dsh-tui/
|
|
154
|
-
`@deepseek-harness-tui/dsh-tui/
|
|
153
|
+
另:`@deepseek-harness-tui/dsh-tui/api`(纯类型入口)为实验性公开面。
|
|
154
|
+
`@deepseek-harness-tui/dsh-tui/test-utils` 公共子路径已移除——它包含可注入真实
|
|
155
|
+
activationId 的测试助手,不适合作为公共生产 API;需要 headless 测试请复制仓库内
|
|
156
|
+
`scripts/lib/plugin-test-utils.ts` 的思路,在自己的测试环境走正式准入流程。
|
|
157
|
+
|
|
158
|
+
公共面的导入迁移:
|
|
159
|
+
- **`ctx.tuiPluginHost.grants.corrupt` 已不存在**。新的 `HostGrantFacade` 只暴露
|
|
160
|
+
`allows(pluginCtx, permission, scope)`、`defaultOf`、`knownPermissions` 和
|
|
161
|
+
`onChange(pluginCtx, listener)`;损坏的 grant 文件不再通过一个布尔字段暴露给插件。
|
|
162
|
+
`onChange` 是 subscribe 类托管能力:必须传入调用 activation,受 shadow 门禁约束,
|
|
163
|
+
返回的取消函数绑定到该 activation,避免文件轮询/监听器泄漏。需要诊断时请使用
|
|
164
|
+
`ctx.tuiPluginHost.selfCheck()`、`/doctor`,或通过显式诊断查询在宿主侧检查
|
|
165
|
+
grant 文件状态。
|
|
166
|
+
- `createAdmissionCatalog` 不再从 `./plugin-host` 导出;诊断请使用
|
|
167
|
+
`ctx.tuiPluginHost.selfCheck()` 与 `/doctor`。
|
|
168
|
+
- `ctx.tuiPluginHost.grants` 改为调用方安全的 `HostGrantFacade`:
|
|
169
|
+
`grants.allows(pluginCtx, permission, scope)` 由宿主从当前 activation 推导身份,
|
|
170
|
+
不再接受任意 `GrantPrincipal`/完整 `GrantStore`。
|
|
171
|
+
- `GrantStore`、`GrantPrincipal` 不再是公开导出的插件 API;它们保留在
|
|
172
|
+
`src/adapter/standard/grants.ts` 作为宿主内部实现类型。需要构造/校验 grant
|
|
173
|
+
文件的宿主方请走仓库内部路径,生态测试不要在公共包依赖这些类型。
|
|
174
|
+
- `@deepseek-harness-tui/dsh-tui/test-utils` 子路径已删除;仓库内的
|
|
175
|
+
`scripts/lib/plugin-test-utils.ts` 仅用于本仓库无头验证,不属于公共契约。
|
|
176
|
+
生态插件请在自己的测试环境通过正式 admission 流程复现。
|
|
177
|
+
|
|
178
|
+
### 平台已知边界(Shadow 门禁不承诺覆盖)
|
|
179
|
+
|
|
180
|
+
TUI 的 shadow/门禁只覆盖自有托管接缝;以下由 Cordis/上游 DSH 拥有的路径属于已写死的
|
|
181
|
+
平台边界,不会被门禁描述为全路径覆盖:
|
|
182
|
+
|
|
183
|
+
- 直接 `ctx.get('commands').register` / `ctx.get('commands').execute`(C-070);
|
|
184
|
+
- `ctx.plugin()` / `candidate.plugin()` 子插件安装(Cordis 平台);
|
|
185
|
+
- agent preset 名册 / recompose 注册(`@deepseek-ai/dsh-agent-presets`);
|
|
186
|
+
- system prompt section 注册(`@deepseek-ai/dsh-system-prompt`);
|
|
187
|
+
- skill registry 注册/调用(`@deepseek-ai/dsh-skill`)。
|
|
188
|
+
|
|
189
|
+
这些路径在 `verify-adapter-shadow` 中以 `platform-known boundary` 显式列出。
|
|
190
|
+
此外,`verify-adapter-shadow` 还显式记录两类门禁已知边界:未列入
|
|
191
|
+
`NON_SERVICE_POLICY` 的内部 TUI 状态/视图辅助类,以及 `src/screens`/
|
|
192
|
+
`src/components` 的 React UI 状态与事件处理——它们不是 adapter capability
|
|
193
|
+
入口,门禁不将其描述为已覆盖。
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
### Adapter live-probe 诚实性与 P2 边界
|
|
197
|
+
|
|
198
|
+
本轮把 `Command` / `LocalStorage` / `MessageObserver` 从“无实探的 staged”
|
|
199
|
+
推进到了“有可逆实探的 live”(在 legacy/new 模式下异步执行),并实现最小
|
|
200
|
+
`KernelRuntime` 与 passive/replay harness:
|
|
201
|
+
|
|
202
|
+
- **Command live probe**:在真实命令服务上临时注册唯一 no-op command,经
|
|
203
|
+
`find` / `list` 验证可见,并以内存 fake agent session 执行一次,确认
|
|
204
|
+
execute 返回 success;无论成功失败都在 `finally` 反注册。该操作不写任何
|
|
205
|
+
DSH 持久化 session 日志,唯一瞬时副作用是进程内命令注册表的一次
|
|
206
|
+
`commands/change` 通知。
|
|
207
|
+
- **LocalStorage live probe**:在真实 storage 目录下创建随机临时 namespace
|
|
208
|
+
文件,完成 write/read/delete,并在 `finally` 删除;不触碰任何真实插件
|
|
209
|
+
namespace,也不保留探针数据。
|
|
210
|
+
- **MessageObserver live probe**:通过 broker 的内部 probe-only 发布通道添加一个临时探针订阅并投递一条合成事件;真实插件的 `session:*` 通配订阅不会收到任何探针消息,探针结束后订阅数回到原值。这些 live probe 方法不是插件可见的公开 service 方法,宿主内核通过内部 host-only accessor 调用。
|
|
211
|
+
- **默认 legacy 兼容发布**:`DSH_TUI_ADAPTER_MODE` 默认是 `legacy`,不会加载新 Kernel、不会执行可逆 live probe。该模式保留旧发布语义,使用独立的 `buildLegacyHostDescriptor` 路径:只要 Command / LocalStorage / MessageObserver 的既有服务行已挂载,`describe()` / `hostDescriptor()` 就发布这些契约供插件准入使用;构建结果会在 warnings 中明确标注为 legacy 兼容声明,与新模式 live-only 的公开 descriptor 分离。
|
|
212
|
+
- **模式配置 fail-closed**:只有未设置 `DSH_TUI_ADAPTER_MODE` 时才默认 `legacy`;显式值只接受 `legacy` / `passive-shadow` / `replay-shadow` / `new`(忽略大小写与首尾空白),空值或未知值会报错并拒绝启动。非 legacy 模式在 Kernel 未就绪、refresh skipped/failed 或已释放时返回空契约 descriptor,不回退兼容发布。
|
|
213
|
+
- **Host probe 访问边界**:`host-probe-access` 内部的 token 是模块级不导出符号,普通包 exports 路径也拒绝 deep import。但插件与宿主同进程时,绝对路径加载内部文件仍无法被 `exports` 阻止——这是 **trusted-in-process 边界,不是安全沙箱**;宿主不会用“插件不可调用”这类无限定承诺。内部注册函数不会覆盖已引导的宿主 probe runner。
|
|
214
|
+
- **Passive Shadow**:不执行上述可逆 probe,只做只读 detect/descriptor 快照;
|
|
215
|
+
**Replay Shadow**:生产环境不接真实 DSH,必须通过 `scripts/verify-adapter-replay-harness.ts`
|
|
216
|
+
或 `src/adapter/kernel/replay.ts` 在隔离 replay context 上运行,否则 fail-closed
|
|
217
|
+
并输出明确提示。
|
|
218
|
+
- Replay harness 用法:在隔离输入上运行
|
|
219
|
+
`node --import tsx/esm scripts/verify-adapter-replay-harness.ts`(门禁脚本),
|
|
220
|
+
或在代码中调用 `runReplayShadow({ schemaVersion: 'tui-adapter-replay/v1', ... })`
|
|
221
|
+
获取 `{ kernelContracts, legacyContracts, missing, extra, lifecycles }` 对比报告。
|
|
222
|
+
P5 起还支持真实 DSH session snapshot/transcript 的
|
|
223
|
+
`runChannelReplay(...)` / `verify:adapter-channel-conformance`,走
|
|
224
|
+
`tui.dsh/v1alpha1#Channel` 的 Provider/Consumer 与协议校验。
|
|
225
|
+
- 公开 Host Descriptor 仍然只发布带真实 probe evidence 的 live 生命周期;
|
|
226
|
+
未完成 live refresh 或 passive/replay 下 `Command` / `LocalStorage` /
|
|
227
|
+
`MessageObserver` 保持 staged/degraded,不伪造完整支持。`DecisionEvents`
|
|
228
|
+
维持逐 feature probe + 真实 channel/dispatch 拓扑发布规则。
|
|
229
|
+
- P6 已彻底移除内部 `admissionCompat` 平行视图,并删除
|
|
230
|
+
`src/plugin-spec/*` 与 `src/dsh-adapter/{grants,host-descriptor}.ts` compat
|
|
231
|
+
shim。生产代码直接导入 `src/adapter/standard/*`;`verify:compat-removal`
|
|
232
|
+
现在扫描 `src/`、`scripts/`、`bin/`、生成 `lib/`(存在时)与 package export
|
|
233
|
+
图,`verify:package` 也会拒绝 npm tarball 中的旧 shim;仍保留的兼容别名
|
|
234
|
+
(`ExtensionGrants`、`envelopeSchema`、`createAdmissionCatalog`、
|
|
235
|
+
`facadeFromLegacy` 等)已明确标注为 P6 范围外/长期兼容面。
|
|
236
|
+
- 新 Kernel 不再是 P1 空壳:`KernelRuntime` 管理 driver 注册/mount、detection、
|
|
237
|
+
`declared → staged → live`、清理与诊断快照;生产 Host Descriptor、`getHostFacade()`、
|
|
238
|
+
`/doctor`、`/plugins` 均走该 runtime。
|
|
239
|
+
- **P3 feature-level live 拆分**:`Workspace` / `Scenes` / `Settings` /
|
|
240
|
+
`Extensions` 不再用“注册+list+dispose”冒充整个能力 live。只有实际通过
|
|
241
|
+
只读/可逆探针验证的方法才进入 live(如 `host.workspaces.list`、
|
|
242
|
+
`host.workspaces.resolve`、`host.scenes.register`、`host.settings.register`、
|
|
243
|
+
`host.status.set`、`host.command-trees.children` 等);
|
|
244
|
+
`host.toast.show` 因尚未验证真实生产 deliver 路径,保持 degraded;
|
|
245
|
+
`rename` / `runCommand` / `commandShell` / `scenes.open` /
|
|
246
|
+
`settings.subscribe` / 快捷键 dispatch / command-tree descriptions 等未验证
|
|
247
|
+
方法保持 degraded/staged。`Presentation` 的交互 `ask` 已桥接到真实
|
|
248
|
+
`QuestionStore`,`approve` 在 P3 明确 staged。
|
|
249
|
+
- **生产 P3 slices 接入**:非 `legacy` 的 `TuiPluginHostRuntime` 会把
|
|
250
|
+
`ADAPTER_KERNEL_SLICES` 传入生产 `KernelRuntime`,进入 mount/refresh/
|
|
251
|
+
descriptor 流程;依赖的服务未挂载时对应 slice 降级而不是崩溃。
|
|
252
|
+
`DSH_TUI_ADAPTER_SLICES` 现在会按 slice id / capability / effect 矩阵过滤
|
|
253
|
+
kernel slices,不再是无效果的死参数。
|
|
254
|
+
- **宿主初始化运行时快照**:所有 adapter/宿主服务(storage/message/plugin-host、
|
|
255
|
+
P3 的 status/workspaces/scenes/settings/toast/dialogs/command-trees/questions/approvals
|
|
256
|
+
等)都会在初始化时捕获不可变 `AdapterRuntimeOptions`。之后同一进程再修改
|
|
257
|
+
`DSH_TUI_ADAPTER_MODE` / `DSH_TUI_ADAPTER_SLICES` 不能把 passive/replay 服务
|
|
258
|
+
解锁成 `new`;能力入口不再每次读 `process.env`。
|
|
259
|
+
- **Slice 归属与边界**:`DSH_TUI_ADAPTER_SLICES` 现在会大小写/空白归一化、支持
|
|
260
|
+
常见别名(如 `dialogs` → `presentation`、`decisions` → `decisions`),未知
|
|
261
|
+
slice id 直接拒绝并 fail-closed。`toast` 不再被 `presentation` 隐式加载,
|
|
262
|
+
`decisions` 不再被 `messages` 隐式加载。
|
|
263
|
+
- **P4 Channel Port/投影层(诚实表述)**:新增 `projection / actions / state /
|
|
264
|
+
plugins / transcript` 五个 Host Port 与 `src/adapter/channel/*` 拆分模块,
|
|
265
|
+
并由 `channel` KernelSlice 挂载到生产 HostFacade;**生产 `src/dsh-adapter/channel.ts`
|
|
266
|
+
本体尚未物理拆分**,仍由 live Channel 作为实现来源,拆分模块是生产 driver
|
|
267
|
+
实际消费的 Port/投影层;**T1 已做核心迁移:生产 `plugin.ts` 中的通知与初始提交
|
|
268
|
+
已优先走 `HostFacade.channel.actions`;**非 shadow 模式下 facade 尚未 mount
|
|
269
|
+
时可回退原生 Channel,passive/replay shadow 下禁止回退,缺失或拒绝时丢弃**;
|
|
270
|
+
其余 UI/Channel 内部动作仍大部分直接调用原生 Channel,尚未完整迁移。
|
|
271
|
+
`HostFacade` 按方法做 shadow 守卫,passive/replay 下只读投影可用、变更动作被拒。
|
|
272
|
+
- **P5 Channel Provider/Consumer**:新增本地 Channel Provider/Consumer,
|
|
273
|
+
实现 `tui.dsh/v1alpha1#Channel` 的 open/subscribe/invoke/close 协议包络与
|
|
274
|
+
规范校验;`runChannelReplay` 支持录制 snapshot 数组,也支持把真实 DSH
|
|
275
|
+
`agent.session.events` 形状事件投影为单调 `TuiChannelSnapshot`。该投影定位为
|
|
276
|
+
**minimal transcript replay**:覆盖 transcript/status/基础 session 字段,
|
|
277
|
+
并在调用方提供元数据时带入 model/mode/preset/settings/scene/diagnostic/trace/
|
|
278
|
+
context/pending/usage 等 RFC 相关字段;仍**不声明是完整 RFC 0007 Channel
|
|
279
|
+
state/conformance**。未知方法按协议失败、
|
|
280
|
+
features 必须显式声明且每个 feature 必须有 state/method 可观察证据、
|
|
281
|
+
重复 features 先拒绝、未知非 ignorable DSH event fail-closed、
|
|
282
|
+
method handler 只能在 replay isolation 内执行、replay provider 不解析
|
|
283
|
+
workspace/sessionId selector(显式 unsupported);连续性错误 fail-closed。
|
|
284
|
+
- **P3 feature 生命周期稳定性**:`refresh` 之后执行 `mount()` / `descriptorBuild()` /
|
|
285
|
+
`diagnosticSnapshot()` 再次触发同步 `detect()`,也不会清空已探测的 P3 feature;
|
|
286
|
+
这些 feature 是内部 Kernel/Port 事实,不进入公开 Host Descriptor。
|
|
287
|
+
- **Settings section live 诚实性**:`host.settings.section` 的 live 依据是探针中
|
|
288
|
+
真实调用 `section()` 解析临时 namespace;解析缺失/失败时该 feature 降级,不再
|
|
289
|
+
仅凭 register/list 就标 live。
|
|
290
|
+
- **Host Port 逐方法 shadow guard**:`KernelRuntime.facade()` 返回的每个
|
|
291
|
+
Port 方法都会先执行统一 effect-class 检查。passive/replay 生产模式下
|
|
292
|
+
`rename`、`runCommand`、`commandShell`、`scenes.open`、`settings.subscribe`、
|
|
293
|
+
各类 `register` 等会被拒绝;只读方法仍可用于诊断。
|
|
294
|
+
- **Toast live probe** 使用独立 probe-only sink 管道,不替换/不吞并发生产
|
|
295
|
+
toast;**Status live probe** 在 `clearIf` 失败或残留时降级,不会标 live。
|
|
296
|
+
- `verify:adapter-slices` / `verify:adapter-detection` 现在同时检查生产
|
|
297
|
+
plugin-host 确实传递 `ADAPTER_KERNEL_SLICES`,避免门禁只测直接 new
|
|
298
|
+
KernelRuntime 的自证。
|
|
155
299
|
|
|
156
300
|
|
|
157
301
|
|
package/bin/dsh-tui.js
CHANGED
|
@@ -183,7 +183,9 @@ const MSG = {
|
|
|
183
183
|
profileNewer: v => `profile is newer — align the launcher: npm install -g ${PACKAGE}@${v}`,
|
|
184
184
|
profileOlder: v => `profile is older — align it: dsh plugin --profile ${PROFILE} add ${PACKAGE}@${v}`,
|
|
185
185
|
keySet: 'set',
|
|
186
|
-
|
|
186
|
+
keySetEnv: 'set (environment)',
|
|
187
|
+
keySetStore: 'set (DSH credential store)',
|
|
188
|
+
keyMissing: 'not set — neither DEEPSEEK_API_KEY nor a DSH credential-store ref',
|
|
187
189
|
missing: 'missing',
|
|
188
190
|
},
|
|
189
191
|
zh: {
|
|
@@ -194,7 +196,9 @@ const MSG = {
|
|
|
194
196
|
profileNewer: v => `profile 较新——对齐启动器: npm install -g ${PACKAGE}@${v}`,
|
|
195
197
|
profileOlder: v => `profile 较旧——对齐它: dsh plugin --profile ${PROFILE} add ${PACKAGE}@${v}`,
|
|
196
198
|
keySet: '已设置',
|
|
197
|
-
|
|
199
|
+
keySetEnv: '已设置(环境变量)',
|
|
200
|
+
keySetStore: '已设置(DSH 凭据库)',
|
|
201
|
+
keyMissing: '未设置——环境变量与 DSH 凭据库中都没有 DEEPSEEK_API_KEY',
|
|
198
202
|
missing: '缺失',
|
|
199
203
|
},
|
|
200
204
|
},
|
|
@@ -271,6 +275,30 @@ if (subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
|
|
|
271
275
|
console.log(msg('helpText'))
|
|
272
276
|
process.exit(0)
|
|
273
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Whether the DSH credential store declares a reference by this name.
|
|
280
|
+
*
|
|
281
|
+
* The launcher stays dependency-free, so the YAML is read as text: only the
|
|
282
|
+
* top-level `refs:` block maps reference names to stored secrets, and matching
|
|
283
|
+
* the bare name anywhere else (grants, payloads) would false-positive. Reports
|
|
284
|
+
* presence only — the value is never read, formatted, or printed. Mirrored by
|
|
285
|
+
* the in-TUI `/doctor` in src/utils/credentials.ts; the two must not diverge.
|
|
286
|
+
* @param home - The DSH home directory that holds `.credentials.yaml`.
|
|
287
|
+
* @param name - Reference name to look for (e.g. `DEEPSEEK_API_KEY`).
|
|
288
|
+
* @returns True when a `refs` entry with that name exists.
|
|
289
|
+
*/
|
|
290
|
+
const credentialRefDeclared = (home, name) => {
|
|
291
|
+
try {
|
|
292
|
+
const text = readFileSync(join(home, '.credentials.yaml'), 'utf8')
|
|
293
|
+
const block = /^refs:[ \t]*\r?\n((?:[ \t]+\S.*(?:\r?\n|$))*)/mu.exec(text)
|
|
294
|
+
if (block === null) return false
|
|
295
|
+
const escaped = name.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&')
|
|
296
|
+
return new RegExp(`^[ \t]+${escaped}[ \t]*:`, 'mu').test(block[1])
|
|
297
|
+
} catch {
|
|
298
|
+
return false
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
274
302
|
// ─── 子命令:doctor ──────────────────────────────────────────────────────────
|
|
275
303
|
// 启动前环境诊断——针对「TUI 起不来」的故障域(装不上、update 后版本不
|
|
276
304
|
// 同步、密钥没配),与 TUI 内 /doctor 的会话内诊断互补。零 lib 依赖、
|
|
@@ -316,10 +344,17 @@ if (subcommand === 'doctor') {
|
|
|
316
344
|
}
|
|
317
345
|
}
|
|
318
346
|
}
|
|
319
|
-
// truthiness 而非 !== undefined:空字符串的 key
|
|
320
|
-
// /doctor(channel.doctorInfo
|
|
321
|
-
|
|
322
|
-
|
|
347
|
+
// truthiness 而非 !== undefined:空字符串的 key 同样发不了请求。TUI 内
|
|
348
|
+
// /doctor(channel.doctorInfo)用同一判定——两个 doctor 不许分叉。
|
|
349
|
+
// 只看环境变量会误报:dsh 在启动时才把凭据库里的 ref 解析进会话,而
|
|
350
|
+
// doctor 跑在 dsh 之前,此时环境变量通常仍是空的。
|
|
351
|
+
const keyFromEnv = Boolean(process.env.DEEPSEEK_API_KEY)
|
|
352
|
+
const keyFromStore = credentialRefDeclared(dshHome, 'DEEPSEEK_API_KEY')
|
|
353
|
+
report(
|
|
354
|
+
keyFromEnv || keyFromStore,
|
|
355
|
+
'DEEPSEEK_API_KEY',
|
|
356
|
+
keyFromEnv ? L.keySetEnv : keyFromStore ? L.keySetStore : L.keyMissing,
|
|
357
|
+
)
|
|
323
358
|
for (const candidate of [join(homedir(), '.dsh-tui', 'cordis.yml'), join(profileDir, 'cordis.patch.yml')]) {
|
|
324
359
|
report(existsSync(candidate), 'config', `${candidate}${existsSync(candidate) ? '' : ` ${L.missing}`}`)
|
|
325
360
|
}
|
|
@@ -389,6 +424,55 @@ const bootstrapProfile = () => {
|
|
|
389
424
|
}
|
|
390
425
|
}
|
|
391
426
|
|
|
427
|
+
/** Installed version of the profile copy, or undefined when it is absent/unreadable. */
|
|
428
|
+
const profileVersion = () => {
|
|
429
|
+
try {
|
|
430
|
+
return JSON.parse(readFileSync(installedPkgPath, 'utf8')).version
|
|
431
|
+
} catch {
|
|
432
|
+
return undefined
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* Guard the launcher/profile version boundary. The two copies ship in the same
|
|
438
|
+
* npm package but are installed independently (`npm i -g` vs `dsh plugin add`),
|
|
439
|
+
* so one of them being upgraded alone is a normal state. It must be caught
|
|
440
|
+
* here: dsh composes the launcher's patch surface with the profile's packages,
|
|
441
|
+
* and a skew fails deep inside the dsh loader
|
|
442
|
+
* (`ERR_PACKAGE_PATH_NOT_EXPORTED` on a subpath the older copy does not
|
|
443
|
+
* export) instead of with a message the user can act on. Runs on the
|
|
444
|
+
* delegation path as well as the in-profile path, because the delegated child
|
|
445
|
+
* is itself the profile copy and can no longer see the outer launcher.
|
|
446
|
+
* @param installedVersion - The profile copy's version.
|
|
447
|
+
*/
|
|
448
|
+
const checkProfileAlignment = installedVersion => {
|
|
449
|
+
if (installedVersion === undefined || ownVersion === undefined || installedVersion === ownVersion) return
|
|
450
|
+
const majorMinor = v => v.split('-')[0].split('.').slice(0, 2).map(Number)
|
|
451
|
+
const [installedMajor, installedMinor] = majorMinor(installedVersion)
|
|
452
|
+
const [ownMajor, ownMinor] = majorMinor(ownVersion)
|
|
453
|
+
if (installedMajor < ownMajor || (installedMajor === ownMajor && installedMinor < ownMinor)) {
|
|
454
|
+
console.error(
|
|
455
|
+
`[dsh-tui] cannot start: the profile runs v${installedVersion} but this launcher is v${ownVersion}.\n` +
|
|
456
|
+
` dsh plugin --profile ${PROFILE} add ${PACKAGE}@${ownVersion}`,
|
|
457
|
+
)
|
|
458
|
+
process.exit(1)
|
|
459
|
+
}
|
|
460
|
+
if (isVersionNewer(installedVersion, ownVersion)) {
|
|
461
|
+
console.error(
|
|
462
|
+
`[dsh-tui] note: the profile is already v${installedVersion}; this launcher copy is v${ownVersion}.\n` +
|
|
463
|
+
` npm install -g --legacy-peer-deps ${PACKAGE}@${installedVersion}\n` +
|
|
464
|
+
`(--legacy-peer-deps avoids an npm 12 peer-resolution crash, see issue #459)`,
|
|
465
|
+
)
|
|
466
|
+
} else {
|
|
467
|
+
// profile 更旧但同 minor(patch 级错位):允许启动,指引用 add 把
|
|
468
|
+
// profile 对齐到启动器版本(精确版本,@latest 可能越过对齐点)。
|
|
469
|
+
console.error(
|
|
470
|
+
`[dsh-tui] note: the profile is running v${installedVersion} but this launcher is v${ownVersion}.\n` +
|
|
471
|
+
` dsh plugin --profile ${PROFILE} add ${PACKAGE}@${ownVersion}`,
|
|
472
|
+
)
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
392
476
|
// ─── 子命令:update ──────────────────────────────────────────────────────────
|
|
393
477
|
// 顶层处理、两种角色同一条路径——不放进委托链。委托会把 update 交给
|
|
394
478
|
// profile 内的旧 bin:旧副本不认识这个词,只会当参数透传,恰好是「profile
|
|
@@ -425,6 +509,10 @@ if (subcommand === 'update') {
|
|
|
425
509
|
// 的沙箱用它直接驱动全量路径;现场排查委托链时同样可用)。
|
|
426
510
|
if (!runningInsideProfile && ownVersion !== undefined && process.env.DSH_TUI_NO_DELEGATE !== '1') {
|
|
427
511
|
if (!profileReady()) bootstrapProfile()
|
|
512
|
+
// Refuse to delegate into a profile from an older release line: the profile
|
|
513
|
+
// copy would launch `dsh --profile dsh-tui` against a composition built from
|
|
514
|
+
// this launcher's patch surface and fail inside the loader.
|
|
515
|
+
checkProfileAlignment(profileVersion())
|
|
428
516
|
// 委托 profile 内副本执行全部启动逻辑。外层代际通过
|
|
429
517
|
// DSH_TUI_LAUNCHER_VERSION 交代(/update 的对齐诊断沿用该契约)。
|
|
430
518
|
try {
|
|
@@ -466,33 +554,11 @@ if (!runningInsideProfile && ownVersion !== undefined && process.env.DSH_TUI_NO_
|
|
|
466
554
|
installedVersion = undefined
|
|
467
555
|
}
|
|
468
556
|
}
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
console.error(
|
|
475
|
-
`[dsh-tui] cannot start: the profile runs v${installedVersion} but this launcher is v${ownVersion}.\n` +
|
|
476
|
-
` dsh plugin --profile ${PROFILE} add ${PACKAGE}@${ownVersion}`,
|
|
477
|
-
)
|
|
478
|
-
process.exit(1)
|
|
479
|
-
}
|
|
480
|
-
const installedNewer = installedVersion !== undefined && ownVersion !== undefined && isVersionNewer(installedVersion, ownVersion)
|
|
481
|
-
if (installedNewer) {
|
|
482
|
-
console.error(
|
|
483
|
-
`[dsh-tui] note: the profile is already v${installedVersion}; this launcher copy is v${ownVersion}.\n` +
|
|
484
|
-
` npm install -g --legacy-peer-deps ${PACKAGE}@${installedVersion}\n` +
|
|
485
|
-
`(--legacy-peer-deps avoids an npm 12 peer-resolution crash, see issue #459)`,
|
|
486
|
-
)
|
|
487
|
-
} else {
|
|
488
|
-
// profile 更旧但同 minor(patch 级错位):允许启动,指引用 add 把
|
|
489
|
-
// profile 对齐到启动器版本(精确版本,@latest 可能越过对齐点)。
|
|
490
|
-
console.error(
|
|
491
|
-
`[dsh-tui] note: the profile is running v${installedVersion} but this launcher is v${ownVersion}.\n` +
|
|
492
|
-
` dsh plugin --profile ${PROFILE} add ${PACKAGE}@${ownVersion}`,
|
|
493
|
-
)
|
|
494
|
-
}
|
|
495
|
-
}
|
|
557
|
+
// 版本错位诊断与瘦壳委托路径共用同一实现(见 checkProfileAlignment)。
|
|
558
|
+
// `!runningInsideProfile` 只在 DSH_TUI_NO_DELEGATE=1 的调试口下成立,因此
|
|
559
|
+
// 该判定不能只留在这里——委派出去的子进程就是 profile 副本,看不到外层
|
|
560
|
+
// 启动器版本。
|
|
561
|
+
if (!runningInsideProfile) checkProfileAlignment(installedVersion)
|
|
496
562
|
|
|
497
563
|
// --resume / 工作区目标拦截(launcher 契约,见 src/sessionHistory.ts)。
|
|
498
564
|
const setResumeEnv = sessionId => {
|
package/cordis.patch.yml
CHANGED
|
@@ -12,10 +12,27 @@
|
|
|
12
12
|
# ── surface-specific values over the dsh-base layer ─────────────────────────
|
|
13
13
|
|
|
14
14
|
# The dsh-tui deployment persona; DSH_TUI_PERSONA overrides the coding-agent
|
|
15
|
-
# default (the base persona is empty).
|
|
15
|
+
# default (the base persona is empty). dsh-system-prompt renamed the slot at
|
|
16
|
+
# 0.1.3-alpha.2 (`persona` → `personaPrefix`, with an optional suffix
|
|
17
|
+
# counterpart); older cohorts only accept `persona`, so the key follows the
|
|
18
|
+
# installed package version.
|
|
16
19
|
- id: system-prompt
|
|
17
|
-
config:
|
|
18
|
-
|
|
20
|
+
config: !!js >-
|
|
21
|
+
(() => {
|
|
22
|
+
const persona = process.env.DSH_TUI_PERSONA ?? 'You are a coding agent.'
|
|
23
|
+
try {
|
|
24
|
+
const require = process.getBuiltinModule('node:module').createRequire(ctx.baseUrl)
|
|
25
|
+
const fs = process.getBuiltinModule('node:fs')
|
|
26
|
+
const manifest = require.resolve('@deepseek-ai/dsh-system-prompt/package.json')
|
|
27
|
+
const version = String(JSON.parse(fs.readFileSync(manifest, 'utf8')).version ?? '')
|
|
28
|
+
const match = /^(\d+)\.(\d+)\.(\d+)/u.exec(version)
|
|
29
|
+
const [major, minor, patch] = match === null ? [0, 0, 0] : [Number(match[1]), Number(match[2]), Number(match[3])]
|
|
30
|
+
if (major > 0 || minor > 1 || (minor === 1 && patch >= 3)) return { personaPrefix: persona }
|
|
31
|
+
return { persona }
|
|
32
|
+
} catch {
|
|
33
|
+
return { personaPrefix: persona }
|
|
34
|
+
}
|
|
35
|
+
})()
|
|
19
36
|
|
|
20
37
|
# The native DeepSeek adapter, pinned to the harness defaults: full thinking
|
|
21
38
|
# at max effort, key and base URL from the launching environment. The base
|
|
@@ -141,8 +158,11 @@
|
|
|
141
158
|
- id: tool-skill
|
|
142
159
|
disabled: true
|
|
143
160
|
|
|
144
|
-
|
|
145
|
-
|
|
161
|
+
# `tool-str-replace-editor` carries no disable row: dsh-base registered that
|
|
162
|
+
# entry only up to the 0.1.2 line, and from 0.1.3-alpha.2 it is opt-in (see the
|
|
163
|
+
# dsh-base README). A row here would target a missing id and log
|
|
164
|
+
# `patch: entry "tool-str-replace-editor" not found` on every 0.1.3+ boot.
|
|
165
|
+
# Presets that expose the tool re-add the entry themselves.
|
|
146
166
|
|
|
147
167
|
# Delegation tools (subagent spawn/fork, controls, workflows) are preset rows
|
|
148
168
|
# now; the preset's `delegation` group re-adds them with package defaults, so
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Channel actions module (P4 channel split).
|
|
3
|
+
*
|
|
4
|
+
* This is the action half of the live Channel: a thin adapter over the
|
|
5
|
+
* public Channel mutation methods. The Kernel HostFacade wraps these methods
|
|
6
|
+
* with the unified shadow-policy enforcement before any caller can invoke
|
|
7
|
+
* them, so this module never performs its own shadow check.
|
|
8
|
+
*
|
|
9
|
+
* The internal `CHANNEL_SPLIT_TOKEN` is required to prevent arbitrary TUI
|
|
10
|
+
* code from importing this split builder directly and bypassing the
|
|
11
|
+
* HostFacade shadow gate.
|
|
12
|
+
*/
|
|
13
|
+
import type { Channel } from '../../dsh-adapter/channel.js';
|
|
14
|
+
import type { HostChannelActionsPort } from '../ports/channel.js';
|
|
15
|
+
/** Build the host-internal action surface over one live Channel. */
|
|
16
|
+
export declare function createChannelActions(channel: Channel, token: symbol): HostChannelActionsPort;
|
|
17
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../src/adapter/channel/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAGjE,oEAAoE;AACpE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GACZ,sBAAsB,CAaxB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Channel actions module (P4 channel split).
|
|
3
|
+
*
|
|
4
|
+
* This is the action half of the live Channel: a thin adapter over the
|
|
5
|
+
* public Channel mutation methods. The Kernel HostFacade wraps these methods
|
|
6
|
+
* with the unified shadow-policy enforcement before any caller can invoke
|
|
7
|
+
* them, so this module never performs its own shadow check.
|
|
8
|
+
*
|
|
9
|
+
* The internal `CHANNEL_SPLIT_TOKEN` is required to prevent arbitrary TUI
|
|
10
|
+
* code from importing this split builder directly and bypassing the
|
|
11
|
+
* HostFacade shadow gate.
|
|
12
|
+
*/
|
|
13
|
+
import { CHANNEL_SPLIT_TOKEN } from './internal-token.js';
|
|
14
|
+
/** Build the host-internal action surface over one live Channel. */
|
|
15
|
+
export function createChannelActions(channel, token) {
|
|
16
|
+
if (token !== CHANNEL_SPLIT_TOKEN) {
|
|
17
|
+
throw new Error('dsh-tui: Channel split actions require the internal host token');
|
|
18
|
+
}
|
|
19
|
+
return Object.freeze({
|
|
20
|
+
submit: text => channel.submit(text),
|
|
21
|
+
steer: text => channel.steer(text),
|
|
22
|
+
cancel: () => channel.cancel(),
|
|
23
|
+
interruptAndDeliver: texts => channel.interruptAndDeliver(texts),
|
|
24
|
+
clear: () => channel.clear(),
|
|
25
|
+
loadOlder: () => channel.loadOlder(),
|
|
26
|
+
notify: (text, options) => channel.notify(text, options),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Channel Consumer (P5).
|
|
3
|
+
*
|
|
4
|
+
* A Channel Consumer owns the visible terminal side of
|
|
5
|
+
* `tui.dsh/v1alpha1#Channel`. This module is the conformance-facing client:
|
|
6
|
+
* it opens a provider, subscribes to snapshots, enforces monotonic versions
|
|
7
|
+
* and full-snapshot continuity, invokes JSON-value methods, and closes the
|
|
8
|
+
* channel. It never interprets provider business methods itself.
|
|
9
|
+
*
|
|
10
|
+
* Continuity violations are fail-closed by default: the consumer throws
|
|
11
|
+
* instead of silently retaining a discontinuous snapshot.
|
|
12
|
+
*/
|
|
13
|
+
import type { TuiChannelInvokeOutput, TuiChannelSnapshot } from '../spec/index.js';
|
|
14
|
+
import type { ChannelProvider, ChannelProviderOpenInput } from './provider.js';
|
|
15
|
+
export interface ChannelConsumerOptions {
|
|
16
|
+
/** When true (default), a continuity violation throws immediately and the
|
|
17
|
+
* discontinuous snapshot is not retained. */
|
|
18
|
+
readonly failClosed?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ChannelConsumer {
|
|
21
|
+
open(input: ChannelProviderOpenInput): Promise<TuiChannelSnapshot>;
|
|
22
|
+
subscribe(channelId: string, afterVersion: number, listener: (snapshot: TuiChannelSnapshot) => void): Promise<() => void>;
|
|
23
|
+
invoke(channelId: string, method: string, args: readonly unknown[]): Promise<TuiChannelInvokeOutput>;
|
|
24
|
+
close(channelId: string): Promise<{
|
|
25
|
+
readonly closed: true;
|
|
26
|
+
}>;
|
|
27
|
+
lastSnapshot(): TuiChannelSnapshot | undefined;
|
|
28
|
+
/** Version continuity failures observed while consuming (gap/backwards/
|
|
29
|
+
* wire-revision change). A conformant replay must keep this empty. */
|
|
30
|
+
continuityErrors(): readonly string[];
|
|
31
|
+
}
|
|
32
|
+
/** Wrap a Channel Provider with the consumer-side protocol envelope checks. */
|
|
33
|
+
export declare function createChannelConsumer(provider: ChannelProvider, options?: ChannelConsumerOptions): ChannelConsumer;
|
|
34
|
+
//# sourceMappingURL=consumer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../../../src/adapter/channel/consumer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAE9E,MAAM,WAAW,sBAAsB;IACrC;iDAC6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAClE,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,GAC/C,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;IACtB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACpG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;IAC5D,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAAA;IAC9C;0EACsE;IACtE,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAAA;CACtC;AAED,+EAA+E;AAC/E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAqEjB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Channel Consumer (P5).
|
|
3
|
+
*
|
|
4
|
+
* A Channel Consumer owns the visible terminal side of
|
|
5
|
+
* `tui.dsh/v1alpha1#Channel`. This module is the conformance-facing client:
|
|
6
|
+
* it opens a provider, subscribes to snapshots, enforces monotonic versions
|
|
7
|
+
* and full-snapshot continuity, invokes JSON-value methods, and closes the
|
|
8
|
+
* channel. It never interprets provider business methods itself.
|
|
9
|
+
*
|
|
10
|
+
* Continuity violations are fail-closed by default: the consumer throws
|
|
11
|
+
* instead of silently retaining a discontinuous snapshot.
|
|
12
|
+
*/
|
|
13
|
+
import { validateTuiChannelOutput, validateTuiChannelSnapshot } from '../spec/index.js';
|
|
14
|
+
/** Wrap a Channel Provider with the consumer-side protocol envelope checks. */
|
|
15
|
+
export function createChannelConsumer(provider, options = {}) {
|
|
16
|
+
const failClosed = options.failClosed !== false;
|
|
17
|
+
let last;
|
|
18
|
+
const continuityErrors = [];
|
|
19
|
+
function accept(snapshotValue, allowEqual = false) {
|
|
20
|
+
const snapshot = validateTuiChannelSnapshot(snapshotValue);
|
|
21
|
+
const errorCountBefore = continuityErrors.length;
|
|
22
|
+
if (last !== undefined) {
|
|
23
|
+
if (snapshot.channelId !== last.channelId) {
|
|
24
|
+
continuityErrors.push(`channel id changed: ${last.channelId} -> ${snapshot.channelId}`);
|
|
25
|
+
}
|
|
26
|
+
else if (snapshot.wireRevision !== last.wireRevision) {
|
|
27
|
+
continuityErrors.push(`wire revision changed: ${last.wireRevision} -> ${snapshot.wireRevision}`);
|
|
28
|
+
}
|
|
29
|
+
else if (snapshot.version < last.version) {
|
|
30
|
+
continuityErrors.push(`version went backwards: ${last.version} -> ${snapshot.version}`);
|
|
31
|
+
}
|
|
32
|
+
else if (snapshot.version === last.version && !allowEqual) {
|
|
33
|
+
continuityErrors.push(`version did not advance: ${last.version} -> ${snapshot.version}`);
|
|
34
|
+
}
|
|
35
|
+
else if (snapshot.version > last.version && snapshot.version !== last.version + 1) {
|
|
36
|
+
continuityErrors.push(`version gap: expected ${last.version + 1}, got ${snapshot.version}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const hasNewError = continuityErrors.length > errorCountBefore;
|
|
40
|
+
if (hasNewError && failClosed) {
|
|
41
|
+
throw new Error(`dsh-tui: Channel continuity violation: ${continuityErrors[continuityErrors.length - 1]}`);
|
|
42
|
+
}
|
|
43
|
+
// When not fail-closed, keep advancing `last` to the snapshot that was
|
|
44
|
+
// actually observed so later continuity messages describe the real
|
|
45
|
+
// sequence rather than a stale pre-violation baseline.
|
|
46
|
+
if (last === undefined || snapshot.version >= last.version) {
|
|
47
|
+
last = snapshot;
|
|
48
|
+
}
|
|
49
|
+
return snapshot;
|
|
50
|
+
}
|
|
51
|
+
return Object.freeze({
|
|
52
|
+
async open(input) {
|
|
53
|
+
const snapshot = await provider.open(input);
|
|
54
|
+
last = undefined;
|
|
55
|
+
continuityErrors.length = 0;
|
|
56
|
+
return accept(snapshot);
|
|
57
|
+
},
|
|
58
|
+
async subscribe(channelId, afterVersion, listener) {
|
|
59
|
+
let firstReplay = true;
|
|
60
|
+
return provider.subscribe(channelId, afterVersion, value => {
|
|
61
|
+
// Provider semantics are "not earlier than afterVersion": an equal
|
|
62
|
+
// version echo after `open()` is the first snapshot of a subscription
|
|
63
|
+
// and must be accepted, while later equal-version duplicates still
|
|
64
|
+
// violate continuity.
|
|
65
|
+
listener(accept(value, firstReplay));
|
|
66
|
+
firstReplay = false;
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
async invoke(channelId, method, args) {
|
|
70
|
+
const output = await provider.invoke(channelId, method, args);
|
|
71
|
+
const validated = validateTuiChannelOutput('invoke', output);
|
|
72
|
+
if (validated.snapshot !== undefined)
|
|
73
|
+
accept(validated.snapshot, true);
|
|
74
|
+
return validated;
|
|
75
|
+
},
|
|
76
|
+
async close(channelId) {
|
|
77
|
+
const output = await provider.close(channelId);
|
|
78
|
+
return validateTuiChannelOutput('close', output);
|
|
79
|
+
},
|
|
80
|
+
lastSnapshot() {
|
|
81
|
+
return last;
|
|
82
|
+
},
|
|
83
|
+
continuityErrors() {
|
|
84
|
+
return Object.freeze([...continuityErrors]);
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Channel Host-Port effect-capability map and derived feature list.
|
|
3
|
+
*
|
|
4
|
+
* This is the single source that `HostFacade` shadow policy, the Channel
|
|
5
|
+
* upstream driver and the Kernel channel slice all consume. Keeping it here
|
|
6
|
+
* prevents the slice declaration / driver feature list from drifting from the
|
|
7
|
+
* methods actually exposed by `HostChannelPort`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const CHANNEL_PORT_METHOD_CAPABILITIES: Readonly<Record<string, Readonly<Record<string, string>>>>;
|
|
10
|
+
export declare const CHANNEL_FEATURES: readonly string[];
|
|
11
|
+
export declare const CHANNEL_STANDARD_DECLARATIONS: readonly string[];
|
|
12
|
+
//# sourceMappingURL=features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../../../src/adapter/channel/features.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,gCAAgC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CA6BtG,CAAA;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAK7C,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAAqB,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Channel Host-Port effect-capability map and derived feature list.
|
|
3
|
+
*
|
|
4
|
+
* This is the single source that `HostFacade` shadow policy, the Channel
|
|
5
|
+
* upstream driver and the Kernel channel slice all consume. Keeping it here
|
|
6
|
+
* prevents the slice declaration / driver feature list from drifting from the
|
|
7
|
+
* methods actually exposed by `HostChannelPort`.
|
|
8
|
+
*/
|
|
9
|
+
export const CHANNEL_PORT_METHOD_CAPABILITIES = Object.freeze({
|
|
10
|
+
projection: Object.freeze({
|
|
11
|
+
ui: 'host.channel.projection.ui',
|
|
12
|
+
snapshot: 'host.channel.projection.snapshot',
|
|
13
|
+
subscribe: 'host.channel.projection.subscribe',
|
|
14
|
+
}),
|
|
15
|
+
actions: Object.freeze({
|
|
16
|
+
submit: 'host.channel.actions.submit',
|
|
17
|
+
steer: 'host.channel.actions.steer',
|
|
18
|
+
cancel: 'host.channel.actions.cancel',
|
|
19
|
+
interruptAndDeliver: 'host.channel.actions.interruptAndDeliver',
|
|
20
|
+
clear: 'host.channel.actions.clear',
|
|
21
|
+
loadOlder: 'host.channel.actions.loadOlder',
|
|
22
|
+
notify: 'host.channel.actions.notify',
|
|
23
|
+
}),
|
|
24
|
+
state: Object.freeze({
|
|
25
|
+
snapshot: 'host.channel.state.snapshot',
|
|
26
|
+
}),
|
|
27
|
+
plugins: Object.freeze({
|
|
28
|
+
runExternalCommand: 'host.channel.plugins.run-external-command',
|
|
29
|
+
openPluginScene: 'host.channel.plugins.open-scene',
|
|
30
|
+
closePluginScene: 'host.channel.plugins.close-scene',
|
|
31
|
+
settingsSections: 'host.channel.plugins.settings-sections',
|
|
32
|
+
subscribeSettingsSections: 'host.channel.plugins.subscribe-settings-sections',
|
|
33
|
+
}),
|
|
34
|
+
transcript: Object.freeze({
|
|
35
|
+
rows: 'host.channel.transcript.rows',
|
|
36
|
+
traceEvents: 'host.channel.transcript.trace-events',
|
|
37
|
+
}),
|
|
38
|
+
});
|
|
39
|
+
export const CHANNEL_FEATURES = Object.freeze([...new Set(Object.values(CHANNEL_PORT_METHOD_CAPABILITIES)
|
|
40
|
+
.flatMap(subPort => Object.values(subPort)))]);
|
|
41
|
+
export const CHANNEL_STANDARD_DECLARATIONS = CHANNEL_FEATURES;
|