@deepseek-harness-tui/dsh-tui 0.10.0 → 0.10.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 +5 -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 +229 -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/Chat/JobCard.d.ts.map +1 -1
- package/lib/types/components/Chat/JobCard.js +8 -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/Markdown.d.ts +2 -2
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +28 -3
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +46 -17
- 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/StreamingMarkdown.d.ts.map +1 -1
- package/lib/types/components/StreamingMarkdown.js +61 -9
- 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 +65 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/binding-events.js +169 -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 +37 -0
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/input-delivery.js +305 -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 +187 -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 +128 -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 +138 -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 +33 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.js +215 -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 +753 -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 +8 -4
- package/lib/types/dsh-adapter/compat/liveSession.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/liveSession.js +28 -3
- 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/digest.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/digest.js +40 -19
- package/lib/types/dsh-adapter/sessions/frames.js +2 -0
- 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 +28 -17
- package/lib/types/dsh-adapter/sessions/store.d.ts +2 -2
- package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/store.js +12 -11
- package/lib/types/dsh-adapter/sessions/types.d.ts +4 -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/components/ScrollBox.d.ts.map +1 -1
- package/lib/types/ink/components/ScrollBox.js +30 -33
- package/lib/types/ink/dom.d.ts.map +1 -1
- package/lib/types/ink/dom.js +32 -64
- package/lib/types/ink/get-max-width.d.ts +7 -15
- package/lib/types/ink/get-max-width.d.ts.map +1 -1
- package/lib/types/ink/get-max-width.js +7 -20
- package/lib/types/ink/ink.d.ts +1 -0
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +22 -3
- package/lib/types/ink/layout/node.d.ts +2 -0
- package/lib/types/ink/layout/node.d.ts.map +1 -1
- package/lib/types/ink/layout/yoga.d.ts +1 -0
- package/lib/types/ink/layout/yoga.d.ts.map +1 -1
- package/lib/types/ink/layout/yoga.js +3 -0
- package/lib/types/ink/node-cache.d.ts +11 -0
- package/lib/types/ink/node-cache.d.ts.map +1 -1
- package/lib/types/ink/node-cache.js +3 -0
- package/lib/types/ink/output.d.ts +6 -1
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +55 -65
- 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 +195 -71
- 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/ink/tabstops.d.ts +3 -2
- package/lib/types/ink/tabstops.d.ts.map +1 -1
- package/lib/types/ink/tabstops.js +5 -4
- package/lib/types/ink/wrap-text.js +2 -2
- 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/native-ts/yoga-layout/index.d.ts +8 -3
- package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -1
- package/lib/types/native-ts/yoga-layout/index.js +23 -8
- 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 +91 -17
- 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 +125 -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
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
* - `generationId` — the runtime generation id (C-050), a fresh UUID per
|
|
10
10
|
* row activation; ledger records and the Host Descriptor stamp it so
|
|
11
11
|
* effects from different process generations can never be confused.
|
|
12
|
-
* - `grants` — the unified 8-permission live GrantStore
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* - `grants` — the unified 8-permission live GrantStore
|
|
13
|
+
* (`../adapter/standard/grants.js`).
|
|
14
|
+
* - `hostDescriptor()` — the C-010 Host Descriptor
|
|
15
|
+
* (`../adapter/standard/descriptor.js`), built lazily and cached; drifted
|
|
16
|
+
* contracts are dropped fail-closed.
|
|
15
17
|
* - `selfCheck()` — vendored registry + contract-profile violations
|
|
16
18
|
* (definition/profile drift, ten-point incompleteness, parity mismatches).
|
|
17
19
|
* - `registerCommand(pluginCtx, definition)` — the MEDIATED command
|
|
@@ -34,65 +36,261 @@
|
|
|
34
36
|
*/
|
|
35
37
|
import { Context, Service } from '@deepseek-ai/cordis';
|
|
36
38
|
import { randomUUID } from 'node:crypto';
|
|
37
|
-
import { parseManifest, projectManifest } from '
|
|
38
|
-
import { loadSpecData, verifyContractProfiles, verifyRegistry } from '../
|
|
39
|
-
import { createContractIndex, validatePlugin } from '../
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
39
|
+
import { parseManifest, projectManifest } from '../adapter/standard/protocols.js';
|
|
40
|
+
import { loadSpecData, verifyContractProfiles, verifyRegistry } from '../adapter/standard/registry.js';
|
|
41
|
+
import { createContractIndex, validatePlugin, negotiate } from '../adapter/standard/admission.js';
|
|
42
|
+
import { readGrantStore } from '../adapter/standard/grants.js';
|
|
43
|
+
import { facadeFromLegacy } from '../adapter/kernel/legacy-facade.js';
|
|
44
|
+
import { createShadowGuardedHostFacade } from '../adapter/kernel/host-facade.js';
|
|
45
|
+
import { KernelRuntime } from '../adapter/kernel/kernel-runtime.js';
|
|
46
|
+
import { ADAPTER_KERNEL_SLICES } from '../adapter/kernel/slices/index.js';
|
|
47
|
+
import { assertCapabilityShadowPolicy, } from '../adapter/kernel/runtime.js';
|
|
48
|
+
import { adapterRuntimeFor } from '../adapter/kernel/runtime-context.js';
|
|
49
|
+
import { hostDescriptorDriver } from '../adapter/upstream/host-descriptor-driver.js';
|
|
50
|
+
import { buildHostDescriptor, buildLegacyHostDescriptor, HOST_SUPPORTED_CONTRACTS } from '../adapter/standard/descriptor.js';
|
|
43
51
|
import { TuiEffectLedgerRuntime } from './effect-ledger.js';
|
|
44
52
|
import { TuiPluginStorageRuntime } from './plugin-storage.js';
|
|
45
53
|
import { TuiMessageObserverRuntime } from './message-observer.js';
|
|
46
54
|
import { stampCommandOwner, unstampCommandOwner } from './command-attribution.js';
|
|
47
55
|
import { hasCommandErrorCode, mapCommandError } from './command-errors.js';
|
|
48
|
-
import { installDecisionGuard, decisionHandlerMetadataOf, registerDecisionHandler, withDecisionRegistration, } from './decision-guard.js';
|
|
56
|
+
import { installDecisionGuard, decisionHandlerMetadataOf, probeDecisionEventFeatures, registerDecisionHandler, withDecisionRegistration, } from './decision-guard.js';
|
|
49
57
|
import { bindComponentIdentity, declaresCommand, requiresDecisionEvents, requiresContract, requireComponentIdentity, } from './component-identity.js';
|
|
50
|
-
import { activationContext, activationFiber, assertCallerContext, bindCallerEffect, compositionRoot, concreteService } from './host-access.js';
|
|
58
|
+
import { activationContext, activationFiber, assertCallerContext, bindCallerEffect, compositionRoot, concreteService, withHostRootCapability } from './host-access.js';
|
|
59
|
+
import { bindHostGrantStore } from './host-grants.js';
|
|
60
|
+
import { registerCommandLiveProbe } from '../adapter/kernel/host-probe-access.js';
|
|
51
61
|
/** `ctx.tuiPluginHost` — plugin-interop anchor (generation, grants, descriptor). */
|
|
52
62
|
export class TuiPluginHostRuntime extends Service {
|
|
53
63
|
/** Runtime generation id (C-050): fresh per activation of this row. */
|
|
54
64
|
get generationId() { return hostStateFor(this).generationId; }
|
|
55
|
-
/**
|
|
56
|
-
|
|
65
|
+
/** Caller-safe grant facade; the internal full-parameter store stays
|
|
66
|
+
* host-only (see getHostGrantStore in ./host-grants.js). */
|
|
67
|
+
get grants() {
|
|
68
|
+
const raw = hostStateFor(this).grants;
|
|
69
|
+
const runtime = this;
|
|
70
|
+
return Object.freeze({
|
|
71
|
+
allows(pluginCtx, permission, scope) {
|
|
72
|
+
const host = hostContextFor(runtime);
|
|
73
|
+
const caller = assertActivationContext(host, pluginCtx);
|
|
74
|
+
const identity = requireComponentIdentity(caller);
|
|
75
|
+
return raw.allows({ componentId: identity.componentId, activationId: identity.activationId }, permission, scope);
|
|
76
|
+
},
|
|
77
|
+
defaultOf: permission => raw.defaultOf(permission),
|
|
78
|
+
knownPermissions: () => raw.knownPermissions(),
|
|
79
|
+
onChange(pluginCtx, listener) {
|
|
80
|
+
// Guard before any side effect: in passive/replay shadow this
|
|
81
|
+
// subscribe-class watcher must be refused before the file poller is
|
|
82
|
+
// started or the listener is retained.
|
|
83
|
+
runtime.assertEffect('host.grants.subscribe');
|
|
84
|
+
const host = hostContextFor(runtime);
|
|
85
|
+
const caller = assertActivationContext(host, pluginCtx);
|
|
86
|
+
requireComponentIdentity(caller);
|
|
87
|
+
const stop = raw.onChange?.(listener);
|
|
88
|
+
if (stop !== undefined)
|
|
89
|
+
bindCallerEffect(caller, stop);
|
|
90
|
+
return stop;
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** Read-only DecisionEvents feature probe. Returns only the event names
|
|
95
|
+
* whose guard is installed in this composition. */
|
|
96
|
+
probeDecisionEvents() {
|
|
97
|
+
this.assertEffect('host.decision.probe');
|
|
98
|
+
return probeDecisionEventFeatures(hostContextFor(this));
|
|
99
|
+
}
|
|
57
100
|
constructor(ctx) {
|
|
58
101
|
super(ctx, 'tuiPluginHost');
|
|
59
|
-
|
|
102
|
+
const runtime = adapterRuntimeFor(ctx);
|
|
103
|
+
const rawGrants = Object.freeze(readGrantStore(undefined, undefined, runtime));
|
|
104
|
+
let signalInitialKernelRefreshStarted;
|
|
105
|
+
const initialKernelRefreshStarted = new Promise(resolve => {
|
|
106
|
+
signalInitialKernelRefreshStarted = resolve;
|
|
107
|
+
});
|
|
108
|
+
const state = {
|
|
60
109
|
hostContext: compositionRoot(ctx),
|
|
61
110
|
generationId: randomUUID(),
|
|
62
|
-
grants:
|
|
111
|
+
grants: rawGrants,
|
|
112
|
+
runtime,
|
|
63
113
|
descriptorBuild: undefined,
|
|
64
114
|
descriptorTopology: undefined,
|
|
65
|
-
|
|
115
|
+
kernelRuntime: undefined,
|
|
116
|
+
descriptorBuildInProgress: false,
|
|
117
|
+
kernelStarted: false,
|
|
118
|
+
initialKernelRefresh: undefined,
|
|
119
|
+
initialKernelRefreshStarted,
|
|
120
|
+
signalInitialKernelRefreshStarted,
|
|
121
|
+
initialKernelRefreshResult: Object.freeze({ status: 'pending' }),
|
|
122
|
+
};
|
|
123
|
+
hostStates.set(this, state);
|
|
124
|
+
registerCommandLiveProbe(this, () => this.#runReversibleCommandProbe());
|
|
125
|
+
// Legacy mode is intentionally inert: the new KernelRuntime (and therefore
|
|
126
|
+
// any real reversible probe / registration / temporary storage) is only
|
|
127
|
+
// created for explicit non-legacy modes. New mode runs the real live
|
|
128
|
+
// refresh; passive/replay production modes stay read-only/diagnostic.
|
|
129
|
+
if (state.runtime.mode !== 'legacy') {
|
|
130
|
+
const kernelRuntime = new KernelRuntime({
|
|
131
|
+
context: state.hostContext,
|
|
132
|
+
mode: state.runtime.mode,
|
|
133
|
+
slices: state.runtime.slices,
|
|
134
|
+
generationId: state.generationId,
|
|
135
|
+
kernelSlices: ADAPTER_KERNEL_SLICES,
|
|
136
|
+
drivers: [hostDescriptorDriver],
|
|
137
|
+
});
|
|
138
|
+
state.kernelRuntime = kernelRuntime;
|
|
139
|
+
// Defer until after the apply() body has mounted storage/observer
|
|
140
|
+
// siblings, so the live refresh observes the complete production
|
|
141
|
+
// topology.
|
|
142
|
+
setTimeout(() => this.startKernelRuntime(), 0);
|
|
143
|
+
}
|
|
144
|
+
bindHostGrantStore(concreteService(this), rawGrants);
|
|
66
145
|
// The host row may be mounted without the extensions row or a channel;
|
|
67
146
|
// decision registration must remain mediated in that degraded topology.
|
|
68
|
-
installDecisionGuard(ctx,
|
|
147
|
+
installDecisionGuard(ctx, rawGrants);
|
|
69
148
|
const violations = this.selfCheck();
|
|
70
149
|
if (violations.length > 0) {
|
|
71
|
-
ctx.logger.warn(`dsh-tui: vendored
|
|
150
|
+
ctx.logger.warn(`dsh-tui: vendored adapter registry failed self-check (${violations.length} violation(s)); ` +
|
|
72
151
|
`affected contracts are dropped from the Host Descriptor fail-closed: ${violations.join(' | ')}`);
|
|
73
152
|
}
|
|
74
153
|
}
|
|
154
|
+
/** @internal Start the Kernel after the whole plugin-host row (including
|
|
155
|
+
* sibling storage/observer services) is mounted. Called from `apply()`; not
|
|
156
|
+
* part of the public plugin surface. */
|
|
157
|
+
startKernelRuntime() {
|
|
158
|
+
const state = hostStateFor(this);
|
|
159
|
+
const kernelRuntime = state.kernelRuntime;
|
|
160
|
+
if (kernelRuntime === undefined || state.kernelStarted)
|
|
161
|
+
return;
|
|
162
|
+
state.kernelStarted = true;
|
|
163
|
+
// The kernel refresh/mount runs in the host root capability, never in a
|
|
164
|
+
// plugin activation. This lets reversible probes use the real commands
|
|
165
|
+
// service (which may register root-scoped effects during execution)
|
|
166
|
+
// without being denied by the plugin/root boundary.
|
|
167
|
+
withHostRootCapability(() => {
|
|
168
|
+
if (state.runtime.mode !== 'passive-shadow' && state.runtime.mode !== 'replay-shadow') {
|
|
169
|
+
// Keep the initial asynchronous verification owned by this host row.
|
|
170
|
+
// New-mode publication/admission remains fail-closed until it settles;
|
|
171
|
+
// the adapter-only test accessor below exposes its outcome without
|
|
172
|
+
// leaking Kernel controls into the public plugin surface.
|
|
173
|
+
state.initialKernelRefresh = kernelRuntime.refresh()
|
|
174
|
+
.then(() => {
|
|
175
|
+
const status = kernelRuntime.refreshStatus();
|
|
176
|
+
const error = status === 'failed' ? kernelRuntime.diagnosticSnapshot().refreshError : undefined;
|
|
177
|
+
const result = Object.freeze({
|
|
178
|
+
status,
|
|
179
|
+
...(error === undefined ? {} : { error }),
|
|
180
|
+
});
|
|
181
|
+
state.initialKernelRefreshResult = result;
|
|
182
|
+
state.descriptorBuild = undefined;
|
|
183
|
+
state.descriptorTopology = undefined;
|
|
184
|
+
return result;
|
|
185
|
+
})
|
|
186
|
+
.catch((error) => {
|
|
187
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
188
|
+
const result = Object.freeze({ status: kernelRuntime.refreshStatus(), error: message });
|
|
189
|
+
state.initialKernelRefreshResult = result;
|
|
190
|
+
this.ctx.logger.warn(`dsh-tui: kernel live refresh failed: ${message}`);
|
|
191
|
+
state.descriptorBuild = undefined;
|
|
192
|
+
state.descriptorTopology = undefined;
|
|
193
|
+
return result;
|
|
194
|
+
});
|
|
195
|
+
state.signalInitialKernelRefreshStarted();
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// Shadow modes intentionally do not run an initial live refresh on a
|
|
199
|
+
// real host. Make the host-owned test seam settle explicitly instead
|
|
200
|
+
// of leaving a diagnostic waiter pending forever.
|
|
201
|
+
const result = Object.freeze({
|
|
202
|
+
status: 'skipped',
|
|
203
|
+
error: `${state.runtime.mode}: initial live refresh is not run`,
|
|
204
|
+
});
|
|
205
|
+
state.initialKernelRefreshResult = result;
|
|
206
|
+
state.initialKernelRefresh = Promise.resolve(result);
|
|
207
|
+
state.signalInitialKernelRefreshStarted();
|
|
208
|
+
}
|
|
209
|
+
// Production mount/dispose closure: mount the kernel drivers now and
|
|
210
|
+
// dispose them when the plugin-host service's owning fiber unloads.
|
|
211
|
+
void kernelRuntime.mount().catch((error) => {
|
|
212
|
+
this.ctx.logger.warn(`dsh-tui: kernel driver mount failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
213
|
+
});
|
|
214
|
+
this.ctx.effect(() => () => {
|
|
215
|
+
kernelRuntime.dispose();
|
|
216
|
+
const current = hostStateFor(this);
|
|
217
|
+
if (current.kernelRuntime === kernelRuntime)
|
|
218
|
+
current.kernelRuntime = undefined;
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
assertEffect(capability) {
|
|
223
|
+
const runtime = hostStateFor(this).runtime;
|
|
224
|
+
assertCapabilityShadowPolicy(capability, runtime.mode, runtime.slices);
|
|
225
|
+
}
|
|
75
226
|
/**
|
|
76
227
|
* The C-010 Host Descriptor, built lazily and cached while the
|
|
77
228
|
* runtime-dependent commands capability remains unchanged.
|
|
78
229
|
*/
|
|
79
230
|
hostDescriptor() {
|
|
231
|
+
this.assertEffect('host.descriptor');
|
|
80
232
|
return this.build().descriptor;
|
|
81
233
|
}
|
|
82
234
|
/** The full build result (descriptor + dropped coordinates + warnings). */
|
|
83
235
|
describe() {
|
|
236
|
+
this.assertEffect('host.descriptor');
|
|
84
237
|
return this.build();
|
|
85
238
|
}
|
|
86
239
|
build() {
|
|
240
|
+
const state = hostStateFor(this);
|
|
241
|
+
if (state.descriptorBuildInProgress) {
|
|
242
|
+
// Reentrant read from kernel detect/driver.detect(); return a
|
|
243
|
+
// fail-closed but schema-valid build to break the cycle.
|
|
244
|
+
return state.descriptorBuild ?? buildHostDescriptor({ generationId: state.generationId });
|
|
245
|
+
}
|
|
246
|
+
state.descriptorBuildInProgress = true;
|
|
247
|
+
try {
|
|
248
|
+
return this.buildUnsafe();
|
|
249
|
+
}
|
|
250
|
+
finally {
|
|
251
|
+
state.descriptorBuildInProgress = false;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
buildUnsafe() {
|
|
87
255
|
const state = hostStateFor(this);
|
|
88
256
|
const host = state.hostContext;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
257
|
+
const kernel = state.kernelRuntime;
|
|
258
|
+
if (kernel !== undefined && state.kernelStarted && kernel.isRefreshCompleted()) {
|
|
259
|
+
// Always refresh the sync topology first; the Kernel preserves already
|
|
260
|
+
// live capabilities as long as their critical method evidence remains,
|
|
261
|
+
// so this does not regress a completed live refresh back to staged while
|
|
262
|
+
// still picking up dynamic mounts/markers (e.g. DecisionEvents).
|
|
263
|
+
kernel.detect();
|
|
264
|
+
const build = kernel.descriptorBuild();
|
|
265
|
+
if (host.get('commands') === undefined) {
|
|
266
|
+
host.logger.warn('dsh-tui: host descriptor: commands.dsh/v1alpha1#Command excluded — the commands service is not mounted on this context');
|
|
267
|
+
}
|
|
268
|
+
if (host.get('tuiPluginStorage') === undefined) {
|
|
269
|
+
host.logger.warn('dsh-tui: host descriptor: storage.dsh/v1alpha1#LocalStorage excluded — the tuiPluginStorage service is not mounted on this context');
|
|
270
|
+
}
|
|
271
|
+
if (host.get('tuiMessageObserver') === undefined) {
|
|
272
|
+
host.logger.warn('dsh-tui: host descriptor: messages.dsh/v1alpha1#MessageObserver excluded — the tuiMessageObserver service is not mounted on this context');
|
|
273
|
+
}
|
|
274
|
+
for (const warning of build.warnings) {
|
|
275
|
+
host.logger.warn(`dsh-tui: host descriptor: ${warning}`);
|
|
276
|
+
}
|
|
277
|
+
return build;
|
|
278
|
+
}
|
|
279
|
+
// Only an explicitly legacy composition may publish mounted-service
|
|
280
|
+
// compatibility claims. Shadow, pending, failed and disposed Kernels have
|
|
281
|
+
// no completed live evidence and must never fall through to that path.
|
|
282
|
+
if (state.runtime.mode !== 'legacy') {
|
|
283
|
+
return buildHostDescriptor({ generationId: state.generationId });
|
|
284
|
+
}
|
|
285
|
+
// This is the explicit legacy-compatibility path: the old mounted-service
|
|
286
|
+
// topology is declared with `buildLegacyHostDescriptor`, which is separate
|
|
287
|
+
// from the live-only new-Kernel descriptor and does not run any reversible
|
|
288
|
+
// probe or load the new Kernel.
|
|
92
289
|
const commandsMounted = host.get('commands') !== undefined;
|
|
93
290
|
const storageMounted = host.get('tuiPluginStorage') !== undefined;
|
|
94
291
|
const observerMounted = host.get('tuiMessageObserver') !== undefined;
|
|
95
|
-
const
|
|
292
|
+
const decisionEventsMounted = probeDecisionEventFeatures(host).length > 0;
|
|
293
|
+
const topology = `${Number(commandsMounted)}:${Number(storageMounted)}:${Number(observerMounted)}:${Number(decisionEventsMounted)}`;
|
|
96
294
|
if (state.descriptorBuild === undefined || state.descriptorTopology !== topology) {
|
|
97
295
|
const supported = HOST_SUPPORTED_CONTRACTS.filter(contract => {
|
|
98
296
|
if (contract.kind === 'Command')
|
|
@@ -101,23 +299,30 @@ export class TuiPluginHostRuntime extends Service {
|
|
|
101
299
|
return storageMounted;
|
|
102
300
|
if (contract.kind === 'MessageObserver')
|
|
103
301
|
return observerMounted;
|
|
104
|
-
|
|
302
|
+
if (contract.kind === 'DecisionEvents')
|
|
303
|
+
return decisionEventsMounted;
|
|
304
|
+
return false;
|
|
305
|
+
});
|
|
306
|
+
state.descriptorBuild = buildLegacyHostDescriptor({
|
|
307
|
+
generationId: state.generationId,
|
|
308
|
+
headless: false,
|
|
309
|
+
supported,
|
|
310
|
+
decisionFeatures: probeDecisionEventFeatures(host),
|
|
105
311
|
});
|
|
106
|
-
state.descriptorBuild = buildHostDescriptor({ generationId: state.generationId, supported });
|
|
107
312
|
state.descriptorTopology = topology;
|
|
108
|
-
if (!commandsMounted) {
|
|
109
|
-
host.logger.warn('dsh-tui: host descriptor: commands.dsh/v1alpha1#Command excluded — the commands service is not mounted on this context');
|
|
110
|
-
}
|
|
111
|
-
if (!storageMounted) {
|
|
112
|
-
host.logger.warn('dsh-tui: host descriptor: storage.dsh/v1alpha1#LocalStorage excluded — the tuiPluginStorage service is not mounted on this context');
|
|
113
|
-
}
|
|
114
|
-
if (!observerMounted) {
|
|
115
|
-
host.logger.warn('dsh-tui: host descriptor: messages.dsh/v1alpha1#MessageObserver excluded — the tuiMessageObserver service is not mounted on this context');
|
|
116
|
-
}
|
|
117
313
|
for (const warning of state.descriptorBuild.warnings) {
|
|
118
314
|
host.logger.warn(`dsh-tui: host descriptor: ${warning}`);
|
|
119
315
|
}
|
|
120
316
|
}
|
|
317
|
+
if (host.get('commands') === undefined) {
|
|
318
|
+
host.logger.warn('dsh-tui: host descriptor: commands.dsh/v1alpha1#Command excluded — the commands service is not mounted on this context');
|
|
319
|
+
}
|
|
320
|
+
if (host.get('tuiPluginStorage') === undefined) {
|
|
321
|
+
host.logger.warn('dsh-tui: host descriptor: storage.dsh/v1alpha1#LocalStorage excluded — the tuiPluginStorage service is not mounted on this context');
|
|
322
|
+
}
|
|
323
|
+
if (host.get('tuiMessageObserver') === undefined) {
|
|
324
|
+
host.logger.warn('dsh-tui: host descriptor: messages.dsh/v1alpha1#MessageObserver excluded — the tuiMessageObserver service is not mounted on this context');
|
|
325
|
+
}
|
|
121
326
|
return state.descriptorBuild;
|
|
122
327
|
}
|
|
123
328
|
/**
|
|
@@ -134,18 +339,30 @@ export class TuiPluginHostRuntime extends Service {
|
|
|
134
339
|
void options;
|
|
135
340
|
throw new Error('dsh-tui: admission is host-owned; the loader must use its admission capability');
|
|
136
341
|
}
|
|
137
|
-
/** @internal Host loader entry; the unexported token prevents
|
|
342
|
+
/** @internal Host loader entry; the unexported production token prevents
|
|
343
|
+
* proxy calls. The test token is only reachable from the test-only adapter
|
|
344
|
+
* helper, never from the package's production admission accessor. */
|
|
138
345
|
admitInternal(pluginCtx, source, options = {}, token) {
|
|
139
|
-
if (token !== HOST_ADMISSION_TOKEN) {
|
|
346
|
+
if (token !== HOST_ADMISSION_TOKEN && token !== HOST_ADMISSION_TEST_TOKEN) {
|
|
140
347
|
throw new Error('dsh-tui: admission capability is host-owned');
|
|
141
348
|
}
|
|
349
|
+
this.assertEffect('host.admission');
|
|
142
350
|
const host = hostContextFor(this);
|
|
143
351
|
const caller = assertActivationContext(host, pluginCtx);
|
|
352
|
+
const callerFiber = activationFiber(caller);
|
|
353
|
+
if (callerFiber === undefined) {
|
|
354
|
+
throw new Error('dsh-tui: admission requires an owning Cordis activation fiber');
|
|
355
|
+
}
|
|
144
356
|
const manifest = parseManifest(source, { source: options.source });
|
|
145
|
-
// The host owns the activation instance identity.
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
|
|
357
|
+
// The host (not the caller) owns the activation instance identity.
|
|
358
|
+
// Production admission derives a stable opaque id from the Cordis
|
|
359
|
+
// activation fiber. The explicit test token is the only path that can
|
|
360
|
+
// supply a deterministic id, and it is never exported from the package
|
|
361
|
+
// production surface.
|
|
362
|
+
const activationId = token === HOST_ADMISSION_TEST_TOKEN
|
|
363
|
+
&& typeof options.activationId === 'string'
|
|
364
|
+
? options.activationId
|
|
365
|
+
: issueActivationId(callerFiber);
|
|
149
366
|
const data = loadSpecData();
|
|
150
367
|
if (data === undefined)
|
|
151
368
|
throw new Error('dsh-tui: admission profile is unavailable');
|
|
@@ -162,9 +379,20 @@ export class TuiPluginHostRuntime extends Service {
|
|
|
162
379
|
scope: request.scope,
|
|
163
380
|
granted: hostStateFor(this).grants.allows({ componentId: manifest.id, activationId }, request.name, request.scope),
|
|
164
381
|
}));
|
|
165
|
-
|
|
382
|
+
// Admission must rebuild through the same synchronous topology path as
|
|
383
|
+
// public descriptor publication. In particular, `build()` runs Kernel
|
|
384
|
+
// detection before reading its descriptor, so a DecisionEvents dispatch
|
|
385
|
+
// marker mounted between an async refresh and this activation is visible.
|
|
386
|
+
// New-mode remains fail-closed: without completed live evidence,
|
|
387
|
+
// `build()` returns the empty non-legacy descriptor rather than a legacy
|
|
388
|
+
// compatibility claim.
|
|
389
|
+
const admissionHost = this.build().descriptor;
|
|
390
|
+
const decision = negotiate(index, manifest, admissionHost, grants);
|
|
166
391
|
if (decision.decision !== 'compatible' && decision.decision !== 'compatible_degraded') {
|
|
167
|
-
|
|
392
|
+
const missing = 'missingRequired' in decision && decision.missingRequired !== undefined
|
|
393
|
+
? ` (${decision.missingRequired.join(', ')})`
|
|
394
|
+
: '';
|
|
395
|
+
throw new Error(`dsh-tui: Component ${manifest.id} admission ${decision.decision}: ${'reasonCode' in decision ? decision.reasonCode : 'incompatible'}${missing}`);
|
|
168
396
|
}
|
|
169
397
|
return bindComponentIdentity(caller, manifest, projection, activationId);
|
|
170
398
|
}
|
|
@@ -176,6 +404,7 @@ export class TuiPluginHostRuntime extends Service {
|
|
|
176
404
|
* the activation so deactivation cannot leave an effect behind.
|
|
177
405
|
*/
|
|
178
406
|
subscribeDecision(pluginCtx, event, listener, options = {}) {
|
|
407
|
+
this.assertEffect('host.decision.subscribe');
|
|
179
408
|
const host = hostContextFor(this);
|
|
180
409
|
const caller = assertActivationContext(host, pluginCtx);
|
|
181
410
|
assertCallerContext(this.ctx, caller, 'DecisionEvents.subscribe', this);
|
|
@@ -208,6 +437,7 @@ export class TuiPluginHostRuntime extends Service {
|
|
|
208
437
|
return release;
|
|
209
438
|
}
|
|
210
439
|
registerCommand(pluginCtx, contributionOrDefinition, explicitDefinition) {
|
|
440
|
+
this.assertEffect('host.commands.register');
|
|
211
441
|
const host = hostContextFor(this);
|
|
212
442
|
const caller = assertActivationContext(host, pluginCtx);
|
|
213
443
|
assertCallerContext(this.ctx, caller, 'commands.register', this);
|
|
@@ -287,12 +517,100 @@ export class TuiPluginHostRuntime extends Service {
|
|
|
287
517
|
}
|
|
288
518
|
};
|
|
289
519
|
}
|
|
520
|
+
/**
|
|
521
|
+
* Host-internal reversible Command live probe.
|
|
522
|
+
*
|
|
523
|
+
* This is the production host-side probe used by the Kernel driver. It
|
|
524
|
+
* registers a unique no-op command through the real dsh-commands service,
|
|
525
|
+
* resolves it, executes it against an in-memory fake session, and
|
|
526
|
+
* unregisters it in `finally`. It does not go through the public
|
|
527
|
+
* plugin-facing `registerCommand()` (which requires a verified Component
|
|
528
|
+
* activation), but it exercises the same contribution/invocation path that
|
|
529
|
+
* production commands use.
|
|
530
|
+
*
|
|
531
|
+
* This is an ECMAScript private method. It is reachable only through the
|
|
532
|
+
* host-only probe accessor registered in the constructor.
|
|
533
|
+
*/
|
|
534
|
+
async #runReversibleCommandProbe() {
|
|
535
|
+
this.assertEffect('host.commands.liveProbe');
|
|
536
|
+
const host = hostContextFor(this);
|
|
537
|
+
const commands = host.get('commands');
|
|
538
|
+
if (commands === undefined || typeof commands.register !== 'function') {
|
|
539
|
+
throw new Error('commands service is not mounted for reversible command probe');
|
|
540
|
+
}
|
|
541
|
+
const service = commands;
|
|
542
|
+
const name = `dsh_tui_live_probe_${randomUUID().replace(/-/g, '').slice(0, 12)}`;
|
|
543
|
+
const definition = {
|
|
544
|
+
name,
|
|
545
|
+
description: 'dsh-tui adapter reversible live probe',
|
|
546
|
+
handler: () => ({ kind: 'success', text: 'ok' }),
|
|
547
|
+
};
|
|
548
|
+
let dispose;
|
|
549
|
+
const events = [];
|
|
550
|
+
try {
|
|
551
|
+
dispose = service.register(definition);
|
|
552
|
+
if (service.find(undefined, name) === undefined) {
|
|
553
|
+
throw new Error('temporary command was not resolvable through find()');
|
|
554
|
+
}
|
|
555
|
+
const list = service.list(undefined);
|
|
556
|
+
if (!Array.isArray(list) || !list.some(entry => entry?.name === name)) {
|
|
557
|
+
throw new Error('temporary command was not visible through list()');
|
|
558
|
+
}
|
|
559
|
+
const fakeAgent = {
|
|
560
|
+
session: {
|
|
561
|
+
append(type, data) {
|
|
562
|
+
events.push([type, data]);
|
|
563
|
+
return true;
|
|
564
|
+
},
|
|
565
|
+
},
|
|
566
|
+
};
|
|
567
|
+
const COMMAND_PROBE_TIMEOUT_MS = 2_000;
|
|
568
|
+
let timer;
|
|
569
|
+
const abortController = new AbortController();
|
|
570
|
+
const execute = Promise.resolve().then(() => service.execute(fakeAgent, `/${name}`, [], abortController.signal));
|
|
571
|
+
// A timeout or early rejection must not leave a late rejection from
|
|
572
|
+
// execute as an unhandled rejection, and must abort the underlying
|
|
573
|
+
// command execution when the probe gives up.
|
|
574
|
+
void execute.catch(() => undefined);
|
|
575
|
+
const timeout = new Promise((_, reject) => {
|
|
576
|
+
timer = setTimeout(() => {
|
|
577
|
+
abortController.abort();
|
|
578
|
+
reject(new Error(`command live probe timed out after ${COMMAND_PROBE_TIMEOUT_MS}ms`));
|
|
579
|
+
}, COMMAND_PROBE_TIMEOUT_MS);
|
|
580
|
+
});
|
|
581
|
+
let result;
|
|
582
|
+
try {
|
|
583
|
+
result = await Promise.race([execute, timeout]);
|
|
584
|
+
}
|
|
585
|
+
catch (error) {
|
|
586
|
+
abortController.abort();
|
|
587
|
+
throw error;
|
|
588
|
+
}
|
|
589
|
+
finally {
|
|
590
|
+
if (timer !== undefined)
|
|
591
|
+
clearTimeout(timer);
|
|
592
|
+
}
|
|
593
|
+
if (result === undefined || result.result?.kind !== 'success') {
|
|
594
|
+
throw new Error('temporary command execute did not settle as success');
|
|
595
|
+
}
|
|
596
|
+
return Object.freeze({ ok: true, name, lifecycleAppends: events.length });
|
|
597
|
+
}
|
|
598
|
+
finally {
|
|
599
|
+
try {
|
|
600
|
+
dispose?.();
|
|
601
|
+
}
|
|
602
|
+
catch {
|
|
603
|
+
// Cleanup is best-effort; the commands service owns its registration.
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
}
|
|
290
607
|
/**
|
|
291
608
|
* Vendored registry + contract-profile self-check (C-020 definition/profile
|
|
292
609
|
* pins, C-040 ten-point completeness, coordinate/permission parity). Empty =
|
|
293
610
|
* clean; violations are strings, never thrown.
|
|
294
611
|
*/
|
|
295
612
|
selfCheck() {
|
|
613
|
+
this.assertEffect('host.diagnostics');
|
|
296
614
|
const data = loadSpecData();
|
|
297
615
|
if (data === undefined)
|
|
298
616
|
return ['vendored spec data unavailable (dsh-ecosystem-spec/)'];
|
|
@@ -300,6 +618,17 @@ export class TuiPluginHostRuntime extends Service {
|
|
|
300
618
|
}
|
|
301
619
|
}
|
|
302
620
|
const HOST_ADMISSION_TOKEN = Symbol('dsh-tui.host-admission');
|
|
621
|
+
const HOST_ADMISSION_TEST_TOKEN = Symbol('dsh-tui.host-admission-test');
|
|
622
|
+
/** Per-activation fiber -> host-issued opaque activation id (Cordis activation scope). */
|
|
623
|
+
const activationFiberIds = new WeakMap();
|
|
624
|
+
function issueActivationId(fiber) {
|
|
625
|
+
let id = activationFiberIds.get(fiber);
|
|
626
|
+
if (id === undefined) {
|
|
627
|
+
id = randomUUID();
|
|
628
|
+
activationFiberIds.set(fiber, id);
|
|
629
|
+
}
|
|
630
|
+
return id;
|
|
631
|
+
}
|
|
303
632
|
const hostStates = new WeakMap();
|
|
304
633
|
function hostStateFor(runtime) {
|
|
305
634
|
const state = hostStates.get(concreteService(runtime));
|
|
@@ -310,6 +639,41 @@ function hostStateFor(runtime) {
|
|
|
310
639
|
function hostContextFor(runtime) {
|
|
311
640
|
return hostStateFor(runtime).hostContext;
|
|
312
641
|
}
|
|
642
|
+
export function getHostInitialKernelRefreshForTest(runtime) {
|
|
643
|
+
if (runtime === undefined)
|
|
644
|
+
return undefined;
|
|
645
|
+
try {
|
|
646
|
+
const concrete = concreteService(runtime);
|
|
647
|
+
return Object.freeze({
|
|
648
|
+
result: () => hostStateFor(concrete).initialKernelRefreshResult,
|
|
649
|
+
awaitResult: async () => {
|
|
650
|
+
const state = hostStateFor(concrete);
|
|
651
|
+
await state.initialKernelRefreshStarted;
|
|
652
|
+
const refresh = state.initialKernelRefresh;
|
|
653
|
+
if (refresh === undefined) {
|
|
654
|
+
throw new Error('dsh-tui: host initial kernel refresh was not started');
|
|
655
|
+
}
|
|
656
|
+
return refresh;
|
|
657
|
+
},
|
|
658
|
+
});
|
|
659
|
+
}
|
|
660
|
+
catch {
|
|
661
|
+
return undefined;
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
export function getHostAdmissionForTest(runtime) {
|
|
665
|
+
if (runtime === undefined)
|
|
666
|
+
return undefined;
|
|
667
|
+
try {
|
|
668
|
+
const concrete = concreteService(runtime);
|
|
669
|
+
return {
|
|
670
|
+
admit: (pluginCtx, source, options = {}) => concrete.admitInternal(pluginCtx, source, options, HOST_ADMISSION_TEST_TOKEN),
|
|
671
|
+
};
|
|
672
|
+
}
|
|
673
|
+
catch {
|
|
674
|
+
return undefined;
|
|
675
|
+
}
|
|
676
|
+
}
|
|
313
677
|
export function getHostAdmission(runtime) {
|
|
314
678
|
if (runtime === undefined)
|
|
315
679
|
return undefined;
|
|
@@ -323,6 +687,35 @@ export function getHostAdmission(runtime) {
|
|
|
323
687
|
return undefined;
|
|
324
688
|
}
|
|
325
689
|
}
|
|
690
|
+
/**
|
|
691
|
+
* Host-only accessor for the new Kernel HostFacade. Deliberately omitted from
|
|
692
|
+
* the public plugin-host export: HostFacade is an internal composition entry,
|
|
693
|
+
* not an external plugin API.
|
|
694
|
+
*
|
|
695
|
+
* @internal P2: the facade is now backed by the KernelRuntime's unified
|
|
696
|
+
* evidence snapshot (driver detect + live verification), not by a legacy
|
|
697
|
+
* describe() wrapper. It remains read-only and shadow-guarded.
|
|
698
|
+
*/
|
|
699
|
+
export function getHostFacade(runtime) {
|
|
700
|
+
if (runtime === undefined)
|
|
701
|
+
return undefined;
|
|
702
|
+
try {
|
|
703
|
+
const concrete = concreteService(runtime);
|
|
704
|
+
const state = hostStateFor(concrete);
|
|
705
|
+
if (state.kernelRuntime !== undefined) {
|
|
706
|
+
return state.kernelRuntime.facade();
|
|
707
|
+
}
|
|
708
|
+
// Legacy fallback for bare/test compositions without a KernelRuntime.
|
|
709
|
+
const legacyFacade = facadeFromLegacy({
|
|
710
|
+
generationId: state.generationId,
|
|
711
|
+
describe: () => concrete.describe(),
|
|
712
|
+
});
|
|
713
|
+
return createShadowGuardedHostFacade({ descriptor: legacyFacade.descriptor }, state.runtime.mode);
|
|
714
|
+
}
|
|
715
|
+
catch {
|
|
716
|
+
return undefined;
|
|
717
|
+
}
|
|
718
|
+
}
|
|
326
719
|
/** A mediated capability must be bound to a live non-root activation in the
|
|
327
720
|
* same Cordis composition as the host row. In particular, accepting
|
|
328
721
|
* `ctx.root` would leave identity, commands, or handlers alive after the
|
|
@@ -362,4 +755,8 @@ export function apply(ctx) {
|
|
|
362
755
|
// messages.observe (C-042): the grant-gated observation broker the
|
|
363
756
|
// channel publishes mapped session events into.
|
|
364
757
|
ctx.plugin(TuiMessageObserverRuntime);
|
|
758
|
+
// All sibling services are mounted now; start the kernel live refresh /
|
|
759
|
+
// driver mount so probes observe the complete production topology.
|
|
760
|
+
const host = ctx.get('tuiPluginHost');
|
|
761
|
+
host?.startKernelRuntime();
|
|
365
762
|
}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* - privacyClass: sensitive — keys AND values are never logged.
|
|
34
34
|
*/
|
|
35
35
|
import { Context, Service } from '@deepseek-ai/cordis';
|
|
36
|
-
import { type GrantStore } from '
|
|
36
|
+
import { type GrantStore } from '../adapter/standard/grants.js';
|
|
37
37
|
import type { TuiEffectLedgerRuntime } from './effect-ledger.js';
|
|
38
38
|
/** Quota: max distinct keys per namespace. */
|
|
39
39
|
export declare const STORAGE_MAX_KEYS = 256;
|
|
@@ -85,6 +85,7 @@ export declare function storageFileName(plugin: string): string;
|
|
|
85
85
|
* (normal path) or a private read otherwise (bare mounts in tests).
|
|
86
86
|
*/
|
|
87
87
|
export declare class TuiPluginStorageRuntime extends Service {
|
|
88
|
+
#private;
|
|
88
89
|
constructor(ctx: Context, options?: {
|
|
89
90
|
dir?: string;
|
|
90
91
|
grants?: GrantStore;
|
|
@@ -97,6 +98,15 @@ export declare class TuiPluginStorageRuntime extends Service {
|
|
|
97
98
|
private grants;
|
|
98
99
|
/** Optional observability; a bare mount (tests) simply records nothing. */
|
|
99
100
|
private ledger;
|
|
101
|
+
/**
|
|
102
|
+
* Host-internal read-only diagnostic probe. Never opens a namespace, never
|
|
103
|
+
* writes to disk; it only confirms the mounted storage runtime is reachable.
|
|
104
|
+
*/
|
|
105
|
+
probeDiagnostic(): {
|
|
106
|
+
service: 'tuiPluginStorage';
|
|
107
|
+
ok: true;
|
|
108
|
+
dir: string;
|
|
109
|
+
};
|
|
100
110
|
/**
|
|
101
111
|
* Open the caller's private namespace. Identity = the PASSED context's
|
|
102
112
|
* verified Component identity (no way to name another plugin). The handle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-storage.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;
|
|
1
|
+
{"version":3,"file":"plugin-storage.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/plugin-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAMH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAkBtD,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAGhE,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,MAAM,CAAA;AACnC,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,QAAa,CAAA;AAC3C,mCAAmC;AACnC,eAAO,MAAM,sBAAsB,MAAM,CAAA;AAEzC,MAAM,MAAM,sBAAsB,GAC9B,wBAAwB,GACxB,aAAa,GACb,eAAe,GACf,gBAAgB,GAChB,qBAAqB,CAAA;AAEzB,iEAAiE;AACjE,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;gBACzB,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM;CAK1D;AAoBD,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;IAC/D,GAAG,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAA;KAAE,CAAC,CAAA;IACtE,MAAM,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAC9D;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,gBAAgB,EAAE,uBAAuB,CAAA;KAC1C;CACF;AAED,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,mBAAmB,CAAA;AAElD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGtD;AAgID;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,OAAO;;gBACtC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,UAAU,CAAC;QAAC,MAAM,CAAC,EAAE,sBAAsB,CAAA;KAAO;IAkB9G;;;gDAG4C;IAC5C,OAAO,CAAC,MAAM;IAKd,2EAA2E;IAC3E,OAAO,CAAC,MAAM;IAKd;;;OAGG;IACH,eAAe,IAAI;QAAE,OAAO,EAAE,kBAAkB,CAAC;QAAC,EAAE,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IA4FzE;;;;;OAKG;IACH,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,gBAAgB;CAyN3C"}
|