@jingyi0605/codingns4dsh 0.1.7-rc.3 → 0.2.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +695 -0
- package/README.en.md +46 -15
- package/README.md +36 -15
- package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts +1 -1
- package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts.map +1 -0
- package/data/build/dist/bootstrap/dsh-connection-adapter.js.map +1 -0
- package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.d.ts +50 -0
- package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.d.ts.map +1 -0
- package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js +239 -0
- package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js.map +1 -0
- package/data/build/dist/bootstrap/index.d.ts +3 -1
- package/data/build/dist/bootstrap/index.d.ts.map +1 -0
- package/data/build/dist/bootstrap/index.js +1 -0
- package/data/build/dist/bootstrap/index.js.map +1 -0
- package/data/build/dist/client/account-bar.d.ts +7 -1
- package/data/build/dist/client/account-bar.d.ts.map +1 -0
- package/data/build/dist/client/account-bar.js +151 -69
- package/data/build/dist/client/account-bar.js.map +1 -0
- package/data/build/dist/client/bundle.js +8174 -2024
- package/data/build/dist/client/bundle.js.map +1 -0
- package/data/build/dist/client/cli-catalog.d.ts.map +1 -0
- package/data/build/dist/client/cli-catalog.js.map +1 -0
- package/data/build/dist/client/cli-slots.d.ts.map +1 -0
- package/data/build/dist/client/cli-slots.js +15 -4
- package/data/build/dist/client/cli-slots.js.map +1 -0
- package/data/build/dist/client/context-breakdown-dom.d.ts +53 -0
- package/data/build/dist/client/context-breakdown-dom.d.ts.map +1 -0
- package/data/build/dist/client/context-breakdown-dom.js +171 -0
- package/data/build/dist/client/context-breakdown-dom.js.map +1 -0
- package/data/build/dist/client/debug/ui.d.ts.map +1 -0
- package/data/build/dist/client/debug/ui.js +2 -1
- package/data/build/dist/client/debug/ui.js.map +1 -0
- package/data/build/dist/client/dsh-h5-bootstrap.d.ts.map +1 -0
- package/data/build/dist/client/dsh-h5-bootstrap.js +19 -6
- package/data/build/dist/client/dsh-h5-bootstrap.js.map +1 -0
- package/data/build/dist/client/dsh-runtime-version.d.ts +3 -2
- package/data/build/dist/client/dsh-runtime-version.d.ts.map +1 -0
- package/data/build/dist/client/dsh-runtime-version.js +7 -6
- package/data/build/dist/client/dsh-runtime-version.js.map +1 -0
- package/data/build/dist/client/external-tool-stream.d.ts.map +1 -0
- package/data/build/dist/client/external-tool-stream.js.map +1 -0
- package/data/build/dist/client/features/cli-adapters.d.ts.map +1 -0
- package/data/build/dist/client/features/cli-adapters.js +20 -4
- package/data/build/dist/client/features/cli-adapters.js.map +1 -0
- package/data/build/dist/client/features/debug.d.ts.map +1 -0
- package/data/build/dist/client/features/debug.js +2 -2
- package/data/build/dist/client/features/debug.js.map +1 -0
- package/data/build/dist/client/features/file-management-panel.d.ts.map +1 -0
- package/data/build/dist/client/features/file-management-panel.js.map +1 -0
- package/data/build/dist/client/features/file-management.d.ts.map +1 -0
- package/data/build/dist/client/features/file-management.js +2 -2
- package/data/build/dist/client/features/file-management.js.map +1 -0
- package/data/build/dist/client/features/index.d.ts +5 -2
- package/data/build/dist/client/features/index.d.ts.map +1 -0
- package/data/build/dist/client/features/index.js +6 -2
- package/data/build/dist/client/features/index.js.map +1 -0
- package/data/build/dist/client/features/lan-access-panel.d.ts.map +1 -0
- package/data/build/dist/client/features/lan-access-panel.js +80 -2
- package/data/build/dist/client/features/lan-access-panel.js.map +1 -0
- package/data/build/dist/client/features/lan-access-status.d.ts +40 -0
- package/data/build/dist/client/features/lan-access-status.d.ts.map +1 -0
- package/data/build/dist/client/features/lan-access-status.js +118 -0
- package/data/build/dist/client/features/lan-access-status.js.map +1 -0
- package/data/build/dist/client/features/lan-access.d.ts +4 -1
- package/data/build/dist/client/features/lan-access.d.ts.map +1 -0
- package/data/build/dist/client/features/lan-access.js +29 -4
- package/data/build/dist/client/features/lan-access.js.map +1 -0
- package/data/build/dist/client/features/login-protection-panel.d.ts.map +1 -0
- package/data/build/dist/client/features/login-protection-panel.js.map +1 -0
- package/data/build/dist/client/features/login-protection-session.d.ts.map +1 -0
- package/data/build/dist/client/features/login-protection-session.js.map +1 -0
- package/data/build/dist/client/features/login-protection.d.ts.map +1 -0
- package/data/build/dist/client/features/login-protection.js +2 -2
- package/data/build/dist/client/features/login-protection.js.map +1 -0
- package/data/build/dist/client/features/mobile-access-panel.d.ts +12 -0
- package/data/build/dist/client/features/mobile-access-panel.d.ts.map +1 -0
- package/data/build/dist/client/features/mobile-access-panel.js +259 -0
- package/data/build/dist/client/features/mobile-access-panel.js.map +1 -0
- package/data/build/dist/client/features/mobile-access.d.ts +13 -0
- package/data/build/dist/client/features/mobile-access.d.ts.map +1 -0
- package/data/build/dist/client/features/mobile-access.js +75 -0
- package/data/build/dist/client/features/mobile-access.js.map +1 -0
- package/data/build/dist/client/features/peer-host.d.ts +35 -1
- package/data/build/dist/client/features/peer-host.d.ts.map +1 -0
- package/data/build/dist/client/features/peer-host.js +495 -56
- package/data/build/dist/client/features/peer-host.js.map +1 -0
- package/data/build/dist/client/features/reverse-proxy-panel.d.ts.map +1 -0
- package/data/build/dist/client/features/reverse-proxy-panel.js +2 -1
- package/data/build/dist/client/features/reverse-proxy-panel.js.map +1 -0
- package/data/build/dist/client/features/reverse-proxy.d.ts.map +1 -0
- package/data/build/dist/client/features/reverse-proxy.js +2 -2
- package/data/build/dist/client/features/reverse-proxy.js.map +1 -0
- package/data/build/dist/client/features/subscription-usage-panel.d.ts +15 -0
- package/data/build/dist/client/features/subscription-usage-panel.d.ts.map +1 -0
- package/data/build/dist/client/features/subscription-usage-panel.js +117 -0
- package/data/build/dist/client/features/subscription-usage-panel.js.map +1 -0
- package/data/build/dist/client/features/terminal-enhancement-panel.d.ts.map +1 -0
- package/data/build/dist/client/features/terminal-enhancement-panel.js.map +1 -0
- package/data/build/dist/client/features/terminal-enhancement.d.ts.map +1 -0
- package/data/build/dist/client/features/terminal-enhancement.js +2 -2
- package/data/build/dist/client/features/terminal-enhancement.js.map +1 -0
- package/data/build/dist/client/features/types.d.ts +12 -0
- package/data/build/dist/client/features/types.d.ts.map +1 -0
- package/data/build/dist/client/features/types.js.map +1 -0
- package/data/build/dist/client/features/workspace-session-enhancement-panel.d.ts.map +1 -0
- package/data/build/dist/client/features/workspace-session-enhancement-panel.js +27 -7
- package/data/build/dist/client/features/workspace-session-enhancement-panel.js.map +1 -0
- package/data/build/dist/client/features/workspace-session-enhancement.d.ts.map +1 -0
- package/data/build/dist/client/features/workspace-session-enhancement.js +34 -6
- package/data/build/dist/client/features/workspace-session-enhancement.js.map +1 -0
- package/data/build/dist/client/file-management-dom.d.ts +2 -0
- package/data/build/dist/client/file-management-dom.d.ts.map +1 -0
- package/data/build/dist/client/file-management-dom.js +37 -8
- package/data/build/dist/client/file-management-dom.js.map +1 -0
- package/data/build/dist/client/git-history-graph.d.ts +81 -0
- package/data/build/dist/client/git-history-graph.d.ts.map +1 -0
- package/data/build/dist/client/git-history-graph.js +195 -0
- package/data/build/dist/client/git-history-graph.js.map +1 -0
- package/data/build/dist/client/git-management.d.ts.map +1 -0
- package/data/build/dist/client/git-management.js +305 -67
- package/data/build/dist/client/git-management.js.map +1 -0
- package/data/build/dist/client/git-panel-styles.d.ts +28 -0
- package/data/build/dist/client/git-panel-styles.d.ts.map +1 -0
- package/data/build/dist/client/git-panel-styles.js +95 -0
- package/data/build/dist/client/git-panel-styles.js.map +1 -0
- package/data/build/dist/client/h5-bootstrap-entry.d.ts.map +1 -0
- package/data/build/dist/client/h5-bootstrap-entry.js.map +1 -0
- package/data/build/dist/client/host-router.d.ts.map +1 -0
- package/data/build/dist/client/host-router.js.map +1 -0
- package/data/build/dist/client/index.d.ts +6 -4
- package/data/build/dist/client/index.d.ts.map +1 -0
- package/data/build/dist/client/index.js +26 -53
- package/data/build/dist/client/index.js.map +1 -0
- package/data/build/dist/client/lan-access.d.ts.map +1 -0
- package/data/build/dist/client/lan-access.js.map +1 -0
- package/data/build/dist/client/locale.d.ts.map +1 -0
- package/data/build/dist/client/locale.js +170 -12
- package/data/build/dist/client/locale.js.map +1 -0
- package/data/build/dist/client/mobile-settings-modal-dom.d.ts +49 -0
- package/data/build/dist/client/mobile-settings-modal-dom.d.ts.map +1 -0
- package/data/build/dist/client/mobile-settings-modal-dom.js +152 -0
- package/data/build/dist/client/mobile-settings-modal-dom.js.map +1 -0
- package/data/build/dist/client/mobile-sidebar-gestures.d.ts +97 -0
- package/data/build/dist/client/mobile-sidebar-gestures.d.ts.map +1 -0
- package/data/build/dist/client/mobile-sidebar-gestures.js +316 -0
- package/data/build/dist/client/mobile-sidebar-gestures.js.map +1 -0
- package/data/build/dist/client/mobile-sidebar-logo.d.ts +18 -0
- package/data/build/dist/client/mobile-sidebar-logo.d.ts.map +1 -0
- package/data/build/dist/client/mobile-sidebar-logo.js +15 -0
- package/data/build/dist/client/mobile-sidebar-logo.js.map +1 -0
- package/data/build/dist/client/mobile-sidebar-rail-dom.d.ts +106 -0
- package/data/build/dist/client/mobile-sidebar-rail-dom.d.ts.map +1 -0
- package/data/build/dist/client/mobile-sidebar-rail-dom.js +444 -0
- package/data/build/dist/client/mobile-sidebar-rail-dom.js.map +1 -0
- package/data/build/dist/client/mobile-vibration.d.ts +16 -0
- package/data/build/dist/client/mobile-vibration.d.ts.map +1 -0
- package/data/build/dist/client/mobile-vibration.js +20 -0
- package/data/build/dist/client/mobile-vibration.js.map +1 -0
- package/data/build/dist/client/native-workspace-store.d.ts +29 -0
- package/data/build/dist/client/native-workspace-store.d.ts.map +1 -0
- package/data/build/dist/client/native-workspace-store.js +64 -0
- package/data/build/dist/client/native-workspace-store.js.map +1 -0
- package/data/build/dist/client/peer-host-aggregate-refresh.d.ts +13 -0
- package/data/build/dist/client/peer-host-aggregate-refresh.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-aggregate-refresh.js +14 -0
- package/data/build/dist/client/peer-host-aggregate-refresh.js.map +1 -0
- package/data/build/dist/client/peer-host-color.d.ts +13 -0
- package/data/build/dist/client/peer-host-color.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-color.js +57 -0
- package/data/build/dist/client/peer-host-color.js.map +1 -0
- package/data/build/dist/client/peer-host-connection-button.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-connection-button.js +6 -3
- package/data/build/dist/client/peer-host-connection-button.js.map +1 -0
- package/data/build/dist/client/peer-host-management-api.d.ts +34 -0
- package/data/build/dist/client/peer-host-management-api.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-management-api.js +12 -0
- package/data/build/dist/client/peer-host-management-api.js.map +1 -0
- package/data/build/dist/client/peer-host-management-panel.d.ts +1 -1
- package/data/build/dist/client/peer-host-management-panel.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-management-panel.js +521 -86
- package/data/build/dist/client/peer-host-management-panel.js.map +1 -0
- package/data/build/dist/client/peer-host-native-projection.d.ts +46 -0
- package/data/build/dist/client/peer-host-native-projection.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-native-projection.js +137 -0
- package/data/build/dist/client/peer-host-native-projection.js.map +1 -0
- package/data/build/dist/client/peer-host-native-store-projection.d.ts +21 -0
- package/data/build/dist/client/peer-host-native-store-projection.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-native-store-projection.js +114 -0
- package/data/build/dist/client/peer-host-native-store-projection.js.map +1 -0
- package/data/build/dist/client/peer-host-scoped-client.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-scoped-client.js.map +1 -0
- package/data/build/dist/client/peer-host-session-controller.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-session-controller.js.map +1 -0
- package/data/build/dist/client/peer-host-workspace-tab.d.ts +44 -0
- package/data/build/dist/client/peer-host-workspace-tab.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-workspace-tab.js +472 -0
- package/data/build/dist/client/peer-host-workspace-tab.js.map +1 -0
- package/data/build/dist/client/peer-host-workspace-tag.d.ts +47 -0
- package/data/build/dist/client/peer-host-workspace-tag.d.ts.map +1 -0
- package/data/build/dist/client/peer-host-workspace-tag.js +207 -0
- package/data/build/dist/client/peer-host-workspace-tag.js.map +1 -0
- package/data/build/dist/client/popup-dismiss.d.ts +48 -0
- package/data/build/dist/client/popup-dismiss.d.ts.map +1 -0
- package/data/build/dist/client/popup-dismiss.js +93 -0
- package/data/build/dist/client/popup-dismiss.js.map +1 -0
- package/data/build/dist/client/provider-icon-assets.d.ts.map +1 -0
- package/data/build/dist/client/provider-icon-assets.js.map +1 -0
- package/data/build/dist/client/provider-icons.d.ts +10 -1
- package/data/build/dist/client/provider-icons.d.ts.map +1 -0
- package/data/build/dist/client/provider-icons.js +19 -12
- package/data/build/dist/client/provider-icons.js.map +1 -0
- package/data/build/dist/client/pwa-install-prompt.d.ts +73 -0
- package/data/build/dist/client/pwa-install-prompt.d.ts.map +1 -0
- package/data/build/dist/client/pwa-install-prompt.js +178 -0
- package/data/build/dist/client/pwa-install-prompt.js.map +1 -0
- package/data/build/dist/client/pwa-notifications.d.ts +105 -0
- package/data/build/dist/client/pwa-notifications.d.ts.map +1 -0
- package/data/build/dist/client/pwa-notifications.js +192 -0
- package/data/build/dist/client/pwa-notifications.js.map +1 -0
- package/data/build/dist/client/quick-phrase-layout.d.ts.map +1 -0
- package/data/build/dist/client/quick-phrase-layout.js.map +1 -0
- package/data/build/dist/client/quick-phrase-slot.d.ts.map +1 -0
- package/data/build/dist/client/quick-phrase-slot.js.map +1 -0
- package/data/build/dist/client/remote-web-context.d.ts.map +1 -0
- package/data/build/dist/client/remote-web-context.js +26 -2
- package/data/build/dist/client/remote-web-context.js.map +1 -0
- package/data/build/dist/client/session-adapter-cache.d.ts.map +1 -0
- package/data/build/dist/client/session-adapter-cache.js.map +1 -0
- package/data/build/dist/client/session-changed-files-view.d.ts.map +1 -0
- package/data/build/dist/client/session-changed-files-view.js.map +1 -0
- package/data/build/dist/client/settings-anchor.d.ts +67 -0
- package/data/build/dist/client/settings-anchor.d.ts.map +1 -0
- package/data/build/dist/client/settings-anchor.js +64 -0
- package/data/build/dist/client/settings-anchor.js.map +1 -0
- package/data/build/dist/client/settings-bridge.d.ts +20 -5
- package/data/build/dist/client/settings-bridge.d.ts.map +1 -0
- package/data/build/dist/client/settings-bridge.js +30 -7
- package/data/build/dist/client/settings-bridge.js.map +1 -0
- package/data/build/dist/client/settings-section.d.ts.map +1 -0
- package/data/build/dist/client/settings-section.js +16 -2
- package/data/build/dist/client/settings-section.js.map +1 -0
- package/data/build/dist/client/subscription-slot.d.ts +3 -1
- package/data/build/dist/client/subscription-slot.d.ts.map +1 -0
- package/data/build/dist/client/subscription-slot.js +33 -25
- package/data/build/dist/client/subscription-slot.js.map +1 -0
- package/data/build/dist/client/terminal/index.d.ts.map +1 -0
- package/data/build/dist/client/terminal/index.js.map +1 -0
- package/data/build/dist/client/terminal/model.d.ts.map +1 -0
- package/data/build/dist/client/terminal/model.js.map +1 -0
- package/data/build/dist/client/terminal/recovery.d.ts.map +1 -0
- package/data/build/dist/client/terminal/recovery.js.map +1 -0
- package/data/build/dist/client/terminal/styles.d.ts.map +1 -0
- package/data/build/dist/client/terminal/styles.js.map +1 -0
- package/data/build/dist/client/terminal/ui.d.ts.map +1 -0
- package/data/build/dist/client/terminal/ui.js +1 -1
- package/data/build/dist/client/terminal/ui.js.map +1 -0
- package/data/build/dist/client/terminal/xterm-view.d.ts.map +1 -0
- package/data/build/dist/client/terminal/xterm-view.js +1 -1
- package/data/build/dist/client/terminal/xterm-view.js.map +1 -0
- package/data/build/dist/client/theme.d.ts +17 -5
- package/data/build/dist/client/theme.d.ts.map +1 -0
- package/data/build/dist/client/theme.js +35 -13
- package/data/build/dist/client/theme.js.map +1 -0
- package/data/build/dist/client/workspace-session-archive-dom.d.ts +14 -0
- package/data/build/dist/client/workspace-session-archive-dom.d.ts.map +1 -0
- package/data/build/dist/client/workspace-session-archive-dom.js +70 -11
- package/data/build/dist/client/workspace-session-archive-dom.js.map +1 -0
- package/data/build/dist/client/workspace-session-fiber.d.ts.map +1 -0
- package/data/build/dist/client/workspace-session-fiber.js.map +1 -0
- package/data/build/dist/client/workspace-session-logo-dom.d.ts.map +1 -0
- package/data/build/dist/client/workspace-session-logo-dom.js.map +1 -0
- package/data/build/dist/client/workspace-session-rightbar-dom.d.ts.map +1 -0
- package/data/build/dist/client/workspace-session-rightbar-dom.js.map +1 -0
- package/data/build/dist/client/workspace-session-visibility-dom.d.ts.map +1 -0
- package/data/build/dist/client/workspace-session-visibility-dom.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/config-forms-adapter.d.ts +10 -0
- package/data/build/dist/dsh-capabilities/client/config-forms-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/config-forms-adapter.js +22 -0
- package/data/build/dist/dsh-capabilities/client/config-forms-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/conversation-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/conversation-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/locale-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/locale-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts +5 -2
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.js +3 -2
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/settings-scope-adapter.d.ts +2 -2
- package/data/build/dist/dsh-capabilities/client/settings-scope-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/settings-scope-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/theme-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/theme-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/typert-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/typert-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/config-forms-adapter.d.ts +22 -1
- package/data/build/dist/dsh-capabilities/host/config-forms-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/config-forms-adapter.js +29 -3
- package/data/build/dist/dsh-capabilities/host/config-forms-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/connection-rpc-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/connection-rpc-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/settings-scope-adapter.d.ts +2 -2
- package/data/build/dist/dsh-capabilities/host/settings-scope-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/settings-scope-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/typert-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/typert-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/index.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/index.js.map +1 -0
- package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/matrix.js +44 -1
- package/data/build/dist/dsh-capabilities/matrix.js.map +1 -0
- package/data/build/dist/dsh-capabilities/registry.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/registry.js +6 -2
- package/data/build/dist/dsh-capabilities/registry.js.map +1 -0
- package/data/build/dist/dsh-capabilities/routes.d.ts +8 -1
- package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/routes.js +260 -7
- package/data/build/dist/dsh-capabilities/routes.js.map +1 -0
- package/data/build/dist/dsh-capabilities/settings-store.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/settings-store.js.map +1 -0
- package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
- package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/types.js.map +1 -0
- package/data/build/dist/features/host-router.d.ts.map +1 -0
- package/data/build/dist/features/host-router.js.map +1 -0
- package/data/build/dist/features/index.d.ts.map +1 -0
- package/data/build/dist/features/index.js.map +1 -0
- package/data/build/dist/features/registry.d.ts +7 -0
- package/data/build/dist/features/registry.d.ts.map +1 -0
- package/data/build/dist/features/registry.js +20 -2
- package/data/build/dist/features/registry.js.map +1 -0
- package/data/build/dist/features/resource-scope/index.d.ts.map +1 -0
- package/data/build/dist/features/resource-scope/index.js.map +1 -0
- package/data/build/dist/host/auth-session.d.ts.map +1 -0
- package/data/build/dist/host/auth-session.js.map +1 -0
- package/data/build/dist/host/cli-adapters/attachment-utils.d.ts +14 -0
- package/data/build/dist/host/cli-adapters/attachment-utils.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/attachment-utils.js +78 -0
- package/data/build/dist/host/cli-adapters/attachment-utils.js.map +1 -0
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/claude-driver.js +5 -2
- package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/claude-model-options.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/claude-model-options.js.map +1 -0
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/codex-driver.js +248 -45
- package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/command-code-driver.d.ts +24 -2
- package/data/build/dist/host/cli-adapters/command-code-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/command-code-driver.js +250 -30
- package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/command-code-subscription.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/command-code-subscription.js.map +1 -0
- package/data/build/dist/host/cli-adapters/driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -0
- package/data/build/dist/host/cli-adapters/dsh-tool-history.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/dsh-tool-history.js +49 -1
- package/data/build/dist/host/cli-adapters/dsh-tool-history.js.map +1 -0
- package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/feature.js +176 -7
- package/data/build/dist/host/cli-adapters/feature.js.map +1 -0
- package/data/build/dist/host/cli-adapters/gemini-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/gemini-driver.js +6 -3
- package/data/build/dist/host/cli-adapters/gemini-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/grok-driver.js +3 -2
- package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/http-sse-client.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/http-sse-client.js.map +1 -0
- package/data/build/dist/host/cli-adapters/interaction-events.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/interaction-events.js.map +1 -0
- package/data/build/dist/host/cli-adapters/json-rpc-process.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/json-rpc-process.js.map +1 -0
- package/data/build/dist/host/cli-adapters/kimi-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/kimi-driver.js +8 -3
- package/data/build/dist/host/cli-adapters/kimi-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.js.map +1 -0
- package/data/build/dist/host/cli-adapters/legacy-session-settings.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/legacy-session-settings.js.map +1 -0
- package/data/build/dist/host/cli-adapters/model-catalog.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/model-catalog.js.map +1 -0
- package/data/build/dist/host/cli-adapters/native-team-proxy.d.ts +36 -0
- package/data/build/dist/host/cli-adapters/native-team-proxy.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/native-team-proxy.js +108 -0
- package/data/build/dist/host/cli-adapters/native-team-proxy.js.map +1 -0
- package/data/build/dist/host/cli-adapters/official-provider-subscription.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/official-provider-subscription.js.map +1 -0
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/opencode-driver.js +7 -1
- package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/pi-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/pi-driver.js +7 -2
- package/data/build/dist/host/cli-adapters/pi-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/process-utils.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/process-utils.js.map +1 -0
- package/data/build/dist/host/cli-adapters/provider-registry.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/provider-registry.js.map +1 -0
- package/data/build/dist/host/cli-adapters/provider-subscription.d.ts +35 -0
- package/data/build/dist/host/cli-adapters/provider-subscription.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/provider-subscription.js +405 -5
- package/data/build/dist/host/cli-adapters/provider-subscription.js.map +1 -0
- package/data/build/dist/host/cli-adapters/registry.d.ts +9 -3
- package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/registry.js +30 -0
- package/data/build/dist/host/cli-adapters/registry.js.map +1 -0
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.js.map +1 -0
- package/data/build/dist/host/cli-adapters/session-probe.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/session-probe.js.map +1 -0
- package/data/build/dist/host/cli-adapters/session-store.d.ts +8 -2
- package/data/build/dist/host/cli-adapters/session-store.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/session-store.js +19 -0
- package/data/build/dist/host/cli-adapters/session-store.js.map +1 -0
- package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/standard-stream-driver.js.map +1 -0
- package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/stream-normalizer.js.map +1 -0
- package/data/build/dist/host/cli-adapters/tool-observation.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/tool-observation.js.map +1 -0
- package/data/build/dist/host/control-api-client.d.ts.map +1 -0
- package/data/build/dist/host/control-api-client.js.map +1 -0
- package/data/build/dist/host/credential-store.d.ts.map +1 -0
- package/data/build/dist/host/credential-store.js.map +1 -0
- package/data/build/dist/host/debug.d.ts.map +1 -0
- package/data/build/dist/host/debug.js.map +1 -0
- package/data/build/dist/host/dsh-device-runtime.d.ts.map +1 -0
- package/data/build/dist/host/dsh-device-runtime.js.map +1 -0
- package/data/build/dist/host/dsh-gateway-feature.d.ts.map +1 -0
- package/data/build/dist/host/dsh-gateway-feature.js.map +1 -0
- package/data/build/dist/host/dsh-runtime-version.d.ts.map +1 -0
- package/data/build/dist/host/dsh-runtime-version.js.map +1 -0
- package/data/build/dist/host/features/auth.d.ts.map +1 -0
- package/data/build/dist/host/features/auth.js.map +1 -0
- package/data/build/dist/host/features/debug.d.ts.map +1 -0
- package/data/build/dist/host/features/debug.js.map +1 -0
- package/data/build/dist/host/features/file-management.d.ts.map +1 -0
- package/data/build/dist/host/features/file-management.js.map +1 -0
- package/data/build/dist/host/features/git-management.d.ts.map +1 -0
- package/data/build/dist/host/features/git-management.js +133 -23
- package/data/build/dist/host/features/git-management.js.map +1 -0
- package/data/build/dist/host/features/host-status.d.ts.map +1 -0
- package/data/build/dist/host/features/host-status.js.map +1 -0
- package/data/build/dist/host/features/index.d.ts.map +1 -0
- package/data/build/dist/host/features/index.js.map +1 -0
- package/data/build/dist/host/features/lan-access-dsh.d.ts.map +1 -0
- package/data/build/dist/host/features/lan-access-dsh.js +30 -1
- package/data/build/dist/host/features/lan-access-dsh.js.map +1 -0
- package/data/build/dist/host/features/peer-host.d.ts.map +1 -0
- package/data/build/dist/host/features/peer-host.js +340 -20
- package/data/build/dist/host/features/peer-host.js.map +1 -0
- package/data/build/dist/host/features/terminal-process.d.ts.map +1 -0
- package/data/build/dist/host/features/terminal-process.js.map +1 -0
- package/data/build/dist/host/features/terminal-status.d.ts.map +1 -0
- package/data/build/dist/host/features/terminal-status.js.map +1 -0
- package/data/build/dist/host/features/types.d.ts +9 -3
- package/data/build/dist/host/features/types.d.ts.map +1 -0
- package/data/build/dist/host/features/types.js.map +1 -0
- package/data/build/dist/host/host-router.d.ts.map +1 -0
- package/data/build/dist/host/host-router.js.map +1 -0
- package/data/build/dist/host/index-injection.d.ts +27 -5
- package/data/build/dist/host/index-injection.d.ts.map +1 -0
- package/data/build/dist/host/index-injection.js +77 -11
- package/data/build/dist/host/index-injection.js.map +1 -0
- package/data/build/dist/host/index.d.ts +8 -2
- package/data/build/dist/host/index.d.ts.map +1 -0
- package/data/build/dist/host/index.js +54 -7
- package/data/build/dist/host/index.js.map +1 -0
- package/data/build/dist/host/lan-access-dsh.d.ts +88 -3
- package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -0
- package/data/build/dist/host/lan-access-dsh.js +349 -14
- package/data/build/dist/host/lan-access-dsh.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/aggregated-host-transport.d.ts +146 -0
- package/data/build/dist/host/modules/peer-host/aggregated-host-transport.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/aggregated-host-transport.js +322 -0
- package/data/build/dist/host/modules/peer-host/aggregated-host-transport.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/dsh-native-summary-source.d.ts +8 -0
- package/data/build/dist/host/modules/peer-host/dsh-native-summary-source.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/dsh-native-summary-source.js +120 -0
- package/data/build/dist/host/modules/peer-host/dsh-native-summary-source.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.d.ts +22 -0
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.js +24 -3
- package/data/build/dist/host/modules/peer-host/host-api-proxy-service.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/host-ws-connector.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/host-ws-connector.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/host-ws-proxy-service.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/host-ws-proxy-service.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.d.ts +9 -0
- package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.js +26 -12
- package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-diagnostics.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-diagnostics.js +3 -0
- package/data/build/dist/host/modules/peer-host/peer-host-diagnostics.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.d.ts +2 -0
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.js +6 -0
- package/data/build/dist/host/modules/peer-host/peer-host-handshake.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.d.ts +17 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js +52 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.d.ts +25 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.js +184 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-transport.d.ts +22 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-transport.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-transport.js +111 -0
- package/data/build/dist/host/modules/peer-host/peer-host-native-transport.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-relay.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-relay.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.d.ts +53 -0
- package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js +153 -0
- package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-session.d.ts +20 -1
- package/data/build/dist/host/modules/peer-host/peer-host-session.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-session.js +118 -37
- package/data/build/dist/host/modules/peer-host/peer-host-session.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-store.d.ts +21 -0
- package/data/build/dist/host/modules/peer-host/peer-host-store.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-store.js +65 -3
- package/data/build/dist/host/modules/peer-host/peer-host-store.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.d.ts +49 -0
- package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.js +174 -0
- package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.js.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-ws-gateway.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/peer-host-ws-gateway.js.map +1 -0
- package/data/build/dist/host/modules/pwa/index.d.ts +7 -0
- package/data/build/dist/host/modules/pwa/index.d.ts.map +1 -0
- package/data/build/dist/host/modules/pwa/index.js +7 -0
- package/data/build/dist/host/modules/pwa/index.js.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-assets.d.ts +48 -0
- package/data/build/dist/host/modules/pwa/pwa-assets.d.ts.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-assets.js +180 -0
- package/data/build/dist/host/modules/pwa/pwa-assets.js.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-client-script.d.ts +10 -0
- package/data/build/dist/host/modules/pwa/pwa-client-script.d.ts.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-client-script.js +38 -0
- package/data/build/dist/host/modules/pwa/pwa-client-script.js.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-icons.d.ts +10 -0
- package/data/build/dist/host/modules/pwa/pwa-icons.d.ts.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-icons.js +185 -0
- package/data/build/dist/host/modules/pwa/pwa-icons.js.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-push.d.ts +74 -0
- package/data/build/dist/host/modules/pwa/pwa-push.d.ts.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-push.js +288 -0
- package/data/build/dist/host/modules/pwa/pwa-push.js.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-session-notifications.d.ts +14 -0
- package/data/build/dist/host/modules/pwa/pwa-session-notifications.d.ts.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-session-notifications.js +80 -0
- package/data/build/dist/host/modules/pwa/pwa-session-notifications.js.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-viewport.d.ts +12 -0
- package/data/build/dist/host/modules/pwa/pwa-viewport.d.ts.map +1 -0
- package/data/build/dist/host/modules/pwa/pwa-viewport.js +47 -0
- package/data/build/dist/host/modules/pwa/pwa-viewport.js.map +1 -0
- package/data/build/dist/host/native-session-bridge.d.ts +4 -0
- package/data/build/dist/host/native-session-bridge.d.ts.map +1 -0
- package/data/build/dist/host/native-session-bridge.js +67 -12
- package/data/build/dist/host/native-session-bridge.js.map +1 -0
- package/data/build/dist/host/relay-tunnel-runtime.d.ts +33 -0
- package/data/build/dist/host/relay-tunnel-runtime.d.ts.map +1 -0
- package/data/build/dist/host/relay-tunnel-runtime.js +81 -20
- package/data/build/dist/host/relay-tunnel-runtime.js.map +1 -0
- package/data/build/dist/host/remote-web-runtime.d.ts.map +1 -0
- package/data/build/dist/host/remote-web-runtime.js +40 -17
- package/data/build/dist/host/remote-web-runtime.js.map +1 -0
- package/data/build/dist/host/rpc-table.d.ts.map +1 -0
- package/data/build/dist/host/rpc-table.js.map +1 -0
- package/data/build/dist/host/rpc.d.ts +24 -5
- package/data/build/dist/host/rpc.d.ts.map +1 -0
- package/data/build/dist/host/rpc.js +54 -13
- package/data/build/dist/host/rpc.js.map +1 -0
- package/data/build/dist/host/session-changes.d.ts.map +1 -0
- package/data/build/dist/host/session-changes.js.map +1 -0
- package/data/build/dist/host/session-migration-repair.d.ts.map +1 -0
- package/data/build/dist/host/session-migration-repair.js +14 -0
- package/data/build/dist/host/session-migration-repair.js.map +1 -0
- package/data/build/dist/host/settings.d.ts +2 -2
- package/data/build/dist/host/settings.d.ts.map +1 -0
- package/data/build/dist/host/settings.js +40 -1
- package/data/build/dist/host/settings.js.map +1 -0
- package/data/build/dist/host/terminal/attachment-registry.d.ts.map +1 -0
- package/data/build/dist/host/terminal/attachment-registry.js.map +1 -0
- package/data/build/dist/host/terminal/backends/conpty-backend.d.ts.map +1 -0
- package/data/build/dist/host/terminal/backends/conpty-backend.js.map +1 -0
- package/data/build/dist/host/terminal/backends/local-pty-backend.d.ts.map +1 -0
- package/data/build/dist/host/terminal/backends/local-pty-backend.js.map +1 -0
- package/data/build/dist/host/terminal/backends/tmux-backend.d.ts.map +1 -0
- package/data/build/dist/host/terminal/backends/tmux-backend.js.map +1 -0
- package/data/build/dist/host/terminal/broker/conpty-broker-client.d.ts.map +1 -0
- package/data/build/dist/host/terminal/broker/conpty-broker-client.js.map +1 -0
- package/data/build/dist/host/terminal/broker/conpty-broker-process.d.ts.map +1 -0
- package/data/build/dist/host/terminal/broker/conpty-broker-process.js.map +1 -0
- package/data/build/dist/host/terminal/broker/conpty-broker-protocol.d.ts.map +1 -0
- package/data/build/dist/host/terminal/broker/conpty-broker-protocol.js.map +1 -0
- package/data/build/dist/host/terminal/controller-factory.d.ts.map +1 -0
- package/data/build/dist/host/terminal/controller-factory.js.map +1 -0
- package/data/build/dist/host/terminal/index.d.ts.map +1 -0
- package/data/build/dist/host/terminal/index.js.map +1 -0
- package/data/build/dist/host/terminal/runtime-adapter.d.ts.map +1 -0
- package/data/build/dist/host/terminal/runtime-adapter.js.map +1 -0
- package/data/build/dist/host/terminal/runtime-manager.d.ts.map +1 -0
- package/data/build/dist/host/terminal/runtime-manager.js.map +1 -0
- package/data/build/dist/host/terminal/shell-detection.d.ts.map +1 -0
- package/data/build/dist/host/terminal/shell-detection.js.map +1 -0
- package/data/build/dist/host/terminal/startup.d.ts +2 -2
- package/data/build/dist/host/terminal/startup.d.ts.map +1 -0
- package/data/build/dist/host/terminal/startup.js.map +1 -0
- package/data/build/dist/host/terminal/terminal-controller.d.ts.map +1 -0
- package/data/build/dist/host/terminal/terminal-controller.js.map +1 -0
- package/data/build/dist/host/terminal/terminal-process-service.d.ts.map +1 -0
- package/data/build/dist/host/terminal/terminal-process-service.js.map +1 -0
- package/data/build/dist/host/terminal/terminal-process-store.d.ts.map +1 -0
- package/data/build/dist/host/terminal/terminal-process-store.js.map +1 -0
- package/data/build/dist/host/terminal/terminal-service.d.ts.map +1 -0
- package/data/build/dist/host/terminal/terminal-service.js.map +1 -0
- package/data/build/dist/host/terminal/terminal-store.d.ts.map +1 -0
- package/data/build/dist/host/terminal/terminal-store.js.map +1 -0
- package/data/build/dist/index.d.ts +2 -2
- package/data/build/dist/index.d.ts.map +1 -0
- package/data/build/dist/index.js +2 -2
- package/data/build/dist/index.js.map +1 -0
- package/data/build/dist/shared/contracts/auth.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/auth.js.map +1 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts +52 -1
- package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/cli-adapter.js.map +1 -0
- package/data/build/dist/shared/contracts/command-code.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/command-code.js.map +1 -0
- package/data/build/dist/shared/contracts/config.d.ts +100 -0
- package/data/build/dist/shared/contracts/config.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/config.js +101 -0
- package/data/build/dist/shared/contracts/config.js.map +1 -0
- package/data/build/dist/shared/contracts/debug-config.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/debug-config.js.map +1 -0
- package/data/build/dist/shared/contracts/debug.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/debug.js.map +1 -0
- package/data/build/dist/shared/contracts/dsh-device.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/dsh-device.js.map +1 -0
- package/data/build/dist/shared/contracts/errors.d.ts +2 -2
- package/data/build/dist/shared/contracts/errors.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/errors.js.map +1 -0
- package/data/build/dist/shared/contracts/feature.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/feature.js.map +1 -0
- package/data/build/dist/shared/contracts/file-management.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/file-management.js.map +1 -0
- package/data/build/dist/shared/contracts/git.d.ts +15 -1
- package/data/build/dist/shared/contracts/git.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/git.js.map +1 -0
- package/data/build/dist/shared/contracts/host-status.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/host-status.js.map +1 -0
- package/data/build/dist/shared/contracts/lan-access-dsh.d.ts +23 -0
- package/data/build/dist/shared/contracts/lan-access-dsh.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/lan-access-dsh.js.map +1 -0
- package/data/build/dist/shared/contracts/peer-host.d.ts +158 -1
- package/data/build/dist/shared/contracts/peer-host.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/peer-host.js +73 -0
- package/data/build/dist/shared/contracts/peer-host.js.map +1 -0
- package/data/build/dist/shared/contracts/signaling.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/signaling.js.map +1 -0
- package/data/build/dist/shared/contracts/subscription.d.ts +7 -0
- package/data/build/dist/shared/contracts/subscription.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/subscription.js +14 -1
- package/data/build/dist/shared/contracts/subscription.js.map +1 -0
- package/data/build/dist/shared/contracts/terminal-process.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/terminal-process.js.map +1 -0
- package/data/build/dist/shared/contracts/terminal.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/terminal.js.map +1 -0
- package/data/build/dist/shared/contracts/transport.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/transport.js.map +1 -0
- package/data/build/dist/shared/contracts/version.d.ts +14 -6
- package/data/build/dist/shared/contracts/version.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/version.js +23 -8
- package/data/build/dist/shared/contracts/version.js.map +1 -0
- package/data/build/dist/shared/debug.d.ts.map +1 -0
- package/data/build/dist/shared/debug.js.map +1 -0
- package/data/build/dist/shared/index.d.ts +6 -5
- package/data/build/dist/shared/index.d.ts.map +1 -0
- package/data/build/dist/shared/index.js +4 -3
- package/data/build/dist/shared/index.js.map +1 -0
- package/data/build/dist/transport/carrier.d.ts +11 -1
- package/data/build/dist/transport/carrier.d.ts.map +1 -0
- package/data/build/dist/transport/carrier.js +77 -26
- package/data/build/dist/transport/carrier.js.map +1 -0
- package/data/build/dist/transport/debug.d.ts +5 -0
- package/data/build/dist/transport/debug.d.ts.map +1 -0
- package/data/build/dist/transport/debug.js +19 -2
- package/data/build/dist/transport/debug.js.map +1 -0
- package/data/build/dist/transport/dsh-envelope.d.ts.map +1 -0
- package/data/build/dist/transport/dsh-envelope.js.map +1 -0
- package/data/build/dist/transport/dsh-gateway.d.ts.map +1 -0
- package/data/build/dist/transport/dsh-gateway.js.map +1 -0
- package/data/build/dist/transport/dsh-session.d.ts +18 -1
- package/data/build/dist/transport/dsh-session.d.ts.map +1 -0
- package/data/build/dist/transport/dsh-session.js +48 -13
- package/data/build/dist/transport/dsh-session.js.map +1 -0
- package/data/build/dist/transport/dsh-transport.d.ts.map +1 -0
- package/data/build/dist/transport/dsh-transport.js.map +1 -0
- package/data/build/dist/transport/frame.d.ts.map +1 -0
- package/data/build/dist/transport/frame.js.map +1 -0
- package/data/build/dist/transport/index.d.ts +2 -2
- package/data/build/dist/transport/index.d.ts.map +1 -0
- package/data/build/dist/transport/index.js +2 -2
- package/data/build/dist/transport/index.js.map +1 -0
- package/data/build/dist/transport/multiplexer.d.ts.map +1 -0
- package/data/build/dist/transport/multiplexer.js.map +1 -0
- package/data/build/dist/transport/webrtc-client.d.ts +8 -0
- package/data/build/dist/transport/webrtc-client.d.ts.map +1 -0
- package/data/build/dist/transport/webrtc-client.js +135 -9
- package/data/build/dist/transport/webrtc-client.js.map +1 -0
- package/data/build/dist/transport/webrtc-host.d.ts.map +1 -0
- package/data/build/dist/transport/webrtc-host.js +5 -1
- package/data/build/dist/transport/webrtc-host.js.map +1 -0
- package/data/build/dist/typert.host.d.ts.map +1 -0
- package/data/build/dist/typert.host.js.map +1 -0
- package/data/build/dist/typert.remote-client.d.ts.map +1 -0
- package/data/build/dist/typert.remote-client.js.map +1 -0
- package/package.json +39 -20
- package/profile/README.md +18 -5
- package/profile/package.json +4 -3
- package/profile/scripts/check-dsh-install.mjs +100 -9
- package/profile/version.json +3 -3
- package/scripts/check-dsh-install.mjs +98 -17
- package/version.json +3 -3
- package/data/build/dist/client/host-navigation.d.ts +0 -29
- package/data/build/dist/client/host-navigation.js +0 -29
- package/data/build/dist/client/peer-host-native-session-ui.d.ts +0 -60
- package/data/build/dist/client/peer-host-native-session-ui.js +0 -372
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PWA 图标生成器。
|
|
3
|
+
*
|
|
4
|
+
* 图标不随包分发二进制资产:Host 构建只用 tsc,没有资源加载器,而运行期从
|
|
5
|
+
* `assets/` 读文件又依赖发布目录结构。这里按需程序化生成 PNG(zlib + 手写
|
|
6
|
+
* PNG 编码),图形与登录页的旋转方块标记一致,任何入口读到的都是同一份字节。
|
|
7
|
+
*/
|
|
8
|
+
import { deflateSync } from 'node:zlib';
|
|
9
|
+
const PNG_SIGNATURE = Uint8Array.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
|
10
|
+
const PNG_COLOR_TYPE_RGBA = 6;
|
|
11
|
+
const PNG_BIT_DEPTH = 8;
|
|
12
|
+
const PNG_FILTER_NONE = 0;
|
|
13
|
+
const SUPERSAMPLE = 2;
|
|
14
|
+
const BACKGROUND_START = { r: 0x16, g: 0x23, b: 0x3f };
|
|
15
|
+
const BACKGROUND_END = { r: 0x08, g: 0x0d, b: 0x18 };
|
|
16
|
+
const RING_COLOR = { r: 0x60, g: 0xa5, b: 0xfa };
|
|
17
|
+
const CORE_START = { r: 0x3b, g: 0x82, b: 0xf6 };
|
|
18
|
+
const CORE_END = { r: 0x06, g: 0xb6, b: 0xd4 };
|
|
19
|
+
const iconCache = new Map();
|
|
20
|
+
/** 生成(并缓存)指定尺寸的 PNG 图标字节。 */
|
|
21
|
+
export function createPwaIconPng(options) {
|
|
22
|
+
const key = `${String(options.size)}:${options.maskable === true ? 'maskable' : 'plain'}`;
|
|
23
|
+
const cached = iconCache.get(key);
|
|
24
|
+
if (cached !== undefined)
|
|
25
|
+
return cached;
|
|
26
|
+
const bytes = renderPwaIcon(options);
|
|
27
|
+
iconCache.set(key, bytes);
|
|
28
|
+
return bytes;
|
|
29
|
+
}
|
|
30
|
+
function renderPwaIcon(options) {
|
|
31
|
+
const size = Math.max(16, Math.min(1024, Math.round(options.size)));
|
|
32
|
+
const maskable = options.maskable === true;
|
|
33
|
+
const pixels = new Uint8Array(size * size * 4);
|
|
34
|
+
for (let y = 0; y < size; y += 1) {
|
|
35
|
+
for (let x = 0; x < size; x += 1) {
|
|
36
|
+
let r = 0;
|
|
37
|
+
let g = 0;
|
|
38
|
+
let b = 0;
|
|
39
|
+
let a = 0;
|
|
40
|
+
for (let sy = 0; sy < SUPERSAMPLE; sy += 1) {
|
|
41
|
+
for (let sx = 0; sx < SUPERSAMPLE; sx += 1) {
|
|
42
|
+
const nx = ((x + (sx + 0.5) / SUPERSAMPLE) / size) * 2 - 1;
|
|
43
|
+
const ny = ((y + (sy + 0.5) / SUPERSAMPLE) / size) * 2 - 1;
|
|
44
|
+
const sample = samplePixel(nx, ny, maskable);
|
|
45
|
+
r += sample.r * sample.a;
|
|
46
|
+
g += sample.g * sample.a;
|
|
47
|
+
b += sample.b * sample.a;
|
|
48
|
+
a += sample.a;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const samples = SUPERSAMPLE * SUPERSAMPLE;
|
|
52
|
+
const alpha = a / samples;
|
|
53
|
+
const offset = (y * size + x) * 4;
|
|
54
|
+
pixels[offset] = alpha === 0 ? 0 : Math.round(r / a);
|
|
55
|
+
pixels[offset + 1] = alpha === 0 ? 0 : Math.round(g / a);
|
|
56
|
+
pixels[offset + 2] = alpha === 0 ? 0 : Math.round(b / a);
|
|
57
|
+
pixels[offset + 3] = Math.round(alpha * 255);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return encodePng(size, size, pixels);
|
|
61
|
+
}
|
|
62
|
+
/** 归一化坐标(-1..1)上的单点采样:背景 + 菱形描边 + 内芯。 */
|
|
63
|
+
function samplePixel(x, y, maskable) {
|
|
64
|
+
const backgroundCoverage = maskable ? 1 : roundedSquareCoverage(x, y, 0.42);
|
|
65
|
+
if (backgroundCoverage <= 0)
|
|
66
|
+
return { r: 0, g: 0, b: 0, a: 0 };
|
|
67
|
+
const tint = clamp01((x + y + 2) / 4);
|
|
68
|
+
const background = mix(BACKGROUND_START, BACKGROUND_END, tint);
|
|
69
|
+
const scale = maskable ? 0.72 : 0.86;
|
|
70
|
+
const diamond = (Math.abs(x) + Math.abs(y)) / scale;
|
|
71
|
+
const ring = bandCoverage(diamond, 0.66, 0.075);
|
|
72
|
+
const core = 1 - smoothstep(0.3, 0.36, diamond);
|
|
73
|
+
let r = background.r;
|
|
74
|
+
let g = background.g;
|
|
75
|
+
let b = background.b;
|
|
76
|
+
if (core > 0) {
|
|
77
|
+
const coreColor = mix(CORE_START, CORE_END, clamp01((x + 1) / 2));
|
|
78
|
+
r = mixChannel(r, coreColor.r, core);
|
|
79
|
+
g = mixChannel(g, coreColor.g, core);
|
|
80
|
+
b = mixChannel(b, coreColor.b, core);
|
|
81
|
+
}
|
|
82
|
+
if (ring > 0) {
|
|
83
|
+
r = mixChannel(r, RING_COLOR.r, ring);
|
|
84
|
+
g = mixChannel(g, RING_COLOR.g, ring);
|
|
85
|
+
b = mixChannel(b, RING_COLOR.b, ring);
|
|
86
|
+
}
|
|
87
|
+
return { r, g, b, a: backgroundCoverage };
|
|
88
|
+
}
|
|
89
|
+
/** 圆角方块:返回 0..1 覆盖度,四角按半径裁圆。 */
|
|
90
|
+
function roundedSquareCoverage(x, y, radius) {
|
|
91
|
+
const limit = 1 - radius;
|
|
92
|
+
const dx = Math.max(Math.abs(x) - limit, 0);
|
|
93
|
+
const dy = Math.max(Math.abs(y) - limit, 0);
|
|
94
|
+
if (dx === 0 || dy === 0)
|
|
95
|
+
return 1;
|
|
96
|
+
const distance = Math.hypot(dx, dy);
|
|
97
|
+
return 1 - smoothstep(radius - 0.03, radius, distance);
|
|
98
|
+
}
|
|
99
|
+
/** 以中心值 ±half 的带状覆盖度,用于描边。 */
|
|
100
|
+
function bandCoverage(value, center, half) {
|
|
101
|
+
return 1 - smoothstep(half * 0.45, half, Math.abs(value - center));
|
|
102
|
+
}
|
|
103
|
+
function smoothstep(edge0, edge1, value) {
|
|
104
|
+
const t = clamp01((value - edge0) / (edge1 - edge0));
|
|
105
|
+
return t * t * (3 - 2 * t);
|
|
106
|
+
}
|
|
107
|
+
function mix(left, right, t) {
|
|
108
|
+
return {
|
|
109
|
+
r: mixChannel(left.r, right.r, t),
|
|
110
|
+
g: mixChannel(left.g, right.g, t),
|
|
111
|
+
b: mixChannel(left.b, right.b, t),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function mixChannel(left, right, t) {
|
|
115
|
+
return left + (right - left) * t;
|
|
116
|
+
}
|
|
117
|
+
function clamp01(value) {
|
|
118
|
+
return Math.min(1, Math.max(0, value));
|
|
119
|
+
}
|
|
120
|
+
/** 最小 PNG 编码器:8 位 RGBA、无隔行、逐行 filter 0。 */
|
|
121
|
+
export function encodePng(width, height, pixels) {
|
|
122
|
+
if (pixels.length !== width * height * 4)
|
|
123
|
+
throw new Error('encodePng: 像素数据长度与尺寸不匹配');
|
|
124
|
+
const stride = width * 4;
|
|
125
|
+
const raw = new Uint8Array((stride + 1) * height);
|
|
126
|
+
for (let y = 0; y < height; y += 1) {
|
|
127
|
+
raw[y * (stride + 1)] = PNG_FILTER_NONE;
|
|
128
|
+
raw.set(pixels.subarray(y * stride, (y + 1) * stride), y * (stride + 1) + 1);
|
|
129
|
+
}
|
|
130
|
+
const ihdr = new Uint8Array(13);
|
|
131
|
+
writeUint32(ihdr, 0, width);
|
|
132
|
+
writeUint32(ihdr, 4, height);
|
|
133
|
+
ihdr[8] = PNG_BIT_DEPTH;
|
|
134
|
+
ihdr[9] = PNG_COLOR_TYPE_RGBA;
|
|
135
|
+
const chunks = [
|
|
136
|
+
chunk('IHDR', ihdr),
|
|
137
|
+
chunk('IDAT', deflateSync(raw, { level: 9 })),
|
|
138
|
+
chunk('IEND', new Uint8Array(0)),
|
|
139
|
+
];
|
|
140
|
+
return concatBytes([PNG_SIGNATURE, ...chunks]);
|
|
141
|
+
}
|
|
142
|
+
/** PNG 分块:长度(4) + 类型(4) + 数据 + CRC(4),CRC 覆盖类型与数据。 */
|
|
143
|
+
function chunk(type, data) {
|
|
144
|
+
const typeBytes = Uint8Array.from([...type].map((char) => char.charCodeAt(0)));
|
|
145
|
+
const body = concatBytes([typeBytes, data]);
|
|
146
|
+
const result = new Uint8Array(body.length + 12);
|
|
147
|
+
writeUint32(result, 0, data.length);
|
|
148
|
+
result.set(body, 4);
|
|
149
|
+
writeUint32(result, 4 + body.length, crc32(body));
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
const CRC_TABLE = createCrcTable();
|
|
153
|
+
function createCrcTable() {
|
|
154
|
+
const table = new Uint32Array(256);
|
|
155
|
+
for (let index = 0; index < 256; index += 1) {
|
|
156
|
+
let value = index;
|
|
157
|
+
for (let bit = 0; bit < 8; bit += 1)
|
|
158
|
+
value = value & 1 ? 0xedb88320 ^ (value >>> 1) : value >>> 1;
|
|
159
|
+
table[index] = value >>> 0;
|
|
160
|
+
}
|
|
161
|
+
return table;
|
|
162
|
+
}
|
|
163
|
+
function crc32(input) {
|
|
164
|
+
let crc = 0xffffffff;
|
|
165
|
+
for (const byte of input)
|
|
166
|
+
crc = CRC_TABLE[(crc ^ byte) & 0xff] ^ (crc >>> 8);
|
|
167
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
168
|
+
}
|
|
169
|
+
function writeUint32(target, offset, value) {
|
|
170
|
+
target[offset] = (value >>> 24) & 0xff;
|
|
171
|
+
target[offset + 1] = (value >>> 16) & 0xff;
|
|
172
|
+
target[offset + 2] = (value >>> 8) & 0xff;
|
|
173
|
+
target[offset + 3] = value & 0xff;
|
|
174
|
+
}
|
|
175
|
+
function concatBytes(parts) {
|
|
176
|
+
const total = parts.reduce((sum, part) => sum + part.length, 0);
|
|
177
|
+
const result = new Uint8Array(total);
|
|
178
|
+
let offset = 0;
|
|
179
|
+
for (const part of parts) {
|
|
180
|
+
result.set(part, offset);
|
|
181
|
+
offset += part.length;
|
|
182
|
+
}
|
|
183
|
+
return result;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=pwa-icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pwa-icons.js","sourceRoot":"","sources":["../../../../../../src/host/modules/pwa/pwa-icons.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export interface PwaPushSubscriptionInput {
|
|
2
|
+
readonly endpoint: string;
|
|
3
|
+
readonly keys: {
|
|
4
|
+
readonly p256dh: string;
|
|
5
|
+
readonly auth: string;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export interface PwaPushSubscriptionRecord {
|
|
9
|
+
readonly endpoint: string;
|
|
10
|
+
readonly keys: {
|
|
11
|
+
readonly p256dh: string;
|
|
12
|
+
readonly auth: string;
|
|
13
|
+
};
|
|
14
|
+
readonly createdAt: string;
|
|
15
|
+
/** 设备摘要(UA 截断),不含任何凭据。 */
|
|
16
|
+
readonly label: string;
|
|
17
|
+
}
|
|
18
|
+
export interface PwaPushPayload {
|
|
19
|
+
readonly title: string;
|
|
20
|
+
readonly body?: string;
|
|
21
|
+
readonly url?: string;
|
|
22
|
+
readonly tag?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface PwaPushVapidKeys {
|
|
25
|
+
/** 非压缩点(65 字节)的 base64url,可直接作为 applicationServerKey。 */
|
|
26
|
+
readonly publicKey: string;
|
|
27
|
+
/** 私有 JWK(含 d),只保存在 Host。 */
|
|
28
|
+
readonly privateKeyJwk: Record<string, string>;
|
|
29
|
+
readonly createdAt: string;
|
|
30
|
+
}
|
|
31
|
+
export interface PwaPushSendResult {
|
|
32
|
+
readonly ok: boolean;
|
|
33
|
+
readonly status: number;
|
|
34
|
+
readonly expired: boolean;
|
|
35
|
+
readonly error?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface PwaPushServiceOptions {
|
|
38
|
+
/** 状态目录,默认 `~/.config/codingns4dsh`。 */
|
|
39
|
+
readonly stateDir?: string;
|
|
40
|
+
readonly fetchImpl?: typeof fetch;
|
|
41
|
+
/** VAPID subject(JWT sub),默认 mailto 指向本机。 */
|
|
42
|
+
readonly subject?: string;
|
|
43
|
+
readonly now?: () => number;
|
|
44
|
+
}
|
|
45
|
+
export declare class PwaPushService {
|
|
46
|
+
private readonly stateDir;
|
|
47
|
+
private readonly fetchImpl;
|
|
48
|
+
private readonly subject;
|
|
49
|
+
private readonly now;
|
|
50
|
+
private vapidCache;
|
|
51
|
+
constructor(options?: PwaPushServiceOptions);
|
|
52
|
+
/** 读取或生成 VAPID 密钥;公钥同时返回给浏览器用于订阅。 */
|
|
53
|
+
vapidKeys(): Promise<PwaPushVapidKeys>;
|
|
54
|
+
listSubscriptions(): Promise<readonly PwaPushSubscriptionRecord[]>;
|
|
55
|
+
/** 写入订阅并按 endpoint 去重;label 只保留 UA 摘要。 */
|
|
56
|
+
subscribe(input: PwaPushSubscriptionInput, label: string): Promise<PwaPushSubscriptionRecord>;
|
|
57
|
+
unsubscribe(endpoint: string): Promise<boolean>;
|
|
58
|
+
/** 发送单条推送;404/410 表示订阅已失效,由调用方决定清理。 */
|
|
59
|
+
send(subscription: PwaPushSubscriptionRecord, payload: PwaPushPayload, ttlSeconds?: number): Promise<PwaPushSendResult>;
|
|
60
|
+
/** 广播:失效订阅顺手清理,返回统计供设置页展示。 */
|
|
61
|
+
sendToAll(payload: PwaPushPayload): Promise<{
|
|
62
|
+
sent: number;
|
|
63
|
+
failed: number;
|
|
64
|
+
removed: number;
|
|
65
|
+
total: number;
|
|
66
|
+
}>;
|
|
67
|
+
private writeJson;
|
|
68
|
+
}
|
|
69
|
+
/** RFC 8291 单记录加密;返回可直接作为请求正文的字节。 */
|
|
70
|
+
export declare function encryptPushPayload(payload: Uint8Array, keys: {
|
|
71
|
+
readonly p256dh: string;
|
|
72
|
+
readonly auth: string;
|
|
73
|
+
}): Uint8Array;
|
|
74
|
+
//# sourceMappingURL=pwa-push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pwa-push.d.ts","sourceRoot":"","sources":["../../../../../../src/host/modules/pwa/pwa-push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Push 发送器(VAPID + RFC 8291 aes128gcm)。
|
|
3
|
+
*
|
|
4
|
+
* 自实现而非引入依赖:需要的原语(P-256 ECDH、HKDF-SHA256、AES-128-GCM、ES256 签名)
|
|
5
|
+
* 都在 node:crypto 里。载荷只包含标题、摘要与会话标识,密钥与订阅文件都在 Host
|
|
6
|
+
* 私有目录(0600),不会下发到浏览器。
|
|
7
|
+
*/
|
|
8
|
+
import { createCipheriv, createECDH, createHmac, createPrivateKey, hkdfSync, randomBytes, sign } from 'node:crypto';
|
|
9
|
+
import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
const VAPID_FILE = 'pwa-vapid.json';
|
|
13
|
+
const SUBSCRIPTIONS_FILE = 'pwa-push-subscriptions.json';
|
|
14
|
+
const RECORD_SIZE = 4096;
|
|
15
|
+
const DEFAULT_TTL_SECONDS = 60;
|
|
16
|
+
export class PwaPushService {
|
|
17
|
+
stateDir;
|
|
18
|
+
fetchImpl;
|
|
19
|
+
subject;
|
|
20
|
+
now;
|
|
21
|
+
vapidCache = null;
|
|
22
|
+
constructor(options = {}) {
|
|
23
|
+
const configured = process.env.CODINGNS4DSH_STATE_DIR?.trim();
|
|
24
|
+
this.stateDir = options.stateDir ?? (configured === undefined || configured === '' ? join(homedir(), '.config', 'codingns4dsh') : configured);
|
|
25
|
+
this.fetchImpl = options.fetchImpl ?? fetch;
|
|
26
|
+
this.subject = options.subject ?? 'mailto:codingns4dsh@localhost';
|
|
27
|
+
this.now = options.now ?? (() => Date.now());
|
|
28
|
+
}
|
|
29
|
+
/** 读取或生成 VAPID 密钥;公钥同时返回给浏览器用于订阅。 */
|
|
30
|
+
async vapidKeys() {
|
|
31
|
+
if (this.vapidCache !== null)
|
|
32
|
+
return this.vapidCache;
|
|
33
|
+
const path = join(this.stateDir, VAPID_FILE);
|
|
34
|
+
try {
|
|
35
|
+
const parsed = JSON.parse(await readFile(path, 'utf8'));
|
|
36
|
+
const keys = parseVapidKeys(parsed);
|
|
37
|
+
if (keys !== null) {
|
|
38
|
+
this.vapidCache = keys;
|
|
39
|
+
return keys;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (!isNodeError(error, 'ENOENT'))
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
const keys = generateVapidKeys(this.now());
|
|
47
|
+
await this.writeJson(path, keys);
|
|
48
|
+
this.vapidCache = keys;
|
|
49
|
+
return keys;
|
|
50
|
+
}
|
|
51
|
+
async listSubscriptions() {
|
|
52
|
+
try {
|
|
53
|
+
const parsed = JSON.parse(await readFile(join(this.stateDir, SUBSCRIPTIONS_FILE), 'utf8'));
|
|
54
|
+
return parseSubscriptions(parsed);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (isNodeError(error, 'ENOENT'))
|
|
58
|
+
return [];
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** 写入订阅并按 endpoint 去重;label 只保留 UA 摘要。 */
|
|
63
|
+
async subscribe(input, label) {
|
|
64
|
+
const endpoint = requireEndpoint(input.endpoint);
|
|
65
|
+
const p256dh = requireBase64Url(input.keys.p256dh, 'p256dh');
|
|
66
|
+
const auth = requireBase64Url(input.keys.auth, 'auth');
|
|
67
|
+
const record = {
|
|
68
|
+
endpoint,
|
|
69
|
+
keys: { p256dh, auth },
|
|
70
|
+
createdAt: new Date(this.now()).toISOString(),
|
|
71
|
+
label: sanitizeLabel(label),
|
|
72
|
+
};
|
|
73
|
+
const existing = await this.listSubscriptions();
|
|
74
|
+
const next = [...existing.filter((item) => item.endpoint !== endpoint), record];
|
|
75
|
+
await this.writeJson(join(this.stateDir, SUBSCRIPTIONS_FILE), next);
|
|
76
|
+
return record;
|
|
77
|
+
}
|
|
78
|
+
async unsubscribe(endpoint) {
|
|
79
|
+
const existing = await this.listSubscriptions();
|
|
80
|
+
const next = existing.filter((item) => item.endpoint !== endpoint);
|
|
81
|
+
if (next.length === existing.length)
|
|
82
|
+
return false;
|
|
83
|
+
await this.writeJson(join(this.stateDir, SUBSCRIPTIONS_FILE), next);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
/** 发送单条推送;404/410 表示订阅已失效,由调用方决定清理。 */
|
|
87
|
+
async send(subscription, payload, ttlSeconds = DEFAULT_TTL_SECONDS) {
|
|
88
|
+
try {
|
|
89
|
+
const keys = await this.vapidKeys();
|
|
90
|
+
const body = encryptPushPayload(new TextEncoder().encode(JSON.stringify({
|
|
91
|
+
title: payload.title,
|
|
92
|
+
...(payload.body === undefined ? {} : { body: payload.body }),
|
|
93
|
+
...(payload.url === undefined ? {} : { url: payload.url }),
|
|
94
|
+
...(payload.tag === undefined ? {} : { tag: payload.tag }),
|
|
95
|
+
})), subscription.keys);
|
|
96
|
+
const token = createVapidToken({
|
|
97
|
+
endpoint: subscription.endpoint,
|
|
98
|
+
subject: this.subject,
|
|
99
|
+
publicKey: keys.publicKey,
|
|
100
|
+
privateKeyJwk: keys.privateKeyJwk,
|
|
101
|
+
nowSeconds: Math.floor(this.now() / 1000),
|
|
102
|
+
});
|
|
103
|
+
const response = await this.fetchImpl(subscription.endpoint, {
|
|
104
|
+
method: 'POST',
|
|
105
|
+
headers: {
|
|
106
|
+
Authorization: `vapid t=${token}, k=${keys.publicKey}`,
|
|
107
|
+
'Content-Encoding': 'aes128gcm',
|
|
108
|
+
'Content-Type': 'application/octet-stream',
|
|
109
|
+
TTL: String(ttlSeconds),
|
|
110
|
+
},
|
|
111
|
+
body: toArrayBuffer(body),
|
|
112
|
+
});
|
|
113
|
+
const expired = response.status === 404 || response.status === 410;
|
|
114
|
+
return { ok: response.ok, status: response.status, expired, ...(response.ok ? {} : { error: `HTTP ${response.status}` }) };
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
return { ok: false, status: 0, expired: false, error: error instanceof Error ? error.message : String(error) };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/** 广播:失效订阅顺手清理,返回统计供设置页展示。 */
|
|
121
|
+
async sendToAll(payload) {
|
|
122
|
+
const subscriptions = await this.listSubscriptions();
|
|
123
|
+
let sent = 0;
|
|
124
|
+
let failed = 0;
|
|
125
|
+
let removed = 0;
|
|
126
|
+
for (const subscription of subscriptions) {
|
|
127
|
+
const result = await this.send(subscription, payload);
|
|
128
|
+
if (result.ok)
|
|
129
|
+
sent += 1;
|
|
130
|
+
else if (result.expired) {
|
|
131
|
+
removed += 1;
|
|
132
|
+
await this.unsubscribe(subscription.endpoint);
|
|
133
|
+
}
|
|
134
|
+
else
|
|
135
|
+
failed += 1;
|
|
136
|
+
}
|
|
137
|
+
return { sent, failed, removed, total: subscriptions.length };
|
|
138
|
+
}
|
|
139
|
+
async writeJson(path, value) {
|
|
140
|
+
await mkdir(dirname(path), { recursive: true, mode: 0o700 });
|
|
141
|
+
const temp = `${path}.${process.pid}.tmp`;
|
|
142
|
+
await writeFile(temp, `${JSON.stringify(value, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
143
|
+
await rename(temp, path);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function generateVapidKeys(createdAt) {
|
|
147
|
+
const ecdh = createECDH('prime256v1');
|
|
148
|
+
ecdh.generateKeys();
|
|
149
|
+
const publicKey = ecdh.getPublicKey();
|
|
150
|
+
const privateKey = ecdh.getPrivateKey();
|
|
151
|
+
const privateKeyJwk = {
|
|
152
|
+
kty: 'EC',
|
|
153
|
+
crv: 'P-256',
|
|
154
|
+
x: publicKey.subarray(1, 33).toString('base64url'),
|
|
155
|
+
y: publicKey.subarray(33, 65).toString('base64url'),
|
|
156
|
+
d: privateKey.toString('base64url'),
|
|
157
|
+
};
|
|
158
|
+
return { publicKey: publicKey.toString('base64url'), privateKeyJwk, createdAt: new Date(createdAt).toISOString() };
|
|
159
|
+
}
|
|
160
|
+
function parseVapidKeys(value) {
|
|
161
|
+
if (typeof value !== 'object' || value === null)
|
|
162
|
+
return null;
|
|
163
|
+
const record = value;
|
|
164
|
+
const publicKey = record.publicKey;
|
|
165
|
+
const privateKeyJwk = record.privateKeyJwk;
|
|
166
|
+
if (typeof publicKey !== 'string' || Buffer.from(publicKey, 'base64url').length !== 65)
|
|
167
|
+
return null;
|
|
168
|
+
if (typeof privateKeyJwk !== 'object' || privateKeyJwk === null)
|
|
169
|
+
return null;
|
|
170
|
+
const jwk = privateKeyJwk;
|
|
171
|
+
if (jwk.kty !== 'EC' || jwk.crv !== 'P-256' || typeof jwk.d !== 'string' || typeof jwk.x !== 'string' || typeof jwk.y !== 'string')
|
|
172
|
+
return null;
|
|
173
|
+
return {
|
|
174
|
+
publicKey,
|
|
175
|
+
privateKeyJwk: { kty: 'EC', crv: 'P-256', x: jwk.x, y: jwk.y, d: jwk.d },
|
|
176
|
+
createdAt: typeof record.createdAt === 'string' ? record.createdAt : new Date(0).toISOString(),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
function parseSubscriptions(value) {
|
|
180
|
+
if (!Array.isArray(value))
|
|
181
|
+
return [];
|
|
182
|
+
const records = [];
|
|
183
|
+
for (const item of value) {
|
|
184
|
+
if (typeof item !== 'object' || item === null)
|
|
185
|
+
continue;
|
|
186
|
+
const record = item;
|
|
187
|
+
const keys = record.keys;
|
|
188
|
+
if (typeof record.endpoint !== 'string' || typeof keys !== 'object' || keys === null)
|
|
189
|
+
continue;
|
|
190
|
+
const keyRecord = keys;
|
|
191
|
+
if (typeof keyRecord.p256dh !== 'string' || typeof keyRecord.auth !== 'string')
|
|
192
|
+
continue;
|
|
193
|
+
records.push({
|
|
194
|
+
endpoint: record.endpoint,
|
|
195
|
+
keys: { p256dh: keyRecord.p256dh, auth: keyRecord.auth },
|
|
196
|
+
createdAt: typeof record.createdAt === 'string' ? record.createdAt : new Date(0).toISOString(),
|
|
197
|
+
label: typeof record.label === 'string' ? record.label : '',
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
return records;
|
|
201
|
+
}
|
|
202
|
+
function createVapidToken(input) {
|
|
203
|
+
const audience = new URL(input.endpoint).origin;
|
|
204
|
+
const header = base64UrlJson({ typ: 'JWT', alg: 'ES256' });
|
|
205
|
+
const payload = base64UrlJson({ aud: audience, exp: input.nowSeconds + 12 * 3600, sub: input.subject });
|
|
206
|
+
const signingInput = `${header}.${payload}`;
|
|
207
|
+
const key = createPrivateKey({ key: input.privateKeyJwk, format: 'jwk' });
|
|
208
|
+
// ieee-p1363 直接输出 r||s,避免 DER 转换。
|
|
209
|
+
const signature = sign('sha256', Buffer.from(signingInput), { key, dsaEncoding: 'ieee-p1363' });
|
|
210
|
+
return `${signingInput}.${signature.toString('base64url')}`;
|
|
211
|
+
}
|
|
212
|
+
function base64UrlJson(value) {
|
|
213
|
+
return Buffer.from(JSON.stringify(value)).toString('base64url');
|
|
214
|
+
}
|
|
215
|
+
/** RFC 8291 单记录加密;返回可直接作为请求正文的字节。 */
|
|
216
|
+
export function encryptPushPayload(payload, keys) {
|
|
217
|
+
const clientPublic = Buffer.from(keys.p256dh, 'base64url');
|
|
218
|
+
const authSecret = Buffer.from(keys.auth, 'base64url');
|
|
219
|
+
if (clientPublic.length !== 65)
|
|
220
|
+
throw new Error('p256dh 必须是 65 字节的非压缩公钥');
|
|
221
|
+
if (authSecret.length !== 16)
|
|
222
|
+
throw new Error('auth secret 必须是 16 字节');
|
|
223
|
+
const server = createECDH('prime256v1');
|
|
224
|
+
server.generateKeys();
|
|
225
|
+
const serverPublic = server.getPublicKey();
|
|
226
|
+
const sharedSecret = server.computeSecret(clientPublic);
|
|
227
|
+
const info = Buffer.concat([Buffer.from('WebPush: info\0', 'utf8'), clientPublic, serverPublic]);
|
|
228
|
+
const ikm = Buffer.from(hkdfSync('sha256', sharedSecret, authSecret, info, 32));
|
|
229
|
+
const salt = randomBytes(16);
|
|
230
|
+
const prk = hkdfExtract(salt, ikm);
|
|
231
|
+
const cek = hkdfExpand(prk, Buffer.from('Content-Encoding: aes128gcm\0', 'utf8'), 16);
|
|
232
|
+
const nonce = hkdfExpand(prk, Buffer.from('Content-Encoding: nonce\0', 'utf8'), 12);
|
|
233
|
+
const plaintext = Buffer.concat([Buffer.from(payload), Buffer.from([0x02])]);
|
|
234
|
+
const cipher = createCipheriv('aes-128-gcm', cek, nonce);
|
|
235
|
+
const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final(), cipher.getAuthTag()]);
|
|
236
|
+
const header = Buffer.alloc(21);
|
|
237
|
+
salt.copy(header, 0);
|
|
238
|
+
header.writeUInt32BE(RECORD_SIZE, 16);
|
|
239
|
+
header.writeUInt8(serverPublic.length, 20);
|
|
240
|
+
return Buffer.concat([header, serverPublic, ciphertext]);
|
|
241
|
+
}
|
|
242
|
+
function hkdfExtract(salt, ikm) {
|
|
243
|
+
return createHmac('sha256', salt).update(ikm).digest();
|
|
244
|
+
}
|
|
245
|
+
function hkdfExpand(prk, info, length) {
|
|
246
|
+
const blocks = Math.ceil(length / 32);
|
|
247
|
+
let previous = Buffer.alloc(0);
|
|
248
|
+
const output = [];
|
|
249
|
+
for (let index = 1; index <= blocks; index += 1) {
|
|
250
|
+
const hmac = createHmac('sha256', prk);
|
|
251
|
+
hmac.update(previous);
|
|
252
|
+
hmac.update(info);
|
|
253
|
+
hmac.update(Buffer.from([index]));
|
|
254
|
+
previous = hmac.digest();
|
|
255
|
+
output.push(previous);
|
|
256
|
+
}
|
|
257
|
+
return Buffer.concat(output).subarray(0, length);
|
|
258
|
+
}
|
|
259
|
+
function requireEndpoint(value) {
|
|
260
|
+
if (typeof value !== 'string')
|
|
261
|
+
throw new Error('订阅 endpoint 必须是字符串');
|
|
262
|
+
const trimmed = value.trim();
|
|
263
|
+
if (trimmed.length < 8 || trimmed.length > 2048)
|
|
264
|
+
throw new Error('订阅 endpoint 长度无效');
|
|
265
|
+
const url = new URL(trimmed);
|
|
266
|
+
if (url.protocol !== 'https:')
|
|
267
|
+
throw new Error('订阅 endpoint 必须是 https');
|
|
268
|
+
return trimmed;
|
|
269
|
+
}
|
|
270
|
+
function requireBase64Url(value, field) {
|
|
271
|
+
if (typeof value !== 'string' || !/^[A-Za-z0-9_-]+={0,2}$/u.test(value) || value.length > 512)
|
|
272
|
+
throw new Error(`${field} 不是合法的 base64url`);
|
|
273
|
+
return value;
|
|
274
|
+
}
|
|
275
|
+
function sanitizeLabel(value) {
|
|
276
|
+
if (typeof value !== 'string')
|
|
277
|
+
return '';
|
|
278
|
+
return value.replace(/[\u0000-\u001f\u007f]/gu, '').slice(0, 120);
|
|
279
|
+
}
|
|
280
|
+
function toArrayBuffer(bytes) {
|
|
281
|
+
const copy = new Uint8Array(bytes.byteLength);
|
|
282
|
+
copy.set(bytes);
|
|
283
|
+
return copy.buffer;
|
|
284
|
+
}
|
|
285
|
+
function isNodeError(error, code) {
|
|
286
|
+
return typeof error === 'object' && error !== null && 'code' in error && error.code === code;
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=pwa-push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pwa-push.js","sourceRoot":"","sources":["../../../../../../src/host/modules/pwa/pwa-push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PwaPushPayload } from './pwa-push.js';
|
|
2
|
+
/** 会话事件通知的最小输入,避免通知模块依赖 DSH 私有 Session 类型。 */
|
|
3
|
+
export interface PwaSessionNotificationInput {
|
|
4
|
+
readonly session: unknown;
|
|
5
|
+
readonly event: unknown;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 将 DSH 原生会话事件投影为 PWA 推送载荷。
|
|
9
|
+
*
|
|
10
|
+
* 原生事件在不同 DSH/Provider 版本中可能使用 type、method 或嵌套 data.type,
|
|
11
|
+
* 因此这里只读取稳定字符串字段并按语义分类;无法识别的事件安静忽略。
|
|
12
|
+
*/
|
|
13
|
+
export declare function createPwaSessionNotification(input: PwaSessionNotificationInput): PwaPushPayload | null;
|
|
14
|
+
//# sourceMappingURL=pwa-session-notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pwa-session-notifications.d.ts","sourceRoot":"","sources":["../../../../../../src/host/modules/pwa/pwa-session-notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,8CAA8C;AAC9C,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,2BAA2B,GAAG,cAAc,GAAG,IAAI,CAwBtG"}
|