@jingyi0605/codingns4dsh 0.2.0-rc3 → 0.2.1-beta.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.en.md +6 -6
- package/README.md +42 -29
- package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts +1 -1
- package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts.map +1 -1
- package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js +2 -2
- package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js.map +1 -1
- package/data/build/dist/bootstrap/index.d.ts +1 -1
- package/data/build/dist/bootstrap/index.d.ts.map +1 -1
- package/data/build/dist/client/bundle.js +3164 -181
- package/data/build/dist/client/bundle.js.map +1 -1
- package/data/build/dist/client/cli-catalog.d.ts +1 -1
- package/data/build/dist/client/cli-catalog.d.ts.map +1 -1
- package/data/build/dist/client/cli-catalog.js +3 -3
- package/data/build/dist/client/cli-catalog.js.map +1 -1
- package/data/build/dist/client/cli-slots.d.ts +4 -0
- package/data/build/dist/client/cli-slots.d.ts.map +1 -1
- package/data/build/dist/client/cli-slots.js +70 -9
- package/data/build/dist/client/cli-slots.js.map +1 -1
- package/data/build/dist/client/context-breakdown-dom.d.ts +1 -1
- package/data/build/dist/client/context-breakdown-dom.d.ts.map +1 -1
- package/data/build/dist/client/context-breakdown-dom.js +1 -1
- package/data/build/dist/client/context-breakdown-dom.js.map +1 -1
- package/data/build/dist/client/features/assistant-panel.d.ts +5 -0
- package/data/build/dist/client/features/assistant-panel.d.ts.map +1 -0
- package/data/build/dist/client/features/assistant-panel.js +127 -0
- package/data/build/dist/client/features/assistant-panel.js.map +1 -0
- package/data/build/dist/client/features/global-voice-assistant.d.ts +10 -0
- package/data/build/dist/client/features/global-voice-assistant.d.ts.map +1 -0
- package/data/build/dist/client/features/global-voice-assistant.js +330 -0
- package/data/build/dist/client/features/global-voice-assistant.js.map +1 -0
- package/data/build/dist/client/features/index.d.ts +2 -0
- package/data/build/dist/client/features/index.d.ts.map +1 -1
- package/data/build/dist/client/features/index.js +4 -0
- package/data/build/dist/client/features/index.js.map +1 -1
- package/data/build/dist/client/features/lan-access.d.ts.map +1 -1
- package/data/build/dist/client/features/lan-access.js +3 -1
- package/data/build/dist/client/features/lan-access.js.map +1 -1
- package/data/build/dist/client/features/types.d.ts +4 -1
- package/data/build/dist/client/features/types.d.ts.map +1 -1
- package/data/build/dist/client/features/voice-conversation-dialog.d.ts +20 -0
- package/data/build/dist/client/features/voice-conversation-dialog.d.ts.map +1 -0
- package/data/build/dist/client/features/voice-conversation-dialog.js +59 -0
- package/data/build/dist/client/features/voice-conversation-dialog.js.map +1 -0
- package/data/build/dist/client/features/voice-initialization-dialog.d.ts +10 -0
- package/data/build/dist/client/features/voice-initialization-dialog.d.ts.map +1 -0
- package/data/build/dist/client/features/voice-initialization-dialog.js +90 -0
- package/data/build/dist/client/features/voice-initialization-dialog.js.map +1 -0
- package/data/build/dist/client/features/workspace-session-enhancement-panel.d.ts.map +1 -1
- package/data/build/dist/client/features/workspace-session-enhancement-panel.js +57 -2
- package/data/build/dist/client/features/workspace-session-enhancement-panel.js.map +1 -1
- package/data/build/dist/client/features/workspace-session-enhancement.d.ts.map +1 -1
- package/data/build/dist/client/features/workspace-session-enhancement.js +27 -0
- package/data/build/dist/client/features/workspace-session-enhancement.js.map +1 -1
- package/data/build/dist/client/global-voice-runtime-registry.d.ts +27 -0
- package/data/build/dist/client/global-voice-runtime-registry.d.ts.map +1 -0
- package/data/build/dist/client/global-voice-runtime-registry.js +12 -0
- package/data/build/dist/client/global-voice-runtime-registry.js.map +1 -0
- package/data/build/dist/client/index.d.ts +1 -1
- package/data/build/dist/client/index.d.ts.map +1 -1
- package/data/build/dist/client/locale.d.ts.map +1 -1
- package/data/build/dist/client/locale.js +185 -1
- package/data/build/dist/client/locale.js.map +1 -1
- package/data/build/dist/client/locales/terminalAuth.d.ts.map +1 -1
- package/data/build/dist/client/locales/terminalAuth.js +2 -0
- package/data/build/dist/client/locales/terminalAuth.js.map +1 -1
- package/data/build/dist/client/locales/usage.d.ts.map +1 -1
- package/data/build/dist/client/locales/usage.js +4 -0
- package/data/build/dist/client/locales/usage.js.map +1 -1
- package/data/build/dist/client/mobile-session-interaction.d.ts +9 -0
- package/data/build/dist/client/mobile-session-interaction.d.ts.map +1 -1
- package/data/build/dist/client/mobile-session-interaction.js +63 -0
- package/data/build/dist/client/mobile-session-interaction.js.map +1 -1
- package/data/build/dist/client/model-catalog-cache.d.ts +23 -0
- package/data/build/dist/client/model-catalog-cache.d.ts.map +1 -1
- package/data/build/dist/client/model-catalog-cache.js +81 -9
- package/data/build/dist/client/model-catalog-cache.js.map +1 -1
- package/data/build/dist/client/service-tier.d.ts +11 -0
- package/data/build/dist/client/service-tier.d.ts.map +1 -1
- package/data/build/dist/client/service-tier.js +15 -0
- package/data/build/dist/client/service-tier.js.map +1 -1
- package/data/build/dist/client/sherpa-voice-adapter.d.ts +46 -0
- package/data/build/dist/client/sherpa-voice-adapter.d.ts.map +1 -0
- package/data/build/dist/client/sherpa-voice-adapter.js +252 -0
- package/data/build/dist/client/sherpa-voice-adapter.js.map +1 -0
- package/data/build/dist/client/skill-command.d.ts +10 -0
- package/data/build/dist/client/skill-command.d.ts.map +1 -0
- package/data/build/dist/client/skill-command.js +258 -0
- package/data/build/dist/client/skill-command.js.map +1 -0
- package/data/build/dist/client/skill-reference-dom.d.ts +38 -0
- package/data/build/dist/client/skill-reference-dom.d.ts.map +1 -0
- package/data/build/dist/client/skill-reference-dom.js +187 -0
- package/data/build/dist/client/skill-reference-dom.js.map +1 -0
- package/data/build/dist/client/subscription-slot.d.ts.map +1 -1
- package/data/build/dist/client/subscription-slot.js +51 -3
- package/data/build/dist/client/subscription-slot.js.map +1 -1
- package/data/build/dist/client/terminal/model.d.ts +40 -2
- package/data/build/dist/client/terminal/model.d.ts.map +1 -1
- package/data/build/dist/client/terminal/model.js +151 -24
- package/data/build/dist/client/terminal/model.js.map +1 -1
- package/data/build/dist/client/terminal/styles.d.ts +8 -0
- package/data/build/dist/client/terminal/styles.d.ts.map +1 -1
- package/data/build/dist/client/terminal/styles.js +23 -2
- package/data/build/dist/client/terminal/styles.js.map +1 -1
- package/data/build/dist/client/terminal/ui.d.ts.map +1 -1
- package/data/build/dist/client/terminal/ui.js +161 -26
- package/data/build/dist/client/terminal/ui.js.map +1 -1
- package/data/build/dist/client/terminal/xterm-view.d.ts.map +1 -1
- package/data/build/dist/client/terminal/xterm-view.js +218 -42
- package/data/build/dist/client/terminal/xterm-view.js.map +1 -1
- package/data/build/dist/client/voice-capture.d.ts +32 -0
- package/data/build/dist/client/voice-capture.d.ts.map +1 -0
- package/data/build/dist/client/voice-capture.js +158 -0
- package/data/build/dist/client/voice-capture.js.map +1 -0
- package/data/build/dist/client/voice-device-manager.d.ts +24 -0
- package/data/build/dist/client/voice-device-manager.d.ts.map +1 -0
- package/data/build/dist/client/voice-device-manager.js +197 -0
- package/data/build/dist/client/voice-device-manager.js.map +1 -0
- package/data/build/dist/client/voice-output.d.ts +14 -0
- package/data/build/dist/client/voice-output.d.ts.map +1 -0
- package/data/build/dist/client/voice-output.js +32 -0
- package/data/build/dist/client/voice-output.js.map +1 -0
- package/data/build/dist/client/voice-security.d.ts +8 -0
- package/data/build/dist/client/voice-security.d.ts.map +1 -0
- package/data/build/dist/client/voice-security.js +26 -0
- package/data/build/dist/client/voice-security.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts +12 -1
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.js +32 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.js.map +1 -1
- package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts +15 -0
- package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/acp-cli-driver.js +39 -9
- package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/antigravity-driver.d.ts +39 -2
- package/data/build/dist/host/cli-adapters/antigravity-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/antigravity-driver.js +198 -10
- package/data/build/dist/host/cli-adapters/antigravity-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/antigravity-subscription.d.ts +121 -0
- package/data/build/dist/host/cli-adapters/antigravity-subscription.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/antigravity-subscription.js +504 -0
- package/data/build/dist/host/cli-adapters/antigravity-subscription.js.map +1 -0
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts +21 -0
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.js +173 -7
- package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codebuddy-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/codebuddy-driver.js +4 -0
- package/data/build/dist/host/cli-adapters/codebuddy-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts +28 -2
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-driver.js +234 -5
- package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/command-code-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/command-code-subscription.js +7 -4
- package/data/build/dist/host/cli-adapters/command-code-subscription.js.map +1 -1
- package/data/build/dist/host/cli-adapters/cursor-driver.d.ts +9 -0
- package/data/build/dist/host/cli-adapters/cursor-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/cursor-driver.js +72 -2
- package/data/build/dist/host/cli-adapters/cursor-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/driver.d.ts +21 -1
- package/data/build/dist/host/cli-adapters/driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js +15 -3
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.js +18 -1
- package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
- package/data/build/dist/host/cli-adapters/gemini-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/gemini-driver.js +4 -0
- package/data/build/dist/host/cli-adapters/gemini-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.js +4 -0
- package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/json-rpc-process.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/json-rpc-process.js.map +1 -1
- package/data/build/dist/host/cli-adapters/kimi-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/kimi-driver.js +6 -6
- package/data/build/dist/host/cli-adapters/kimi-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/mcode-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/mcode-driver.js +2 -0
- package/data/build/dist/host/cli-adapters/mcode-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/model-catalog.d.ts +49 -0
- package/data/build/dist/host/cli-adapters/model-catalog.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/model-catalog.js +126 -0
- package/data/build/dist/host/cli-adapters/model-catalog.js.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts +11 -0
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-driver.js +92 -8
- package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/pi-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/pi-driver.js +4 -0
- package/data/build/dist/host/cli-adapters/pi-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/process-utils.d.ts +10 -3
- package/data/build/dist/host/cli-adapters/process-utils.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/process-utils.js.map +1 -1
- package/data/build/dist/host/cli-adapters/provider-subscription.d.ts +4 -1
- package/data/build/dist/host/cli-adapters/provider-subscription.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/provider-subscription.js +8 -1
- package/data/build/dist/host/cli-adapters/provider-subscription.js.map +1 -1
- package/data/build/dist/host/cli-adapters/qoder-driver.d.ts +15 -0
- package/data/build/dist/host/cli-adapters/qoder-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/qoder-driver.js +171 -3
- package/data/build/dist/host/cli-adapters/qoder-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/qoder-subscription.js +3 -1
- package/data/build/dist/host/cli-adapters/qoder-subscription.js.map +1 -1
- package/data/build/dist/host/cli-adapters/reasoning-content.d.ts +11 -0
- package/data/build/dist/host/cli-adapters/reasoning-content.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/reasoning-content.js +79 -0
- package/data/build/dist/host/cli-adapters/reasoning-content.js.map +1 -0
- package/data/build/dist/host/cli-adapters/registry.d.ts +24 -1
- package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.js +109 -4
- package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.d.ts +3 -2
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.js +8 -2
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.js.map +1 -1
- package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts +3 -2
- package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/standard-stream-driver.js +14 -2
- package/data/build/dist/host/cli-adapters/standard-stream-driver.js.map +1 -1
- package/data/build/dist/host/cli-bridge/injections.d.ts +10 -1
- package/data/build/dist/host/cli-bridge/injections.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/injections.js +28 -8
- package/data/build/dist/host/cli-bridge/injections.js.map +1 -1
- package/data/build/dist/host/features/assistant-dispatch.d.ts +45 -0
- package/data/build/dist/host/features/assistant-dispatch.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-dispatch.js +49 -0
- package/data/build/dist/host/features/assistant-dispatch.js.map +1 -0
- package/data/build/dist/host/features/assistant-intent.d.ts +46 -0
- package/data/build/dist/host/features/assistant-intent.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-intent.js +149 -0
- package/data/build/dist/host/features/assistant-intent.js.map +1 -0
- package/data/build/dist/host/features/assistant-scope-settings.d.ts +25 -0
- package/data/build/dist/host/features/assistant-scope-settings.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-scope-settings.js +33 -0
- package/data/build/dist/host/features/assistant-scope-settings.js.map +1 -0
- package/data/build/dist/host/features/assistant-scope.d.ts +79 -0
- package/data/build/dist/host/features/assistant-scope.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-scope.js +107 -0
- package/data/build/dist/host/features/assistant-scope.js.map +1 -0
- package/data/build/dist/host/features/assistant-session-index.d.ts +44 -0
- package/data/build/dist/host/features/assistant-session-index.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-session-index.js +109 -0
- package/data/build/dist/host/features/assistant-session-index.js.map +1 -0
- package/data/build/dist/host/features/assistant-summary.d.ts +28 -0
- package/data/build/dist/host/features/assistant-summary.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-summary.js +166 -0
- package/data/build/dist/host/features/assistant-summary.js.map +1 -0
- package/data/build/dist/host/features/assistant-voice-stream.d.ts +10 -0
- package/data/build/dist/host/features/assistant-voice-stream.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-voice-stream.js +106 -0
- package/data/build/dist/host/features/assistant-voice-stream.js.map +1 -0
- package/data/build/dist/host/features/assistant-voice-turn.d.ts +27 -0
- package/data/build/dist/host/features/assistant-voice-turn.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-voice-turn.js +54 -0
- package/data/build/dist/host/features/assistant-voice-turn.js.map +1 -0
- package/data/build/dist/host/features/assistant-waiting-state.d.ts +14 -0
- package/data/build/dist/host/features/assistant-waiting-state.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-waiting-state.js +17 -0
- package/data/build/dist/host/features/assistant-waiting-state.js.map +1 -0
- package/data/build/dist/host/features/global-voice-coordinator.d.ts +55 -0
- package/data/build/dist/host/features/global-voice-coordinator.d.ts.map +1 -0
- package/data/build/dist/host/features/global-voice-coordinator.js +221 -0
- package/data/build/dist/host/features/global-voice-coordinator.js.map +1 -0
- package/data/build/dist/host/features/global-voice-rpc.d.ts +25 -0
- package/data/build/dist/host/features/global-voice-rpc.d.ts.map +1 -0
- package/data/build/dist/host/features/global-voice-rpc.js +862 -0
- package/data/build/dist/host/features/global-voice-rpc.js.map +1 -0
- package/data/build/dist/host/features/index.d.ts +10 -0
- package/data/build/dist/host/features/index.d.ts.map +1 -1
- package/data/build/dist/host/features/index.js +10 -0
- package/data/build/dist/host/features/index.js.map +1 -1
- package/data/build/dist/host/features/peer-host.d.ts +5 -0
- package/data/build/dist/host/features/peer-host.d.ts.map +1 -1
- package/data/build/dist/host/features/peer-host.js +232 -2
- package/data/build/dist/host/features/peer-host.js.map +1 -1
- package/data/build/dist/host/features/sherpa-voice-runtime.d.ts +42 -0
- package/data/build/dist/host/features/sherpa-voice-runtime.d.ts.map +1 -0
- package/data/build/dist/host/features/sherpa-voice-runtime.js +193 -0
- package/data/build/dist/host/features/sherpa-voice-runtime.js.map +1 -0
- package/data/build/dist/host/features/types.d.ts +26 -0
- package/data/build/dist/host/features/types.d.ts.map +1 -1
- package/data/build/dist/host/features/voice-agent-actions.d.ts +26 -0
- package/data/build/dist/host/features/voice-agent-actions.d.ts.map +1 -0
- package/data/build/dist/host/features/voice-agent-actions.js +128 -0
- package/data/build/dist/host/features/voice-agent-actions.js.map +1 -0
- package/data/build/dist/host/features/voice-agent-service.d.ts +117 -0
- package/data/build/dist/host/features/voice-agent-service.d.ts.map +1 -0
- package/data/build/dist/host/features/voice-agent-service.js +243 -0
- package/data/build/dist/host/features/voice-agent-service.js.map +1 -0
- package/data/build/dist/host/features/voice-model-setup.d.ts +20 -0
- package/data/build/dist/host/features/voice-model-setup.d.ts.map +1 -0
- package/data/build/dist/host/features/voice-model-setup.js +89 -0
- package/data/build/dist/host/features/voice-model-setup.js.map +1 -0
- package/data/build/dist/host/index.d.ts +2 -2
- package/data/build/dist/host/index.d.ts.map +1 -1
- package/data/build/dist/host/index.js +7 -1
- package/data/build/dist/host/index.js.map +1 -1
- package/data/build/dist/host/lan-access-dsh.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js +53 -2
- package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js +15 -1
- package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js.map +1 -1
- package/data/build/dist/host/native-session-bridge.d.ts +2 -0
- package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
- package/data/build/dist/host/native-session-bridge.js +1 -0
- package/data/build/dist/host/native-session-bridge.js.map +1 -1
- package/data/build/dist/host/rpc.d.ts.map +1 -1
- package/data/build/dist/host/rpc.js +9 -4
- package/data/build/dist/host/rpc.js.map +1 -1
- package/data/build/dist/host/settings.d.ts.map +1 -1
- package/data/build/dist/host/settings.js +19 -1
- package/data/build/dist/host/settings.js.map +1 -1
- package/data/build/dist/host/terminal/backends/conpty-backend.js.map +1 -1
- package/data/build/dist/host/terminal/terminal-controller.d.ts.map +1 -1
- package/data/build/dist/host/terminal/terminal-controller.js +4 -0
- package/data/build/dist/host/terminal/terminal-controller.js.map +1 -1
- package/data/build/dist/host/terminal/terminal-service.d.ts +21 -1
- package/data/build/dist/host/terminal/terminal-service.d.ts.map +1 -1
- package/data/build/dist/host/terminal/terminal-service.js +118 -7
- package/data/build/dist/host/terminal/terminal-service.js.map +1 -1
- package/data/build/dist/index.d.ts +2 -2
- package/data/build/dist/index.d.ts.map +1 -1
- package/data/build/dist/index.js +1 -1
- package/data/build/dist/index.js.map +1 -1
- package/data/build/dist/shared/contracts/assistant.d.ts +70 -0
- package/data/build/dist/shared/contracts/assistant.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/assistant.js +2 -0
- package/data/build/dist/shared/contracts/assistant.js.map +1 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts +33 -1
- package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/config.d.ts +30 -0
- package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/config.js +20 -0
- package/data/build/dist/shared/contracts/config.js.map +1 -1
- package/data/build/dist/shared/contracts/errors.d.ts +2 -2
- package/data/build/dist/shared/contracts/errors.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/subscription.d.ts +30 -0
- package/data/build/dist/shared/contracts/subscription.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/subscription.js.map +1 -1
- package/data/build/dist/shared/contracts/terminal.d.ts +2 -0
- package/data/build/dist/shared/contracts/terminal.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/version.d.ts +12 -5
- package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/version.js +11 -4
- package/data/build/dist/shared/contracts/version.js.map +1 -1
- package/data/build/dist/shared/contracts/voice-runtime.d.ts +90 -0
- package/data/build/dist/shared/contracts/voice-runtime.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/voice-runtime.js +16 -0
- package/data/build/dist/shared/contracts/voice-runtime.js.map +1 -0
- package/data/build/dist/shared/index.d.ts +8 -2
- package/data/build/dist/shared/index.d.ts.map +1 -1
- package/data/build/dist/shared/index.js +5 -1
- package/data/build/dist/shared/index.js.map +1 -1
- package/data/build/dist/shared/voice-models.d.ts +21 -0
- package/data/build/dist/shared/voice-models.d.ts.map +1 -0
- package/data/build/dist/shared/voice-models.js +27 -0
- package/data/build/dist/shared/voice-models.js.map +1 -0
- package/data/build/dist/shared/voice-stream.d.ts +42 -0
- package/data/build/dist/shared/voice-stream.d.ts.map +1 -0
- package/data/build/dist/shared/voice-stream.js +99 -0
- package/data/build/dist/shared/voice-stream.js.map +1 -0
- package/data/build/dist/shared/voice-text.d.ts +3 -0
- package/data/build/dist/shared/voice-text.d.ts.map +1 -0
- package/data/build/dist/shared/voice-text.js +14 -0
- package/data/build/dist/shared/voice-text.js.map +1 -0
- package/data/build/dist/typert.host.d.ts.map +1 -1
- package/data/build/dist/typert.host.js +1 -0
- package/data/build/dist/typert.host.js.map +1 -1
- package/package.json +56 -26
- package/profile/README.md +8 -5
- package/profile/package.json +5 -3
- package/profile/version.json +3 -3
- package/version.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injections.js","sourceRoot":"","sources":["../../../../../src/host/cli-bridge/injections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;;;;GAKG;AAEH,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AACtF,MAAM,qBAAqB,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAE9F,0CAA0C;AAC1C,MAAM,aAAa,GAAG,0BAA0B,CAAA;AAEhD,MAAM,UAAU,kBAAkB;IAChC,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,qBAAqB,CAAA;AAC9B,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,IAAI,iBAAiB,EAAE,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACnD,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAA;AAC3C,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/C,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;AACzC,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,4BAA4B,CAAC,SAAiB,EAAE,SAAiB;IAC/E,OAAO,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,CAAA;AACtD,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,SAAiB;IACnE,MAAM,GAAG,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACnD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IACjF,OAAO;QACL,cAAc,EAAE,MAAM;QACtB,wBAAwB,EAAE,sBAAsB,CAAC,+BAA+B,CAAC;QACjF,mBAAmB,EAAE,MAAM;KAC5B,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAC,SAAiB;IAChE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAA;IACtD,OAAO,sBAAsB,CAAC,yBAAyB,CAAC,CAAA;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,SAAiB;IACtE,MAAM,GAAG,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACnD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAChC,OAAO,CAAC;YACN,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,OAAO,CAAC,QAAQ;YACzB,IAAI,EAAE,CAAC,cAAc,CAAC;YACtB,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SACnE,CAAC,CAAA;AACJ,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,SAAiB;
|
|
1
|
+
{"version":3,"file":"injections.js","sourceRoot":"","sources":["../../../../../src/host/cli-bridge/injections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type AssistantScope, type AssistantScopeRejection } from './assistant-scope.js';
|
|
2
|
+
import type { AssistantDispatchMode, AssistantTargetRef } from './assistant-intent.js';
|
|
3
|
+
import type { SessionIndexEntry } from '../../shared/contracts/assistant.js';
|
|
4
|
+
export interface AssistantPromptRequest {
|
|
5
|
+
readonly requestId: string;
|
|
6
|
+
readonly sessionId: string;
|
|
7
|
+
readonly mode: AssistantDispatchMode;
|
|
8
|
+
readonly content: readonly [{
|
|
9
|
+
readonly type: 'text';
|
|
10
|
+
readonly text: string;
|
|
11
|
+
}];
|
|
12
|
+
readonly hostId?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AssistantDispatchContext {
|
|
15
|
+
readonly scope: AssistantScope;
|
|
16
|
+
readonly archivedSessionIds: ReadonlySet<string> | readonly string[];
|
|
17
|
+
readonly indexGeneration: number;
|
|
18
|
+
readonly entries: readonly SessionIndexEntry[];
|
|
19
|
+
}
|
|
20
|
+
export type AssistantDispatchResult = {
|
|
21
|
+
readonly ok: true;
|
|
22
|
+
readonly requestId: string;
|
|
23
|
+
readonly target: AssistantTargetRef;
|
|
24
|
+
readonly mode: AssistantDispatchMode;
|
|
25
|
+
} | {
|
|
26
|
+
readonly ok: false;
|
|
27
|
+
readonly code: 'invalid-request' | 'stale-target' | 'target-not-found' | 'scope-rejected';
|
|
28
|
+
readonly message: string;
|
|
29
|
+
readonly rejection?: AssistantScopeRejection;
|
|
30
|
+
};
|
|
31
|
+
export type AssistantPrompt = (request: AssistantPromptRequest) => unknown | Promise<unknown>;
|
|
32
|
+
/** 派发前再次校验当前索引代次、范围和归档状态;不自动取消归档。 */
|
|
33
|
+
export declare class AssistantDispatcher {
|
|
34
|
+
private readonly prompt;
|
|
35
|
+
private readonly sentRequestIds;
|
|
36
|
+
private readonly pendingRequestIds;
|
|
37
|
+
constructor(prompt: AssistantPrompt);
|
|
38
|
+
dispatch(request: {
|
|
39
|
+
readonly requestId: string;
|
|
40
|
+
readonly target: AssistantTargetRef;
|
|
41
|
+
readonly mode: AssistantDispatchMode;
|
|
42
|
+
readonly task: string;
|
|
43
|
+
}, context: AssistantDispatchContext): Promise<AssistantDispatchResult>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=assistant-dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-dispatch.d.ts","sourceRoot":"","sources":["../../../../../src/host/features/assistant-dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,cAAc,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACpH,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAE5E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,CAAA;IACpE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAC/C;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC5H;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAE7L,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE7F,qCAAqC;AACrC,qBAAa,mBAAmB;IAIlB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsD;gBAE3D,MAAM,EAAE,eAAe;IAE9C,QAAQ,CACZ,OAAO,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EACzI,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC;CA8BpC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { getAssistantScopeRejection } from './assistant-scope.js';
|
|
2
|
+
/** 派发前再次校验当前索引代次、范围和归档状态;不自动取消归档。 */
|
|
3
|
+
export class AssistantDispatcher {
|
|
4
|
+
prompt;
|
|
5
|
+
sentRequestIds = new Map();
|
|
6
|
+
pendingRequestIds = new Map();
|
|
7
|
+
constructor(prompt) {
|
|
8
|
+
this.prompt = prompt;
|
|
9
|
+
}
|
|
10
|
+
async dispatch(request, context) {
|
|
11
|
+
const requestId = request.requestId.trim();
|
|
12
|
+
const task = request.task.trim();
|
|
13
|
+
if (requestId === '' || task === '')
|
|
14
|
+
return { ok: false, code: 'invalid-request', message: '请求标识和任务内容不能为空' };
|
|
15
|
+
if (request.target.indexGeneration !== context.indexGeneration)
|
|
16
|
+
return { ok: false, code: 'stale-target', message: '索引已更新,请重新确认目标会话' };
|
|
17
|
+
const entry = context.entries.find((candidate) => candidate.sessionId === request.target.sessionId);
|
|
18
|
+
if (entry === undefined)
|
|
19
|
+
return { ok: false, code: 'target-not-found', message: '目标会话不存在或已退出索引' };
|
|
20
|
+
if (entry.workspaceId !== request.target.workspaceId || entry.hostId !== request.target.hostId) {
|
|
21
|
+
const mismatch = getAssistantScopeRejection(context.scope, { workspaceId: request.target.workspaceId, sessionId: request.target.sessionId }, context.archivedSessionIds);
|
|
22
|
+
return { ok: false, code: 'scope-rejected', message: mismatch?.message ?? '目标会话来源已变化', ...(mismatch === null ? {} : { rejection: mismatch }) };
|
|
23
|
+
}
|
|
24
|
+
const rejection = getAssistantScopeRejection(context.scope, { workspaceId: entry.workspaceId, sessionId: entry.sessionId }, context.archivedSessionIds);
|
|
25
|
+
if (rejection !== null)
|
|
26
|
+
return { ok: false, code: 'scope-rejected', message: rejection.message, rejection };
|
|
27
|
+
const sent = this.sentRequestIds.get(requestId);
|
|
28
|
+
if (sent !== undefined)
|
|
29
|
+
return sent;
|
|
30
|
+
const pending = this.pendingRequestIds.get(requestId);
|
|
31
|
+
if (pending !== undefined)
|
|
32
|
+
return await pending;
|
|
33
|
+
const operation = (async () => {
|
|
34
|
+
await this.prompt({ requestId, sessionId: request.target.sessionId, mode: request.mode, content: [{ type: 'text', text: task }], hostId: request.target.hostId });
|
|
35
|
+
const result = { ok: true, requestId, target: request.target, mode: request.mode };
|
|
36
|
+
this.sentRequestIds.set(requestId, result);
|
|
37
|
+
return result;
|
|
38
|
+
})();
|
|
39
|
+
this.pendingRequestIds.set(requestId, operation);
|
|
40
|
+
try {
|
|
41
|
+
return await operation;
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
if (this.pendingRequestIds.get(requestId) === operation)
|
|
45
|
+
this.pendingRequestIds.delete(requestId);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=assistant-dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-dispatch.js","sourceRoot":"","sources":["../../../../../src/host/features/assistant-dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type AssistantScope, type AssistantScopeRejection } from './assistant-scope.js';
|
|
2
|
+
import type { SessionIndexEntry } from '../../shared/contracts/assistant.js';
|
|
3
|
+
import type { AssistantExcludedTarget } from '../../shared/contracts/assistant.js';
|
|
4
|
+
export type AssistantIntentKind = 'summary' | 'dispatch' | 'clarify' | 'chat';
|
|
5
|
+
export type AssistantDispatchMode = 'queue' | 'steer';
|
|
6
|
+
export interface AssistantTargetRef {
|
|
7
|
+
readonly sessionId: string;
|
|
8
|
+
readonly workspaceId: string;
|
|
9
|
+
readonly hostId: string;
|
|
10
|
+
readonly indexGeneration: number;
|
|
11
|
+
}
|
|
12
|
+
export interface AssistantIntentOptions {
|
|
13
|
+
readonly scope?: AssistantScope;
|
|
14
|
+
readonly archivedSessionIds?: ReadonlySet<string> | readonly string[];
|
|
15
|
+
readonly indexGeneration?: number;
|
|
16
|
+
readonly excludedTargets?: readonly AssistantExcludedTarget[];
|
|
17
|
+
}
|
|
18
|
+
export interface AssistantIntent {
|
|
19
|
+
readonly kind: AssistantIntentKind;
|
|
20
|
+
readonly text: string;
|
|
21
|
+
readonly targetDescription?: string;
|
|
22
|
+
readonly task?: string;
|
|
23
|
+
readonly mode?: AssistantDispatchMode;
|
|
24
|
+
readonly target?: AssistantTargetRef;
|
|
25
|
+
readonly candidates?: readonly SessionIndexEntry[];
|
|
26
|
+
readonly reason?: string;
|
|
27
|
+
readonly rejection?: AssistantScopeRejection;
|
|
28
|
+
}
|
|
29
|
+
export type AssistantTargetResolution = {
|
|
30
|
+
readonly status: 'matched';
|
|
31
|
+
readonly target: AssistantTargetRef;
|
|
32
|
+
} | {
|
|
33
|
+
readonly status: 'clarify';
|
|
34
|
+
readonly reason: string;
|
|
35
|
+
readonly candidates: readonly SessionIndexEntry[];
|
|
36
|
+
} | {
|
|
37
|
+
readonly status: 'not-found';
|
|
38
|
+
readonly reason: string;
|
|
39
|
+
} | {
|
|
40
|
+
readonly status: 'rejected';
|
|
41
|
+
readonly rejection: AssistantScopeRejection;
|
|
42
|
+
};
|
|
43
|
+
/** 规则解析只做路由,不调用模型,也不产生派发副作用。 */
|
|
44
|
+
export declare function parseAssistantIntent(text: string, entries: readonly SessionIndexEntry[], options?: AssistantIntentOptions): AssistantIntent;
|
|
45
|
+
export declare function resolveAssistantTarget(description: string, entries: readonly SessionIndexEntry[], options?: AssistantIntentOptions): AssistantTargetResolution;
|
|
46
|
+
//# sourceMappingURL=assistant-intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-intent.d.ts","sourceRoot":"","sources":["../../../../../src/host/features/assistant-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAC5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAElF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;AAC7E,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,OAAO,CAAA;AAErD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,CAAA;IACrE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAA;CAC9D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAA;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAA;CAC7C;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,GAC1G;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAA;CAAE,CAAA;AAEhF,gCAAgC;AAChC,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAqCjB;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,OAAO,GAAE,sBAA2B,GACnC,yBAAyB,CAyC3B"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { getAssistantScopeRejection, } from './assistant-scope.js';
|
|
2
|
+
/** 规则解析只做路由,不调用模型,也不产生派发副作用。 */
|
|
3
|
+
export function parseAssistantIntent(text, entries, options = {}) {
|
|
4
|
+
const normalized = text.trim();
|
|
5
|
+
if (isSummaryIntent(normalized))
|
|
6
|
+
return { kind: 'summary', text: normalized };
|
|
7
|
+
const dispatch = parseDispatch(normalized);
|
|
8
|
+
if (dispatch === null)
|
|
9
|
+
return { kind: 'chat', text: normalized };
|
|
10
|
+
const resolution = resolveAssistantTarget(dispatch.targetDescription, entries, options);
|
|
11
|
+
if (resolution.status === 'matched') {
|
|
12
|
+
return {
|
|
13
|
+
kind: 'dispatch',
|
|
14
|
+
text: normalized,
|
|
15
|
+
targetDescription: dispatch.targetDescription,
|
|
16
|
+
task: dispatch.task,
|
|
17
|
+
mode: dispatch.mode,
|
|
18
|
+
target: resolution.target,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (resolution.status === 'rejected') {
|
|
22
|
+
return {
|
|
23
|
+
kind: 'clarify',
|
|
24
|
+
text: normalized,
|
|
25
|
+
targetDescription: dispatch.targetDescription,
|
|
26
|
+
task: dispatch.task,
|
|
27
|
+
mode: dispatch.mode,
|
|
28
|
+
reason: resolution.rejection.message,
|
|
29
|
+
rejection: resolution.rejection,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
kind: 'clarify',
|
|
34
|
+
text: normalized,
|
|
35
|
+
targetDescription: dispatch.targetDescription,
|
|
36
|
+
task: dispatch.task,
|
|
37
|
+
mode: dispatch.mode,
|
|
38
|
+
reason: resolution.reason,
|
|
39
|
+
...(resolution.status === 'clarify' ? { candidates: resolution.candidates } : {}),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function resolveAssistantTarget(description, entries, options = {}) {
|
|
43
|
+
const candidates = entries.filter((entry) => entry.archived !== true);
|
|
44
|
+
const query = normalize(description);
|
|
45
|
+
if (query === '')
|
|
46
|
+
return { status: 'not-found', reason: '未提供目标会话描述' };
|
|
47
|
+
const exact = candidates.filter((entry) => normalize(entry.title ?? '') === query);
|
|
48
|
+
const exactResult = resolveCandidates(exact, options);
|
|
49
|
+
if (exactResult !== null)
|
|
50
|
+
return exactResult;
|
|
51
|
+
const contained = candidates.filter((entry) => normalize(entry.title ?? '').includes(query) || query.includes(normalize(entry.title ?? '')));
|
|
52
|
+
const containedResult = resolveCandidates(contained, options);
|
|
53
|
+
if (containedResult !== null)
|
|
54
|
+
return containedResult;
|
|
55
|
+
const ordinal = resolveOrdinalTarget(description, candidates);
|
|
56
|
+
if (ordinal !== null) {
|
|
57
|
+
const ordinalResult = resolveCandidates(ordinal, options);
|
|
58
|
+
if (ordinalResult !== null)
|
|
59
|
+
return ordinalResult;
|
|
60
|
+
}
|
|
61
|
+
if (/最近|刚刚|刚才|最新/u.test(description)) {
|
|
62
|
+
const sorted = [...candidates].sort((left, right) => (right.updatedAt ?? -Infinity) - (left.updatedAt ?? -Infinity));
|
|
63
|
+
const newestTime = sorted[0]?.updatedAt;
|
|
64
|
+
if (newestTime !== undefined && newestTime !== null) {
|
|
65
|
+
const newest = sorted.filter((entry) => entry.updatedAt === newestTime);
|
|
66
|
+
const recentResult = resolveCandidates(newest, options);
|
|
67
|
+
if (recentResult !== null)
|
|
68
|
+
return recentResult;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const excluded = (options.excludedTargets ?? []).filter((entry) => {
|
|
72
|
+
const title = normalize(entry.title ?? '');
|
|
73
|
+
const sessionId = normalize(entry.sessionId);
|
|
74
|
+
return (title !== '' && (title === query || title.includes(query) || query.includes(title))) || sessionId === query || sessionId.includes(query);
|
|
75
|
+
});
|
|
76
|
+
if (excluded.length === 1) {
|
|
77
|
+
const entry = excluded[0];
|
|
78
|
+
if (entry.archived)
|
|
79
|
+
return { status: 'rejected', rejection: { code: 'session-archived', sessionId: entry.sessionId, message: `会话「${entry.title ?? entry.sessionId}」已归档,不在助理索引范围内` } };
|
|
80
|
+
return { status: 'rejected', rejection: { code: 'workspace-outside-scope', workspaceId: entry.workspaceId, message: `工作区「${entry.workspaceName || entry.workspaceId}」不在助理受管范围内` } };
|
|
81
|
+
}
|
|
82
|
+
return { status: 'not-found', reason: `找不到受管范围内的会话「${description}」` };
|
|
83
|
+
}
|
|
84
|
+
function resolveCandidates(candidates, options) {
|
|
85
|
+
if (candidates.length === 0)
|
|
86
|
+
return null;
|
|
87
|
+
if (candidates.length > 1) {
|
|
88
|
+
return { status: 'clarify', reason: '目标会话不唯一,请说明工作区或完整标题', candidates };
|
|
89
|
+
}
|
|
90
|
+
const entry = candidates[0];
|
|
91
|
+
if (!entry)
|
|
92
|
+
return null;
|
|
93
|
+
if (options.scope !== undefined) {
|
|
94
|
+
const rejection = getAssistantScopeRejection(options.scope, {
|
|
95
|
+
workspaceId: entry.workspaceId,
|
|
96
|
+
sessionId: entry.sessionId,
|
|
97
|
+
}, options.archivedSessionIds ?? []);
|
|
98
|
+
if (rejection !== null)
|
|
99
|
+
return { status: 'rejected', rejection };
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
status: 'matched',
|
|
103
|
+
target: {
|
|
104
|
+
sessionId: entry.sessionId,
|
|
105
|
+
workspaceId: entry.workspaceId,
|
|
106
|
+
hostId: entry.hostId,
|
|
107
|
+
indexGeneration: options.indexGeneration ?? 0,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function parseDispatch(text) {
|
|
112
|
+
const match = /^(?:请|请让|让|叫|通知)\s*(.+?)\s*(?:去|来)?\s*(?:做|执行|处理|完成|运行|跑|修复|检查|改)\s*(.+)$/u.exec(text)
|
|
113
|
+
?? /^(?:帮我|麻烦你|麻烦)\s*(?:把)?\s*(.+?)\s*(?:处理|完成|运行|跑|修复|检查|改)\s*(.+?)(?:一下)?$/u.exec(text)
|
|
114
|
+
?? /^(?:请在|在)\s*(.+?)\s*(?:里|中)?\s*(?:做|执行|处理|运行|跑|修复|检查|改)\s*(.+)$/u.exec(text);
|
|
115
|
+
if (!match?.[1] || !match[2])
|
|
116
|
+
return null;
|
|
117
|
+
const targetDescription = match[1].trim();
|
|
118
|
+
const task = match[2].trim();
|
|
119
|
+
if (targetDescription === '' || task === '')
|
|
120
|
+
return null;
|
|
121
|
+
return { targetDescription, task, mode: /立即|马上|立刻|打断|改方向|停止当前/u.test(text) ? 'steer' : 'queue' };
|
|
122
|
+
}
|
|
123
|
+
function isSummaryIntent(text) {
|
|
124
|
+
return /进展|状态|在跑|运行中|完成了什么|有什么任务|汇总|总结|待处理|等我处理/u.test(text) && !/让|叫|通知/u.test(text);
|
|
125
|
+
}
|
|
126
|
+
function resolveOrdinalTarget(description, entries) {
|
|
127
|
+
const match = /(?:工作区\s*)?(.+?)?\s*(?:第\s*([一二三四五六七八九十\d]+)\s*个|第\s*([一二三四五六七八九十\d]+)\s*个会话)/u.exec(description);
|
|
128
|
+
if (!match)
|
|
129
|
+
return null;
|
|
130
|
+
const workspace = match[1]?.trim();
|
|
131
|
+
const ordinalText = match[2] ?? match[3];
|
|
132
|
+
const ordinal = parseChineseNumber(ordinalText);
|
|
133
|
+
if (ordinal === null || ordinal < 1)
|
|
134
|
+
return [];
|
|
135
|
+
const scoped = workspace === undefined || workspace === '' ? entries : entries.filter((entry) => normalize(entry.workspaceName).includes(normalize(workspace)));
|
|
136
|
+
return scoped.slice(ordinal - 1, ordinal);
|
|
137
|
+
}
|
|
138
|
+
function parseChineseNumber(value) {
|
|
139
|
+
if (value === undefined)
|
|
140
|
+
return null;
|
|
141
|
+
if (/^\d+$/u.test(value))
|
|
142
|
+
return Number(value);
|
|
143
|
+
const values = { 一: 1, 二: 2, 三: 3, 四: 4, 五: 5, 六: 6, 七: 7, 八: 8, 九: 9, 十: 10 };
|
|
144
|
+
return values[value] ?? null;
|
|
145
|
+
}
|
|
146
|
+
function normalize(value) {
|
|
147
|
+
return value.toLocaleLowerCase('zh-CN').replace(/[\s,。!?、,.!?]/gu, '');
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=assistant-intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-intent.js","sourceRoot":"","sources":["../../../../../src/host/features/assistant-intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getAssistantScopeState, type AssistantScope } from './assistant-scope.js';
|
|
2
|
+
export interface AssistantScopeSettingsStore {
|
|
3
|
+
read(): readonly string[] | Promise<readonly string[]>;
|
|
4
|
+
write(workspaceIds: readonly string[]): void | Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export interface AssistantScopeSettingsSnapshot {
|
|
7
|
+
readonly scope: AssistantScope;
|
|
8
|
+
readonly state: ReturnType<typeof getAssistantScopeState>;
|
|
9
|
+
}
|
|
10
|
+
export type AssistantScopeChangedListener = (snapshot: AssistantScopeSettingsSnapshot) => void;
|
|
11
|
+
/**
|
|
12
|
+
* 受管范围的注入式设置边界。默认空范围,只有用户显式调用 setManagedWorkspaceIds
|
|
13
|
+
* 才会改变选择;真实设置服务在外围注入,不让纯逻辑依赖 DSH。
|
|
14
|
+
*/
|
|
15
|
+
export declare class AssistantScopeSettings {
|
|
16
|
+
private readonly store;
|
|
17
|
+
private scope;
|
|
18
|
+
private readonly listeners;
|
|
19
|
+
constructor(store: AssistantScopeSettingsStore);
|
|
20
|
+
load(): Promise<AssistantScopeSettingsSnapshot>;
|
|
21
|
+
snapshot(): AssistantScopeSettingsSnapshot;
|
|
22
|
+
setManagedWorkspaceIds(workspaceIds: readonly string[]): Promise<AssistantScopeSettingsSnapshot>;
|
|
23
|
+
subscribe(listener: AssistantScopeChangedListener): () => void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=assistant-scope-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-scope-settings.d.ts","sourceRoot":"","sources":["../../../../../src/host/features/assistant-scope-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,sBAAsB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAExG,MAAM,WAAW,2BAA2B;IAC1C,IAAI,IAAI,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;IACtD,KAAK,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D;AACD,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAA;CAC1D;AAED,MAAM,MAAM,6BAA6B,GAAG,CAAC,QAAQ,EAAE,8BAA8B,KAAK,IAAI,CAAA;AAE9F;;;GAGG;AACH,qBAAa,sBAAsB;IAIrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAHlC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;gBAExC,KAAK,EAAE,2BAA2B;IAEzD,IAAI,IAAI,OAAO,CAAC,8BAA8B,CAAC;IAKrD,QAAQ,IAAI,8BAA8B;IAIpC,sBAAsB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAQtG,SAAS,CAAC,QAAQ,EAAE,6BAA6B,GAAG,MAAM,IAAI;CAI/D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createAssistantScope, getAssistantScopeState } from './assistant-scope.js';
|
|
2
|
+
/**
|
|
3
|
+
* 受管范围的注入式设置边界。默认空范围,只有用户显式调用 setManagedWorkspaceIds
|
|
4
|
+
* 才会改变选择;真实设置服务在外围注入,不让纯逻辑依赖 DSH。
|
|
5
|
+
*/
|
|
6
|
+
export class AssistantScopeSettings {
|
|
7
|
+
store;
|
|
8
|
+
scope = createAssistantScope([]);
|
|
9
|
+
listeners = new Set();
|
|
10
|
+
constructor(store) {
|
|
11
|
+
this.store = store;
|
|
12
|
+
}
|
|
13
|
+
async load() {
|
|
14
|
+
this.scope = createAssistantScope(await this.store.read());
|
|
15
|
+
return this.snapshot();
|
|
16
|
+
}
|
|
17
|
+
snapshot() {
|
|
18
|
+
return { scope: this.scope, state: getAssistantScopeState(this.scope) };
|
|
19
|
+
}
|
|
20
|
+
async setManagedWorkspaceIds(workspaceIds) {
|
|
21
|
+
this.scope = createAssistantScope(workspaceIds);
|
|
22
|
+
await this.store.write(this.scope.managedWorkspaceIds);
|
|
23
|
+
const snapshot = this.snapshot();
|
|
24
|
+
for (const listener of [...this.listeners])
|
|
25
|
+
listener(snapshot);
|
|
26
|
+
return snapshot;
|
|
27
|
+
}
|
|
28
|
+
subscribe(listener) {
|
|
29
|
+
this.listeners.add(listener);
|
|
30
|
+
return () => this.listeners.delete(listener);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=assistant-scope-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-scope-settings.js","sourceRoot":"","sources":["../../../../../src/host/features/assistant-scope-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAuB,MAAM,sBAAsB,CAAA;AAaxG;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IAIJ;IAHrB,KAAK,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAA;IACvB,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAA;IAErE,YAA6B,KAAkC;QAAlC,UAAK,GAAL,KAAK,CAA6B;IAAG,CAAC;IAEnE,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,YAA+B;QAC1D,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAC/C,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAChC,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC9D,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,SAAS,CAAC,QAAuC;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC9C,CAAC;CACF"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 编程助理的受管范围契约。
|
|
3
|
+
*
|
|
4
|
+
* 这个模块只处理值和集合,不读取 DSH 服务,也不保存状态。索引层、意图层和
|
|
5
|
+
* 派发层都必须先经过这里,才能保证「受管工作区 ∩ 未归档会话」只有一种实现。
|
|
6
|
+
*/
|
|
7
|
+
/** 用户显式勾选的工作区范围;归档会话永远不会被纳入。 */
|
|
8
|
+
export interface AssistantScope {
|
|
9
|
+
readonly managedWorkspaceIds: readonly string[];
|
|
10
|
+
readonly includeArchived: false;
|
|
11
|
+
}
|
|
12
|
+
/** 参与范围计算的最小会话形状。 */
|
|
13
|
+
export interface AssistantScopeSession {
|
|
14
|
+
readonly sessionId: string;
|
|
15
|
+
readonly workspaceId: string;
|
|
16
|
+
}
|
|
17
|
+
/** 受管范围为空时必须向上层暴露的明确状态。 */
|
|
18
|
+
export type AssistantScopeState = {
|
|
19
|
+
readonly status: 'empty';
|
|
20
|
+
readonly reason: 'no-managed-workspaces';
|
|
21
|
+
readonly message: '尚未选择任何工作区';
|
|
22
|
+
} | {
|
|
23
|
+
readonly status: 'ready';
|
|
24
|
+
readonly managedWorkspaceIds: readonly string[];
|
|
25
|
+
};
|
|
26
|
+
/** 范围过滤的结果,同时保留空范围状态,避免把空范围误报成「没有进展」。 */
|
|
27
|
+
export interface AssistantScopeFilterResult<T> {
|
|
28
|
+
readonly state: AssistantScopeState;
|
|
29
|
+
readonly sessions: readonly T[];
|
|
30
|
+
}
|
|
31
|
+
/** 派发或查询目标被范围边界拒绝时的结构化原因。 */
|
|
32
|
+
export type AssistantScopeRejection = {
|
|
33
|
+
readonly code: 'scope-empty';
|
|
34
|
+
readonly message: string;
|
|
35
|
+
} | {
|
|
36
|
+
readonly code: 'workspace-outside-scope';
|
|
37
|
+
readonly workspaceId: string;
|
|
38
|
+
readonly message: string;
|
|
39
|
+
} | {
|
|
40
|
+
readonly code: 'session-archived';
|
|
41
|
+
readonly sessionId: string;
|
|
42
|
+
readonly message: string;
|
|
43
|
+
};
|
|
44
|
+
/** 可以用于目标校验的最小目标形状。 */
|
|
45
|
+
export interface AssistantScopeTarget {
|
|
46
|
+
readonly workspaceId: string;
|
|
47
|
+
readonly sessionId?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 创建规范化的受管范围。
|
|
51
|
+
*
|
|
52
|
+
* 工作区 ID 会去除首尾空白、删除空值并去重,顺序按用户输入保留。每次调用
|
|
53
|
+
* 都返回新数组,不会修改调用方传入的数组。
|
|
54
|
+
*/
|
|
55
|
+
export declare function createAssistantScope(managedWorkspaceIds: readonly string[]): AssistantScope;
|
|
56
|
+
/** 判断用户是否还没有显式勾选任何工作区。 */
|
|
57
|
+
export declare function isAssistantScopeEmpty(scope: AssistantScope): boolean;
|
|
58
|
+
/** 返回可直接供 UI 或语音层使用的范围状态。 */
|
|
59
|
+
export declare function getAssistantScopeState(scope: AssistantScope): AssistantScopeState;
|
|
60
|
+
/**
|
|
61
|
+
* 返回受管范围内且未归档的会话。
|
|
62
|
+
*
|
|
63
|
+
* 归档集合接受 Set 或数组,便于直接接入 workspaceRegistry 的快照;函数只读
|
|
64
|
+
* 输入集合,不会为了过滤而修改任何对象。空范围返回空数组,但调用方若需要
|
|
65
|
+
* 展示原因,应同时读取 getAssistantScopeState 或使用 filterAssistantSessions。
|
|
66
|
+
*/
|
|
67
|
+
export declare function filterSessionsByAssistantScope<T extends AssistantScopeSession>(sessions: readonly T[], scope: AssistantScope, archivedSessionIds: ReadonlySet<string> | readonly string[]): readonly T[];
|
|
68
|
+
/** 过滤并返回范围状态,避免空范围被误解为「没有符合条件的会话」。 */
|
|
69
|
+
export declare function filterAssistantSessions<T extends AssistantScopeSession>(sessions: readonly T[], scope: AssistantScope, archivedSessionIds: ReadonlySet<string> | readonly string[]): AssistantScopeFilterResult<T>;
|
|
70
|
+
/**
|
|
71
|
+
* 校验目标是否仍在助理可访问范围内。
|
|
72
|
+
*
|
|
73
|
+
* 返回 null 表示允许;返回结构化原因表示必须拒绝,调用方不得继续读取或派发。
|
|
74
|
+
* 归档判断放在工作区判断之后,保证空范围和范围外目标不会泄露归档状态。
|
|
75
|
+
*/
|
|
76
|
+
export declare function getAssistantScopeRejection(scope: AssistantScope, target: AssistantScopeTarget, archivedSessionIds: ReadonlySet<string> | readonly string[]): AssistantScopeRejection | null;
|
|
77
|
+
/** 返回目标是否可以被助理读取或派发。 */
|
|
78
|
+
export declare function isAssistantScopeTargetAllowed(scope: AssistantScope, target: AssistantScopeTarget, archivedSessionIds: ReadonlySet<string> | readonly string[]): boolean;
|
|
79
|
+
//# sourceMappingURL=assistant-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-scope.d.ts","sourceRoot":"","sources":["../../../../../src/host/features/assistant-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 编程助理的受管范围契约。
|
|
3
|
+
*
|
|
4
|
+
* 这个模块只处理值和集合,不读取 DSH 服务,也不保存状态。索引层、意图层和
|
|
5
|
+
* 派发层都必须先经过这里,才能保证「受管工作区 ∩ 未归档会话」只有一种实现。
|
|
6
|
+
*/
|
|
7
|
+
const EMPTY_SCOPE_MESSAGE = '尚未选择任何工作区';
|
|
8
|
+
/**
|
|
9
|
+
* 创建规范化的受管范围。
|
|
10
|
+
*
|
|
11
|
+
* 工作区 ID 会去除首尾空白、删除空值并去重,顺序按用户输入保留。每次调用
|
|
12
|
+
* 都返回新数组,不会修改调用方传入的数组。
|
|
13
|
+
*/
|
|
14
|
+
export function createAssistantScope(managedWorkspaceIds) {
|
|
15
|
+
return {
|
|
16
|
+
managedWorkspaceIds: normalizeWorkspaceIds(managedWorkspaceIds),
|
|
17
|
+
includeArchived: false,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** 判断用户是否还没有显式勾选任何工作区。 */
|
|
21
|
+
export function isAssistantScopeEmpty(scope) {
|
|
22
|
+
return normalizeWorkspaceIds(scope.managedWorkspaceIds).length === 0;
|
|
23
|
+
}
|
|
24
|
+
/** 返回可直接供 UI 或语音层使用的范围状态。 */
|
|
25
|
+
export function getAssistantScopeState(scope) {
|
|
26
|
+
const managedWorkspaceIds = normalizeWorkspaceIds(scope.managedWorkspaceIds);
|
|
27
|
+
if (managedWorkspaceIds.length === 0) {
|
|
28
|
+
return {
|
|
29
|
+
status: 'empty',
|
|
30
|
+
reason: 'no-managed-workspaces',
|
|
31
|
+
message: EMPTY_SCOPE_MESSAGE,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return { status: 'ready', managedWorkspaceIds };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 返回受管范围内且未归档的会话。
|
|
38
|
+
*
|
|
39
|
+
* 归档集合接受 Set 或数组,便于直接接入 workspaceRegistry 的快照;函数只读
|
|
40
|
+
* 输入集合,不会为了过滤而修改任何对象。空范围返回空数组,但调用方若需要
|
|
41
|
+
* 展示原因,应同时读取 getAssistantScopeState 或使用 filterAssistantSessions。
|
|
42
|
+
*/
|
|
43
|
+
export function filterSessionsByAssistantScope(sessions, scope, archivedSessionIds) {
|
|
44
|
+
const managedWorkspaceIds = normalizeWorkspaceIds(scope.managedWorkspaceIds);
|
|
45
|
+
if (managedWorkspaceIds.length === 0)
|
|
46
|
+
return [];
|
|
47
|
+
const managed = new Set(managedWorkspaceIds);
|
|
48
|
+
const archived = toReadonlySet(archivedSessionIds);
|
|
49
|
+
return sessions.filter((session) => managed.has(session.workspaceId) && !archived.has(session.sessionId));
|
|
50
|
+
}
|
|
51
|
+
/** 过滤并返回范围状态,避免空范围被误解为「没有符合条件的会话」。 */
|
|
52
|
+
export function filterAssistantSessions(sessions, scope, archivedSessionIds) {
|
|
53
|
+
return {
|
|
54
|
+
state: getAssistantScopeState(scope),
|
|
55
|
+
sessions: filterSessionsByAssistantScope(sessions, scope, archivedSessionIds),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 校验目标是否仍在助理可访问范围内。
|
|
60
|
+
*
|
|
61
|
+
* 返回 null 表示允许;返回结构化原因表示必须拒绝,调用方不得继续读取或派发。
|
|
62
|
+
* 归档判断放在工作区判断之后,保证空范围和范围外目标不会泄露归档状态。
|
|
63
|
+
*/
|
|
64
|
+
export function getAssistantScopeRejection(scope, target, archivedSessionIds) {
|
|
65
|
+
const managedWorkspaceIds = normalizeWorkspaceIds(scope.managedWorkspaceIds);
|
|
66
|
+
if (managedWorkspaceIds.length === 0) {
|
|
67
|
+
return {
|
|
68
|
+
code: 'scope-empty',
|
|
69
|
+
message: '尚未选择任何工作区,无法访问会话;请打开全局智能助理设置并勾选工作区后重试',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (!managedWorkspaceIds.includes(target.workspaceId)) {
|
|
73
|
+
return {
|
|
74
|
+
code: 'workspace-outside-scope',
|
|
75
|
+
workspaceId: target.workspaceId,
|
|
76
|
+
message: `工作区「${target.workspaceId}」不在助理受管范围内;请打开全局智能助理设置并勾选该工作区后重试`,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (target.sessionId !== undefined && toReadonlySet(archivedSessionIds).has(target.sessionId)) {
|
|
80
|
+
return {
|
|
81
|
+
code: 'session-archived',
|
|
82
|
+
sessionId: target.sessionId,
|
|
83
|
+
message: `会话「${target.sessionId}」已归档,不在助理索引范围内`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
/** 返回目标是否可以被助理读取或派发。 */
|
|
89
|
+
export function isAssistantScopeTargetAllowed(scope, target, archivedSessionIds) {
|
|
90
|
+
return getAssistantScopeRejection(scope, target, archivedSessionIds) === null;
|
|
91
|
+
}
|
|
92
|
+
function toReadonlySet(values) {
|
|
93
|
+
return values instanceof Set ? values : new Set(values);
|
|
94
|
+
}
|
|
95
|
+
function normalizeWorkspaceIds(workspaceIds) {
|
|
96
|
+
const result = [];
|
|
97
|
+
const seen = new Set();
|
|
98
|
+
for (const rawId of workspaceIds) {
|
|
99
|
+
const id = rawId.trim();
|
|
100
|
+
if (id === '' || seen.has(id))
|
|
101
|
+
continue;
|
|
102
|
+
seen.add(id);
|
|
103
|
+
result.push(id);
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=assistant-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-scope.js","sourceRoot":"","sources":["../../../../../src/host/features/assistant-scope.ts"],"names":[],"mappings":"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"}
|