@jingyi0605/codingns4dsh 0.2.1-beta.12 → 0.2.1-beta.13
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 +3 -3
- package/README.md +3 -3
- package/data/build/dist/client/account-bar.d.ts.map +1 -1
- package/data/build/dist/client/account-bar.js +24 -70
- package/data/build/dist/client/account-bar.js.map +1 -1
- package/data/build/dist/client/adapter-catalog-watch.d.ts +1 -1
- package/data/build/dist/client/adapter-catalog-watch.d.ts.map +1 -1
- package/data/build/dist/client/adapter-catalog-watch.js +2 -2
- package/data/build/dist/client/adapter-catalog-watch.js.map +1 -1
- package/data/build/dist/client/bundle.js +30007 -15931
- package/data/build/dist/client/bundle.js.map +1 -1
- package/data/build/dist/client/cli-management-dialog.d.ts +21 -0
- package/data/build/dist/client/cli-management-dialog.d.ts.map +1 -0
- package/data/build/dist/client/cli-management-dialog.js +215 -0
- package/data/build/dist/client/cli-management-dialog.js.map +1 -0
- package/data/build/dist/client/cli-management-terminal.d.ts +9 -0
- package/data/build/dist/client/cli-management-terminal.d.ts.map +1 -0
- package/data/build/dist/client/cli-management-terminal.js +30 -0
- package/data/build/dist/client/cli-management-terminal.js.map +1 -0
- package/data/build/dist/client/cli-settings-dialog.d.ts +9 -0
- package/data/build/dist/client/cli-settings-dialog.d.ts.map +1 -0
- package/data/build/dist/client/cli-settings-dialog.js +45 -0
- package/data/build/dist/client/cli-settings-dialog.js.map +1 -0
- package/data/build/dist/client/cli-settings-rpc.js +1 -1
- package/data/build/dist/client/cli-settings-rpc.js.map +1 -1
- package/data/build/dist/client/cli-slots.d.ts +4 -0
- package/data/build/dist/client/cli-slots.d.ts.map +1 -1
- package/data/build/dist/client/cli-slots.js +15 -7
- package/data/build/dist/client/cli-slots.js.map +1 -1
- package/data/build/dist/client/client.editor-engine.js +4 -1
- package/data/build/dist/client/client.editor-engine.js.map +1 -1
- package/data/build/dist/client/client.native-workspace-store.js +1 -1
- package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
- package/data/build/dist/client/client.primitives-adapter.js +53 -0
- package/data/build/dist/client/client.primitives-adapter.js.map +1 -1
- package/data/build/dist/client/client.session-translation.js +16 -0
- package/data/build/dist/client/client.session-translation.js.map +1 -1
- package/data/build/dist/client/client.transport.js +459 -44
- package/data/build/dist/client/client.transport.js.map +1 -1
- package/data/build/dist/client/conversation-translation-settings.d.ts +2 -1
- package/data/build/dist/client/conversation-translation-settings.d.ts.map +1 -1
- package/data/build/dist/client/conversation-translation-settings.js +7 -5
- package/data/build/dist/client/conversation-translation-settings.js.map +1 -1
- package/data/build/dist/client/desktop-assistant.js +457 -42
- package/data/build/dist/client/editor-engine.d.ts +1 -1
- package/data/build/dist/client/editor-engine.d.ts.map +1 -1
- package/data/build/dist/client/editor-engine.js +4 -1
- package/data/build/dist/client/editor-engine.js.map +1 -1
- package/data/build/dist/client/features/cli-adapters.d.ts +3 -1
- package/data/build/dist/client/features/cli-adapters.d.ts.map +1 -1
- package/data/build/dist/client/features/cli-adapters.js +181 -105
- package/data/build/dist/client/features/cli-adapters.js.map +1 -1
- package/data/build/dist/client/features/file-management.d.ts.map +1 -1
- package/data/build/dist/client/features/file-management.js +2 -0
- package/data/build/dist/client/features/file-management.js.map +1 -1
- package/data/build/dist/client/features/index.d.ts.map +1 -1
- package/data/build/dist/client/features/index.js +2 -0
- package/data/build/dist/client/features/index.js.map +1 -1
- package/data/build/dist/client/features/peer-host.d.ts.map +1 -1
- package/data/build/dist/client/features/peer-host.js +3 -0
- package/data/build/dist/client/features/peer-host.js.map +1 -1
- package/data/build/dist/client/features/quick-apps.d.ts +3 -0
- package/data/build/dist/client/features/quick-apps.d.ts.map +1 -0
- package/data/build/dist/client/features/quick-apps.js +14 -0
- package/data/build/dist/client/features/quick-apps.js.map +1 -0
- package/data/build/dist/client/html-workspace-files.d.ts +4 -0
- package/data/build/dist/client/html-workspace-files.d.ts.map +1 -0
- package/data/build/dist/client/html-workspace-files.js +114 -0
- package/data/build/dist/client/html-workspace-files.js.map +1 -0
- package/data/build/dist/client/locale.d.ts.map +1 -1
- package/data/build/dist/client/locale.js +6 -0
- package/data/build/dist/client/locale.js.map +1 -1
- package/data/build/dist/client/locales/cliManagement.d.ts +3 -0
- package/data/build/dist/client/locales/cliManagement.d.ts.map +1 -0
- package/data/build/dist/client/locales/cliManagement.js +139 -0
- package/data/build/dist/client/locales/cliManagement.js.map +1 -0
- package/data/build/dist/client/locales/fileWorkspace.d.ts.map +1 -1
- package/data/build/dist/client/locales/fileWorkspace.js +4 -0
- package/data/build/dist/client/locales/fileWorkspace.js.map +1 -1
- package/data/build/dist/client/locales/panels.js +2 -2
- package/data/build/dist/client/locales/panels.js.map +1 -1
- package/data/build/dist/client/locales/quickApps.d.ts +130 -0
- package/data/build/dist/client/locales/quickApps.d.ts.map +1 -0
- package/data/build/dist/client/locales/quickApps.js +150 -0
- package/data/build/dist/client/locales/quickApps.js.map +1 -0
- package/data/build/dist/client/native-model-translation-menu.d.ts.map +1 -1
- package/data/build/dist/client/native-model-translation-menu.js +3 -1
- package/data/build/dist/client/native-model-translation-menu.js.map +1 -1
- package/data/build/dist/client/quick-apps/client.d.ts +29 -0
- package/data/build/dist/client/quick-apps/client.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/client.js +68 -0
- package/data/build/dist/client/quick-apps/client.js.map +1 -0
- package/data/build/dist/client/quick-apps/document.d.ts +26 -0
- package/data/build/dist/client/quick-apps/document.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/document.js +110 -0
- package/data/build/dist/client/quick-apps/document.js.map +1 -0
- package/data/build/dist/client/quick-apps/file-picker.d.ts +14 -0
- package/data/build/dist/client/quick-apps/file-picker.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/file-picker.js +51 -0
- package/data/build/dist/client/quick-apps/file-picker.js.map +1 -0
- package/data/build/dist/client/quick-apps/launcher.d.ts +7 -0
- package/data/build/dist/client/quick-apps/launcher.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/launcher.js +252 -0
- package/data/build/dist/client/quick-apps/launcher.js.map +1 -0
- package/data/build/dist/client/quick-apps/presentation.d.ts +16 -0
- package/data/build/dist/client/quick-apps/presentation.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/presentation.js +31 -0
- package/data/build/dist/client/quick-apps/presentation.js.map +1 -0
- package/data/build/dist/client/quick-apps/reorder-animation.d.ts +6 -0
- package/data/build/dist/client/quick-apps/reorder-animation.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/reorder-animation.js +50 -0
- package/data/build/dist/client/quick-apps/reorder-animation.js.map +1 -0
- package/data/build/dist/client/quick-apps/reorder.d.ts +26 -0
- package/data/build/dist/client/quick-apps/reorder.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/reorder.js +128 -0
- package/data/build/dist/client/quick-apps/reorder.js.map +1 -0
- package/data/build/dist/client/quick-apps/styles.d.ts +3 -0
- package/data/build/dist/client/quick-apps/styles.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/styles.js +143 -0
- package/data/build/dist/client/quick-apps/styles.js.map +1 -0
- package/data/build/dist/client/quick-apps/ui.d.ts +20 -0
- package/data/build/dist/client/quick-apps/ui.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/ui.js +21 -0
- package/data/build/dist/client/quick-apps/ui.js.map +1 -0
- package/data/build/dist/client/quick-apps/viewer.d.ts +16 -0
- package/data/build/dist/client/quick-apps/viewer.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/viewer.js +155 -0
- package/data/build/dist/client/quick-apps/viewer.js.map +1 -0
- package/data/build/dist/client/quick-apps/workspace-picker.d.ts +19 -0
- package/data/build/dist/client/quick-apps/workspace-picker.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/workspace-picker.js +30 -0
- package/data/build/dist/client/quick-apps/workspace-picker.js.map +1 -0
- package/data/build/dist/client/session-translation-chat.d.ts +1 -1
- package/data/build/dist/client/session-translation-chat.d.ts.map +1 -1
- package/data/build/dist/client/session-translation-chat.js +26 -22
- package/data/build/dist/client/session-translation-chat.js.map +1 -1
- package/data/build/dist/client/sidebar-footer-style.d.ts +13 -0
- package/data/build/dist/client/sidebar-footer-style.d.ts.map +1 -0
- package/data/build/dist/client/sidebar-footer-style.js +54 -0
- package/data/build/dist/client/sidebar-footer-style.js.map +1 -0
- package/data/build/dist/client/terminal/model.d.ts.map +1 -1
- package/data/build/dist/client/terminal/model.js +2 -1
- package/data/build/dist/client/terminal/model.js.map +1 -1
- package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.d.ts +4 -0
- package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.js +8 -0
- package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts +18 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.js +21 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.js.map +1 -1
- package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.d.ts +18 -0
- package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.js +11 -0
- package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts +8 -0
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js +100 -0
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.d.ts +3 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.js +22 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-credentials.d.ts +11 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-credentials.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-credentials.js +97 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-credentials.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.d.ts +36 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.js +164 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.d.ts +44 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.js +240 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.d.ts +37 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.js +35 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.d.ts +13 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.js +30 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.d.ts +21 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js +132 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-transport.d.ts +10 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-transport.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-transport.js +33 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-transport.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/session-performance-adapter.d.ts +7 -0
- package/data/build/dist/dsh-capabilities/host/session-performance-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/session-performance-adapter.js +18 -0
- package/data/build/dist/dsh-capabilities/host/session-performance-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.d.ts +13 -0
- package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.js +24 -0
- package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/matrix.js +7 -1
- package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
- package/data/build/dist/dsh-capabilities/routes.d.ts +1 -0
- package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/routes.js +16 -0
- 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/cli-adapters/binary-detection.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/binary-detection.js +7 -3
- package/data/build/dist/host/cli-adapters/binary-detection.js.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts +1 -0
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.js +179 -20
- package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts +18 -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 +97 -5
- package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-performance-projection.d.ts +91 -0
- package/data/build/dist/host/cli-adapters/codex-performance-projection.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/codex-performance-projection.js +8 -0
- package/data/build/dist/host/cli-adapters/codex-performance-projection.js.map +1 -0
- package/data/build/dist/host/cli-adapters/codex-performance.d.ts +16 -0
- package/data/build/dist/host/cli-adapters/codex-performance.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/codex-performance.js +81 -0
- package/data/build/dist/host/cli-adapters/codex-performance.js.map +1 -0
- 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 +17 -4
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.js +37 -8
- package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.js +161 -25
- package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts +123 -0
- package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/grok-performance-projection.js +47 -0
- package/data/build/dist/host/cli-adapters/grok-performance-projection.js.map +1 -0
- package/data/build/dist/host/cli-adapters/grok-usage.d.ts +45 -0
- package/data/build/dist/host/cli-adapters/grok-usage.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/grok-usage.js +197 -0
- package/data/build/dist/host/cli-adapters/grok-usage.js.map +1 -0
- package/data/build/dist/host/cli-adapters/management-installation.d.ts +5 -0
- package/data/build/dist/host/cli-adapters/management-installation.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/management-installation.js +131 -0
- package/data/build/dist/host/cli-adapters/management-installation.js.map +1 -0
- package/data/build/dist/host/cli-adapters/management-methods.d.ts +32 -0
- package/data/build/dist/host/cli-adapters/management-methods.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/management-methods.js +135 -0
- package/data/build/dist/host/cli-adapters/management-methods.js.map +1 -0
- package/data/build/dist/host/cli-adapters/management-process.d.ts +7 -0
- package/data/build/dist/host/cli-adapters/management-process.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/management-process.js +51 -0
- package/data/build/dist/host/cli-adapters/management-process.js.map +1 -0
- package/data/build/dist/host/cli-adapters/management.d.ts +32 -0
- package/data/build/dist/host/cli-adapters/management.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/management.js +172 -0
- package/data/build/dist/host/cli-adapters/management.js.map +1 -0
- 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 +62 -0
- package/data/build/dist/host/cli-adapters/model-catalog.js.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts +22 -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 +105 -17
- package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/process-utils.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/process-utils.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/process-utils.js +16 -11
- package/data/build/dist/host/cli-adapters/process-utils.js.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.d.ts +3 -0
- package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.js +33 -5
- package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
- package/data/build/dist/host/cli-adapters/session-performance-projection.d.ts +74 -0
- package/data/build/dist/host/cli-adapters/session-performance-projection.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/session-performance-projection.js +83 -0
- package/data/build/dist/host/cli-adapters/session-performance-projection.js.map +1 -0
- package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts +3 -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 +2 -0
- package/data/build/dist/host/cli-adapters/stream-normalizer.js.map +1 -1
- package/data/build/dist/host/cli-adapters/update-check.d.ts +34 -0
- package/data/build/dist/host/cli-adapters/update-check.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/update-check.js +263 -0
- package/data/build/dist/host/cli-adapters/update-check.js.map +1 -0
- package/data/build/dist/host/features/file-management.d.ts.map +1 -1
- package/data/build/dist/host/features/file-management.js +8 -0
- package/data/build/dist/host/features/file-management.js.map +1 -1
- package/data/build/dist/host/features/index.d.ts.map +1 -1
- package/data/build/dist/host/features/index.js +2 -0
- package/data/build/dist/host/features/index.js.map +1 -1
- package/data/build/dist/host/features/lan-access-dsh.js +1 -1
- package/data/build/dist/host/features/lan-access-dsh.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 +7 -0
- package/data/build/dist/host/features/peer-host.js.map +1 -1
- package/data/build/dist/host/features/quick-apps.d.ts +4 -0
- package/data/build/dist/host/features/quick-apps.d.ts.map +1 -0
- package/data/build/dist/host/features/quick-apps.js +158 -0
- package/data/build/dist/host/features/quick-apps.js.map +1 -0
- package/data/build/dist/host/features/session-prompt-translation.d.ts +1 -1
- package/data/build/dist/host/features/session-prompt-translation.d.ts.map +1 -1
- package/data/build/dist/host/features/session-prompt-translation.js +2 -1
- package/data/build/dist/host/features/session-prompt-translation.js.map +1 -1
- package/data/build/dist/host/features/session-translation-protection.d.ts +6 -0
- package/data/build/dist/host/features/session-translation-protection.d.ts.map +1 -1
- package/data/build/dist/host/features/session-translation-protection.js +21 -0
- package/data/build/dist/host/features/session-translation-protection.js.map +1 -1
- package/data/build/dist/host/features/session-translation-recovery.d.ts +3 -2
- package/data/build/dist/host/features/session-translation-recovery.d.ts.map +1 -1
- package/data/build/dist/host/features/session-translation-recovery.js +6 -3
- package/data/build/dist/host/features/session-translation-recovery.js.map +1 -1
- package/data/build/dist/host/features/session-translation-service.d.ts +3 -0
- package/data/build/dist/host/features/session-translation-service.d.ts.map +1 -1
- package/data/build/dist/host/features/session-translation-service.js +14 -8
- package/data/build/dist/host/features/session-translation-service.js.map +1 -1
- package/data/build/dist/host/features/types.d.ts +10 -0
- package/data/build/dist/host/features/types.d.ts.map +1 -1
- package/data/build/dist/host/html-workspace-files.d.ts +3 -0
- package/data/build/dist/host/html-workspace-files.d.ts.map +1 -0
- package/data/build/dist/host/html-workspace-files.js +135 -0
- package/data/build/dist/host/html-workspace-files.js.map +1 -0
- package/data/build/dist/host/index.d.ts.map +1 -1
- package/data/build/dist/host/index.js +27 -2
- package/data/build/dist/host/index.js.map +1 -1
- package/data/build/dist/host/lan-access-dsh.d.ts +5 -1
- package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -1
- package/data/build/dist/host/lan-access-dsh.js +43 -2
- package/data/build/dist/host/lan-access-dsh.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/quick-app-gateway.d.ts +5 -0
- package/data/build/dist/host/modules/peer-host/quick-app-gateway.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/quick-app-gateway.js +27 -0
- package/data/build/dist/host/modules/peer-host/quick-app-gateway.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/browse.d.ts +5 -0
- package/data/build/dist/host/modules/quick-apps/browse.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/browse.js +37 -0
- package/data/build/dist/host/modules/quick-apps/browse.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/code-revision.d.ts +4 -0
- package/data/build/dist/host/modules/quick-apps/code-revision.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/code-revision.js +39 -0
- package/data/build/dist/host/modules/quick-apps/code-revision.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/documents.d.ts +14 -0
- package/data/build/dist/host/modules/quick-apps/documents.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/documents.js +87 -0
- package/data/build/dist/host/modules/quick-apps/documents.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/errors.d.ts +8 -0
- package/data/build/dist/host/modules/quick-apps/errors.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/errors.js +15 -0
- package/data/build/dist/host/modules/quick-apps/errors.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/file-api.d.ts +30 -0
- package/data/build/dist/host/modules/quick-apps/file-api.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/file-api.js +149 -0
- package/data/build/dist/host/modules/quick-apps/file-api.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/launches.d.ts +35 -0
- package/data/build/dist/host/modules/quick-apps/launches.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/launches.js +80 -0
- package/data/build/dist/host/modules/quick-apps/launches.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/paths.d.ts +14 -0
- package/data/build/dist/host/modules/quick-apps/paths.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/paths.js +72 -0
- package/data/build/dist/host/modules/quick-apps/paths.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/registry.d.ts +30 -0
- package/data/build/dist/host/modules/quick-apps/registry.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/registry.js +186 -0
- package/data/build/dist/host/modules/quick-apps/registry.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/remote.d.ts +38 -0
- package/data/build/dist/host/modules/quick-apps/remote.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/remote.js +237 -0
- package/data/build/dist/host/modules/quick-apps/remote.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/service.d.ts +27 -0
- package/data/build/dist/host/modules/quick-apps/service.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/service.js +170 -0
- package/data/build/dist/host/modules/quick-apps/service.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/static-handler.d.ts +8 -0
- package/data/build/dist/host/modules/quick-apps/static-handler.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/static-handler.js +181 -0
- package/data/build/dist/host/modules/quick-apps/static-handler.js.map +1 -0
- package/data/build/dist/host/native-session-bridge.d.ts +5 -0
- package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
- package/data/build/dist/host/native-session-bridge.js +3 -0
- package/data/build/dist/host/native-session-bridge.js.map +1 -1
- package/data/build/dist/host/rpc.d.ts.map +1 -1
- package/data/build/dist/host/rpc.js +8 -3
- 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 +13 -0
- package/data/build/dist/host/settings.js.map +1 -1
- package/data/build/dist/host/workspace-file-mutations.d.ts +2 -0
- package/data/build/dist/host/workspace-file-mutations.d.ts.map +1 -0
- package/data/build/dist/host/workspace-file-mutations.js +15 -0
- package/data/build/dist/host/workspace-file-mutations.js.map +1 -0
- package/data/build/dist/shared/codex-performance.d.ts +3 -0
- package/data/build/dist/shared/codex-performance.d.ts.map +1 -0
- package/data/build/dist/shared/codex-performance.js +2 -0
- package/data/build/dist/shared/codex-performance.js.map +1 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts +25 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/cli-management.d.ts +29 -0
- package/data/build/dist/shared/contracts/cli-management.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/cli-management.js +2 -0
- package/data/build/dist/shared/contracts/cli-management.js.map +1 -0
- package/data/build/dist/shared/contracts/config.d.ts +2 -0
- package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/config.js.map +1 -1
- package/data/build/dist/shared/contracts/quick-apps.d.ts +68 -0
- package/data/build/dist/shared/contracts/quick-apps.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/quick-apps.js +4 -0
- package/data/build/dist/shared/contracts/quick-apps.js.map +1 -0
- package/data/build/dist/shared/contracts/session-translation.d.ts +8 -3
- package/data/build/dist/shared/contracts/session-translation.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/session-translation.js +14 -0
- package/data/build/dist/shared/contracts/session-translation.js.map +1 -1
- package/data/build/dist/shared/contracts/version.d.ts +1 -1
- package/data/build/dist/shared/contracts/version.js +1 -1
- package/data/build/dist/shared/peer-host-http-routes.d.ts +4 -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 +4 -0
- package/data/build/dist/shared/peer-host-http-routes.js.map +1 -1
- package/data/build/dist/shared/quick-app-proxy-path.d.ts +6 -0
- package/data/build/dist/shared/quick-app-proxy-path.d.ts.map +1 -0
- package/data/build/dist/shared/quick-app-proxy-path.js +18 -0
- package/data/build/dist/shared/quick-app-proxy-path.js.map +1 -0
- package/data/build/dist/shared/quick-apps-bootstrap-locale.d.ts +7 -0
- package/data/build/dist/shared/quick-apps-bootstrap-locale.d.ts.map +1 -0
- package/data/build/dist/shared/quick-apps-bootstrap-locale.js +10 -0
- package/data/build/dist/shared/quick-apps-bootstrap-locale.js.map +1 -0
- package/data/build/dist/shared/request-performance.d.ts +15 -0
- package/data/build/dist/shared/request-performance.d.ts.map +1 -0
- package/data/build/dist/shared/request-performance.js +3 -0
- package/data/build/dist/shared/request-performance.js.map +1 -0
- package/package.json +1 -1
- package/profile/README.md +2 -2
- package/profile/package.json +2 -2
- package/profile/version.json +1 -1
- package/version.json +1 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { stat } from 'node:fs/promises';
|
|
3
|
+
import { QUICK_APP_LIMITS } from '../../../shared/contracts/quick-apps.js';
|
|
4
|
+
import { appPath, publicPath, resolveAppPath, withinScope } from './paths.js';
|
|
5
|
+
import { conflict, deny, QuickAppError } from './errors.js';
|
|
6
|
+
export class QuickAppRegistry {
|
|
7
|
+
storage;
|
|
8
|
+
workspaceRoot;
|
|
9
|
+
hostId;
|
|
10
|
+
remoteValidate;
|
|
11
|
+
pending = Promise.resolve();
|
|
12
|
+
stopped = false;
|
|
13
|
+
constructor(storage, workspaceRoot, hostId = 'local', remoteValidate) {
|
|
14
|
+
this.storage = storage;
|
|
15
|
+
this.workspaceRoot = workspaceRoot;
|
|
16
|
+
this.hostId = hostId;
|
|
17
|
+
this.remoteValidate = remoteValidate;
|
|
18
|
+
}
|
|
19
|
+
list() { return [...structuredClone(this.storage.read())].sort((a, b) => a.order - b.order); }
|
|
20
|
+
get(id) {
|
|
21
|
+
const app = this.list().find(item => item.id === id);
|
|
22
|
+
if (!app)
|
|
23
|
+
throw new QuickAppError(404, 'QUICK_APP_UNAVAILABLE', 'The shortcut no longer exists.');
|
|
24
|
+
return app;
|
|
25
|
+
}
|
|
26
|
+
root(app) {
|
|
27
|
+
if (app.hostId !== this.hostId)
|
|
28
|
+
throw new QuickAppError(503, 'QUICK_APP_HOST_UNAVAILABLE', 'The owning Host is not connected through a verified Quick Apps route.');
|
|
29
|
+
const root = this.workspaceRoot(app.workspaceId);
|
|
30
|
+
if (!root)
|
|
31
|
+
throw new QuickAppError(404, 'QUICK_APP_WORKSPACE_UNAVAILABLE', 'The exact workspace is unavailable.');
|
|
32
|
+
return root;
|
|
33
|
+
}
|
|
34
|
+
async validate(app) {
|
|
35
|
+
if (app.hostId !== this.hostId && this.remoteValidate) {
|
|
36
|
+
await this.remoteValidate(app);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const root = this.root(app);
|
|
40
|
+
if (!withinScope(app.documentRoot, app.entryPath) || !publicPath(app.entryPath))
|
|
41
|
+
deny();
|
|
42
|
+
if (!(await stat(await resolveAppPath(root, app.documentRoot))).isDirectory())
|
|
43
|
+
deny();
|
|
44
|
+
if (!(await stat(await resolveAppPath(root, app.entryPath))).isFile())
|
|
45
|
+
deny();
|
|
46
|
+
for (const mount of app.mounts)
|
|
47
|
+
if (!(await stat(await resolveAppPath(root, mount.workspacePath))).isDirectory())
|
|
48
|
+
deny();
|
|
49
|
+
}
|
|
50
|
+
async availability(app, htmlAvailable) {
|
|
51
|
+
if (app.hostId !== this.hostId)
|
|
52
|
+
return 'disconnected-host';
|
|
53
|
+
if (!this.workspaceRoot(app.workspaceId))
|
|
54
|
+
return 'missing-workspace';
|
|
55
|
+
try {
|
|
56
|
+
await this.validate(app);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return 'missing-file';
|
|
60
|
+
}
|
|
61
|
+
return app.kind === 'html' && !htmlAvailable ? 'unsupported-runtime' : 'available';
|
|
62
|
+
}
|
|
63
|
+
upsert(input, expectedRevision) {
|
|
64
|
+
return this.serialize(async () => {
|
|
65
|
+
const data = parseDefinition(input);
|
|
66
|
+
const apps = this.list();
|
|
67
|
+
const existing = data.id ? apps.find(app => app.id === data.id) : undefined;
|
|
68
|
+
if (existing ? expectedRevision !== existing.revision : expectedRevision !== 0 || Boolean(data.id))
|
|
69
|
+
conflict();
|
|
70
|
+
if (!existing && apps.length >= QUICK_APP_LIMITS.shortcuts)
|
|
71
|
+
throw new QuickAppError(429, 'QUICK_APP_LIMIT', 'Too many shortcuts.');
|
|
72
|
+
const app = { ...data, id: existing?.id ?? randomUUID(), revision: (existing?.revision ?? 0) + 1 };
|
|
73
|
+
await this.validate(app);
|
|
74
|
+
await this.storage.write([...apps.filter(item => item.id !== app.id), app]);
|
|
75
|
+
return app;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
remove(id, expectedRevision) {
|
|
79
|
+
return this.serialize(async () => {
|
|
80
|
+
if (this.get(id).revision !== expectedRevision)
|
|
81
|
+
conflict();
|
|
82
|
+
await this.storage.write(this.list().filter(app => app.id !== id));
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
reorder(input) {
|
|
86
|
+
return this.serialize(async () => {
|
|
87
|
+
if (!Array.isArray(input) || input.length > QUICK_APP_LIMITS.shortcuts)
|
|
88
|
+
deny('Invalid shortcut order.');
|
|
89
|
+
const expected = new Map();
|
|
90
|
+
for (const item of input) {
|
|
91
|
+
if (!item || typeof item.id !== 'string' || !Number.isSafeInteger(item.expectedRevision) || expected.has(item.id))
|
|
92
|
+
deny('Invalid shortcut order.');
|
|
93
|
+
expected.set(item.id, item.expectedRevision);
|
|
94
|
+
}
|
|
95
|
+
const apps = this.list();
|
|
96
|
+
if (apps.length !== expected.size || apps.some(app => expected.get(app.id) !== app.revision))
|
|
97
|
+
conflict();
|
|
98
|
+
const byId = new Map(apps.map(app => [app.id, app]));
|
|
99
|
+
const ordered = [...expected.keys()].map((id, order) => {
|
|
100
|
+
const app = byId.get(id);
|
|
101
|
+
return app.order === order ? app : { ...app, order, revision: app.revision + 1 };
|
|
102
|
+
});
|
|
103
|
+
// Ordering only changes metadata, including shortcuts whose Host or source is unavailable.
|
|
104
|
+
if (ordered.some(app => app !== byId.get(app.id)))
|
|
105
|
+
await this.storage.write(ordered);
|
|
106
|
+
return ordered;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
revokeWorkspaceAccess(id, expectedRevision) {
|
|
110
|
+
return this.serialize(async () => {
|
|
111
|
+
const app = this.get(id);
|
|
112
|
+
if (app.revision !== expectedRevision)
|
|
113
|
+
conflict();
|
|
114
|
+
if (app.fileAccess !== 'workspace')
|
|
115
|
+
return app;
|
|
116
|
+
const { fileAccess: _access, ...definition } = app;
|
|
117
|
+
const updated = { ...definition, revision: app.revision + 1 };
|
|
118
|
+
// Revocation must work even when the entry or workspace is no longer accessible.
|
|
119
|
+
await this.storage.write(this.list().map(item => item.id === id ? updated : item));
|
|
120
|
+
return updated;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
async dispose() { this.stopped = true; await this.pending.catch(() => undefined); }
|
|
124
|
+
serialize(operation) {
|
|
125
|
+
const next = this.pending.catch(() => undefined).then(() => {
|
|
126
|
+
if (this.stopped)
|
|
127
|
+
throw new QuickAppError(410, 'QUICK_APP_REVOKED', 'Quick Apps is disabled.');
|
|
128
|
+
return operation();
|
|
129
|
+
});
|
|
130
|
+
this.pending = next;
|
|
131
|
+
return next;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/** Ordering revisions protect metadata writes without changing launch files or permissions. */
|
|
135
|
+
export function quickAppDefinitionKey(app) {
|
|
136
|
+
const { order: _order, revision: _revision, ...definition } = app;
|
|
137
|
+
return JSON.stringify(definition);
|
|
138
|
+
}
|
|
139
|
+
function text(value) {
|
|
140
|
+
if (typeof value !== 'string' || value.trim() === '' || value.length > 512 || /[\x00-\x1f]/u.test(value))
|
|
141
|
+
deny('Invalid shortcut metadata.');
|
|
142
|
+
return value.trim();
|
|
143
|
+
}
|
|
144
|
+
export function parseDefinition(input) {
|
|
145
|
+
if (!input || typeof input !== 'object' || Array.isArray(input))
|
|
146
|
+
deny();
|
|
147
|
+
const value = input;
|
|
148
|
+
if (value.kind !== 'html' && value.kind !== 'text')
|
|
149
|
+
deny();
|
|
150
|
+
if (value.fileAccess !== undefined && value.fileAccess !== 'workspace')
|
|
151
|
+
deny('Invalid workspace access policy.');
|
|
152
|
+
if (!Array.isArray(value.mounts) || value.mounts.length > 8 || typeof value.spaFallback !== 'boolean' || !Number.isSafeInteger(value.order))
|
|
153
|
+
deny();
|
|
154
|
+
const prefixes = [];
|
|
155
|
+
const mounts = value.mounts.map(item => {
|
|
156
|
+
if (!item || typeof item !== 'object' || item.read !== true || typeof item.urlPrefix !== 'string' || !item.urlPrefix.startsWith('/'))
|
|
157
|
+
deny();
|
|
158
|
+
const prefix = appPath(item.urlPrefix.slice(1), false);
|
|
159
|
+
if (prefix === '__quickapp' || prefix.startsWith('__quickapp/') || prefixes.some(previous => withinScope(previous, prefix) || withinScope(prefix, previous)))
|
|
160
|
+
deny('Overlapping or reserved mount.');
|
|
161
|
+
prefixes.push(prefix);
|
|
162
|
+
const workspacePath = appPath(item.workspacePath);
|
|
163
|
+
if (!publicPath(workspacePath))
|
|
164
|
+
deny();
|
|
165
|
+
return { urlPrefix: `/${prefix}`, workspacePath, read: true };
|
|
166
|
+
});
|
|
167
|
+
const entryPath = appPath(value.entryPath, false);
|
|
168
|
+
if (value.kind === 'html' && !/\.html?$/iu.test(entryPath))
|
|
169
|
+
deny('Choose an HTML entry file.');
|
|
170
|
+
return { id: value.id ? text(value.id) : '', title: text(value.title), hostId: text(value.hostId), workspaceId: text(value.workspaceId),
|
|
171
|
+
...(value.kind === 'html' && value.fileAccess === 'workspace' ? { fileAccess: 'workspace' } : {}),
|
|
172
|
+
entryPath, documentRoot: appPath(value.documentRoot), kind: value.kind, spaFallback: value.spaFallback, mounts, order: value.order };
|
|
173
|
+
}
|
|
174
|
+
export function parsePermissions(value) {
|
|
175
|
+
if (!value || typeof value !== 'object')
|
|
176
|
+
deny();
|
|
177
|
+
const input = value;
|
|
178
|
+
const paths = (key) => {
|
|
179
|
+
if (!Array.isArray(input[key]) || input[key].length > 8)
|
|
180
|
+
deny('Invalid file permissions.');
|
|
181
|
+
return input[key].map((path) => { const normalized = appPath(path); if (!publicPath(normalized))
|
|
182
|
+
deny(); return normalized; });
|
|
183
|
+
};
|
|
184
|
+
return { read: paths('read'), write: paths('write'), delete: paths('delete') };
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../../src/host/modules/quick-apps/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { QuickApp } from '../../../shared/contracts/quick-apps.js';
|
|
2
|
+
import { type QuickAppOriginProvider } from '../../../dsh-capabilities/host/quick-app-origin-adapter.js';
|
|
3
|
+
/** Only the authenticated PeerHost management carrier may implement this gateway. */
|
|
4
|
+
export interface QuickAppPeerGateway {
|
|
5
|
+
call(hostId: string, workspaceId: string, action: string, payload: Record<string, unknown>, signal?: AbortSignal): Promise<unknown>;
|
|
6
|
+
}
|
|
7
|
+
export declare function quickAppTargetWorkspace(app: Pick<QuickApp, 'hostId' | 'workspaceId'>): string;
|
|
8
|
+
/** Remote definitions are validated and held on the file-owning Host, never trusted as grants. */
|
|
9
|
+
export declare class QuickAppRemoteOwner {
|
|
10
|
+
private readonly origins?;
|
|
11
|
+
private apps;
|
|
12
|
+
private readonly registry;
|
|
13
|
+
private readonly service;
|
|
14
|
+
private pending;
|
|
15
|
+
private stopped;
|
|
16
|
+
constructor(workspaceRoot: (id: string) => string | null, origins?: QuickAppOriginProvider | undefined);
|
|
17
|
+
handle(action: string, input: Record<string, unknown>, principal: string): Promise<unknown>;
|
|
18
|
+
dispose(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
/** Controlling Host owns routing references; app payloads can never select a mutation destination. */
|
|
21
|
+
export declare class QuickAppRemoteController {
|
|
22
|
+
private readonly gateway;
|
|
23
|
+
private readonly protectedUi;
|
|
24
|
+
private readonly proxy?;
|
|
25
|
+
private readonly active;
|
|
26
|
+
private readonly opening;
|
|
27
|
+
private readonly origins;
|
|
28
|
+
private stopped;
|
|
29
|
+
constructor(gateway: () => QuickAppPeerGateway | undefined, protectedUi?: (origin?: string) => boolean, proxy?: QuickAppOriginProvider | undefined);
|
|
30
|
+
call(app: QuickApp, action: string, payload?: Record<string, unknown>, signal?: AbortSignal): Promise<any>;
|
|
31
|
+
launch(app: QuickApp, principal: string, uiOrigin: string | undefined, signal?: AbortSignal): Promise<unknown>;
|
|
32
|
+
owns(id: string): boolean;
|
|
33
|
+
document(id: string, principal: string, input: Record<string, unknown>, currentApp: (id: string) => QuickApp): Promise<unknown>;
|
|
34
|
+
close(id: string, principal: string): Promise<void>;
|
|
35
|
+
invalidate(app: QuickApp): Promise<void>;
|
|
36
|
+
dispose(): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=remote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../../../../src/host/modules/quick-apps/remote.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA+C,MAAM,yCAAyC,CAAA;AAKpH,OAAO,EAA0B,KAAK,sBAAsB,EAAE,MAAM,4DAA4D,CAAA;AAKhI,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACpI;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,MAAM,CAI7F;AAED,kGAAkG;AAClG,qBAAa,mBAAmB;IAM4B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IALnF,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,OAAO,CAAQ;gBACX,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EAAmB,OAAO,CAAC,EAAE,sBAAsB,YAAA;IAI3G,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmCrF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAC/B;AAED,sGAAsG;AACtG,qBAAa,wBAAwB;IAKvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAyC,OAAO,CAAC,QAAQ,CAAC,WAAW;IACvG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IALzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4J;IACnL,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,OAAO,CAAQ;gBACM,OAAO,EAAE,MAAM,mBAAmB,GAAG,SAAS,EAAmB,WAAW,GAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAqB,EAClI,KAAK,CAAC,EAAE,sBAAsB,YAAA;IAC3C,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAMpH,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA+D9G,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/H,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { readBody } from './static-handler.js';
|
|
3
|
+
import { QUICK_APP_LIMITS } from '../../../shared/contracts/quick-apps.js';
|
|
4
|
+
import { QUICK_APP_DESKTOP_ORIGIN } from '../../../shared/quick-app-proxy-path.js';
|
|
5
|
+
import { parseVirtualWorkspaceId } from '../../../shared/contracts/peer-host.js';
|
|
6
|
+
import { validateQuickAppOrigin } from '../../../dsh-capabilities/host/quick-app-origin-adapter.js';
|
|
7
|
+
import { QuickAppRegistry, parseDefinition, quickAppDefinitionKey } from './registry.js';
|
|
8
|
+
import { QuickAppService } from './service.js';
|
|
9
|
+
import { deny, QuickAppError } from './errors.js';
|
|
10
|
+
export function quickAppTargetWorkspace(app) {
|
|
11
|
+
const parsed = parseVirtualWorkspaceId(app.workspaceId);
|
|
12
|
+
if (!parsed || parsed.hostId !== app.hostId)
|
|
13
|
+
deny('The shortcut does not belong to this Host.');
|
|
14
|
+
return parsed.workspaceId;
|
|
15
|
+
}
|
|
16
|
+
/** Remote definitions are validated and held on the file-owning Host, never trusted as grants. */
|
|
17
|
+
export class QuickAppRemoteOwner {
|
|
18
|
+
origins;
|
|
19
|
+
apps = [];
|
|
20
|
+
registry;
|
|
21
|
+
service;
|
|
22
|
+
pending = Promise.resolve();
|
|
23
|
+
stopped = false;
|
|
24
|
+
constructor(workspaceRoot, origins) {
|
|
25
|
+
this.origins = origins;
|
|
26
|
+
this.registry = new QuickAppRegistry({ read: () => this.apps, write: async (apps) => { this.apps = [...apps]; } }, workspaceRoot);
|
|
27
|
+
this.service = new QuickAppService(this.registry, origins);
|
|
28
|
+
}
|
|
29
|
+
handle(action, input, principal) {
|
|
30
|
+
if (this.stopped)
|
|
31
|
+
return Promise.reject(new QuickAppError(410, 'QUICK_APP_REVOKED', 'Quick Apps is disabled.'));
|
|
32
|
+
// File mutations own their physical-file queue. Do not queue revocation behind a pending save.
|
|
33
|
+
if (action === 'document')
|
|
34
|
+
return this.service.documents.handle(String(input.id), principal, input);
|
|
35
|
+
if (action === 'resource')
|
|
36
|
+
return this.service.resource(String(input.id), principal, input.request);
|
|
37
|
+
// Serialize definition replacement with grant/launch: a stale queued request cannot borrow a newer grant.
|
|
38
|
+
const next = this.pending.catch(() => undefined).then(async () => {
|
|
39
|
+
if (this.stopped)
|
|
40
|
+
deny();
|
|
41
|
+
if (action === 'close') {
|
|
42
|
+
this.service.launches.requireOwner(String(input.id), principal);
|
|
43
|
+
await this.service.launches.revoke(String(input.id));
|
|
44
|
+
return { ok: true };
|
|
45
|
+
}
|
|
46
|
+
if (!['validate', 'launch', 'grant', 'revoke'].includes(action))
|
|
47
|
+
deny();
|
|
48
|
+
const definition = parseDefinition(input.app);
|
|
49
|
+
if (definition.hostId !== 'local' || !definition.id)
|
|
50
|
+
deny();
|
|
51
|
+
const id = createHash('sha256').update(JSON.stringify([principal, definition.id])).digest('hex');
|
|
52
|
+
let app = this.apps.find(item => item.id === id);
|
|
53
|
+
const candidate = { ...definition, id, revision: app?.revision ?? 1 };
|
|
54
|
+
const uiOrigin = typeof input.uiOrigin === 'string' ? input.uiOrigin : undefined;
|
|
55
|
+
if (action === 'validate')
|
|
56
|
+
return { availability: await this.registry.availability(candidate, Boolean(this.origins) && (this.origins?.available?.(uiOrigin) ?? true)),
|
|
57
|
+
fileAccess: candidate.fileAccess, runtimeReason: this.origins?.diagnostic?.(uiOrigin), isolation: this.origins?.isolation };
|
|
58
|
+
if (action === 'revoke') {
|
|
59
|
+
await this.service.invalidate(id);
|
|
60
|
+
this.apps = this.apps.filter(item => item.id !== id);
|
|
61
|
+
return { ok: true };
|
|
62
|
+
}
|
|
63
|
+
await this.registry.validate(candidate);
|
|
64
|
+
if (!app || quickAppDefinitionKey(app) !== quickAppDefinitionKey(candidate)) {
|
|
65
|
+
if (!app && this.apps.length >= QUICK_APP_LIMITS.shortcuts)
|
|
66
|
+
throw new QuickAppError(429, 'QUICK_APP_LIMIT', 'Too many remote shortcuts for this module lifetime.');
|
|
67
|
+
await this.service.invalidate(id);
|
|
68
|
+
app = { ...candidate, revision: (app?.revision ?? 0) + 1 };
|
|
69
|
+
this.apps = [...this.apps.filter(item => item.id !== id), app];
|
|
70
|
+
}
|
|
71
|
+
if (action === 'grant') {
|
|
72
|
+
await this.service.grant(id, app.revision, input.permissions);
|
|
73
|
+
return { ok: true };
|
|
74
|
+
}
|
|
75
|
+
return this.service.launch(id, principal, undefined, uiOrigin);
|
|
76
|
+
});
|
|
77
|
+
this.pending = next;
|
|
78
|
+
return next;
|
|
79
|
+
}
|
|
80
|
+
async dispose() { this.stopped = true; await this.pending.catch(() => undefined); await this.service.dispose(); this.apps = []; }
|
|
81
|
+
}
|
|
82
|
+
/** Controlling Host owns routing references; app payloads can never select a mutation destination. */
|
|
83
|
+
export class QuickAppRemoteController {
|
|
84
|
+
gateway;
|
|
85
|
+
protectedUi;
|
|
86
|
+
proxy;
|
|
87
|
+
active = new Map();
|
|
88
|
+
opening = new Set();
|
|
89
|
+
origins = new Set();
|
|
90
|
+
stopped = false;
|
|
91
|
+
constructor(gateway, protectedUi = () => false, proxy) {
|
|
92
|
+
this.gateway = gateway;
|
|
93
|
+
this.protectedUi = protectedUi;
|
|
94
|
+
this.proxy = proxy;
|
|
95
|
+
}
|
|
96
|
+
async call(app, action, payload = {}, signal) {
|
|
97
|
+
const gateway = this.gateway();
|
|
98
|
+
if (!gateway || this.stopped && action !== 'close')
|
|
99
|
+
throw new QuickAppError(503, 'QUICK_APP_HOST_UNAVAILABLE', 'The owning Host is unavailable.');
|
|
100
|
+
const workspaceId = quickAppTargetWorkspace(app);
|
|
101
|
+
return gateway.call(app.hostId, workspaceId, action, { ...payload, app: { ...app, hostId: 'local', workspaceId } }, signal);
|
|
102
|
+
}
|
|
103
|
+
launch(app, principal, uiOrigin, signal) {
|
|
104
|
+
for (const [id, value] of this.active)
|
|
105
|
+
if (value.expiresAt <= Date.now())
|
|
106
|
+
void this.close(id, value.principal).catch(() => undefined);
|
|
107
|
+
if (this.stopped || this.active.size + this.opening.size >= QUICK_APP_LIMITS.launches || this.origins.size >= QUICK_APP_LIMITS.originHistory)
|
|
108
|
+
return Promise.reject(new QuickAppError(429, 'QUICK_APP_LIMIT', 'Too many remote launches.'));
|
|
109
|
+
const operation = (async () => {
|
|
110
|
+
const result = await this.call(app, 'launch', { uiOrigin }, signal);
|
|
111
|
+
if (result?.kind === 'text') {
|
|
112
|
+
if (typeof result.content !== 'string' || typeof result.title !== 'string' || Buffer.byteLength(result.content) > QUICK_APP_LIMITS.textBytes)
|
|
113
|
+
deny();
|
|
114
|
+
// Older peers remain viewable, but expose no editing capability or launch to route.
|
|
115
|
+
if (result.launchId === undefined) {
|
|
116
|
+
signal?.throwIfAborted();
|
|
117
|
+
if (this.stopped)
|
|
118
|
+
deny();
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else if (result?.kind !== 'html')
|
|
123
|
+
deny('The owning Host returned an invalid launch.');
|
|
124
|
+
if (typeof result.launchId !== 'string' || !Number.isFinite(result.expiresAt) || result.expiresAt <= Date.now() || result.expiresAt > Date.now() + QUICK_APP_LIMITS.lifetimeMs)
|
|
125
|
+
deny();
|
|
126
|
+
let disposeProxy;
|
|
127
|
+
try {
|
|
128
|
+
if (result.kind === 'html' && result.isolation === 'sandbox-proxy') {
|
|
129
|
+
if (this.proxy?.isolation !== 'sandbox-proxy')
|
|
130
|
+
throw new QuickAppError(503, 'QUICK_APP_RELAY_UNAVAILABLE', 'The controlling Host needs the workspace preview proxy.');
|
|
131
|
+
const remoteBase = result.basePath;
|
|
132
|
+
// Desktop resources stay behind the authenticated relay; only the controlling lease reaches the browser.
|
|
133
|
+
const ownerUiOrigin = uiOrigin === QUICK_APP_DESKTOP_ORIGIN ? result.origin : uiOrigin ?? '';
|
|
134
|
+
validateQuickAppOrigin({ ...result, uiOrigin: ownerUiOrigin, ownerHostId: app.hostId, cookieName: 'quickapp-proxy', remote: true,
|
|
135
|
+
activate: async () => ({ url: '' }), dispose: async () => undefined }, app.hostId, this.origins);
|
|
136
|
+
if (!result.url.startsWith(result.origin + remoteBase))
|
|
137
|
+
deny('Invalid remote preview address.');
|
|
138
|
+
const lease = await this.proxy.open((req, res) => {
|
|
139
|
+
void (async () => {
|
|
140
|
+
const headers = {};
|
|
141
|
+
for (const name of ['accept', 'origin', 'content-type', 'if-match', 'if-none-match', 'sec-fetch-mode', 'sec-fetch-dest']) {
|
|
142
|
+
const value = req.headers[name];
|
|
143
|
+
if (typeof value === 'string')
|
|
144
|
+
headers[name] = value;
|
|
145
|
+
}
|
|
146
|
+
const timeout = AbortSignal.any([AbortSignal.timeout(30_000), ...(signal ? [signal] : [])]);
|
|
147
|
+
const request = { method: req.method ?? 'GET', path: req.url ?? '/', headers,
|
|
148
|
+
...(req.method === 'PUT' ? { body: await readBody(req, timeout) } : {}) };
|
|
149
|
+
const response = await this.call(app, 'resource', { id: result.launchId, request }, timeout);
|
|
150
|
+
if (!Number.isInteger(response?.status) || response.status < 200 || response.status > 599 || typeof response.bodyBase64 !== 'string'
|
|
151
|
+
|| response.bodyBase64.length > Math.ceil(QUICK_APP_LIMITS.staticBytes / 3) * 4)
|
|
152
|
+
deny('Invalid remote preview response.');
|
|
153
|
+
for (const name of ['content-type', 'content-length', 'content-security-policy', 'cache-control', 'referrer-policy', 'x-content-type-options', 'access-control-allow-origin', 'access-control-allow-methods', 'access-control-allow-headers']) {
|
|
154
|
+
const value = response.headers[name];
|
|
155
|
+
if (typeof value === 'string')
|
|
156
|
+
res.setHeader(name, value);
|
|
157
|
+
}
|
|
158
|
+
const location = response.headers.location;
|
|
159
|
+
if (location) {
|
|
160
|
+
if (!location.startsWith(remoteBase))
|
|
161
|
+
deny();
|
|
162
|
+
res.setHeader('Location', lease.basePath + location.slice(remoteBase.length));
|
|
163
|
+
}
|
|
164
|
+
res.writeHead(response.status);
|
|
165
|
+
res.end(req.method === 'HEAD' ? undefined : Buffer.from(response.bodyBase64, 'base64'));
|
|
166
|
+
})().catch(() => { if (res.headersSent)
|
|
167
|
+
res.destroy();
|
|
168
|
+
else
|
|
169
|
+
res.writeHead(502, { 'Cache-Control': 'no-store' }).end(); });
|
|
170
|
+
}, uiOrigin);
|
|
171
|
+
disposeProxy = lease.dispose;
|
|
172
|
+
const path = result.url.slice((result.origin + remoteBase).length);
|
|
173
|
+
const activation = await lease.activate(randomUUID(), `/${path}`);
|
|
174
|
+
result.url = activation.url;
|
|
175
|
+
result.origin = lease.origin;
|
|
176
|
+
result.basePath = lease.basePath;
|
|
177
|
+
}
|
|
178
|
+
else if (result.kind === 'html') {
|
|
179
|
+
if (typeof result.origin !== 'string' || typeof result.url !== 'string')
|
|
180
|
+
deny();
|
|
181
|
+
if (result.isolation === 'lan-port' && !this.protectedUi(uiOrigin))
|
|
182
|
+
throw new QuickAppError(503, 'QUICK_APP_RELAY_UNAVAILABLE', 'The controlling LAN proxy needs the app origin guard.');
|
|
183
|
+
validateQuickAppOrigin({ origin: result.origin, uiOrigin: uiOrigin ?? '', ownerHostId: app.hostId, remote: true, cookieName: '__Host-quickapp',
|
|
184
|
+
...(result.isolation === 'lan-port' ? { isolation: 'lan-port' } : {}), activate: async () => ({ url: '' }), dispose: async () => undefined }, app.hostId, this.origins);
|
|
185
|
+
if (new URL(result.url).origin !== result.origin)
|
|
186
|
+
deny('The owning Host returned an invalid app address.');
|
|
187
|
+
this.origins.add(result.origin);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
await disposeProxy?.();
|
|
192
|
+
await this.call(app, 'close', { id: result.launchId }).catch(() => undefined);
|
|
193
|
+
throw error;
|
|
194
|
+
}
|
|
195
|
+
if (this.stopped || signal?.aborted) {
|
|
196
|
+
await disposeProxy?.();
|
|
197
|
+
await this.call(app, 'close', { id: result.launchId });
|
|
198
|
+
signal?.throwIfAborted();
|
|
199
|
+
deny();
|
|
200
|
+
}
|
|
201
|
+
const id = randomUUID();
|
|
202
|
+
const onAbort = () => { void this.close(id, principal).catch(() => undefined); };
|
|
203
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
204
|
+
this.active.set(id, { app, principal, targetId: result.launchId, expiresAt: result.expiresAt, removeAbort: () => signal?.removeEventListener('abort', onAbort), ...(disposeProxy ? { disposeProxy } : {}) });
|
|
205
|
+
return { ...result, launchId: id };
|
|
206
|
+
})();
|
|
207
|
+
this.opening.add(operation);
|
|
208
|
+
void operation.finally(() => this.opening.delete(operation)).catch(() => undefined);
|
|
209
|
+
return operation;
|
|
210
|
+
}
|
|
211
|
+
owns(id) { return this.active.has(id); }
|
|
212
|
+
async document(id, principal, input, currentApp) {
|
|
213
|
+
const launch = this.active.get(id);
|
|
214
|
+
if (!launch || launch.principal !== principal || launch.expiresAt <= Date.now() || quickAppDefinitionKey(currentApp(launch.app.id)) !== quickAppDefinitionKey(launch.app))
|
|
215
|
+
deny();
|
|
216
|
+
return this.call(launch.app, 'document', { operation: input.operation, path: input.path, content: input.content, version: input.version, id: launch.targetId });
|
|
217
|
+
}
|
|
218
|
+
async close(id, principal) {
|
|
219
|
+
const launch = this.active.get(id);
|
|
220
|
+
if (!launch || launch.principal !== principal)
|
|
221
|
+
deny();
|
|
222
|
+
this.active.delete(id);
|
|
223
|
+
launch.removeAbort();
|
|
224
|
+
await launch.disposeProxy?.();
|
|
225
|
+
await this.call(launch.app, 'close', { id: launch.targetId });
|
|
226
|
+
}
|
|
227
|
+
async invalidate(app) {
|
|
228
|
+
await Promise.all([...this.active.entries()].filter(([, value]) => value.app.id === app.id).map(([id, value]) => this.close(id, value.principal)));
|
|
229
|
+
await this.call(app, 'revoke');
|
|
230
|
+
}
|
|
231
|
+
async dispose() {
|
|
232
|
+
this.stopped = true;
|
|
233
|
+
await Promise.allSettled(this.opening);
|
|
234
|
+
await Promise.allSettled([...this.active].map(([id, value]) => this.close(id, value.principal)));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=remote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../../../../src/host/modules/quick-apps/remote.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type QuickAppOriginProvider } from '../../../dsh-capabilities/host/quick-app-origin-adapter.js';
|
|
2
|
+
import type { QuickAppProxyRequest, QuickAppProxyResponse } from '../../../shared/contracts/quick-apps.js';
|
|
3
|
+
import { QuickAppRegistry } from './registry.js';
|
|
4
|
+
import { QuickAppLaunches } from './launches.js';
|
|
5
|
+
import { QuickAppFileApi } from './file-api.js';
|
|
6
|
+
import { QuickAppDocuments } from './documents.js';
|
|
7
|
+
export declare class QuickAppService {
|
|
8
|
+
readonly registry: QuickAppRegistry;
|
|
9
|
+
private readonly originsProvider?;
|
|
10
|
+
readonly launches: QuickAppLaunches;
|
|
11
|
+
readonly files: QuickAppFileApi;
|
|
12
|
+
readonly documents: QuickAppDocuments;
|
|
13
|
+
private readonly approvals;
|
|
14
|
+
private readonly origins;
|
|
15
|
+
private readonly opening;
|
|
16
|
+
private readonly proxyPaths;
|
|
17
|
+
private stopped;
|
|
18
|
+
constructor(registry: QuickAppRegistry, originsProvider?: QuickAppOriginProvider | undefined);
|
|
19
|
+
list(uiOrigin?: string): Promise<unknown>;
|
|
20
|
+
grant(id: string, revision: number, permissions: unknown): Promise<void>;
|
|
21
|
+
launch(id: string, principal: string, connectionSignal?: AbortSignal, uiOrigin?: string): Promise<unknown>;
|
|
22
|
+
private open;
|
|
23
|
+
invalidate(id: string): Promise<void>;
|
|
24
|
+
resource(id: string, principal: string, input: QuickAppProxyRequest): Promise<QuickAppProxyResponse>;
|
|
25
|
+
dispose(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../../src/host/modules/quick-apps/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwD,KAAK,sBAAsB,EAAE,MAAM,4DAA4D,CAAA;AAC9J,OAAO,KAAK,EAAuB,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AAE/H,OAAO,EAAE,gBAAgB,EAA2C,MAAM,eAAe,CAAA;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAMlD,qBAAa,eAAe;IASd,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;IAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IARlF,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2H;IACrJ,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,OAAO,CAAQ;gBACF,QAAQ,EAAE,gBAAgB,EAAmB,eAAe,CAAC,EAAE,sBAAsB,YAAA;IAKpG,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAS5F,IAAI;IAgEZ,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAOpG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}
|