@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,65 @@
|
|
|
1
|
+
import type { AssistantStreamFrame, ModelSelectionRef } from '@deepseek-ai/dsh-agent';
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
+
import type { InputConvergence } from './input-actions.js';
|
|
4
|
+
import type { ChannelBinding } from './binding.js';
|
|
5
|
+
import type { ChannelOwner } from './owner.js';
|
|
6
|
+
import { type createChannelProjection } from './projection.js';
|
|
7
|
+
import type { ChannelState } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* The binding event router is the sole subscriber for a foreground Agent.
|
|
10
|
+
* It captures the binding generation at every listener entry; teardown is
|
|
11
|
+
* incremental and retained callbacks check that captured Agent/session pair
|
|
12
|
+
* before touching state. Transcript presentation remains exclusively owned by
|
|
13
|
+
* ChannelProjection.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createBindingEvents(ctx: Context, deps: {
|
|
16
|
+
owner: ChannelOwner;
|
|
17
|
+
binding: ChannelBinding;
|
|
18
|
+
state: ChannelState;
|
|
19
|
+
activity: {
|
|
20
|
+
start(agent: ChannelBinding['agent']): void;
|
|
21
|
+
stop(): void;
|
|
22
|
+
onAgentStatus(status: ChannelBinding['agent']['status']): unknown;
|
|
23
|
+
onSessionEvent(event: unknown): unknown;
|
|
24
|
+
};
|
|
25
|
+
inputConvergence: InputConvergence;
|
|
26
|
+
selection: ModelSelectionRef;
|
|
27
|
+
modelActions: {
|
|
28
|
+
applyPreferredEffort(): Promise<void>;
|
|
29
|
+
selection: ModelSelectionRef;
|
|
30
|
+
};
|
|
31
|
+
modeActions: {
|
|
32
|
+
refreshMode(): void;
|
|
33
|
+
onSessionEvent(session: unknown, event: unknown): void;
|
|
34
|
+
};
|
|
35
|
+
projector: ReturnType<typeof createChannelProjection>;
|
|
36
|
+
subagents: {
|
|
37
|
+
onSessionEvent(session: unknown, event: unknown): boolean;
|
|
38
|
+
onStreamFrame?(agent: unknown, frame: AssistantStreamFrame): boolean;
|
|
39
|
+
onStart(info: {
|
|
40
|
+
id: string;
|
|
41
|
+
runId?: string;
|
|
42
|
+
provider: string;
|
|
43
|
+
local?: boolean;
|
|
44
|
+
}): void;
|
|
45
|
+
onEnd(info: {
|
|
46
|
+
id: string;
|
|
47
|
+
stopReason: string;
|
|
48
|
+
lastAssistantMessage?: unknown[];
|
|
49
|
+
}): void;
|
|
50
|
+
};
|
|
51
|
+
agentView: {
|
|
52
|
+
schedule(): void;
|
|
53
|
+
};
|
|
54
|
+
messageObserver?: {
|
|
55
|
+
publish(session: unknown, event: unknown): void;
|
|
56
|
+
};
|
|
57
|
+
/** Drop a pre-step attachment registered by this channel for one message id
|
|
58
|
+
* (input-delivery's `retireAttachment`); see the discard hook below.
|
|
59
|
+
* Optional for direct/embed constructors that never emit inbox discards;
|
|
60
|
+
* channel.ts always wires it. */
|
|
61
|
+
retireAttachment?(messageId: string): void;
|
|
62
|
+
}): {
|
|
63
|
+
bind: () => void;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=binding-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-events.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/binding-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;IACtD,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,cAAc,CAAA;IACvB,KAAK,EAAE,YAAY,CAAA;IACnB,QAAQ,EAAE;QACR,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;QAC3C,IAAI,IAAI,IAAI,CAAA;QACZ,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAA;QACjE,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAA;KACxC,CAAA;IACD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,SAAS,EAAE,iBAAiB,CAAA;IAC5B,YAAY,EAAE;QAAE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,SAAS,EAAE,iBAAiB,CAAA;KAAE,CAAA;IACrF,WAAW,EAAE;QAAE,WAAW,IAAI,IAAI,CAAC;QAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAA;IAC5F,SAAS,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA;IACrD,SAAS,EAAE;QAAE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAC,aAAa,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE,CAAA;IAC/T,SAAS,EAAE;QAAE,QAAQ,IAAI,IAAI,CAAA;KAAE,CAAA;IAC/B,eAAe,CAAC,EAAE;QAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAA;IACrE;;;sCAGkC;IAClC,gBAAgB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3C;gBAYkB,IAAI;EAgItB"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The binding event router is the sole subscriber for a foreground Agent.
|
|
3
|
+
* It captures the binding generation at every listener entry; teardown is
|
|
4
|
+
* incremental and retained callbacks check that captured Agent/session pair
|
|
5
|
+
* before touching state. Transcript presentation remains exclusively owned by
|
|
6
|
+
* ChannelProjection.
|
|
7
|
+
*/
|
|
8
|
+
export function createBindingEvents(ctx, deps) {
|
|
9
|
+
const reconcileRetiredProjection = (status) => {
|
|
10
|
+
if (!deps.state.working)
|
|
11
|
+
return;
|
|
12
|
+
ctx.logger.warn(`dsh-tui: agent became ${status} while the channel still projected an open turn; releasing volatile UI gates`);
|
|
13
|
+
deps.inputConvergence.cancelInFlight = false;
|
|
14
|
+
deps.state.cancelPending = false;
|
|
15
|
+
deps.state.working = false;
|
|
16
|
+
deps.state.activeToolCount = 0;
|
|
17
|
+
deps.projector.settleStreaming();
|
|
18
|
+
deps.projector.updateSpinnerMode();
|
|
19
|
+
};
|
|
20
|
+
const bind = () => {
|
|
21
|
+
try {
|
|
22
|
+
deps.state.agentBindingGeneration = deps.binding.bind();
|
|
23
|
+
deps.inputConvergence.cancelInFlight = false;
|
|
24
|
+
deps.inputConvergence.interruptSeq += 1;
|
|
25
|
+
deps.activity.start(deps.binding.agent);
|
|
26
|
+
deps.modelActions.selection.current = undefined;
|
|
27
|
+
deps.modelActions.selection.assembled = undefined;
|
|
28
|
+
if (deps.binding.agent.options?.model === undefined && deps.state.provider !== '' && deps.state.model !== '') {
|
|
29
|
+
deps.modelActions.selection.current = { provider: deps.state.provider, model: deps.state.model };
|
|
30
|
+
}
|
|
31
|
+
void deps.modelActions.applyPreferredEffort();
|
|
32
|
+
deps.modeActions.refreshMode();
|
|
33
|
+
const capture = deps.binding.capture();
|
|
34
|
+
const session = capture.agent.session;
|
|
35
|
+
const current = () => deps.owner.current() && deps.binding.isCurrent(capture);
|
|
36
|
+
const register = (dispose) => {
|
|
37
|
+
deps.binding.subscribe(dispose);
|
|
38
|
+
return dispose;
|
|
39
|
+
};
|
|
40
|
+
const on = (...args) => register(ctx.on(...args));
|
|
41
|
+
// Keep the upstream assembly/request pairing, but own each listener as
|
|
42
|
+
// soon as it is installed. The upstream combined disposer is too late
|
|
43
|
+
// if request registration throws, and its post-await assembly write is
|
|
44
|
+
// unsafe after a rebind (including A→B→A ABA).
|
|
45
|
+
const disposeAssembly = capture.agent.ctx.on('system-prompt/assemble', async (_assembly, _context, next) => {
|
|
46
|
+
const selected = deps.selection.current;
|
|
47
|
+
const assembled = await next();
|
|
48
|
+
if (!current())
|
|
49
|
+
return assembled;
|
|
50
|
+
deps.selection.assembled = selected;
|
|
51
|
+
if (selected === undefined)
|
|
52
|
+
return assembled;
|
|
53
|
+
return {
|
|
54
|
+
...assembled,
|
|
55
|
+
variables: {
|
|
56
|
+
...assembled.variables,
|
|
57
|
+
provider: selected.provider,
|
|
58
|
+
model: selected.model,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
register(disposeAssembly);
|
|
63
|
+
const disposeRequest = capture.agent.ctx.on('agent/request', async (_payload, next) => {
|
|
64
|
+
const resolved = await next();
|
|
65
|
+
if (!current())
|
|
66
|
+
return resolved;
|
|
67
|
+
const selected = deps.selection.assembled;
|
|
68
|
+
if (selected === undefined)
|
|
69
|
+
return resolved;
|
|
70
|
+
const { reasoningEffort: _inheritedEffort, ...withoutInheritedEffort } = resolved;
|
|
71
|
+
return {
|
|
72
|
+
...withoutInheritedEffort,
|
|
73
|
+
provider: selected.provider,
|
|
74
|
+
model: selected.model,
|
|
75
|
+
...(selected.reasoningEffort === undefined ? {} : { reasoningEffort: selected.reasoningEffort }),
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
register(disposeRequest);
|
|
79
|
+
on('agent/status', ({ agent: subject, status }) => {
|
|
80
|
+
if (!current() || subject !== capture.agent)
|
|
81
|
+
return;
|
|
82
|
+
deps.state.status = status;
|
|
83
|
+
deps.activity.onAgentStatus(status);
|
|
84
|
+
if (status === 'idle')
|
|
85
|
+
reconcileRetiredProjection('idle');
|
|
86
|
+
deps.state.emit();
|
|
87
|
+
});
|
|
88
|
+
on('agent/disposed', ({ agent: subject }) => {
|
|
89
|
+
if (!current() || subject !== capture.agent)
|
|
90
|
+
return;
|
|
91
|
+
deps.state.status = 'disposed';
|
|
92
|
+
deps.activity.stop();
|
|
93
|
+
reconcileRetiredProjection('disposed');
|
|
94
|
+
deps.state.emit();
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* The inbox removed one message. Both events retire the pending
|
|
98
|
+
* preview, but ONLY a discard retires an attached-context entry:
|
|
99
|
+
* `agent/inbox/claimed` fires while the loop claims the batch, BEFORE
|
|
100
|
+
* the resident `agent/pre-step` listener can append the attachment —
|
|
101
|
+
* retiring there would delete the context before it is ever injected
|
|
102
|
+
* (dsh-agent-loop: `inbox.claim()` → claimed event → `agent/pre-step`).
|
|
103
|
+
*/
|
|
104
|
+
const retirePending = (payload, alsoRetireAttachment = false) => {
|
|
105
|
+
if (!current() || payload.agent !== capture.agent)
|
|
106
|
+
return;
|
|
107
|
+
const messageId = payload.message?.id;
|
|
108
|
+
if (typeof messageId !== 'string')
|
|
109
|
+
return;
|
|
110
|
+
if (alsoRetireAttachment)
|
|
111
|
+
deps.retireAttachment?.(messageId);
|
|
112
|
+
const before = deps.state.pending.length;
|
|
113
|
+
deps.state.pending = deps.state.pending.filter(item => item.id !== messageId);
|
|
114
|
+
if (deps.state.pending.length !== before)
|
|
115
|
+
deps.state.emit();
|
|
116
|
+
};
|
|
117
|
+
on('agent/inbox/claimed', retirePending);
|
|
118
|
+
on('agent/inbox/discarded', payload => retirePending(payload, true));
|
|
119
|
+
on('session/event', (subject, event) => {
|
|
120
|
+
if (!current())
|
|
121
|
+
return;
|
|
122
|
+
const isMainSession = subject === session;
|
|
123
|
+
if (!isMainSession && deps.subagents.onSessionEvent(subject, event))
|
|
124
|
+
return;
|
|
125
|
+
if (!isMainSession)
|
|
126
|
+
return;
|
|
127
|
+
deps.messageObserver?.publish(subject, event);
|
|
128
|
+
deps.activity.onSessionEvent(event);
|
|
129
|
+
deps.modeActions.onSessionEvent(subject, event);
|
|
130
|
+
deps.projector.renderEvent(event);
|
|
131
|
+
if (event.type === 'assistant/chunk')
|
|
132
|
+
deps.state.emitStream();
|
|
133
|
+
else
|
|
134
|
+
deps.state.emit();
|
|
135
|
+
});
|
|
136
|
+
// 0.1.5 live streaming: per-token chunks are transient attempt frames
|
|
137
|
+
// on this agent-scoped channel; the durable settlement still arrives
|
|
138
|
+
// through `session/event` above. Pre-0.1.5 hosts never emit it — the
|
|
139
|
+
// subscription simply stays silent there and chunks keep arriving as
|
|
140
|
+
// `assistant/chunk` session events.
|
|
141
|
+
on('agent/assistant-stream', ({ agent: subject, frame }) => {
|
|
142
|
+
if (!current())
|
|
143
|
+
return;
|
|
144
|
+
if (subject !== capture.agent) {
|
|
145
|
+
deps.subagents.onStreamFrame?.(subject, frame);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
deps.projector.renderStreamFrame(frame);
|
|
149
|
+
if (frame.type === 'chunk')
|
|
150
|
+
deps.state.emitStream();
|
|
151
|
+
else if (frame.type === 'end')
|
|
152
|
+
deps.state.emit();
|
|
153
|
+
});
|
|
154
|
+
on('subagent/start', (info) => {
|
|
155
|
+
if (current())
|
|
156
|
+
deps.subagents.onStart(info);
|
|
157
|
+
});
|
|
158
|
+
on('subagent/end', (info) => {
|
|
159
|
+
if (current())
|
|
160
|
+
deps.subagents.onEnd(info);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
deps.owner.dispose();
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
return { bind };
|
|
169
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Agent, AgentHandle } from '@deepseek-ai/dsh-agent';
|
|
2
|
+
import type { ChannelOwner } from './owner.js';
|
|
3
|
+
export interface BindingCapture {
|
|
4
|
+
readonly agent: Agent;
|
|
5
|
+
readonly generation: number;
|
|
6
|
+
}
|
|
7
|
+
export interface BindingCommit {
|
|
8
|
+
readonly agent: Agent;
|
|
9
|
+
readonly handle: AgentHandle | undefined;
|
|
10
|
+
readonly generation: number;
|
|
11
|
+
}
|
|
12
|
+
type PreviousDisposition = 'dispose' | 'park';
|
|
13
|
+
/**
|
|
14
|
+
* Sole writer of the attached Agent/handle identity and binding generation.
|
|
15
|
+
*
|
|
16
|
+
* A prepared handle remains owned by this cell until its synchronous adoption
|
|
17
|
+
* tail returns. The tail is deliberately callback-shaped: it cannot leave a
|
|
18
|
+
* committed identity waiting for a microtask watchdog to infer whether setup
|
|
19
|
+
* completed, and a throw always revokes the transaction immediately.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createChannelBinding(initial: Agent, handle: AgentHandle | undefined, owner: ChannelOwner): {
|
|
22
|
+
readonly agent: Agent;
|
|
23
|
+
readonly handle: AgentHandle | undefined;
|
|
24
|
+
readonly generation: number;
|
|
25
|
+
capture(): BindingCapture;
|
|
26
|
+
isCurrent(capture: BindingCapture): boolean;
|
|
27
|
+
/** Create a candidate without giving it authority over the live binding. */
|
|
28
|
+
prepare(capture: BindingCapture, create: () => Promise<AgentHandle>): Promise<AgentHandle>;
|
|
29
|
+
/** Dispose an uncommitted candidate exactly once. Live handles are inert. */
|
|
30
|
+
abandon(candidate: AgentHandle): Promise<void>;
|
|
31
|
+
/** Perform one explicit synchronous prepared-handle adoption transaction. */
|
|
32
|
+
adopt: <T>(candidate: AgentHandle, capture: BindingCapture, tail: (previous: BindingCommit, disposition: (next: PreviousDisposition) => void) => T) => T;
|
|
33
|
+
/** Perform one explicit synchronous already-live-agent adoption transaction. */
|
|
34
|
+
switchTo: <T>(agent: Agent, nextHandle: AgentHandle | undefined, tail: (previous: BindingCommit, disposition: (next: PreviousDisposition) => void) => T) => T;
|
|
35
|
+
bind(): number;
|
|
36
|
+
subscribe(dispose: () => void): void;
|
|
37
|
+
clearSubscriptions: (afterEach?: () => void) => unknown;
|
|
38
|
+
};
|
|
39
|
+
export type ChannelBinding = ReturnType<typeof createChannelBinding>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,KAAK,mBAAmB,GAAG,SAAS,GAAG,MAAM,CAAA;AAE7C;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,KAAK,EAAE,YAAY;;;;eAiK1F,cAAc;uBACN,cAAc;IAEjC,4EAA4E;qBACrD,cAAc,UAAU,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAkBhG,6EAA6E;uBACpD,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpD,6EAA6E;YAvIhE,CAAC,aACH,WAAW,WACb,cAAc,QACjB,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,KAAK,CAAC,KACrF,CAAC;IAqIF,gFAAgF;eA5EhE,CAAC,SACV,KAAK,cACA,WAAW,GAAG,SAAS,QAC7B,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,KAAK,CAAC,KACrF,CAAC;;uBAsFiB,MAAM,IAAI;qCAvLS,MAAM,IAAI,KAAG,OAAO;EA0L7D;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sole writer of the attached Agent/handle identity and binding generation.
|
|
3
|
+
*
|
|
4
|
+
* A prepared handle remains owned by this cell until its synchronous adoption
|
|
5
|
+
* tail returns. The tail is deliberately callback-shaped: it cannot leave a
|
|
6
|
+
* committed identity waiting for a microtask watchdog to infer whether setup
|
|
7
|
+
* completed, and a throw always revokes the transaction immediately.
|
|
8
|
+
*/
|
|
9
|
+
export function createChannelBinding(initial, handle, owner) {
|
|
10
|
+
let currentAgent = initial;
|
|
11
|
+
let currentHandle = handle;
|
|
12
|
+
let generation = 0;
|
|
13
|
+
let started = false;
|
|
14
|
+
let subscriptions = [];
|
|
15
|
+
let handoff;
|
|
16
|
+
const pending = new Map();
|
|
17
|
+
const disposed = new WeakSet();
|
|
18
|
+
const dispose = (candidate) => {
|
|
19
|
+
if (disposed.has(candidate))
|
|
20
|
+
return;
|
|
21
|
+
disposed.add(candidate);
|
|
22
|
+
void candidate.dispose().catch(() => undefined);
|
|
23
|
+
};
|
|
24
|
+
const disposePending = (candidate) => {
|
|
25
|
+
if (!pending.delete(candidate))
|
|
26
|
+
return;
|
|
27
|
+
dispose(candidate);
|
|
28
|
+
};
|
|
29
|
+
const clearSubscriptions = (afterEach) => {
|
|
30
|
+
const active = subscriptions.splice(0);
|
|
31
|
+
let failure;
|
|
32
|
+
// A bad unsubscriber must not prevent the rest of a binding's cleanup.
|
|
33
|
+
for (const unsubscribe of active) {
|
|
34
|
+
try {
|
|
35
|
+
unsubscribe();
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
failure ??= error;
|
|
39
|
+
}
|
|
40
|
+
// Every unsubscriber is external code and can revoke the owner or try a
|
|
41
|
+
// rival handoff. Record that state before running the next cleanup.
|
|
42
|
+
try {
|
|
43
|
+
afterEach?.();
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
failure ??= error;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return failure;
|
|
50
|
+
};
|
|
51
|
+
const isCaptureCurrent = (capture) => owner.current() && capture.agent === currentAgent && capture.generation === generation;
|
|
52
|
+
const assertPrepared = (candidate, capture) => {
|
|
53
|
+
if (pending.get(candidate) !== capture || !isCaptureCurrent(capture)) {
|
|
54
|
+
disposePending(candidate);
|
|
55
|
+
throw new Error('dsh-tui: Channel binding changed before adoption');
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const settlePrevious = (previous, disposition) => {
|
|
59
|
+
// Parking deliberately transfers ownership to the caller's background
|
|
60
|
+
// ledger. Disposal is centralised here so no adoption tail can double-call
|
|
61
|
+
// an old handle while its transaction is being revoked.
|
|
62
|
+
if (disposition === 'dispose' && previous.handle !== undefined && previous.handle !== currentHandle) {
|
|
63
|
+
dispose(previous.handle);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
owner.own(clearSubscriptions);
|
|
67
|
+
owner.own(() => { for (const candidate of [...pending.keys()])
|
|
68
|
+
disposePending(candidate); });
|
|
69
|
+
const adopt = (candidate, capture, tail) => {
|
|
70
|
+
if (handoff !== undefined) {
|
|
71
|
+
// Mark the outer transaction superseded as well as rejecting this one;
|
|
72
|
+
// letting its tail return success after a reentrant handoff attempt
|
|
73
|
+
// would publish a binding whose cleanup authority was contested.
|
|
74
|
+
handoff = undefined;
|
|
75
|
+
disposePending(candidate);
|
|
76
|
+
throw new Error('dsh-tui: Channel binding handoff is already in progress');
|
|
77
|
+
}
|
|
78
|
+
assertPrepared(candidate, capture);
|
|
79
|
+
const token = Symbol('channel-binding-handoff');
|
|
80
|
+
handoff = token;
|
|
81
|
+
const previous = { agent: currentAgent, handle: currentHandle, generation };
|
|
82
|
+
let disposition;
|
|
83
|
+
const decidePrevious = (next) => {
|
|
84
|
+
if (disposition === undefined || disposition === next) {
|
|
85
|
+
disposition = next;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
throw new Error('dsh-tui: Channel binding previous disposition changed');
|
|
89
|
+
};
|
|
90
|
+
let succeeded = false;
|
|
91
|
+
try {
|
|
92
|
+
const cleanupFailure = clearSubscriptions(() => {
|
|
93
|
+
if (handoff !== token || !isCaptureCurrent(capture) || pending.get(candidate) !== capture) {
|
|
94
|
+
throw new Error('dsh-tui: Channel binding changed before adoption');
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
if (cleanupFailure !== undefined)
|
|
98
|
+
throw cleanupFailure;
|
|
99
|
+
// Unsubscription is external code: it can revoke the owner or attempt a
|
|
100
|
+
// rival adoption. Never write a candidate after either event.
|
|
101
|
+
if (handoff !== token)
|
|
102
|
+
throw new Error('dsh-tui: Channel binding handoff was superseded');
|
|
103
|
+
assertPrepared(candidate, capture);
|
|
104
|
+
pending.delete(candidate);
|
|
105
|
+
currentAgent = candidate.agent;
|
|
106
|
+
currentHandle = candidate;
|
|
107
|
+
generation += 1;
|
|
108
|
+
const result = tail(previous, decidePrevious);
|
|
109
|
+
// Tail callbacks include notifier/listener code and therefore remain a
|
|
110
|
+
// synchronous reentrancy boundary even though they contain no await.
|
|
111
|
+
if (handoff !== token || !owner.current() || currentHandle !== candidate) {
|
|
112
|
+
throw new Error('dsh-tui: Channel binding changed during adoption');
|
|
113
|
+
}
|
|
114
|
+
succeeded = true;
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
// This candidate is transaction-owned, unlike the baseline live handle
|
|
119
|
+
// which ordinary UI owner teardown only unsubscribes from.
|
|
120
|
+
if (currentHandle === candidate) {
|
|
121
|
+
currentHandle = undefined;
|
|
122
|
+
}
|
|
123
|
+
dispose(candidate);
|
|
124
|
+
owner.dispose();
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
settlePrevious(previous, succeeded ? disposition ?? 'dispose' : 'dispose');
|
|
129
|
+
if (handoff === token)
|
|
130
|
+
handoff = undefined;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
const switchTo = (agent, nextHandle, tail) => {
|
|
134
|
+
owner.assertActive();
|
|
135
|
+
if (handoff !== undefined) {
|
|
136
|
+
handoff = undefined;
|
|
137
|
+
throw new Error('dsh-tui: Channel binding handoff is already in progress');
|
|
138
|
+
}
|
|
139
|
+
const token = Symbol('channel-binding-handoff');
|
|
140
|
+
handoff = token;
|
|
141
|
+
const previous = { agent: currentAgent, handle: currentHandle, generation };
|
|
142
|
+
let disposition;
|
|
143
|
+
const decidePrevious = (next) => {
|
|
144
|
+
if (disposition === undefined || disposition === next) {
|
|
145
|
+
disposition = next;
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
throw new Error('dsh-tui: Channel binding previous disposition changed');
|
|
149
|
+
};
|
|
150
|
+
let succeeded = false;
|
|
151
|
+
try {
|
|
152
|
+
const cleanupFailure = clearSubscriptions(() => {
|
|
153
|
+
if (handoff !== token || !owner.current())
|
|
154
|
+
throw new Error('dsh-tui: Channel binding changed during adoption');
|
|
155
|
+
});
|
|
156
|
+
if (cleanupFailure !== undefined)
|
|
157
|
+
throw cleanupFailure;
|
|
158
|
+
if (handoff !== token || !owner.current())
|
|
159
|
+
throw new Error('dsh-tui: Channel binding changed during adoption');
|
|
160
|
+
currentAgent = agent;
|
|
161
|
+
currentHandle = nextHandle;
|
|
162
|
+
generation += 1;
|
|
163
|
+
const result = tail(previous, decidePrevious);
|
|
164
|
+
if (handoff !== token || !owner.current() || currentAgent !== agent || currentHandle !== nextHandle) {
|
|
165
|
+
throw new Error('dsh-tui: Channel binding changed during adoption');
|
|
166
|
+
}
|
|
167
|
+
succeeded = true;
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
// An already-live agent is not a prepared candidate. Revocation leaves
|
|
172
|
+
// its owner to decide disposal, preserving the baseline teardown rule.
|
|
173
|
+
owner.dispose();
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
settlePrevious(previous, succeeded ? disposition ?? 'dispose' : 'dispose');
|
|
178
|
+
if (handoff === token)
|
|
179
|
+
handoff = undefined;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
return {
|
|
183
|
+
get agent() { return currentAgent; },
|
|
184
|
+
get handle() { return currentHandle; },
|
|
185
|
+
get generation() { return generation; },
|
|
186
|
+
capture() { return { agent: currentAgent, generation }; },
|
|
187
|
+
isCurrent(capture) { return isCaptureCurrent(capture); },
|
|
188
|
+
/** Create a candidate without giving it authority over the live binding. */
|
|
189
|
+
async prepare(capture, create) {
|
|
190
|
+
owner.assertActive();
|
|
191
|
+
if (!isCaptureCurrent(capture))
|
|
192
|
+
throw new Error('dsh-tui: Channel binding changed before preparation');
|
|
193
|
+
const candidate = await create();
|
|
194
|
+
if (!isCaptureCurrent(capture)) {
|
|
195
|
+
dispose(candidate);
|
|
196
|
+
throw new Error('dsh-tui: Channel binding changed during preparation');
|
|
197
|
+
}
|
|
198
|
+
pending.set(candidate, capture);
|
|
199
|
+
// Owner disposal may synchronously occur through embedding hooks while
|
|
200
|
+
// ownership is registered; verify the pending entry itself as well.
|
|
201
|
+
if (!isCaptureCurrent(capture) || pending.get(candidate) !== capture) {
|
|
202
|
+
disposePending(candidate);
|
|
203
|
+
throw new Error('dsh-tui: Channel binding changed during preparation');
|
|
204
|
+
}
|
|
205
|
+
return candidate;
|
|
206
|
+
},
|
|
207
|
+
/** Dispose an uncommitted candidate exactly once. Live handles are inert. */
|
|
208
|
+
async abandon(candidate) { disposePending(candidate); },
|
|
209
|
+
/** Perform one explicit synchronous prepared-handle adoption transaction. */
|
|
210
|
+
adopt,
|
|
211
|
+
/** Perform one explicit synchronous already-live-agent adoption transaction. */
|
|
212
|
+
switchTo,
|
|
213
|
+
// bindAgent is still responsible for constructing the typed subscriptions.
|
|
214
|
+
// Initial activation establishes generation 1; later rebinds have already
|
|
215
|
+
// advanced the generation inside their adoption transaction.
|
|
216
|
+
bind() {
|
|
217
|
+
owner.assertActive();
|
|
218
|
+
if (!started) {
|
|
219
|
+
started = true;
|
|
220
|
+
generation += 1;
|
|
221
|
+
}
|
|
222
|
+
return generation;
|
|
223
|
+
},
|
|
224
|
+
subscribe(dispose) { subscriptions.push(dispose); },
|
|
225
|
+
clearSubscriptions,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type CommandCompletionNode } from '../../commands.js';
|
|
2
|
+
import { listThemeCatalog } from '../../themeCatalog.js';
|
|
3
|
+
import type { ChannelState } from './types.js';
|
|
4
|
+
/** Owns slash completion composition and cache warming; it has no lifecycle effects. */
|
|
5
|
+
export declare function createCommandCompletions(deps: {
|
|
6
|
+
state: () => ChannelState;
|
|
7
|
+
themeHost: Parameters<typeof listThemeCatalog>[0];
|
|
8
|
+
commandTrees?: {
|
|
9
|
+
children(path: readonly string[]): readonly CommandCompletionNode[];
|
|
10
|
+
};
|
|
11
|
+
workspaceCommands(): readonly {
|
|
12
|
+
name: string;
|
|
13
|
+
aliases?: readonly string[];
|
|
14
|
+
description?: string;
|
|
15
|
+
}[];
|
|
16
|
+
model: {
|
|
17
|
+
warmModelNodes(): void;
|
|
18
|
+
modelNodes(): readonly CommandCompletionNode[];
|
|
19
|
+
warmPresetOptions(): void;
|
|
20
|
+
presetOptions(): readonly {
|
|
21
|
+
id: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
name?: string;
|
|
24
|
+
isDefault?: boolean;
|
|
25
|
+
}[];
|
|
26
|
+
warmEffortLevels(): void;
|
|
27
|
+
};
|
|
28
|
+
}): (input: string) => import("../../commands.js").CommandCompletion[];
|
|
29
|
+
//# sourceMappingURL=command-completions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-completions.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/command-completions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAI1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,wFAAwF;AACxF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,KAAK,EAAE,MAAM,YAAY,CAAA;IACzB,SAAS,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,qBAAqB,EAAE,CAAA;KAAE,CAAA;IACtF,iBAAiB,IAAI,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACnG,KAAK,EAAE;QACL,cAAc,IAAI,IAAI,CAAA;QACtB,UAAU,IAAI,SAAS,qBAAqB,EAAE,CAAA;QAC9C,iBAAiB,IAAI,IAAI,CAAA;QACzB,aAAa,IAAI,SAAS;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,EAAE,CAAA;QACpG,gBAAgB,IAAI,IAAI,CAAA;KACzB,CAAA;CACF,IAES,OAAO,MAAM,qDAyEtB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { completeCommands, isCommandCompletionToken } from '../../commands.js';
|
|
2
|
+
import { SESSION_COLOR_NAMES } from '../../terminal-utils/sessionColors.js';
|
|
3
|
+
import { getLang, LANGS } from '../../i18n.js';
|
|
4
|
+
import { AUTO_THEME_NAME } from '../../theme.js';
|
|
5
|
+
import { listThemeCatalog } from '../../themeCatalog.js';
|
|
6
|
+
import { PRESET_NAMES } from '../../components/activityFrames.js';
|
|
7
|
+
/** Owns slash completion composition and cache warming; it has no lifecycle effects. */
|
|
8
|
+
export function createCommandCompletions(deps) {
|
|
9
|
+
const { themeHost, commandTrees, workspaceCommands, model } = deps;
|
|
10
|
+
return (input) => {
|
|
11
|
+
const state = deps.state();
|
|
12
|
+
const head = input.slice(1).split(/[\t ]/)[0]?.toLowerCase() ?? '';
|
|
13
|
+
if (head !== '') {
|
|
14
|
+
if ('model'.startsWith(head))
|
|
15
|
+
model.warmModelNodes();
|
|
16
|
+
if ('preset'.startsWith(head))
|
|
17
|
+
model.warmPresetOptions();
|
|
18
|
+
if ('effort'.startsWith(head))
|
|
19
|
+
model.warmEffortLevels();
|
|
20
|
+
}
|
|
21
|
+
return completeCommands(input, state.commandList, path => {
|
|
22
|
+
if (path.length === 1 && path[0] === 'model') {
|
|
23
|
+
model.warmModelNodes();
|
|
24
|
+
return model.modelNodes();
|
|
25
|
+
}
|
|
26
|
+
if (path.length === 1 && path[0] === 'lang')
|
|
27
|
+
return [
|
|
28
|
+
{ name: 'status', description: 'Show the current UI language', descriptionKey: 'sugg-status-desc' },
|
|
29
|
+
...LANGS.map(lang => ({ name: lang, description: `Switch the UI language to ${lang}`, descriptionKey: lang === 'zh' ? 'sugg-lang-zh-desc' : 'sugg-lang-en-desc', ...(getLang() === lang ? { tag: 'current' } : {}) })),
|
|
30
|
+
];
|
|
31
|
+
if (path.length === 1 && path[0] === 'theme')
|
|
32
|
+
return [
|
|
33
|
+
{ name: 'status', description: 'Show the current theme', descriptionKey: 'sugg-status-desc' },
|
|
34
|
+
{ name: AUTO_THEME_NAME, description: 'Follow the terminal background', descriptionKey: 'sugg-theme-auto-desc' },
|
|
35
|
+
...listThemeCatalog(themeHost).filter(entry => entry.name !== AUTO_THEME_NAME).map(entry => {
|
|
36
|
+
const base = entry.base ?? 'dark';
|
|
37
|
+
if (entry.source === 'builtin')
|
|
38
|
+
return { name: entry.name, description: `Built-in theme ${entry.name}`, descriptionKey: 'sugg-theme-builtin-desc' };
|
|
39
|
+
if (entry.source === 'runtime')
|
|
40
|
+
return { name: entry.name, description: `Plugin theme (${base} base)`, descriptionKey: 'sugg-theme-plugin-desc' };
|
|
41
|
+
return { name: entry.name, description: `User theme (${base} base)`, descriptionKey: 'sugg-theme-user-desc' };
|
|
42
|
+
}),
|
|
43
|
+
];
|
|
44
|
+
if (path.length === 1 && path[0] === 'color')
|
|
45
|
+
return [
|
|
46
|
+
{ name: 'status', description: 'Show the current session color', descriptionKey: 'sugg-status-desc' },
|
|
47
|
+
{ name: 'reset', description: 'Clear the session color', descriptionKey: 'sugg-color-reset-desc' },
|
|
48
|
+
...SESSION_COLOR_NAMES.map(name => ({ name, description: 'Session accent color', descriptionKey: 'sugg-color-name-desc', ...(state.sessionColor === name ? { tag: 'current' } : {}) })),
|
|
49
|
+
];
|
|
50
|
+
if (path.length === 1 && path[0] === 'effort') {
|
|
51
|
+
model.warmEffortLevels();
|
|
52
|
+
return [{ name: 'status', description: 'Show the current reasoning effort', descriptionKey: 'sugg-status-desc' }, ...(state.effortLevels ?? []).map(id => ({ name: id, description: 'Reasoning effort level', descriptionKey: 'sugg-effort-level-desc', ...(state.reasoningEffort === id ? { tag: 'current' } : {}) }))];
|
|
53
|
+
}
|
|
54
|
+
if (path.length === 1 && path[0] === 'preset') {
|
|
55
|
+
model.warmPresetOptions();
|
|
56
|
+
return [{ name: 'status', description: 'Show the current agent preset', descriptionKey: 'sugg-status-desc' }, ...model.presetOptions().map(preset => ({ name: preset.id, description: preset.description ?? preset.name ?? preset.id, ...(preset.id === state.agentPreset ? { tag: 'current' } : preset.isDefault ? { tag: 'default' } : {}) }))];
|
|
57
|
+
}
|
|
58
|
+
if (path.length === 1 && path[0] === 'activity')
|
|
59
|
+
return [
|
|
60
|
+
{ name: 'status', description: 'Show the current activity preset', descriptionKey: 'sugg-status-desc' },
|
|
61
|
+
{ name: 'frames', description: 'List or switch frame presets', descriptionKey: 'sugg-activity-frames-desc' },
|
|
62
|
+
];
|
|
63
|
+
if (path.length === 2 && path[0] === 'activity' && path[1] === 'frames')
|
|
64
|
+
return PRESET_NAMES.map(name => ({ name, description: 'Animation frame preset', descriptionKey: 'sugg-activity-frame-desc', ...(state.activityFrames === name ? { tag: 'current' } : {}) }));
|
|
65
|
+
if (path.length === 1 && path[0] === 'workspace') {
|
|
66
|
+
const builtins = [
|
|
67
|
+
{ name: 'resume', description: 'Switch to another workspace', descriptionKey: 'cmd-desc-workspace-resume' },
|
|
68
|
+
{ name: 'rename', description: 'Rename the current workspace', descriptionKey: 'cmd-desc-workspace-rename' },
|
|
69
|
+
{ name: 'open', description: 'Open a path or workspace URI', descriptionKey: 'cmd-desc-workspace-open' },
|
|
70
|
+
];
|
|
71
|
+
const reserved = new Set(builtins.map(command => command.name));
|
|
72
|
+
return [...builtins, ...workspaceCommands().filter(command => !reserved.has(command.name.toLowerCase())).map(command => ({
|
|
73
|
+
name: command.name,
|
|
74
|
+
...(command.aliases === undefined ? {} : { aliases: command.aliases }),
|
|
75
|
+
description: command.description ?? '',
|
|
76
|
+
}))];
|
|
77
|
+
}
|
|
78
|
+
if (path.length === 1 && path[0] === 'permission') {
|
|
79
|
+
const snapshot = state.permissionPresets();
|
|
80
|
+
return snapshot.options.filter(option => isCommandCompletionToken(option.value)).map(option => ({
|
|
81
|
+
name: option.value, description: option.description ?? option.name,
|
|
82
|
+
...(option.value === 'read-only' ? { descriptionKey: 'permission-preset-readonly-desc' } : option.value === 'workspace-write' ? { descriptionKey: 'permission-preset-workspace-write-desc' } : option.value === 'danger-full-access' ? { descriptionKey: 'permission-preset-full-access-desc' } : {}),
|
|
83
|
+
...(snapshot.current?.kind === 'preset' && snapshot.current.value === option.value ? { tag: 'current' } : {}),
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
if (path.length === 1 && path[0] === 'plan')
|
|
87
|
+
return [
|
|
88
|
+
{ name: 'on', description: 'Enter plan mode: read-only, plan before acting', descriptionKey: 'plan-mode-on-desc' },
|
|
89
|
+
{ name: 'off', description: 'Exit plan mode, back to normal execution', descriptionKey: 'plan-mode-off-desc' },
|
|
90
|
+
];
|
|
91
|
+
return commandTrees?.children(path) ?? [];
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Internal command composition follows the same production UI dispatcher.
|
|
2
|
+
* A bare createChannel embedder intentionally keeps its direct local API.
|
|
3
|
+
*/
|
|
4
|
+
import type { ChannelUi } from '../../adapter/channel/ui-policy.js';
|
|
5
|
+
import type { ChannelState } from './types.js';
|
|
6
|
+
export declare function bindChannelCommands(state: ChannelState, commands: ChannelUi): void;
|
|
7
|
+
export declare function channelCommands(state: ChannelState): ChannelUi | ChannelState;
|
|
8
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,GAAG,IAAI,CAIlF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,CAE7E"}
|