@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
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { t } from '../../i18n.js';
|
|
2
|
+
import { modeDisplayName } from '../../sessionModes.js';
|
|
3
|
+
import { assertShadowPolicy } from '../../adapter/kernel/runtime.js';
|
|
4
|
+
import { snapshotLiveSessionEvents } from '../compat/liveSession.js';
|
|
5
|
+
/** Durable session-mode folds and transitions. Construction is inert; root wires it after state construction. */
|
|
6
|
+
export function createModeActions(ctx, state, deps) {
|
|
7
|
+
const { owner, runtime, binding, sessionModes, commandService, executeRegistryCommand, notify } = deps;
|
|
8
|
+
const current = (capture) => owner.current() && binding.isCurrent(capture);
|
|
9
|
+
const capturedSession = (capture) => capture.agent.session;
|
|
10
|
+
// Session-mode folds: last-wins projections over the session log. The
|
|
11
|
+
// event types are registered by dsh-plan-mode / dsh-sandbox-policy /
|
|
12
|
+
// dsh-user-approval and are NOT in this package's typed SessionEvent
|
|
13
|
+
// union, so they are matched by name through casts — the same pattern as
|
|
14
|
+
// `agent-preset/selected` in renderEvent and the goal projection above.
|
|
15
|
+
const foldPlanActive = (events) => {
|
|
16
|
+
let active = false;
|
|
17
|
+
for (const event of events) {
|
|
18
|
+
if (event.type === 'plan/mode') {
|
|
19
|
+
active = event.data.active === true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return active;
|
|
23
|
+
};
|
|
24
|
+
const foldSandboxMode = (events) => {
|
|
25
|
+
let mode;
|
|
26
|
+
for (const event of events) {
|
|
27
|
+
if (event.type === 'sandbox/mode') {
|
|
28
|
+
const value = event.data.mode;
|
|
29
|
+
if (typeof value === 'string')
|
|
30
|
+
mode = value;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return mode;
|
|
34
|
+
};
|
|
35
|
+
const foldApprovalPolicy = (events) => {
|
|
36
|
+
let policy;
|
|
37
|
+
for (const event of events) {
|
|
38
|
+
if (event.type === 'approval/policy') {
|
|
39
|
+
const value = event.data.policy;
|
|
40
|
+
if (typeof value === 'string')
|
|
41
|
+
policy = value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return policy;
|
|
45
|
+
};
|
|
46
|
+
/** First configured mode whose declared atoms all match the folds;
|
|
47
|
+
* undeclared atoms are wildcards; no match → index 0 (the base mode).
|
|
48
|
+
* Matching is exact: a fresh session has no `approval/policy` event, so
|
|
49
|
+
* a mode declaring `approval: 'ask'` never falsely matches it. */
|
|
50
|
+
const deriveModeIndex = (events) => {
|
|
51
|
+
const index = sessionModes.findIndex(spec => (spec.plan === undefined || foldPlanActive(events) === spec.plan) &&
|
|
52
|
+
(spec.sandbox === undefined || foldSandboxMode(events) === spec.sandbox) &&
|
|
53
|
+
(spec.approval === undefined || foldApprovalPolicy(events) === spec.approval));
|
|
54
|
+
return index >= 0 ? index : 0;
|
|
55
|
+
};
|
|
56
|
+
/** Re-derive the current mode from the live session log (boot, every
|
|
57
|
+
* agent re-bind, and after mode-affecting session events). */
|
|
58
|
+
const refreshMode = () => {
|
|
59
|
+
state.modeIndex = deriveModeIndex(snapshotLiveSessionEvents(binding.agent.session));
|
|
60
|
+
state.mode = sessionModes[state.modeIndex];
|
|
61
|
+
};
|
|
62
|
+
// Session.append rejects observer reentry; restore after publication
|
|
63
|
+
// unwinds. These are channel-scoped so a disposed/recreated Channel cannot
|
|
64
|
+
// inherit deferred work from a former owner.
|
|
65
|
+
const pendingPlanExitRestores = new Map();
|
|
66
|
+
const prePlanModes = new WeakMap();
|
|
67
|
+
// An in-turn /plan off commits at pre-step, after the command has returned.
|
|
68
|
+
const explicitPlanExits = new WeakSet();
|
|
69
|
+
const modePermissions = (events) => {
|
|
70
|
+
const sandbox = foldSandboxMode(events);
|
|
71
|
+
const approval = foldApprovalPolicy(events);
|
|
72
|
+
return {
|
|
73
|
+
id: 'restore',
|
|
74
|
+
...(sandbox === 'read-only' || sandbox === 'workspace-write' || sandbox === 'danger-full-access'
|
|
75
|
+
? { sandbox } : {}),
|
|
76
|
+
...(approval === 'ask' || approval === 'never' ? { approval } : {}),
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
/** Recover a resumed plan's snapshot before /plan ran, not before its
|
|
80
|
+
* deferred plan/mode event. Unknown historical atoms stay untouched. */
|
|
81
|
+
const prePlanModeSpec = (log) => {
|
|
82
|
+
let active = false;
|
|
83
|
+
let start = -1;
|
|
84
|
+
let command;
|
|
85
|
+
for (let index = 0; index < log.length - 1; index += 1) {
|
|
86
|
+
const event = log[index];
|
|
87
|
+
const type = event.type;
|
|
88
|
+
const data = event.data;
|
|
89
|
+
if (!active && type === 'command/run' && data.name === 'plan' && typeof data.args === 'string') {
|
|
90
|
+
if (data.args.trim() === 'off')
|
|
91
|
+
command = undefined;
|
|
92
|
+
else
|
|
93
|
+
command ??= { index, id: data.commandId };
|
|
94
|
+
}
|
|
95
|
+
if (type === 'command/done' && data.commandId === command?.id && data.kind !== 'success') {
|
|
96
|
+
command = undefined;
|
|
97
|
+
}
|
|
98
|
+
if (type === 'plan/mode') {
|
|
99
|
+
if (data.active === true && !active)
|
|
100
|
+
start = command?.index ?? index;
|
|
101
|
+
active = data.active === true;
|
|
102
|
+
command = undefined;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return active && start >= 0 ? modePermissions(log.slice(0, start)) : undefined;
|
|
106
|
+
};
|
|
107
|
+
const applyModeAtoms = (spec, capture) => {
|
|
108
|
+
if (!current(capture))
|
|
109
|
+
return;
|
|
110
|
+
const agent = capture.agent;
|
|
111
|
+
const session = capturedSession(capture);
|
|
112
|
+
// The durable sandbox override is one session event (dsh-sandbox-policy's
|
|
113
|
+
// own write path); the session/event arm picks it up immediately.
|
|
114
|
+
if (spec.sandbox !== undefined && foldSandboxMode(snapshotLiveSessionEvents(session)) !== spec.sandbox) {
|
|
115
|
+
;
|
|
116
|
+
session.append('sandbox/mode', { mode: spec.sandbox });
|
|
117
|
+
}
|
|
118
|
+
if (!current(capture))
|
|
119
|
+
return;
|
|
120
|
+
// Prefer the approval service (it narrates the switch to the model);
|
|
121
|
+
// the raw durable event is the fallback when it is unmounted.
|
|
122
|
+
if (spec.approval !== undefined && foldApprovalPolicy(snapshotLiveSessionEvents(session)) !== spec.approval) {
|
|
123
|
+
const approval = ctx.get('approval');
|
|
124
|
+
approval?.setPolicy(agent, spec.approval);
|
|
125
|
+
if (!current(capture))
|
|
126
|
+
return;
|
|
127
|
+
// The service may no-op when its configured default already matches.
|
|
128
|
+
if (foldApprovalPolicy(snapshotLiveSessionEvents(session)) !== spec.approval) {
|
|
129
|
+
;
|
|
130
|
+
session.append('approval/policy', { policy: spec.approval });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
/** Apply the configured atoms; an explicit exit owns its target mode. */
|
|
135
|
+
const applyMode = async (spec, capture = binding.capture()) => {
|
|
136
|
+
if (!current(capture))
|
|
137
|
+
return;
|
|
138
|
+
// This action writes durable session policy. The runtime snapshot comes
|
|
139
|
+
// from composition and is immutable for this Channel lifetime, so an
|
|
140
|
+
// observed plan exit cannot bypass the renderer/Port shadow guard.
|
|
141
|
+
assertShadowPolicy('mutate', runtime.mode);
|
|
142
|
+
const agent = capture.agent;
|
|
143
|
+
const session = capturedSession(capture);
|
|
144
|
+
pendingPlanExitRestores.delete(session);
|
|
145
|
+
const planMode = ctx.get('planMode');
|
|
146
|
+
const planActive = foldPlanActive(snapshotLiveSessionEvents(session));
|
|
147
|
+
// Reconcile a stale explicit-exit marker before acting. The marker only
|
|
148
|
+
// legitimately survives while a deferred exit awaits its plan/mode:false
|
|
149
|
+
// (foldPlanActive && pending === false). If plan is still logged active
|
|
150
|
+
// with no pending intent, that awaited event was abandoned (e.g. an
|
|
151
|
+
// aborted pre-step) — drop the orphan so it cannot suppress a later restore
|
|
152
|
+
// such as an approved exit_plan_mode.
|
|
153
|
+
if (planActive && planMode?.get?.(agent).pending === undefined) {
|
|
154
|
+
explicitPlanExits.delete(session);
|
|
155
|
+
}
|
|
156
|
+
if (spec.plan !== undefined && (planMode?.get?.(agent).pending ?? planActive) !== spec.plan) {
|
|
157
|
+
if (commandService?.find(agent, 'plan') === undefined) {
|
|
158
|
+
notify(t('mode-plan-unavailable'), { color: 'warning' });
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (spec.plan && !planActive && !prePlanModes.has(session)) {
|
|
162
|
+
const previous = modePermissions(snapshotLiveSessionEvents(session));
|
|
163
|
+
const sandbox = ctx.get('sandboxPolicy');
|
|
164
|
+
const approval = ctx.get('approval');
|
|
165
|
+
const base = previous.sandbox === undefined && previous.approval === undefined ? sessionModes[0] : undefined;
|
|
166
|
+
previous.sandbox ??= sandbox?.defaultMode ?? base?.sandbox;
|
|
167
|
+
previous.approval ??= approval?.effectivePolicy?.(session) ?? base?.approval;
|
|
168
|
+
prePlanModes.set(session, previous);
|
|
169
|
+
// Persist missing defaults before /plan, so resume can recover them.
|
|
170
|
+
applyModeAtoms(previous, capture);
|
|
171
|
+
}
|
|
172
|
+
if (!spec.plan)
|
|
173
|
+
explicitPlanExits.add(session);
|
|
174
|
+
try {
|
|
175
|
+
const text = await executeRegistryCommand('plan', spec.plan ? '' : ' off');
|
|
176
|
+
if (!current(capture) || session !== capturedSession(capture))
|
|
177
|
+
return;
|
|
178
|
+
if (text === undefined) {
|
|
179
|
+
notify(t('mode-plan-unavailable'), { color: 'warning' });
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
if (current(capture) && session === capturedSession(capture)) {
|
|
185
|
+
const pending = planMode?.get?.(agent).pending;
|
|
186
|
+
if (!foldPlanActive(snapshotLiveSessionEvents(session)) || pending !== false)
|
|
187
|
+
explicitPlanExits.delete(session);
|
|
188
|
+
if (!foldPlanActive(snapshotLiveSessionEvents(session)) && pending !== true)
|
|
189
|
+
prePlanModes.delete(session);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (!current(capture))
|
|
194
|
+
return;
|
|
195
|
+
applyModeAtoms(spec, capture);
|
|
196
|
+
if (!current(capture))
|
|
197
|
+
return;
|
|
198
|
+
refreshMode();
|
|
199
|
+
if (!current(capture))
|
|
200
|
+
return;
|
|
201
|
+
notify(t('mode-switched', { name: modeDisplayName(state.mode) }));
|
|
202
|
+
state.emit();
|
|
203
|
+
};
|
|
204
|
+
/** Shift+Tab: advance to the next configured session mode. Cycling starts
|
|
205
|
+
* from the mode DERIVED from the session log (never a stored index), so
|
|
206
|
+
* manual `/plan` use can never desync the cycle. */
|
|
207
|
+
const cycleMode = async () => {
|
|
208
|
+
const capture = binding.capture();
|
|
209
|
+
if (!current(capture))
|
|
210
|
+
return;
|
|
211
|
+
const index = deriveModeIndex(snapshotLiveSessionEvents(capturedSession(capture)));
|
|
212
|
+
await applyMode(sessionModes[(index + 1) % sessionModes.length], capture);
|
|
213
|
+
};
|
|
214
|
+
const onSessionEvent = (session, event) => {
|
|
215
|
+
const capture = binding.capture();
|
|
216
|
+
if (!current(capture) || session !== capturedSession(capture))
|
|
217
|
+
return;
|
|
218
|
+
const eventType = event.type;
|
|
219
|
+
if (eventType === 'plan/mode' || eventType === 'sandbox/mode' || eventType === 'approval/policy') {
|
|
220
|
+
refreshMode();
|
|
221
|
+
}
|
|
222
|
+
if (eventType !== 'plan/mode' || event.data.active !== false)
|
|
223
|
+
return;
|
|
224
|
+
const target = prePlanModes.get(session) ?? prePlanModeSpec(snapshotLiveSessionEvents(session));
|
|
225
|
+
prePlanModes.delete(session);
|
|
226
|
+
if (explicitPlanExits.delete(session) || target === undefined)
|
|
227
|
+
return;
|
|
228
|
+
const queued = pendingPlanExitRestores.has(session);
|
|
229
|
+
pendingPlanExitRestores.set(session, { capture, target });
|
|
230
|
+
if (queued)
|
|
231
|
+
return;
|
|
232
|
+
queueMicrotask(() => {
|
|
233
|
+
const restore = pendingPlanExitRestores.get(session);
|
|
234
|
+
pendingPlanExitRestores.delete(session);
|
|
235
|
+
if (restore === undefined || !current(restore.capture) || session !== capturedSession(restore.capture) || foldPlanActive(snapshotLiveSessionEvents(session)))
|
|
236
|
+
return;
|
|
237
|
+
// Shadow still projects the observed plan/mode event above, but never
|
|
238
|
+
// schedules a compensating sandbox/approval write into the real log.
|
|
239
|
+
if (runtime.mode === 'passive-shadow' || runtime.mode === 'replay-shadow')
|
|
240
|
+
return;
|
|
241
|
+
applyMode(restore.target, restore.capture).catch(error => {
|
|
242
|
+
ctx.logger.warn(`dsh-tui: plan-exit mode restore failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
};
|
|
246
|
+
return { refreshMode, cycleMode, applyMode, onSessionEvent };
|
|
247
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import { type SessionModeSpec } from '../../sessionModes.js';
|
|
3
|
+
import type { createChannelBinding } from './binding.js';
|
|
4
|
+
import { createModeActions } from './mode-actions.js';
|
|
5
|
+
import { type PermissionIdentity } from './mode-permission.js';
|
|
6
|
+
import type { PermissionModeRoster } from './mode-roster.js';
|
|
7
|
+
import type { ChannelState } from './types.js';
|
|
8
|
+
type Binding = ReturnType<typeof createChannelBinding>;
|
|
9
|
+
type ModeState = Pick<ChannelState, 'mode' | 'modeIndex' | 'emit'>;
|
|
10
|
+
type ModeCapture = ReturnType<Binding['capture']>;
|
|
11
|
+
/** The composition seam `createModeActions` owns; this factory forwards every
|
|
12
|
+
* member verbatim so both stay in lockstep. */
|
|
13
|
+
type BaseModeActionDeps = Parameters<typeof createModeActions>[2];
|
|
14
|
+
/**
|
|
15
|
+
* Permission-aware session-mode actions: main's mode transition (plan
|
|
16
|
+
* exclusivity, atom application, plan-exit restore) composed with the durable
|
|
17
|
+
* permission identity, on top of the refactored `createModeActions`.
|
|
18
|
+
*
|
|
19
|
+
* Construction is inert. The returned shape is a superset of
|
|
20
|
+
* `ReturnType<typeof createModeActions>`, so the composition root and
|
|
21
|
+
* `createBindingEvents` can consume it unchanged, plus
|
|
22
|
+
* `runPermissionPreset` for the public `ChannelUi` surface.
|
|
23
|
+
*/
|
|
24
|
+
export declare function createPermissionModeActions(ctx: Context, state: ModeState, deps: Pick<BaseModeActionDeps, 'owner' | 'runtime' | 'binding' | 'sessionModes' | 'commandService' | 'executeRegistryCommand' | 'notify'> & {
|
|
25
|
+
roster: PermissionModeRoster;
|
|
26
|
+
}): {
|
|
27
|
+
refreshMode(): void;
|
|
28
|
+
cycleMode(): Promise<void>;
|
|
29
|
+
applyMode(spec: SessionModeSpec, capture?: ModeCapture): Promise<void>;
|
|
30
|
+
onSessionEvent(session: unknown, event: unknown): void;
|
|
31
|
+
runPermissionPreset(name: string): Promise<boolean>;
|
|
32
|
+
permission: PermissionIdentity;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=mode-permission-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-permission-actions.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/mode-permission-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAkD,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACtD,KAAK,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC,CAAA;AAClE,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;AACjD;gDACgD;AAChD,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;AAmEjE;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,IAAI,CACR,kBAAkB,EAClB,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,QAAQ,CAC1G,GAAG;IAAE,MAAM,EAAE,oBAAoB,CAAA;CAAE,GACnC;IACD,WAAW,IAAI,IAAI,CAAA;IACnB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IACtD,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACnD,UAAU,EAAE,kBAAkB,CAAA;CAC/B,CAuHA"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { assertShadowPolicy } from '../../adapter/kernel/runtime.js';
|
|
2
|
+
import { t } from '../../i18n.js';
|
|
3
|
+
import { modeDisplayName } from '../../sessionModes.js';
|
|
4
|
+
import { snapshotLiveSessionEvents } from '../compat/liveSession.js';
|
|
5
|
+
import { createModeActions } from './mode-actions.js';
|
|
6
|
+
import { createPermissionIdentity, foldPermissionPreset } from './mode-permission.js';
|
|
7
|
+
// Atom folds mirrored from mode-actions.ts: `createModeActions` does not
|
|
8
|
+
// export them, and the permission-aware derive below must reproduce its
|
|
9
|
+
// atom fallback exactly to stay the single source of the indicator.
|
|
10
|
+
const foldPlanActive = (events) => {
|
|
11
|
+
let active = false;
|
|
12
|
+
for (const event of events) {
|
|
13
|
+
if (event.type === 'plan/mode') {
|
|
14
|
+
active = event.data.active === true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return active;
|
|
18
|
+
};
|
|
19
|
+
const foldSandboxMode = (events) => {
|
|
20
|
+
let mode;
|
|
21
|
+
for (const event of events) {
|
|
22
|
+
if (event.type === 'sandbox/mode') {
|
|
23
|
+
const value = event.data.mode;
|
|
24
|
+
if (typeof value === 'string')
|
|
25
|
+
mode = value;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return mode;
|
|
29
|
+
};
|
|
30
|
+
const foldApprovalPolicy = (events) => {
|
|
31
|
+
let policy;
|
|
32
|
+
for (const event of events) {
|
|
33
|
+
if (event.type === 'approval/policy') {
|
|
34
|
+
const value = event.data.policy;
|
|
35
|
+
if (typeof value === 'string')
|
|
36
|
+
policy = value;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return policy;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Durable-identity-first mode index. A durable permission identity is
|
|
43
|
+
* STRONGER than the derived sandbox/approval atoms: it keeps a runtime preset
|
|
44
|
+
* (including one that maps to the same atoms as a static mode) selected after
|
|
45
|
+
* resume or manual commands instead of snapping to a look-alike static mode.
|
|
46
|
+
* Permission-only dynamic specs declare no atoms and would wildcard-match ANY
|
|
47
|
+
* session state, so they can only be selected through the identity branch —
|
|
48
|
+
* never through the atom fallback.
|
|
49
|
+
*/
|
|
50
|
+
function derivePermissionModeIndex(modes, events) {
|
|
51
|
+
const identity = foldPermissionPreset(events);
|
|
52
|
+
if (identity !== undefined) {
|
|
53
|
+
const permissionIndex = modes.findIndex(spec => spec.permission === identity
|
|
54
|
+
&& (spec.plan === undefined || foldPlanActive(events) === spec.plan));
|
|
55
|
+
if (permissionIndex >= 0)
|
|
56
|
+
return permissionIndex;
|
|
57
|
+
}
|
|
58
|
+
const index = modes.findIndex(spec => spec.permission === undefined
|
|
59
|
+
&& (spec.plan === undefined || foldPlanActive(events) === spec.plan)
|
|
60
|
+
&& (spec.sandbox === undefined || foldSandboxMode(events) === spec.sandbox)
|
|
61
|
+
&& (spec.approval === undefined || foldApprovalPolicy(events) === spec.approval));
|
|
62
|
+
return index >= 0 ? index : 0;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Permission-aware session-mode actions: main's mode transition (plan
|
|
66
|
+
* exclusivity, atom application, plan-exit restore) composed with the durable
|
|
67
|
+
* permission identity, on top of the refactored `createModeActions`.
|
|
68
|
+
*
|
|
69
|
+
* Construction is inert. The returned shape is a superset of
|
|
70
|
+
* `ReturnType<typeof createModeActions>`, so the composition root and
|
|
71
|
+
* `createBindingEvents` can consume it unchanged, plus
|
|
72
|
+
* `runPermissionPreset` for the public `ChannelUi` surface.
|
|
73
|
+
*/
|
|
74
|
+
export function createPermissionModeActions(ctx, state, deps) {
|
|
75
|
+
const { owner, binding, sessionModes, roster, commandService, executeRegistryCommand, notify } = deps;
|
|
76
|
+
const base = createModeActions(ctx, state, {
|
|
77
|
+
owner,
|
|
78
|
+
runtime: deps.runtime,
|
|
79
|
+
binding,
|
|
80
|
+
sessionModes,
|
|
81
|
+
commandService,
|
|
82
|
+
executeRegistryCommand,
|
|
83
|
+
notify,
|
|
84
|
+
});
|
|
85
|
+
const permission = createPermissionIdentity(ctx, {
|
|
86
|
+
agent: () => binding.agent,
|
|
87
|
+
roster,
|
|
88
|
+
commandService,
|
|
89
|
+
executeRegistryCommand,
|
|
90
|
+
notify,
|
|
91
|
+
});
|
|
92
|
+
// An in-turn /plan off commits at pre-step, after the command has returned.
|
|
93
|
+
const explicitPlanExits = new WeakSet();
|
|
94
|
+
/** Re-derive the roster and the current mode. The roster rebuild rides on
|
|
95
|
+
* every refresh: a registry mount/unmount and a re-bind both land here. */
|
|
96
|
+
const refreshMode = () => {
|
|
97
|
+
roster.rebuild(binding.agent);
|
|
98
|
+
const index = derivePermissionModeIndex(sessionModes, snapshotLiveSessionEvents(binding.agent.session));
|
|
99
|
+
state.modeIndex = index;
|
|
100
|
+
state.mode = sessionModes[index];
|
|
101
|
+
};
|
|
102
|
+
/** Apply the configured atoms; an explicit exit owns its target mode.
|
|
103
|
+
* Permission identity is applied BEFORE plan and atom changes: dynamic
|
|
104
|
+
* presets use the official command path (or the service write fallback)
|
|
105
|
+
* and are confirmed by event/registry readback; the TUI never manufactures
|
|
106
|
+
* permission events. */
|
|
107
|
+
const applyMode = async (spec, capture = binding.capture()) => {
|
|
108
|
+
if (!owner.current() || !binding.isCurrent(capture))
|
|
109
|
+
return;
|
|
110
|
+
// This action writes durable session policy; the permission switch writes
|
|
111
|
+
// the same kind of durable identity, so it is under the same guard.
|
|
112
|
+
assertShadowPolicy('mutate', deps.runtime.mode);
|
|
113
|
+
const agent = capture.agent;
|
|
114
|
+
const session = agent.session;
|
|
115
|
+
const planMode = ctx.get('planMode');
|
|
116
|
+
const planActive = foldPlanActive(snapshotLiveSessionEvents(session));
|
|
117
|
+
const planChange = spec.plan !== undefined && (planMode?.get?.(agent).pending ?? planActive) !== spec.plan;
|
|
118
|
+
if (planActive && planMode?.get?.(agent).pending === undefined) {
|
|
119
|
+
explicitPlanExits.delete(session);
|
|
120
|
+
}
|
|
121
|
+
// Capture the pre-plan preset identity BEFORE any permission
|
|
122
|
+
// canonicalization can append replacement events.
|
|
123
|
+
if (planChange && spec.plan === true && !planActive) {
|
|
124
|
+
permission.rememberPrePlanIdentity(session);
|
|
125
|
+
}
|
|
126
|
+
if (planChange && spec.plan === false) {
|
|
127
|
+
// An explicit switch away from plan owns its target mode; the
|
|
128
|
+
// remembered pre-plan identity no longer applies.
|
|
129
|
+
explicitPlanExits.add(session);
|
|
130
|
+
permission.forgetPrePlanIdentity(session);
|
|
131
|
+
}
|
|
132
|
+
if (spec.permission !== undefined) {
|
|
133
|
+
if (!(await permission.applyPermissionIdentity(spec.permission)))
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
else if (!(await permission.canonicalizeForMode(spec, session))) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (!owner.current() || !binding.isCurrent(capture) || session !== agent.session)
|
|
140
|
+
return;
|
|
141
|
+
await base.applyMode(spec, capture);
|
|
142
|
+
if (!owner.current() || !binding.isCurrent(capture))
|
|
143
|
+
return;
|
|
144
|
+
const before = state.modeIndex;
|
|
145
|
+
refreshMode();
|
|
146
|
+
if (state.modeIndex !== before)
|
|
147
|
+
state.emit();
|
|
148
|
+
};
|
|
149
|
+
/** Shift+Tab: advance from the mode DERIVED from the session log (never a
|
|
150
|
+
* stored index), so manual `/plan` use can never desync the cycle. */
|
|
151
|
+
const cycleMode = async () => {
|
|
152
|
+
const capture = binding.capture();
|
|
153
|
+
if (!owner.current() || !binding.isCurrent(capture))
|
|
154
|
+
return;
|
|
155
|
+
const index = derivePermissionModeIndex(sessionModes, snapshotLiveSessionEvents(capture.agent.session));
|
|
156
|
+
await applyMode(sessionModes[(index + 1) % sessionModes.length], capture);
|
|
157
|
+
};
|
|
158
|
+
const onSessionEvent = (session, event) => {
|
|
159
|
+
const subject = session;
|
|
160
|
+
const sessionEvent = event;
|
|
161
|
+
base.onSessionEvent(subject, sessionEvent);
|
|
162
|
+
const type = sessionEvent.type;
|
|
163
|
+
if (type === 'permission/preset')
|
|
164
|
+
refreshMode();
|
|
165
|
+
if (type !== 'plan/mode' || sessionEvent.data.active !== false)
|
|
166
|
+
return;
|
|
167
|
+
const remembered = permission.prePlanPermissionIdentity(subject);
|
|
168
|
+
const explicit = explicitPlanExits.delete(subject);
|
|
169
|
+
permission.forgetPrePlanIdentity(subject);
|
|
170
|
+
if (explicit || remembered === undefined)
|
|
171
|
+
return;
|
|
172
|
+
if (subject !== binding.agent.session)
|
|
173
|
+
return;
|
|
174
|
+
// The atom restore is queued by the base actions in this same turn; the
|
|
175
|
+
// identity restore runs after it and re-seats the user on their own
|
|
176
|
+
// preset. Both write the same atom values, so the order cannot diverge.
|
|
177
|
+
queueMicrotask(() => {
|
|
178
|
+
if (subject !== binding.agent.session || foldPlanActive(snapshotLiveSessionEvents(subject)))
|
|
179
|
+
return;
|
|
180
|
+
void permission.applyPermissionIdentity(remembered).then((ok) => {
|
|
181
|
+
if (!ok || subject !== binding.agent.session)
|
|
182
|
+
return;
|
|
183
|
+
refreshMode();
|
|
184
|
+
notify(t('mode-switched', { name: modeDisplayName(state.mode) }));
|
|
185
|
+
state.emit();
|
|
186
|
+
}).catch(() => {
|
|
187
|
+
// Best-effort; failures already surfaced through applyPermissionIdentity.
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
return {
|
|
192
|
+
refreshMode,
|
|
193
|
+
cycleMode,
|
|
194
|
+
applyMode,
|
|
195
|
+
onSessionEvent,
|
|
196
|
+
runPermissionPreset: name => permission.runPermissionPreset(name),
|
|
197
|
+
permission,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
3
|
+
import type { SessionEvent } from '@deepseek-ai/dsh-session';
|
|
4
|
+
import { type SessionModeSpec } from '../../sessionModes.js';
|
|
5
|
+
import type { PermissionModeRoster } from './mode-roster.js';
|
|
6
|
+
import type { ChannelState } from './types.js';
|
|
7
|
+
/** Last durable permission preset identity (`permission/preset`), if any.
|
|
8
|
+
* Registered by the harness permission preset service, never manufactured
|
|
9
|
+
* by the TUI. */
|
|
10
|
+
export declare function foldPermissionPreset(events: readonly SessionEvent[]): string | undefined;
|
|
11
|
+
/** Effective sandbox of a mode target: its explicit atom, else the folded
|
|
12
|
+
* session value, else the sandbox-policy service default. Unknown means the
|
|
13
|
+
* bundle is not safely mappable. */
|
|
14
|
+
export declare function effectiveSandboxForMode(ctx: Context, spec: SessionModeSpec, events: readonly SessionEvent[]): SessionModeSpec['sandbox'] | undefined;
|
|
15
|
+
/** Effective approval policy of a mode target: its explicit atom, else the
|
|
16
|
+
* folded session value, else the approval service configuration. */
|
|
17
|
+
export declare function effectiveApprovalForMode(ctx: Context, spec: SessionModeSpec, session: Agent['session']): SessionModeSpec['approval'] | undefined;
|
|
18
|
+
/** Durable permission identity operations for one channel. */
|
|
19
|
+
export interface PermissionIdentity {
|
|
20
|
+
/** Folded durable identity of one session log. */
|
|
21
|
+
foldPermissionPreset(session: Agent['session']): string | undefined;
|
|
22
|
+
/** Canonical preset for a mode's effective sandbox/approval bundle, when
|
|
23
|
+
* the deployment's runtime table (or the stock built-ins) has one. */
|
|
24
|
+
canonicalPermissionForMode(spec: SessionModeSpec, session: Agent['session']): string | undefined;
|
|
25
|
+
/** True when the durable identity OR a runtime registry readback reports
|
|
26
|
+
* the target. */
|
|
27
|
+
permissionTargetConfirmed(target: string, session: Agent['session']): boolean;
|
|
28
|
+
/** Poll fold/registry readback for the target within a grace window. */
|
|
29
|
+
confirmPermissionTarget(target: string, session: Agent['session'], timeoutMs: number): Promise<boolean>;
|
|
30
|
+
/** Official `/permission <preset>` switch (or the service write fallback),
|
|
31
|
+
* then confirmation. The TUI never fabricates permission events. */
|
|
32
|
+
applyPermissionIdentity(target: string): Promise<boolean>;
|
|
33
|
+
/** Static-mode guard: canonicalize a durable identity BEFORE atoms, and
|
|
34
|
+
* fail closed when no canonical preset exists for the target bundle. */
|
|
35
|
+
canonicalizeForMode(spec: SessionModeSpec, session: Agent['session']): Promise<boolean>;
|
|
36
|
+
/** Capture the preset the user is on before plan mode runs. */
|
|
37
|
+
rememberPrePlanIdentity(session: Agent['session']): void;
|
|
38
|
+
/** The captured pre-plan identity, if one is still pending. */
|
|
39
|
+
prePlanPermissionIdentity(session: Agent['session']): string | undefined;
|
|
40
|
+
forgetPrePlanIdentity(session: Agent['session']): void;
|
|
41
|
+
/** `ChannelUi.runPermissionPreset` (see the public Channel type). */
|
|
42
|
+
runPermissionPreset(name: string): Promise<boolean>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Durable `permission/preset` identity: readback, canonical mapping, the
|
|
46
|
+
* official switch path, and the pre-plan identity memory. Construction is
|
|
47
|
+
* inert — it acquires nothing and subscribes to nothing.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createPermissionIdentity(ctx: Context, deps: {
|
|
50
|
+
agent: () => Agent;
|
|
51
|
+
roster: PermissionModeRoster;
|
|
52
|
+
commandService?: {
|
|
53
|
+
find(agent: Agent, name: string): unknown;
|
|
54
|
+
};
|
|
55
|
+
executeRegistryCommand(name: string, input: string): Promise<string | undefined>;
|
|
56
|
+
notify: ChannelState['notify'];
|
|
57
|
+
}): PermissionIdentity;
|
|
58
|
+
//# sourceMappingURL=mode-permission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-permission.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/mode-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAI5D,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;kBAEkB;AAClB,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,GAAG,SAAS,CASxF;AAED;;qCAEqC;AACrC,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,eAAe,CAAC,SAAS,CAAC,GAAG,SAAS,CAkBxC;AAED;qEACqE;AACrE,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GACxB,eAAe,CAAC,UAAU,CAAC,GAAG,SAAS,CAoBzC;AAED,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;IACnE;2EACuE;IACvE,0BAA0B,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;IAChG;sBACkB;IAClB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,OAAO,CAAA;IAC7E,wEAAwE;IACxE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvG;yEACqE;IACrE,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACzD;6EACyE;IACzE,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvF,+DAA+D;IAC/D,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IACxD,+DAA+D;IAC/D,yBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;IACxE,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IACtD,qEAAqE;IACrE,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,KAAK,CAAA;IAClB,MAAM,EAAE,oBAAoB,CAAA;IAC5B,cAAc,CAAC,EAAE;QAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAC9D,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAChF,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;CAC/B,GACA,kBAAkB,CAgLpB"}
|