@jingyi0605/codingns4dsh 0.2.1-beta.6 → 0.2.1-beta.8
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 +4 -4
- package/README.md +21 -5
- package/THIRD_PARTY_NOTICES +5 -0
- package/assets/provider-icons/r4.svg +4 -0
- package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts +1 -1
- package/data/build/dist/bootstrap/index.d.ts +1 -1
- package/data/build/dist/client/assistant-settings-styles.d.ts.map +1 -1
- package/data/build/dist/client/assistant-settings-styles.js +3 -2
- package/data/build/dist/client/assistant-settings-styles.js.map +1 -1
- package/data/build/dist/client/avatar/catalog-panel.d.ts.map +1 -1
- package/data/build/dist/client/avatar/catalog-panel.js +7 -5
- package/data/build/dist/client/avatar/catalog-panel.js.map +1 -1
- package/data/build/dist/client/avatar/catalog-picker.d.ts.map +1 -1
- package/data/build/dist/client/avatar/catalog-picker.js +2 -1
- package/data/build/dist/client/avatar/catalog-picker.js.map +1 -1
- package/data/build/dist/client/avatar/desktop-bridge.d.ts +7 -3
- package/data/build/dist/client/avatar/desktop-bridge.d.ts.map +1 -1
- package/data/build/dist/client/avatar/desktop-bridge.js +64 -5
- package/data/build/dist/client/avatar/desktop-bridge.js.map +1 -1
- package/data/build/dist/client/avatar/desktop-view.d.ts +6 -0
- package/data/build/dist/client/avatar/desktop-view.d.ts.map +1 -1
- package/data/build/dist/client/avatar/desktop-view.js +98 -5
- package/data/build/dist/client/avatar/desktop-view.js.map +1 -1
- package/data/build/dist/client/avatar/engine.d.ts.map +1 -1
- package/data/build/dist/client/avatar/engine.js +3 -2
- package/data/build/dist/client/avatar/engine.js.map +1 -1
- package/data/build/dist/client/avatar/floating.d.ts +8 -3
- package/data/build/dist/client/avatar/floating.d.ts.map +1 -1
- package/data/build/dist/client/avatar/floating.js +22 -4
- package/data/build/dist/client/avatar/floating.js.map +1 -1
- package/data/build/dist/client/avatar/image.d.ts +1 -1
- package/data/build/dist/client/avatar/image.d.ts.map +1 -1
- package/data/build/dist/client/avatar/image.js +2 -2
- package/data/build/dist/client/avatar/image.js.map +1 -1
- package/data/build/dist/client/avatar/live2d.d.ts +14 -3
- package/data/build/dist/client/avatar/live2d.d.ts.map +1 -1
- package/data/build/dist/client/avatar/live2d.js +62 -9
- package/data/build/dist/client/avatar/live2d.js.map +1 -1
- package/data/build/dist/client/avatar/loading.d.ts.map +1 -1
- package/data/build/dist/client/avatar/loading.js +3 -2
- package/data/build/dist/client/avatar/loading.js.map +1 -1
- package/data/build/dist/client/avatar/notification-bubble.d.ts +39 -0
- package/data/build/dist/client/avatar/notification-bubble.d.ts.map +1 -0
- package/data/build/dist/client/avatar/notification-bubble.js +353 -0
- package/data/build/dist/client/avatar/notification-bubble.js.map +1 -0
- package/data/build/dist/client/avatar/notification-surface.d.ts +16 -0
- package/data/build/dist/client/avatar/notification-surface.d.ts.map +1 -0
- package/data/build/dist/client/avatar/notification-surface.js +54 -0
- package/data/build/dist/client/avatar/notification-surface.js.map +1 -0
- package/data/build/dist/client/avatar/reaction-badge.d.ts +7 -0
- package/data/build/dist/client/avatar/reaction-badge.d.ts.map +1 -0
- package/data/build/dist/client/avatar/reaction-badge.js +20 -0
- package/data/build/dist/client/avatar/reaction-badge.js.map +1 -0
- package/data/build/dist/client/avatar/registry.d.ts +2 -1
- package/data/build/dist/client/avatar/registry.d.ts.map +1 -1
- package/data/build/dist/client/avatar/registry.js.map +1 -1
- package/data/build/dist/client/avatar/settings-panel.d.ts.map +1 -1
- package/data/build/dist/client/avatar/settings-panel.js +7 -5
- package/data/build/dist/client/avatar/settings-panel.js.map +1 -1
- package/data/build/dist/client/avatar/slot.d.ts +2 -1
- package/data/build/dist/client/avatar/slot.d.ts.map +1 -1
- package/data/build/dist/client/avatar/slot.js +5 -4
- package/data/build/dist/client/avatar/slot.js.map +1 -1
- package/data/build/dist/client/avatar/spritesheet.d.ts +4 -2
- package/data/build/dist/client/avatar/spritesheet.d.ts.map +1 -1
- package/data/build/dist/client/avatar/spritesheet.js +18 -9
- package/data/build/dist/client/avatar/spritesheet.js.map +1 -1
- package/data/build/dist/client/bundle.js +6881 -1776
- 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 +2 -0
- package/data/build/dist/client/cli-catalog.js.map +1 -1
- package/data/build/dist/client/cli-session-config-cache.d.ts +17 -0
- package/data/build/dist/client/cli-session-config-cache.d.ts.map +1 -0
- package/data/build/dist/client/cli-session-config-cache.js +56 -0
- package/data/build/dist/client/cli-session-config-cache.js.map +1 -0
- package/data/build/dist/client/cli-settings-rpc.d.ts +5 -0
- package/data/build/dist/client/cli-settings-rpc.d.ts.map +1 -0
- package/data/build/dist/client/cli-settings-rpc.js +60 -0
- package/data/build/dist/client/cli-settings-rpc.js.map +1 -0
- package/data/build/dist/client/cli-slots.d.ts.map +1 -1
- package/data/build/dist/client/cli-slots.js +24 -40
- package/data/build/dist/client/cli-slots.js.map +1 -1
- package/data/build/dist/client/client.assistant-configuration-view.js +264 -55
- package/data/build/dist/client/client.assistant-configuration-view.js.map +1 -1
- package/data/build/dist/client/client.assistant-debug-workbench.js +4 -4
- package/data/build/dist/client/client.assistant-debug-workbench.js.map +1 -1
- package/data/build/dist/client/{client.assistant-prompts.js → client.assistant-notifications.js} +63 -2
- package/data/build/dist/client/client.assistant-notifications.js.map +1 -0
- package/data/build/dist/client/client.assistant-prompt-editor.js +4 -4
- package/data/build/dist/client/client.assistant-prompt-editor.js.map +1 -1
- package/data/build/dist/client/client.assistant-workbench.js +287 -161
- package/data/build/dist/client/client.assistant-workbench.js.map +1 -1
- package/data/build/dist/client/client.delegate-command.js +12 -25
- package/data/build/dist/client/client.delegate-command.js.map +1 -1
- package/data/build/dist/client/client.manager.js +201 -25
- package/data/build/dist/client/client.manager.js.map +1 -1
- package/data/build/dist/client/client.model-catalog-cache.js +2 -1
- package/data/build/dist/client/client.model-catalog-cache.js.map +1 -1
- package/data/build/dist/client/client.native-workspace-store.js +42 -11
- package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
- package/data/build/dist/client/client.primitives-adapter.js.map +1 -1
- package/data/build/dist/client/client.react-dom.js +250 -0
- package/data/build/dist/client/client.react-dom.js.map +1 -1
- package/data/build/dist/client/client.theme.js +58 -12
- package/data/build/dist/client/client.theme.js.map +1 -1
- package/data/build/dist/client/client.transport.js +342 -46
- package/data/build/dist/client/client.transport.js.map +1 -1
- package/data/build/dist/client/debug/ui.d.ts.map +1 -1
- package/data/build/dist/client/debug/ui.js +30 -29
- package/data/build/dist/client/debug/ui.js.map +1 -1
- package/data/build/dist/client/delegate-command.d.ts.map +1 -1
- package/data/build/dist/client/delegate-command.js +12 -21
- package/data/build/dist/client/delegate-command.js.map +1 -1
- package/data/build/dist/client/desktop-assistant.js +61859 -158
- package/data/build/dist/client/external-tool-stream.d.ts.map +1 -1
- package/data/build/dist/client/external-tool-stream.js +2 -1
- package/data/build/dist/client/external-tool-stream.js.map +1 -1
- package/data/build/dist/client/features/assistant-configuration-session.js +3 -3
- package/data/build/dist/client/features/assistant-configuration-session.js.map +1 -1
- package/data/build/dist/client/features/assistant-configuration-tabs.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-configuration-tabs.js +2 -1
- package/data/build/dist/client/features/assistant-configuration-tabs.js.map +1 -1
- package/data/build/dist/client/features/assistant-configuration-view.d.ts +8 -0
- package/data/build/dist/client/features/assistant-configuration-view.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-configuration-view.js +99 -3
- package/data/build/dist/client/features/assistant-configuration-view.js.map +1 -1
- package/data/build/dist/client/features/assistant-conversation-message.d.ts +2 -1
- package/data/build/dist/client/features/assistant-conversation-message.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-conversation-message.js +64 -28
- package/data/build/dist/client/features/assistant-conversation-message.js.map +1 -1
- package/data/build/dist/client/features/assistant-debug-workbench.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-debug-workbench.js +3 -2
- package/data/build/dist/client/features/assistant-debug-workbench.js.map +1 -1
- package/data/build/dist/client/features/assistant-floating-call.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-floating-call.js +4 -3
- package/data/build/dist/client/features/assistant-floating-call.js.map +1 -1
- package/data/build/dist/client/features/assistant-notification-store.d.ts +72 -0
- package/data/build/dist/client/features/assistant-notification-store.d.ts.map +1 -0
- package/data/build/dist/client/features/assistant-notification-store.js +439 -0
- package/data/build/dist/client/features/assistant-notification-store.js.map +1 -0
- package/data/build/dist/client/features/assistant-realtime-call.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-realtime-call.js +13 -12
- package/data/build/dist/client/features/assistant-realtime-call.js.map +1 -1
- package/data/build/dist/client/features/assistant-record-style.js +11 -4
- package/data/build/dist/client/features/assistant-record-style.js.map +1 -1
- package/data/build/dist/client/features/assistant-voice-initialization.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-voice-initialization.js +4 -2
- package/data/build/dist/client/features/assistant-voice-initialization.js.map +1 -1
- package/data/build/dist/client/features/assistant-voice-settings-group.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-voice-settings-group.js +2 -1
- package/data/build/dist/client/features/assistant-voice-settings-group.js.map +1 -1
- package/data/build/dist/client/features/assistant-voice-settings.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-voice-settings.js +4 -3
- package/data/build/dist/client/features/assistant-voice-settings.js.map +1 -1
- package/data/build/dist/client/features/assistant-workbench-controls.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-workbench-controls.js +6 -5
- package/data/build/dist/client/features/assistant-workbench-controls.js.map +1 -1
- package/data/build/dist/client/features/assistant-workbench.d.ts +4 -0
- package/data/build/dist/client/features/assistant-workbench.d.ts.map +1 -1
- package/data/build/dist/client/features/assistant-workbench.js +37 -9
- package/data/build/dist/client/features/assistant-workbench.js.map +1 -1
- package/data/build/dist/client/features/cli-adapters.d.ts.map +1 -1
- package/data/build/dist/client/features/cli-adapters.js +140 -35
- package/data/build/dist/client/features/cli-adapters.js.map +1 -1
- package/data/build/dist/client/features/file-management-panel.d.ts.map +1 -1
- package/data/build/dist/client/features/file-management-panel.js +3 -10
- package/data/build/dist/client/features/file-management-panel.js.map +1 -1
- package/data/build/dist/client/features/global-voice-assistant.d.ts +6 -0
- package/data/build/dist/client/features/global-voice-assistant.d.ts.map +1 -1
- package/data/build/dist/client/features/global-voice-assistant.js +117 -3
- package/data/build/dist/client/features/global-voice-assistant.js.map +1 -1
- package/data/build/dist/client/features/index.d.ts +1 -0
- package/data/build/dist/client/features/index.d.ts.map +1 -1
- package/data/build/dist/client/features/index.js +3 -0
- package/data/build/dist/client/features/index.js.map +1 -1
- package/data/build/dist/client/features/lan-access-panel.d.ts.map +1 -1
- package/data/build/dist/client/features/lan-access-panel.js +6 -4
- package/data/build/dist/client/features/lan-access-panel.js.map +1 -1
- package/data/build/dist/client/features/login-protection-panel.d.ts.map +1 -1
- package/data/build/dist/client/features/login-protection-panel.js +7 -2
- package/data/build/dist/client/features/login-protection-panel.js.map +1 -1
- package/data/build/dist/client/features/mobile-access-panel.d.ts.map +1 -1
- package/data/build/dist/client/features/mobile-access-panel.js +19 -13
- package/data/build/dist/client/features/mobile-access-panel.js.map +1 -1
- package/data/build/dist/client/features/peer-host.d.ts +3 -0
- package/data/build/dist/client/features/peer-host.d.ts.map +1 -1
- package/data/build/dist/client/features/peer-host.js +445 -28
- package/data/build/dist/client/features/peer-host.js.map +1 -1
- package/data/build/dist/client/features/reverse-proxy-panel.d.ts.map +1 -1
- package/data/build/dist/client/features/reverse-proxy-panel.js +5 -4
- package/data/build/dist/client/features/reverse-proxy-panel.js.map +1 -1
- package/data/build/dist/client/features/subagent-collapsed-lineage.d.ts +9 -0
- package/data/build/dist/client/features/subagent-collapsed-lineage.d.ts.map +1 -0
- package/data/build/dist/client/features/subagent-collapsed-lineage.js +28 -0
- package/data/build/dist/client/features/subagent-collapsed-lineage.js.map +1 -0
- package/data/build/dist/client/features/subscription-usage-panel.d.ts.map +1 -1
- package/data/build/dist/client/features/subscription-usage-panel.js +4 -3
- package/data/build/dist/client/features/subscription-usage-panel.js.map +1 -1
- package/data/build/dist/client/features/terminal-enhancement-panel.d.ts.map +1 -1
- package/data/build/dist/client/features/terminal-enhancement-panel.js +6 -4
- package/data/build/dist/client/features/terminal-enhancement-panel.js.map +1 -1
- package/data/build/dist/client/features/types.d.ts +8 -0
- package/data/build/dist/client/features/types.d.ts.map +1 -1
- package/data/build/dist/client/features/voice-conversation-dialog.d.ts.map +1 -1
- package/data/build/dist/client/features/voice-conversation-dialog.js +7 -6
- package/data/build/dist/client/features/voice-conversation-dialog.js.map +1 -1
- package/data/build/dist/client/features/voice-initialization-dialog.d.ts.map +1 -1
- package/data/build/dist/client/features/voice-initialization-dialog.js +7 -6
- package/data/build/dist/client/features/voice-initialization-dialog.js.map +1 -1
- 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 +44 -96
- package/data/build/dist/client/features/workspace-session-enhancement-panel.js.map +1 -1
- package/data/build/dist/client/file-management-dom.d.ts.map +1 -1
- package/data/build/dist/client/file-management-dom.js +42 -28
- package/data/build/dist/client/file-management-dom.js.map +1 -1
- package/data/build/dist/client/font-scale.d.ts +37 -0
- package/data/build/dist/client/font-scale.d.ts.map +1 -0
- package/data/build/dist/client/font-scale.js +56 -0
- package/data/build/dist/client/font-scale.js.map +1 -0
- package/data/build/dist/client/git-management.d.ts.map +1 -1
- package/data/build/dist/client/git-management.js +80 -37
- package/data/build/dist/client/git-management.js.map +1 -1
- 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/index.js +43 -1
- package/data/build/dist/client/index.js.map +1 -1
- package/data/build/dist/client/locale.d.ts.map +1 -1
- package/data/build/dist/client/locale.js +27 -2
- package/data/build/dist/client/locale.js.map +1 -1
- package/data/build/dist/client/locales/assistantWorkbench.d.ts +45 -0
- package/data/build/dist/client/locales/assistantWorkbench.d.ts.map +1 -1
- package/data/build/dist/client/locales/assistantWorkbench.js +30 -6
- package/data/build/dist/client/locales/assistantWorkbench.js.map +1 -1
- package/data/build/dist/client/locales/peerHost.d.ts.map +1 -1
- package/data/build/dist/client/locales/peerHost.js +10 -0
- package/data/build/dist/client/locales/peerHost.js.map +1 -1
- package/data/build/dist/client/locales/peerHostWorkspace.d.ts.map +1 -1
- package/data/build/dist/client/locales/peerHostWorkspace.js +16 -0
- package/data/build/dist/client/locales/peerHostWorkspace.js.map +1 -1
- package/data/build/dist/client/locales/subagentCollapsed.d.ts +53 -0
- package/data/build/dist/client/locales/subagentCollapsed.d.ts.map +1 -0
- package/data/build/dist/client/locales/subagentCollapsed.js +95 -0
- package/data/build/dist/client/locales/subagentCollapsed.js.map +1 -0
- package/data/build/dist/client/locales/terminalAuth.js +2 -2
- 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 +48 -0
- package/data/build/dist/client/locales/usage.js.map +1 -1
- package/data/build/dist/client/native-workspace-store.d.ts +10 -0
- package/data/build/dist/client/native-workspace-store.d.ts.map +1 -1
- package/data/build/dist/client/native-workspace-store.js +22 -1
- package/data/build/dist/client/native-workspace-store.js.map +1 -1
- package/data/build/dist/client/peer-host-color.d.ts +3 -0
- package/data/build/dist/client/peer-host-color.d.ts.map +1 -1
- package/data/build/dist/client/peer-host-color.js +16 -0
- package/data/build/dist/client/peer-host-color.js.map +1 -1
- package/data/build/dist/client/peer-host-file-links.d.ts +8 -0
- package/data/build/dist/client/peer-host-file-links.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-file-links.js +43 -0
- package/data/build/dist/client/peer-host-file-links.js.map +1 -0
- package/data/build/dist/client/peer-host-management-api.d.ts +2 -1
- package/data/build/dist/client/peer-host-management-api.d.ts.map +1 -1
- package/data/build/dist/client/peer-host-management-api.js +2 -1
- package/data/build/dist/client/peer-host-management-api.js.map +1 -1
- package/data/build/dist/client/peer-host-native-projection.d.ts +20 -8
- package/data/build/dist/client/peer-host-native-projection.d.ts.map +1 -1
- package/data/build/dist/client/peer-host-native-projection.js +127 -15
- package/data/build/dist/client/peer-host-native-projection.js.map +1 -1
- package/data/build/dist/client/peer-host-native-store-projection.d.ts +2 -0
- package/data/build/dist/client/peer-host-native-store-projection.d.ts.map +1 -1
- package/data/build/dist/client/peer-host-native-store-projection.js +52 -13
- package/data/build/dist/client/peer-host-native-store-projection.js.map +1 -1
- package/data/build/dist/client/peer-host-reference-source.d.ts +18 -0
- package/data/build/dist/client/peer-host-reference-source.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-reference-source.js +174 -0
- package/data/build/dist/client/peer-host-reference-source.js.map +1 -0
- package/data/build/dist/client/peer-host-remote-events.d.ts +48 -0
- package/data/build/dist/client/peer-host-remote-events.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-remote-events.js +328 -0
- package/data/build/dist/client/peer-host-remote-events.js.map +1 -0
- package/data/build/dist/client/peer-host-scoped-client.d.ts +3 -0
- package/data/build/dist/client/peer-host-scoped-client.d.ts.map +1 -1
- package/data/build/dist/client/peer-host-scoped-client.js +5 -2
- package/data/build/dist/client/peer-host-scoped-client.js.map +1 -1
- package/data/build/dist/client/peer-host-workspace-tab.d.ts +2 -0
- package/data/build/dist/client/peer-host-workspace-tab.d.ts.map +1 -1
- package/data/build/dist/client/peer-host-workspace-tab.js +62 -29
- package/data/build/dist/client/peer-host-workspace-tab.js.map +1 -1
- package/data/build/dist/client/peer-host-workspace-tag.d.ts +5 -0
- package/data/build/dist/client/peer-host-workspace-tag.d.ts.map +1 -1
- package/data/build/dist/client/peer-host-workspace-tag.js +57 -14
- package/data/build/dist/client/peer-host-workspace-tag.js.map +1 -1
- package/data/build/dist/client/provider-icons.d.ts.map +1 -1
- package/data/build/dist/client/provider-icons.js +2 -1
- package/data/build/dist/client/provider-icons.js.map +1 -1
- package/data/build/dist/client/quick-phrase-slot.d.ts.map +1 -1
- package/data/build/dist/client/quick-phrase-slot.js +12 -11
- package/data/build/dist/client/quick-phrase-slot.js.map +1 -1
- package/data/build/dist/client/serial-polling.d.ts +1 -0
- package/data/build/dist/client/serial-polling.d.ts.map +1 -1
- package/data/build/dist/client/serial-polling.js +4 -2
- package/data/build/dist/client/serial-polling.js.map +1 -1
- package/data/build/dist/client/session-adapter-cache.d.ts +2 -0
- package/data/build/dist/client/session-adapter-cache.d.ts.map +1 -1
- package/data/build/dist/client/session-adapter-cache.js +11 -0
- package/data/build/dist/client/session-adapter-cache.js.map +1 -1
- package/data/build/dist/client/session-changed-files-view.d.ts +15 -0
- package/data/build/dist/client/session-changed-files-view.d.ts.map +1 -1
- package/data/build/dist/client/session-changed-files-view.js +73 -29
- package/data/build/dist/client/session-changed-files-view.js.map +1 -1
- package/data/build/dist/client/settings-controls.d.ts +29 -0
- package/data/build/dist/client/settings-controls.d.ts.map +1 -0
- package/data/build/dist/client/settings-controls.js +80 -0
- package/data/build/dist/client/settings-controls.js.map +1 -0
- package/data/build/dist/client/settings-section.d.ts.map +1 -1
- package/data/build/dist/client/settings-section.js +7 -11
- package/data/build/dist/client/settings-section.js.map +1 -1
- package/data/build/dist/client/skill-command.d.ts.map +1 -1
- package/data/build/dist/client/skill-command.js +2 -1
- package/data/build/dist/client/skill-command.js.map +1 -1
- package/data/build/dist/client/style.css +2561 -0
- package/data/build/dist/client/subagent-collapsed-lineage.d.ts +103 -0
- package/data/build/dist/client/subagent-collapsed-lineage.d.ts.map +1 -0
- package/data/build/dist/client/subagent-collapsed-lineage.js +664 -0
- package/data/build/dist/client/subagent-collapsed-lineage.js.map +1 -0
- package/data/build/dist/client/subscription-slot.d.ts +8 -2
- package/data/build/dist/client/subscription-slot.d.ts.map +1 -1
- package/data/build/dist/client/subscription-slot.js +55 -34
- package/data/build/dist/client/subscription-slot.js.map +1 -1
- package/data/build/dist/client/terminal/ui.d.ts.map +1 -1
- package/data/build/dist/client/terminal/ui.js +26 -8
- package/data/build/dist/client/terminal/ui.js.map +1 -1
- package/data/build/dist/client/theme.d.ts +2 -0
- package/data/build/dist/client/theme.d.ts.map +1 -1
- package/data/build/dist/client/theme.js +20 -12
- package/data/build/dist/client/theme.js.map +1 -1
- package/data/build/dist/client/workspace-session-visibility-dom.d.ts.map +1 -1
- package/data/build/dist/client/workspace-session-visibility-dom.js +22 -10
- package/data/build/dist/client/workspace-session-visibility-dom.js.map +1 -1
- package/data/build/dist/dsh-capabilities/client/assistant-session-navigation-adapter.d.ts +15 -0
- package/data/build/dist/dsh-capabilities/client/assistant-session-navigation-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/assistant-session-navigation-adapter.js +86 -0
- package/data/build/dist/dsh-capabilities/client/assistant-session-navigation-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/session-title-adapter.d.ts +10 -0
- package/data/build/dist/dsh-capabilities/host/session-title-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/session-title-adapter.js +199 -0
- package/data/build/dist/dsh-capabilities/host/session-title-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/sidebar-session-compat.d.ts +1 -1
- package/data/build/dist/dsh-capabilities/host/sidebar-session-compat.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/host/sidebar-session-compat.js +8 -2
- package/data/build/dist/dsh-capabilities/host/sidebar-session-compat.js.map +1 -1
- package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/matrix.js +13 -3
- package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
- package/data/build/dist/dsh-capabilities/routes.js +37 -3
- package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
- package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
- package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/types.js.map +1 -1
- package/data/build/dist/host/avatar/materials.d.ts.map +1 -1
- package/data/build/dist/host/avatar/materials.js +3 -1
- package/data/build/dist/host/avatar/materials.js.map +1 -1
- package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts +13 -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 +136 -11
- package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.js +1 -1
- 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 +65 -31
- package/data/build/dist/host/cli-adapters/codebuddy-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts +1 -0
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-driver.js +36 -9
- package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-file-citations.d.ts +13 -0
- package/data/build/dist/host/cli-adapters/codex-file-citations.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/codex-file-citations.js +271 -0
- package/data/build/dist/host/cli-adapters/codex-file-citations.js.map +1 -0
- 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 +136 -16
- package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/delegate-dispatch.d.ts +4 -3
- package/data/build/dist/host/cli-adapters/delegate-dispatch.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/delegate-dispatch.js +7 -6
- package/data/build/dist/host/cli-adapters/delegate-dispatch.js.map +1 -1
- package/data/build/dist/host/cli-adapters/doubao-app.d.ts +32 -11
- package/data/build/dist/host/cli-adapters/doubao-app.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/doubao-app.js +195 -24
- package/data/build/dist/host/cli-adapters/doubao-app.js.map +1 -1
- package/data/build/dist/host/cli-adapters/doubao-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/doubao-driver.js +3 -1
- package/data/build/dist/host/cli-adapters/doubao-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-config.d.ts +16 -0
- package/data/build/dist/host/cli-adapters/dsh-config.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/dsh-config.js +153 -0
- package/data/build/dist/host/cli-adapters/dsh-config.js.map +1 -0
- package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts +2 -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 +16 -5
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-tool-history.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-tool-history.js +23 -3
- package/data/build/dist/host/cli-adapters/dsh-tool-history.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 +72 -28
- package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
- package/data/build/dist/host/cli-adapters/model-catalog.d.ts +1 -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 +22 -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 +24 -2
- 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 +113 -4
- 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 +63 -18
- 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 +35 -1
- package/data/build/dist/host/cli-adapters/native-team-subagent.js.map +1 -1
- package/data/build/dist/host/cli-adapters/new-api-subscription.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/new-api-subscription.js +2 -45
- package/data/build/dist/host/cli-adapters/new-api-subscription.js.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts +6 -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 +10 -3
- package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-v2-protocol.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-v2-protocol.js +334 -62
- package/data/build/dist/host/cli-adapters/opencode-v2-protocol.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 +134 -14
- package/data/build/dist/host/cli-adapters/pi-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/provider-subscription.d.ts +3 -0
- package/data/build/dist/host/cli-adapters/provider-subscription.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/provider-subscription.js +13 -45
- package/data/build/dist/host/cli-adapters/provider-subscription.js.map +1 -1
- package/data/build/dist/host/cli-adapters/r4-subscription.d.ts +13 -0
- package/data/build/dist/host/cli-adapters/r4-subscription.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/r4-subscription.js +111 -0
- package/data/build/dist/host/cli-adapters/r4-subscription.js.map +1 -0
- package/data/build/dist/host/cli-adapters/registry.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.js +14 -3
- package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
- package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/stream-normalizer.js +7 -0
- package/data/build/dist/host/cli-adapters/stream-normalizer.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 +28 -7
- package/data/build/dist/host/cli-adapters/subagent-tool.js.map +1 -1
- package/data/build/dist/host/cli-bridge/bridge-server.d.ts +1 -0
- package/data/build/dist/host/cli-bridge/bridge-server.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/bridge-server.js.map +1 -1
- package/data/build/dist/host/cli-bridge/command-code-mod.d.ts +24 -1
- package/data/build/dist/host/cli-bridge/command-code-mod.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/command-code-mod.js +121 -23
- 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 +26 -6
- package/data/build/dist/host/cli-bridge/dispatch.js.map +1 -1
- package/data/build/dist/host/cli-bridge/injections.d.ts +45 -4
- package/data/build/dist/host/cli-bridge/injections.d.ts.map +1 -1
- package/data/build/dist/host/cli-bridge/injections.js +129 -14
- package/data/build/dist/host/cli-bridge/injections.js.map +1 -1
- package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js +20 -5
- package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js.map +1 -1
- package/data/build/dist/host/desktop-assistant/controller.d.ts +27 -2
- package/data/build/dist/host/desktop-assistant/controller.d.ts.map +1 -1
- package/data/build/dist/host/desktop-assistant/controller.js +197 -7
- package/data/build/dist/host/desktop-assistant/controller.js.map +1 -1
- package/data/build/dist/host/desktop-assistant/feature.d.ts.map +1 -1
- package/data/build/dist/host/desktop-assistant/feature.js +41 -4
- package/data/build/dist/host/desktop-assistant/feature.js.map +1 -1
- package/data/build/dist/host/desktop-assistant/launcher.d.ts.map +1 -1
- package/data/build/dist/host/desktop-assistant/launcher.js +3 -1
- package/data/build/dist/host/desktop-assistant/launcher.js.map +1 -1
- package/data/build/dist/host/desktop-assistant/mac-agent.d.ts.map +1 -1
- package/data/build/dist/host/desktop-assistant/mac-agent.js +41 -10
- package/data/build/dist/host/desktop-assistant/mac-agent.js.map +1 -1
- package/data/build/dist/host/desktop-assistant/notifications.d.ts +16 -0
- package/data/build/dist/host/desktop-assistant/notifications.d.ts.map +1 -0
- package/data/build/dist/host/desktop-assistant/notifications.js +45 -0
- package/data/build/dist/host/desktop-assistant/notifications.js.map +1 -0
- package/data/build/dist/host/desktop-assistant/win-agent.d.ts.map +1 -1
- package/data/build/dist/host/desktop-assistant/win-agent.js +95 -8
- package/data/build/dist/host/desktop-assistant/win-agent.js.map +1 -1
- package/data/build/dist/host/features/assistant-lifecycle-settings.js +1 -1
- package/data/build/dist/host/features/assistant-lifecycle-settings.js.map +1 -1
- package/data/build/dist/host/features/assistant-management-tools.d.ts +2 -1
- package/data/build/dist/host/features/assistant-management-tools.d.ts.map +1 -1
- package/data/build/dist/host/features/assistant-management-tools.js +10 -3
- package/data/build/dist/host/features/assistant-management-tools.js.map +1 -1
- package/data/build/dist/host/features/assistant-notification-events.d.ts +77 -0
- package/data/build/dist/host/features/assistant-notification-events.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-notification-events.js +574 -0
- package/data/build/dist/host/features/assistant-notification-events.js.map +1 -0
- package/data/build/dist/host/features/assistant-notification-source.d.ts +32 -0
- package/data/build/dist/host/features/assistant-notification-source.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-notification-source.js +101 -0
- package/data/build/dist/host/features/assistant-notification-source.js.map +1 -0
- package/data/build/dist/host/features/assistant-notification-stream.d.ts +26 -0
- package/data/build/dist/host/features/assistant-notification-stream.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-notification-stream.js +179 -0
- package/data/build/dist/host/features/assistant-notification-stream.js.map +1 -0
- package/data/build/dist/host/features/assistant-notifications.d.ts +78 -0
- package/data/build/dist/host/features/assistant-notifications.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-notifications.js +436 -0
- package/data/build/dist/host/features/assistant-notifications.js.map +1 -0
- package/data/build/dist/host/features/assistant-peer-notifications.d.ts +53 -0
- package/data/build/dist/host/features/assistant-peer-notifications.d.ts.map +1 -0
- package/data/build/dist/host/features/assistant-peer-notifications.js +197 -0
- package/data/build/dist/host/features/assistant-peer-notifications.js.map +1 -0
- package/data/build/dist/host/features/assistant-tts-service.d.ts.map +1 -1
- package/data/build/dist/host/features/assistant-tts-service.js +2 -2
- package/data/build/dist/host/features/assistant-tts-service.js.map +1 -1
- package/data/build/dist/host/features/assistant-voice-initialization.js +1 -1
- package/data/build/dist/host/features/assistant-voice-initialization.js.map +1 -1
- package/data/build/dist/host/features/git-management.js +2 -1
- package/data/build/dist/host/features/git-management.js.map +1 -1
- package/data/build/dist/host/features/global-voice-rpc.d.ts +2 -2
- package/data/build/dist/host/features/global-voice-rpc.d.ts.map +1 -1
- package/data/build/dist/host/features/global-voice-rpc.js +179 -4
- package/data/build/dist/host/features/global-voice-rpc.js.map +1 -1
- package/data/build/dist/host/features/index.d.ts +1 -0
- package/data/build/dist/host/features/index.d.ts.map +1 -1
- package/data/build/dist/host/features/index.js +3 -0
- package/data/build/dist/host/features/index.js.map +1 -1
- package/data/build/dist/host/features/peer-host.d.ts.map +1 -1
- package/data/build/dist/host/features/peer-host.js +193 -75
- package/data/build/dist/host/features/peer-host.js.map +1 -1
- package/data/build/dist/host/features/session-title-optimization.d.ts +5 -0
- package/data/build/dist/host/features/session-title-optimization.d.ts.map +1 -0
- package/data/build/dist/host/features/session-title-optimization.js +26 -0
- package/data/build/dist/host/features/session-title-optimization.js.map +1 -0
- package/data/build/dist/host/features/types.d.ts +9 -1
- package/data/build/dist/host/features/types.d.ts.map +1 -1
- package/data/build/dist/host/index.d.ts.map +1 -1
- package/data/build/dist/host/index.js +23 -1
- package/data/build/dist/host/index.js.map +1 -1
- package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -1
- package/data/build/dist/host/lan-access-dsh.js +9 -1
- package/data/build/dist/host/lan-access-dsh.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/aggregated-host-transport.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/aggregated-host-transport.js +8 -2
- package/data/build/dist/host/modules/peer-host/aggregated-host-transport.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.d.ts +5 -1
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.js +72 -23
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/host-ws-proxy-service.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/host-ws-proxy-service.js +7 -5
- package/data/build/dist/host/modules/peer-host/host-ws-proxy-service.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.d.ts +6 -1
- package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.js +7 -0
- package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.d.ts +2 -1
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.js +11 -10
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.d.ts +7 -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 +63 -1
- 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-native-protocol.d.ts +6 -3
- package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.js +92 -5
- package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-native-streams.d.ts +15 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-streams.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-streams.js +101 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-streams.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-transport.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-native-transport.js +44 -11
- package/data/build/dist/host/modules/peer-host/peer-host-native-transport.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js +75 -20
- package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-request-errors.d.ts +31 -0
- package/data/build/dist/host/modules/peer-host/peer-host-request-errors.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-request-errors.js +60 -0
- package/data/build/dist/host/modules/peer-host/peer-host-request-errors.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-session.d.ts +12 -4
- package/data/build/dist/host/modules/peer-host/peer-host-session.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-session.js +28 -18
- package/data/build/dist/host/modules/peer-host/peer-host-session.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.d.ts +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.d.ts.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.js +15 -4
- package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/peer-host-workspace-cache.d.ts +22 -0
- package/data/build/dist/host/modules/peer-host/peer-host-workspace-cache.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-workspace-cache.js +133 -0
- package/data/build/dist/host/modules/peer-host/peer-host-workspace-cache.js.map +1 -0
- 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 +89 -9
- 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 +11 -2
- 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 +14 -3
- package/data/build/dist/host/settings.js.map +1 -1
- package/data/build/dist/host/terminal/controller-factory.d.ts +1 -0
- package/data/build/dist/host/terminal/controller-factory.d.ts.map +1 -1
- package/data/build/dist/host/terminal/controller-factory.js +3 -0
- package/data/build/dist/host/terminal/controller-factory.js.map +1 -1
- package/data/build/dist/host/terminal/startup.d.ts +3 -0
- package/data/build/dist/host/terminal/startup.d.ts.map +1 -1
- package/data/build/dist/host/terminal/startup.js +1 -0
- package/data/build/dist/host/terminal/startup.js.map +1 -1
- package/data/build/dist/host/terminal/terminal-controller.d.ts +8 -0
- package/data/build/dist/host/terminal/terminal-controller.d.ts.map +1 -1
- package/data/build/dist/host/terminal/terminal-controller.js +2 -1
- package/data/build/dist/host/terminal/terminal-controller.js.map +1 -1
- package/data/build/dist/shared/assistant-avatar-adapters.d.ts.map +1 -1
- package/data/build/dist/shared/assistant-avatar-adapters.js +3 -0
- package/data/build/dist/shared/assistant-avatar-adapters.js.map +1 -1
- package/data/build/dist/shared/assistant-avatar.d.ts +11 -1
- package/data/build/dist/shared/assistant-avatar.d.ts.map +1 -1
- package/data/build/dist/shared/assistant-avatar.js +31 -1
- package/data/build/dist/shared/assistant-avatar.js.map +1 -1
- package/data/build/dist/shared/assistant-message-timeline.d.ts +11 -0
- package/data/build/dist/shared/assistant-message-timeline.d.ts.map +1 -1
- package/data/build/dist/shared/assistant-message-timeline.js +19 -0
- package/data/build/dist/shared/assistant-message-timeline.js.map +1 -1
- package/data/build/dist/shared/assistant-notification-feed.d.ts +44 -0
- package/data/build/dist/shared/assistant-notification-feed.d.ts.map +1 -0
- package/data/build/dist/shared/assistant-notification-feed.js +88 -0
- package/data/build/dist/shared/assistant-notification-feed.js.map +1 -0
- package/data/build/dist/shared/assistant-notifications.d.ts +141 -0
- package/data/build/dist/shared/assistant-notifications.d.ts.map +1 -0
- package/data/build/dist/shared/assistant-notifications.js +32 -0
- package/data/build/dist/shared/assistant-notifications.js.map +1 -0
- package/data/build/dist/shared/assistant-session-messages.d.ts +13 -0
- package/data/build/dist/shared/assistant-session-messages.d.ts.map +1 -0
- package/data/build/dist/shared/assistant-session-messages.js +155 -0
- package/data/build/dist/shared/assistant-session-messages.js.map +1 -0
- package/data/build/dist/shared/assistant-tts.js +1 -1
- package/data/build/dist/shared/contracts/assistant.d.ts +13 -0
- package/data/build/dist/shared/contracts/assistant.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/cli-adapter.d.ts +5 -1
- package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/config.d.ts +5 -0
- package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/config.js +3 -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/peer-host.d.ts +15 -0
- package/data/build/dist/shared/contracts/peer-host.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/peer-host.js.map +1 -1
- package/data/build/dist/shared/contracts/subscription.d.ts +31 -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/version.d.ts +12 -8
- package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/version.js +11 -7
- package/data/build/dist/shared/contracts/version.js.map +1 -1
- package/data/build/dist/shared/desktop-assistant.d.ts +74 -1
- package/data/build/dist/shared/desktop-assistant.d.ts.map +1 -1
- package/data/build/dist/shared/desktop-assistant.js +201 -2
- package/data/build/dist/shared/desktop-assistant.js.map +1 -1
- package/data/build/dist/shared/index.d.ts +2 -2
- package/data/build/dist/shared/index.d.ts.map +1 -1
- package/data/build/dist/shared/index.js.map +1 -1
- package/data/build/dist/shared/peer-host-file-location.d.ts +11 -0
- package/data/build/dist/shared/peer-host-file-location.d.ts.map +1 -0
- package/data/build/dist/shared/peer-host-file-location.js +20 -0
- package/data/build/dist/shared/peer-host-file-location.js.map +1 -0
- package/data/build/dist/shared/peer-host-http-routes.d.ts +10 -0
- package/data/build/dist/shared/peer-host-http-routes.d.ts.map +1 -1
- package/data/build/dist/shared/peer-host-http-routes.js +7 -1
- package/data/build/dist/shared/peer-host-http-routes.js.map +1 -1
- package/data/build/dist/shared/provider-icon-resources.d.ts.map +1 -1
- package/data/build/dist/shared/provider-icon-resources.js +1 -0
- package/data/build/dist/shared/provider-icon-resources.js.map +1 -1
- package/data/build/dist/shared/session-reference.d.ts +11 -0
- package/data/build/dist/shared/session-reference.d.ts.map +1 -0
- package/data/build/dist/shared/session-reference.js +29 -0
- package/data/build/dist/shared/session-reference.js.map +1 -0
- package/data/build/dist/shared/session-title.d.ts +12 -0
- package/data/build/dist/shared/session-title.d.ts.map +1 -0
- package/data/build/dist/shared/session-title.js +65 -0
- package/data/build/dist/shared/session-title.js.map +1 -0
- package/data/build/dist/shared/voice-initialization.d.ts +1 -1
- package/data/build/dist/shared/voice-initialization.d.ts.map +1 -1
- package/data/build/dist/shared/voice-initialization.js +1 -1
- package/data/build/dist/shared/voice-initialization.js.map +1 -1
- package/data/build/dist/shared/voice-models.d.ts +2 -2
- package/data/build/dist/shared/voice-models.d.ts.map +1 -1
- package/data/build/dist/shared/voice-models.js +9 -9
- package/data/build/dist/shared/voice-models.js.map +1 -1
- package/data/build/dist/typert.host.d.ts +18 -1
- package/data/build/dist/typert.host.d.ts.map +1 -1
- package/data/build/dist/typert.host.js +28 -3
- package/data/build/dist/typert.host.js.map +1 -1
- package/data/build/dist/typert.notifications-client.d.ts +5 -0
- package/data/build/dist/typert.notifications-client.d.ts.map +1 -0
- package/data/build/dist/typert.notifications-client.js +7 -0
- package/data/build/dist/typert.notifications-client.js.map +1 -0
- package/data/build/dist/typert.remote-client.js +1 -1
- package/data/build/dist/typert.remote-client.js.map +1 -1
- package/package.json +41 -33
- package/profile/README.md +2 -2
- package/profile/package.json +3 -3
- package/profile/version.json +3 -3
- package/version.json +3 -3
- package/data/build/dist/client/client.assistant-prompts.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.primitives-adapter.js","names":["createElement","primitives","value"],"sources":["../../../../src/shared/contracts/peer-host.ts","../../../../src/dsh-capabilities/client/primitives-adapter.ts"],"sourcesContent":["/** PeerHost 目标路由;短期 relay ticket 永远不属于持久配置。 */\nexport type PeerHostRoute =\n | {\n readonly kind: 'lan'\n readonly baseUrl: string\n readonly normalizedOrigin: string\n }\n | {\n readonly kind: 'relay'\n readonly deviceId: string\n readonly relayEntryId: string\n readonly transportVersion: string\n }\n\nexport type PeerHostStatus =\n | 'configured'\n | 'checking'\n | 'ready'\n | 'plugin_missing'\n | 'version_mismatch'\n | 'identity_changed'\n | 'session_required'\n | 'unreachable'\n | 'reconnecting'\n | 'disabled'\n\n/** Host 侧保存的 PeerHost 配置与脱敏握手状态。凭据不在此 DTO 中。 */\nexport interface PeerHostRecord {\n readonly id: string\n readonly ownerUserId: string\n readonly displayName: string\n readonly route: PeerHostRoute\n readonly status: PeerHostStatus\n readonly pluginId: string | null\n readonly pluginVersion: string | null\n readonly dshVersion: string | null\n /** 远端操作系统主机名;旧记录没有此字段时保持缺省。 */\n readonly hostname?: string | null\n /** 远端 DSH 配置文件名;只返回名称,不返回本地路径。 */\n readonly configProfile?: string | null\n readonly apiCompatibility: string | null\n readonly fingerprint: string | null\n readonly lastCheckedAt: number | null\n readonly lastErrorCode: PeerHostErrorCode | null\n /**\n * 工作区标签配色;缺省时客户端按名称推导稳定色。\n *\n * 颜色只影响本机侧栏标签,不参与握手、代理或目标 Host 的任何状态。\n */\n readonly color?: string | null\n /**\n * 用户显式添加的远端工作区 ID。\n *\n * 聚合摘要只投影这个集合内的远端工作区;缺省或空集合表示\"尚未显式添加任何\n * 远端工作区\",此时不展示该 Host 的任何工作区——这是默认行为,不是降级。\n */\n readonly visibleWorkspaceIds?: readonly string[]\n readonly createdAt: number\n readonly updatedAt: number\n}\n\n/** Client 管理面板可见的 PeerHost 摘要;仅暴露局域网地址,凭据和中转路由详情仍留在 Host。 */\nexport type PeerHostClientRoute =\n | { readonly kind: 'lan'; readonly baseUrl?: string }\n | { readonly kind: 'relay' }\n\nexport type PeerHostClientRecord = Omit<PeerHostRecord, 'route'> & {\n readonly route: PeerHostClientRoute\n}\n\n/** Client 可见的 PeerHost 诊断快照;不包含完整路由、凭据或正文。 */\nexport interface PeerHostDiagnosticSnapshot {\n readonly peerHostId: string\n readonly routeKind: 'lan' | 'relay'\n readonly status: PeerHostStatus\n readonly lastErrorCode: PeerHostErrorCode | null\n readonly lastCheckedAt: number | null\n readonly fingerprint: string | null\n}\n\n/** 当前 Host 插件自有 WebSocket 入口;不包含任何目标 Host 地址或凭据。 */\nexport interface PeerHostWebSocketEndpoint {\n readonly host: string\n readonly port: number\n readonly path: string\n}\n\n/** 所有跨 Host 资源共用的完整作用域。 */\nexport interface HostScope {\n readonly hostId: string\n readonly targetHostId: string | null\n readonly workspaceId: string\n readonly sessionId: string | null\n readonly scopeGeneration: number\n}\n\n/** 会话摘要只用于聚合导航,不包含历史消息或工具内容。 */\nexport interface PeerHostSessionRecord {\n readonly scope: HostScope\n readonly title: string\n readonly status: string\n /** 来自真实执行状态的证明;不能把导航层默认 idle 当作完成证明。 */\n readonly activity?: 'running' | 'idle' | 'unknown'\n readonly updatedAt: number\n /** DSH 原生会话是否仍处于待首条消息的临时状态。 */\n readonly blank: boolean\n /** 远端 CodingNS CLI 会话绑定的适配器;旧 Host 未提供时保持缺省。 */\n readonly adapterId?: string\n}\n\n/** 当前 Host 和 PeerHost 统一使用的工作区摘要。 */\nexport interface AggregateWorkspaceSummary {\n readonly key: string\n readonly hostId: string\n readonly targetHostId: string | null\n readonly workspaceId: string\n readonly displayName: string\n /** 工作区在所属 Host 上的真实路径;原生文件面板等按路径解析,不能用 workspaceId 代替。 */\n readonly path: string\n readonly hostLabel: string\n readonly availability: 'ready' | 'checking' | 'unreachable' | 'unsupported'\n readonly sessions: readonly PeerHostSessionRecord[]\n /**\n * 已归档会话。远端侧栏默认隐藏这些行,但归档入口、归档集合与取消归档路由\n * 仍需要它们;子代理会话在可见与归档两侧都不出现。\n */\n readonly archivedSessions?: readonly PeerHostSessionRecord[]\n}\n\nexport interface AggregateHostResult {\n readonly hostId: string\n readonly targetHostId: string | null\n readonly hostLabel: string\n /** 该 Host 工作区标签的配色;缺省时客户端按名称推导稳定色。 */\n readonly hostColor?: string | null\n readonly availability: 'ready' | 'checking' | 'unreachable' | 'unsupported'\n readonly errorCode: PeerHostErrorCode | null\n /** 摘要能力不可用时保留可诊断原因,禁止以空工作区伪装成功。 */\n readonly diagnostic?: string\n readonly workspaces: readonly AggregateWorkspaceSummary[]\n}\n\n/**\n * 工作区标签配色的取值范围。\n *\n * 只接受 `#rrggbb`:颜色会被写进本机侧栏 DOM 的内联样式,开放任意字符串\n * 等于把 CSS 注入面交给远端配置。\n */\nexport const PEER_HOST_COLOR_PATTERN = /^#[0-9a-f]{6}$/u\n\n/** 校验并归一化工作区标签配色;非法值返回 null,由消费方回退到推导色。 */\nexport function normalizePeerHostColor(value: unknown): string | null {\n if (typeof value !== 'string') return null\n const trimmed = value.trim().toLowerCase()\n return PEER_HOST_COLOR_PATTERN.test(trimmed) ? trimmed : null\n}\n\n/** 管理面板的默认配色候选;顺序即下拉顺序。 */\nexport const PEER_HOST_COLOR_PRESETS = Object.freeze([\n '#1677ff',\n '#722ed1',\n '#13c2c2',\n '#52c41a',\n '#fa8c16',\n '#eb2f96',\n '#f5222d',\n '#8c8c8c',\n] as const)\n\n/** Aggregated Host 只允许本地插件基线;远端不得提供 Manifest、Bundle 或 UI Slot。 */\nexport interface AggregatedHostLocalPluginBaseline {\n readonly pluginId: string\n readonly pluginVersion: string\n readonly manifestSource: 'local'\n readonly bundleSource: 'local'\n readonly uiSource: 'local'\n readonly allowRemoteManifest: false\n readonly allowRemoteBundle: false\n}\n\n/** 目标 Host 的执行能力摘要;不包含 token、路由地址或插件正文。 */\nexport interface AggregatedHostCapabilitySummary {\n readonly hostId: string\n readonly targetHostId: string | null\n readonly hostLabel: string\n readonly status: 'ready' | 'checking' | 'unreachable' | 'unsupported'\n readonly dshVersion: string | null\n readonly apiCompatibility: string | null\n readonly capabilities: readonly string[]\n readonly diagnostic?: string\n}\n\n/** Client 读取的 Manifest 只代表当前 Host 的本地插件基线。 */\nexport interface AggregatedHostManifestBoundary {\n readonly source: 'local'\n readonly plugin: AggregatedHostLocalPluginBaseline\n readonly remoteManifest: 'forbidden'\n readonly remoteBundle: 'forbidden'\n}\n\n/** Aggregated Transport 的物理连接 generation;作用域 generation 仍由 HostScope 管理。 */\nexport interface AggregatedHostGeneration {\n readonly id: number\n readonly host: { readonly home: string }\n readonly connectedAt: number\n}\n\nexport interface AggregatedHostRpcRequest {\n readonly scope: HostScope\n readonly method: string\n readonly payload?: unknown\n readonly signal?: AbortSignal\n}\n\nexport interface AggregatedHostFetchRequest {\n readonly scope: HostScope\n readonly path: string\n readonly method?: string\n readonly headers?: Readonly<Record<string, string>>\n readonly body?: string\n readonly signal?: AbortSignal\n}\n\nexport interface AggregatedHostStreamRequest {\n readonly scope: HostScope\n readonly method: string\n readonly payload?: unknown\n readonly signal?: AbortSignal\n}\n\n/** Client 侧只提交自己的 Socket;目标连接和 token 由 Host 侧代理服务持有。 */\nexport interface AggregatedHostWebSocketClient {\n readonly readyState: number\n send(data: string): void\n close(code?: number, reason?: string): void\n on(event: 'message' | 'close' | 'error', listener: (...args: any[]) => void): void\n}\n\n/** Aggregated Host 的内部稳定 Transport;不替换普通插件 ctx.connection。 */\nexport interface AggregatedHostTransport {\n readonly kind: 'aggregated-host'\n readonly localPlugin: AggregatedHostLocalPluginBaseline\n getCapabilities(): readonly AggregatedHostCapabilitySummary[]\n rpc<TResponse = unknown>(request: AggregatedHostRpcRequest): Promise<TResponse>\n fetch(request: AggregatedHostFetchRequest): Promise<Response>\n openStream<TChunk = unknown>(request: AggregatedHostStreamRequest): AsyncIterable<TChunk>\n openWebSocket(client: AggregatedHostWebSocketClient, scope: HostScope): Promise<() => void>\n getGeneration(): AggregatedHostGeneration | undefined\n onGenerationChange(listener: (generation: AggregatedHostGeneration | undefined) => void): () => void\n reconnect(signal?: AbortSignal): Promise<void>\n readManifest(): AggregatedHostManifestBoundary\n loadBundle(url: string): Promise<void>\n close(): Promise<void>\n}\n\n/**\n * 聚合 Host 对外暴露的资源命名空间。\n *\n * 远端 Host 的 workspace/session id 只在各自 Host 内唯一,不能直接交给\n * 本地 DSH Store。聚合层使用版本化、可逆的虚拟 ID,避免不同 Host 的同名\n * 资源碰撞,同时保留真实 ID 供路由层转发。\n */\nexport type VirtualWorkspaceId = string\nexport type VirtualSessionId = string\n\nexport interface VirtualWorkspaceRef {\n readonly virtualWorkspaceId: VirtualWorkspaceId\n readonly hostId: string\n readonly targetHostId: string | null\n readonly workspaceId: string\n}\n\nexport interface VirtualSessionRef {\n readonly virtualSessionId: VirtualSessionId\n readonly hostId: string\n readonly targetHostId: string | null\n readonly workspaceId: string\n readonly sessionId: string\n}\n\n/** 混合 Workspace 顺序的持久化内容,只保存虚拟 ID,不复制 Host 数据。 */\nexport interface AggregateWorkspaceOrder {\n readonly version: 1\n readonly orderedWorkspaceIds: readonly VirtualWorkspaceId[]\n}\n\nexport const VIRTUAL_RESOURCE_ID_PREFIX = 'codingns:peer-host:v1'\n\nexport function createVirtualWorkspaceId(hostId: string, workspaceId: string): VirtualWorkspaceId {\n return createVirtualResourceId('workspace', hostId, workspaceId)\n}\n\nexport function createVirtualSessionId(hostId: string, sessionId: string): VirtualSessionId {\n return createVirtualResourceId('session', hostId, sessionId)\n}\n\nexport function parseVirtualWorkspaceId(value: string): VirtualWorkspaceRef | null {\n const parsed = parseVirtualResourceId(value, 'workspace')\n if (parsed === null) return null\n return { virtualWorkspaceId: value, hostId: parsed.hostId, targetHostId: parsed.hostId === 'local' ? null : parsed.hostId, workspaceId: parsed.resourceId }\n}\n\nexport function parseVirtualSessionId(value: string): { readonly hostId: string; readonly sessionId: string } | null {\n const parsed = parseVirtualResourceId(value, 'session')\n return parsed === null ? null : { hostId: parsed.hostId, sessionId: parsed.resourceId }\n}\n\nfunction createVirtualResourceId(kind: 'workspace' | 'session', hostId: string, resourceId: string): string {\n const host = requiredResourcePart(hostId, 'hostId')\n const resource = requiredResourcePart(resourceId, kind === 'workspace' ? 'workspaceId' : 'sessionId')\n return `${VIRTUAL_RESOURCE_ID_PREFIX}:${kind}:${encodeURIComponent(host)}:${encodeURIComponent(resource)}`\n}\n\nfunction parseVirtualResourceId(value: string, kind: 'workspace' | 'session'): { readonly hostId: string; readonly resourceId: string } | null {\n if (typeof value !== 'string') return null\n const prefix = `${VIRTUAL_RESOURCE_ID_PREFIX}:${kind}:`\n if (!value.startsWith(prefix)) return null\n const parts = value.slice(prefix.length).split(':')\n if (parts.length !== 2 || parts.some((part) => part === '')) return null\n try {\n const hostId = decodeURIComponent(parts[0]!)\n const resourceId = decodeURIComponent(parts[1]!)\n return hostId && resourceId ? { hostId, resourceId } : null\n } catch {\n return null\n }\n}\n\nfunction requiredResourcePart(value: string, name: string): string {\n if (typeof value !== 'string' || value.trim() === '') throw new TypeError(`${name} 不能为空`)\n return value\n}\n\nexport const PEER_HOST_ERROR_CODES = {\n NOT_FOUND: 'PEER_HOST_NOT_FOUND',\n NOT_READY: 'PEER_HOST_NOT_READY',\n SESSION_REQUIRED: 'PEER_HOST_SESSION_REQUIRED',\n PROXY_PATH_NOT_ALLOWED: 'PEER_HOST_PROXY_PATH_NOT_ALLOWED',\n PROXY_ACCESS_DENIED: 'PEER_HOST_PROXY_ACCESS_DENIED',\n SCOPE_MISMATCH: 'PEER_HOST_SCOPE_MISMATCH',\n PROXY_UNREACHABLE: 'PEER_HOST_PROXY_UNREACHABLE',\n RESPONSE_INVALID: 'PEER_HOST_RESPONSE_INVALID',\n TOOL_UNSUPPORTED: 'PEER_HOST_TOOL_UNSUPPORTED',\n INVALID_ROUTE: 'PEER_HOST_INVALID_ROUTE',\n DUPLICATE: 'PEER_HOST_DUPLICATE',\n PLUGIN_MISSING: 'PEER_HOST_PLUGIN_MISSING',\n VERSION_MISMATCH: 'PEER_HOST_VERSION_MISMATCH',\n IDENTITY_CHANGED: 'PEER_HOST_IDENTITY_CHANGED',\n UNREACHABLE: 'PEER_HOST_UNREACHABLE',\n RELAY_UNAVAILABLE: 'PEER_HOST_RELAY_UNAVAILABLE',\n AGGREGATE_UNAVAILABLE: 'PEER_HOST_AGGREGATE_UNAVAILABLE',\n STALE_GENERATION: 'PEER_HOST_STALE_GENERATION',\n AGGREGATED_TRANSPORT_UNSUPPORTED: 'PEER_HOST_AGGREGATED_TRANSPORT_UNSUPPORTED',\n AGGREGATED_MANIFEST_FORBIDDEN: 'PEER_HOST_AGGREGATED_MANIFEST_FORBIDDEN',\n AGGREGATED_BUNDLE_FORBIDDEN: 'PEER_HOST_AGGREGATED_BUNDLE_FORBIDDEN',\n} as const\n\nexport type PeerHostErrorCode = typeof PEER_HOST_ERROR_CODES[keyof typeof PEER_HOST_ERROR_CODES]\n\n/** 可安全返回 Client 的结构化错误,不携带凭据、完整 URL 或内容数据。 */\nexport interface PeerHostErrorShape {\n readonly code: PeerHostErrorCode\n readonly peerHostId?: string\n readonly message: string\n}\n\n/** 作用域管理器仍使用的兼容引用;新跨 Host 代码应优先使用 HostScope。 */\nexport interface ResourceScopeRef {\n hostId: string\n workspaceId: string\n targetHostId: string | null\n scopeGeneration: number\n sessionId?: string | null\n}\n\nexport interface ResourceScopeInput {\n hostId: string\n workspaceId: string\n targetHostId: string | null\n sessionId?: string | null\n}\n\nexport type ResourceScopeSnapshot = Readonly<ResourceScopeRef>\n\n/** 作用域拥有的清理函数。清理函数必须可重复调用而不会产生副作用。 */\nexport type ResourceScopeDisposer = () => void | Promise<void>\n\n/** 作用域已经失效时统一抛出的错误。 */\nexport class ResourceScopeStaleError extends Error {\n readonly code = 'RESOURCE_SCOPE_STALE' as const\n\n constructor(message = 'Resource scope is stale') {\n super(message)\n this.name = 'ResourceScopeStaleError'\n }\n}\n","import * as primitives from '@deepseek-ai/dsh-client-ui-primitives'\nimport { createElement, type ComponentType } from 'react'\n\n/** 富文本菜单沿用宿主的键盘导航、焦点归还和外部点击关闭行为。 */\nexport { Menu as DshMenu } from '@deepseek-ai/dsh-client-ui-primitives'\n\ntype IconComponent = ComponentType<{ readonly size?: number; readonly className?: string }>\ntype ShortcutKeysComponent = ComponentType<{ readonly keys: readonly string[] }>\ntype PrimitiveExports = typeof primitives & {\n readonly IconPlusOutlineRegular?: IconComponent\n readonly IconPlusOutlineMedium?: IconComponent\n readonly IconChevronDownOutlineRegular?: IconComponent\n readonly IconChevronDownOutlineMedium?: IconComponent\n readonly IconChevronUpOutlineRegular?: IconComponent\n readonly IconChevronUpOutlineMedium?: IconComponent\n readonly IconChevronLeftOutlineRegular?: IconComponent\n readonly IconChevronLeftOutlineMedium?: IconComponent\n readonly IconChevronRightOutlineRegular?: IconComponent\n readonly IconChevronRightOutlineMedium?: IconComponent\n readonly IconRefreshOutlineRegular?: IconComponent\n readonly IconRefreshOutlineMedium?: IconComponent\n readonly IconSlidersTwoOutlineRegular?: IconComponent\n readonly IconSlidersTwoOutlineMedium?: IconComponent\n readonly IconSettingsOutlineRegular?: IconComponent\n readonly IconSettingsOutlineMedium?: IconComponent\n readonly IconPlusOutline16?: IconComponent\n readonly IconChevronDownOutline14?: IconComponent\n readonly IconDataOutlineRegular?: IconComponent\n readonly IconDataOutlineMedium?: IconComponent\n readonly IconDataOutline16?: IconComponent\n readonly IconShareOutlineRegular?: IconComponent\n readonly IconShareOutlineMedium?: IconComponent\n readonly IconSendOutlineRegular?: IconComponent\n readonly IconSendOutlineMedium?: IconComponent\n readonly IconCloseOutlineRegular?: IconComponent\n readonly IconCloseOutlineMedium?: IconComponent\n readonly IconChatOutlineRegular?: IconComponent\n readonly IconChatOutlineMedium?: IconComponent\n readonly IconStopFillRegular?: IconComponent\n readonly IconStopFillMedium?: IconComponent\n readonly IconPhoneOutlineRegular?: IconComponent\n readonly IconPhoneOutlineMedium?: IconComponent\n readonly ShortcutKeys?: ShortcutKeysComponent\n}\n\nconst unavailableIcon: IconComponent = () => null\nconst fallbackShortcutKeys: ShortcutKeysComponent = ({ keys }) => createElement('span', undefined, keys.join(' + '))\n\nexport type AssistantControlIcon = 'add' | 'phone' | 'settings' | 'close' | 'send' | 'stop' | 'chat' | 'clear'\n/** 助理控件优先共用宿主图标,缺少的电话与普通对话采用相同 16px 画布和细描边。 */\nexport function resolveAssistantControlIcon(name: AssistantControlIcon): IconComponent {\n const value = primitives as PrimitiveExports\n switch (name) {\n case 'add': return resolvePlusIcon()\n case 'clear': return resolveRefreshIcon()\n case 'settings': return value.IconSettingsOutlineRegular ?? value.IconSettingsOutlineMedium ?? resolveToolIcon()\n case 'close': return value.IconCloseOutlineRegular ?? value.IconCloseOutlineMedium ?? unavailableIcon\n case 'chat': return value.IconChatOutlineRegular ?? value.IconChatOutlineMedium ?? AssistantChatIcon\n case 'send': return value.IconSendOutlineRegular ?? value.IconSendOutlineMedium ?? unavailableIcon\n case 'stop': return value.IconStopFillRegular ?? value.IconStopFillMedium ?? unavailableIcon\n case 'phone': return value.IconPhoneOutlineRegular ?? value.IconPhoneOutlineMedium ?? AssistantPhoneIcon\n }\n}\n/** 沿用 DSH 新对话的气泡轮廓,内部使用三点表示进入已有对话。 */\nfunction AssistantChatIcon({ size = 20, className }: { readonly size?: number; readonly className?: string }) {\n return createElement('svg', { width: size, height: size, className, viewBox: '0 0 16 16', fill: 'none', 'aria-hidden': true, focusable: false,\n stroke: 'currentColor', strokeWidth: 1, strokeLinecap: 'round', strokeLinejoin: 'round' },\n createElement('path', { d: 'M2.37091 11.2501C1.58745 9.89288 1.32067 8.29835 1.61969 6.76006C1.91872 5.22177 2.76342 3.8433 3.99826 2.87846C5.2331 1.91362 6.77494 1.42737 8.33988 1.50925C9.90482 1.59113 11.3875 2.23562 12.5149 3.32406C13.6425 4.41269 14.3387 5.87206 14.4754 7.4334C14.612 8.99474 14.18 10.5529 13.2587 11.8209C12.3375 13.0888 10.9891 13.9813 9.46194 14.3337C8.18691 14.628 6.85895 14.5294 5.64989 14.0605C5.1712 13.8748 4.76962 13.4932 4.26534 13.3967C3.67413 13.2835 2.95257 13.5598 2.03794 14.3337' }),\n ...[5.25, 8, 10.75].map((cx) => createElement('circle', { key: cx, cx, cy: 8, r: 0.65, fill: 'currentColor', stroke: 'none' })))\n}\nfunction AssistantPhoneIcon({ size = 20, className }: { readonly size?: number; readonly className?: string }) {\n return createElement('svg', { width: size, height: size, className, viewBox: '0 0 16 16', fill: 'none', 'aria-hidden': true,\n stroke: 'currentColor', strokeWidth: 1, strokeLinecap: 'round', strokeLinejoin: 'round' },\n createElement('path', { d: 'M3.1 1.8h2l1.1 3.1-1.4 1.4a10.5 10.5 0 0 0 4.9 4.9l1.4-1.4 3.1 1.1v2a1.4 1.4 0 0 1-1.6 1.4A13 13 0 0 1 1.7 3.4a1.4 1.4 0 0 1 1.4-1.6Z' }))\n}\n\n/**\n * 图标导出兼容层。0.1.7 可能改名为 Regular/Medium,运行时优先使用新导出,\n * 旧导出仍作为回退;业务组件不再直接判断 DSH 版本。\n */\nexport function resolvePlusIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconPlusOutlineRegular ?? value.IconPlusOutlineMedium ?? value.IconPlusOutline16 ?? unavailableIcon\n}\n\nexport function resolveChevronDownIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconChevronDownOutlineRegular ?? value.IconChevronDownOutlineMedium ?? value.IconChevronDownOutline14 ?? unavailableIcon\n}\n\n/** 终端工具栏使用的原生刷新图标。 */\nexport function resolveRefreshIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconRefreshOutlineRegular ?? value.IconRefreshOutlineMedium ?? unavailableIcon\n}\n\n/** 终端工具栏入口使用的原生工具图标。 */\nexport function resolveToolIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconSlidersTwoOutlineRegular\n ?? value.IconSlidersTwoOutlineMedium\n ?? value.IconSettingsOutlineRegular\n ?? value.IconSettingsOutlineMedium\n ?? unavailableIcon\n}\n\n/** 终端快捷操作的方向图标。 */\nexport function resolveTerminalArrowIcon(direction: 'up' | 'down' | 'left' | 'right'): IconComponent {\n const value = primitives as PrimitiveExports\n if (direction === 'up') return value.IconChevronUpOutlineRegular ?? value.IconChevronUpOutlineMedium ?? unavailableIcon\n if (direction === 'down') return value.IconChevronDownOutlineRegular ?? value.IconChevronDownOutlineMedium ?? unavailableIcon\n if (direction === 'left') return value.IconChevronLeftOutlineRegular ?? value.IconChevronLeftOutlineMedium ?? unavailableIcon\n return value.IconChevronRightOutlineRegular ?? value.IconChevronRightOutlineMedium ?? unavailableIcon\n}\n\n/** 终端按键标签使用 DSH 原生 ShortcutKeys,旧版本缺失时退回纯文本。 */\nexport function resolveShortcutKeys(): ShortcutKeysComponent {\n const value = primitives as PrimitiveExports\n return value.ShortcutKeys ?? fallbackShortcutKeys\n}\n\n/**\n * 模型图标:DSH 原生模型选择器在紧凑状态显示的 data 图标(0.1.7 起为 Regular/Medium,\n * 0.1.6 为 16 后缀),插件模型选择器收起时与之保持一致。\n */\nexport function resolveDataIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconDataOutlineRegular ?? value.IconDataOutlineMedium ?? value.IconDataOutline16 ?? unavailableIcon\n}\n\n/**\n * `/委派` 菜单行图标:优先使用共享(send/share)字形,缺失时回退到插件通用的\n * data 图标,保证旧版 DSH 仍能渲染出一行可识别的委派入口。\n */\nexport function resolveDelegateIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconShareOutlineRegular\n ?? value.IconShareOutlineMedium\n ?? value.IconSendOutlineRegular\n ?? value.IconSendOutlineMedium\n ?? resolveDataIcon()\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.primitives-adapter.js","names":["createElement","primitives","value"],"sources":["../../../../src/shared/contracts/peer-host.ts","../../../../src/dsh-capabilities/client/primitives-adapter.ts"],"sourcesContent":["/** PeerHost 目标路由;短期 relay ticket 永远不属于持久配置。 */\nexport type PeerHostRoute =\n | {\n readonly kind: 'lan'\n readonly baseUrl: string\n readonly normalizedOrigin: string\n }\n | {\n readonly kind: 'relay'\n readonly deviceId: string\n readonly relayEntryId: string\n readonly transportVersion: string\n }\n\nexport type PeerHostStatus =\n | 'configured'\n | 'checking'\n | 'ready'\n | 'plugin_missing'\n | 'version_mismatch'\n | 'identity_changed'\n | 'session_required'\n | 'unreachable'\n | 'reconnecting'\n | 'disabled'\n\n/** Host 侧保存的 PeerHost 配置与脱敏握手状态。凭据不在此 DTO 中。 */\nexport interface PeerHostRecord {\n readonly id: string\n readonly ownerUserId: string\n readonly displayName: string\n readonly route: PeerHostRoute\n readonly status: PeerHostStatus\n readonly pluginId: string | null\n readonly pluginVersion: string | null\n readonly dshVersion: string | null\n /** 远端操作系统主机名;旧记录没有此字段时保持缺省。 */\n readonly hostname?: string | null\n /** 远端 DSH 配置文件名;只返回名称,不返回本地路径。 */\n readonly configProfile?: string | null\n readonly apiCompatibility: string | null\n readonly fingerprint: string | null\n readonly lastCheckedAt: number | null\n readonly lastErrorCode: PeerHostErrorCode | null\n /**\n * 工作区标签配色;缺省时客户端按名称推导稳定色。\n *\n * 颜色只影响本机侧栏标签,不参与握手、代理或目标 Host 的任何状态。\n */\n readonly color?: string | null\n /**\n * 用户显式添加的远端工作区 ID。\n *\n * 聚合摘要只投影这个集合内的远端工作区;缺省或空集合表示\"尚未显式添加任何\n * 远端工作区\",此时不展示该 Host 的任何工作区——这是默认行为,不是降级。\n */\n readonly visibleWorkspaceIds?: readonly string[]\n readonly createdAt: number\n readonly updatedAt: number\n}\n\n/** Client 管理面板可见的 PeerHost 摘要;仅暴露局域网地址,凭据和中转路由详情仍留在 Host。 */\nexport type PeerHostClientRoute =\n | { readonly kind: 'lan'; readonly baseUrl?: string }\n | { readonly kind: 'relay' }\n\nexport type PeerHostClientRecord = Omit<PeerHostRecord, 'route'> & {\n readonly route: PeerHostClientRoute\n}\n\n/** Client 可见的 PeerHost 诊断快照;不包含完整路由、凭据或正文。 */\nexport interface PeerHostDiagnosticSnapshot {\n readonly peerHostId: string\n readonly routeKind: 'lan' | 'relay'\n readonly status: PeerHostStatus\n readonly lastErrorCode: PeerHostErrorCode | null\n readonly lastCheckedAt: number | null\n readonly fingerprint: string | null\n}\n\n/** 当前 Host 插件自有 WebSocket 入口;不包含任何目标 Host 地址或凭据。 */\nexport interface PeerHostWebSocketEndpoint {\n readonly host: string\n readonly port: number\n readonly path: string\n}\n\n/** 所有跨 Host 资源共用的完整作用域。 */\nexport interface HostScope {\n readonly hostId: string\n readonly targetHostId: string | null\n readonly workspaceId: string\n readonly sessionId: string | null\n readonly scopeGeneration: number\n}\n\n/** 只保留标题投影及远端原生序号,避免把实时标题降级为无法覆盖旧值的缓存。 */\nexport interface PeerHostSessionTitleProjection {\n readonly kind: 'cached' | 'sequenced'\n readonly asOfSeq: number\n readonly values: { readonly title: string | null }\n}\n\n/** 会话摘要只用于聚合导航,不包含历史消息或工具内容。 */\nexport interface PeerHostSessionRecord {\n readonly scope: HostScope\n readonly title: string\n /** 旧版摘要缺省;不得使用 updatedAt 伪造原生事件序号。 */\n readonly titleProjection?: PeerHostSessionTitleProjection\n readonly status: string\n /** 来自真实执行状态的证明;不能把导航层默认 idle 当作完成证明。 */\n readonly activity?: 'running' | 'idle' | 'unknown'\n readonly updatedAt: number\n /** DSH 原生会话是否仍处于待首条消息的临时状态。 */\n readonly blank: boolean\n /** 远端 CodingNS CLI 会话绑定的适配器;旧 Host 未提供时保持缺省。 */\n readonly adapterId?: string\n /** 子会话身份仅用于原生目录与路由,不改变工作区侧栏的可见会话。 */\n readonly origin?: 'subagent'\n readonly parentSessionId?: string\n}\n\n/** 当前 Host 和 PeerHost 统一使用的工作区摘要。 */\nexport interface AggregateWorkspaceSummary {\n readonly key: string\n readonly hostId: string\n readonly targetHostId: string | null\n readonly workspaceId: string\n readonly displayName: string\n /** 工作区在所属 Host 上的真实路径;原生文件面板等按路径解析,不能用 workspaceId 代替。 */\n readonly path: string\n readonly hostLabel: string\n readonly availability: 'ready' | 'checking' | 'unreachable' | 'unsupported'\n readonly sessions: readonly PeerHostSessionRecord[]\n /**\n * 已归档会话。远端侧栏默认隐藏这些行,但归档入口、归档集合与取消归档路由\n * 仍需要它们;子代理会话在可见与归档两侧都不出现。\n */\n readonly archivedSessions?: readonly PeerHostSessionRecord[]\n /** 可见工作区下的子会话,进入状态和路由目录,但不占侧栏成员槽位。 */\n readonly subagentSessions?: readonly PeerHostSessionRecord[]\n}\n\nexport interface AggregateHostResult {\n readonly hostId: string\n readonly targetHostId: string | null\n readonly hostLabel: string\n /** 该 Host 工作区标签的配色;缺省时客户端按名称推导稳定色。 */\n readonly hostColor?: string | null\n readonly availability: 'ready' | 'checking' | 'unreachable' | 'unsupported'\n readonly errorCode: PeerHostErrorCode | null\n /** 摘要能力不可用时保留可诊断原因,禁止以空工作区伪装成功。 */\n readonly diagnostic?: string\n readonly workspaces: readonly AggregateWorkspaceSummary[]\n}\n\n/**\n * 工作区标签配色的取值范围。\n *\n * 只接受 `#rrggbb`:颜色会被写进本机侧栏 DOM 的内联样式,开放任意字符串\n * 等于把 CSS 注入面交给远端配置。\n */\nexport const PEER_HOST_COLOR_PATTERN = /^#[0-9a-f]{6}$/u\n\n/** 校验并归一化工作区标签配色;非法值返回 null,由消费方回退到推导色。 */\nexport function normalizePeerHostColor(value: unknown): string | null {\n if (typeof value !== 'string') return null\n const trimmed = value.trim().toLowerCase()\n return PEER_HOST_COLOR_PATTERN.test(trimmed) ? trimmed : null\n}\n\n/** 管理面板的默认配色候选;顺序即下拉顺序。 */\nexport const PEER_HOST_COLOR_PRESETS = Object.freeze([\n '#1677ff',\n '#722ed1',\n '#13c2c2',\n '#52c41a',\n '#fa8c16',\n '#eb2f96',\n '#f5222d',\n '#8c8c8c',\n] as const)\n\n/** Aggregated Host 只允许本地插件基线;远端不得提供 Manifest、Bundle 或 UI Slot。 */\nexport interface AggregatedHostLocalPluginBaseline {\n readonly pluginId: string\n readonly pluginVersion: string\n readonly manifestSource: 'local'\n readonly bundleSource: 'local'\n readonly uiSource: 'local'\n readonly allowRemoteManifest: false\n readonly allowRemoteBundle: false\n}\n\n/** 目标 Host 的执行能力摘要;不包含 token、路由地址或插件正文。 */\nexport interface AggregatedHostCapabilitySummary {\n readonly hostId: string\n readonly targetHostId: string | null\n readonly hostLabel: string\n readonly status: 'ready' | 'checking' | 'unreachable' | 'unsupported'\n readonly dshVersion: string | null\n readonly apiCompatibility: string | null\n readonly capabilities: readonly string[]\n readonly diagnostic?: string\n}\n\n/** Client 读取的 Manifest 只代表当前 Host 的本地插件基线。 */\nexport interface AggregatedHostManifestBoundary {\n readonly source: 'local'\n readonly plugin: AggregatedHostLocalPluginBaseline\n readonly remoteManifest: 'forbidden'\n readonly remoteBundle: 'forbidden'\n}\n\n/** Aggregated Transport 的物理连接 generation;作用域 generation 仍由 HostScope 管理。 */\nexport interface AggregatedHostGeneration {\n readonly id: number\n readonly host: { readonly home: string }\n readonly connectedAt: number\n}\n\nexport interface AggregatedHostRpcRequest {\n readonly scope: HostScope\n readonly method: string\n readonly payload?: unknown\n readonly signal?: AbortSignal\n}\n\nexport interface AggregatedHostFetchRequest {\n readonly scope: HostScope\n readonly path: string\n readonly method?: string\n readonly headers?: Readonly<Record<string, string>>\n readonly body?: string\n readonly signal?: AbortSignal\n}\n\nexport interface AggregatedHostStreamRequest {\n readonly scope: HostScope\n readonly method: string\n readonly payload?: unknown\n readonly signal?: AbortSignal\n}\n\n/** Client 侧只提交自己的 Socket;目标连接和 token 由 Host 侧代理服务持有。 */\nexport interface AggregatedHostWebSocketClient {\n readonly readyState: number\n send(data: string): void\n close(code?: number, reason?: string): void\n on(event: 'message' | 'close' | 'error', listener: (...args: any[]) => void): void\n}\n\n/** Aggregated Host 的内部稳定 Transport;不替换普通插件 ctx.connection。 */\nexport interface AggregatedHostTransport {\n readonly kind: 'aggregated-host'\n readonly localPlugin: AggregatedHostLocalPluginBaseline\n getCapabilities(): readonly AggregatedHostCapabilitySummary[]\n rpc<TResponse = unknown>(request: AggregatedHostRpcRequest): Promise<TResponse>\n fetch(request: AggregatedHostFetchRequest): Promise<Response>\n openStream<TChunk = unknown>(request: AggregatedHostStreamRequest): AsyncIterable<TChunk>\n openWebSocket(client: AggregatedHostWebSocketClient, scope: HostScope): Promise<() => void>\n getGeneration(): AggregatedHostGeneration | undefined\n onGenerationChange(listener: (generation: AggregatedHostGeneration | undefined) => void): () => void\n reconnect(signal?: AbortSignal): Promise<void>\n readManifest(): AggregatedHostManifestBoundary\n loadBundle(url: string): Promise<void>\n close(): Promise<void>\n}\n\n/**\n * 聚合 Host 对外暴露的资源命名空间。\n *\n * 远端 Host 的 workspace/session id 只在各自 Host 内唯一,不能直接交给\n * 本地 DSH Store。聚合层使用版本化、可逆的虚拟 ID,避免不同 Host 的同名\n * 资源碰撞,同时保留真实 ID 供路由层转发。\n */\nexport type VirtualWorkspaceId = string\nexport type VirtualSessionId = string\n\nexport interface VirtualWorkspaceRef {\n readonly virtualWorkspaceId: VirtualWorkspaceId\n readonly hostId: string\n readonly targetHostId: string | null\n readonly workspaceId: string\n}\n\nexport interface VirtualSessionRef {\n readonly virtualSessionId: VirtualSessionId\n readonly hostId: string\n readonly targetHostId: string | null\n readonly workspaceId: string\n readonly sessionId: string\n}\n\n/** 混合 Workspace 顺序的持久化内容,只保存虚拟 ID,不复制 Host 数据。 */\nexport interface AggregateWorkspaceOrder {\n readonly version: 1\n readonly orderedWorkspaceIds: readonly VirtualWorkspaceId[]\n}\n\nexport const VIRTUAL_RESOURCE_ID_PREFIX = 'codingns:peer-host:v1'\n\nexport function createVirtualWorkspaceId(hostId: string, workspaceId: string): VirtualWorkspaceId {\n return createVirtualResourceId('workspace', hostId, workspaceId)\n}\n\nexport function createVirtualSessionId(hostId: string, sessionId: string): VirtualSessionId {\n return createVirtualResourceId('session', hostId, sessionId)\n}\n\nexport function parseVirtualWorkspaceId(value: string): VirtualWorkspaceRef | null {\n const parsed = parseVirtualResourceId(value, 'workspace')\n if (parsed === null) return null\n return { virtualWorkspaceId: value, hostId: parsed.hostId, targetHostId: parsed.hostId === 'local' ? null : parsed.hostId, workspaceId: parsed.resourceId }\n}\n\nexport function parseVirtualSessionId(value: string): { readonly hostId: string; readonly sessionId: string } | null {\n const parsed = parseVirtualResourceId(value, 'session')\n return parsed === null ? null : { hostId: parsed.hostId, sessionId: parsed.resourceId }\n}\n\nfunction createVirtualResourceId(kind: 'workspace' | 'session', hostId: string, resourceId: string): string {\n const host = requiredResourcePart(hostId, 'hostId')\n const resource = requiredResourcePart(resourceId, kind === 'workspace' ? 'workspaceId' : 'sessionId')\n return `${VIRTUAL_RESOURCE_ID_PREFIX}:${kind}:${encodeURIComponent(host)}:${encodeURIComponent(resource)}`\n}\n\nfunction parseVirtualResourceId(value: string, kind: 'workspace' | 'session'): { readonly hostId: string; readonly resourceId: string } | null {\n if (typeof value !== 'string') return null\n const prefix = `${VIRTUAL_RESOURCE_ID_PREFIX}:${kind}:`\n if (!value.startsWith(prefix)) return null\n const parts = value.slice(prefix.length).split(':')\n if (parts.length !== 2 || parts.some((part) => part === '')) return null\n try {\n const hostId = decodeURIComponent(parts[0]!)\n const resourceId = decodeURIComponent(parts[1]!)\n return hostId && resourceId ? { hostId, resourceId } : null\n } catch {\n return null\n }\n}\n\nfunction requiredResourcePart(value: string, name: string): string {\n if (typeof value !== 'string' || value.trim() === '') throw new TypeError(`${name} 不能为空`)\n return value\n}\n\nexport const PEER_HOST_ERROR_CODES = {\n NOT_FOUND: 'PEER_HOST_NOT_FOUND',\n NOT_READY: 'PEER_HOST_NOT_READY',\n SESSION_REQUIRED: 'PEER_HOST_SESSION_REQUIRED',\n PROXY_PATH_NOT_ALLOWED: 'PEER_HOST_PROXY_PATH_NOT_ALLOWED',\n PROXY_ACCESS_DENIED: 'PEER_HOST_PROXY_ACCESS_DENIED',\n SCOPE_MISMATCH: 'PEER_HOST_SCOPE_MISMATCH',\n PROXY_UNREACHABLE: 'PEER_HOST_PROXY_UNREACHABLE',\n RESPONSE_INVALID: 'PEER_HOST_RESPONSE_INVALID',\n TOOL_UNSUPPORTED: 'PEER_HOST_TOOL_UNSUPPORTED',\n INVALID_ROUTE: 'PEER_HOST_INVALID_ROUTE',\n DUPLICATE: 'PEER_HOST_DUPLICATE',\n PLUGIN_MISSING: 'PEER_HOST_PLUGIN_MISSING',\n VERSION_MISMATCH: 'PEER_HOST_VERSION_MISMATCH',\n IDENTITY_CHANGED: 'PEER_HOST_IDENTITY_CHANGED',\n UNREACHABLE: 'PEER_HOST_UNREACHABLE',\n RELAY_UNAVAILABLE: 'PEER_HOST_RELAY_UNAVAILABLE',\n AGGREGATE_UNAVAILABLE: 'PEER_HOST_AGGREGATE_UNAVAILABLE',\n STALE_GENERATION: 'PEER_HOST_STALE_GENERATION',\n AGGREGATED_TRANSPORT_UNSUPPORTED: 'PEER_HOST_AGGREGATED_TRANSPORT_UNSUPPORTED',\n AGGREGATED_MANIFEST_FORBIDDEN: 'PEER_HOST_AGGREGATED_MANIFEST_FORBIDDEN',\n AGGREGATED_BUNDLE_FORBIDDEN: 'PEER_HOST_AGGREGATED_BUNDLE_FORBIDDEN',\n} as const\n\nexport type PeerHostErrorCode = typeof PEER_HOST_ERROR_CODES[keyof typeof PEER_HOST_ERROR_CODES]\n\n/** 可安全返回 Client 的结构化错误,不携带凭据、完整 URL 或内容数据。 */\nexport interface PeerHostErrorShape {\n readonly code: PeerHostErrorCode\n readonly peerHostId?: string\n readonly message: string\n}\n\n/** 作用域管理器仍使用的兼容引用;新跨 Host 代码应优先使用 HostScope。 */\nexport interface ResourceScopeRef {\n hostId: string\n workspaceId: string\n targetHostId: string | null\n scopeGeneration: number\n sessionId?: string | null\n}\n\nexport interface ResourceScopeInput {\n hostId: string\n workspaceId: string\n targetHostId: string | null\n sessionId?: string | null\n}\n\nexport type ResourceScopeSnapshot = Readonly<ResourceScopeRef>\n\n/** 作用域拥有的清理函数。清理函数必须可重复调用而不会产生副作用。 */\nexport type ResourceScopeDisposer = () => void | Promise<void>\n\n/** 作用域已经失效时统一抛出的错误。 */\nexport class ResourceScopeStaleError extends Error {\n readonly code = 'RESOURCE_SCOPE_STALE' as const\n\n constructor(message = 'Resource scope is stale') {\n super(message)\n this.name = 'ResourceScopeStaleError'\n }\n}\n","import * as primitives from '@deepseek-ai/dsh-client-ui-primitives'\nimport { createElement, type ComponentType } from 'react'\n\n/** 富文本菜单沿用宿主的键盘导航、焦点归还和外部点击关闭行为。 */\nexport { Menu as DshMenu } from '@deepseek-ai/dsh-client-ui-primitives'\n\ntype IconComponent = ComponentType<{ readonly size?: number; readonly className?: string }>\ntype ShortcutKeysComponent = ComponentType<{ readonly keys: readonly string[] }>\ntype PrimitiveExports = typeof primitives & {\n readonly IconPlusOutlineRegular?: IconComponent\n readonly IconPlusOutlineMedium?: IconComponent\n readonly IconChevronDownOutlineRegular?: IconComponent\n readonly IconChevronDownOutlineMedium?: IconComponent\n readonly IconChevronUpOutlineRegular?: IconComponent\n readonly IconChevronUpOutlineMedium?: IconComponent\n readonly IconChevronLeftOutlineRegular?: IconComponent\n readonly IconChevronLeftOutlineMedium?: IconComponent\n readonly IconChevronRightOutlineRegular?: IconComponent\n readonly IconChevronRightOutlineMedium?: IconComponent\n readonly IconRefreshOutlineRegular?: IconComponent\n readonly IconRefreshOutlineMedium?: IconComponent\n readonly IconSlidersTwoOutlineRegular?: IconComponent\n readonly IconSlidersTwoOutlineMedium?: IconComponent\n readonly IconSettingsOutlineRegular?: IconComponent\n readonly IconSettingsOutlineMedium?: IconComponent\n readonly IconPlusOutline16?: IconComponent\n readonly IconChevronDownOutline14?: IconComponent\n readonly IconDataOutlineRegular?: IconComponent\n readonly IconDataOutlineMedium?: IconComponent\n readonly IconDataOutline16?: IconComponent\n readonly IconShareOutlineRegular?: IconComponent\n readonly IconShareOutlineMedium?: IconComponent\n readonly IconSendOutlineRegular?: IconComponent\n readonly IconSendOutlineMedium?: IconComponent\n readonly IconCloseOutlineRegular?: IconComponent\n readonly IconCloseOutlineMedium?: IconComponent\n readonly IconChatOutlineRegular?: IconComponent\n readonly IconChatOutlineMedium?: IconComponent\n readonly IconStopFillRegular?: IconComponent\n readonly IconStopFillMedium?: IconComponent\n readonly IconPhoneOutlineRegular?: IconComponent\n readonly IconPhoneOutlineMedium?: IconComponent\n readonly ShortcutKeys?: ShortcutKeysComponent\n}\n\nconst unavailableIcon: IconComponent = () => null\nconst fallbackShortcutKeys: ShortcutKeysComponent = ({ keys }) => createElement('span', undefined, keys.join(' + '))\n\nexport type AssistantControlIcon = 'add' | 'phone' | 'settings' | 'close' | 'send' | 'stop' | 'chat' | 'clear'\n/** 助理控件优先共用宿主图标,缺少的电话与普通对话采用相同 16px 画布和细描边。 */\nexport function resolveAssistantControlIcon(name: AssistantControlIcon): IconComponent {\n const value = primitives as PrimitiveExports\n switch (name) {\n case 'add': return resolvePlusIcon()\n case 'clear': return resolveRefreshIcon()\n case 'settings': return value.IconSettingsOutlineRegular ?? value.IconSettingsOutlineMedium ?? resolveToolIcon()\n case 'close': return value.IconCloseOutlineRegular ?? value.IconCloseOutlineMedium ?? unavailableIcon\n case 'chat': return value.IconChatOutlineRegular ?? value.IconChatOutlineMedium ?? AssistantChatIcon\n case 'send': return value.IconSendOutlineRegular ?? value.IconSendOutlineMedium ?? unavailableIcon\n case 'stop': return value.IconStopFillRegular ?? value.IconStopFillMedium ?? unavailableIcon\n case 'phone': return value.IconPhoneOutlineRegular ?? value.IconPhoneOutlineMedium ?? AssistantPhoneIcon\n }\n}\n/** 沿用 DSH 新对话的气泡轮廓,内部使用三点表示进入已有对话。 */\nfunction AssistantChatIcon({ size = 20, className }: { readonly size?: number; readonly className?: string }) {\n return createElement('svg', { width: size, height: size, className, viewBox: '0 0 16 16', fill: 'none', 'aria-hidden': true, focusable: false,\n stroke: 'currentColor', strokeWidth: 1, strokeLinecap: 'round', strokeLinejoin: 'round' },\n createElement('path', { d: 'M2.37091 11.2501C1.58745 9.89288 1.32067 8.29835 1.61969 6.76006C1.91872 5.22177 2.76342 3.8433 3.99826 2.87846C5.2331 1.91362 6.77494 1.42737 8.33988 1.50925C9.90482 1.59113 11.3875 2.23562 12.5149 3.32406C13.6425 4.41269 14.3387 5.87206 14.4754 7.4334C14.612 8.99474 14.18 10.5529 13.2587 11.8209C12.3375 13.0888 10.9891 13.9813 9.46194 14.3337C8.18691 14.628 6.85895 14.5294 5.64989 14.0605C5.1712 13.8748 4.76962 13.4932 4.26534 13.3967C3.67413 13.2835 2.95257 13.5598 2.03794 14.3337' }),\n ...[5.25, 8, 10.75].map((cx) => createElement('circle', { key: cx, cx, cy: 8, r: 0.65, fill: 'currentColor', stroke: 'none' })))\n}\nfunction AssistantPhoneIcon({ size = 20, className }: { readonly size?: number; readonly className?: string }) {\n return createElement('svg', { width: size, height: size, className, viewBox: '0 0 16 16', fill: 'none', 'aria-hidden': true,\n stroke: 'currentColor', strokeWidth: 1, strokeLinecap: 'round', strokeLinejoin: 'round' },\n createElement('path', { d: 'M3.1 1.8h2l1.1 3.1-1.4 1.4a10.5 10.5 0 0 0 4.9 4.9l1.4-1.4 3.1 1.1v2a1.4 1.4 0 0 1-1.6 1.4A13 13 0 0 1 1.7 3.4a1.4 1.4 0 0 1 1.4-1.6Z' }))\n}\n\n/**\n * 图标导出兼容层。0.1.7 可能改名为 Regular/Medium,运行时优先使用新导出,\n * 旧导出仍作为回退;业务组件不再直接判断 DSH 版本。\n */\nexport function resolvePlusIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconPlusOutlineRegular ?? value.IconPlusOutlineMedium ?? value.IconPlusOutline16 ?? unavailableIcon\n}\n\nexport function resolveChevronDownIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconChevronDownOutlineRegular ?? value.IconChevronDownOutlineMedium ?? value.IconChevronDownOutline14 ?? unavailableIcon\n}\n\n/** 终端工具栏使用的原生刷新图标。 */\nexport function resolveRefreshIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconRefreshOutlineRegular ?? value.IconRefreshOutlineMedium ?? unavailableIcon\n}\n\n/** 终端工具栏入口使用的原生工具图标。 */\nexport function resolveToolIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconSlidersTwoOutlineRegular\n ?? value.IconSlidersTwoOutlineMedium\n ?? value.IconSettingsOutlineRegular\n ?? value.IconSettingsOutlineMedium\n ?? unavailableIcon\n}\n\n/** 终端快捷操作的方向图标。 */\nexport function resolveTerminalArrowIcon(direction: 'up' | 'down' | 'left' | 'right'): IconComponent {\n const value = primitives as PrimitiveExports\n if (direction === 'up') return value.IconChevronUpOutlineRegular ?? value.IconChevronUpOutlineMedium ?? unavailableIcon\n if (direction === 'down') return value.IconChevronDownOutlineRegular ?? value.IconChevronDownOutlineMedium ?? unavailableIcon\n if (direction === 'left') return value.IconChevronLeftOutlineRegular ?? value.IconChevronLeftOutlineMedium ?? unavailableIcon\n return value.IconChevronRightOutlineRegular ?? value.IconChevronRightOutlineMedium ?? unavailableIcon\n}\n\n/** 终端按键标签使用 DSH 原生 ShortcutKeys,旧版本缺失时退回纯文本。 */\nexport function resolveShortcutKeys(): ShortcutKeysComponent {\n const value = primitives as PrimitiveExports\n return value.ShortcutKeys ?? fallbackShortcutKeys\n}\n\n/**\n * 模型图标:DSH 原生模型选择器在紧凑状态显示的 data 图标(0.1.7 起为 Regular/Medium,\n * 0.1.6 为 16 后缀),插件模型选择器收起时与之保持一致。\n */\nexport function resolveDataIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconDataOutlineRegular ?? value.IconDataOutlineMedium ?? value.IconDataOutline16 ?? unavailableIcon\n}\n\n/**\n * `/委派` 菜单行图标:优先使用共享(send/share)字形,缺失时回退到插件通用的\n * data 图标,保证旧版 DSH 仍能渲染出一行可识别的委派入口。\n */\nexport function resolveDelegateIcon(): IconComponent {\n const value = primitives as PrimitiveExports\n return value.IconShareOutlineRegular\n ?? value.IconShareOutlineMedium\n ?? value.IconSendOutlineRegular\n ?? value.IconSendOutlineMedium\n ?? resolveDataIcon()\n}\n"],"mappings":"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"}
|
|
@@ -5,7 +5,221 @@ window.__ModuleLoader__.load({
|
|
|
5
5
|
var module = { exports: {} };
|
|
6
6
|
var exports = module.exports;
|
|
7
7
|
const require_rolldown_runtime = require("@jingyi0605/codingns4dsh/client.rolldown-runtime.js");
|
|
8
|
+
const require_theme = require("@jingyi0605/codingns4dsh/client.theme.js");
|
|
8
9
|
const require_manager = require("@jingyi0605/codingns4dsh/client.manager.js");
|
|
10
|
+
const require_primitives_adapter = require("@jingyi0605/codingns4dsh/client.primitives-adapter.js");
|
|
11
|
+
let react = require("react");
|
|
12
|
+
//#region src/client/settings-controls.ts
|
|
13
|
+
const settingsControlClass = {
|
|
14
|
+
switch: "codingns4dsh-settings-switch",
|
|
15
|
+
track: "codingns4dsh-settings-switch-track",
|
|
16
|
+
thumb: "codingns4dsh-settings-switch-thumb",
|
|
17
|
+
iconButton: "codingns4dsh-settings-icon-button"
|
|
18
|
+
};
|
|
19
|
+
/** 模块使用主开关,子设置使用更小、更轻的开关;保留 checkbox 的标签与键盘语义。 */
|
|
20
|
+
function SettingsSwitch(props) {
|
|
21
|
+
(0, react.useEffect)(() => retainSettingsControlStyles(), []);
|
|
22
|
+
const { variant = "setting", ...inputProps } = props;
|
|
23
|
+
const width = variant === "module" ? 36 : 28;
|
|
24
|
+
return (0, react.createElement)("span", {
|
|
25
|
+
className: settingsControlClass.switch,
|
|
26
|
+
"data-variant": variant,
|
|
27
|
+
style: {
|
|
28
|
+
position: "relative",
|
|
29
|
+
display: "inline-flex",
|
|
30
|
+
alignItems: "center",
|
|
31
|
+
flex: `0 0 ${width}px`,
|
|
32
|
+
width,
|
|
33
|
+
height: 28,
|
|
34
|
+
marginLeft: "auto"
|
|
35
|
+
}
|
|
36
|
+
}, (0, react.createElement)("input", {
|
|
37
|
+
type: "checkbox",
|
|
38
|
+
role: "switch",
|
|
39
|
+
...inputProps,
|
|
40
|
+
style: {
|
|
41
|
+
position: "absolute",
|
|
42
|
+
inset: 0,
|
|
43
|
+
width: "100%",
|
|
44
|
+
height: "100%",
|
|
45
|
+
margin: 0,
|
|
46
|
+
opacity: 0,
|
|
47
|
+
cursor: props.disabled ? "not-allowed" : "pointer",
|
|
48
|
+
zIndex: 1
|
|
49
|
+
}
|
|
50
|
+
}), (0, react.createElement)("span", {
|
|
51
|
+
className: settingsControlClass.track,
|
|
52
|
+
"aria-hidden": true
|
|
53
|
+
}, (0, react.createElement)("span", { className: settingsControlClass.thumb })));
|
|
54
|
+
}
|
|
55
|
+
/** 文案占据剩余宽度;右侧操作不收缩,长说明和窄屏都不会移动开关。 */
|
|
56
|
+
function SettingsToggleRow({ label, description, checked, disabled, onChange, actions, style }) {
|
|
57
|
+
const id = (0, react.useId)();
|
|
58
|
+
return (0, react.createElement)("div", { style: {
|
|
59
|
+
...require_theme.dshSettingsListRowStyle,
|
|
60
|
+
...style
|
|
61
|
+
} }, (0, react.createElement)("label", {
|
|
62
|
+
htmlFor: id,
|
|
63
|
+
style: {
|
|
64
|
+
flex: "1 1 auto",
|
|
65
|
+
minWidth: 0,
|
|
66
|
+
cursor: disabled ? "not-allowed" : "pointer",
|
|
67
|
+
overflowWrap: "anywhere"
|
|
68
|
+
}
|
|
69
|
+
}, (0, react.createElement)("span", { style: {
|
|
70
|
+
display: "block",
|
|
71
|
+
fontSize: require_theme.uiFontSize(13),
|
|
72
|
+
fontWeight: 500,
|
|
73
|
+
lineHeight: 1.4
|
|
74
|
+
} }, label), description === void 0 ? null : (0, react.createElement)("span", { style: {
|
|
75
|
+
display: "block",
|
|
76
|
+
marginTop: 3,
|
|
77
|
+
...require_theme.dshSettingsHelpStyle
|
|
78
|
+
} }, description)), (0, react.createElement)("span", { style: {
|
|
79
|
+
display: "inline-flex",
|
|
80
|
+
alignItems: "center",
|
|
81
|
+
gap: 10,
|
|
82
|
+
flex: "0 0 auto",
|
|
83
|
+
marginLeft: "auto"
|
|
84
|
+
} }, actions, (0, react.createElement)(SettingsSwitch, {
|
|
85
|
+
id,
|
|
86
|
+
"aria-label": label,
|
|
87
|
+
checked,
|
|
88
|
+
disabled,
|
|
89
|
+
onChange: (event) => onChange(event.currentTarget.checked)
|
|
90
|
+
})));
|
|
91
|
+
}
|
|
92
|
+
/** 图标按钮采用 DSH 的紧凑中性表面,交互态由共享样式表提供。 */
|
|
93
|
+
const settingsIconButtonStyle = {
|
|
94
|
+
display: "inline-flex",
|
|
95
|
+
alignItems: "center",
|
|
96
|
+
justifyContent: "center",
|
|
97
|
+
flex: "0 0 32px",
|
|
98
|
+
width: 32,
|
|
99
|
+
height: 32,
|
|
100
|
+
padding: 0,
|
|
101
|
+
boxSizing: "border-box",
|
|
102
|
+
border: 0,
|
|
103
|
+
borderRadius: "var(--dsw-radius-sm, 6px)",
|
|
104
|
+
color: require_theme.dshThemeColor.labelSecondary,
|
|
105
|
+
background: "transparent",
|
|
106
|
+
cursor: "pointer"
|
|
107
|
+
};
|
|
108
|
+
/** 各独立面板共享一份样式,最后一个开关卸载时释放,兼容 React 严格模式的重复挂载。 */
|
|
109
|
+
const retainedStyles = /* @__PURE__ */ new WeakMap();
|
|
110
|
+
function retainSettingsControlStyles() {
|
|
111
|
+
if (typeof document === "undefined") return () => void 0;
|
|
112
|
+
const dom = document;
|
|
113
|
+
let state = retainedStyles.get(dom);
|
|
114
|
+
if (state === void 0) {
|
|
115
|
+
const element = dom.createElement("style");
|
|
116
|
+
element.dataset.plugin = "codingns4dsh";
|
|
117
|
+
element.dataset.pluginCss = "codingns4dsh-settings-controls";
|
|
118
|
+
element.textContent = settingsControlCss;
|
|
119
|
+
dom.head.appendChild(element);
|
|
120
|
+
state = {
|
|
121
|
+
element,
|
|
122
|
+
users: 0
|
|
123
|
+
};
|
|
124
|
+
retainedStyles.set(dom, state);
|
|
125
|
+
}
|
|
126
|
+
const retained = state;
|
|
127
|
+
retained.users += 1;
|
|
128
|
+
return () => {
|
|
129
|
+
retained.users -= 1;
|
|
130
|
+
if (retained.users > 0) return;
|
|
131
|
+
retained.element.remove();
|
|
132
|
+
retainedStyles.delete(dom);
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
const settingsControlCss = `
|
|
136
|
+
.${settingsControlClass.switch}{--codingns-switch-height:16px;--codingns-switch-thumb:12px;--codingns-switch-travel:12px;--codingns-switch-active:var(--dsw-alias-button-info-fill);--codingns-switch-active-thumb:var(--dsw-static-neutral-00)}
|
|
137
|
+
.${settingsControlClass.switch}[data-variant="module"]{--codingns-switch-height:20px;--codingns-switch-thumb:16px;--codingns-switch-travel:16px;--codingns-switch-active:var(--dsw-alias-brand-primary);--codingns-switch-active-thumb:var(--dsw-alias-label-primary-foreground)}
|
|
138
|
+
.${settingsControlClass.track}{box-sizing:border-box;display:block;width:100%;height:var(--codingns-switch-height);padding:2px;border:0;border-radius:999px;corner-shape:round;background:var(--dsw-alias-border-l3);pointer-events:none;transition:background 120ms ease}
|
|
139
|
+
.${settingsControlClass.thumb}{display:block;width:var(--codingns-switch-thumb);height:var(--codingns-switch-thumb);border-radius:50%;corner-shape:round;background:var(--dsw-alias-switch-thumb);transition:transform 120ms ease,background 120ms ease}
|
|
140
|
+
.${settingsControlClass.switch}>input:checked+.${settingsControlClass.track}{background:var(--codingns-switch-active)}
|
|
141
|
+
.${settingsControlClass.switch}>input:checked+.${settingsControlClass.track}>.${settingsControlClass.thumb}{background:var(--codingns-switch-active-thumb);transform:translateX(var(--codingns-switch-travel))}
|
|
142
|
+
.${settingsControlClass.switch}>input:disabled+.${settingsControlClass.track}{opacity:.5}
|
|
143
|
+
.${settingsControlClass.switch}>input:disabled{cursor:not-allowed!important}
|
|
144
|
+
.${settingsControlClass.switch}>input:focus-visible+.${settingsControlClass.track}{outline:${require_theme.dshThemeColor.focusRing};outline-offset:3px}
|
|
145
|
+
.${settingsControlClass.iconButton}:hover:not(:disabled){color:${require_theme.dshThemeColor.labelPrimary};background:${require_theme.dshThemeColor.hoverBackground}}
|
|
146
|
+
.${settingsControlClass.iconButton}:active:not(:disabled){background:${require_theme.dshThemeColor.activeBackground}}
|
|
147
|
+
.${settingsControlClass.iconButton}:focus-visible{outline:${require_theme.dshThemeColor.focusRing};outline-offset:2px}
|
|
148
|
+
.${settingsControlClass.iconButton}:disabled{opacity:.5;cursor:not-allowed}
|
|
149
|
+
@media (prefers-reduced-motion:reduce){.${settingsControlClass.track},.${settingsControlClass.thumb}{transition:none}}
|
|
150
|
+
`;
|
|
151
|
+
//#endregion
|
|
152
|
+
//#region src/client/peer-host-color.ts
|
|
153
|
+
/**
|
|
154
|
+
* 工作区标签配色的推导与缓存。
|
|
155
|
+
*
|
|
156
|
+
* 用户在 PeerHost 管理里显式配置的颜色优先;没有配置时按 Host 名称推导一个稳定
|
|
157
|
+
* 颜色,保证同一台机器在多次刷新、多个工作区之间颜色一致——颜色本身是识别手段,
|
|
158
|
+
* 随机色会让标签失去意义。
|
|
159
|
+
*/
|
|
160
|
+
/** 无显式配色时使用的候选色板;与 PEER_HOST_COLOR_PRESETS 保持同一组观感。 */
|
|
161
|
+
const FALLBACK_PALETTE = [
|
|
162
|
+
"#1677ff",
|
|
163
|
+
"#722ed1",
|
|
164
|
+
"#13c2c2",
|
|
165
|
+
"#52c41a",
|
|
166
|
+
"#fa8c16",
|
|
167
|
+
"#eb2f96",
|
|
168
|
+
"#f5222d",
|
|
169
|
+
"#8c8c8c"
|
|
170
|
+
];
|
|
171
|
+
const derivedCache = /* @__PURE__ */ new Map();
|
|
172
|
+
/**
|
|
173
|
+
* 解析某台 Host 的工作区标签颜色。
|
|
174
|
+
*
|
|
175
|
+
* @param explicit - 用户在 PeerHost 配置里保存的颜色;非法或缺省时走推导。
|
|
176
|
+
* @param seed - 推导种子,通常用 PeerHost 名称;同一名称始终得到同一颜色。
|
|
177
|
+
* @returns `#rrggbb` 形式的小写颜色。
|
|
178
|
+
*/
|
|
179
|
+
function resolvePeerHostColor(explicit, seed) {
|
|
180
|
+
const configured = require_primitives_adapter.normalizePeerHostColor(explicit);
|
|
181
|
+
if (configured !== null) return configured;
|
|
182
|
+
const key = seed.trim() === "" ? "peer-host" : seed.trim();
|
|
183
|
+
const cached = derivedCache.get(key);
|
|
184
|
+
if (cached !== void 0) return cached;
|
|
185
|
+
const color = FALLBACK_PALETTE[hashString(key) % FALLBACK_PALETTE.length];
|
|
186
|
+
derivedCache.set(key, color);
|
|
187
|
+
return color;
|
|
188
|
+
}
|
|
189
|
+
/** FNV-1a 32 位哈希;只用于选色,不需要密码学强度。 */
|
|
190
|
+
function hashString(value) {
|
|
191
|
+
let hash = 2166136261;
|
|
192
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
193
|
+
hash ^= value.charCodeAt(index);
|
|
194
|
+
hash = Math.imul(hash, 16777619) >>> 0;
|
|
195
|
+
}
|
|
196
|
+
return hash >>> 0;
|
|
197
|
+
}
|
|
198
|
+
/** 标签胶囊的底色:与归档面板 Agent 徽标保持同一种 `color-mix` 写法。 */
|
|
199
|
+
function peerHostTagBackground(color) {
|
|
200
|
+
return `color-mix(in srgb, ${color} 16%, transparent)`;
|
|
201
|
+
}
|
|
202
|
+
/** 标签文字色;直接使用配置色,保证明暗主题下都有足够对比。 */
|
|
203
|
+
function peerHostTagForeground(color) {
|
|
204
|
+
return color;
|
|
205
|
+
}
|
|
206
|
+
/** 工作区列表与关联项目表共用的 Host 胶囊标签基础样式。 */
|
|
207
|
+
function peerHostTagStyle(color) {
|
|
208
|
+
return {
|
|
209
|
+
boxSizing: "border-box",
|
|
210
|
+
overflow: "hidden",
|
|
211
|
+
textOverflow: "ellipsis",
|
|
212
|
+
whiteSpace: "nowrap",
|
|
213
|
+
padding: "1px 6px",
|
|
214
|
+
borderRadius: "999px",
|
|
215
|
+
fontSize: "10px",
|
|
216
|
+
lineHeight: "1.5",
|
|
217
|
+
pointerEvents: "none",
|
|
218
|
+
color: peerHostTagForeground(color),
|
|
219
|
+
background: peerHostTagBackground(color)
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
//#endregion
|
|
9
223
|
//#region src/shared/voice-diagnostics.ts
|
|
10
224
|
const allowedFields = new Set(`ownerId clientId callId requestId diagnosticId epoch sequence firstSequence lastSequence
|
|
11
225
|
action state phase backend provider model code errorName status durationMs waitMs firstAudioMs firstTextMs
|
|
@@ -7255,18 +7469,54 @@ window.__ModuleLoader__.load({
|
|
|
7255
7469
|
return MossVoiceOutput;
|
|
7256
7470
|
}
|
|
7257
7471
|
});
|
|
7472
|
+
Object.defineProperty(exports, "SettingsSwitch", {
|
|
7473
|
+
enumerable: true,
|
|
7474
|
+
get: function() {
|
|
7475
|
+
return SettingsSwitch;
|
|
7476
|
+
}
|
|
7477
|
+
});
|
|
7478
|
+
Object.defineProperty(exports, "SettingsToggleRow", {
|
|
7479
|
+
enumerable: true,
|
|
7480
|
+
get: function() {
|
|
7481
|
+
return SettingsToggleRow;
|
|
7482
|
+
}
|
|
7483
|
+
});
|
|
7484
|
+
Object.defineProperty(exports, "peerHostTagStyle", {
|
|
7485
|
+
enumerable: true,
|
|
7486
|
+
get: function() {
|
|
7487
|
+
return peerHostTagStyle;
|
|
7488
|
+
}
|
|
7489
|
+
});
|
|
7258
7490
|
Object.defineProperty(exports, "require_react_dom", {
|
|
7259
7491
|
enumerable: true,
|
|
7260
7492
|
get: function() {
|
|
7261
7493
|
return require_react_dom;
|
|
7262
7494
|
}
|
|
7263
7495
|
});
|
|
7496
|
+
Object.defineProperty(exports, "resolvePeerHostColor", {
|
|
7497
|
+
enumerable: true,
|
|
7498
|
+
get: function() {
|
|
7499
|
+
return resolvePeerHostColor;
|
|
7500
|
+
}
|
|
7501
|
+
});
|
|
7264
7502
|
Object.defineProperty(exports, "sanitizeVoiceDiagnosticFields", {
|
|
7265
7503
|
enumerable: true,
|
|
7266
7504
|
get: function() {
|
|
7267
7505
|
return sanitizeVoiceDiagnosticFields;
|
|
7268
7506
|
}
|
|
7269
7507
|
});
|
|
7508
|
+
Object.defineProperty(exports, "settingsControlClass", {
|
|
7509
|
+
enumerable: true,
|
|
7510
|
+
get: function() {
|
|
7511
|
+
return settingsControlClass;
|
|
7512
|
+
}
|
|
7513
|
+
});
|
|
7514
|
+
Object.defineProperty(exports, "settingsIconButtonStyle", {
|
|
7515
|
+
enumerable: true,
|
|
7516
|
+
get: function() {
|
|
7517
|
+
return settingsIconButtonStyle;
|
|
7518
|
+
}
|
|
7519
|
+
});
|
|
7270
7520
|
Object.defineProperty(exports, "voiceDiagnosticError", {
|
|
7271
7521
|
enumerable: true,
|
|
7272
7522
|
get: function() {
|