@creezio/electron-shell 0.22.0
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.md +351 -0
- package/dist/.creezio-src-hash.json +4 -0
- package/dist/admin-window.d.ts +18 -0
- package/dist/admin-window.d.ts.map +1 -0
- package/dist/admin-window.js +75 -0
- package/dist/admin-window.js.map +1 -0
- package/dist/boot.d.ts +36 -0
- package/dist/boot.d.ts.map +1 -0
- package/dist/boot.js +99 -0
- package/dist/boot.js.map +1 -0
- package/dist/desktop/assistant-chrome.d.ts +42 -0
- package/dist/desktop/assistant-chrome.d.ts.map +1 -0
- package/dist/desktop/assistant-chrome.js +178 -0
- package/dist/desktop/assistant-chrome.js.map +1 -0
- package/dist/desktop/brand-desktop-runtime.d.ts +72 -0
- package/dist/desktop/brand-desktop-runtime.d.ts.map +1 -0
- package/dist/desktop/brand-desktop-runtime.js +3926 -0
- package/dist/desktop/brand-desktop-runtime.js.map +1 -0
- package/dist/desktop/desktop-session.d.ts +85 -0
- package/dist/desktop/desktop-session.d.ts.map +1 -0
- package/dist/desktop/desktop-session.js +163 -0
- package/dist/desktop/desktop-session.js.map +1 -0
- package/dist/desktop/error-page-html.d.ts +16 -0
- package/dist/desktop/error-page-html.d.ts.map +1 -0
- package/dist/desktop/error-page-html.js +88 -0
- package/dist/desktop/error-page-html.js.map +1 -0
- package/dist/desktop/legacy-brand-compat.d.ts +45 -0
- package/dist/desktop/legacy-brand-compat.d.ts.map +1 -0
- package/dist/desktop/legacy-brand-compat.js +49 -0
- package/dist/desktop/legacy-brand-compat.js.map +1 -0
- package/dist/desktop/oauth-loopback.d.ts +28 -0
- package/dist/desktop/oauth-loopback.d.ts.map +1 -0
- package/dist/desktop/oauth-loopback.js +137 -0
- package/dist/desktop/oauth-loopback.js.map +1 -0
- package/dist/desktop/profile-picker-html.d.ts +27 -0
- package/dist/desktop/profile-picker-html.d.ts.map +1 -0
- package/dist/desktop/profile-picker-html.js +213 -0
- package/dist/desktop/profile-picker-html.js.map +1 -0
- package/dist/desktop/remote-offline-html.d.ts +14 -0
- package/dist/desktop/remote-offline-html.d.ts.map +1 -0
- package/dist/desktop/remote-offline-html.js +88 -0
- package/dist/desktop/remote-offline-html.js.map +1 -0
- package/dist/factory-reset-runtime.d.ts +11 -0
- package/dist/factory-reset-runtime.d.ts.map +1 -0
- package/dist/factory-reset-runtime.js +77 -0
- package/dist/factory-reset-runtime.js.map +1 -0
- package/dist/host/ai-workspace/actions.d.ts +12 -0
- package/dist/host/ai-workspace/actions.d.ts.map +1 -0
- package/dist/host/ai-workspace/actions.js +243 -0
- package/dist/host/ai-workspace/actions.js.map +1 -0
- package/dist/host/ai-workspace/bindings.d.ts +51 -0
- package/dist/host/ai-workspace/bindings.d.ts.map +1 -0
- package/dist/host/ai-workspace/bindings.js +40 -0
- package/dist/host/ai-workspace/bindings.js.map +1 -0
- package/dist/host/ai-workspace/index.d.ts +11 -0
- package/dist/host/ai-workspace/index.d.ts.map +1 -0
- package/dist/host/ai-workspace/index.js +6 -0
- package/dist/host/ai-workspace/index.js.map +1 -0
- package/dist/host/ai-workspace/manager.d.ts +128 -0
- package/dist/host/ai-workspace/manager.d.ts.map +1 -0
- package/dist/host/ai-workspace/manager.js +519 -0
- package/dist/host/ai-workspace/manager.js.map +1 -0
- package/dist/host/ai-workspace/profile-window.d.ts +37 -0
- package/dist/host/ai-workspace/profile-window.d.ts.map +1 -0
- package/dist/host/ai-workspace/profile-window.js +121 -0
- package/dist/host/ai-workspace/profile-window.js.map +1 -0
- package/dist/host/ai-workspace/screencast.d.ts +56 -0
- package/dist/host/ai-workspace/screencast.d.ts.map +1 -0
- package/dist/host/ai-workspace/screencast.js +245 -0
- package/dist/host/ai-workspace/screencast.js.map +1 -0
- package/dist/host/ai-workspace/types.d.ts +40 -0
- package/dist/host/ai-workspace/types.d.ts.map +1 -0
- package/dist/host/ai-workspace/types.js +6 -0
- package/dist/host/ai-workspace/types.js.map +1 -0
- package/dist/host/brand-host-runtime.d.ts +107 -0
- package/dist/host/brand-host-runtime.d.ts.map +1 -0
- package/dist/host/brand-host-runtime.js +274 -0
- package/dist/host/brand-host-runtime.js.map +1 -0
- package/dist/host/brand-host-stack.d.ts +117 -0
- package/dist/host/brand-host-stack.d.ts.map +1 -0
- package/dist/host/brand-host-stack.js +253 -0
- package/dist/host/brand-host-stack.js.map +1 -0
- package/dist/host/brand-kernel-http.d.ts +34 -0
- package/dist/host/brand-kernel-http.d.ts.map +1 -0
- package/dist/host/brand-kernel-http.js +95 -0
- package/dist/host/brand-kernel-http.js.map +1 -0
- package/dist/host/brand-meili-boot.d.ts +67 -0
- package/dist/host/brand-meili-boot.d.ts.map +1 -0
- package/dist/host/brand-meili-boot.js +100 -0
- package/dist/host/brand-meili-boot.js.map +1 -0
- package/dist/host/bridge-client.d.ts +54 -0
- package/dist/host/bridge-client.d.ts.map +1 -0
- package/dist/host/bridge-client.js +187 -0
- package/dist/host/bridge-client.js.map +1 -0
- package/dist/host/browser-tabs/browser-tab-driver.d.ts +45 -0
- package/dist/host/browser-tabs/browser-tab-driver.d.ts.map +1 -0
- package/dist/host/browser-tabs/browser-tab-driver.js +154 -0
- package/dist/host/browser-tabs/browser-tab-driver.js.map +1 -0
- package/dist/host/browser-tabs/browser-tab-manager.d.ts +208 -0
- package/dist/host/browser-tabs/browser-tab-manager.d.ts.map +1 -0
- package/dist/host/browser-tabs/browser-tab-manager.js +758 -0
- package/dist/host/browser-tabs/browser-tab-manager.js.map +1 -0
- package/dist/host/browser-tabs/browser-tab-preload-path.d.ts +2 -0
- package/dist/host/browser-tabs/browser-tab-preload-path.d.ts.map +1 -0
- package/dist/host/browser-tabs/browser-tab-preload-path.js +29 -0
- package/dist/host/browser-tabs/browser-tab-preload-path.js.map +1 -0
- package/dist/host/browser-tabs/browser-tab-preload.d.ts +11 -0
- package/dist/host/browser-tabs/browser-tab-preload.d.ts.map +1 -0
- package/dist/host/browser-tabs/browser-tab-preload.js +11 -0
- package/dist/host/browser-tabs/browser-tab-preload.js.map +1 -0
- package/dist/host/browser-tabs/chrome-ua.d.ts +19 -0
- package/dist/host/browser-tabs/chrome-ua.d.ts.map +1 -0
- package/dist/host/browser-tabs/chrome-ua.js +37 -0
- package/dist/host/browser-tabs/chrome-ua.js.map +1 -0
- package/dist/host/browser-tabs/fake-cursor-inject.d.ts +7 -0
- package/dist/host/browser-tabs/fake-cursor-inject.d.ts.map +1 -0
- package/dist/host/browser-tabs/fake-cursor-inject.js +7 -0
- package/dist/host/browser-tabs/fake-cursor-inject.js.map +1 -0
- package/dist/host/browser-tabs/index.d.ts +13 -0
- package/dist/host/browser-tabs/index.d.ts.map +1 -0
- package/dist/host/browser-tabs/index.js +13 -0
- package/dist/host/browser-tabs/index.js.map +1 -0
- package/dist/host/browser-tabs/tab-load-state.d.ts +56 -0
- package/dist/host/browser-tabs/tab-load-state.d.ts.map +1 -0
- package/dist/host/browser-tabs/tab-load-state.js +56 -0
- package/dist/host/browser-tabs/tab-load-state.js.map +1 -0
- package/dist/host/browser-tabs/tab-url.d.ts +10 -0
- package/dist/host/browser-tabs/tab-url.d.ts.map +1 -0
- package/dist/host/browser-tabs/tab-url.js +57 -0
- package/dist/host/browser-tabs/tab-url.js.map +1 -0
- package/dist/host/context.d.ts +70 -0
- package/dist/host/context.d.ts.map +1 -0
- package/dist/host/context.js +16 -0
- package/dist/host/context.js.map +1 -0
- package/dist/host/contracts.d.ts +39 -0
- package/dist/host/contracts.d.ts.map +1 -0
- package/dist/host/contracts.js +26 -0
- package/dist/host/contracts.js.map +1 -0
- package/dist/host/crash-reporter.d.ts +65 -0
- package/dist/host/crash-reporter.d.ts.map +1 -0
- package/dist/host/crash-reporter.js +371 -0
- package/dist/host/crash-reporter.js.map +1 -0
- package/dist/host/ensure-kit-binaries.d.ts +17 -0
- package/dist/host/ensure-kit-binaries.d.ts.map +1 -0
- package/dist/host/ensure-kit-binaries.js +205 -0
- package/dist/host/ensure-kit-binaries.js.map +1 -0
- package/dist/host/feature-off-host.d.ts +130 -0
- package/dist/host/feature-off-host.d.ts.map +1 -0
- package/dist/host/feature-off-host.js +138 -0
- package/dist/host/feature-off-host.js.map +1 -0
- package/dist/host/hermes/crm-key.d.ts +49 -0
- package/dist/host/hermes/crm-key.d.ts.map +1 -0
- package/dist/host/hermes/crm-key.js +126 -0
- package/dist/host/hermes/crm-key.js.map +1 -0
- package/dist/host/hermes/ensure-crm-key-db.d.ts +7 -0
- package/dist/host/hermes/ensure-crm-key-db.d.ts.map +1 -0
- package/dist/host/hermes/ensure-crm-key-db.js +84 -0
- package/dist/host/hermes/ensure-crm-key-db.js.map +1 -0
- package/dist/host/hermes/launcher.d.ts +98 -0
- package/dist/host/hermes/launcher.d.ts.map +1 -0
- package/dist/host/hermes/launcher.js +972 -0
- package/dist/host/hermes/launcher.js.map +1 -0
- package/dist/host/hermes/runtime-bootstrap.d.ts +172 -0
- package/dist/host/hermes/runtime-bootstrap.d.ts.map +1 -0
- package/dist/host/hermes/runtime-bootstrap.js +789 -0
- package/dist/host/hermes/runtime-bootstrap.js.map +1 -0
- package/dist/host/hermes/skills-seed.d.ts +40 -0
- package/dist/host/hermes/skills-seed.d.ts.map +1 -0
- package/dist/host/hermes/skills-seed.js +100 -0
- package/dist/host/hermes/skills-seed.js.map +1 -0
- package/dist/host/host-stack.d.ts +35 -0
- package/dist/host/host-stack.d.ts.map +1 -0
- package/dist/host/host-stack.js +38 -0
- package/dist/host/host-stack.js.map +1 -0
- package/dist/host/kit-os-resources.d.ts +6 -0
- package/dist/host/kit-os-resources.d.ts.map +1 -0
- package/dist/host/kit-os-resources.js +88 -0
- package/dist/host/kit-os-resources.js.map +1 -0
- package/dist/host/load-electron.d.ts +2 -0
- package/dist/host/load-electron.d.ts.map +1 -0
- package/dist/host/load-electron.js +44 -0
- package/dist/host/load-electron.js.map +1 -0
- package/dist/host/local-config.d.ts +120 -0
- package/dist/host/local-config.d.ts.map +1 -0
- package/dist/host/local-config.js +633 -0
- package/dist/host/local-config.js.map +1 -0
- package/dist/host/meili/browse.d.ts +58 -0
- package/dist/host/meili/browse.d.ts.map +1 -0
- package/dist/host/meili/browse.js +98 -0
- package/dist/host/meili/browse.js.map +1 -0
- package/dist/host/meili/coherence-db.d.ts +35 -0
- package/dist/host/meili/coherence-db.d.ts.map +1 -0
- package/dist/host/meili/coherence-db.js +129 -0
- package/dist/host/meili/coherence-db.js.map +1 -0
- package/dist/host/meili/coherence-query.d.ts +10 -0
- package/dist/host/meili/coherence-query.d.ts.map +1 -0
- package/dist/host/meili/coherence-query.js +23 -0
- package/dist/host/meili/coherence-query.js.map +1 -0
- package/dist/host/meili/coherence.d.ts +53 -0
- package/dist/host/meili/coherence.d.ts.map +1 -0
- package/dist/host/meili/coherence.js +148 -0
- package/dist/host/meili/coherence.js.map +1 -0
- package/dist/host/meili/feed.d.ts +82 -0
- package/dist/host/meili/feed.d.ts.map +1 -0
- package/dist/host/meili/feed.js +100 -0
- package/dist/host/meili/feed.js.map +1 -0
- package/dist/host/meili/generic-indexer.d.ts +34 -0
- package/dist/host/meili/generic-indexer.d.ts.map +1 -0
- package/dist/host/meili/generic-indexer.js +333 -0
- package/dist/host/meili/generic-indexer.js.map +1 -0
- package/dist/host/meili/index-schema.d.ts +64 -0
- package/dist/host/meili/index-schema.d.ts.map +1 -0
- package/dist/host/meili/index-schema.js +70 -0
- package/dist/host/meili/index-schema.js.map +1 -0
- package/dist/host/meili/index.d.ts +13 -0
- package/dist/host/meili/index.d.ts.map +1 -0
- package/dist/host/meili/index.js +8 -0
- package/dist/host/meili/index.js.map +1 -0
- package/dist/host/meili/indexer.d.ts +31 -0
- package/dist/host/meili/indexer.d.ts.map +1 -0
- package/dist/host/meili/indexer.js +49 -0
- package/dist/host/meili/indexer.js.map +1 -0
- package/dist/host/meili-launcher.d.ts +30 -0
- package/dist/host/meili-launcher.d.ts.map +1 -0
- package/dist/host/meili-launcher.js +115 -0
- package/dist/host/meili-launcher.js.map +1 -0
- package/dist/host/n8n/agent-isolation.d.ts +55 -0
- package/dist/host/n8n/agent-isolation.d.ts.map +1 -0
- package/dist/host/n8n/agent-isolation.js +158 -0
- package/dist/host/n8n/agent-isolation.js.map +1 -0
- package/dist/host/n8n/api-key.d.ts +67 -0
- package/dist/host/n8n/api-key.d.ts.map +1 -0
- package/dist/host/n8n/api-key.js +297 -0
- package/dist/host/n8n/api-key.js.map +1 -0
- package/dist/host/n8n/launcher.d.ts +126 -0
- package/dist/host/n8n/launcher.d.ts.map +1 -0
- package/dist/host/n8n/launcher.js +1170 -0
- package/dist/host/n8n/launcher.js.map +1 -0
- package/dist/host/n8n/runtime-bootstrap.d.ts +44 -0
- package/dist/host/n8n/runtime-bootstrap.d.ts.map +1 -0
- package/dist/host/n8n/runtime-bootstrap.js +230 -0
- package/dist/host/n8n/runtime-bootstrap.js.map +1 -0
- package/dist/host/node-runtime.d.ts +52 -0
- package/dist/host/node-runtime.d.ts.map +1 -0
- package/dist/host/node-runtime.js +257 -0
- package/dist/host/node-runtime.js.map +1 -0
- package/dist/host/npm-cli.d.ts +43 -0
- package/dist/host/npm-cli.d.ts.map +1 -0
- package/dist/host/npm-cli.js +213 -0
- package/dist/host/npm-cli.js.map +1 -0
- package/dist/host/plugins/accept-check.d.ts +19 -0
- package/dist/host/plugins/accept-check.d.ts.map +1 -0
- package/dist/host/plugins/accept-check.js +172 -0
- package/dist/host/plugins/accept-check.js.map +1 -0
- package/dist/host/plugins/brand-bindings.d.ts +103 -0
- package/dist/host/plugins/brand-bindings.d.ts.map +1 -0
- package/dist/host/plugins/brand-bindings.js +65 -0
- package/dist/host/plugins/brand-bindings.js.map +1 -0
- package/dist/host/plugins/control-adapters.d.ts +11 -0
- package/dist/host/plugins/control-adapters.d.ts.map +1 -0
- package/dist/host/plugins/control-adapters.js +83 -0
- package/dist/host/plugins/control-adapters.js.map +1 -0
- package/dist/host/plugins/control-extras.d.ts +61 -0
- package/dist/host/plugins/control-extras.d.ts.map +1 -0
- package/dist/host/plugins/control-extras.js +382 -0
- package/dist/host/plugins/control-extras.js.map +1 -0
- package/dist/host/plugins/control-plane.d.ts +42 -0
- package/dist/host/plugins/control-plane.d.ts.map +1 -0
- package/dist/host/plugins/control-plane.js +124 -0
- package/dist/host/plugins/control-plane.js.map +1 -0
- package/dist/host/plugins/control-token.d.ts +24 -0
- package/dist/host/plugins/control-token.d.ts.map +1 -0
- package/dist/host/plugins/control-token.js +77 -0
- package/dist/host/plugins/control-token.js.map +1 -0
- package/dist/host/plugins/crm-key.d.ts +25 -0
- package/dist/host/plugins/crm-key.d.ts.map +1 -0
- package/dist/host/plugins/crm-key.js +126 -0
- package/dist/host/plugins/crm-key.js.map +1 -0
- package/dist/host/plugins/data.d.ts +21 -0
- package/dist/host/plugins/data.d.ts.map +1 -0
- package/dist/host/plugins/data.js +100 -0
- package/dist/host/plugins/data.js.map +1 -0
- package/dist/host/plugins/events.d.ts +6 -0
- package/dist/host/plugins/events.d.ts.map +1 -0
- package/dist/host/plugins/events.js +6 -0
- package/dist/host/plugins/events.js.map +1 -0
- package/dist/host/plugins/execution-grant.d.ts +6 -0
- package/dist/host/plugins/execution-grant.d.ts.map +1 -0
- package/dist/host/plugins/execution-grant.js +6 -0
- package/dist/host/plugins/execution-grant.js.map +1 -0
- package/dist/host/plugins/git.d.ts +56 -0
- package/dist/host/plugins/git.d.ts.map +1 -0
- package/dist/host/plugins/git.js +357 -0
- package/dist/host/plugins/git.js.map +1 -0
- package/dist/host/plugins/host.d.ts +68 -0
- package/dist/host/plugins/host.d.ts.map +1 -0
- package/dist/host/plugins/host.js +276 -0
- package/dist/host/plugins/host.js.map +1 -0
- package/dist/host/plugins/launcher.d.ts +146 -0
- package/dist/host/plugins/launcher.d.ts.map +1 -0
- package/dist/host/plugins/launcher.js +489 -0
- package/dist/host/plugins/launcher.js.map +1 -0
- package/dist/host/plugins/runtime.d.ts +28 -0
- package/dist/host/plugins/runtime.d.ts.map +1 -0
- package/dist/host/plugins/runtime.js +430 -0
- package/dist/host/plugins/runtime.js.map +1 -0
- package/dist/host/plugins/test-runner.d.ts +15 -0
- package/dist/host/plugins/test-runner.d.ts.map +1 -0
- package/dist/host/plugins/test-runner.js +106 -0
- package/dist/host/plugins/test-runner.js.map +1 -0
- package/dist/host/safe-storage.d.ts +21 -0
- package/dist/host/safe-storage.d.ts.map +1 -0
- package/dist/host/safe-storage.js +55 -0
- package/dist/host/safe-storage.js.map +1 -0
- package/dist/host/sandbox/embed-sandbox.d.ts +133 -0
- package/dist/host/sandbox/embed-sandbox.d.ts.map +1 -0
- package/dist/host/sandbox/embed-sandbox.js +378 -0
- package/dist/host/sandbox/embed-sandbox.js.map +1 -0
- package/dist/host/sandbox/os-sandbox.d.ts +41 -0
- package/dist/host/sandbox/os-sandbox.d.ts.map +1 -0
- package/dist/host/sandbox/os-sandbox.js +98 -0
- package/dist/host/sandbox/os-sandbox.js.map +1 -0
- package/dist/host/server-env.d.ts +50 -0
- package/dist/host/server-env.d.ts.map +1 -0
- package/dist/host/server-env.js +64 -0
- package/dist/host/server-env.js.map +1 -0
- package/dist/host/server-launcher.d.ts +49 -0
- package/dist/host/server-launcher.d.ts.map +1 -0
- package/dist/host/server-launcher.js +43 -0
- package/dist/host/server-launcher.js.map +1 -0
- package/dist/host/tunnel/cloudflared-respawn.d.ts +58 -0
- package/dist/host/tunnel/cloudflared-respawn.d.ts.map +1 -0
- package/dist/host/tunnel/cloudflared-respawn.js +73 -0
- package/dist/host/tunnel/cloudflared-respawn.js.map +1 -0
- package/dist/host/tunnel/tunnel.d.ts +72 -0
- package/dist/host/tunnel/tunnel.d.ts.map +1 -0
- package/dist/host/tunnel/tunnel.js +462 -0
- package/dist/host/tunnel/tunnel.js.map +1 -0
- package/dist/host/web-telemetry.d.ts +16 -0
- package/dist/host/web-telemetry.d.ts.map +1 -0
- package/dist/host/web-telemetry.js +97 -0
- package/dist/host/web-telemetry.js.map +1 -0
- package/dist/index.d.ts +198 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +44 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +252 -0
- package/dist/logger.js.map +1 -0
- package/dist/main-facade.d.ts +51 -0
- package/dist/main-facade.d.ts.map +1 -0
- package/dist/main-facade.js +96 -0
- package/dist/main-facade.js.map +1 -0
- package/dist/meili.d.ts +19 -0
- package/dist/meili.d.ts.map +1 -0
- package/dist/meili.js +14 -0
- package/dist/meili.js.map +1 -0
- package/dist/splash-ui.d.ts +69 -0
- package/dist/splash-ui.d.ts.map +1 -0
- package/dist/splash-ui.js +431 -0
- package/dist/splash-ui.js.map +1 -0
- package/dist/tray.d.ts +44 -0
- package/dist/tray.d.ts.map +1 -0
- package/dist/tray.js +173 -0
- package/dist/tray.js.map +1 -0
- package/dist/updater.d.ts +36 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +257 -0
- package/dist/updater.js.map +1 -0
- package/dist/window-chrome.d.ts +12 -0
- package/dist/window-chrome.d.ts.map +1 -0
- package/dist/window-chrome.js +93 -0
- package/dist/window-chrome.js.map +1 -0
- package/dist-cjs/admin-window.js +116 -0
- package/dist-cjs/admin-window.js.map +1 -0
- package/dist-cjs/boot.js +139 -0
- package/dist-cjs/boot.js.map +1 -0
- package/dist-cjs/desktop/assistant-chrome.js +184 -0
- package/dist-cjs/desktop/assistant-chrome.js.map +1 -0
- package/dist-cjs/desktop/brand-desktop-runtime.js +3932 -0
- package/dist-cjs/desktop/brand-desktop-runtime.js.map +1 -0
- package/dist-cjs/desktop/desktop-session.js +171 -0
- package/dist-cjs/desktop/desktop-session.js.map +1 -0
- package/dist-cjs/desktop/error-page-html.js +92 -0
- package/dist-cjs/desktop/error-page-html.js.map +1 -0
- package/dist-cjs/desktop/legacy-brand-compat.js +56 -0
- package/dist-cjs/desktop/legacy-brand-compat.js.map +1 -0
- package/dist-cjs/desktop/oauth-loopback.js +144 -0
- package/dist-cjs/desktop/oauth-loopback.js.map +1 -0
- package/dist-cjs/desktop/profile-picker-html.js +216 -0
- package/dist-cjs/desktop/profile-picker-html.js.map +1 -0
- package/dist-cjs/desktop/remote-offline-html.js +91 -0
- package/dist-cjs/desktop/remote-offline-html.js.map +1 -0
- package/dist-cjs/factory-reset-runtime.js +117 -0
- package/dist-cjs/factory-reset-runtime.js.map +1 -0
- package/dist-cjs/host/ai-workspace/actions.js +247 -0
- package/dist-cjs/host/ai-workspace/actions.js.map +1 -0
- package/dist-cjs/host/ai-workspace/bindings.js +49 -0
- package/dist-cjs/host/ai-workspace/bindings.js.map +1 -0
- package/dist-cjs/host/ai-workspace/index.js +21 -0
- package/dist-cjs/host/ai-workspace/index.js.map +1 -0
- package/dist-cjs/host/ai-workspace/manager.js +528 -0
- package/dist-cjs/host/ai-workspace/manager.js.map +1 -0
- package/dist-cjs/host/ai-workspace/profile-window.js +125 -0
- package/dist-cjs/host/ai-workspace/profile-window.js.map +1 -0
- package/dist-cjs/host/ai-workspace/screencast.js +249 -0
- package/dist-cjs/host/ai-workspace/screencast.js.map +1 -0
- package/dist-cjs/host/ai-workspace/types.js +7 -0
- package/dist-cjs/host/ai-workspace/types.js.map +1 -0
- package/dist-cjs/host/brand-host-runtime.js +286 -0
- package/dist-cjs/host/brand-host-runtime.js.map +1 -0
- package/dist-cjs/host/brand-host-stack.js +259 -0
- package/dist-cjs/host/brand-host-stack.js.map +1 -0
- package/dist-cjs/host/brand-kernel-http.js +101 -0
- package/dist-cjs/host/brand-kernel-http.js.map +1 -0
- package/dist-cjs/host/brand-meili-boot.js +106 -0
- package/dist-cjs/host/brand-meili-boot.js.map +1 -0
- package/dist-cjs/host/bridge-client.js +191 -0
- package/dist-cjs/host/bridge-client.js.map +1 -0
- package/dist-cjs/host/browser-tabs/browser-tab-driver.js +158 -0
- package/dist-cjs/host/browser-tabs/browser-tab-driver.js.map +1 -0
- package/dist-cjs/host/browser-tabs/browser-tab-manager.js +766 -0
- package/dist-cjs/host/browser-tabs/browser-tab-manager.js.map +1 -0
- package/dist-cjs/host/browser-tabs/browser-tab-preload-path.js +35 -0
- package/dist-cjs/host/browser-tabs/browser-tab-preload-path.js.map +1 -0
- package/dist-cjs/host/browser-tabs/browser-tab-preload.js +12 -0
- package/dist-cjs/host/browser-tabs/browser-tab-preload.js.map +1 -0
- package/dist-cjs/host/browser-tabs/chrome-ua.js +41 -0
- package/dist-cjs/host/browser-tabs/chrome-ua.js.map +1 -0
- package/dist-cjs/host/browser-tabs/fake-cursor-inject.js +11 -0
- package/dist-cjs/host/browser-tabs/fake-cursor-inject.js.map +1 -0
- package/dist-cjs/host/browser-tabs/index.js +29 -0
- package/dist-cjs/host/browser-tabs/index.js.map +1 -0
- package/dist-cjs/host/browser-tabs/tab-load-state.js +59 -0
- package/dist-cjs/host/browser-tabs/tab-load-state.js.map +1 -0
- package/dist-cjs/host/browser-tabs/tab-url.js +62 -0
- package/dist-cjs/host/browser-tabs/tab-url.js.map +1 -0
- package/dist-cjs/host/context.js +20 -0
- package/dist-cjs/host/context.js.map +1 -0
- package/dist-cjs/host/contracts.js +32 -0
- package/dist-cjs/host/contracts.js.map +1 -0
- package/dist-cjs/host/crash-reporter.js +422 -0
- package/dist-cjs/host/crash-reporter.js.map +1 -0
- package/dist-cjs/host/ensure-kit-binaries.js +212 -0
- package/dist-cjs/host/ensure-kit-binaries.js.map +1 -0
- package/dist-cjs/host/feature-off-host.js +144 -0
- package/dist-cjs/host/feature-off-host.js.map +1 -0
- package/dist-cjs/host/hermes/crm-key.js +137 -0
- package/dist-cjs/host/hermes/crm-key.js.map +1 -0
- package/dist-cjs/host/hermes/ensure-crm-key-db.js +89 -0
- package/dist-cjs/host/hermes/ensure-crm-key-db.js.map +1 -0
- package/dist-cjs/host/hermes/launcher.js +981 -0
- package/dist-cjs/host/hermes/launcher.js.map +1 -0
- package/dist-cjs/host/hermes/runtime-bootstrap.js +853 -0
- package/dist-cjs/host/hermes/runtime-bootstrap.js.map +1 -0
- package/dist-cjs/host/hermes/skills-seed.js +110 -0
- package/dist-cjs/host/hermes/skills-seed.js.map +1 -0
- package/dist-cjs/host/host-stack.js +42 -0
- package/dist-cjs/host/host-stack.js.map +1 -0
- package/dist-cjs/host/kit-os-resources.js +96 -0
- package/dist-cjs/host/kit-os-resources.js.map +1 -0
- package/dist-cjs/host/load-electron.js +47 -0
- package/dist-cjs/host/load-electron.js.map +1 -0
- package/dist-cjs/host/local-config.js +640 -0
- package/dist-cjs/host/local-config.js.map +1 -0
- package/dist-cjs/host/meili/browse.js +103 -0
- package/dist-cjs/host/meili/browse.js.map +1 -0
- package/dist-cjs/host/meili/coherence-db.js +139 -0
- package/dist-cjs/host/meili/coherence-db.js.map +1 -0
- package/dist-cjs/host/meili/coherence-query.js +25 -0
- package/dist-cjs/host/meili/coherence-query.js.map +1 -0
- package/dist-cjs/host/meili/coherence.js +158 -0
- package/dist-cjs/host/meili/coherence.js.map +1 -0
- package/dist-cjs/host/meili/feed.js +108 -0
- package/dist-cjs/host/meili/feed.js.map +1 -0
- package/dist-cjs/host/meili/generic-indexer.js +340 -0
- package/dist-cjs/host/meili/generic-indexer.js.map +1 -0
- package/dist-cjs/host/meili/index-schema.js +79 -0
- package/dist-cjs/host/meili/index-schema.js.map +1 -0
- package/dist-cjs/host/meili/index.js +45 -0
- package/dist-cjs/host/meili/index.js.map +1 -0
- package/dist-cjs/host/meili/indexer.js +85 -0
- package/dist-cjs/host/meili/indexer.js.map +1 -0
- package/dist-cjs/host/meili-launcher.js +121 -0
- package/dist-cjs/host/meili-launcher.js.map +1 -0
- package/dist-cjs/host/n8n/agent-isolation.js +173 -0
- package/dist-cjs/host/n8n/agent-isolation.js.map +1 -0
- package/dist-cjs/host/n8n/api-key.js +314 -0
- package/dist-cjs/host/n8n/api-key.js.map +1 -0
- package/dist-cjs/host/n8n/launcher.js +1209 -0
- package/dist-cjs/host/n8n/launcher.js.map +1 -0
- package/dist-cjs/host/n8n/runtime-bootstrap.js +244 -0
- package/dist-cjs/host/n8n/runtime-bootstrap.js.map +1 -0
- package/dist-cjs/host/node-runtime.js +274 -0
- package/dist-cjs/host/node-runtime.js.map +1 -0
- package/dist-cjs/host/npm-cli.js +224 -0
- package/dist-cjs/host/npm-cli.js.map +1 -0
- package/dist-cjs/host/plugins/accept-check.js +176 -0
- package/dist-cjs/host/plugins/accept-check.js.map +1 -0
- package/dist-cjs/host/plugins/brand-bindings.js +78 -0
- package/dist-cjs/host/plugins/brand-bindings.js.map +1 -0
- package/dist-cjs/host/plugins/control-adapters.js +89 -0
- package/dist-cjs/host/plugins/control-adapters.js.map +1 -0
- package/dist-cjs/host/plugins/control-extras.js +397 -0
- package/dist-cjs/host/plugins/control-extras.js.map +1 -0
- package/dist-cjs/host/plugins/control-plane.js +130 -0
- package/dist-cjs/host/plugins/control-plane.js.map +1 -0
- package/dist-cjs/host/plugins/control-token.js +90 -0
- package/dist-cjs/host/plugins/control-token.js.map +1 -0
- package/dist-cjs/host/plugins/crm-key.js +135 -0
- package/dist-cjs/host/plugins/crm-key.js.map +1 -0
- package/dist-cjs/host/plugins/data.js +107 -0
- package/dist-cjs/host/plugins/data.js.map +1 -0
- package/dist-cjs/host/plugins/events.js +19 -0
- package/dist-cjs/host/plugins/events.js.map +1 -0
- package/dist-cjs/host/plugins/execution-grant.js +11 -0
- package/dist-cjs/host/plugins/execution-grant.js.map +1 -0
- package/dist-cjs/host/plugins/git.js +371 -0
- package/dist-cjs/host/plugins/git.js.map +1 -0
- package/dist-cjs/host/plugins/host.js +283 -0
- package/dist-cjs/host/plugins/host.js.map +1 -0
- package/dist-cjs/host/plugins/launcher.js +514 -0
- package/dist-cjs/host/plugins/launcher.js.map +1 -0
- package/dist-cjs/host/plugins/runtime.js +446 -0
- package/dist-cjs/host/plugins/runtime.js.map +1 -0
- package/dist-cjs/host/plugins/test-runner.js +112 -0
- package/dist-cjs/host/plugins/test-runner.js.map +1 -0
- package/dist-cjs/host/safe-storage.js +95 -0
- package/dist-cjs/host/safe-storage.js.map +1 -0
- package/dist-cjs/host/sandbox/embed-sandbox.js +396 -0
- package/dist-cjs/host/sandbox/embed-sandbox.js.map +1 -0
- package/dist-cjs/host/sandbox/os-sandbox.js +106 -0
- package/dist-cjs/host/sandbox/os-sandbox.js.map +1 -0
- package/dist-cjs/host/server-env.js +69 -0
- package/dist-cjs/host/server-env.js.map +1 -0
- package/dist-cjs/host/server-launcher.js +52 -0
- package/dist-cjs/host/server-launcher.js.map +1 -0
- package/dist-cjs/host/tunnel/cloudflared-respawn.js +80 -0
- package/dist-cjs/host/tunnel/cloudflared-respawn.js.map +1 -0
- package/dist-cjs/host/tunnel/tunnel.js +470 -0
- package/dist-cjs/host/tunnel/tunnel.js.map +1 -0
- package/dist-cjs/host/web-telemetry.js +100 -0
- package/dist-cjs/host/web-telemetry.js.map +1 -0
- package/dist-cjs/index.js +496 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/logger.js +269 -0
- package/dist-cjs/logger.js.map +1 -0
- package/dist-cjs/main-facade.js +139 -0
- package/dist-cjs/main-facade.js.map +1 -0
- package/dist-cjs/meili.js +51 -0
- package/dist-cjs/meili.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/splash-ui.js +447 -0
- package/dist-cjs/splash-ui.js.map +1 -0
- package/dist-cjs/tray.js +182 -0
- package/dist-cjs/tray.js.map +1 -0
- package/dist-cjs/updater.js +304 -0
- package/dist-cjs/updater.js.map +1 -0
- package/dist-cjs/window-chrome.js +98 -0
- package/dist-cjs/window-chrome.js.map +1 -0
- package/package.json +87 -0
- package/scripts/ensure-kit-binaries.mjs +73 -0
package/README.md
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
# @creezio/electron-shell
|
|
2
|
+
|
|
3
|
+
## Rôle
|
|
4
|
+
|
|
5
|
+
`@creezio/electron-shell` est le **desktop Electron** plateforme Creezio : boot desktop, fenêtres, tray, updater, splash, bridge, admin-window, overlays et browser-tabs.
|
|
6
|
+
|
|
7
|
+
> **P1.b (0.11.x)** : le host Node pur a été extrait vers
|
|
8
|
+
> [`@creezio/host-runtime`](../host-runtime/README.md) (hermes, n8n, tunnel,
|
|
9
|
+
> plugins, sandbox, ai-workspace, server-launcher, crash reporter…) et
|
|
10
|
+
> [`@creezio/search`](../search/README.md) (sous-domaine Meili). Ce package
|
|
11
|
+
> **ré-exporte tout** avec `@deprecated` — aucun import historique ne casse,
|
|
12
|
+
> mais la surface de ré-exports est figée
|
|
13
|
+
> (gate `test-phase-electron-shell-frozen-exports`) : le nouveau code host
|
|
14
|
+
> s'écrit dans les nouveaux packages. `resources/{vendor,scripts,bin}`
|
|
15
|
+
> vivent dans `@creezio/host-runtime` (P1.c).
|
|
16
|
+
|
|
17
|
+
Ce package est volontairement brand-agnostic : les marques fournissent leur `AppManifest`, leurs chemins, leurs stores locaux, leurs prefixes d'env et leurs hooks verticaux.
|
|
18
|
+
|
|
19
|
+
## Périmètre
|
|
20
|
+
|
|
21
|
+
Inclus :
|
|
22
|
+
|
|
23
|
+
- runtime desktop complet via `installBrandDesktopRuntime` ;
|
|
24
|
+
- host stack lazy via `createHostStack`, `createBrandHostStack` et `createBrandHostRuntime` ;
|
|
25
|
+
- launchers Next, Meilisearch, Hermes Agent/WebUI, n8n, Cloudflare tunnel ;
|
|
26
|
+
- runtime plugins : discovery, scaffold, start/stop/restart, git versions, control plane, grants, accept-check, tests, data migrations ;
|
|
27
|
+
- bindings marque pour plugins (`configurePluginHost`) et workspaces IA (`configureAiWorkspaceHost`) ;
|
|
28
|
+
- browser-tabs exporte separement via `@creezio/electron-shell/browser-tabs` ;
|
|
29
|
+
- bridge client, crash reporter, safe storage, local config, node/npm runtime, sandbox OS ;
|
|
30
|
+
- overlays desktop : assistant chrome, profile picker, error page, OAuth loopback.
|
|
31
|
+
|
|
32
|
+
Hors perimetre :
|
|
33
|
+
|
|
34
|
+
- logique metier verticale ;
|
|
35
|
+
- UI admin metier ;
|
|
36
|
+
- secrets hardcodes ;
|
|
37
|
+
- choix d'auth, d'ACL et de provisioning propres a une marque.
|
|
38
|
+
|
|
39
|
+
## Installation/build
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install
|
|
43
|
+
npm run build -w @creezio/electron-shell
|
|
44
|
+
npm run typecheck -w @creezio/electron-shell
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Le package publie :
|
|
48
|
+
|
|
49
|
+
- `@creezio/electron-shell` : barrel principal runtime/host ;
|
|
50
|
+
- `@creezio/electron-shell/browser-tabs` : sous-export a privilegier pour les tests Node et les imports qui ne doivent pas tirer tout le barrel principal.
|
|
51
|
+
|
|
52
|
+
`electron` et `electron-updater` sont des peer dependencies optionnelles, chargees seulement par les chemins host/runtime concernes.
|
|
53
|
+
|
|
54
|
+
## Configuration
|
|
55
|
+
|
|
56
|
+
### HostRuntimeContext
|
|
57
|
+
|
|
58
|
+
Le contexte host est le noyau commun des launchers :
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
import { createBrandHostRuntime } from "@creezio/electron-shell";
|
|
62
|
+
|
|
63
|
+
const hostRuntime = createBrandHostRuntime({
|
|
64
|
+
manifest,
|
|
65
|
+
store: () => localConfigStore,
|
|
66
|
+
paths,
|
|
67
|
+
hermesCrm,
|
|
68
|
+
n8nApiKey,
|
|
69
|
+
n8nAgent,
|
|
70
|
+
// Tunnel Cloudflare : auto-provisioning via l'API CF (0.10.0) — plus
|
|
71
|
+
// AUCUNE config tunnel côté runtime. Le contrat est lu depuis l'env :
|
|
72
|
+
// MYBRAND_CF_API_TOKEN / _CF_ACCOUNT_ID / _CF_ZONE_ID (variante marque)
|
|
73
|
+
// puis CREEZIO_CF_* (générique kit). Voir platform-core tunnel-cf-client.
|
|
74
|
+
npmUserDataSegment: "mybrand-npm",
|
|
75
|
+
secretFilePrefix: "mybrand",
|
|
76
|
+
hermesBridge: "full",
|
|
77
|
+
nodeEnsure: "desktop",
|
|
78
|
+
ensureDbScriptPath: () => brandEnsureCrmKeyDbScript(__dirname),
|
|
79
|
+
log: (scope, line) => log(scope, line),
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
`createBrandHostRuntime` fournit des singletons Hermes, n8n, tunnel, fleet et ensure Node. `createBrandHostRuntimeContext` reste disponible si une marque veut composer elle-meme.
|
|
84
|
+
|
|
85
|
+
### Host stack
|
|
86
|
+
|
|
87
|
+
`createHostStack({ ctx, store })` construit directement :
|
|
88
|
+
|
|
89
|
+
- `hermes`
|
|
90
|
+
- `n8n`
|
|
91
|
+
- `tunnel`
|
|
92
|
+
- `plugins`
|
|
93
|
+
- `startMeili`
|
|
94
|
+
- `startNextServerCore`
|
|
95
|
+
|
|
96
|
+
`createBrandHostStack(cfg)` ajoute une couche de wiring marque : ports, paths, env, sandbox, feature-off, catalogue, fleet, factory reset et getters lazy compatibles avec `installBrandDesktopRuntime`.
|
|
97
|
+
|
|
98
|
+
### Bindings plugins marque
|
|
99
|
+
|
|
100
|
+
Le runtime riche des plugins exige `configurePluginHost(bindings)` avant usage :
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
import {
|
|
104
|
+
configurePluginHost,
|
|
105
|
+
buildPluginControlPlaneAdapters,
|
|
106
|
+
} from "@creezio/electron-shell";
|
|
107
|
+
|
|
108
|
+
configurePluginHost({
|
|
109
|
+
envPrefix: "MYBRAND",
|
|
110
|
+
productName: "MyBrand",
|
|
111
|
+
brandId: "mybrand",
|
|
112
|
+
userDataDir: paths.userDataDir,
|
|
113
|
+
isPackaged: paths.isPackaged,
|
|
114
|
+
nodeBinary: paths.nodeBinary,
|
|
115
|
+
nodeScript: paths.nodeScript,
|
|
116
|
+
gitBinary: paths.gitBinary,
|
|
117
|
+
n8nHomeDir: paths.n8nHomeDir,
|
|
118
|
+
dbPath: paths.dbPath,
|
|
119
|
+
ensureDesktopNode: hostRuntime.ensureNode,
|
|
120
|
+
nodeMinForEmbeds: "22.15.0",
|
|
121
|
+
getN8nBridgeEnv,
|
|
122
|
+
n8nDesktopPort: 5678,
|
|
123
|
+
getLlmKeys: () => store.getLlmKeys(),
|
|
124
|
+
hostRuntimeContext: () => hostRuntime.hostRuntimeContext(),
|
|
125
|
+
manifest,
|
|
126
|
+
buildControlPlaneAdapters: () => buildPluginControlPlaneAdapters(),
|
|
127
|
+
createControlPlaneAcl: () => acl,
|
|
128
|
+
ensureProductHubStore: () => productHubStore,
|
|
129
|
+
closeProductHubStore: () => productHubStore.close(),
|
|
130
|
+
apiKeyPrefix: "mybrand_live_",
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Les variables plugins sont posees sur `${envPrefix}_*` et, si configure, sur les aliases legacy (`legacyEnvAliases`). Les permissions du manifest plugin pilotent l'injection CRM, n8n et LLM.
|
|
135
|
+
|
|
136
|
+
### Bindings ai-workspace
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
import { configureAiWorkspaceHost } from "@creezio/electron-shell";
|
|
140
|
+
|
|
141
|
+
configureAiWorkspaceHost({
|
|
142
|
+
productName: "MyBrand",
|
|
143
|
+
sessionCookieName: "mybrand_session",
|
|
144
|
+
aiPartitionSlug: "mybrand-ai",
|
|
145
|
+
shareWebSessionsEnvKey: "MYBRAND_AI_SHARE_WEB_SESSIONS",
|
|
146
|
+
sessionStoragePrefix: "mybrand-ai-workspace",
|
|
147
|
+
preloadPath: paths.preloadPath,
|
|
148
|
+
createSupplierTabs,
|
|
149
|
+
reportCrash,
|
|
150
|
+
instrumentWebContents,
|
|
151
|
+
});
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Chaque IA obtient une partition `persist:{aiPartitionSlug}-{userId}`, une vue CRM et son manager d'onglets isole.
|
|
155
|
+
|
|
156
|
+
## API publique + exemples
|
|
157
|
+
|
|
158
|
+
### Runtime desktop
|
|
159
|
+
|
|
160
|
+
```ts
|
|
161
|
+
import { installBrandDesktopRuntime } from "@creezio/electron-shell";
|
|
162
|
+
|
|
163
|
+
installBrandDesktopRuntime({
|
|
164
|
+
manifest,
|
|
165
|
+
bridgeName: manifest.bridgeName,
|
|
166
|
+
accentColor: "#1967d2",
|
|
167
|
+
cssPrefix: "mybrand",
|
|
168
|
+
envPrefix: manifest.envPrefix,
|
|
169
|
+
sessionCookieName: "mybrand_session",
|
|
170
|
+
profileArgPrefix: "--mybrand-profile=",
|
|
171
|
+
defaultDesktopPort: 18790,
|
|
172
|
+
appKind: "client",
|
|
173
|
+
bootBehavior,
|
|
174
|
+
bootProfileLaunch,
|
|
175
|
+
sessionPartition: "persist:mybrand",
|
|
176
|
+
deepLinkProtocol: manifest.deepLinkProtocol,
|
|
177
|
+
store: () => localConfigStore,
|
|
178
|
+
hosts,
|
|
179
|
+
paths,
|
|
180
|
+
vertical,
|
|
181
|
+
createLocalSplashSteps,
|
|
182
|
+
electron,
|
|
183
|
+
});
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Le runtime installe les handlers Electron, gere le boot local/remote, lance les sidecars, maintient le bridge, recharge Next lors des changements BYOK et garde le tray/updater coherent.
|
|
187
|
+
|
|
188
|
+
### Server launcher
|
|
189
|
+
|
|
190
|
+
```ts
|
|
191
|
+
import { startBrandNextServer } from "@creezio/electron-shell";
|
|
192
|
+
|
|
193
|
+
const server = await startBrandNextServer(deps, {
|
|
194
|
+
meiliHost: meili?.host,
|
|
195
|
+
meiliMasterKey: meili?.masterKey,
|
|
196
|
+
bindHost: "127.0.0.1",
|
|
197
|
+
extraEnv: {
|
|
198
|
+
APP_PUBLIC_URL: tunnel.publicUrlForServer() ?? "",
|
|
199
|
+
},
|
|
200
|
+
onLog: (line) => log("next", line),
|
|
201
|
+
});
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Hermes / n8n / Meili / tunnel
|
|
205
|
+
|
|
206
|
+
```ts
|
|
207
|
+
const hermes = await hosts.hermes().startHermes({
|
|
208
|
+
connectionMode: "local",
|
|
209
|
+
crmPort: server.port,
|
|
210
|
+
autoBootstrap: true,
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
const n8n = await hosts.n8n().startN8n({
|
|
214
|
+
connectionMode: "local",
|
|
215
|
+
publicBaseUrl: hosts.tunnel().publicUrlForEmbedService("n8n"),
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
const meili = await hosts.meili().startMeili((line) => log("meili", line));
|
|
219
|
+
|
|
220
|
+
await hosts.tunnel().configureTunnelIngress({
|
|
221
|
+
crmPort: server.port,
|
|
222
|
+
n8nPort: 5678,
|
|
223
|
+
hermesPort: 7860,
|
|
224
|
+
});
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Plugins launcher/restart
|
|
228
|
+
|
|
229
|
+
```ts
|
|
230
|
+
import {
|
|
231
|
+
startEnabledPlugins,
|
|
232
|
+
restartPlugin,
|
|
233
|
+
pluginsStatusPayloadWithGit,
|
|
234
|
+
} from "@creezio/electron-shell";
|
|
235
|
+
|
|
236
|
+
setPluginsCrmPort(server.port);
|
|
237
|
+
await startEnabledPlugins({ onLog: (line) => log("plugins", line) });
|
|
238
|
+
await restartPlugin("my-plugin");
|
|
239
|
+
const status = await pluginsStatusPayloadWithGit();
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
`restartPlugin` tue l'ancien child, attend la sortie, relance les plugins actives et attend un port si le plugin expose un panel.
|
|
243
|
+
|
|
244
|
+
### Control plane plugins
|
|
245
|
+
|
|
246
|
+
```ts
|
|
247
|
+
import { startHostPluginControlPlane } from "@creezio/electron-shell";
|
|
248
|
+
|
|
249
|
+
const state = await startHostPluginControlPlane({
|
|
250
|
+
ctx: hostRuntime.hostRuntimeContext(),
|
|
251
|
+
productHubStore,
|
|
252
|
+
acl,
|
|
253
|
+
preHandle: handleBrandExtras,
|
|
254
|
+
});
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Le control plane loopback expose status, creation, ecriture de fichiers, enable/restart/delete et fetch Product Hub. Le token vient de `ensurePluginControlToken`.
|
|
258
|
+
|
|
259
|
+
### Browser tabs
|
|
260
|
+
|
|
261
|
+
Importer depuis le sous-export :
|
|
262
|
+
|
|
263
|
+
```ts
|
|
264
|
+
import {
|
|
265
|
+
BrowserTabManager,
|
|
266
|
+
configureBrowserTabs,
|
|
267
|
+
executeSupplierAction,
|
|
268
|
+
} from "@creezio/electron-shell/browser-tabs";
|
|
269
|
+
|
|
270
|
+
configureBrowserTabs({
|
|
271
|
+
resolvePreloadPath: () => paths.preloadPath("browser-tab-preload.js"),
|
|
272
|
+
});
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Les onglets externes utilisent des `WebContentsView`, des partitions persistantes par site et des actions CDP trusted (`external_*`, alias legacy `supplier_*`).
|
|
276
|
+
|
|
277
|
+
### AI workspace
|
|
278
|
+
|
|
279
|
+
```ts
|
|
280
|
+
import { AiWorkspaceManager } from "@creezio/electron-shell";
|
|
281
|
+
|
|
282
|
+
const manager = new AiWorkspaceManager(mainWindow, ownerView, ownerTabs, {
|
|
283
|
+
defaultPresentation: () => "window",
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
await manager.ensure({
|
|
287
|
+
userId: "ai_1",
|
|
288
|
+
token: sessionJwt,
|
|
289
|
+
baseUrl: server.baseUrl,
|
|
290
|
+
label: "Assistant IA",
|
|
291
|
+
});
|
|
292
|
+
manager.show("ai_1");
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
## Flux
|
|
296
|
+
|
|
297
|
+
### Boot local
|
|
298
|
+
|
|
299
|
+
1. La marque prepare `AppManifest`, chemins, store local et host runtime.
|
|
300
|
+
2. `installBrandDesktopRuntime` installe les handlers Electron apres le single instance lock.
|
|
301
|
+
3. La splash suit Node, catalogue, Meili, Hermes, n8n, tunnel et serveur Next.
|
|
302
|
+
4. `startBrandNextServer` spawn Next avec auth, secrets MCP, BYOK, Meili, embeds et env plugins.
|
|
303
|
+
5. Le bridge client se connecte au CRM local.
|
|
304
|
+
6. Le tunnel synchronise les ports CRM/n8n/Hermes si configure.
|
|
305
|
+
7. Les plugins actives sont demarrees et leur runtime state est ecrit.
|
|
306
|
+
|
|
307
|
+
### Mode remote
|
|
308
|
+
|
|
309
|
+
En mode remote, les modules host-only lourds ne sont pas lances. Les payloads de statut Hermes/n8n sont derives de l'origine distante pour garder les formes UI compatibles.
|
|
310
|
+
|
|
311
|
+
### Plugins
|
|
312
|
+
|
|
313
|
+
1. `configurePluginHost` injecte les chemins, env et adapters.
|
|
314
|
+
2. `discoverPlugins` lit les manifests.
|
|
315
|
+
3. `startEnabledPlugins` assure Node, cree les cles CRM plugin si permission, injecte n8n/LLM selon permissions et spawn le main plugin.
|
|
316
|
+
4. Les logs et ports detectes alimentent le runtime state.
|
|
317
|
+
5. Le control plane autorise scaffold, write files, enable, restart, delete, git versions et grants.
|
|
318
|
+
|
|
319
|
+
### Browser-tabs / AI workspace
|
|
320
|
+
|
|
321
|
+
Les browser-tabs servent a afficher et piloter des sites externes dans des `WebContentsView` isolees. L'AI workspace cree une vue CRM par persona IA et son propre manager d'onglets ; le mode `window` ouvre une fenetre parallele, le mode `embedded` remplace temporairement la vue owner.
|
|
322
|
+
|
|
323
|
+
## Intégration marques
|
|
324
|
+
|
|
325
|
+
La marque doit fournir :
|
|
326
|
+
|
|
327
|
+
- `AppManifest` et `envPrefix` ;
|
|
328
|
+
- chemins absolus : userData, resources, DB, Next standalone, Node, Meili, preloads ;
|
|
329
|
+
- store local : auth, LLM keys, tunnel config, embed configs, setup state ;
|
|
330
|
+
- hooks verticals : Product Hub store, ACL, extras control plane, catalogue, fleet si actif ;
|
|
331
|
+
- `configurePluginHost` avant tout usage du runtime plugins riche ;
|
|
332
|
+
- `configureAiWorkspaceHost` avant creation de workspaces IA ;
|
|
333
|
+
- `configureBrowserTabs` si le preload par defaut ne suffit pas.
|
|
334
|
+
|
|
335
|
+
Pour une marque sans plugins/flotte, utiliser `pluginsFeatureOff` / `createFeatureOffHost` afin de conserver les contrats UI sans lancer de sidecars.
|
|
336
|
+
|
|
337
|
+
## Dépendances
|
|
338
|
+
|
|
339
|
+
- `@creezio/brand-config` : `AppManifest`, host-only modules, env keys ;
|
|
340
|
+
- `@creezio/platform-core` : paths, plugins purs, embeds status, tunnel URLs, runtime helpers ;
|
|
341
|
+
- `@creezio/product-hub` : control plane plugins et tokens ;
|
|
342
|
+
- `@creezio/observability` : crash/fleet/ops journal ;
|
|
343
|
+
- `@creezio/shell` : contrats bridge ;
|
|
344
|
+
- peer deps `electron` et `electron-updater`.
|
|
345
|
+
|
|
346
|
+
## Voir aussi
|
|
347
|
+
|
|
348
|
+
- `AGENTS.md`
|
|
349
|
+
- `docs/FILES.md`
|
|
350
|
+
- sous-export `@creezio/electron-shell/browser-tabs`
|
|
351
|
+
- `packages/desktop-tooling/README.md` pour publish/remote-build
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fenêtre « app admin » (cockpit serveur → /dashboard).
|
|
3
|
+
* Port paramétré de electron/admin-window.ts.
|
|
4
|
+
*/
|
|
5
|
+
export declare function adminWindowVisible(): boolean;
|
|
6
|
+
export declare function openAdminWindow(opts: {
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
partition: string;
|
|
9
|
+
productName: string;
|
|
10
|
+
preloadPath?: string;
|
|
11
|
+
path?: string;
|
|
12
|
+
instrument?: (view: InstanceType<typeof import("electron").WebContentsView>) => void;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
ok: boolean;
|
|
15
|
+
focused?: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function closeAdminWindow(): void;
|
|
18
|
+
//# sourceMappingURL=admin-window.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-window.d.ts","sourceRoot":"","sources":["../src/admin-window.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,YAAY,CAAC,cAAc,UAAU,EAAE,eAAe,CAAC,KAC1D,IAAI,CAAC;CACX,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAyD9C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAUvC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fenêtre « app admin » (cockpit serveur → /dashboard).
|
|
3
|
+
* Port paramétré de electron/admin-window.ts.
|
|
4
|
+
*/
|
|
5
|
+
import fs from "node:fs";
|
|
6
|
+
import { logError } from "@creezio/host-runtime";
|
|
7
|
+
let current = null;
|
|
8
|
+
export function adminWindowVisible() {
|
|
9
|
+
return Boolean(current && !current.win.isDestroyed());
|
|
10
|
+
}
|
|
11
|
+
export async function openAdminWindow(opts) {
|
|
12
|
+
const electron = await import("electron");
|
|
13
|
+
const BaseWindow = electron.BaseWindow;
|
|
14
|
+
const WebContentsView = electron.WebContentsView;
|
|
15
|
+
if (current && !current.win.isDestroyed()) {
|
|
16
|
+
current.win.show();
|
|
17
|
+
current.win.focus();
|
|
18
|
+
return { ok: true, focused: true };
|
|
19
|
+
}
|
|
20
|
+
const win = new BaseWindow({
|
|
21
|
+
width: 1360,
|
|
22
|
+
height: 860,
|
|
23
|
+
minWidth: 960,
|
|
24
|
+
minHeight: 600,
|
|
25
|
+
title: `${opts.productName} — App admin`,
|
|
26
|
+
backgroundColor: "#14182f",
|
|
27
|
+
autoHideMenuBar: true,
|
|
28
|
+
});
|
|
29
|
+
const preload = opts.preloadPath && fs.existsSync(opts.preloadPath)
|
|
30
|
+
? opts.preloadPath
|
|
31
|
+
: undefined;
|
|
32
|
+
const view = new WebContentsView({
|
|
33
|
+
webPreferences: {
|
|
34
|
+
partition: opts.partition,
|
|
35
|
+
...(preload ? { preload } : {}),
|
|
36
|
+
contextIsolation: true,
|
|
37
|
+
sandbox: true,
|
|
38
|
+
nodeIntegration: false,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
win.contentView.addChildView(view);
|
|
42
|
+
const fit = () => {
|
|
43
|
+
const { width, height } = win.getContentBounds();
|
|
44
|
+
view.setBounds({ x: 0, y: 0, width, height });
|
|
45
|
+
};
|
|
46
|
+
fit();
|
|
47
|
+
win.on("resize", fit);
|
|
48
|
+
win.on("closed", (() => {
|
|
49
|
+
current = null;
|
|
50
|
+
}));
|
|
51
|
+
opts.instrument?.(view);
|
|
52
|
+
current = { win, view };
|
|
53
|
+
const adminPath = opts.path ?? "/dashboard";
|
|
54
|
+
const target = `${opts.baseUrl.replace(/\/+$/, "")}${adminPath.startsWith("/") ? adminPath : `/${adminPath}`}`;
|
|
55
|
+
try {
|
|
56
|
+
await view.webContents.loadURL(target);
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
logError("admin-window", e);
|
|
60
|
+
}
|
|
61
|
+
return { ok: true };
|
|
62
|
+
}
|
|
63
|
+
export function closeAdminWindow() {
|
|
64
|
+
try {
|
|
65
|
+
if (current && !current.win.isDestroyed()) {
|
|
66
|
+
// BaseWindow n'expose pas toujours destroy dans le shim — hide + drop.
|
|
67
|
+
current.win.hide();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
/* ignore */
|
|
72
|
+
}
|
|
73
|
+
current = null;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=admin-window.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-window.js","sourceRoot":"","sources":["../src/admin-window.ts"],"names":[],"mappings":"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"}
|
package/dist/boot.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Façade boot Electron plateforme — structure générique (pas le métier).
|
|
3
|
+
*
|
|
4
|
+
* Les apps marques appellent `prepareDesktopBoot(manifest)` **avant**
|
|
5
|
+
* `app.requestSingleInstanceLock()` pour isoler userData Client/Serveur.
|
|
6
|
+
*
|
|
7
|
+
* Packagé : userData = `{installDir}/data/` (portable, pas Roaming).
|
|
8
|
+
* Dev : remap segment APPDATA historique si kind client/server.
|
|
9
|
+
*/
|
|
10
|
+
import type { AppManifest } from "@creezio/brand-config";
|
|
11
|
+
import { type BootBehavior, type ProfileLaunch, type RuntimeAppKind } from "@creezio/platform-core";
|
|
12
|
+
export type DesktopBootContext = {
|
|
13
|
+
manifest: AppManifest;
|
|
14
|
+
appKind: RuntimeAppKind;
|
|
15
|
+
bootBehavior: BootBehavior;
|
|
16
|
+
profileLaunch: ProfileLaunch;
|
|
17
|
+
sessionPartition: string;
|
|
18
|
+
/** userData effectif après éventuel setPath. */
|
|
19
|
+
userDataDir: string;
|
|
20
|
+
/** true si ancré sous {installDir}/data. */
|
|
21
|
+
installDataLayout: boolean;
|
|
22
|
+
};
|
|
23
|
+
export type PrepareDesktopBootOptions = {
|
|
24
|
+
/** Dossiers candidats pour app-kind.json (à côté du main compilé). */
|
|
25
|
+
appKindDirs?: string[];
|
|
26
|
+
argv?: string[];
|
|
27
|
+
env?: NodeJS.ProcessEnv;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Résout kind + profil + comportement de boot, applique userData / AppUserModelId.
|
|
31
|
+
* À appeler tôt dans main (après import electron, avant single-instance lock).
|
|
32
|
+
*/
|
|
33
|
+
export declare function prepareDesktopBoot(manifest: AppManifest, options?: PrepareDesktopBootOptions): Promise<DesktopBootContext>;
|
|
34
|
+
/** Écrit `app-kind.json` à côté du main packagé (outil build). */
|
|
35
|
+
export declare function writeAppKindFile(outDir: string, kind: "server" | "client"): string;
|
|
36
|
+
//# sourceMappingURL=boot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAWL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,kBAAkB,CAAC,CA0E7B;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,GAAG,QAAQ,GACxB,MAAM,CASR"}
|
package/dist/boot.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Façade boot Electron plateforme — structure générique (pas le métier).
|
|
3
|
+
*
|
|
4
|
+
* Les apps marques appellent `prepareDesktopBoot(manifest)` **avant**
|
|
5
|
+
* `app.requestSingleInstanceLock()` pour isoler userData Client/Serveur.
|
|
6
|
+
*
|
|
7
|
+
* Packagé : userData = `{installDir}/data/` (portable, pas Roaming).
|
|
8
|
+
* Dev : remap segment APPDATA historique si kind client/server.
|
|
9
|
+
*/
|
|
10
|
+
import fs from "node:fs";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
import { appSessionPartition, envKey } from "@creezio/brand-config";
|
|
13
|
+
import { APP_KIND_FILENAME, appKindEnvValue, appUserModelIdFor, bootBehaviorFor, displayNameFor, parseProfileArgv, readAppKindFile, resolveAppKind, resolvePackagedDataDir, userDataDirForAppKind, } from "@creezio/platform-core";
|
|
14
|
+
import { ensureLogsDir } from "@creezio/host-runtime";
|
|
15
|
+
/**
|
|
16
|
+
* Résout kind + profil + comportement de boot, applique userData / AppUserModelId.
|
|
17
|
+
* À appeler tôt dans main (après import electron, avant single-instance lock).
|
|
18
|
+
*/
|
|
19
|
+
export async function prepareDesktopBoot(manifest, options = {}) {
|
|
20
|
+
const { app } = await import("electron");
|
|
21
|
+
const env = options.env ?? process.env;
|
|
22
|
+
const argv = options.argv ?? process.argv;
|
|
23
|
+
const fileKind = readAppKindFile(options.appKindDirs ?? [
|
|
24
|
+
path.dirname(process.execPath),
|
|
25
|
+
path.join(process.resourcesPath || "", "app"),
|
|
26
|
+
path.join(process.resourcesPath || "", "build", "electron"),
|
|
27
|
+
]);
|
|
28
|
+
const appKind = resolveAppKind({
|
|
29
|
+
env: appKindEnvValue(manifest, env) || env[envKey(manifest, "APP_KIND")],
|
|
30
|
+
fileKind,
|
|
31
|
+
});
|
|
32
|
+
const profileLaunch = parseProfileArgv(argv, manifest);
|
|
33
|
+
const bootBehavior = bootBehaviorFor(appKind, profileLaunch);
|
|
34
|
+
let userData = app.getPath("userData");
|
|
35
|
+
let installDataLayout = false;
|
|
36
|
+
// Packagé : ancrer sous {installDir}/data (writable, visible pour l'utilisateur).
|
|
37
|
+
if (app.isPackaged) {
|
|
38
|
+
const dataDir = resolvePackagedDataDir({
|
|
39
|
+
execPath: process.execPath,
|
|
40
|
+
isPackaged: true,
|
|
41
|
+
env,
|
|
42
|
+
});
|
|
43
|
+
if (dataDir) {
|
|
44
|
+
fs.mkdirSync(dataDir, { recursive: true });
|
|
45
|
+
if (path.resolve(dataDir) !== path.resolve(userData)) {
|
|
46
|
+
app.setPath("userData", dataDir);
|
|
47
|
+
userData = dataDir;
|
|
48
|
+
}
|
|
49
|
+
installDataLayout = true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (appKind === "server" || appKind === "client") {
|
|
53
|
+
// Dev / unpackaged : remap segment historique (comportement inchangé).
|
|
54
|
+
const target = userDataDirForAppKind(manifest, appKind, userData);
|
|
55
|
+
if (target && path.resolve(target) !== path.resolve(userData)) {
|
|
56
|
+
fs.mkdirSync(target, { recursive: true });
|
|
57
|
+
app.setPath("userData", target);
|
|
58
|
+
userData = target;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (appKind === "server" || appKind === "client") {
|
|
62
|
+
app.setName(displayNameFor(manifest, appKind));
|
|
63
|
+
try {
|
|
64
|
+
app.setAppUserModelId(appUserModelIdFor(manifest, appKind));
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
/* non-Windows */
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Premier lancement : créer logs/ + crash-reports/ immédiatement.
|
|
71
|
+
try {
|
|
72
|
+
ensureLogsDir(userData);
|
|
73
|
+
fs.mkdirSync(path.join(userData, "crash-reports"), { recursive: true });
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
/* best-effort — initEarlyBootLogger / initLogger ont des fallbacks */
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
manifest,
|
|
80
|
+
appKind,
|
|
81
|
+
bootBehavior,
|
|
82
|
+
profileLaunch,
|
|
83
|
+
sessionPartition: appSessionPartition(manifest),
|
|
84
|
+
userDataDir: userData,
|
|
85
|
+
installDataLayout,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** Écrit `app-kind.json` à côté du main packagé (outil build). */
|
|
89
|
+
export function writeAppKindFile(outDir, kind) {
|
|
90
|
+
// En asar packagé, le dossier n'est pas inscriptible — no-op.
|
|
91
|
+
if (outDir.includes(`${path.sep}app.asar`) || outDir.includes(".asar")) {
|
|
92
|
+
return path.join(outDir, APP_KIND_FILENAME);
|
|
93
|
+
}
|
|
94
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
95
|
+
const out = path.join(outDir, APP_KIND_FILENAME);
|
|
96
|
+
fs.writeFileSync(out, JSON.stringify({ kind }, null, 2) + "\n", "utf8");
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=boot.js.map
|
package/dist/boot.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,qBAAqB,GAItB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAqBtD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAqB,EACrB,UAAqC,EAAE;IAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1C,MAAM,QAAQ,GAAG,eAAe,CAC9B,OAAO,CAAC,WAAW,IAAI;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,EAAE,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC;KAC5D,CACF,CAAC;IACF,MAAM,OAAO,GAAG,cAAc,CAAC;QAC7B,GAAG,EAAE,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxE,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAE7D,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,kFAAkF;IAClF,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,sBAAsB,CAAC;YACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,IAAI;YAChB,GAAG;SACJ,CAAC,CAAC;QACH,IAAI,OAAO,EAAE,CAAC;YACZ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACjC,QAAQ,GAAG,OAAO,CAAC;YACrB,CAAC;YACD,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxD,uEAAuE;QACvE,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClE,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAChC,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACjD,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC;YACH,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,IAAI,CAAC;QACH,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IAED,OAAO;QACL,QAAQ;QACR,OAAO;QACP,YAAY;QACZ,aAAa;QACb,gBAAgB,EAAE,mBAAmB,CAAC,QAAQ,CAAC;QAC/C,WAAW,EAAE,QAAQ;QACrB,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,IAAyB;IAEzB,8DAA8D;IAC9D,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9C,CAAC;IACD,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACjD,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACxE,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chrome assistant Electron (FAB) — gold TempoFlow paramétré (deepLink / title).
|
|
3
|
+
* Electron chargé via loadElectron (pas d'import top-level — tests kit Node).
|
|
4
|
+
*/
|
|
5
|
+
export declare const ASSISTANT_FAB_SIZE_PX = 56;
|
|
6
|
+
export declare const ASSISTANT_FAB_MARGIN_PX = 20;
|
|
7
|
+
export type AssistantChromeMode = "fab" | "hidden";
|
|
8
|
+
export type ContentRect = {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
};
|
|
14
|
+
export type AssistantChromeBrand = {
|
|
15
|
+
productName: string;
|
|
16
|
+
/** Protocole deep-link, ex. `tempoflow-assistant`. */
|
|
17
|
+
assistantProtocol: string;
|
|
18
|
+
accent?: string;
|
|
19
|
+
accentHover?: string;
|
|
20
|
+
};
|
|
21
|
+
export declare function assistantFabScreenRect(windowWidth: number, windowHeight: number): ContentRect;
|
|
22
|
+
export declare function rectsOverlap(a: ContentRect, b: ContentRect): boolean;
|
|
23
|
+
type ElectronWin = InstanceType<typeof import("electron").BaseWindow>;
|
|
24
|
+
type ElectronView = InstanceType<typeof import("electron").WebContentsView>;
|
|
25
|
+
export declare class AssistantChromeOverlay {
|
|
26
|
+
private win;
|
|
27
|
+
private onOpenRequest;
|
|
28
|
+
private view;
|
|
29
|
+
private mode;
|
|
30
|
+
private openUrlPrefix;
|
|
31
|
+
constructor(win: ElectronWin, onOpenRequest: () => void, brand: AssistantChromeBrand);
|
|
32
|
+
getView(): ElectronView;
|
|
33
|
+
getMode(): AssistantChromeMode;
|
|
34
|
+
setMode(mode: AssistantChromeMode): void;
|
|
35
|
+
getBounds(): ContentRect;
|
|
36
|
+
isVisible(): boolean;
|
|
37
|
+
ensureTop(): void;
|
|
38
|
+
destroy(): void;
|
|
39
|
+
private applyBounds;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=assistant-chrome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-chrome.d.ts","sourceRoot":"","sources":["../../src/desktop/assistant-chrome.ts"],"names":[],"mappings":"AACA;;;GAGG;AAKH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,WAAW,CAab;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAOpE;AAqCD,KAAK,WAAW,GAAG,YAAY,CAAC,cAAc,UAAU,EAAE,UAAU,CAAC,CAAC;AACtE,KAAK,YAAY,GAAG,YAAY,CAAC,cAAc,UAAU,EAAE,eAAe,CAAC,CAAC;AAE5E,qBAAa,sBAAsB;IAM/B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,aAAa;IANvB,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,aAAa,CAAS;gBAGpB,GAAG,EAAE,WAAW,EAChB,aAAa,EAAE,MAAM,IAAI,EACjC,KAAK,EAAE,oBAAoB;IAqC7B,OAAO,IAAI,YAAY;IAIvB,OAAO,IAAI,mBAAmB;IAI9B,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAMxC,SAAS,IAAI,WAAW;IASxB,SAAS,IAAI,OAAO;IAQpB,SAAS,IAAI,IAAI;IAejB,OAAO,IAAI,IAAI;IAaf,OAAO,CAAC,WAAW;CAcpB"}
|