@deepseek-harness-tui/dsh-tui 0.10.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +146 -2
- package/bin/dsh-tui.js +99 -33
- package/cordis.patch.yml +25 -5
- package/lib/types/adapter/channel/actions.d.ts +17 -0
- package/lib/types/adapter/channel/actions.d.ts.map +1 -0
- package/lib/types/adapter/channel/actions.js +28 -0
- package/lib/types/adapter/channel/consumer.d.ts +34 -0
- package/lib/types/adapter/channel/consumer.d.ts.map +1 -0
- package/lib/types/adapter/channel/consumer.js +87 -0
- package/lib/types/adapter/channel/features.d.ts +12 -0
- package/lib/types/adapter/channel/features.d.ts.map +1 -0
- package/lib/types/adapter/channel/features.js +41 -0
- package/lib/types/adapter/channel/host-registry.d.ts +40 -0
- package/lib/types/adapter/channel/host-registry.d.ts.map +1 -0
- package/lib/types/adapter/channel/host-registry.js +120 -0
- package/lib/types/adapter/channel/index.d.ts +22 -0
- package/lib/types/adapter/channel/index.d.ts.map +1 -0
- package/lib/types/adapter/channel/index.js +21 -0
- package/lib/types/adapter/channel/internal-token.d.ts +12 -0
- package/lib/types/adapter/channel/internal-token.d.ts.map +1 -0
- package/lib/types/adapter/channel/internal-token.js +11 -0
- package/lib/types/adapter/channel/plugins.d.ts +17 -0
- package/lib/types/adapter/channel/plugins.d.ts.map +1 -0
- package/lib/types/adapter/channel/plugins.js +47 -0
- package/lib/types/adapter/channel/projection.d.ts +15 -0
- package/lib/types/adapter/channel/projection.d.ts.map +1 -0
- package/lib/types/adapter/channel/projection.js +59 -0
- package/lib/types/adapter/channel/provider.d.ts +52 -0
- package/lib/types/adapter/channel/provider.d.ts.map +1 -0
- package/lib/types/adapter/channel/provider.js +231 -0
- package/lib/types/adapter/channel/read-view.d.ts +4 -0
- package/lib/types/adapter/channel/read-view.d.ts.map +1 -0
- package/lib/types/adapter/channel/read-view.js +132 -0
- package/lib/types/adapter/channel/session-projection.d.ts +56 -0
- package/lib/types/adapter/channel/session-projection.d.ts.map +1 -0
- package/lib/types/adapter/channel/session-projection.js +247 -0
- package/lib/types/adapter/channel/state.d.ts +11 -0
- package/lib/types/adapter/channel/state.d.ts.map +1 -0
- package/lib/types/adapter/channel/state.js +55 -0
- package/lib/types/adapter/channel/transcript.d.ts +15 -0
- package/lib/types/adapter/channel/transcript.d.ts.map +1 -0
- package/lib/types/adapter/channel/transcript.js +22 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +106 -0
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -0
- package/lib/types/adapter/channel/ui-policy.js +166 -0
- package/lib/types/adapter/channel/ui.d.ts +16 -0
- package/lib/types/adapter/channel/ui.d.ts.map +1 -0
- package/lib/types/adapter/channel/ui.js +168 -0
- package/lib/types/adapter/index.d.ts +20 -0
- package/lib/types/adapter/index.d.ts.map +1 -0
- package/lib/types/adapter/index.js +19 -0
- package/lib/types/adapter/kernel/contract-catalog.d.ts +12 -0
- package/lib/types/adapter/kernel/contract-catalog.d.ts.map +1 -0
- package/lib/types/adapter/kernel/contract-catalog.js +11 -0
- package/lib/types/adapter/kernel/diagnostics.d.ts +18 -0
- package/lib/types/adapter/kernel/diagnostics.d.ts.map +1 -0
- package/lib/types/adapter/kernel/diagnostics.js +16 -0
- package/lib/types/adapter/kernel/driver-types.d.ts +16 -0
- package/lib/types/adapter/kernel/driver-types.d.ts.map +1 -0
- package/lib/types/adapter/kernel/driver-types.js +8 -0
- package/lib/types/adapter/kernel/host-facade.d.ts +65 -0
- package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -0
- package/lib/types/adapter/kernel/host-facade.js +215 -0
- package/lib/types/adapter/kernel/host-probe-access.d.ts +71 -0
- package/lib/types/adapter/kernel/host-probe-access.d.ts.map +1 -0
- package/lib/types/adapter/kernel/host-probe-access.js +121 -0
- package/lib/types/adapter/kernel/index.d.ts +20 -0
- package/lib/types/adapter/kernel/index.d.ts.map +1 -0
- package/lib/types/adapter/kernel/index.js +19 -0
- package/lib/types/adapter/kernel/kernel-runtime.d.ts +138 -0
- package/lib/types/adapter/kernel/kernel-runtime.d.ts.map +1 -0
- package/lib/types/adapter/kernel/kernel-runtime.js +572 -0
- package/lib/types/adapter/kernel/ledger.d.ts +55 -0
- package/lib/types/adapter/kernel/ledger.d.ts.map +1 -0
- package/lib/types/adapter/kernel/ledger.js +33 -0
- package/lib/types/adapter/kernel/legacy-facade.d.ts +22 -0
- package/lib/types/adapter/kernel/legacy-facade.d.ts.map +1 -0
- package/lib/types/adapter/kernel/legacy-facade.js +34 -0
- package/lib/types/adapter/kernel/lifecycle.d.ts +38 -0
- package/lib/types/adapter/kernel/lifecycle.d.ts.map +1 -0
- package/lib/types/adapter/kernel/lifecycle.js +53 -0
- package/lib/types/adapter/kernel/replay-isolation.d.ts +27 -0
- package/lib/types/adapter/kernel/replay-isolation.d.ts.map +1 -0
- package/lib/types/adapter/kernel/replay-isolation.js +45 -0
- package/lib/types/adapter/kernel/replay.d.ts +132 -0
- package/lib/types/adapter/kernel/replay.d.ts.map +1 -0
- package/lib/types/adapter/kernel/replay.js +425 -0
- package/lib/types/adapter/kernel/runtime-context.d.ts +15 -0
- package/lib/types/adapter/kernel/runtime-context.d.ts.map +1 -0
- package/lib/types/adapter/kernel/runtime-context.js +24 -0
- package/lib/types/adapter/kernel/runtime.d.ts +70 -0
- package/lib/types/adapter/kernel/runtime.d.ts.map +1 -0
- package/lib/types/adapter/kernel/runtime.js +325 -0
- package/lib/types/adapter/kernel/slices/channel.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/channel.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/channel.js +8 -0
- package/lib/types/adapter/kernel/slices/decisions.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/decisions.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/decisions.js +10 -0
- package/lib/types/adapter/kernel/slices/extensions.d.ts +8 -0
- package/lib/types/adapter/kernel/slices/extensions.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/extensions.js +43 -0
- package/lib/types/adapter/kernel/slices/index.d.ts +19 -0
- package/lib/types/adapter/kernel/slices/index.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/index.js +36 -0
- package/lib/types/adapter/kernel/slices/presentation.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/presentation.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/presentation.js +14 -0
- package/lib/types/adapter/kernel/slices/scenes.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/scenes.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/scenes.js +14 -0
- package/lib/types/adapter/kernel/slices/settings.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/settings.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/settings.js +12 -0
- package/lib/types/adapter/kernel/slices/types.d.ts +20 -0
- package/lib/types/adapter/kernel/slices/types.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/types.js +12 -0
- package/lib/types/adapter/kernel/slices/workspace.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/workspace.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/workspace.js +15 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts +90 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-catalog.js +2 -0
- package/lib/types/adapter/ports/channel-display.d.ts +90 -0
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-display.js +2 -0
- package/lib/types/adapter/ports/channel-session.d.ts +227 -0
- package/lib/types/adapter/ports/channel-session.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-session.js +2 -0
- package/lib/types/adapter/ports/channel-settings.d.ts +273 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-settings.js +1 -0
- package/lib/types/adapter/ports/channel-ui.d.ts +569 -0
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-ui.js +1 -0
- package/lib/types/adapter/ports/channel-view.d.ts +609 -0
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-view.js +2 -0
- package/lib/types/adapter/ports/channel-workspace.d.ts +45 -0
- package/lib/types/adapter/ports/channel-workspace.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-workspace.js +2 -0
- package/lib/types/adapter/ports/channel.d.ts +145 -0
- package/lib/types/adapter/ports/channel.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel.js +22 -0
- package/lib/types/adapter/ports/decisions.d.ts +18 -0
- package/lib/types/adapter/ports/decisions.d.ts.map +1 -0
- package/lib/types/adapter/ports/decisions.js +9 -0
- package/lib/types/adapter/ports/descriptor.d.ts +25 -0
- package/lib/types/adapter/ports/descriptor.d.ts.map +1 -0
- package/lib/types/adapter/ports/descriptor.js +11 -0
- package/lib/types/adapter/ports/extensions.d.ts +86 -0
- package/lib/types/adapter/ports/extensions.d.ts.map +1 -0
- package/lib/types/adapter/ports/extensions.js +9 -0
- package/lib/types/adapter/ports/index.d.ts +23 -0
- package/lib/types/adapter/ports/index.d.ts.map +1 -0
- package/lib/types/adapter/ports/index.js +14 -0
- package/lib/types/adapter/ports/owner.d.ts +19 -0
- package/lib/types/adapter/ports/owner.d.ts.map +1 -0
- package/lib/types/adapter/ports/owner.js +9 -0
- package/lib/types/adapter/ports/presentation.d.ts +81 -0
- package/lib/types/adapter/ports/presentation.d.ts.map +1 -0
- package/lib/types/adapter/ports/presentation.js +10 -0
- package/lib/types/adapter/ports/scenes.d.ts +24 -0
- package/lib/types/adapter/ports/scenes.d.ts.map +1 -0
- package/lib/types/adapter/ports/scenes.js +8 -0
- package/lib/types/adapter/ports/settings.d.ts +44 -0
- package/lib/types/adapter/ports/settings.d.ts.map +1 -0
- package/lib/types/adapter/ports/settings.js +9 -0
- package/lib/types/adapter/ports/workspace.d.ts +60 -0
- package/lib/types/adapter/ports/workspace.d.ts.map +1 -0
- package/lib/types/adapter/ports/workspace.js +8 -0
- package/lib/types/adapter/spec/index.d.ts +11 -0
- package/lib/types/adapter/spec/index.d.ts.map +1 -0
- package/lib/types/adapter/spec/index.js +10 -0
- package/lib/types/adapter/spec/profile.d.ts +10 -0
- package/lib/types/adapter/spec/profile.d.ts.map +1 -0
- package/lib/types/adapter/spec/profile.js +9 -0
- package/lib/types/adapter/spec/protocol-constants.d.ts +60 -0
- package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -0
- package/lib/types/adapter/spec/protocol-constants.js +129 -0
- package/lib/types/adapter/spec/tui-contributions.d.ts +18 -0
- package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -0
- package/lib/types/adapter/spec/tui-contributions.js +19 -0
- package/lib/types/adapter/standard/admission.d.ts +11 -0
- package/lib/types/adapter/standard/admission.d.ts.map +1 -0
- package/lib/types/adapter/standard/admission.js +10 -0
- package/lib/types/adapter/standard/descriptor.d.ts +74 -0
- package/lib/types/adapter/standard/descriptor.d.ts.map +1 -0
- package/lib/types/adapter/standard/descriptor.js +356 -0
- package/lib/types/{dsh-adapter → adapter/standard}/grants.d.ts +8 -3
- package/lib/types/adapter/standard/grants.d.ts.map +1 -0
- package/lib/types/{dsh-adapter → adapter/standard}/grants.js +14 -8
- package/lib/types/adapter/standard/index.d.ts +25 -0
- package/lib/types/adapter/standard/index.d.ts.map +1 -0
- package/lib/types/adapter/standard/index.js +24 -0
- package/lib/types/adapter/standard/negotiate.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/permission-scope.d.ts +3 -8
- package/lib/types/adapter/standard/permission-scope.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/permission-scope.js +4 -26
- package/lib/types/adapter/standard/protocols.d.ts +12 -0
- package/lib/types/adapter/standard/protocols.d.ts.map +1 -0
- package/lib/types/adapter/standard/protocols.js +11 -0
- package/lib/types/adapter/standard/registry.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/registry.js +3 -15
- package/lib/types/adapter/standard/schema-check.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/schema-check.js +4 -2
- package/lib/types/adapter/standard/tui-extension.d.ts +25 -0
- package/lib/types/adapter/standard/tui-extension.d.ts.map +1 -0
- package/lib/types/adapter/standard/tui-extension.js +45 -0
- package/lib/types/{plugin-spec → adapter/standard}/types.d.ts +3 -9
- package/lib/types/adapter/standard/types.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/validate.d.ts +3 -3
- package/lib/types/adapter/standard/validate.d.ts.map +1 -0
- package/lib/types/{plugin-spec → adapter/standard}/validate.js +14 -13
- package/lib/types/adapter/upstream/channel-driver.d.ts +22 -0
- package/lib/types/adapter/upstream/channel-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/channel-driver.js +424 -0
- package/lib/types/adapter/upstream/decisions-driver.d.ts +15 -0
- package/lib/types/adapter/upstream/decisions-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/decisions-driver.js +141 -0
- package/lib/types/adapter/upstream/detection.d.ts +26 -0
- package/lib/types/adapter/upstream/detection.d.ts.map +1 -0
- package/lib/types/adapter/upstream/detection.js +9 -0
- package/lib/types/adapter/upstream/driver.d.ts +50 -0
- package/lib/types/adapter/upstream/driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/driver.js +8 -0
- package/lib/types/adapter/upstream/extensions-driver.d.ts +24 -0
- package/lib/types/adapter/upstream/extensions-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/extensions-driver.js +697 -0
- package/lib/types/adapter/upstream/host-descriptor-driver.d.ts +45 -0
- package/lib/types/adapter/upstream/host-descriptor-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/host-descriptor-driver.js +606 -0
- package/lib/types/adapter/upstream/index.d.ts +18 -0
- package/lib/types/adapter/upstream/index.d.ts.map +1 -0
- package/lib/types/adapter/upstream/index.js +15 -0
- package/lib/types/adapter/upstream/presentation-driver.d.ts +17 -0
- package/lib/types/adapter/upstream/presentation-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/presentation-driver.js +129 -0
- package/lib/types/adapter/upstream/scenes-driver.d.ts +18 -0
- package/lib/types/adapter/upstream/scenes-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/scenes-driver.js +170 -0
- package/lib/types/adapter/upstream/settings-driver.d.ts +20 -0
- package/lib/types/adapter/upstream/settings-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/settings-driver.js +173 -0
- package/lib/types/adapter/upstream/workspace-driver.d.ts +19 -0
- package/lib/types/adapter/upstream/workspace-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/workspace-driver.js +190 -0
- package/lib/types/api.d.ts +1 -1
- package/lib/types/api.d.ts.map +1 -1
- package/lib/types/commands.d.ts +2 -41
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +1 -1
- package/lib/types/components/GoalTodoPanel.d.ts +2 -1
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/HistorySearchDialog.d.ts.map +1 -1
- package/lib/types/components/HistorySearchDialog.js +7 -5
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +36 -8
- package/lib/types/components/ModelPicker.d.ts +1 -1
- package/lib/types/components/ModelPicker.d.ts.map +1 -1
- package/lib/types/components/ModelPicker.js +8 -4
- package/lib/types/components/OverlayAbove.d.ts +22 -1
- package/lib/types/components/OverlayAbove.d.ts.map +1 -1
- package/lib/types/components/OverlayAbove.js +74 -5
- package/lib/types/components/PromptInput.d.ts +2 -1
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/RewindPicker.d.ts.map +1 -1
- package/lib/types/components/RewindPicker.js +14 -6
- package/lib/types/components/SkillsPicker.d.ts.map +1 -1
- package/lib/types/components/SkillsPicker.js +6 -4
- package/lib/types/components/Spinner/spinnerMode.d.ts +1 -5
- package/lib/types/components/Spinner/spinnerMode.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemedBox.d.ts +4 -2
- package/lib/types/components/design-system/ThemedBox.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemedBox.js +2 -2
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +69 -25
- package/lib/types/components/overlayBudget.d.ts +39 -0
- package/lib/types/components/overlayBudget.d.ts.map +1 -0
- package/lib/types/components/overlayBudget.js +43 -0
- package/lib/types/deepseekBalance.d.ts +2 -36
- package/lib/types/deepseekBalance.d.ts.map +1 -1
- package/lib/types/deepseekBalance.js +0 -14
- package/lib/types/deepseekPricing.d.ts +2 -1
- package/lib/types/deepseekPricing.d.ts.map +1 -1
- package/lib/types/deepseekPricing.js +8 -1
- package/lib/types/dsh-adapter/approvals.d.ts +11 -1
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
- package/lib/types/dsh-adapter/approvals.js +32 -12
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/action-readiness.js +83 -0
- package/lib/types/dsh-adapter/channel/activity.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/activity.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/activity.js +113 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +64 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.js +295 -0
- package/lib/types/dsh-adapter/channel/background-action.d.ts +41 -0
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/background-action.js +86 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +60 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/binding-events.js +159 -0
- package/lib/types/dsh-adapter/channel/binding.d.ts +41 -0
- package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/binding.js +227 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts +29 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/command-completions.js +94 -0
- package/lib/types/dsh-adapter/channel/commands.d.ts +8 -0
- package/lib/types/dsh-adapter/channel/commands.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/commands.js +9 -0
- package/lib/types/dsh-adapter/channel/compaction.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/compaction.js +116 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts +57 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/composer-images.js +217 -0
- package/lib/types/dsh-adapter/channel/composer-mentions.d.ts +15 -0
- package/lib/types/dsh-adapter/channel/composer-mentions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/composer-mentions.js +200 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +26 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.js +30 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/decisions.js +90 -0
- package/lib/types/dsh-adapter/channel/emitter.d.ts +10 -0
- package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/emitter.js +71 -0
- package/lib/types/dsh-adapter/channel/external-commands.d.ts +31 -0
- package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/external-commands.js +187 -0
- package/lib/types/dsh-adapter/channel/file-actions.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/file-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/file-actions.js +45 -0
- package/lib/types/dsh-adapter/channel/input-actions.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/input-actions.js +135 -0
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +34 -0
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/input-delivery.js +241 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts +28 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/job-projection.js +150 -0
- package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/lifetime-resources.js +33 -0
- package/lib/types/dsh-adapter/channel/loaded-context.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/loaded-context.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/loaded-context.js +62 -0
- package/lib/types/dsh-adapter/channel/local-actions.d.ts +70 -0
- package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/local-actions.js +108 -0
- package/lib/types/dsh-adapter/channel/mentions.d.ts +29 -0
- package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mentions.js +235 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +30 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-actions.js +247 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +35 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.js +199 -0
- package/lib/types/dsh-adapter/channel/mode-permission.d.ts +58 -0
- package/lib/types/dsh-adapter/channel/mode-permission.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-permission.js +240 -0
- package/lib/types/dsh-adapter/channel/mode-roster.d.ts +51 -0
- package/lib/types/dsh-adapter/channel/mode-roster.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-roster.js +119 -0
- package/lib/types/dsh-adapter/channel/model-actions.d.ts +46 -0
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/model-actions.js +275 -0
- package/lib/types/dsh-adapter/channel/model-switch.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/model-switch.js +98 -0
- package/lib/types/dsh-adapter/channel/notifications.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/notifications.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/notifications.js +24 -0
- package/lib/types/dsh-adapter/channel/owner.d.ts +18 -0
- package/lib/types/dsh-adapter/channel/owner.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/owner.js +73 -0
- package/lib/types/dsh-adapter/channel/paths.d.ts +31 -0
- package/lib/types/dsh-adapter/channel/paths.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/paths.js +147 -0
- package/lib/types/dsh-adapter/channel/permissions.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/permissions.js +184 -0
- package/lib/types/dsh-adapter/channel/preferences.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/preferences.js +103 -0
- package/lib/types/dsh-adapter/channel/projection-helpers.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/projection-helpers.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/projection-helpers.js +63 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/projection.js +1021 -0
- package/lib/types/dsh-adapter/channel/reports.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/reports.js +171 -0
- package/lib/types/dsh-adapter/channel/session-actions.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/session-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-actions.js +29 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-adoption.js +35 -0
- package/lib/types/dsh-adapter/channel/session-fork.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-fork.js +85 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.js +62 -0
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +81 -0
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-metadata.js +209 -0
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +11 -0
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-reset.js +44 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts +56 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-resume.js +240 -0
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-rewind.js +121 -0
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-tree-actions.js +132 -0
- package/lib/types/dsh-adapter/channel/session-tree.d.ts +10 -0
- package/lib/types/dsh-adapter/channel/session-tree.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-tree.js +503 -0
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +4 -0
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/settings-host.js +256 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +27 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.js +183 -0
- package/lib/types/dsh-adapter/channel/state.d.ts +46 -0
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/state.js +31 -0
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +47 -0
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/subagent-projection.js +140 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts +73 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/transcript.js +312 -0
- package/lib/types/dsh-adapter/channel/types.d.ts +162 -0
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/types.js +1 -0
- package/lib/types/dsh-adapter/channel/usage.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/usage.js +48 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.js +56 -0
- package/lib/types/dsh-adapter/channel-facade-actions.d.ts +25 -0
- package/lib/types/dsh-adapter/channel-facade-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel-facade-actions.js +55 -0
- package/lib/types/dsh-adapter/channel-scene-outlet.d.ts +6 -0
- package/lib/types/dsh-adapter/channel-scene-outlet.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel-scene-outlet.js +13 -0
- package/lib/types/dsh-adapter/channel-ui.d.ts +9 -0
- package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel-ui.js +128 -0
- package/lib/types/dsh-adapter/channel.d.ts +9 -1525
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +750 -8145
- package/lib/types/dsh-adapter/command-trees.d.ts +1 -0
- package/lib/types/dsh-adapter/command-trees.d.ts.map +1 -1
- package/lib/types/dsh-adapter/command-trees.js +20 -1
- package/lib/types/dsh-adapter/compat/liveSession.d.ts +3 -1
- package/lib/types/dsh-adapter/compat/liveSession.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/liveSession.js +23 -0
- package/lib/types/dsh-adapter/compat/persistence.d.ts +21 -0
- package/lib/types/dsh-adapter/compat/persistence.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/persistence.js +17 -0
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts +50 -11
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/sessionLog.js +325 -36
- package/lib/types/dsh-adapter/component-identity.d.ts +1 -1
- package/lib/types/dsh-adapter/component-identity.d.ts.map +1 -1
- package/lib/types/dsh-adapter/component-identity.js +1 -1
- package/lib/types/dsh-adapter/contract.d.ts +11 -9
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +19 -12
- package/lib/types/dsh-adapter/decision-guard.d.ts +56 -12
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/decision-guard.js +134 -22
- package/lib/types/dsh-adapter/dialogs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/dialogs.js +13 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts +5 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -1
- package/lib/types/dsh-adapter/effect-ledger.js +53 -15
- package/lib/types/dsh-adapter/extension-events.d.ts +2 -9
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/extension-events.js +0 -20
- package/lib/types/dsh-adapter/extensions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/extensions.js +3 -2
- package/lib/types/dsh-adapter/host-grants.d.ts +23 -0
- package/lib/types/dsh-adapter/host-grants.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-grants.js +45 -0
- package/lib/types/dsh-adapter/jobs.d.ts +2 -46
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +0 -25
- package/lib/types/dsh-adapter/message-observer.d.ts +15 -2
- package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -1
- package/lib/types/dsh-adapter/message-observer.js +157 -28
- package/lib/types/dsh-adapter/plugin-host.d.ts +80 -11
- package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-host.js +438 -41
- package/lib/types/dsh-adapter/plugin-storage.d.ts +11 -1
- package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-storage.js +150 -11
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +75 -34
- package/lib/types/dsh-adapter/plugins-info.d.ts +2 -2
- package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugins-info.js +11 -6
- package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
- package/lib/types/dsh-adapter/presets.js +3 -2
- package/lib/types/dsh-adapter/providerWizard.d.ts +2 -159
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.d.ts +8 -0
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.js +18 -0
- package/lib/types/dsh-adapter/recap.d.ts +1 -9
- package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
- package/lib/types/dsh-adapter/recap.js +0 -14
- package/lib/types/dsh-adapter/renderers.d.ts +1 -0
- package/lib/types/dsh-adapter/renderers.d.ts.map +1 -1
- package/lib/types/dsh-adapter/renderers.js +26 -1
- package/lib/types/dsh-adapter/scenes.d.ts +3 -1
- package/lib/types/dsh-adapter/scenes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/scenes.js +31 -0
- package/lib/types/dsh-adapter/sessionTree.d.ts +14 -95
- package/lib/types/dsh-adapter/sessionTree.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessionTree.js +51 -36
- package/lib/types/dsh-adapter/sessions/index.d.ts +1 -1
- package/lib/types/dsh-adapter/sessions/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/index.js +1 -1
- package/lib/types/dsh-adapter/sessions/list.d.ts +23 -0
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +25 -14
- package/lib/types/dsh-adapter/sessions/types.d.ts +2 -128
- package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/types.js +0 -13
- package/lib/types/dsh-adapter/settings-sections.d.ts +4 -95
- package/lib/types/dsh-adapter/settings-sections.d.ts.map +1 -1
- package/lib/types/dsh-adapter/settings-sections.js +50 -13
- package/lib/types/dsh-adapter/settingsEditor.d.ts +2 -36
- package/lib/types/dsh-adapter/settingsEditor.d.ts.map +1 -1
- package/lib/types/dsh-adapter/settingsEditor.js +0 -18
- package/lib/types/dsh-adapter/shortcuts.d.ts +5 -0
- package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -1
- package/lib/types/dsh-adapter/shortcuts.js +49 -0
- package/lib/types/dsh-adapter/status.d.ts +5 -0
- package/lib/types/dsh-adapter/status.d.ts.map +1 -1
- package/lib/types/dsh-adapter/status.js +29 -0
- package/lib/types/dsh-adapter/subagents.d.ts +9 -49
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +92 -1
- package/lib/types/dsh-adapter/themes.d.ts +1 -0
- package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/themes.js +29 -0
- package/lib/types/dsh-adapter/toast.d.ts +13 -0
- package/lib/types/dsh-adapter/toast.d.ts.map +1 -1
- package/lib/types/dsh-adapter/toast.js +31 -1
- package/lib/types/dsh-adapter/trajectory/aggregate.d.ts +2 -1
- package/lib/types/dsh-adapter/trajectory/aggregate.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/aggregate.js +2 -1
- package/lib/types/dsh-adapter/trajectory/guards.d.ts +37 -18
- package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/guards.js +43 -5
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts +2 -2
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/projection.d.ts +31 -13
- package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/projection.js +71 -14
- package/lib/types/dsh-adapter/trajectory/types.d.ts +1 -1
- package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/transcript-images.d.ts +2 -19
- package/lib/types/dsh-adapter/transcript-images.d.ts.map +1 -1
- package/lib/types/dsh-adapter/workspaces.d.ts +2 -49
- package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -1
- package/lib/types/dsh-adapter/workspaces.js +23 -3
- package/lib/types/i18n.d.ts +19 -7
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +8 -3
- package/lib/types/ink/render-node-to-output.d.ts +24 -1
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +103 -4
- package/lib/types/ink/renderer.d.ts.map +1 -1
- package/lib/types/ink/renderer.js +14 -2
- package/lib/types/ink/styles.d.ts +12 -0
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/modelGroups.d.ts +1 -1
- package/lib/types/modelGroups.d.ts.map +1 -1
- package/lib/types/modelRoute.js +1 -1
- package/lib/types/plugin-host.d.ts +3 -4
- package/lib/types/plugin-host.d.ts.map +1 -1
- package/lib/types/plugin-host.js +8 -6
- package/lib/types/screens/AgentView.d.ts +1 -1
- package/lib/types/screens/AgentView.d.ts.map +1 -1
- package/lib/types/screens/Chat.d.ts +3 -2
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +71 -9
- package/lib/types/screens/SessionBrowser.d.ts +1 -1
- package/lib/types/screens/SessionBrowser.d.ts.map +1 -1
- package/lib/types/screens/SessionTree.d.ts +1 -1
- package/lib/types/screens/SessionTree.d.ts.map +1 -1
- package/lib/types/screens/Settings.d.ts +1 -1
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.d.ts +1 -1
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +40 -1
- package/lib/types/screens/TrajectoryScene.d.ts +1 -1
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
- package/lib/types/sessionModes.d.ts +11 -15
- package/lib/types/sessionModes.d.ts.map +1 -1
- package/lib/types/sessionModes.js +11 -0
- package/lib/types/tuiDisplayPrefs.d.ts +2 -68
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +5 -1
- package/lib/types/utils/credentials.d.ts +13 -0
- package/lib/types/utils/credentials.d.ts.map +1 -0
- package/lib/types/utils/credentials.js +41 -0
- package/lib/types/utils/fileSuggestions.d.ts +2 -9
- package/lib/types/utils/fileSuggestions.d.ts.map +1 -1
- package/lib/types/utils/fold-long-lines.d.ts +38 -0
- package/lib/types/utils/fold-long-lines.d.ts.map +1 -0
- package/lib/types/utils/fold-long-lines.js +91 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/pi-ai.d.ts +1 -1
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/profiles.js +4 -0
- package/node_modules/@deepseek-harness-tui/dsh-auth/lib/service.js +15 -2
- package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +10 -10
- package/package.json +124 -81
- package/presets/liangshen/.dsh-tui-managed.json +1 -1
- package/presets/liangshen/agent.cordis.yml +20 -4
- package/presets/liangshen/compaction-epoch.mjs +3 -1
- package/presets/liangshen/instruction-hint.mjs +2 -1
- package/presets/liangshen/session-events.mjs +8 -0
- package/lib/types/dsh-adapter/grants.d.ts.map +0 -1
- package/lib/types/dsh-adapter/host-descriptor.d.ts +0 -24
- package/lib/types/dsh-adapter/host-descriptor.d.ts.map +0 -1
- package/lib/types/dsh-adapter/host-descriptor.js +0 -169
- package/lib/types/dsh-adapter/plugin-test-utils.d.ts +0 -62
- package/lib/types/dsh-adapter/plugin-test-utils.d.ts.map +0 -1
- package/lib/types/dsh-adapter/plugin-test-utils.js +0 -61
- package/lib/types/plugin-spec/negotiate.d.ts.map +0 -1
- package/lib/types/plugin-spec/permission-scope.d.ts.map +0 -1
- package/lib/types/plugin-spec/registry.d.ts.map +0 -1
- package/lib/types/plugin-spec/schema-check.d.ts.map +0 -1
- package/lib/types/plugin-spec/tui-extension.d.ts +0 -16
- package/lib/types/plugin-spec/tui-extension.d.ts.map +0 -1
- package/lib/types/plugin-spec/tui-extension.js +0 -79
- package/lib/types/plugin-spec/types.d.ts.map +0 -1
- package/lib/types/plugin-spec/validate.d.ts.map +0 -1
- package/lib/types/test-utils.d.ts +0 -2
- package/lib/types/test-utils.d.ts.map +0 -1
- package/lib/types/test-utils.js +0 -8
- /package/lib/types/{plugin-spec → adapter/standard}/negotiate.d.ts +0 -0
- /package/lib/types/{plugin-spec → adapter/standard}/negotiate.js +0 -0
- /package/lib/types/{plugin-spec → adapter/standard}/registry.d.ts +0 -0
- /package/lib/types/{plugin-spec → adapter/standard}/schema-check.d.ts +0 -0
- /package/lib/types/{plugin-spec → adapter/standard}/types.js +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/** Channel lifetime plus binding fences for work that crosses an await. */
|
|
2
|
+
export function createChannelOwner() {
|
|
3
|
+
let active = true;
|
|
4
|
+
let externalCheck = () => true;
|
|
5
|
+
const cleanups = new Set();
|
|
6
|
+
const controller = new AbortController();
|
|
7
|
+
const current = () => {
|
|
8
|
+
if (!active)
|
|
9
|
+
return false;
|
|
10
|
+
try {
|
|
11
|
+
return externalCheck();
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const assertActive = () => {
|
|
18
|
+
if (!current())
|
|
19
|
+
throw new Error('dsh-tui: Channel lifetime has ended');
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
current, assertActive,
|
|
23
|
+
get cleanupCount() { return cleanups.size; },
|
|
24
|
+
signal: controller.signal,
|
|
25
|
+
bind(check) { externalCheck = check; },
|
|
26
|
+
own(cleanup) {
|
|
27
|
+
let released = false;
|
|
28
|
+
const release = () => {
|
|
29
|
+
if (released)
|
|
30
|
+
return;
|
|
31
|
+
released = true;
|
|
32
|
+
cleanups.delete(release);
|
|
33
|
+
cleanup();
|
|
34
|
+
};
|
|
35
|
+
if (active)
|
|
36
|
+
cleanups.add(release);
|
|
37
|
+
else
|
|
38
|
+
release();
|
|
39
|
+
return release;
|
|
40
|
+
},
|
|
41
|
+
dispose() {
|
|
42
|
+
if (!active)
|
|
43
|
+
return;
|
|
44
|
+
active = false;
|
|
45
|
+
controller.abort();
|
|
46
|
+
const failures = [];
|
|
47
|
+
// Every registered resource gets one cleanup attempt. A throwing
|
|
48
|
+
// external disposer must not strand later subscriptions or handles.
|
|
49
|
+
for (const cleanup of [...cleanups]) {
|
|
50
|
+
try {
|
|
51
|
+
cleanup();
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
failures.push(error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (failures.length === 1)
|
|
58
|
+
throw failures[0];
|
|
59
|
+
if (failures.length > 1)
|
|
60
|
+
throw new AggregateError(failures, 'dsh-tui: Channel cleanup failed');
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const owners = new WeakMap();
|
|
65
|
+
export function registerChannelOwner(channel, owner) { owners.set(channel, owner); }
|
|
66
|
+
export function bindChannelOwner(channel, check) { owners.get(channel)?.bind(check); }
|
|
67
|
+
export function channelOwnerCurrent(channel) { return owners.get(channel)?.current() ?? false; }
|
|
68
|
+
/** Register work that must be revoked whenever this Channel owner releases. */
|
|
69
|
+
export function onChannelOwnerDispose(channel, cleanup) {
|
|
70
|
+
const owner = owners.get(channel);
|
|
71
|
+
return owner === undefined ? (() => undefined) : owner.own(cleanup);
|
|
72
|
+
}
|
|
73
|
+
export function disposeChannelOwner(channel) { owners.get(channel)?.dispose(); }
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type FileCandidate } from '../../utils/fileSuggestions.js';
|
|
2
|
+
import type { FileSuggestionFs } from './types.js';
|
|
3
|
+
/** Trailing path segment (`C:/a/b` → `b`). */
|
|
4
|
+
export declare function basename(path: string): string;
|
|
5
|
+
/** Normalize a cwd for comparison: forward slashes, no trailing slash; case
|
|
6
|
+
* folded when the platform's filesystem semantics are case-insensitive. */
|
|
7
|
+
export declare function normalizeCwd(path: string, caseInsensitive: boolean): string;
|
|
8
|
+
/**
|
|
9
|
+
* `/resume` project filter (issue #96): exact cwd match, PLUS sessions
|
|
10
|
+
* recorded in a subdirectory — pre-upgrade launches recorded the launch
|
|
11
|
+
* subdirectory as the header cwd, and with the cwd default now resolving to
|
|
12
|
+
* the git worktree root an exact match would hide those sessions forever.
|
|
13
|
+
* They belong to the same workspace, so they stay listed. Comparison follows
|
|
14
|
+
* the platform's filesystem semantics (case-insensitive on Windows — a
|
|
15
|
+
* pre-upgrade header may record `C:\Repo` where the current launch resolves
|
|
16
|
+
* `c:\repo`). `caseInsensitive` is a parameter (not a platform read) so the
|
|
17
|
+
* verifier can exercise both modes on any host. Exported for
|
|
18
|
+
* scripts/verify-session-cwd.mjs.
|
|
19
|
+
*
|
|
20
|
+
* Boundary rule (issue #153): container directories are nobody's workspace.
|
|
21
|
+
* $HOME and the Windows root forms — plain drive roots (`C:`), UNC share
|
|
22
|
+
* roots (`//server/share`), and extended-length roots (`//?/C:`,
|
|
23
|
+
* `//?/UNC/server/share`) — are ancestors of unrelated projects, so the
|
|
24
|
+
* descendant rules below would list every session on the machine from `~`
|
|
25
|
+
* (and every session on the drive/share from those roots). At these
|
|
26
|
+
* boundaries, in either direction, only an exact match passes.
|
|
27
|
+
*/
|
|
28
|
+
export declare function sessionCwdMatches(stateCwd: string, headerCwd: string, caseInsensitive?: boolean): boolean;
|
|
29
|
+
export declare function listPathCandidates(fs: FileSuggestionFs, cwd: string, query: string, signal: AbortSignal | undefined, topK: number): Promise<FileCandidate[]>;
|
|
30
|
+
export declare function listFilesDeepCandidates(fs: FileSuggestionFs | undefined, root: string, signal?: AbortSignal): Promise<FileCandidate[]>;
|
|
31
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/paths.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAEvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;4EAC4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,CAG3E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,GAAE,OAAsC,GACtD,OAAO,CAwBT;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAyBlK;AAED,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,gBAAgB,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAmD5I"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { rankFileCandidates } from '../../utils/fileSuggestions.js';
|
|
3
|
+
import { homeDir } from '../../utils/paths.js';
|
|
4
|
+
/** Trailing path segment (`C:/a/b` → `b`). */
|
|
5
|
+
export function basename(path) {
|
|
6
|
+
const parts = path.split(/[\\/]/);
|
|
7
|
+
return parts[parts.length - 1] ?? path;
|
|
8
|
+
}
|
|
9
|
+
/** Normalize a cwd for comparison: forward slashes, no trailing slash; case
|
|
10
|
+
* folded when the platform's filesystem semantics are case-insensitive. */
|
|
11
|
+
export function normalizeCwd(path, caseInsensitive) {
|
|
12
|
+
const normalized = path.replace(/\\/g, '/').replace(/\/+$/, '');
|
|
13
|
+
return caseInsensitive ? normalized.toLowerCase() : normalized;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* `/resume` project filter (issue #96): exact cwd match, PLUS sessions
|
|
17
|
+
* recorded in a subdirectory — pre-upgrade launches recorded the launch
|
|
18
|
+
* subdirectory as the header cwd, and with the cwd default now resolving to
|
|
19
|
+
* the git worktree root an exact match would hide those sessions forever.
|
|
20
|
+
* They belong to the same workspace, so they stay listed. Comparison follows
|
|
21
|
+
* the platform's filesystem semantics (case-insensitive on Windows — a
|
|
22
|
+
* pre-upgrade header may record `C:\Repo` where the current launch resolves
|
|
23
|
+
* `c:\repo`). `caseInsensitive` is a parameter (not a platform read) so the
|
|
24
|
+
* verifier can exercise both modes on any host. Exported for
|
|
25
|
+
* scripts/verify-session-cwd.mjs.
|
|
26
|
+
*
|
|
27
|
+
* Boundary rule (issue #153): container directories are nobody's workspace.
|
|
28
|
+
* $HOME and the Windows root forms — plain drive roots (`C:`), UNC share
|
|
29
|
+
* roots (`//server/share`), and extended-length roots (`//?/C:`,
|
|
30
|
+
* `//?/UNC/server/share`) — are ancestors of unrelated projects, so the
|
|
31
|
+
* descendant rules below would list every session on the machine from `~`
|
|
32
|
+
* (and every session on the drive/share from those roots). At these
|
|
33
|
+
* boundaries, in either direction, only an exact match passes.
|
|
34
|
+
*/
|
|
35
|
+
export function sessionCwdMatches(stateCwd, headerCwd, caseInsensitive = process.platform === 'win32') {
|
|
36
|
+
const cwd = normalizeCwd(stateCwd, caseInsensitive);
|
|
37
|
+
const recorded = normalizeCwd(headerCwd, caseInsensitive);
|
|
38
|
+
if (recorded === '' || cwd === '')
|
|
39
|
+
return false;
|
|
40
|
+
const home = normalizeCwd(homeDir(), caseInsensitive);
|
|
41
|
+
// Paths below arrive backslash-normalized (`\\server\share` →
|
|
42
|
+
// `//server/share`, `\\?\C:\` → `//?/C:`), trailing slashes stripped.
|
|
43
|
+
const isContainer = (path) => (home !== '' && path === home) ||
|
|
44
|
+
/^[a-z]:$/i.test(path) || // drive root: C:
|
|
45
|
+
/^\/\/[^/]+\/[^/]+$/.test(path) || // UNC share root: //server/share
|
|
46
|
+
/^\/\/\?\/[a-z]:$/i.test(path) || // extended drive root: //?/C:
|
|
47
|
+
/^\/\/\?\/unc\/[^/]+\/[^/]+$/i.test(path); // extended UNC root: //?/UNC/server/share
|
|
48
|
+
if (isContainer(cwd) || isContainer(recorded))
|
|
49
|
+
return recorded === cwd;
|
|
50
|
+
return (recorded === cwd ||
|
|
51
|
+
// Pre-upgrade subdirectory session of this workspace.
|
|
52
|
+
recorded.startsWith(`${cwd}/`) ||
|
|
53
|
+
// Resumed INTO a pre-upgrade subdirectory session (state.cwd adopted its
|
|
54
|
+
// recorded subdirectory): the workspace-root sessions it belongs with
|
|
55
|
+
// must stay visible, or /resume looks like it lost them for the rest of
|
|
56
|
+
// the process lifetime (review leftover).
|
|
57
|
+
cwd.startsWith(`${recorded}/`));
|
|
58
|
+
}
|
|
59
|
+
export async function listPathCandidates(fs, cwd, query, signal, topK) {
|
|
60
|
+
const normalized = query.replaceAll('\\', '/');
|
|
61
|
+
const slash = normalized.lastIndexOf('/');
|
|
62
|
+
// `.` / `..` without a trailing separator are whole-directory queries too.
|
|
63
|
+
const bareDir = slash < 0 && (normalized === '.' || normalized === '..' || normalized === '~');
|
|
64
|
+
const directoryPart = slash < 0 ? (bareDir ? `${normalized}/` : '') : normalized.slice(0, slash + 1);
|
|
65
|
+
const nameQuery = slash < 0 || bareDir ? '' : normalized.slice(slash + 1);
|
|
66
|
+
// `~/` expands against the host home (matches the cwd resolution rules);
|
|
67
|
+
// drive-letter and POSIX-absolute prefixes pass through untouched.
|
|
68
|
+
const expanded = directoryPart === '~/'
|
|
69
|
+
? `${homeDir()}/`
|
|
70
|
+
: directoryPart.startsWith('/') || /^[A-Za-z]:\//.test(directoryPart)
|
|
71
|
+
? directoryPart
|
|
72
|
+
: join(cwd, directoryPart || '.');
|
|
73
|
+
try {
|
|
74
|
+
if (signal?.aborted)
|
|
75
|
+
return [];
|
|
76
|
+
const target = await fs.resolve(expanded);
|
|
77
|
+
const entries = (await fs.listDir(target)).slice().sort((a, b) => a.name.localeCompare(b.name));
|
|
78
|
+
return rankFileCandidates(entries.filter(entry => entry.type === 'file' || entry.type === 'directory').map(entry => {
|
|
79
|
+
const path = `${directoryPart}${entry.name}${entry.type === 'directory' ? '/' : ''}`;
|
|
80
|
+
return { id: path, path, displayPath: path, name: entry.name, kind: entry.type, score: 0 };
|
|
81
|
+
}), nameQuery, topK);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export async function listFilesDeepCandidates(fs, root, signal) {
|
|
88
|
+
if (!fs)
|
|
89
|
+
return [];
|
|
90
|
+
const out = [];
|
|
91
|
+
const SKIP = new Set(['node_modules', '.git', '.hg', '.svn', '.DS_Store', 'dist']);
|
|
92
|
+
const BUILD_DIR = /^(?:build(?:[-_].*)?|cmake-build(?:[-_].*)?)$/i;
|
|
93
|
+
const queue = [{ dir: root, prefix: '', index: 0 }];
|
|
94
|
+
const visited = new Set();
|
|
95
|
+
const maxFiles = 100;
|
|
96
|
+
const maxDirectories = 100;
|
|
97
|
+
let fileCount = 0;
|
|
98
|
+
let dirCount = 0;
|
|
99
|
+
// Round-robin: each directory yields ONE non-skipped entry per visit before
|
|
100
|
+
// it re-queues, so a large early sibling (e.g. `generated/` with 120 files)
|
|
101
|
+
// cannot starve `src/` out of the per-kind budgets. This is the regression
|
|
102
|
+
// contract pinned by scripts/verify-file-completion.mjs.
|
|
103
|
+
while (queue.length && fileCount < maxFiles && dirCount < maxDirectories) {
|
|
104
|
+
if (signal?.aborted)
|
|
105
|
+
return [];
|
|
106
|
+
const current = queue.shift();
|
|
107
|
+
if (!current.entries) {
|
|
108
|
+
try {
|
|
109
|
+
const target = await fs.resolve(current.dir);
|
|
110
|
+
if (visited.has(target.displayPath))
|
|
111
|
+
continue;
|
|
112
|
+
visited.add(target.displayPath);
|
|
113
|
+
current.entries = (await fs.listDir(target)).slice().sort((a, b) => a.name.localeCompare(b.name));
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
let entry;
|
|
120
|
+
while (current.index < current.entries.length) {
|
|
121
|
+
const candidate = current.entries[current.index++];
|
|
122
|
+
if (SKIP.has(candidate.name) || BUILD_DIR.test(candidate.name))
|
|
123
|
+
continue;
|
|
124
|
+
entry = candidate;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
if (!entry)
|
|
128
|
+
continue;
|
|
129
|
+
if (current.index < current.entries.length)
|
|
130
|
+
queue.push(current);
|
|
131
|
+
const path = current.prefix ? `${current.prefix}/${entry.name}` : entry.name;
|
|
132
|
+
if (entry.type === 'directory') {
|
|
133
|
+
if (dirCount >= maxDirectories)
|
|
134
|
+
continue;
|
|
135
|
+
out.push({ id: `${path}/`, path: `${path}/`, displayPath: `${path}/`, name: entry.name, kind: 'directory', score: 0 });
|
|
136
|
+
dirCount += 1;
|
|
137
|
+
queue.push({ dir: entry.target?.displayPath ?? join(current.dir, entry.name), prefix: path, index: 0 });
|
|
138
|
+
}
|
|
139
|
+
else if (entry.type === 'file') {
|
|
140
|
+
if (fileCount >= maxFiles)
|
|
141
|
+
continue;
|
|
142
|
+
out.push({ id: path, path, displayPath: path, name: entry.name, kind: 'file', score: 0 });
|
|
143
|
+
fileCount += 1;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return out.sort((a, b) => a.path.localeCompare(b.path));
|
|
147
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type SessionModeSpec } from '../../sessionModes.js';
|
|
2
|
+
import type { PermissionPresetOption, PermissionPresetService, PermissionPresetSnapshot } from './types.js';
|
|
3
|
+
export declare const PERMISSION_PRESET_CUSTOM = "custom";
|
|
4
|
+
export declare const PERMISSION_PRESET_NAME_CELLS = 120;
|
|
5
|
+
export declare const PERMISSION_PRESET_DESCRIPTION_CELLS = 400;
|
|
6
|
+
/** The mounted registry may expose seams this package's declared contract
|
|
7
|
+
* does not name yet: `resolve` (atom bundles) and `set` (the write path the
|
|
8
|
+
* official `/permission` command drives). Read structurally, never assumed. */
|
|
9
|
+
export interface PermissionPresetRuntime extends PermissionPresetService {
|
|
10
|
+
resolve?: (name: string) => unknown;
|
|
11
|
+
set?: (subject: unknown, name: string) => unknown;
|
|
12
|
+
}
|
|
13
|
+
/** One runtime preset's resolved atom bundle. */
|
|
14
|
+
export interface PermissionPresetBundle {
|
|
15
|
+
readonly value: string;
|
|
16
|
+
readonly sandbox?: SessionModeSpec['sandbox'];
|
|
17
|
+
readonly approval?: SessionModeSpec['approval'];
|
|
18
|
+
}
|
|
19
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
20
|
+
/** Narrow a raw service read to the structural registry surface. */
|
|
21
|
+
export declare function permissionPresetRuntime(service: unknown): PermissionPresetRuntime | undefined;
|
|
22
|
+
/** Keep a permission roster read-only after it crosses the adapter boundary.
|
|
23
|
+
* The registry may reuse and mutate its option objects between reads; callers
|
|
24
|
+
* must observe one stable snapshot instead of a live view into that service. */
|
|
25
|
+
export declare function freezePermissionPresetSnapshot(snapshot: PermissionPresetSnapshot): PermissionPresetSnapshot;
|
|
26
|
+
export declare function legacyPermissionPresetOptions(): readonly PermissionPresetOption[];
|
|
27
|
+
export declare function legacyPermissionPresetSnapshot(sandbox: SessionModeSpec['sandbox']): PermissionPresetSnapshot;
|
|
28
|
+
export declare function unavailablePermissionPresetSnapshot(): PermissionPresetSnapshot;
|
|
29
|
+
export declare function normalizePermissionPresetOption(value: unknown): PermissionPresetOption | undefined;
|
|
30
|
+
/** Atom bundles the deployment's preset table resolves (value →
|
|
31
|
+
* sandbox/approval). Empty when the service is absent or exposes no
|
|
32
|
+
* `resolve` seam — canonical resolution then falls back to the stock
|
|
33
|
+
* bundles (see `canonicalPresetFor`). */
|
|
34
|
+
export declare function permissionBundlesFromService(service: unknown): readonly PermissionPresetBundle[];
|
|
35
|
+
/** The registry's current readback for one subject. Real harness registries
|
|
36
|
+
* resolve `current(session)` through their session-projections seam; earlier
|
|
37
|
+
* contract versions folded a raw event log. Try the subject as given, then
|
|
38
|
+
* the event-log shape it may carry. */
|
|
39
|
+
export declare function permissionPresetSnapshotFromService(service: unknown, subject: unknown): PermissionPresetSnapshot;
|
|
40
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAE3G,eAAO,MAAM,wBAAwB,WAAW,CAAA;AAEhD,eAAO,MAAM,4BAA4B,MAAM,CAAA;AAE/C,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD;;gFAEgF;AAChF,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACnC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CAClD;AAED,iDAAiD;AACjD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAA;CAChD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,oEAAoE;AACpE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,CAE7F;AAED;;iFAEiF;AACjF,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,wBAAwB,GAAG,wBAAwB,CAQ3G;AAED,wBAAgB,6BAA6B,IAAI,SAAS,sBAAsB,EAAE,CAkBjF;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,wBAAwB,CAU5G;AAED,wBAAgB,mCAAmC,IAAI,wBAAwB,CAE9E;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,GAAG,SAAS,CAclG;AAED;;;0CAG0C;AAC1C,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,sBAAsB,EAAE,CAwBhG;AAED;;;wCAGwC;AACxC,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf,wBAAwB,CAqE1B"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { t } from '../../i18n.js';
|
|
2
|
+
import { cleanRenderText } from '../sanitize.js';
|
|
3
|
+
export const PERMISSION_PRESET_CUSTOM = 'custom';
|
|
4
|
+
export const PERMISSION_PRESET_NAME_CELLS = 120;
|
|
5
|
+
export const PERMISSION_PRESET_DESCRIPTION_CELLS = 400;
|
|
6
|
+
export function isRecord(value) {
|
|
7
|
+
return value !== null && typeof value === 'object';
|
|
8
|
+
}
|
|
9
|
+
/** Narrow a raw service read to the structural registry surface. */
|
|
10
|
+
export function permissionPresetRuntime(service) {
|
|
11
|
+
return isRecord(service) ? service : undefined;
|
|
12
|
+
}
|
|
13
|
+
/** Keep a permission roster read-only after it crosses the adapter boundary.
|
|
14
|
+
* The registry may reuse and mutate its option objects between reads; callers
|
|
15
|
+
* must observe one stable snapshot instead of a live view into that service. */
|
|
16
|
+
export function freezePermissionPresetSnapshot(snapshot) {
|
|
17
|
+
const options = Object.freeze(snapshot.options.map(option => Object.freeze({ ...option })));
|
|
18
|
+
const current = snapshot.current === undefined ? undefined : Object.freeze({ ...snapshot.current });
|
|
19
|
+
return Object.freeze({
|
|
20
|
+
availability: snapshot.availability,
|
|
21
|
+
options,
|
|
22
|
+
...(current === undefined ? {} : { current }),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export function legacyPermissionPresetOptions() {
|
|
26
|
+
return [
|
|
27
|
+
{
|
|
28
|
+
value: 'read-only',
|
|
29
|
+
name: t('permission-preset-readonly'),
|
|
30
|
+
description: t('permission-preset-readonly-desc'),
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
value: 'workspace-write',
|
|
34
|
+
name: t('permission-preset-workspace-write'),
|
|
35
|
+
description: t('permission-preset-workspace-write-desc'),
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
value: 'danger-full-access',
|
|
39
|
+
name: t('permission-preset-full-access'),
|
|
40
|
+
description: t('permission-preset-full-access-desc'),
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
export function legacyPermissionPresetSnapshot(sandbox) {
|
|
45
|
+
const options = legacyPermissionPresetOptions();
|
|
46
|
+
const currentOption = sandbox === undefined ? undefined : options.find(option => option.value === sandbox);
|
|
47
|
+
return freezePermissionPresetSnapshot({
|
|
48
|
+
availability: 'legacy',
|
|
49
|
+
options,
|
|
50
|
+
...(currentOption === undefined
|
|
51
|
+
? {}
|
|
52
|
+
: { current: { ...currentOption, kind: 'preset' } }),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export function unavailablePermissionPresetSnapshot() {
|
|
56
|
+
return freezePermissionPresetSnapshot({ availability: 'unavailable', options: [] });
|
|
57
|
+
}
|
|
58
|
+
export function normalizePermissionPresetOption(value) {
|
|
59
|
+
if (!isRecord(value) || typeof value.value !== 'string' || typeof value.name !== 'string')
|
|
60
|
+
return undefined;
|
|
61
|
+
const name = cleanRenderText(value.name, PERMISSION_PRESET_NAME_CELLS);
|
|
62
|
+
if (name === '')
|
|
63
|
+
return undefined;
|
|
64
|
+
if (value.description !== undefined && typeof value.description !== 'string')
|
|
65
|
+
return undefined;
|
|
66
|
+
const description = value.description === undefined
|
|
67
|
+
? undefined
|
|
68
|
+
: cleanRenderText(value.description, PERMISSION_PRESET_DESCRIPTION_CELLS);
|
|
69
|
+
if (value.description !== undefined && description === '')
|
|
70
|
+
return undefined;
|
|
71
|
+
return {
|
|
72
|
+
value: value.value,
|
|
73
|
+
name,
|
|
74
|
+
...(description === undefined || description === '' ? {} : { description }),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** Atom bundles the deployment's preset table resolves (value →
|
|
78
|
+
* sandbox/approval). Empty when the service is absent or exposes no
|
|
79
|
+
* `resolve` seam — canonical resolution then falls back to the stock
|
|
80
|
+
* bundles (see `canonicalPresetFor`). */
|
|
81
|
+
export function permissionBundlesFromService(service) {
|
|
82
|
+
const runtime = permissionPresetRuntime(service);
|
|
83
|
+
const resolve = runtime?.resolve;
|
|
84
|
+
if (typeof resolve !== 'function')
|
|
85
|
+
return [];
|
|
86
|
+
const names = Array.isArray(runtime?.names) ? runtime.names : [];
|
|
87
|
+
const bundles = [];
|
|
88
|
+
for (const name of names) {
|
|
89
|
+
if (typeof name !== 'string')
|
|
90
|
+
continue;
|
|
91
|
+
try {
|
|
92
|
+
const spec = resolve(name);
|
|
93
|
+
if (!isRecord(spec))
|
|
94
|
+
continue;
|
|
95
|
+
const sandbox = spec.sandbox;
|
|
96
|
+
const approval = spec.approval;
|
|
97
|
+
if ((sandbox === 'read-only' || sandbox === 'workspace-write' || sandbox === 'danger-full-access')
|
|
98
|
+
&& (approval === 'ask' || approval === 'never')) {
|
|
99
|
+
bundles.push({ value: name, sandbox, approval });
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Optional resolution; a broken entry just does not extend the table.
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return bundles;
|
|
107
|
+
}
|
|
108
|
+
/** The registry's current readback for one subject. Real harness registries
|
|
109
|
+
* resolve `current(session)` through their session-projections seam; earlier
|
|
110
|
+
* contract versions folded a raw event log. Try the subject as given, then
|
|
111
|
+
* the event-log shape it may carry. */
|
|
112
|
+
export function permissionPresetSnapshotFromService(service, subject) {
|
|
113
|
+
const runtime = permissionPresetRuntime(service);
|
|
114
|
+
if (runtime === undefined)
|
|
115
|
+
return unavailablePermissionPresetSnapshot();
|
|
116
|
+
try {
|
|
117
|
+
const capturedNames = Array.isArray(runtime.names) ? runtime.names : [];
|
|
118
|
+
const current = runtime.current;
|
|
119
|
+
const optionOf = runtime.optionOf;
|
|
120
|
+
if (capturedNames.length === 0)
|
|
121
|
+
return unavailablePermissionPresetSnapshot();
|
|
122
|
+
if (typeof current !== 'function' || typeof optionOf !== 'function')
|
|
123
|
+
return unavailablePermissionPresetSnapshot();
|
|
124
|
+
const names = [];
|
|
125
|
+
for (const name of capturedNames) {
|
|
126
|
+
if (typeof name !== 'string' || name.trim() === '' || name === PERMISSION_PRESET_CUSTOM || names.includes(name)) {
|
|
127
|
+
return unavailablePermissionPresetSnapshot();
|
|
128
|
+
}
|
|
129
|
+
names.push(name);
|
|
130
|
+
}
|
|
131
|
+
const seen = new Set(names);
|
|
132
|
+
const options = [];
|
|
133
|
+
for (const name of names) {
|
|
134
|
+
const option = normalizePermissionPresetOption(optionOf(name));
|
|
135
|
+
if (option === undefined || option.value !== name)
|
|
136
|
+
return unavailablePermissionPresetSnapshot();
|
|
137
|
+
options.push({ ...option });
|
|
138
|
+
}
|
|
139
|
+
let currentValue;
|
|
140
|
+
try {
|
|
141
|
+
currentValue = current(subject);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
currentValue = undefined;
|
|
145
|
+
}
|
|
146
|
+
if (typeof currentValue !== 'string') {
|
|
147
|
+
// Second chance for the other contract shape: a subject that carries an
|
|
148
|
+
// event log, or a raw log handed in directly.
|
|
149
|
+
const fallback = subject?.events ?? subject;
|
|
150
|
+
try {
|
|
151
|
+
currentValue = current(fallback);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
if (typeof currentValue !== 'string')
|
|
155
|
+
return unavailablePermissionPresetSnapshot();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (typeof currentValue !== 'string' || (currentValue !== PERMISSION_PRESET_CUSTOM && !seen.has(currentValue))) {
|
|
159
|
+
return unavailablePermissionPresetSnapshot();
|
|
160
|
+
}
|
|
161
|
+
const currentOption = normalizePermissionPresetOption(optionOf(currentValue));
|
|
162
|
+
if (currentOption === undefined || currentOption.value !== currentValue)
|
|
163
|
+
return unavailablePermissionPresetSnapshot();
|
|
164
|
+
if (currentValue !== PERMISSION_PRESET_CUSTOM) {
|
|
165
|
+
const rosterOption = options.find(option => option.value === currentValue);
|
|
166
|
+
if (rosterOption === undefined
|
|
167
|
+
|| rosterOption.name !== currentOption.name
|
|
168
|
+
|| rosterOption.description !== currentOption.description) {
|
|
169
|
+
return unavailablePermissionPresetSnapshot();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return freezePermissionPresetSnapshot({
|
|
173
|
+
availability: 'runtime',
|
|
174
|
+
options,
|
|
175
|
+
current: {
|
|
176
|
+
...currentOption,
|
|
177
|
+
kind: currentValue === PERMISSION_PRESET_CUSTOM ? 'custom' : 'preset',
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return unavailablePermissionPresetSnapshot();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ChannelState } from '../channel/types.js';
|
|
2
|
+
export declare function createPreferences(getState: () => Pick<ChannelState, 'diffLayout' | 'thinkingFold' | 'toolBackground' | 'scrollGutter' | 'pageMargin' | 'foldTerminalCommand' | 'promptSessionLabel' | 'expandEditor' | 'smoothStreaming' | 'statusBar' | 'whale' | 'whaleIdle' | 'minimal' | 'emit'>): Pick<ChannelState, 'setDiffLayout' | 'setThinkingFold' | 'setToolBackground' | 'setScrollGutter' | 'setPageMargin' | 'setFoldTerminalCommand' | 'setPromptSessionLabel' | 'setExpandEditor' | 'setSmoothStreaming' | 'setStatusBar' | 'setWhale' | 'setWhaleIdle' | 'setMinimal'>;
|
|
3
|
+
//# sourceMappingURL=preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/preferences.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,cAAc,GAAG,iBAAiB,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,eAAe,GAAG,wBAAwB,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,cAAc,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC,CAsGxjB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { setMinimalMode } from '../../minimalMode.js';
|
|
2
|
+
import { normalizePageMargin, normalizeScrollGutter, normalizeStatusBar, normalizeToolBackground } from '../../tuiDisplayPrefs.js';
|
|
3
|
+
export function createPreferences(getState) {
|
|
4
|
+
return {
|
|
5
|
+
setDiffLayout(layout) {
|
|
6
|
+
const state = getState();
|
|
7
|
+
if (layout === state.diffLayout)
|
|
8
|
+
return;
|
|
9
|
+
state.diffLayout = layout;
|
|
10
|
+
state.emit();
|
|
11
|
+
},
|
|
12
|
+
setThinkingFold(mode) {
|
|
13
|
+
const state = getState();
|
|
14
|
+
if (mode === state.thinkingFold)
|
|
15
|
+
return;
|
|
16
|
+
state.thinkingFold = mode;
|
|
17
|
+
state.emit();
|
|
18
|
+
},
|
|
19
|
+
setToolBackground(background) {
|
|
20
|
+
const state = getState();
|
|
21
|
+
const normalized = normalizeToolBackground(background);
|
|
22
|
+
if (normalized === state.toolBackground)
|
|
23
|
+
return;
|
|
24
|
+
state.toolBackground = normalized;
|
|
25
|
+
state.emit();
|
|
26
|
+
},
|
|
27
|
+
setScrollGutter(mode) {
|
|
28
|
+
const state = getState();
|
|
29
|
+
const normalized = normalizeScrollGutter(mode);
|
|
30
|
+
if (normalized === state.scrollGutter)
|
|
31
|
+
return;
|
|
32
|
+
state.scrollGutter = normalized;
|
|
33
|
+
state.emit();
|
|
34
|
+
},
|
|
35
|
+
setPageMargin(setting) {
|
|
36
|
+
const state = getState();
|
|
37
|
+
const normalized = normalizePageMargin(setting);
|
|
38
|
+
if (normalized === state.pageMargin)
|
|
39
|
+
return;
|
|
40
|
+
state.pageMargin = normalized;
|
|
41
|
+
state.emit();
|
|
42
|
+
},
|
|
43
|
+
setFoldTerminalCommand(enabled) {
|
|
44
|
+
const state = getState();
|
|
45
|
+
if (enabled === state.foldTerminalCommand)
|
|
46
|
+
return;
|
|
47
|
+
state.foldTerminalCommand = enabled;
|
|
48
|
+
state.emit();
|
|
49
|
+
},
|
|
50
|
+
setPromptSessionLabel(enabled) {
|
|
51
|
+
const state = getState();
|
|
52
|
+
if (enabled === state.promptSessionLabel)
|
|
53
|
+
return;
|
|
54
|
+
state.promptSessionLabel = enabled;
|
|
55
|
+
state.emit();
|
|
56
|
+
},
|
|
57
|
+
setExpandEditor(enabled) {
|
|
58
|
+
const state = getState();
|
|
59
|
+
if (enabled === state.expandEditor)
|
|
60
|
+
return;
|
|
61
|
+
state.expandEditor = enabled;
|
|
62
|
+
state.emit();
|
|
63
|
+
},
|
|
64
|
+
setSmoothStreaming(enabled) {
|
|
65
|
+
const state = getState();
|
|
66
|
+
if (enabled === state.smoothStreaming)
|
|
67
|
+
return;
|
|
68
|
+
state.smoothStreaming = enabled;
|
|
69
|
+
state.emit();
|
|
70
|
+
},
|
|
71
|
+
setStatusBar(config) {
|
|
72
|
+
const state = getState();
|
|
73
|
+
const next = normalizeStatusBar({ ...state.statusBar, ...config });
|
|
74
|
+
const changed = Object.keys(next).some(key => next[key] !== state.statusBar[key]);
|
|
75
|
+
if (!changed)
|
|
76
|
+
return;
|
|
77
|
+
state.statusBar = next;
|
|
78
|
+
state.emit();
|
|
79
|
+
},
|
|
80
|
+
setWhale(visible) {
|
|
81
|
+
const state = getState();
|
|
82
|
+
if (visible === state.whale)
|
|
83
|
+
return;
|
|
84
|
+
state.whale = visible;
|
|
85
|
+
state.emit();
|
|
86
|
+
},
|
|
87
|
+
setWhaleIdle(enabled) {
|
|
88
|
+
const state = getState();
|
|
89
|
+
if (enabled === state.whaleIdle)
|
|
90
|
+
return;
|
|
91
|
+
state.whaleIdle = enabled;
|
|
92
|
+
state.emit();
|
|
93
|
+
},
|
|
94
|
+
setMinimal(enabled) {
|
|
95
|
+
const state = getState();
|
|
96
|
+
setMinimalMode(enabled);
|
|
97
|
+
if (enabled === state.minimal)
|
|
98
|
+
return;
|
|
99
|
+
state.minimal = enabled;
|
|
100
|
+
state.emit();
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TodoPanelItem } from './types.js';
|
|
2
|
+
export declare function isSubagentToolName(name: string): boolean;
|
|
3
|
+
/** Extract `job_id` from a job_output call's raw args (JSON), or undefined. */
|
|
4
|
+
export declare function parseJobOutputId(argsFull: string | undefined): string | undefined;
|
|
5
|
+
/** Extract the command that launched a background job from its tool args
|
|
6
|
+
* (`command` for the shell tools, `text` for terminal_send). The registry
|
|
7
|
+
* label is the friendly description; the command is the actual invocation. */
|
|
8
|
+
export declare function toolCommandOf(argsFull: string | undefined): string | undefined;
|
|
9
|
+
/** The ack a shell tool returns for `run_in_background: true`. */
|
|
10
|
+
export declare const BACKGROUND_START_ACK: RegExp;
|
|
11
|
+
/** Narrow an optional plugin event without importing its module augmentation. */
|
|
12
|
+
export declare function todoPanelItems(data: unknown): TodoPanelItem[] | undefined;
|
|
13
|
+
//# sourceMappingURL=projection-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-helpers.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/projection-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAY/C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAQjF;AAED;;+EAE+E;AAC/E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAa9E;AAED,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,QAAkC,CAAA;AAEnE,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,EAAE,GAAG,SAAS,CAWzE"}
|