@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,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contrat d’alimentation Meili générique (Phase C).
|
|
3
|
+
*
|
|
4
|
+
* La marque fournit un feed (tables + indexes + mapping colonnes).
|
|
5
|
+
* L’OS exécute startMeili / runIndexation / swap — sans SQL marque hardcodé.
|
|
6
|
+
*
|
|
7
|
+
* Le feed est OBLIGATOIRE : `runIndexation()` sans feed configuré lève une
|
|
8
|
+
* erreur explicite (le kit n'embarque plus d'UIDs marque legacy).
|
|
9
|
+
*/
|
|
10
|
+
export type BrandMeiliDocument = Record<string, unknown> & {
|
|
11
|
+
id: string | number;
|
|
12
|
+
};
|
|
13
|
+
/** Handle SQLite minimal passé aux loaders custom (better-sqlite3 / node:sqlite). */
|
|
14
|
+
export type MeiliFeedSqliteDb = {
|
|
15
|
+
prepare(sql: string): {
|
|
16
|
+
get(...args: unknown[]): unknown;
|
|
17
|
+
all(...args: unknown[]): unknown[];
|
|
18
|
+
run(...args: unknown[]): unknown;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export type BrandMeiliIndexSpec = {
|
|
22
|
+
/** UID Meili (ex. catalog_products) — pas de préfixe marque hardcodé kit. */
|
|
23
|
+
uid: string;
|
|
24
|
+
settings: Record<string, unknown>;
|
|
25
|
+
/**
|
|
26
|
+
* Clé de compteur fingerprint.
|
|
27
|
+
* `produits` | `sites` (sites → counts.fournisseurs historique) | libre.
|
|
28
|
+
*/
|
|
29
|
+
countKey: string;
|
|
30
|
+
/**
|
|
31
|
+
* Mode CUSTOM : la marque génère elle-même les documents (jointures,
|
|
32
|
+
* provenance, taxonomie…) — l'OS n'exécute aucun SQL marque hardcodé,
|
|
33
|
+
* il itère simplement les documents retournés. Prioritaire sur le mode
|
|
34
|
+
* déclaratif table/columns quand présent.
|
|
35
|
+
*/
|
|
36
|
+
loadDocs?: (db: MeiliFeedSqliteDb) => Iterable<BrandMeiliDocument>;
|
|
37
|
+
/** Table SQL source (mode déclaratif — ignoré si loadDocs). */
|
|
38
|
+
table?: string;
|
|
39
|
+
/** Colonnes indexées, id toujours forcé (mode déclaratif). */
|
|
40
|
+
columns?: string[];
|
|
41
|
+
/** Champ `type` du document Meili (mode déclaratif). */
|
|
42
|
+
docType?: string;
|
|
43
|
+
/** Exclure lignes soft-archivées si colonne archived_at. */
|
|
44
|
+
excludeArchived?: boolean;
|
|
45
|
+
};
|
|
46
|
+
export type BrandMeiliFeed = {
|
|
47
|
+
id: string;
|
|
48
|
+
schemaVersion: number;
|
|
49
|
+
/** Préfixe stdout progression (ex. TEMPOFLOW3 → `TEMPOFLOW3PROGRESS …`). */
|
|
50
|
+
progressPrefix: string;
|
|
51
|
+
/** Tables SQL pour compteurs cohérence. */
|
|
52
|
+
countTables: {
|
|
53
|
+
produits: string;
|
|
54
|
+
sites: string;
|
|
55
|
+
};
|
|
56
|
+
indexes: readonly BrandMeiliIndexSpec[];
|
|
57
|
+
obsoleteIndexUids?: readonly string[];
|
|
58
|
+
/** Index miroir fingerprint (défaut catalog_meta). */
|
|
59
|
+
metaIndexUid?: string;
|
|
60
|
+
};
|
|
61
|
+
/** UIDs génériques recommandés. */
|
|
62
|
+
export declare const GENERIC_CATALOG_INDEXES: readonly ["catalog_products", "catalog_sites"];
|
|
63
|
+
export type GenericCatalogIndexUid = (typeof GENERIC_CATALOG_INDEXES)[number];
|
|
64
|
+
/** Enregistre le feed marque pour runIndexation / helpers (process courant). */
|
|
65
|
+
export declare function configureMeiliBrandFeed(feed: BrandMeiliFeed): void;
|
|
66
|
+
export declare function getMeiliBrandFeed(): BrandMeiliFeed | null;
|
|
67
|
+
export declare function resetMeiliBrandFeedForTests(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Feed CHR cœur (produits + fournisseurs) — usable par factory --from-prd.
|
|
70
|
+
* UIDs génériques `catalog_*` (jamais d'UID marque).
|
|
71
|
+
*/
|
|
72
|
+
export declare function createChrCatalogMeiliFeed(opts: {
|
|
73
|
+
brandId: string;
|
|
74
|
+
progressPrefix?: string;
|
|
75
|
+
schemaVersion?: number;
|
|
76
|
+
}): BrandMeiliFeed;
|
|
77
|
+
/** Compteurs attendus par UID depuis counts SQL fingerprint. */
|
|
78
|
+
export declare function expectedCountsForFeed(feed: BrandMeiliFeed, sql: {
|
|
79
|
+
produits: number;
|
|
80
|
+
fournisseurs: number;
|
|
81
|
+
}): Record<string, number>;
|
|
82
|
+
//# sourceMappingURL=feed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/host/meili/feed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACzD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB,CAAC;AAEF,qFAAqF;AACrF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QACpB,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QACjC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QACnC,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACnE,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,uBAAuB,gDAG1B,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAI9E,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAElE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,cAAc,CAwDjB;AAED,gEAAgE;AAChE,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contrat d’alimentation Meili générique (Phase C).
|
|
3
|
+
*
|
|
4
|
+
* La marque fournit un feed (tables + indexes + mapping colonnes).
|
|
5
|
+
* L’OS exécute startMeili / runIndexation / swap — sans SQL marque hardcodé.
|
|
6
|
+
*
|
|
7
|
+
* Le feed est OBLIGATOIRE : `runIndexation()` sans feed configuré lève une
|
|
8
|
+
* erreur explicite (le kit n'embarque plus d'UIDs marque legacy).
|
|
9
|
+
*/
|
|
10
|
+
/** UIDs génériques recommandés. */
|
|
11
|
+
export const GENERIC_CATALOG_INDEXES = [
|
|
12
|
+
"catalog_products",
|
|
13
|
+
"catalog_sites",
|
|
14
|
+
];
|
|
15
|
+
let configuredFeed = null;
|
|
16
|
+
/** Enregistre le feed marque pour runIndexation / helpers (process courant). */
|
|
17
|
+
export function configureMeiliBrandFeed(feed) {
|
|
18
|
+
configuredFeed = feed;
|
|
19
|
+
}
|
|
20
|
+
export function getMeiliBrandFeed() {
|
|
21
|
+
return configuredFeed;
|
|
22
|
+
}
|
|
23
|
+
export function resetMeiliBrandFeedForTests() {
|
|
24
|
+
configuredFeed = null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Feed CHR cœur (produits + fournisseurs) — usable par factory --from-prd.
|
|
28
|
+
* UIDs génériques `catalog_*` (jamais d'UID marque).
|
|
29
|
+
*/
|
|
30
|
+
export function createChrCatalogMeiliFeed(opts) {
|
|
31
|
+
const prefix = (opts.progressPrefix ||
|
|
32
|
+
opts.brandId.replace(/[^A-Za-z0-9]/g, "").toUpperCase()).slice(0, 32);
|
|
33
|
+
return {
|
|
34
|
+
id: `${opts.brandId}-catalog`,
|
|
35
|
+
schemaVersion: opts.schemaVersion ?? 1,
|
|
36
|
+
progressPrefix: prefix,
|
|
37
|
+
countTables: { produits: "produits", sites: "fournisseurs" },
|
|
38
|
+
indexes: [
|
|
39
|
+
{
|
|
40
|
+
uid: "catalog_products",
|
|
41
|
+
countKey: "produits",
|
|
42
|
+
table: "produits",
|
|
43
|
+
columns: ["id", "nom", "categorie", "fournisseur_id", "unite"],
|
|
44
|
+
docType: "product",
|
|
45
|
+
excludeArchived: true,
|
|
46
|
+
settings: {
|
|
47
|
+
searchableAttributes: ["nom", "categorie", "unite"],
|
|
48
|
+
filterableAttributes: ["type", "fournisseur_id", "categorie"],
|
|
49
|
+
displayedAttributes: [
|
|
50
|
+
"id",
|
|
51
|
+
"type",
|
|
52
|
+
"nom",
|
|
53
|
+
"categorie",
|
|
54
|
+
"fournisseur_id",
|
|
55
|
+
"unite",
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
uid: "catalog_sites",
|
|
61
|
+
countKey: "sites",
|
|
62
|
+
table: "fournisseurs",
|
|
63
|
+
columns: ["id", "nom", "contact", "email", "telephone", "site_web"],
|
|
64
|
+
docType: "site",
|
|
65
|
+
excludeArchived: true,
|
|
66
|
+
settings: {
|
|
67
|
+
searchableAttributes: ["nom", "contact", "email"],
|
|
68
|
+
filterableAttributes: ["type"],
|
|
69
|
+
displayedAttributes: [
|
|
70
|
+
"id",
|
|
71
|
+
"type",
|
|
72
|
+
"nom",
|
|
73
|
+
"contact",
|
|
74
|
+
"email",
|
|
75
|
+
"telephone",
|
|
76
|
+
"site_web",
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
obsoleteIndexUids: [],
|
|
82
|
+
metaIndexUid: "catalog_meta",
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** Compteurs attendus par UID depuis counts SQL fingerprint. */
|
|
86
|
+
export function expectedCountsForFeed(feed, sql) {
|
|
87
|
+
const out = {};
|
|
88
|
+
for (const idx of feed.indexes) {
|
|
89
|
+
if (idx.countKey === "produits")
|
|
90
|
+
out[idx.uid] = sql.produits;
|
|
91
|
+
else if (idx.countKey === "sites" || idx.countKey === "fournisseurs") {
|
|
92
|
+
out[idx.uid] = sql.fournisseurs;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
out[idx.uid] = 0;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=feed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feed.js","sourceRoot":"","sources":["../../../src/host/meili/feed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { BrandMeiliFeed } from "./feed.js";
|
|
2
|
+
type LogFn = (line: string) => void;
|
|
3
|
+
/**
|
|
4
|
+
* Indexe une brand.db selon un BrandMeiliFeed (UIDs génériques).
|
|
5
|
+
*/
|
|
6
|
+
export declare function runFeedIndexation(opts: {
|
|
7
|
+
feed: BrandMeiliFeed;
|
|
8
|
+
dbPath?: string;
|
|
9
|
+
meiliHost?: string;
|
|
10
|
+
masterKey?: string;
|
|
11
|
+
log?: LogFn;
|
|
12
|
+
appVersion?: string;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
indexed: Record<string, number>;
|
|
15
|
+
engine: "meili" | "skipped";
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Recherche multi-index Meili — retourne [] si q vide / host absent.
|
|
19
|
+
*
|
|
20
|
+
* Fail-closed (Meili = composant core) : seul un index ABSENT (HTTP 404,
|
|
21
|
+
* indexation initiale pas encore passée) est toléré silencieusement.
|
|
22
|
+
* Toute autre erreur (Meili down, refus connexion, timeout, 5xx) est
|
|
23
|
+
* RETHROW — l'appelant (search mount) doit la transformer en
|
|
24
|
+
* 503 `meili_unavailable`, jamais en fallback SQL silencieux.
|
|
25
|
+
*/
|
|
26
|
+
export declare function searchMeiliIndexes(opts: {
|
|
27
|
+
host: string;
|
|
28
|
+
masterKey?: string;
|
|
29
|
+
indexUids: readonly string[];
|
|
30
|
+
query: string;
|
|
31
|
+
limit?: number;
|
|
32
|
+
}): Promise<Array<Record<string, unknown>>>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=generic-indexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-indexer.d.ts","sourceRoot":"","sources":["../../../src/host/meili/generic-indexer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,WAAW,CAAC;AAWpE,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AA6QpC;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,CAAC,CAkH5E;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAsB1C"}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { createAppRequire } from "@creezio/platform-core";
|
|
3
|
+
import { emitOpsEvent } from "@creezio/observability";
|
|
4
|
+
import { MEILI_FINGERPRINT_META_KEY, MEILI_INDEX_IN_PROGRESS_KEY, serializeFingerprint, } from "./index-schema.js";
|
|
5
|
+
const BATCH_MEILI = 500;
|
|
6
|
+
function openSqlite(dbPath, opts) {
|
|
7
|
+
const req = createAppRequire();
|
|
8
|
+
try {
|
|
9
|
+
const Database = req("better-sqlite3");
|
|
10
|
+
return new Database(dbPath, opts);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
const mod = req("node:sqlite");
|
|
14
|
+
return new mod.DatabaseSync(dbPath, {
|
|
15
|
+
readOnly: Boolean(opts?.readonly),
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function createMeiliClient(host, masterKey) {
|
|
20
|
+
const base = host.replace(/\/+$/, "");
|
|
21
|
+
return {
|
|
22
|
+
async request(method, p, body, timeoutMs = 120_000) {
|
|
23
|
+
const res = await fetch(`${base}${p}`, {
|
|
24
|
+
method,
|
|
25
|
+
headers: {
|
|
26
|
+
Authorization: `Bearer ${masterKey}`,
|
|
27
|
+
"Content-Type": "application/json",
|
|
28
|
+
},
|
|
29
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
30
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
31
|
+
});
|
|
32
|
+
const raw = await res.text();
|
|
33
|
+
if (!res.ok) {
|
|
34
|
+
throw new Error(`Meili HTTP ${res.status} ${p}: ${raw.slice(0, 300)}`);
|
|
35
|
+
}
|
|
36
|
+
return raw ? JSON.parse(raw) : null;
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function sleep(ms) {
|
|
41
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
42
|
+
}
|
|
43
|
+
function isDict(v) {
|
|
44
|
+
return Boolean(v) && typeof v === "object" && !Array.isArray(v);
|
|
45
|
+
}
|
|
46
|
+
async function waitTask(meili, task) {
|
|
47
|
+
const uid = isDict(task) ? (task.taskUid ?? task.uid) : null;
|
|
48
|
+
if (uid == null)
|
|
49
|
+
return;
|
|
50
|
+
for (let i = 0; i < 600; i++) {
|
|
51
|
+
const st = await meili.request("GET", `/tasks/${uid}`);
|
|
52
|
+
if (isDict(st) && (st.status === "succeeded" || st.status === "failed")) {
|
|
53
|
+
if (st.status === "failed") {
|
|
54
|
+
throw new Error(`Meili task ${uid} failed: ${JSON.stringify(st.error)}`);
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
await sleep(50 + Math.min(i * 10, 500));
|
|
59
|
+
}
|
|
60
|
+
throw new Error(`Meili task ${uid} timeout`);
|
|
61
|
+
}
|
|
62
|
+
async function indexExists(meili, uid) {
|
|
63
|
+
try {
|
|
64
|
+
await meili.request("GET", `/indexes/${uid}`);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function createIndex(meili, uid) {
|
|
72
|
+
await waitTask(meili, await meili.request("POST", "/indexes", { uid, primaryKey: "id" }));
|
|
73
|
+
}
|
|
74
|
+
async function recreateIndex(meili, uid, settings) {
|
|
75
|
+
if (await indexExists(meili, uid)) {
|
|
76
|
+
await waitTask(meili, await meili.request("DELETE", `/indexes/${uid}`));
|
|
77
|
+
}
|
|
78
|
+
await createIndex(meili, uid);
|
|
79
|
+
await waitTask(meili, await meili.request("PATCH", `/indexes/${uid}/settings`, settings));
|
|
80
|
+
}
|
|
81
|
+
async function swapAndCleanup(meili, uid) {
|
|
82
|
+
const newUid = `${uid}_new`;
|
|
83
|
+
if (!(await indexExists(meili, uid))) {
|
|
84
|
+
await createIndex(meili, uid);
|
|
85
|
+
}
|
|
86
|
+
await waitTask(meili, await meili.request("POST", "/swap-indexes", [{ indexes: [uid, newUid] }]));
|
|
87
|
+
await waitTask(meili, await meili.request("DELETE", `/indexes/${newUid}`));
|
|
88
|
+
}
|
|
89
|
+
async function deleteIndexIfExists(meili, uid, log) {
|
|
90
|
+
if (!(await indexExists(meili, uid)))
|
|
91
|
+
return;
|
|
92
|
+
await waitTask(meili, await meili.request("DELETE", `/indexes/${uid}`));
|
|
93
|
+
log(`[meili] index obsolète supprimé: ${uid}`);
|
|
94
|
+
}
|
|
95
|
+
async function meiliAvailable(meili, log) {
|
|
96
|
+
try {
|
|
97
|
+
await meili.request("GET", "/health", undefined, 5_000);
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
log(`[meili] indisponible — indexation annulée (${e instanceof Error ? e.message : e})`);
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function tableExists(db, name) {
|
|
106
|
+
const row = db
|
|
107
|
+
.prepare(`SELECT COUNT(*) AS c FROM sqlite_master WHERE type='table' AND name=?`)
|
|
108
|
+
.get(name);
|
|
109
|
+
return row.c > 0;
|
|
110
|
+
}
|
|
111
|
+
function columnExists(db, table, col) {
|
|
112
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(table) || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(col)) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
const rows = db.prepare(`PRAGMA table_info(${table})`).all();
|
|
116
|
+
return rows.some((r) => r.name === col);
|
|
117
|
+
}
|
|
118
|
+
function safeIdent(name) {
|
|
119
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) {
|
|
120
|
+
throw new Error(`identifiant SQL invalide: ${name}`);
|
|
121
|
+
}
|
|
122
|
+
return name;
|
|
123
|
+
}
|
|
124
|
+
function readSqliteSchemaVersion(db) {
|
|
125
|
+
if (!tableExists(db, "meta"))
|
|
126
|
+
return 0;
|
|
127
|
+
const row = db
|
|
128
|
+
.prepare(`SELECT value FROM meta WHERE key='schema_version'`)
|
|
129
|
+
.get();
|
|
130
|
+
return Number(row?.value || 0);
|
|
131
|
+
}
|
|
132
|
+
function writeMeta(dbFile, key, value) {
|
|
133
|
+
const w = openSqlite(dbFile, { fileMustExist: true });
|
|
134
|
+
try {
|
|
135
|
+
if (!tableExists(w, "meta")) {
|
|
136
|
+
w.prepare(`CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT NOT NULL)`).run();
|
|
137
|
+
}
|
|
138
|
+
w.prepare(`INSERT INTO meta(key, value) VALUES (?, ?)
|
|
139
|
+
ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(key, value);
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
w.close();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function clearMeta(dbFile, key) {
|
|
146
|
+
try {
|
|
147
|
+
const w = openSqlite(dbFile, { fileMustExist: true });
|
|
148
|
+
try {
|
|
149
|
+
if (tableExists(w, "meta")) {
|
|
150
|
+
w.prepare(`DELETE FROM meta WHERE key = ?`).run(key);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
finally {
|
|
154
|
+
w.close();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
/* best-effort */
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function countTable(db, table) {
|
|
162
|
+
if (!tableExists(db, table))
|
|
163
|
+
return 0;
|
|
164
|
+
const row = db
|
|
165
|
+
.prepare(`SELECT COUNT(*) AS c FROM ${safeIdent(table)}`)
|
|
166
|
+
.get();
|
|
167
|
+
return Number(row.c || 0);
|
|
168
|
+
}
|
|
169
|
+
function loadDocs(db, feed, index) {
|
|
170
|
+
// Mode custom : la marque génère ses documents (jointures/provenance) —
|
|
171
|
+
// aucun SQL marque dans le kit.
|
|
172
|
+
if (index.loadDocs)
|
|
173
|
+
return [...index.loadDocs(db)];
|
|
174
|
+
if (!index.table || !index.columns || !index.docType)
|
|
175
|
+
return [];
|
|
176
|
+
const table = safeIdent(index.table);
|
|
177
|
+
if (!tableExists(db, table))
|
|
178
|
+
return [];
|
|
179
|
+
const cols = ["id", ...index.columns.filter((c) => c !== "id")].filter((c, i, a) => a.indexOf(c) === i);
|
|
180
|
+
for (const c of cols)
|
|
181
|
+
safeIdent(c);
|
|
182
|
+
const available = cols.filter((c) => columnExists(db, table, c));
|
|
183
|
+
if (!available.includes("id"))
|
|
184
|
+
return [];
|
|
185
|
+
let sql = `SELECT ${available.join(", ")} FROM ${table}`;
|
|
186
|
+
if (index.excludeArchived &&
|
|
187
|
+
columnExists(db, table, "archived_at")) {
|
|
188
|
+
sql += ` WHERE archived_at IS NULL OR archived_at = ''`;
|
|
189
|
+
}
|
|
190
|
+
const rows = db.prepare(sql).all();
|
|
191
|
+
return rows
|
|
192
|
+
.filter((r) => r.id != null && r.id !== "")
|
|
193
|
+
.map((r) => {
|
|
194
|
+
const doc = { id: String(r.id), type: index.docType };
|
|
195
|
+
for (const c of available) {
|
|
196
|
+
if (c === "id")
|
|
197
|
+
continue;
|
|
198
|
+
doc[c] = r[c] ?? null;
|
|
199
|
+
}
|
|
200
|
+
return doc;
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Indexe une brand.db selon un BrandMeiliFeed (UIDs génériques).
|
|
205
|
+
*/
|
|
206
|
+
export async function runFeedIndexation(opts) {
|
|
207
|
+
const log = opts.log ?? ((line) => console.log(line));
|
|
208
|
+
const feed = opts.feed;
|
|
209
|
+
const dbPath = opts.dbPath ?? process.env.DB_PATH;
|
|
210
|
+
const meiliHost = opts.meiliHost ?? process.env.MEILI_HOST;
|
|
211
|
+
const masterKey = opts.masterKey ?? process.env.MEILI_MASTER_KEY ?? "";
|
|
212
|
+
if (!dbPath)
|
|
213
|
+
throw new Error("DB_PATH manquant");
|
|
214
|
+
if (!meiliHost)
|
|
215
|
+
throw new Error("MEILI_HOST manquant");
|
|
216
|
+
if (!fs.existsSync(dbPath))
|
|
217
|
+
throw new Error(`[meili] DB manquante: ${dbPath}`);
|
|
218
|
+
const meili = createMeiliClient(meiliHost, masterKey);
|
|
219
|
+
if (!(await meiliAvailable(meili, log))) {
|
|
220
|
+
return { indexed: {}, engine: "skipped" };
|
|
221
|
+
}
|
|
222
|
+
const started = Date.now();
|
|
223
|
+
writeMeta(dbPath, MEILI_INDEX_IN_PROGRESS_KEY, JSON.stringify({
|
|
224
|
+
startedAt: new Date().toISOString(),
|
|
225
|
+
feedId: feed.id,
|
|
226
|
+
appVersion: opts.appVersion,
|
|
227
|
+
}));
|
|
228
|
+
emitOpsEvent({ level: "event", kind: "index.start", ctx: { feed: feed.id } });
|
|
229
|
+
const db = openSqlite(dbPath, { readonly: true, fileMustExist: true });
|
|
230
|
+
const indexed = {};
|
|
231
|
+
try {
|
|
232
|
+
const nProduits = countTable(db, feed.countTables.produits);
|
|
233
|
+
const nSites = countTable(db, feed.countTables.sites);
|
|
234
|
+
const totalDocs = feed.indexes.reduce((acc, idx) => {
|
|
235
|
+
if (idx.countKey === "produits")
|
|
236
|
+
return acc + nProduits;
|
|
237
|
+
return acc + nSites;
|
|
238
|
+
}, 0);
|
|
239
|
+
let done = 0;
|
|
240
|
+
const bump = (n) => {
|
|
241
|
+
done += n;
|
|
242
|
+
if (totalDocs > 0) {
|
|
243
|
+
console.log(`${feed.progressPrefix}PROGRESS ${JSON.stringify({ done, total: totalDocs })}`);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
for (const index of feed.indexes) {
|
|
247
|
+
const newUid = `${index.uid}_new`;
|
|
248
|
+
await recreateIndex(meili, newUid, index.settings);
|
|
249
|
+
const docs = loadDocs(db, feed, index);
|
|
250
|
+
for (let i = 0; i < docs.length; i += BATCH_MEILI) {
|
|
251
|
+
const batch = docs.slice(i, i + BATCH_MEILI);
|
|
252
|
+
await waitTask(meili, await meili.request("POST", `/indexes/${newUid}/documents?primaryKey=id`, batch));
|
|
253
|
+
bump(batch.length);
|
|
254
|
+
}
|
|
255
|
+
await swapAndCleanup(meili, index.uid);
|
|
256
|
+
indexed[index.uid] = docs.length;
|
|
257
|
+
log(`[meili] ${index.uid}: ${docs.length} docs (swap OK)`);
|
|
258
|
+
}
|
|
259
|
+
for (const uid of feed.obsoleteIndexUids || []) {
|
|
260
|
+
await deleteIndexIfExists(meili, uid, log);
|
|
261
|
+
await deleteIndexIfExists(meili, `${uid}_new`, log);
|
|
262
|
+
}
|
|
263
|
+
const fp = {
|
|
264
|
+
indexSchema: feed.schemaVersion,
|
|
265
|
+
sqliteSchema: readSqliteSchemaVersion(db),
|
|
266
|
+
counts: { produits: nProduits, fournisseurs: nSites },
|
|
267
|
+
builtAt: new Date().toISOString(),
|
|
268
|
+
appVersion: opts.appVersion,
|
|
269
|
+
};
|
|
270
|
+
writeMeta(dbPath, MEILI_FINGERPRINT_META_KEY, serializeFingerprint(fp));
|
|
271
|
+
const metaUid = feed.metaIndexUid || "catalog_meta";
|
|
272
|
+
try {
|
|
273
|
+
if (!(await indexExists(meili, metaUid))) {
|
|
274
|
+
await createIndex(meili, metaUid);
|
|
275
|
+
}
|
|
276
|
+
await waitTask(meili, await meili.request("POST", `/indexes/${metaUid}/documents?primaryKey=id`, [
|
|
277
|
+
{ id: "fingerprint", feedId: feed.id, ...fp },
|
|
278
|
+
]));
|
|
279
|
+
}
|
|
280
|
+
catch (e) {
|
|
281
|
+
log(`[meili] fingerprint Meili non écrit (${e instanceof Error ? e.message : e})`);
|
|
282
|
+
}
|
|
283
|
+
clearMeta(dbPath, MEILI_INDEX_IN_PROGRESS_KEY);
|
|
284
|
+
emitOpsEvent({
|
|
285
|
+
level: "event",
|
|
286
|
+
kind: "index.done",
|
|
287
|
+
outcome: "ok",
|
|
288
|
+
durationMs: Date.now() - started,
|
|
289
|
+
ctx: { feed: feed.id, ...indexed },
|
|
290
|
+
});
|
|
291
|
+
log(`[meili] feed=${feed.id} terminé en ${((Date.now() - started) / 1000).toFixed(1)}s`);
|
|
292
|
+
return { indexed, engine: "meili" };
|
|
293
|
+
}
|
|
294
|
+
finally {
|
|
295
|
+
db.close();
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Recherche multi-index Meili — retourne [] si q vide / host absent.
|
|
300
|
+
*
|
|
301
|
+
* Fail-closed (Meili = composant core) : seul un index ABSENT (HTTP 404,
|
|
302
|
+
* indexation initiale pas encore passée) est toléré silencieusement.
|
|
303
|
+
* Toute autre erreur (Meili down, refus connexion, timeout, 5xx) est
|
|
304
|
+
* RETHROW — l'appelant (search mount) doit la transformer en
|
|
305
|
+
* 503 `meili_unavailable`, jamais en fallback SQL silencieux.
|
|
306
|
+
*/
|
|
307
|
+
export async function searchMeiliIndexes(opts) {
|
|
308
|
+
const q = opts.query.trim();
|
|
309
|
+
if (!q || !opts.host)
|
|
310
|
+
return [];
|
|
311
|
+
const meili = createMeiliClient(opts.host, opts.masterKey || "");
|
|
312
|
+
const limit = opts.limit ?? 20;
|
|
313
|
+
const hits = [];
|
|
314
|
+
for (const uid of opts.indexUids) {
|
|
315
|
+
try {
|
|
316
|
+
const res = (await meili.request("POST", `/indexes/${uid}/search`, {
|
|
317
|
+
q,
|
|
318
|
+
limit,
|
|
319
|
+
}));
|
|
320
|
+
for (const h of res.hits || []) {
|
|
321
|
+
hits.push({ ...h, _index: uid });
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
catch (err) {
|
|
325
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
326
|
+
if (/^Meili HTTP 404\b/.test(msg))
|
|
327
|
+
continue; // index pas encore créé
|
|
328
|
+
throw err;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return hits;
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=generic-indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-indexer.js","sourceRoot":"","sources":["../../../src/host/meili/generic-indexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schéma logique des index Meili catalogue.
|
|
3
|
+
*
|
|
4
|
+
* Le descripteur SoT est le `BrandMeiliFeed` de la marque (UIDs `catalog_*`
|
|
5
|
+
* via `configureMeiliBrandFeed` / `runFeedIndexation`). Ce module fournit :
|
|
6
|
+
* - les clés meta fingerprint / in-progress (partagées feed ↔ cohérence) ;
|
|
7
|
+
* - les UIDs génériques par défaut (`catalog_products` / `catalog_sites`)
|
|
8
|
+
* utilisés par la cohérence quand aucun feed n'est configuré ;
|
|
9
|
+
* - les tables SQL comptées (`configureMeiliCatalogSqlTables`).
|
|
10
|
+
*
|
|
11
|
+
* Aucun UID marque ne vit dans le kit — une marque avec des UIDs
|
|
12
|
+
* historiques les porte dans SON feed.
|
|
13
|
+
*
|
|
14
|
+
* Bumper INDEX_SCHEMA_VERSION (ou feed.schemaVersion) à chaque changement
|
|
15
|
+
* d'indexes / settings / docs pour forcer une réindexation au boot.
|
|
16
|
+
*/
|
|
17
|
+
/** v1 = produits / sites (descripteur générique catalog_*). */
|
|
18
|
+
export declare const INDEX_SCHEMA_VERSION = 1;
|
|
19
|
+
export declare const MEILI_FINGERPRINT_META_KEY = "meili_index_fingerprint";
|
|
20
|
+
/** Clé meta : indexation en cours (posée au start, effacée à la fin). */
|
|
21
|
+
export declare const MEILI_INDEX_IN_PROGRESS_KEY = "meili_index_in_progress";
|
|
22
|
+
export declare const CATALOG_INDEXES: readonly ["catalog_products", "catalog_sites"];
|
|
23
|
+
export type CatalogIndexUid = (typeof CATALOG_INDEXES)[number];
|
|
24
|
+
/** Alias historique (API cohérence GED) — liste catalogue. */
|
|
25
|
+
export declare const GED_INDEXES: readonly ["catalog_products", "catalog_sites"];
|
|
26
|
+
export type GedIndexUid = CatalogIndexUid;
|
|
27
|
+
/**
|
|
28
|
+
* Tables SQL utilisées pour les compteurs de cohérence Meili.
|
|
29
|
+
* Défaut = schéma CHR générique (`produits` / `fournisseurs`).
|
|
30
|
+
* Marques avec un autre schéma : `configureMeiliCatalogSqlTables`.
|
|
31
|
+
*/
|
|
32
|
+
export type MeiliCatalogSqlTables = {
|
|
33
|
+
/** Table lignes « produits » (compteur → catalog_products). */
|
|
34
|
+
produits: string;
|
|
35
|
+
/**
|
|
36
|
+
* Table lignes « sites / marketplaces » (compteur → catalog_sites).
|
|
37
|
+
* Défaut CHR : `fournisseurs`. Champ retourné dans CatalogSqlCounts.fournisseurs
|
|
38
|
+
* (nom historique du fingerprint — ne pas renommer sans bump schema).
|
|
39
|
+
*/
|
|
40
|
+
sites: string;
|
|
41
|
+
};
|
|
42
|
+
/** Configure les tables SQL comptées pour la cohérence Meili (défaut TF). */
|
|
43
|
+
export declare function configureMeiliCatalogSqlTables(next: Partial<MeiliCatalogSqlTables>): void;
|
|
44
|
+
export declare function getMeiliCatalogSqlTables(): MeiliCatalogSqlTables;
|
|
45
|
+
/** Tests uniquement. */
|
|
46
|
+
export declare function resetMeiliCatalogSqlTablesForTests(): void;
|
|
47
|
+
export type CatalogSqlCounts = {
|
|
48
|
+
produits: number;
|
|
49
|
+
/** Compteur table `sites` (défaut TF = fournisseurs) — nom fingerprint historique. */
|
|
50
|
+
fournisseurs: number;
|
|
51
|
+
};
|
|
52
|
+
/** Alias pour compat API cohérence (ex-GedSqlCounts). */
|
|
53
|
+
export type GedSqlCounts = CatalogSqlCounts;
|
|
54
|
+
export type MeiliFingerprint = {
|
|
55
|
+
indexSchema: number;
|
|
56
|
+
sqliteSchema: number;
|
|
57
|
+
counts: CatalogSqlCounts;
|
|
58
|
+
builtAt: string;
|
|
59
|
+
appVersion?: string;
|
|
60
|
+
};
|
|
61
|
+
export declare function expectedMeiliCounts(sql: CatalogSqlCounts): Record<CatalogIndexUid, number>;
|
|
62
|
+
export declare function parseFingerprint(raw: string | null | undefined): MeiliFingerprint | null;
|
|
63
|
+
export declare function serializeFingerprint(fp: MeiliFingerprint): string;
|
|
64
|
+
//# sourceMappingURL=index-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-schema.d.ts","sourceRoot":"","sources":["../../../src/host/meili/index-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AAEpE,yEAAyE;AACzE,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AAErE,eAAO,MAAM,eAAe,gDAGlB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,8DAA8D;AAC9D,eAAO,MAAM,WAAW,gDAAkB,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AASF,6EAA6E;AAC7E,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACnC,IAAI,CAEN;AAED,wBAAgB,wBAAwB,IAAI,qBAAqB,CAEhE;AAED,wBAAwB;AACxB,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,gBAAgB,GACpB,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAKjC;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAgBxF;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAEjE"}
|