@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
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Politique « OS desktop Creezio » — périmètre d'exécution strict.
|
|
3
|
+
*
|
|
4
|
+
* Principe : un build packagé ne doit JAMAIS résoudre un binaire via le PATH
|
|
5
|
+
* utilisateur, ni accepter un override d'environnement pointant hors du
|
|
6
|
+
* sandbox. Les seuls exécutables légitimes sont :
|
|
7
|
+
* - ceux packagés sous `process.resourcesPath` (Node, Meili, git, cloudflared…)
|
|
8
|
+
* - ceux installés par desktop sous `{userData}` (venv Hermes, npm-cli…)
|
|
9
|
+
* - les utilitaires système FONDAMENTAUX de l'OS, résolus par CHEMIN ABSOLU
|
|
10
|
+
* connu (jamais par nom sur le PATH) : PowerShell, tar, cmd, bash.
|
|
11
|
+
*
|
|
12
|
+
* Aucun import Electron ici : module pur, testable depuis Node.
|
|
13
|
+
*/
|
|
14
|
+
import fs from "node:fs";
|
|
15
|
+
import path from "node:path";
|
|
16
|
+
/**
|
|
17
|
+
* Les overrides `{PREFIX}_*_BIN`, `HERMES_BIN`, `TF2_USER_DATA_OVERRIDE`, etc. ne sont
|
|
18
|
+
* honorés qu'en build NON packagé (dev / CI / tests). En prod ils sont ignorés :
|
|
19
|
+
* un malware ou un raccourci piégé ne doit pas pouvoir détourner un spawn.
|
|
20
|
+
*/
|
|
21
|
+
export function overridesAllowed(isPackaged) {
|
|
22
|
+
return !isPackaged;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Répertoires système où un binaire OS fondamental est acceptable, par nom.
|
|
26
|
+
* Retourne le premier chemin absolu existant, ou null.
|
|
27
|
+
*/
|
|
28
|
+
export function resolveSystemBinary(name, opts) {
|
|
29
|
+
const platform = opts?.platform || process.platform;
|
|
30
|
+
const env = opts?.env || process.env;
|
|
31
|
+
const exists = opts?.existsSync || fs.existsSync;
|
|
32
|
+
if (platform === "win32") {
|
|
33
|
+
const sysRoot = (env.SystemRoot || env.windir || "C:\\Windows").replace(/[\\/]+$/, "");
|
|
34
|
+
const sys32 = path.win32.join(sysRoot, "System32");
|
|
35
|
+
const candidates = {
|
|
36
|
+
powershell: [
|
|
37
|
+
path.win32.join(sys32, "WindowsPowerShell", "v1.0", "powershell.exe"),
|
|
38
|
+
],
|
|
39
|
+
cmd: [path.win32.join(sys32, "cmd.exe")],
|
|
40
|
+
// tar.exe (bsdtar) livré avec Windows 10 build 17063+.
|
|
41
|
+
tar: [path.win32.join(sys32, "tar.exe")],
|
|
42
|
+
taskkill: [path.win32.join(sys32, "taskkill.exe")],
|
|
43
|
+
// Git bash (rare) — resources MinGit géré ailleurs ; pas de fallback OS.
|
|
44
|
+
bash: [],
|
|
45
|
+
};
|
|
46
|
+
for (const c of candidates[name] || []) {
|
|
47
|
+
if (exists(c))
|
|
48
|
+
return c;
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
// POSIX (dev Linux / mac lab) : chemins standards.
|
|
53
|
+
const posix = {
|
|
54
|
+
bash: ["/bin/bash", "/usr/bin/bash"],
|
|
55
|
+
tar: ["/bin/tar", "/usr/bin/tar"],
|
|
56
|
+
cmd: [],
|
|
57
|
+
powershell: [],
|
|
58
|
+
taskkill: [],
|
|
59
|
+
};
|
|
60
|
+
for (const c of posix[name] || []) {
|
|
61
|
+
if (exists(c))
|
|
62
|
+
return c;
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* PATH minimal pour un process enfant confiné : uniquement les dossiers
|
|
68
|
+
* desktop (Node, binaires runtime) + le System32 de l'OS (pour que les
|
|
69
|
+
* utilitaires fondamentaux résolus en absolu trouvent leurs DLL). JAMAIS le
|
|
70
|
+
* PATH utilisateur complet — pas de résolution d'outils tiers installés.
|
|
71
|
+
*/
|
|
72
|
+
export function buildConfinedPath(opts) {
|
|
73
|
+
const env = opts.env || {};
|
|
74
|
+
const sep = opts.platform === "win32" ? ";" : ":";
|
|
75
|
+
const dirs = [...opts.toolDirs];
|
|
76
|
+
if (opts.platform === "win32") {
|
|
77
|
+
const sysRoot = (env.SystemRoot || env.windir || "C:\\Windows").replace(/[\\/]+$/, "");
|
|
78
|
+
dirs.push(path.win32.join(sysRoot, "System32"), sysRoot, path.win32.join(sysRoot, "System32", "Wbem"), path.win32.join(sysRoot, "System32", "WindowsPowerShell", "v1.0"));
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Minimal POSIX : chemins système de base, pas ~/.local/bin ni brew.
|
|
82
|
+
dirs.push("/usr/bin", "/bin");
|
|
83
|
+
}
|
|
84
|
+
// Dédup en conservant l'ordre.
|
|
85
|
+
const seen = new Set();
|
|
86
|
+
const out = [];
|
|
87
|
+
for (const d of dirs) {
|
|
88
|
+
if (!d)
|
|
89
|
+
continue;
|
|
90
|
+
const norm = d;
|
|
91
|
+
if (seen.has(norm))
|
|
92
|
+
continue;
|
|
93
|
+
seen.add(norm);
|
|
94
|
+
out.push(norm);
|
|
95
|
+
}
|
|
96
|
+
return out.join(sep);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=os-sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"os-sandbox.js","sourceRoot":"","sources":["../../../src/host/sandbox/os-sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contrats / helpers pour le lancement du serveur Next embarqué.
|
|
3
|
+
* Le spawn complet (node-runtime, secrets local-config) reste branché
|
|
4
|
+
* par l'app marque — ici le noyau brand-agnostic.
|
|
5
|
+
*/
|
|
6
|
+
import type { ChildProcess } from "node:child_process";
|
|
7
|
+
import type { AppManifest } from "@creezio/brand-config";
|
|
8
|
+
import { findFreePort, waitForHealth, type BindHost } from "@creezio/platform-core";
|
|
9
|
+
export type RunningServer = {
|
|
10
|
+
port: number;
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
child: ChildProcess;
|
|
13
|
+
stop: () => void;
|
|
14
|
+
};
|
|
15
|
+
export type StartServerPaths = {
|
|
16
|
+
dbPath: string;
|
|
17
|
+
assistantDbPath: string;
|
|
18
|
+
uploadsDir: string;
|
|
19
|
+
nextServerEntry: string;
|
|
20
|
+
nodeBinary: string;
|
|
21
|
+
};
|
|
22
|
+
export type StartServerCoreOptions = {
|
|
23
|
+
manifest: AppManifest;
|
|
24
|
+
paths: StartServerPaths;
|
|
25
|
+
bindHost?: BindHost;
|
|
26
|
+
preferredPort?: number;
|
|
27
|
+
meiliHost?: string | null;
|
|
28
|
+
meiliMasterKey?: string | null;
|
|
29
|
+
authSecret?: string;
|
|
30
|
+
mcpJwtSecret?: string;
|
|
31
|
+
extraEnv?: Record<string, string>;
|
|
32
|
+
log?: (line: string) => void;
|
|
33
|
+
/**
|
|
34
|
+
* Spawn effectif — fourni par l'app (isole node-runtime / sandbox).
|
|
35
|
+
* Reçoit port + env déjà construits.
|
|
36
|
+
*/
|
|
37
|
+
spawnServer: (opts: {
|
|
38
|
+
port: number;
|
|
39
|
+
hostname: string;
|
|
40
|
+
env: Record<string, string>;
|
|
41
|
+
entry: string;
|
|
42
|
+
nodeBinary: string;
|
|
43
|
+
}) => ChildProcess;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Alloue un port, construit l'env Next, spawn via callback, attend /health.
|
|
47
|
+
*/
|
|
48
|
+
export declare function startNextServerCore(opts: StartServerCoreOptions): Promise<RunningServer>;
|
|
49
|
+
export { findFreePort, waitForHealth };
|
|
50
|
+
//# sourceMappingURL=server-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-env.d.ts","sourceRoot":"","sources":["../../src/host/server-env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAEL,YAAY,EACZ,aAAa,EACb,KAAK,QAAQ,EACd,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B;;;OAGG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;KACpB,KAAK,YAAY,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAwDxB;AAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contrats / helpers pour le lancement du serveur Next embarqué.
|
|
3
|
+
* Le spawn complet (node-runtime, secrets local-config) reste branché
|
|
4
|
+
* par l'app marque — ici le noyau brand-agnostic.
|
|
5
|
+
*/
|
|
6
|
+
import { buildNextHostEnv, findFreePort, waitForHealth, } from "@creezio/platform-core";
|
|
7
|
+
/**
|
|
8
|
+
* Alloue un port, construit l'env Next, spawn via callback, attend /health.
|
|
9
|
+
*/
|
|
10
|
+
export async function startNextServerCore(opts) {
|
|
11
|
+
const log = opts.log ?? ((l) => console.log(`[server] ${l}`));
|
|
12
|
+
const bindHost = opts.bindHost ?? "127.0.0.1";
|
|
13
|
+
const port = await findFreePort(opts.preferredPort, bindHost);
|
|
14
|
+
const hostname = bindHost === "0.0.0.0" ? "0.0.0.0" : "127.0.0.1";
|
|
15
|
+
const baseUrl = bindHost === "0.0.0.0"
|
|
16
|
+
? `http://127.0.0.1:${port}`
|
|
17
|
+
: `http://${hostname}:${port}`;
|
|
18
|
+
const env = buildNextHostEnv({
|
|
19
|
+
manifest: opts.manifest,
|
|
20
|
+
port,
|
|
21
|
+
hostname,
|
|
22
|
+
dbPath: opts.paths.dbPath,
|
|
23
|
+
assistantDbPath: opts.paths.assistantDbPath,
|
|
24
|
+
uploadsDir: opts.paths.uploadsDir,
|
|
25
|
+
meiliHost: opts.meiliHost,
|
|
26
|
+
meiliMasterKey: opts.meiliMasterKey,
|
|
27
|
+
authSecret: opts.authSecret,
|
|
28
|
+
mcpJwtSecret: opts.mcpJwtSecret,
|
|
29
|
+
extra: opts.extraEnv,
|
|
30
|
+
});
|
|
31
|
+
log(`spawn Next sur ${baseUrl} (entry ${opts.paths.nextServerEntry})`);
|
|
32
|
+
const mergedEnv = {};
|
|
33
|
+
for (const [k, v] of Object.entries({ ...process.env, ...env })) {
|
|
34
|
+
if (typeof v === "string")
|
|
35
|
+
mergedEnv[k] = v;
|
|
36
|
+
}
|
|
37
|
+
const child = opts.spawnServer({
|
|
38
|
+
port,
|
|
39
|
+
hostname,
|
|
40
|
+
env: mergedEnv,
|
|
41
|
+
entry: opts.paths.nextServerEntry,
|
|
42
|
+
nodeBinary: opts.paths.nodeBinary,
|
|
43
|
+
});
|
|
44
|
+
child.on("error", (e) => {
|
|
45
|
+
log(`spawn error: ${e.message}`);
|
|
46
|
+
});
|
|
47
|
+
await waitForHealth(baseUrl);
|
|
48
|
+
log(`serveur local prêt sur ${baseUrl}`);
|
|
49
|
+
return {
|
|
50
|
+
port,
|
|
51
|
+
baseUrl,
|
|
52
|
+
child,
|
|
53
|
+
stop: () => {
|
|
54
|
+
try {
|
|
55
|
+
child.kill();
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
/* ignore */
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export { findFreePort, waitForHealth };
|
|
64
|
+
//# sourceMappingURL=server-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-env.js","sourceRoot":"","sources":["../../src/host/server-env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,aAAa,GAEd,MAAM,wBAAwB,CAAC;AAyChC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA4B;IAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IAClE,MAAM,OAAO,GACX,QAAQ,KAAK,SAAS;QACpB,CAAC,CAAC,oBAAoB,IAAI,EAAE;QAC5B,CAAC,CAAC,UAAU,QAAQ,IAAI,IAAI,EAAE,CAAC;IAEnC,MAAM,GAAG,GAAG,gBAAgB,CAAC;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI;QACJ,QAAQ;QACR,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QACzB,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;QAC3C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,KAAK,EAAE,IAAI,CAAC,QAAQ;KACrB,CAAC,CAAC;IAEH,GAAG,CAAC,kBAAkB,OAAO,WAAW,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;IACvE,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;QAChE,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI;QACJ,QAAQ;QACR,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;QACjC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;KAClC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACtB,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7B,GAAG,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;IAEzC,OAAO;QACL,IAAI;QACJ,OAAO;QACP,KAAK;QACL,IAAI,EAAE,GAAG,EAAE;YACT,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn serveur Next standalone — wrapper marque autour de `startNextServerCore` (N2).
|
|
3
|
+
* Secrets / ports / paths / spawn injectés (plus de hardcode TF2_*).
|
|
4
|
+
*/
|
|
5
|
+
import type { ChildProcess } from "node:child_process";
|
|
6
|
+
import type { AppManifest } from "@creezio/brand-config";
|
|
7
|
+
import { type RunningServer, type StartServerCoreOptions, type StartServerPaths } from "./server-env.js";
|
|
8
|
+
export type { RunningServer } from "./server-env.js";
|
|
9
|
+
export type { BindHost } from "@creezio/platform-core";
|
|
10
|
+
export { findFreePort, waitForHealth } from "./server-env.js";
|
|
11
|
+
export type BrandServerLauncherDeps = {
|
|
12
|
+
manifest: AppManifest;
|
|
13
|
+
paths: StartServerPaths;
|
|
14
|
+
preferredPort: number;
|
|
15
|
+
ensureAuthSecret: () => string;
|
|
16
|
+
ensureMcpJwtSecret: () => string;
|
|
17
|
+
getLocalAuth: () => {
|
|
18
|
+
authUser: string;
|
|
19
|
+
authPassword: string;
|
|
20
|
+
} | null;
|
|
21
|
+
getLlmKeys: () => Record<string, string | undefined>;
|
|
22
|
+
/** Env additionnels (crash endpoint, plugins dir, …). */
|
|
23
|
+
buildExtraEnv?: () => Record<string, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Spawn effectif (node isolé / sandbox marque).
|
|
26
|
+
* Requis — le kit ne spawn pas lui-même sans ce hook.
|
|
27
|
+
*/
|
|
28
|
+
spawnServer: StartServerCoreOptions["spawnServer"];
|
|
29
|
+
};
|
|
30
|
+
export type StartBrandServerOptions = {
|
|
31
|
+
meiliHost?: string | null;
|
|
32
|
+
meiliMasterKey?: string | null;
|
|
33
|
+
extraEnv?: Record<string, string>;
|
|
34
|
+
onLog?: (line: string) => void;
|
|
35
|
+
bindHost?: "127.0.0.1" | "0.0.0.0";
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Démarre Next via le noyau kit + injection marque.
|
|
39
|
+
*/
|
|
40
|
+
export declare function startBrandNextServer(deps: BrandServerLauncherDeps, opts?: StartBrandServerOptions): Promise<RunningServer>;
|
|
41
|
+
/** Helper typé pour les marques qui re-exportent le spawn. */
|
|
42
|
+
export type ServerSpawnFn = (opts: {
|
|
43
|
+
port: number;
|
|
44
|
+
hostname: string;
|
|
45
|
+
env: Record<string, string>;
|
|
46
|
+
entry: string;
|
|
47
|
+
nodeBinary: string;
|
|
48
|
+
}) => ChildProcess;
|
|
49
|
+
//# sourceMappingURL=server-launcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-launcher.d.ts","sourceRoot":"","sources":["../../src/host/server-launcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,MAAM,CAAC;IACjC,YAAY,EAAE,MAAM;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACrD,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C;;;OAGG;IACH,WAAW,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,uBAAuB,EAC7B,IAAI,GAAE,uBAA4B,GACjC,OAAO,CAAC,aAAa,CAAC,CAgCxB;AAED,8DAA8D;AAC9D,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,KAAK,YAAY,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn serveur Next standalone — wrapper marque autour de `startNextServerCore` (N2).
|
|
3
|
+
* Secrets / ports / paths / spawn injectés (plus de hardcode TF2_*).
|
|
4
|
+
*/
|
|
5
|
+
import fs from "node:fs";
|
|
6
|
+
import { startNextServerCore, } from "./server-env.js";
|
|
7
|
+
export { findFreePort, waitForHealth } from "./server-env.js";
|
|
8
|
+
/**
|
|
9
|
+
* Démarre Next via le noyau kit + injection marque.
|
|
10
|
+
*/
|
|
11
|
+
export async function startBrandNextServer(deps, opts = {}) {
|
|
12
|
+
const entry = deps.paths.nextServerEntry;
|
|
13
|
+
if (!fs.existsSync(entry)) {
|
|
14
|
+
throw new Error(`Serveur Next standalone introuvable : ${entry}\n` +
|
|
15
|
+
`Lancer d'abord : npm run build && npm run electron:server`);
|
|
16
|
+
}
|
|
17
|
+
const auth = deps.getLocalAuth();
|
|
18
|
+
const llm = deps.getLlmKeys();
|
|
19
|
+
const extra = {
|
|
20
|
+
AUTH_USER: auth?.authUser ?? "",
|
|
21
|
+
AUTH_PASSWORD: auth?.authPassword ?? "",
|
|
22
|
+
...(deps.buildExtraEnv?.() || {}),
|
|
23
|
+
...(opts.extraEnv || {}),
|
|
24
|
+
};
|
|
25
|
+
for (const [k, v] of Object.entries(llm)) {
|
|
26
|
+
if (v)
|
|
27
|
+
extra[k] = v;
|
|
28
|
+
}
|
|
29
|
+
return startNextServerCore({
|
|
30
|
+
manifest: deps.manifest,
|
|
31
|
+
paths: deps.paths,
|
|
32
|
+
bindHost: opts.bindHost,
|
|
33
|
+
preferredPort: deps.preferredPort,
|
|
34
|
+
meiliHost: opts.meiliHost,
|
|
35
|
+
meiliMasterKey: opts.meiliMasterKey,
|
|
36
|
+
authSecret: deps.ensureAuthSecret(),
|
|
37
|
+
mcpJwtSecret: deps.ensureMcpJwtSecret(),
|
|
38
|
+
extraEnv: extra,
|
|
39
|
+
log: opts.onLog,
|
|
40
|
+
spawnServer: deps.spawnServer,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=server-launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-launcher.js","sourceRoot":"","sources":["../../src/host/server-launcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,OAAO,EACL,mBAAmB,GAIpB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA2B9D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAA6B,EAC7B,OAAgC,EAAE;IAElC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,IAAI;YAChD,2DAA2D,CAC9D,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,MAAM,KAAK,GAA2B;QACpC,SAAS,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE;QAC/B,aAAa,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE;QACvC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;KACzB,CAAC;IACF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC;YAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,mBAAmB,CAAC;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;QACnC,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE;QACvC,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,IAAI,CAAC,KAAK;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Politique de respawn borné pour cloudflared in-process.
|
|
3
|
+
*
|
|
4
|
+
* Sans superviseur, un process QUIC mort laisse le hostname public en 525
|
|
5
|
+
* alors que localhost reste 200 (recette / demo / admin, 15-16/08).
|
|
6
|
+
* Le respawn réutilise le token / tunnel id persisté — jamais de POST
|
|
7
|
+
* `cfd_tunnel` ici (`ensureCfTunnel` reste le seul chemin de (re)création).
|
|
8
|
+
*/
|
|
9
|
+
export declare const CLOUDFLARED_RESPAWN: {
|
|
10
|
+
/** Respawn consécutifs max avant abandon (jusqu'au prochain `start`). */
|
|
11
|
+
readonly maxAttempts: 8;
|
|
12
|
+
readonly initialDelayMs: 1000;
|
|
13
|
+
readonly maxDelayMs: 30000;
|
|
14
|
+
readonly factor: 2;
|
|
15
|
+
/** Uptime sain après lequel le compteur de pannes est remis à zéro. */
|
|
16
|
+
readonly healthyResetMs: 60000;
|
|
17
|
+
};
|
|
18
|
+
export type CloudflaredRespawnPolicy = {
|
|
19
|
+
maxAttempts: number;
|
|
20
|
+
initialDelayMs: number;
|
|
21
|
+
maxDelayMs: number;
|
|
22
|
+
factor: number;
|
|
23
|
+
healthyResetMs: number;
|
|
24
|
+
};
|
|
25
|
+
export type CloudflaredExitInfo = {
|
|
26
|
+
code: number | null;
|
|
27
|
+
signal: NodeJS.Signals | string | null;
|
|
28
|
+
};
|
|
29
|
+
export type CloudflaredRespawnDecision = {
|
|
30
|
+
action: "ignore";
|
|
31
|
+
} | {
|
|
32
|
+
action: "give-up";
|
|
33
|
+
attempt: number;
|
|
34
|
+
reason: string;
|
|
35
|
+
} | {
|
|
36
|
+
action: "respawn";
|
|
37
|
+
attempt: number;
|
|
38
|
+
delayMs: number;
|
|
39
|
+
reason: string;
|
|
40
|
+
};
|
|
41
|
+
/** Overrides ops/tests : `CREEZIO_CLOUDFLARED_RESPAWN_{MAX,DELAY_MS,MAX_DELAY_MS,HEALTHY_MS}`. */
|
|
42
|
+
export declare function resolveCloudflaredRespawnPolicy(env?: NodeJS.ProcessEnv, base?: CloudflaredRespawnPolicy): CloudflaredRespawnPolicy;
|
|
43
|
+
/** Backoff exponentiel borné — `attempt` est 1-based. */
|
|
44
|
+
export declare function cloudflaredRespawnDelayMs(attempt: number, policy?: CloudflaredRespawnPolicy): number;
|
|
45
|
+
export declare function describeCloudflaredExit(exit: CloudflaredExitInfo): string;
|
|
46
|
+
/**
|
|
47
|
+
* Décide ignore (stop volontaire) / respawn / abandon.
|
|
48
|
+
* Une mort après `healthyResetMs` d'uptime remet le compteur à zéro.
|
|
49
|
+
*/
|
|
50
|
+
export declare function shouldRespawnCloudflared(opts: {
|
|
51
|
+
stopping: boolean;
|
|
52
|
+
consecutiveFailures: number;
|
|
53
|
+
startedAtMs: number | null;
|
|
54
|
+
exit: CloudflaredExitInfo;
|
|
55
|
+
nowMs?: number;
|
|
56
|
+
policy?: CloudflaredRespawnPolicy;
|
|
57
|
+
}): CloudflaredRespawnDecision;
|
|
58
|
+
//# sourceMappingURL=cloudflared-respawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflared-respawn.d.ts","sourceRoot":"","sources":["../../../src/host/tunnel/cloudflared-respawn.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,mBAAmB;IAC9B,yEAAyE;;;;;IAKzE,uEAAuE;;CAE/D,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAClC;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAcN,kGAAkG;AAClG,wBAAgB,+BAA+B,CAC7C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,wBAA8C,GACnD,wBAAwB,CA4B1B;AAED,yDAAyD;AACzD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,wBAA8C,GACrD,MAAM,CAIR;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAKzE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,wBAAwB,CAAC;CACnC,GAAG,0BAA0B,CAkB7B"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Politique de respawn borné pour cloudflared in-process.
|
|
3
|
+
*
|
|
4
|
+
* Sans superviseur, un process QUIC mort laisse le hostname public en 525
|
|
5
|
+
* alors que localhost reste 200 (recette / demo / admin, 15-16/08).
|
|
6
|
+
* Le respawn réutilise le token / tunnel id persisté — jamais de POST
|
|
7
|
+
* `cfd_tunnel` ici (`ensureCfTunnel` reste le seul chemin de (re)création).
|
|
8
|
+
*/
|
|
9
|
+
export const CLOUDFLARED_RESPAWN = {
|
|
10
|
+
/** Respawn consécutifs max avant abandon (jusqu'au prochain `start`). */
|
|
11
|
+
maxAttempts: 8,
|
|
12
|
+
initialDelayMs: 1_000,
|
|
13
|
+
maxDelayMs: 30_000,
|
|
14
|
+
factor: 2,
|
|
15
|
+
/** Uptime sain après lequel le compteur de pannes est remis à zéro. */
|
|
16
|
+
healthyResetMs: 60_000,
|
|
17
|
+
};
|
|
18
|
+
function envInt(env, key, fallback, min) {
|
|
19
|
+
const raw = String(env[key] || "").trim();
|
|
20
|
+
if (!raw)
|
|
21
|
+
return fallback;
|
|
22
|
+
const n = Number(raw);
|
|
23
|
+
return Number.isFinite(n) && n >= min ? Math.floor(n) : fallback;
|
|
24
|
+
}
|
|
25
|
+
/** Overrides ops/tests : `CREEZIO_CLOUDFLARED_RESPAWN_{MAX,DELAY_MS,MAX_DELAY_MS,HEALTHY_MS}`. */
|
|
26
|
+
export function resolveCloudflaredRespawnPolicy(env = process.env, base = CLOUDFLARED_RESPAWN) {
|
|
27
|
+
return {
|
|
28
|
+
maxAttempts: envInt(env, "CREEZIO_CLOUDFLARED_RESPAWN_MAX", base.maxAttempts, 1),
|
|
29
|
+
initialDelayMs: envInt(env, "CREEZIO_CLOUDFLARED_RESPAWN_DELAY_MS", base.initialDelayMs, 0),
|
|
30
|
+
maxDelayMs: envInt(env, "CREEZIO_CLOUDFLARED_RESPAWN_MAX_DELAY_MS", base.maxDelayMs, 0),
|
|
31
|
+
factor: base.factor,
|
|
32
|
+
healthyResetMs: envInt(env, "CREEZIO_CLOUDFLARED_RESPAWN_HEALTHY_MS", base.healthyResetMs, 0),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** Backoff exponentiel borné — `attempt` est 1-based. */
|
|
36
|
+
export function cloudflaredRespawnDelayMs(attempt, policy = CLOUDFLARED_RESPAWN) {
|
|
37
|
+
const exp = Math.max(0, attempt - 1);
|
|
38
|
+
const raw = policy.initialDelayMs * policy.factor ** exp;
|
|
39
|
+
return Math.min(policy.maxDelayMs, Math.max(0, Math.round(raw)));
|
|
40
|
+
}
|
|
41
|
+
export function describeCloudflaredExit(exit) {
|
|
42
|
+
if (exit.signal)
|
|
43
|
+
return `signal ${exit.signal}`;
|
|
44
|
+
if (exit.code === 0)
|
|
45
|
+
return "exit 0 (inattendu)";
|
|
46
|
+
if (exit.code == null)
|
|
47
|
+
return "mort inattendue";
|
|
48
|
+
return `exit ${exit.code}`;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Décide ignore (stop volontaire) / respawn / abandon.
|
|
52
|
+
* Une mort après `healthyResetMs` d'uptime remet le compteur à zéro.
|
|
53
|
+
*/
|
|
54
|
+
export function shouldRespawnCloudflared(opts) {
|
|
55
|
+
if (opts.stopping)
|
|
56
|
+
return { action: "ignore" };
|
|
57
|
+
const policy = opts.policy ?? CLOUDFLARED_RESPAWN;
|
|
58
|
+
const now = opts.nowMs ?? Date.now();
|
|
59
|
+
const healthy = opts.startedAtMs != null &&
|
|
60
|
+
now - opts.startedAtMs >= policy.healthyResetMs;
|
|
61
|
+
const attempt = (healthy ? 0 : opts.consecutiveFailures) + 1;
|
|
62
|
+
const reason = describeCloudflaredExit(opts.exit);
|
|
63
|
+
if (attempt > policy.maxAttempts) {
|
|
64
|
+
return { action: "give-up", attempt, reason };
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
action: "respawn",
|
|
68
|
+
attempt,
|
|
69
|
+
delayMs: cloudflaredRespawnDelayMs(attempt, policy),
|
|
70
|
+
reason,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=cloudflared-respawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflared-respawn.js","sourceRoot":"","sources":["../../../src/host/tunnel/cloudflared-respawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloudflare Tunnel — service brand-agnostic.
|
|
3
|
+
*
|
|
4
|
+
* Auto-provisioning par l'instance elle-même via l'API Cloudflare (client
|
|
5
|
+
* `@creezio/platform-core` : tunnel-cf / tunnel-cf-client) — le provisioner
|
|
6
|
+
* VPS et le sidecar cloudflared sont supprimés (0.10.0, D3) : cloudflared
|
|
7
|
+
* tourne in-process, mode unique, **supervisé** (respawn borné si exit ≠ 0
|
|
8
|
+
* ou mort inattendue ; même tunnel id persisté). Contrat d'env : `CREEZIO_CF_API_TOKEN` /
|
|
9
|
+
* `CREEZIO_CF_ACCOUNT_ID` / `CREEZIO_CF_ZONE_ID` (+ variantes marque),
|
|
10
|
+
* arrivant au conteneur via `cf.env` (chmod 600) généré par le CLI.
|
|
11
|
+
*/
|
|
12
|
+
import { buildTunnelPublicUrls, deriveTunnelServiceUrl, type TunnelEmbedService, type TunnelPublicUrls } from "@creezio/platform-core";
|
|
13
|
+
import type { HostRuntimeContext } from "../context.js";
|
|
14
|
+
import type { LocalConfigStore, TunnelConfig } from "../local-config.js";
|
|
15
|
+
export type TunnelRuntimeStatus = {
|
|
16
|
+
configured: boolean;
|
|
17
|
+
slug: string | null;
|
|
18
|
+
hostname: string | null;
|
|
19
|
+
publicUrl: string | null;
|
|
20
|
+
publicUrls: TunnelPublicUrls | null;
|
|
21
|
+
online: boolean;
|
|
22
|
+
error: string | null;
|
|
23
|
+
pcMustBeOn: true;
|
|
24
|
+
};
|
|
25
|
+
export type TunnelIngressPorts = {
|
|
26
|
+
crmPort: number;
|
|
27
|
+
n8nPort?: number | null;
|
|
28
|
+
hermesPort?: number | null;
|
|
29
|
+
};
|
|
30
|
+
export type TunnelService = {
|
|
31
|
+
getTunnelStatus: () => TunnelRuntimeStatus;
|
|
32
|
+
checkTunnelSlug: (slug: string) => Promise<{
|
|
33
|
+
available: boolean;
|
|
34
|
+
reason?: string;
|
|
35
|
+
hostname?: string;
|
|
36
|
+
}>;
|
|
37
|
+
reserveTunnel: (slug: string, localPort: number) => Promise<{
|
|
38
|
+
ok: true;
|
|
39
|
+
hostname: string;
|
|
40
|
+
publicUrl: string;
|
|
41
|
+
} | {
|
|
42
|
+
ok: false;
|
|
43
|
+
error: string;
|
|
44
|
+
}>;
|
|
45
|
+
configureTunnelIngress: (ports: TunnelIngressPorts) => Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Surface publique locale (sans Cloudflare) — MCP = `{publicUrl}/mcp`.
|
|
48
|
+
* Utilisé quand l'auto-provisioning CF n'est pas configuré / en harness.
|
|
49
|
+
*/
|
|
50
|
+
enableLocalPublicSurface: (opts: {
|
|
51
|
+
localPort: number;
|
|
52
|
+
slug?: string;
|
|
53
|
+
}) => {
|
|
54
|
+
ok: true;
|
|
55
|
+
publicUrl: string;
|
|
56
|
+
publicMcp: string;
|
|
57
|
+
};
|
|
58
|
+
/** CRM public URL + `/mcp` (tunnel réel ou surface locale). */
|
|
59
|
+
publicMcpUrl: () => string | null;
|
|
60
|
+
publicUrlForEmbedService: (service: TunnelEmbedService) => string | null;
|
|
61
|
+
startCloudflared: () => Promise<void>;
|
|
62
|
+
stopCloudflared: () => void;
|
|
63
|
+
forgetTunnel: () => void;
|
|
64
|
+
publicUrlForServer: () => string | null;
|
|
65
|
+
};
|
|
66
|
+
export declare function createTunnelService(opts: {
|
|
67
|
+
ctx: HostRuntimeContext;
|
|
68
|
+
store: LocalConfigStore;
|
|
69
|
+
}): TunnelService;
|
|
70
|
+
export { buildTunnelPublicUrls, deriveTunnelServiceUrl };
|
|
71
|
+
export type { TunnelConfig };
|
|
72
|
+
//# sourceMappingURL=tunnel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../../src/host/tunnel/tunnel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EAWtB,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOzE,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,MAAM,mBAAmB,CAAC;IAC3C,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,aAAa,EAAE,CACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,KACd,OAAO,CACR;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GACjD;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAC/B,CAAC;IACF,sBAAsB,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE;;;OAGG;IACH,wBAAwB,EAAE,CAAC,IAAI,EAAE;QAC/B,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,KAAK;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,+DAA+D;IAC/D,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,wBAAwB,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,MAAM,GAAG,IAAI,CAAC;IACzE,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,kBAAkB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACzC,CAAC;AA0BF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,GAAG,EAAE,kBAAkB,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;CACzB,GAAG,aAAa,CA8chB;AAED,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,CAAC"}
|