@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,256 @@
|
|
|
1
|
+
import { t } from '../../i18n.js';
|
|
2
|
+
import { isReservedCredentialRef } from '../credentialRefGuard.js';
|
|
3
|
+
export function createSettingsHosts(ctx, assertActive = () => undefined) {
|
|
4
|
+
let settingsHostResolved = false;
|
|
5
|
+
let settingsHostCache;
|
|
6
|
+
return {
|
|
7
|
+
settingsHost() {
|
|
8
|
+
if (settingsHostResolved)
|
|
9
|
+
return settingsHostCache;
|
|
10
|
+
settingsHostResolved = true;
|
|
11
|
+
// The `/settings` screen's runtime surface, over the same dsh-base
|
|
12
|
+
// seams the `/provider` wizard uses: settings (namespace descriptors +
|
|
13
|
+
// revision-fenced mutate) and credentials (secret writes). Structurally
|
|
14
|
+
// typed like the other optional seams in this file.
|
|
15
|
+
const settings = ctx.get('settings');
|
|
16
|
+
const credentials = ctx.get('credentials');
|
|
17
|
+
if (!settings)
|
|
18
|
+
return undefined;
|
|
19
|
+
settingsHostCache = {
|
|
20
|
+
listNamespaces() {
|
|
21
|
+
// redactSecrets: the screen never renders a secret literal — secret
|
|
22
|
+
// fields are write-only controls over the credentials seam.
|
|
23
|
+
return settings.describe({ redactSecrets: true }).map(descriptor => ({
|
|
24
|
+
ns: descriptor.ns,
|
|
25
|
+
revision: descriptor.revision,
|
|
26
|
+
applies: descriptor.applies,
|
|
27
|
+
value: descriptor.value,
|
|
28
|
+
user: descriptor.user,
|
|
29
|
+
}));
|
|
30
|
+
},
|
|
31
|
+
write(ns, ops, expectedRevision) {
|
|
32
|
+
return settings.mutate(ns, ops, expectedRevision);
|
|
33
|
+
},
|
|
34
|
+
async credentialConfigured(ref) {
|
|
35
|
+
// The environment shadows the store (providerSetup.envShadows), so
|
|
36
|
+
// an env-provided key counts as configured.
|
|
37
|
+
if (process.env[ref] !== undefined)
|
|
38
|
+
return true;
|
|
39
|
+
return credentials !== undefined && (await credentials.resolve(ref)) !== undefined;
|
|
40
|
+
},
|
|
41
|
+
async writeCredential(ref, value) {
|
|
42
|
+
if (!credentials)
|
|
43
|
+
throw new Error('credentials service unavailable');
|
|
44
|
+
// Second layer of the secret-ref reservation guard: the
|
|
45
|
+
// registration layer already rejects plugin sections with
|
|
46
|
+
// host-owned refs, but this seam must not trust it — a stale
|
|
47
|
+
// section (registered before the guard) or a direct call must not
|
|
48
|
+
// reach the shared credentials. The host's own main-credential
|
|
49
|
+
// writes go through providerSetup().writeCredential instead.
|
|
50
|
+
if (isReservedCredentialRef(ref))
|
|
51
|
+
throw new Error(t('settings-secret-ref-reserved', { ref }));
|
|
52
|
+
await credentials.set(ref, value);
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
return settingsHostCache;
|
|
56
|
+
},
|
|
57
|
+
providerSetup() {
|
|
58
|
+
// The `/provider` wizard's runtime surface, over the dsh-base seams:
|
|
59
|
+
// settings (profile persistence), credentials (key storage) and the
|
|
60
|
+
// llm runtime's configurable-provider directory + model discovery.
|
|
61
|
+
// Structurally typed like the other optional seams in this file.
|
|
62
|
+
const llm = ctx.get('llm');
|
|
63
|
+
const settings = ctx.get('settings');
|
|
64
|
+
const credentials = ctx.get('credentials');
|
|
65
|
+
// Without dsh-llm-pi-ai there is no adapter watching the settings
|
|
66
|
+
// section, so a written profile would never activate a route. The
|
|
67
|
+
// adapter registers its `llm-pi-ai` settings namespace at mount, which
|
|
68
|
+
// is the rc.6-observable mount signal (the newer
|
|
69
|
+
// `listModelDiscoveryNamespaces()` does not exist in rc.6).
|
|
70
|
+
if (!llm || !settings || !credentials
|
|
71
|
+
|| !settings.describe().some(descriptor => descriptor.ns === 'llm-pi-ai')) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
const revision = () => settings.describe().find(descriptor => descriptor.ns === 'llm-pi-ai')?.revision;
|
|
75
|
+
// The OAuth sign-in surface (dsh-auth-style plugin), structural and
|
|
76
|
+
// optional: mounting the plugin lights up the wizard's OAuth branch,
|
|
77
|
+
// and without it the wizard is exactly what it was before.
|
|
78
|
+
const oauthApi = ctx.get('dshAuth')?.api;
|
|
79
|
+
// Real catalog membership on this mount: routes the adapter knows from
|
|
80
|
+
// its installed catalog (`declared !== true`). A stored profile naming
|
|
81
|
+
// such a route is an activation/override of the catalog route — even
|
|
82
|
+
// when it carries an explicit `api` field — while routes the adapter
|
|
83
|
+
// only knows because a profile names them are custom. Classifying by
|
|
84
|
+
// anything less (a profile-shape guess) misroutes the edit semantics.
|
|
85
|
+
const catalogMembers = () => new Set(llm.listConfigurableProviders()
|
|
86
|
+
.filter(entry => entry.settingsNs === 'llm-pi-ai' && entry.declared !== true)
|
|
87
|
+
.map(entry => entry.provider));
|
|
88
|
+
return {
|
|
89
|
+
...(oauthApi === undefined ? {} : { oauth: oauthApi }),
|
|
90
|
+
listCatalogProviders() {
|
|
91
|
+
// declared === true marks routes the adapter knows only because a
|
|
92
|
+
// stored profile names them (user-added); the rest are activatable
|
|
93
|
+
// catalog routes.
|
|
94
|
+
return llm.listConfigurableProviders()
|
|
95
|
+
.filter(entry => entry.settingsNs === 'llm-pi-ai' && entry.declared !== true)
|
|
96
|
+
.map(entry => ({ provider: entry.provider, displayName: entry.displayName }));
|
|
97
|
+
},
|
|
98
|
+
routeExists(route) {
|
|
99
|
+
const section = settings.get('llm-pi-ai');
|
|
100
|
+
return section?.providers !== undefined && route in section.providers;
|
|
101
|
+
},
|
|
102
|
+
listRefUsers(ref, exceptRoute) {
|
|
103
|
+
// The RESOLVED merge (settings.get), not the user layer: a base
|
|
104
|
+
// provider or composition-base route naming this ref is invisible
|
|
105
|
+
// to listConfiguredProviders() but still consumes the credential.
|
|
106
|
+
const section = settings.get('llm-pi-ai');
|
|
107
|
+
const providers = section?.providers;
|
|
108
|
+
if (providers === undefined || typeof providers !== 'object' || providers === null)
|
|
109
|
+
return [];
|
|
110
|
+
return Object.entries(providers).flatMap(([route, profile]) => {
|
|
111
|
+
if (route === exceptRoute)
|
|
112
|
+
return [];
|
|
113
|
+
if (typeof profile !== 'object' || profile === null)
|
|
114
|
+
return [];
|
|
115
|
+
const stored = profile;
|
|
116
|
+
return stored.apiKeyEnv === ref ? [route] : [];
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
listConfiguredProviders() {
|
|
120
|
+
// The editable/deletable set is the USER layer only: `describe()`'s
|
|
121
|
+
// `user` is the raw user section — the same source the /settings
|
|
122
|
+
// screen treats as overrides. `settings.get()` is the resolved
|
|
123
|
+
// merge; listing a route inherited from a composition base would
|
|
124
|
+
// promise a delete that cannot land (the unset only clears the
|
|
125
|
+
// user layer, so the base value re-inherits) while the credential
|
|
126
|
+
// is really gone. When the running base exposes no `user` layer,
|
|
127
|
+
// fall back to the resolved section: such builds (the official
|
|
128
|
+
// dsh-base) carry zero base routes anyway, so the layers coincide.
|
|
129
|
+
const descriptor = settings.describe().find(row => row.ns === 'llm-pi-ai');
|
|
130
|
+
// Only an absent `user` (older base) falls back; a present-but-empty
|
|
131
|
+
// user layer legitimately exposes nothing to edit.
|
|
132
|
+
const section = (descriptor?.user !== undefined
|
|
133
|
+
? descriptor.user
|
|
134
|
+
: settings.get('llm-pi-ai'));
|
|
135
|
+
const providers = section?.providers;
|
|
136
|
+
if (providers === undefined || typeof providers !== 'object' || providers === null)
|
|
137
|
+
return [];
|
|
138
|
+
const catalog = catalogMembers();
|
|
139
|
+
return Object.entries(providers).flatMap(([route, profile]) => {
|
|
140
|
+
// The settings section is user-editable, so a `providers.<route>`
|
|
141
|
+
// entry may be null or a scalar; skip anything that is not a plain
|
|
142
|
+
// object instead of dereferencing it and throwing (which would
|
|
143
|
+
// block the edit/delete menu for every route).
|
|
144
|
+
if (typeof profile !== 'object' || profile === null)
|
|
145
|
+
return [];
|
|
146
|
+
const stored = profile;
|
|
147
|
+
const ref = typeof stored.apiKeyEnv === 'string' ? stored.apiKeyEnv : '';
|
|
148
|
+
const baseURL = typeof stored.baseURL === 'string' && stored.baseURL !== ''
|
|
149
|
+
? stored.baseURL
|
|
150
|
+
: undefined;
|
|
151
|
+
const api = typeof stored.api === 'string' && stored.api !== ''
|
|
152
|
+
? stored.api
|
|
153
|
+
: undefined;
|
|
154
|
+
// Keep the raw model entries: a model-list re-selection must
|
|
155
|
+
// rewrite kept ids with their stored objects, so per-model fields
|
|
156
|
+
// this wizard never learned about survive the edit.
|
|
157
|
+
const modelEntries = Array.isArray(stored.models)
|
|
158
|
+
? stored.models.filter((model) => typeof model === 'object' && model !== null)
|
|
159
|
+
: undefined;
|
|
160
|
+
const models = modelEntries?.flatMap(entry => typeof entry.id === 'string' ? [entry.id] : []);
|
|
161
|
+
return [{
|
|
162
|
+
route,
|
|
163
|
+
ref,
|
|
164
|
+
isCatalog: catalog.has(route),
|
|
165
|
+
shadowed: ref !== '' && process.env[ref] !== undefined,
|
|
166
|
+
...(baseURL !== undefined ? { baseURL } : {}),
|
|
167
|
+
...(api !== undefined ? { api } : {}),
|
|
168
|
+
...(models !== undefined ? { models } : {}),
|
|
169
|
+
...(modelEntries !== undefined && modelEntries.length > 0
|
|
170
|
+
? { modelEntries }
|
|
171
|
+
: {}),
|
|
172
|
+
}];
|
|
173
|
+
});
|
|
174
|
+
},
|
|
175
|
+
discoverModels(request) {
|
|
176
|
+
return llm.discoverModels('llm-pi-ai', request);
|
|
177
|
+
},
|
|
178
|
+
envShadows(ref) {
|
|
179
|
+
return process.env[ref] !== undefined;
|
|
180
|
+
},
|
|
181
|
+
envValue(ref) {
|
|
182
|
+
return process.env[ref];
|
|
183
|
+
},
|
|
184
|
+
async readCredential(ref) {
|
|
185
|
+
const resolved = await credentials.resolve(ref);
|
|
186
|
+
return resolved?.value;
|
|
187
|
+
},
|
|
188
|
+
writeCredential(ref, value) {
|
|
189
|
+
return credentials.set(ref, value);
|
|
190
|
+
},
|
|
191
|
+
removeCredential(ref) {
|
|
192
|
+
return credentials.unset(ref);
|
|
193
|
+
},
|
|
194
|
+
async writeProfile(route, profile) {
|
|
195
|
+
const ops = [{ op: 'set', path: ['providers', route], value: profile }];
|
|
196
|
+
try {
|
|
197
|
+
assertActive();
|
|
198
|
+
await settings.mutate('llm-pi-ai', ops, revision());
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
// One retry on a stale-revision conflict (a concurrent write
|
|
202
|
+
// landed between describe and mutate); anything else propagates
|
|
203
|
+
// so the wizard can report and roll back the credential.
|
|
204
|
+
const code = error?.code;
|
|
205
|
+
if (code !== 'SETTINGS_CONFLICT')
|
|
206
|
+
throw error;
|
|
207
|
+
assertActive();
|
|
208
|
+
await settings.mutate('llm-pi-ai', ops, revision());
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
async mutateProfile(route, ops) {
|
|
212
|
+
// Route-relative path patch: only the addressed fields inside
|
|
213
|
+
// `providers.<route>` enter the write, so stored fields the TUI
|
|
214
|
+
// does not model never pass through here and cannot be dropped.
|
|
215
|
+
const full = ops.map(op => op.op === 'set'
|
|
216
|
+
? { op: 'set', path: ['providers', route, ...op.path], value: op.value }
|
|
217
|
+
: { op: 'unset', path: ['providers', route, ...op.path] });
|
|
218
|
+
try {
|
|
219
|
+
assertActive();
|
|
220
|
+
await settings.mutate('llm-pi-ai', full, revision());
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
// Same stale-revision retry as writeProfile.
|
|
224
|
+
const code = error?.code;
|
|
225
|
+
if (code !== 'SETTINGS_CONFLICT')
|
|
226
|
+
throw error;
|
|
227
|
+
assertActive();
|
|
228
|
+
await settings.mutate('llm-pi-ai', full, revision());
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
async removeProfile(route) {
|
|
232
|
+
const ops = [{ op: 'unset', path: ['providers', route] }];
|
|
233
|
+
try {
|
|
234
|
+
assertActive();
|
|
235
|
+
await settings.mutate('llm-pi-ai', ops, revision());
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
// Same stale-revision retry as writeProfile: the wizard reports
|
|
239
|
+
// any real failure so the credential deletion can be skipped.
|
|
240
|
+
const code = error?.code;
|
|
241
|
+
if (code !== 'SETTINGS_CONFLICT')
|
|
242
|
+
throw error;
|
|
243
|
+
assertActive();
|
|
244
|
+
await settings.mutate('llm-pi-ai', ops, revision());
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
},
|
|
249
|
+
async oauthProviderStatuses() {
|
|
250
|
+
// Same optional seam the wizard's OAuth branch reads: absent plugin →
|
|
251
|
+
// undefined, and `/login` renders exactly its pre-plugin lines.
|
|
252
|
+
const api = ctx.get('dshAuth')?.api;
|
|
253
|
+
return api === undefined ? undefined : api.providers();
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
3
|
+
import { type UserMessage } from '@deepseek-ai/dsh-llm';
|
|
4
|
+
import type { CommandRuntime } from '@deepseek-ai/dsh-commands';
|
|
5
|
+
import { type LocalCommand, type LocalizedDescriptions } from '../../commands.js';
|
|
6
|
+
import type { ChannelOwner } from './owner.js';
|
|
7
|
+
import type { SkillRegistry } from './loaded-context.js';
|
|
8
|
+
/** Owns the merged catalog, host registrations, retry timer and all skill reads. */
|
|
9
|
+
export declare function createSkillCatalog(ctx: Context, deps: {
|
|
10
|
+
owner: Pick<ChannelOwner, 'current' | 'own'>;
|
|
11
|
+
commandService: CommandRuntime | undefined;
|
|
12
|
+
agent(): Agent;
|
|
13
|
+
cwd(): string;
|
|
14
|
+
setCommands(commands: LocalCommand[]): void;
|
|
15
|
+
commandDescriptions(name: string): LocalizedDescriptions | undefined;
|
|
16
|
+
/** Submit a user line through the channel's delivery pipeline. The
|
|
17
|
+
* fallback skill path rides this same entry point and attaches the
|
|
18
|
+
* rendered body, so the line stays a plain user message (fence, pending
|
|
19
|
+
* preview and `@` expansion included) and the body is appended to that
|
|
20
|
+
* message's step batch — never a turn of its own. */
|
|
21
|
+
deliverUserText(text: string, placement: 'followup', attach?: UserMessage): void;
|
|
22
|
+
}): {
|
|
23
|
+
start: () => void;
|
|
24
|
+
release: () => void;
|
|
25
|
+
refreshCommands: () => void;
|
|
26
|
+
refreshSkillCommands: (fromRetry?: boolean) => Promise<void>;
|
|
27
|
+
registryFor: (agent: Agent) => SkillRegistry | undefined;
|
|
28
|
+
viewOptions: (agent: Agent) => {
|
|
29
|
+
scope: Agent;
|
|
30
|
+
cwd: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=skill-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-catalog.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/skill-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE/D,OAAO,EAA8E,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAI7J,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAKxD,oFAAoF;AACpF,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IACJ,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,KAAK,CAAC,CAAA;IAC5C,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAC1C,KAAK,IAAI,KAAK,CAAA;IACd,GAAG,IAAI,MAAM,CAAA;IACb,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;IAC3C,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAA;IACpE;;;;0DAIsD;IACtD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CACjF;iBA4JiB,IAAI;mBARF,IAAI;2BAhII,IAAI;mDAoDwB,OAAO,CAAC,IAAI,CAAC;yBAtDzC,KAAK,KAAG,aAAa,GAAG,SAAS;yBADjC,KAAK,KAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;EA+JlE"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { createUserMessage } from '@deepseek-ai/dsh-llm';
|
|
2
|
+
import { isUserInvocable, renderSkillContent } from '@deepseek-ai/dsh-skill';
|
|
3
|
+
import { HIDDEN_COMMAND_NAMES, isLocalCommandName, parseCommandName, LOCAL_COMMANDS } from '../../commands.js';
|
|
4
|
+
import { t } from '../../i18n.js';
|
|
5
|
+
import { serviceForAgent } from '../presets.js';
|
|
6
|
+
import { hasCommandErrorCode, mapCommandError } from '../command-errors.js';
|
|
7
|
+
const SKILL_COMMAND_RETRY_MS = 800;
|
|
8
|
+
const MAX_SKILL_RETRY_ATTEMPTS = 3;
|
|
9
|
+
/** Owns the merged catalog, host registrations, retry timer and all skill reads. */
|
|
10
|
+
export function createSkillCatalog(ctx, deps) {
|
|
11
|
+
let commandListSeq = 0;
|
|
12
|
+
let skillCommandSeq = 0;
|
|
13
|
+
let lastGoodSkills;
|
|
14
|
+
const registrations = new Map();
|
|
15
|
+
const refused = new Set();
|
|
16
|
+
let retry;
|
|
17
|
+
let retryAttempts = 0;
|
|
18
|
+
let released = false;
|
|
19
|
+
const resetRetry = () => {
|
|
20
|
+
if (retry !== undefined)
|
|
21
|
+
clearTimeout(retry);
|
|
22
|
+
retry = undefined;
|
|
23
|
+
retryAttempts = 0;
|
|
24
|
+
};
|
|
25
|
+
const viewOptions = (agent) => ({ scope: agent, cwd: deps.cwd() });
|
|
26
|
+
const registryFor = (agent) => serviceForAgent(ctx, agent, 'skills');
|
|
27
|
+
const refreshCommands = () => {
|
|
28
|
+
if (!deps.owner.current())
|
|
29
|
+
return;
|
|
30
|
+
const target = deps.agent();
|
|
31
|
+
const token = ++commandListSeq;
|
|
32
|
+
const merged = [...LOCAL_COMMANDS];
|
|
33
|
+
if (deps.commandService !== undefined) {
|
|
34
|
+
for (const descriptor of deps.commandService.list(target)) {
|
|
35
|
+
if (!deps.owner.current())
|
|
36
|
+
return;
|
|
37
|
+
if (HIDDEN_COMMAND_NAMES.has(descriptor.name) || merged.some(command => command.name === descriptor.name))
|
|
38
|
+
continue;
|
|
39
|
+
const descriptions = deps.commandDescriptions(descriptor.name);
|
|
40
|
+
// `images` became `attachments` upstream (composer attachment
|
|
41
|
+
// admission); read both so older cohorts keep their image commands.
|
|
42
|
+
const input = descriptor.input;
|
|
43
|
+
merged.push({ name: descriptor.name, description: descriptor.description, ...(descriptions === undefined ? {} : { descriptions }), tag: input?.hint, external: true, acceptsImages: input?.attachments ?? input?.images === true, ...(registrations.has(descriptor.name) ? { skill: true } : {}) });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!deps.owner.current() || target !== deps.agent())
|
|
47
|
+
return;
|
|
48
|
+
deps.setCommands(merged);
|
|
49
|
+
if (!deps.owner.current() || target !== deps.agent())
|
|
50
|
+
return;
|
|
51
|
+
const registry = registryFor(target);
|
|
52
|
+
if (registry === undefined)
|
|
53
|
+
return;
|
|
54
|
+
const restore = () => {
|
|
55
|
+
if (!deps.owner.current() || target !== deps.agent())
|
|
56
|
+
return;
|
|
57
|
+
const fallback = lastGoodSkills?.agent === target ? lastGoodSkills.commands : [];
|
|
58
|
+
const entries = fallback.filter(entry => !merged.some(command => command.name === entry.name));
|
|
59
|
+
if (entries.length > 0)
|
|
60
|
+
deps.setCommands([...merged, ...entries]);
|
|
61
|
+
};
|
|
62
|
+
void registry.snapshot(viewOptions(target)).then(observation => {
|
|
63
|
+
if (!deps.owner.current() || token !== commandListSeq || target !== deps.agent())
|
|
64
|
+
return;
|
|
65
|
+
if (!observation.complete) {
|
|
66
|
+
ctx.logger.warn('skill command merge: incomplete catalog observation, keeping last-good skills');
|
|
67
|
+
restore();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Cache the observation, not the delta: registered skills are already
|
|
71
|
+
// in merged on later reads. Local/host collisions still win on restore.
|
|
72
|
+
const skills = [];
|
|
73
|
+
for (const skill of observation.skills) {
|
|
74
|
+
if (isUserInvocable(skill) && !skills.some(command => command.name === skill.name)) {
|
|
75
|
+
skills.push({ name: skill.name, description: skill.description, skill: true });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
lastGoodSkills = { agent: target, commands: skills };
|
|
79
|
+
const added = skills.filter(entry => !merged.some(command => command.name === entry.name));
|
|
80
|
+
if (added.length > 0 && deps.owner.current() && target === deps.agent())
|
|
81
|
+
deps.setCommands([...merged, ...added]);
|
|
82
|
+
}).catch((error) => {
|
|
83
|
+
if (!deps.owner.current() || token !== commandListSeq || target !== deps.agent())
|
|
84
|
+
return;
|
|
85
|
+
ctx.logger.warn('skill command merge failed: %o', error);
|
|
86
|
+
restore();
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
const refreshSkillCommands = async (fromRetry = false) => {
|
|
90
|
+
if (released || !deps.owner.current() || deps.commandService === undefined)
|
|
91
|
+
return;
|
|
92
|
+
// Explicit refreshes (including skills/change and agent swaps) supersede
|
|
93
|
+
// the old ladder. Only the timer continuation consumes the same budget.
|
|
94
|
+
if (!fromRetry)
|
|
95
|
+
resetRetry();
|
|
96
|
+
const token = ++skillCommandSeq;
|
|
97
|
+
const target = deps.agent();
|
|
98
|
+
const registry = registryFor(target);
|
|
99
|
+
if (registry === undefined)
|
|
100
|
+
return;
|
|
101
|
+
let observation;
|
|
102
|
+
try {
|
|
103
|
+
observation = await registry.snapshot(viewOptions(target));
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
if (deps.owner.current() && token === skillCommandSeq && target === deps.agent())
|
|
107
|
+
ctx.logger.warn('skill commands: catalog read failed: %o', error);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (!deps.owner.current() || token !== skillCommandSeq || target !== deps.agent())
|
|
111
|
+
return;
|
|
112
|
+
if (!observation.complete) {
|
|
113
|
+
if (retry === undefined && retryAttempts < MAX_SKILL_RETRY_ATTEMPTS) {
|
|
114
|
+
const delay = SKILL_COMMAND_RETRY_MS * 2 ** retryAttempts++;
|
|
115
|
+
retry = setTimeout(() => {
|
|
116
|
+
retry = undefined;
|
|
117
|
+
if (token === skillCommandSeq && target === deps.agent())
|
|
118
|
+
void refreshSkillCommands(true);
|
|
119
|
+
}, delay);
|
|
120
|
+
retry.unref?.();
|
|
121
|
+
}
|
|
122
|
+
// Partial reads cannot revoke callable handlers or replace descriptions.
|
|
123
|
+
// Keep the last-good registrations until an authoritative observation.
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
resetRetry();
|
|
127
|
+
const wanted = new Map(observation.skills
|
|
128
|
+
.filter(isUserInvocable)
|
|
129
|
+
.filter(skill => parseCommandName(`/${skill.name}`)?.name === skill.name)
|
|
130
|
+
.filter(skill => !isLocalCommandName(skill.name))
|
|
131
|
+
.map(skill => [skill.name, skill.description]));
|
|
132
|
+
for (const [name, entry] of registrations) {
|
|
133
|
+
if (wanted.get(name) === entry.description)
|
|
134
|
+
continue;
|
|
135
|
+
entry.dispose();
|
|
136
|
+
registrations.delete(name);
|
|
137
|
+
}
|
|
138
|
+
for (const [name, description] of wanted) {
|
|
139
|
+
if (registrations.has(name) || refused.has(name) || deps.commandService.find(target, name) !== undefined)
|
|
140
|
+
continue;
|
|
141
|
+
try {
|
|
142
|
+
const dispose = deps.commandService.register({
|
|
143
|
+
name, description, recordInput: false,
|
|
144
|
+
handler: async ({ agent: invoker, rawInput, signal }) => {
|
|
145
|
+
// This registration is bound to this Channel; retained handlers
|
|
146
|
+
// must never redirect another agent into its current session.
|
|
147
|
+
if (!deps.owner.current() || invoker !== deps.agent())
|
|
148
|
+
return { kind: 'error', text: t('skill-unavailable', { name }) };
|
|
149
|
+
const tools = ctx.get('tools');
|
|
150
|
+
if (tools?.get('skill', invoker) !== undefined) {
|
|
151
|
+
if (!deps.owner.current() || invoker !== deps.agent())
|
|
152
|
+
return { kind: 'error', text: t('skill-unavailable', { name }) };
|
|
153
|
+
deps.deliverUserText(`/${name}${rawInput}`, 'followup');
|
|
154
|
+
return { kind: 'success' };
|
|
155
|
+
}
|
|
156
|
+
const skill = await registryFor(invoker)?.get(name, { ...viewOptions(invoker), signal });
|
|
157
|
+
if (skill === undefined || !isUserInvocable(skill))
|
|
158
|
+
return { kind: 'error', text: t('skill-unavailable', { name }) };
|
|
159
|
+
if (!deps.owner.current() || invoker !== deps.agent())
|
|
160
|
+
return { kind: 'error', text: t('skill-unavailable', { name }) };
|
|
161
|
+
// No `skill` tool: deliver the gesture as the user's own line and
|
|
162
|
+
// attach the rendered body. The channel's resident pre-step
|
|
163
|
+
// listener appends the body AFTER the admitted batch — the same
|
|
164
|
+
// shape/order as dsh-tool-skill's gesture boundary (#842).
|
|
165
|
+
const bodyMessage = createUserMessage({ content: [{ type: 'text', text: renderSkillContent(skill) }], source: { kind: 'skill-invocation', name, form: 'instructions' } });
|
|
166
|
+
deps.deliverUserText(`/${name}${rawInput}`, 'followup', bodyMessage);
|
|
167
|
+
return { kind: 'success' };
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
registrations.set(name, { dispose, description });
|
|
171
|
+
ctx.get('tuiEffectLedger')?.record({ operation: 'create', resource: { kind: 'command', id: name }, result: 'applied' }, ctx);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const mapped = mapCommandError(error);
|
|
175
|
+
refused.add(name);
|
|
176
|
+
ctx.logger.warn(`skill commands: "${name}" not registrable%s: %o`, hasCommandErrorCode(mapped, 'DUPLICATE_CONTRIBUTION_ID') ? ' (DUPLICATE_CONTRIBUTION_ID)' : '', mapped);
|
|
177
|
+
ctx.get('tuiEffectLedger')?.record({ operation: 'create', resource: { kind: 'command', id: name }, result: 'failed', errorCode: hasCommandErrorCode(mapped, 'DUPLICATE_CONTRIBUTION_ID') ? 'DUPLICATE_CONTRIBUTION_ID' : 'COMMAND_FAILED' }, ctx);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
const release = () => {
|
|
182
|
+
if (released)
|
|
183
|
+
return;
|
|
184
|
+
released = true;
|
|
185
|
+
skillCommandSeq += 1;
|
|
186
|
+
resetRetry();
|
|
187
|
+
for (const entry of registrations.values())
|
|
188
|
+
entry.dispose();
|
|
189
|
+
registrations.clear();
|
|
190
|
+
};
|
|
191
|
+
const start = () => {
|
|
192
|
+
if (!deps.owner.current())
|
|
193
|
+
return;
|
|
194
|
+
// Establish a single idempotent teardown before the first registration;
|
|
195
|
+
// a later ctx.on() throw then rolls back every earlier listener.
|
|
196
|
+
const owned = [deps.owner.own(release)];
|
|
197
|
+
try {
|
|
198
|
+
owned.push(deps.owner.own(ctx.on('commands/change', refreshCommands)));
|
|
199
|
+
owned.push(deps.owner.own(ctx.on('skills/change', () => { refreshCommands(); void refreshSkillCommands(); })));
|
|
200
|
+
if (!deps.owner.current()) {
|
|
201
|
+
for (const dispose of owned.reverse())
|
|
202
|
+
dispose();
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
refreshCommands();
|
|
206
|
+
void refreshSkillCommands();
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
for (const dispose of owned.reverse())
|
|
210
|
+
dispose();
|
|
211
|
+
throw error;
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
return { start, release, refreshCommands, refreshSkillCommands, registryFor, viewOptions };
|
|
215
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { AgentHandle } from '@deepseek-ai/dsh-agent';
|
|
2
|
+
import type { SessionModeSpec } from '../../sessionModes.js';
|
|
3
|
+
import { type PageMarginSetting, type ScrollGutterMode, type StatusBarConfig, type ToolBackground } from '../../tuiDisplayPrefs.js';
|
|
4
|
+
import type { ChannelState } from './types.js';
|
|
5
|
+
/** Launch configuration belongs to channel construction, not the composition root. */
|
|
6
|
+
export interface ChannelLaunchOptions {
|
|
7
|
+
model: string;
|
|
8
|
+
cwd: string;
|
|
9
|
+
provider: string;
|
|
10
|
+
effort?: string;
|
|
11
|
+
activity?: boolean;
|
|
12
|
+
activityFrames?: string;
|
|
13
|
+
diffLayout?: 'auto' | 'split' | 'unified';
|
|
14
|
+
thinkingFold?: 'preview' | 'full';
|
|
15
|
+
toolBackground?: ToolBackground;
|
|
16
|
+
scrollGutter?: ScrollGutterMode;
|
|
17
|
+
pageMargin?: PageMarginSetting;
|
|
18
|
+
foldTerminalCommand?: boolean;
|
|
19
|
+
promptSessionLabel?: boolean;
|
|
20
|
+
expandEditor?: boolean;
|
|
21
|
+
smoothStreaming?: boolean;
|
|
22
|
+
statusBar?: Partial<StatusBarConfig>;
|
|
23
|
+
whale?: boolean;
|
|
24
|
+
whaleIdle?: boolean;
|
|
25
|
+
minimal?: boolean;
|
|
26
|
+
contextBar?: boolean;
|
|
27
|
+
configuredPreset?: string;
|
|
28
|
+
configuredProvider?: string;
|
|
29
|
+
configuredModel?: string;
|
|
30
|
+
configuredLang?: string;
|
|
31
|
+
configuredActivityFrames?: string;
|
|
32
|
+
agentPreset?: string;
|
|
33
|
+
modes?: readonly SessionModeSpec[];
|
|
34
|
+
handle?: AgentHandle;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Neutral observable fields only. Behaviour is assembled explicitly by the
|
|
38
|
+
* composition root after each specialist owner exists, so this factory cannot
|
|
39
|
+
* acquire services, subscribe, or create a second authority bag.
|
|
40
|
+
*/
|
|
41
|
+
export declare function createInitialChannelView(options: ChannelLaunchOptions, input: {
|
|
42
|
+
agentId: string;
|
|
43
|
+
mode: ChannelState['mode'];
|
|
44
|
+
cwdDescription: string;
|
|
45
|
+
}): Pick<ChannelState, 'effortLevels' | 'version' | 'rows' | 'status' | 'sessionTitle' | 'sessionColor' | 'agentId' | 'agentBindingGeneration' | 'model' | 'provider' | 'tokens' | 'cwd' | 'displayCwd' | 'gitBranch' | 'working' | 'cancelPending' | 'spinnerMode' | 'responseChars' | 'activeToolCount' | 'turnStart' | 'lastUserText' | 'notifications' | 'contextWindow' | 'reasoningEffort' | 'mode' | 'modeIndex' | 'workingActivity' | 'activityFrames' | 'configuredProvider' | 'configuredModel' | 'configuredPreset' | 'configuredActivityFrames' | 'configuredLang' | 'diffLayout' | 'thinkingFold' | 'toolBackground' | 'scrollGutter' | 'pageMargin' | 'foldTerminalCommand' | 'promptSessionLabel' | 'expandEditor' | 'smoothStreaming' | 'statusBar' | 'whale' | 'whaleIdle' | 'minimal' | 'activityEnabled' | 'contextBarEnabled' | 'agentPreset' | 'goal' | 'todos' | 'loadedContext' | 'pending' | 'commandList' | 'lastUsage' | 'tps' | 'tpsSamples' | 'contextSegments' | 'subagents' | 'backgroundJobs'>;
|
|
46
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAA2F,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE5N,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IACzC,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;IACjC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IACpC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,CAAA;IAClC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC7E,IAAI,CAAC,YAAY,EAClB,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,GAChF,SAAS,GAAG,wBAAwB,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAC9E,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,eAAe,GAAG,aAAa,GACxE,eAAe,GAAG,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAClE,eAAe,GAAG,eAAe,GAAG,iBAAiB,GAAG,MAAM,GAAG,WAAW,GAC5E,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,GAC/E,kBAAkB,GAAG,0BAA0B,GAAG,gBAAgB,GAAG,YAAY,GACjF,cAAc,GAAG,gBAAgB,GAAG,cAAc,GAAG,YAAY,GACjE,qBAAqB,GAAG,oBAAoB,GAAG,cAAc,GAAG,iBAAiB,GACjF,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,iBAAiB,GAAG,mBAAmB,GACzF,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,SAAS,GAAG,aAAa,GAC9E,WAAW,GAAG,KAAK,GAAG,YAAY,GAAG,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CACxF,CAuBA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { normalizePageMargin, normalizeScrollGutter, normalizeStatusBar, normalizeToolBackground } from '../../tuiDisplayPrefs.js';
|
|
2
|
+
import { normalizeActivityPreset } from '../../components/activityFrames.js';
|
|
3
|
+
/**
|
|
4
|
+
* Neutral observable fields only. Behaviour is assembled explicitly by the
|
|
5
|
+
* composition root after each specialist owner exists, so this factory cannot
|
|
6
|
+
* acquire services, subscribe, or create a second authority bag.
|
|
7
|
+
*/
|
|
8
|
+
export function createInitialChannelView(options, input) {
|
|
9
|
+
return {
|
|
10
|
+
effortLevels: undefined, version: 0, rows: [], status: 'starting', sessionTitle: '', sessionColor: '',
|
|
11
|
+
agentId: input.agentId, agentBindingGeneration: 0, model: options.model, provider: options.provider,
|
|
12
|
+
tokens: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, peak: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, idle: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 } },
|
|
13
|
+
cwd: options.cwd, displayCwd: input.cwdDescription, gitBranch: undefined, working: false,
|
|
14
|
+
cancelPending: false, spinnerMode: 'requesting', responseChars: 0, activeToolCount: 0,
|
|
15
|
+
turnStart: 0, lastUserText: '', notifications: [], contextWindow: undefined,
|
|
16
|
+
reasoningEffort: options.effort, mode: input.mode, modeIndex: 0, workingActivity: undefined,
|
|
17
|
+
activityFrames: normalizeActivityPreset(options.activityFrames), configuredProvider: options.configuredProvider,
|
|
18
|
+
configuredModel: options.configuredModel, configuredPreset: options.configuredPreset,
|
|
19
|
+
configuredActivityFrames: options.configuredActivityFrames, configuredLang: options.configuredLang,
|
|
20
|
+
diffLayout: options.diffLayout ?? 'auto', thinkingFold: options.thinkingFold ?? 'preview',
|
|
21
|
+
toolBackground: normalizeToolBackground(options.toolBackground), scrollGutter: normalizeScrollGutter(options.scrollGutter),
|
|
22
|
+
pageMargin: normalizePageMargin(options.pageMargin), foldTerminalCommand: options.foldTerminalCommand === true,
|
|
23
|
+
promptSessionLabel: options.promptSessionLabel === true, expandEditor: options.expandEditor !== false,
|
|
24
|
+
smoothStreaming: options.smoothStreaming !== false, statusBar: normalizeStatusBar(options.statusBar),
|
|
25
|
+
whale: options.whale !== false, whaleIdle: options.whaleIdle !== false, minimal: options.minimal === true, activityEnabled: options.activity !== false,
|
|
26
|
+
contextBarEnabled: options.contextBar !== false, agentPreset: options.agentPreset, goal: undefined,
|
|
27
|
+
todos: [], loadedContext: undefined, pending: [], commandList: [], lastUsage: undefined,
|
|
28
|
+
tps: undefined, tpsSamples: [], contextSegments: { system: 0, prompt: 0, assistant: 0, thinking: 0, tools: 0 },
|
|
29
|
+
subagents: [], backgroundJobs: [],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Agent, AssistantStreamFrame } from '@deepseek-ai/dsh-agent';
|
|
2
|
+
import { SubagentActivityStore } from '../subagents.js';
|
|
3
|
+
import type { ChannelState, SubagentControl } from './types.js';
|
|
4
|
+
/** Current-session subagent store, row projection and frame-batched stream
|
|
5
|
+
* bridge. The owning channel installs transport subscriptions; this module
|
|
6
|
+
* only accepts scoped events and never captures a replaceable agent itself. */
|
|
7
|
+
export declare function createSubagentProjection(getState: () => Pick<ChannelState, 'rows' | 'subagents' | 'emit' | 'emitStream'>, deps: {
|
|
8
|
+
rowIds: {
|
|
9
|
+
value: number;
|
|
10
|
+
};
|
|
11
|
+
agent(): Agent;
|
|
12
|
+
subagents(): {
|
|
13
|
+
interrupt?(target: string, reason: unknown): void;
|
|
14
|
+
} | undefined;
|
|
15
|
+
/** Optional child metadata lookup; failures must not suppress spawning. */
|
|
16
|
+
lookupChild(id: string): {
|
|
17
|
+
session?: unknown;
|
|
18
|
+
options?: {
|
|
19
|
+
provider?: string;
|
|
20
|
+
model?: string;
|
|
21
|
+
};
|
|
22
|
+
} | undefined;
|
|
23
|
+
}): {
|
|
24
|
+
store: SubagentActivityStore;
|
|
25
|
+
control: SubagentControl;
|
|
26
|
+
pendingTaskDescriptions: string[];
|
|
27
|
+
onSessionEvent: (session: unknown, event: {
|
|
28
|
+
type?: string;
|
|
29
|
+
}) => boolean;
|
|
30
|
+
onStreamFrame: (agent: unknown, frame: AssistantStreamFrame) => boolean;
|
|
31
|
+
onStart: (info: {
|
|
32
|
+
id: string;
|
|
33
|
+
runId?: string;
|
|
34
|
+
provider: string;
|
|
35
|
+
local?: boolean;
|
|
36
|
+
}) => void;
|
|
37
|
+
onEnd: (info: {
|
|
38
|
+
id: string;
|
|
39
|
+
stopReason: string;
|
|
40
|
+
lastAssistantMessage?: unknown[];
|
|
41
|
+
}) => void;
|
|
42
|
+
syncNow: () => void;
|
|
43
|
+
flush: () => boolean;
|
|
44
|
+
dropRows: () => void;
|
|
45
|
+
reset: () => void;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=subagent-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-projection.d.ts","sourceRoot":"","sources":["../../../../src/dsh-adapter/channel/subagent-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAEzE,OAAO,EAAE,qBAAqB,EAAsB,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAW,eAAe,EAAe,MAAM,YAAY,CAAA;AAErF;;+EAE+E;AAC/E,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,YAAY,CAAC,EAChF,IAAI,EAAE;IACJ,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACzB,KAAK,IAAI,KAAK,CAAA;IACd,SAAS,IAAI;QAAE,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAA;IAC9E,2EAA2E;IAC3E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,SAAS,CAAA;CAC5G;;;;8BAyCgC,OAAO,SAAS;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO;2BAe9C,OAAO,SAAS,oBAAoB,KAAG,OAAO;oBAcrD;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAAG,IAAI;kBAoB1E;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAG,IAAI;mBA5D5E,IAAI;iBAMN,OAAO;oBAiFJ,IAAI;iBACP,IAAI;EAEvB"}
|