@jingyi0605/codingns4dsh 0.2.0-rc3 → 0.2.1-beta.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.en.md +27 -16
- package/README.md +44 -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 +3361 -227
- 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/fileWorkspace.d.ts.map +1 -1
- package/data/build/dist/client/locales/fileWorkspace.js +4 -0
- package/data/build/dist/client/locales/fileWorkspace.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/session-changed-files-view.d.ts.map +1 -1
- package/data/build/dist/client/session-changed-files-view.js +162 -58
- package/data/build/dist/client/session-changed-files-view.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 +23 -3
- 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 +137 -14
- package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/acp-elicitation.d.ts +31 -0
- package/data/build/dist/host/cli-adapters/acp-elicitation.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/acp-elicitation.js +144 -0
- package/data/build/dist/host/cli-adapters/acp-elicitation.js.map +1 -0
- package/data/build/dist/host/cli-adapters/antigravity-driver.d.ts +41 -3
- package/data/build/dist/host/cli-adapters/antigravity-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/antigravity-driver.js +213 -12
- 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 +31 -1
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.js +307 -9
- package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codebuddy-driver.d.ts +7 -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 +147 -6
- 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 +20 -8
- 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 +10 -1
- package/data/build/dist/host/cli-adapters/cursor-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/cursor-driver.js +74 -4
- package/data/build/dist/host/cli-adapters/cursor-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.js +1 -1
- package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.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 +22 -3
- package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
- package/data/build/dist/host/cli-adapters/gemini-driver.d.ts +2 -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 +70 -11
- package/data/build/dist/host/cli-adapters/gemini-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts +3 -2
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.js +69 -14
- 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/kiro-driver.js +1 -1
- package/data/build/dist/host/cli-adapters/kiro-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/mcode-driver.d.ts +6 -2
- package/data/build/dist/host/cli-adapters/mcode-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/mcode-driver.js +95 -24
- 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/native-subagent-dispatch.d.ts +55 -1
- package/data/build/dist/host/cli-adapters/native-subagent-dispatch.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js +148 -6
- package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js.map +1 -1
- package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts +7 -0
- package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/native-team-subagent.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 +19 -4
- package/data/build/dist/host/cli-adapters/qoder-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/qoder-driver.js +202 -11
- 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 +16 -2
- package/data/build/dist/host/cli-adapters/standard-stream-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/subagent-tool.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/subagent-tool.js +40 -10
- package/data/build/dist/host/cli-adapters/subagent-tool.js.map +1 -1
- package/data/build/dist/host/cli-bridge/bridge-holder.d.ts +4 -1
- package/data/build/dist/host/cli-bridge/bridge-holder.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/bridge-holder.js.map +1 -1
- package/data/build/dist/host/cli-bridge/bridge-server.d.ts +11 -3
- package/data/build/dist/host/cli-bridge/bridge-server.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/bridge-server.js +8 -4
- package/data/build/dist/host/cli-bridge/bridge-server.js.map +1 -1
- package/data/build/dist/host/cli-bridge/command-code-mod.js +18 -2
- package/data/build/dist/host/cli-bridge/command-code-mod.js.map +1 -1
- package/data/build/dist/host/cli-bridge/dispatch.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/dispatch.js +30 -5
- package/data/build/dist/host/cli-bridge/dispatch.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 +30 -10
- package/data/build/dist/host/cli-bridge/injections.js.map +1 -1
- package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js +49 -7
- package/data/build/dist/host/cli-bridge/mcp-stdio-entry.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 +3 -3
- package/data/build/dist/host/index.d.ts.map +1 -1
- package/data/build/dist/host/index.js +8 -2
- 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
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 把索引快照转换成可播报文本。函数只读输入,不读取 DSH 服务,也不修改索引。
|
|
3
|
+
* 组别顺序固定为待处理、出错、运行中、已完成,避免重要事项被截断。
|
|
4
|
+
*/
|
|
5
|
+
export function summarizeAssistantIndex(snapshot) {
|
|
6
|
+
if (snapshot.scope.status === 'empty') {
|
|
7
|
+
const unreadableNotice = renderUnreadableNotice(snapshot.unreadableCount);
|
|
8
|
+
return {
|
|
9
|
+
groups: emptyGroups(),
|
|
10
|
+
unreadableCount: snapshot.unreadableCount,
|
|
11
|
+
speechText: [
|
|
12
|
+
`${snapshot.scope.message},无法报告进展。`,
|
|
13
|
+
unreadableNotice,
|
|
14
|
+
].filter((text) => text !== '').join(' '),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const groups = groupEntries(snapshot.entries);
|
|
18
|
+
const unreadableNotice = renderUnreadableNotice(snapshot.unreadableCount);
|
|
19
|
+
return {
|
|
20
|
+
groups,
|
|
21
|
+
unreadableCount: snapshot.unreadableCount,
|
|
22
|
+
speechText: [
|
|
23
|
+
renderGroup('待处理', groups.waiting, '当前没有待处理项。'),
|
|
24
|
+
renderGroup('出错', groups.error, '当前没有出错会话。'),
|
|
25
|
+
renderGroup('运行中', groups.running, '当前没有运行中的会话。'),
|
|
26
|
+
renderGroup('已完成', groups.completed, '当前没有刚完成的会话。'),
|
|
27
|
+
unreadableNotice,
|
|
28
|
+
].filter((text) => text !== '').join(' '),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** 便于动作层直接传入索引条目。 */
|
|
32
|
+
export function summarizeAssistantEntries(entries, scope, generation = 0, unreadableCount = 0, maxChars = 12000) {
|
|
33
|
+
const summary = summarizeAssistantIndex({ generation, entries, scope, unreadableCount });
|
|
34
|
+
if (maxChars <= 0 || summary.speechText.length <= maxChars)
|
|
35
|
+
return summary;
|
|
36
|
+
const notice = renderUnreadableNotice(unreadableCount);
|
|
37
|
+
const body = notice !== '' && summary.speechText.endsWith(notice)
|
|
38
|
+
? summary.speechText.slice(0, -notice.length).trim()
|
|
39
|
+
: summary.speechText;
|
|
40
|
+
return { ...summary, speechText: limitSpeechText(body, maxChars, notice) };
|
|
41
|
+
}
|
|
42
|
+
/** 兼容动作层使用的命名:输入索引条目,输出完整进展摘要。 */
|
|
43
|
+
export function summarizeAssistantSessions(entries, options = {}) {
|
|
44
|
+
const scope = options.scope ?? { status: 'ready', managedWorkspaceIds: [] };
|
|
45
|
+
const unreadableCount = Math.max(0, options.unreadableCount ?? 0);
|
|
46
|
+
const base = summarizeAssistantEntries(entries, scope, options.generation ?? 0, unreadableCount);
|
|
47
|
+
const labels = ['waiting', 'error', 'running', 'completed'];
|
|
48
|
+
const sections = labels.map((category) => ({
|
|
49
|
+
category,
|
|
50
|
+
entries: base.groups[category].slice(0, options.maxItemsPerCategory),
|
|
51
|
+
text: renderGroup(categoryLabel(category), base.groups[category].slice(0, options.maxItemsPerCategory), emptyText(category)),
|
|
52
|
+
}));
|
|
53
|
+
const unreadableNotice = renderUnreadableNotice(unreadableCount);
|
|
54
|
+
const speechText = limitSpeechText(sections.map((section) => section.text).join(' '), options.maxChars, unreadableNotice);
|
|
55
|
+
return { generation: options.generation ?? 0, total: entries.length, unreadableCount, sections, speechText };
|
|
56
|
+
}
|
|
57
|
+
export const buildAssistantSummary = summarizeAssistantSessions;
|
|
58
|
+
export const normalizeSpeechText = sanitizeSpeechText;
|
|
59
|
+
export function redactSensitiveValues(value) {
|
|
60
|
+
return value
|
|
61
|
+
.replace(/\b(?:Bearer\s+)?(?:sk-[A-Za-z0-9_-]+|ghp_[A-Za-z0-9_]+)\b/gu, '已隐藏凭据')
|
|
62
|
+
.replace(/\b(?:api[_ -]?key|token|secret|password|密码|密钥)\s*[:=:]\s*[^\s,,;;]+/giu, '已隐藏敏感字段');
|
|
63
|
+
}
|
|
64
|
+
function groupEntries(entries) {
|
|
65
|
+
const waiting = [];
|
|
66
|
+
const error = [];
|
|
67
|
+
const running = [];
|
|
68
|
+
const completed = [];
|
|
69
|
+
for (const entry of entries) {
|
|
70
|
+
if (entry.waiting !== null) {
|
|
71
|
+
waiting.push(entry);
|
|
72
|
+
}
|
|
73
|
+
else if (entry.error === true) {
|
|
74
|
+
error.push(entry);
|
|
75
|
+
}
|
|
76
|
+
else if (entry.running) {
|
|
77
|
+
running.push(entry);
|
|
78
|
+
}
|
|
79
|
+
else if (entry.completed) {
|
|
80
|
+
completed.push(entry);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return { waiting, error, running, completed };
|
|
84
|
+
}
|
|
85
|
+
function renderGroup(label, entries, emptyText) {
|
|
86
|
+
if (entries.length === 0)
|
|
87
|
+
return `${label}:${emptyText}`;
|
|
88
|
+
const details = entries.map(renderEntry).join(';');
|
|
89
|
+
return `${label}:${details}。`;
|
|
90
|
+
}
|
|
91
|
+
function renderEntry(entry) {
|
|
92
|
+
const title = sanitizeSpeechText(entry.title ?? '未命名会话') || '未命名会话';
|
|
93
|
+
const workspace = sanitizeSpeechText(entry.workspaceName || entry.workspaceId) || '未命名工作区';
|
|
94
|
+
const detail = sanitizeSpeechText(entry.summary ?? '');
|
|
95
|
+
const waiting = entry.waiting === 'approval' ? '等待审批' : entry.waiting === 'question' ? '等待回答' : '';
|
|
96
|
+
const suffix = waiting || detail;
|
|
97
|
+
return suffix ? `工作区${workspace}的${title}(${suffix})` : `工作区${workspace}的${title}`;
|
|
98
|
+
}
|
|
99
|
+
function renderUnreadableNotice(count) {
|
|
100
|
+
return count > 0 ? `有${count}个会话暂时无法读取,以上摘要可能不完整。` : '';
|
|
101
|
+
}
|
|
102
|
+
/** 清理 Markdown、URL、代码和常见凭据形态,结果可直接交给 TTS。 */
|
|
103
|
+
export function sanitizeSpeechText(value) {
|
|
104
|
+
return redactSensitiveValues(value)
|
|
105
|
+
.replace(/```[\s\S]*?```/gu, ' ')
|
|
106
|
+
.replace(/`([^`]*)`/gu, ' ')
|
|
107
|
+
.replace(/\[([^\]]+)\]\([^)]*\)/gu, '$1')
|
|
108
|
+
.replace(/https?:\/\/\S+/gu, '链接')
|
|
109
|
+
.replace(/[>#*_~]/gu, ' ')
|
|
110
|
+
.replace(/\s+/gu, ' ')
|
|
111
|
+
.trim();
|
|
112
|
+
}
|
|
113
|
+
function emptyGroups() {
|
|
114
|
+
return { waiting: [], error: [], running: [], completed: [] };
|
|
115
|
+
}
|
|
116
|
+
function categoryLabel(category) {
|
|
117
|
+
return { waiting: '待处理', error: '出错', running: '运行中', completed: '已完成' }[category];
|
|
118
|
+
}
|
|
119
|
+
function emptyText(category) {
|
|
120
|
+
return {
|
|
121
|
+
waiting: '当前没有待处理项。',
|
|
122
|
+
error: '当前没有出错会话。',
|
|
123
|
+
running: '当前没有运行中的会话。',
|
|
124
|
+
completed: '当前没有刚完成的会话。',
|
|
125
|
+
}[category];
|
|
126
|
+
}
|
|
127
|
+
function limitSpeechText(value, maxChars, suffix = '') {
|
|
128
|
+
const normalizedSuffix = suffix.trim();
|
|
129
|
+
if (normalizedSuffix === '')
|
|
130
|
+
return limitSpeechTextWithoutSuffix(value, maxChars);
|
|
131
|
+
if (maxChars === undefined || maxChars <= 0)
|
|
132
|
+
return `${value} ${normalizedSuffix}`.trim();
|
|
133
|
+
const separatorLength = value.trim() === '' ? 0 : 1;
|
|
134
|
+
const prefixBudget = maxChars - normalizedSuffix.length - separatorLength;
|
|
135
|
+
if (prefixBudget <= 0)
|
|
136
|
+
return normalizedSuffix;
|
|
137
|
+
const prefix = limitSpeechTextWithoutSuffix(value, prefixBudget);
|
|
138
|
+
return `${prefix} ${normalizedSuffix}`.trim();
|
|
139
|
+
}
|
|
140
|
+
function limitSpeechTextWithoutSuffix(value, maxChars) {
|
|
141
|
+
if (maxChars === undefined || maxChars <= 0 || value.length <= maxChars)
|
|
142
|
+
return value;
|
|
143
|
+
const budget = Math.max(1, maxChars - 1);
|
|
144
|
+
const sections = value.split(/(?<=。)\s+/u);
|
|
145
|
+
const kept = [];
|
|
146
|
+
let used = 0;
|
|
147
|
+
for (const section of sections) {
|
|
148
|
+
const candidate = section.trim();
|
|
149
|
+
if (candidate === '')
|
|
150
|
+
continue;
|
|
151
|
+
if (used + candidate.length <= budget) {
|
|
152
|
+
kept.push(candidate);
|
|
153
|
+
used += candidate.length + (kept.length > 1 ? 1 : 0);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
// 保留当前段落中完整的会话条目,避免从任意字符处截断标题或状态。
|
|
157
|
+
const prefix = candidate.split(':', 1)[0] ?? candidate;
|
|
158
|
+
const label = `${prefix}:`;
|
|
159
|
+
if (used + label.length <= budget && kept.length === 0)
|
|
160
|
+
kept.push(label.trim());
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
const result = kept.join(' ').trim();
|
|
164
|
+
return `${result || value.slice(0, budget).trim()}。`;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=assistant-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-summary.js","sourceRoot":"","sources":["../../../../../src/host/features/assistant-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { GlobalVoiceCoordinator } from './global-voice-coordinator.js';
|
|
2
|
+
export interface AssistantVoiceStreamOptions {
|
|
3
|
+
readonly coordinator: GlobalVoiceCoordinator;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Host 的流式入口只转发 PCM 和运行时事件,不把音频字节塞进 JSON RPC。
|
|
7
|
+
* 浏览器通过同源 HTTPS 访问此路由,因而麦克风权限属于真正打开页面的客户端。
|
|
8
|
+
*/
|
|
9
|
+
export declare function createAssistantVoiceStreamHandler(options: AssistantVoiceStreamOptions): (request: Request) => Promise<Response>;
|
|
10
|
+
//# sourceMappingURL=assistant-voice-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-voice-stream.d.ts","sourceRoot":"","sources":["../../../../../src/host/features/assistant-voice-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAI3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAA;CAC7C;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,2BAA2B,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA+E/H"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { encodeVoiceStreamEvent, pcmFrameFromStream, VoiceStreamDecoder } from '../../shared/voice-stream.js';
|
|
2
|
+
/**
|
|
3
|
+
* Host 的流式入口只转发 PCM 和运行时事件,不把音频字节塞进 JSON RPC。
|
|
4
|
+
* 浏览器通过同源 HTTPS 访问此路由,因而麦克风权限属于真正打开页面的客户端。
|
|
5
|
+
*/
|
|
6
|
+
export function createAssistantVoiceStreamHandler(options) {
|
|
7
|
+
return async (request) => {
|
|
8
|
+
if (request.method.toUpperCase() !== 'POST' || request.body === null)
|
|
9
|
+
return Response.json({ error: '语音流必须使用 POST 流式正文' }, { status: 400 });
|
|
10
|
+
const decoder = new VoiceStreamDecoder();
|
|
11
|
+
const encoder = new TextEncoder();
|
|
12
|
+
let opened;
|
|
13
|
+
let closed = false;
|
|
14
|
+
let disposeEvents;
|
|
15
|
+
let controller;
|
|
16
|
+
const send = (event) => {
|
|
17
|
+
if (closed || controller === undefined)
|
|
18
|
+
return;
|
|
19
|
+
try {
|
|
20
|
+
controller.enqueue(encoder.encode(encodeVoiceStreamEvent(event)));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
closed = true;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const stream = new ReadableStream({
|
|
27
|
+
start(nextController) {
|
|
28
|
+
controller = nextController;
|
|
29
|
+
void consume();
|
|
30
|
+
},
|
|
31
|
+
cancel() {
|
|
32
|
+
closed = true;
|
|
33
|
+
disposeEvents?.();
|
|
34
|
+
disposeEvents = undefined;
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
async function consume() {
|
|
38
|
+
const reader = request.body?.getReader();
|
|
39
|
+
if (reader === undefined)
|
|
40
|
+
return finish();
|
|
41
|
+
try {
|
|
42
|
+
while (!closed) {
|
|
43
|
+
const next = await reader.read();
|
|
44
|
+
if (next.done)
|
|
45
|
+
break;
|
|
46
|
+
for (const item of decoder.push(next.value)) {
|
|
47
|
+
if (item.message.type === 'open') {
|
|
48
|
+
if (opened !== undefined)
|
|
49
|
+
throw new Error('语音流重复打开');
|
|
50
|
+
opened = item.message;
|
|
51
|
+
options.coordinator.assertOwner(opened.ownerId);
|
|
52
|
+
disposeEvents = options.coordinator.subscribeRuntimeEvent((event) => send(event));
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (opened === undefined)
|
|
56
|
+
throw new Error('语音流缺少首部');
|
|
57
|
+
if (item.message.type === 'pcm') {
|
|
58
|
+
if (item.pcm === undefined)
|
|
59
|
+
throw new Error('语音流 PCM 缺少正文');
|
|
60
|
+
// 控制面 interrupt 会递增 Host epoch;旧页面/旧设备已经在途的帧必须直接丢弃。
|
|
61
|
+
if (item.message.epoch !== options.coordinator.snapshot().epoch)
|
|
62
|
+
continue;
|
|
63
|
+
await options.coordinator.sendPcm(opened.ownerId, pcmFrameFromStream(item.message, item.pcm));
|
|
64
|
+
}
|
|
65
|
+
else if (item.message.type === 'interrupt') {
|
|
66
|
+
await options.coordinator.interrupt(opened.ownerId);
|
|
67
|
+
}
|
|
68
|
+
else if (item.message.type === 'close') {
|
|
69
|
+
closed = true;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
send({ type: 'error', code: 'voice_stream_failed', message: error instanceof Error ? error.message : String(error), recoverable: false, epoch: options.coordinator.snapshot().epoch });
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
finish();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function finish() {
|
|
83
|
+
if (closed) {
|
|
84
|
+
disposeEvents?.();
|
|
85
|
+
disposeEvents = undefined;
|
|
86
|
+
}
|
|
87
|
+
closed = true;
|
|
88
|
+
try {
|
|
89
|
+
controller?.close();
|
|
90
|
+
}
|
|
91
|
+
catch { /* 客户端已经取消响应 */ }
|
|
92
|
+
}
|
|
93
|
+
request.signal.addEventListener('abort', () => finish(), { once: true });
|
|
94
|
+
return new Response(stream, {
|
|
95
|
+
status: 200,
|
|
96
|
+
headers: {
|
|
97
|
+
'content-type': 'application/x-ndjson; charset=utf-8',
|
|
98
|
+
'cache-control': 'no-store',
|
|
99
|
+
'x-content-type-options': 'nosniff',
|
|
100
|
+
// 反向代理默认可能缓冲响应;关闭后,partial/final 才能及时到达手机端。
|
|
101
|
+
'x-accel-buffering': 'no',
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=assistant-voice-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-voice-stream.js","sourceRoot":"","sources":["../../../../../src/host/features/assistant-voice-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type AssistantIntentOptions } from './assistant-intent.js';
|
|
2
|
+
import { AssistantDispatcher, type AssistantDispatchContext } from './assistant-dispatch.js';
|
|
3
|
+
import type { AssistantIndexSnapshot } from '../../shared/contracts/assistant.js';
|
|
4
|
+
export interface AssistantVoiceTurnResult {
|
|
5
|
+
readonly kind: 'summary' | 'dispatch' | 'clarify' | 'chat';
|
|
6
|
+
readonly speechText: string;
|
|
7
|
+
readonly target?: {
|
|
8
|
+
readonly sessionId: string;
|
|
9
|
+
readonly workspaceId: string;
|
|
10
|
+
readonly hostId: string;
|
|
11
|
+
};
|
|
12
|
+
readonly mode?: 'queue' | 'steer';
|
|
13
|
+
readonly task?: string;
|
|
14
|
+
readonly candidates?: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
export interface AssistantVoiceTurnOptions {
|
|
17
|
+
readonly requestId?: string;
|
|
18
|
+
readonly intent?: AssistantIntentOptions;
|
|
19
|
+
readonly dispatchContext: AssistantDispatchContext;
|
|
20
|
+
}
|
|
21
|
+
/** 把全局语音最终文本串起「意图→摘要/派发→可播报结果」,不保存当前页面会话。 */
|
|
22
|
+
export declare class AssistantVoiceTurnRouter {
|
|
23
|
+
private readonly dispatcher;
|
|
24
|
+
constructor(dispatcher: AssistantDispatcher);
|
|
25
|
+
handleText(text: string, snapshot: AssistantIndexSnapshot, options: AssistantVoiceTurnOptions): Promise<AssistantVoiceTurnResult>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=assistant-voice-turn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-voice-turn.d.ts","sourceRoot":"","sources":["../../../../../src/host/features/assistant-voice-turn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAEzF,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAC5F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAEjF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACvG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAA;IACxC,QAAQ,CAAC,eAAe,EAAE,wBAAwB,CAAA;CACnD;AAED,6CAA6C;AAC7C,qBAAa,wBAAwB;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,mBAAmB;IAEtD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC;CA0CxI"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { parseAssistantIntent } from './assistant-intent.js';
|
|
2
|
+
import { summarizeAssistantEntries } from './assistant-summary.js';
|
|
3
|
+
import { AssistantDispatcher } from './assistant-dispatch.js';
|
|
4
|
+
/** 把全局语音最终文本串起「意图→摘要/派发→可播报结果」,不保存当前页面会话。 */
|
|
5
|
+
export class AssistantVoiceTurnRouter {
|
|
6
|
+
dispatcher;
|
|
7
|
+
constructor(dispatcher) {
|
|
8
|
+
this.dispatcher = dispatcher;
|
|
9
|
+
}
|
|
10
|
+
async handleText(text, snapshot, options) {
|
|
11
|
+
const intent = parseAssistantIntent(text, snapshot.entries, {
|
|
12
|
+
...options.intent,
|
|
13
|
+
indexGeneration: snapshot.generation,
|
|
14
|
+
...(snapshot.excludedTargets === undefined ? {} : { excludedTargets: snapshot.excludedTargets }),
|
|
15
|
+
});
|
|
16
|
+
if (snapshot.scope.status === 'empty' && intent.targetDescription !== undefined) {
|
|
17
|
+
return {
|
|
18
|
+
kind: 'clarify',
|
|
19
|
+
speechText: '尚未选择任何工作区,无法访问会话;请打开全局智能助理设置并勾选工作区后重试',
|
|
20
|
+
...(intent.task === undefined ? {} : { task: intent.task }),
|
|
21
|
+
...(intent.mode === undefined ? {} : { mode: intent.mode }),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (intent.kind === 'summary') {
|
|
25
|
+
return {
|
|
26
|
+
kind: 'summary',
|
|
27
|
+
speechText: summarizeAssistantEntries(snapshot.entries, snapshot.scope, snapshot.generation, snapshot.unreadableCount).speechText,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
if (intent.kind !== 'dispatch' || intent.target === undefined || intent.task === undefined || intent.mode === undefined) {
|
|
31
|
+
return {
|
|
32
|
+
kind: intent.kind,
|
|
33
|
+
speechText: intent.reason ?? '请说明要查询进展,或指出要处理任务的工作区和会话。',
|
|
34
|
+
...(intent.candidates === undefined ? {} : { candidates: intent.candidates.map((entry) => entry.title ?? entry.sessionId) }),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const requestId = options.requestId?.trim() || `voice-${snapshot.generation}-${intent.target.sessionId}`;
|
|
38
|
+
const result = await this.dispatcher.dispatch({ requestId, target: intent.target, mode: intent.mode, task: intent.task }, options.dispatchContext);
|
|
39
|
+
if (!result.ok)
|
|
40
|
+
return { kind: 'clarify', speechText: result.message, task: intent.task, mode: intent.mode };
|
|
41
|
+
const targetEntry = snapshot.entries.find((entry) => entry.sessionId === intent.target?.sessionId);
|
|
42
|
+
const targetName = targetEntry === undefined
|
|
43
|
+
? '目标会话'
|
|
44
|
+
: `工作区${targetEntry.workspaceName}的${targetEntry.title ?? targetEntry.sessionId}`;
|
|
45
|
+
return {
|
|
46
|
+
kind: 'dispatch',
|
|
47
|
+
speechText: `已将任务发送到${targetName},模式为${intent.mode === 'steer' ? '立即注入' : '排队'}。`,
|
|
48
|
+
target: intent.target,
|
|
49
|
+
mode: intent.mode,
|
|
50
|
+
task: intent.task,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=assistant-voice-turn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-voice-turn.js","sourceRoot":"","sources":["../../../../../src/host/features/assistant-voice-turn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AssistantWaitingKind } from '../../shared/contracts/assistant.js';
|
|
2
|
+
export interface AssistantWaitingRequest {
|
|
3
|
+
readonly sessionId: string;
|
|
4
|
+
readonly kind: AssistantWaitingKind;
|
|
5
|
+
}
|
|
6
|
+
/** 只消费运行时审批/提问事件,不从 running 状态或历史日志猜测等待。 */
|
|
7
|
+
export declare class AssistantWaitingState {
|
|
8
|
+
private readonly pending;
|
|
9
|
+
request(value: AssistantWaitingRequest): void;
|
|
10
|
+
resolve(sessionId: string): void;
|
|
11
|
+
get(sessionId: string): AssistantWaitingKind | null;
|
|
12
|
+
snapshot(): ReadonlyMap<string, AssistantWaitingKind>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=assistant-waiting-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-waiting-state.d.ts","sourceRoot":"","sources":["../../../../../src/host/features/assistant-waiting-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAE/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;CACpC;AACD,4CAA4C;AAC5C,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAElE,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI;IAI7C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIhC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAInD,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC;CAGtD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** 只消费运行时审批/提问事件,不从 running 状态或历史日志猜测等待。 */
|
|
2
|
+
export class AssistantWaitingState {
|
|
3
|
+
pending = new Map();
|
|
4
|
+
request(value) {
|
|
5
|
+
this.pending.set(value.sessionId, value.kind);
|
|
6
|
+
}
|
|
7
|
+
resolve(sessionId) {
|
|
8
|
+
this.pending.delete(sessionId);
|
|
9
|
+
}
|
|
10
|
+
get(sessionId) {
|
|
11
|
+
return this.pending.get(sessionId) ?? null;
|
|
12
|
+
}
|
|
13
|
+
snapshot() {
|
|
14
|
+
return new Map(this.pending);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=assistant-waiting-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-waiting-state.js","sourceRoot":"","sources":["../../../../../src/host/features/assistant-waiting-state.ts"],"names":[],"mappings":"AAMA,4CAA4C;AAC5C,MAAM,OAAO,qBAAqB;IACf,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAA;IAElE,OAAO,CAAC,KAA8B;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC/C,CAAC;IAED,OAAO,CAAC,SAAiB;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAChC,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAA;IAC5C,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { VoicePcmFrame, VoiceRuntimeAdapter, VoiceRuntimeCapabilities, VoiceRuntimeEvent, VoiceRuntimeState } from '../../shared/contracts/voice-runtime.js';
|
|
2
|
+
export interface GlobalVoiceCoordinatorSnapshot {
|
|
3
|
+
readonly active: boolean;
|
|
4
|
+
readonly ownerId: string | null;
|
|
5
|
+
readonly state: VoiceRuntimeState;
|
|
6
|
+
readonly epoch: number;
|
|
7
|
+
readonly capabilities: VoiceRuntimeCapabilities;
|
|
8
|
+
}
|
|
9
|
+
export interface GlobalVoiceCoordinatorOptions {
|
|
10
|
+
readonly adapter: VoiceRuntimeAdapter;
|
|
11
|
+
readonly onFinalText?: (text: string, epoch: number) => Promise<void> | void;
|
|
12
|
+
readonly onAudio?: (bytes: Uint8Array, epoch: number) => void;
|
|
13
|
+
readonly leaseTtlMs?: number;
|
|
14
|
+
}
|
|
15
|
+
/** Host/Profile 级全局语音协调器,不保存任何目标 sessionId。 */
|
|
16
|
+
export declare class GlobalVoiceCoordinator {
|
|
17
|
+
private readonly adapter;
|
|
18
|
+
private readonly onFinalText;
|
|
19
|
+
private readonly onAudio;
|
|
20
|
+
private readonly listeners;
|
|
21
|
+
private readonly eventListeners;
|
|
22
|
+
private readonly runtimeDispose;
|
|
23
|
+
private ownerId;
|
|
24
|
+
private state;
|
|
25
|
+
private epoch;
|
|
26
|
+
private started;
|
|
27
|
+
private clientEpoch;
|
|
28
|
+
private clientSequence;
|
|
29
|
+
/** barge-in 后,旧轮次的 final 事件必须在收到新 listening 前丢弃。 */
|
|
30
|
+
private blockedFinalEpoch;
|
|
31
|
+
private leaseTimer;
|
|
32
|
+
private readonly leaseTtlMs;
|
|
33
|
+
constructor(options: GlobalVoiceCoordinatorOptions);
|
|
34
|
+
snapshot(): GlobalVoiceCoordinatorSnapshot;
|
|
35
|
+
subscribe(listener: (snapshot: GlobalVoiceCoordinatorSnapshot) => void): () => void;
|
|
36
|
+
/** 供二进制语音流把 partial/final/audio 事件回写给持有租约的浏览器。 */
|
|
37
|
+
subscribeRuntimeEvent(listener: (event: VoiceRuntimeEvent) => void): () => void;
|
|
38
|
+
start(ownerId: string): Promise<GlobalVoiceCoordinatorSnapshot>;
|
|
39
|
+
sendPcm(ownerId: string, frame: VoicePcmFrame): Promise<void>;
|
|
40
|
+
interrupt(ownerId: string): Promise<GlobalVoiceCoordinatorSnapshot>;
|
|
41
|
+
stop(ownerId: string): Promise<GlobalVoiceCoordinatorSnapshot>;
|
|
42
|
+
speak(ownerId: string, text: string): Promise<void>;
|
|
43
|
+
/** 供语音动作桥校验来源页面;不能只保护 start/stop。 */
|
|
44
|
+
assertOwner(ownerId: string): void;
|
|
45
|
+
heartbeat(ownerId: string): GlobalVoiceCoordinatorSnapshot;
|
|
46
|
+
/** 接收 Client 的状态事件;原始 PCM 不经过此边界。 */
|
|
47
|
+
acceptClientEvent(ownerId: string, event: VoiceRuntimeEvent, sequence?: number): GlobalVoiceCoordinatorSnapshot;
|
|
48
|
+
dispose(): void;
|
|
49
|
+
private handleRuntimeEvent;
|
|
50
|
+
private ensureOwner;
|
|
51
|
+
private armLeaseTimer;
|
|
52
|
+
private clearLeaseTimer;
|
|
53
|
+
private emit;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=global-voice-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-voice-coordinator.d.ts","sourceRoot":"","sources":["../../../../../src/host/features/global-voice-coordinator.ts"],"names":[],"mappings":"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"}
|