@kedem/okdb 1.0.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/LICENSE +57 -0
- package/README.md +344 -0
- package/banner.jpg +0 -0
- package/bin/okdb.js +2 -0
- package/docs/OKDB-ARCHITECTURE.md +1036 -0
- package/docs/auth-and-sync.md +558 -0
- package/docs/auth-permissions.md +143 -0
- package/docs/change-log.md +169 -0
- package/docs/data-model.md +174 -0
- package/docs/embeddings.md +338 -0
- package/docs/files.md +131 -0
- package/docs/fts.md +139 -0
- package/docs/functions.md +514 -0
- package/docs/getting-started.md +233 -0
- package/docs/http-api.md +705 -0
- package/docs/index.md +115 -0
- package/docs/indexes.md +207 -0
- package/docs/logging.md +116 -0
- package/docs/manifest.json +38 -0
- package/docs/migration.md +154 -0
- package/docs/pipelines.md +598 -0
- package/docs/plugins.md +144 -0
- package/docs/querying.md +204 -0
- package/docs/queue.md +637 -0
- package/docs/sync.md +156 -0
- package/docs/transactions.md +140 -0
- package/docs/ttl.md +375 -0
- package/okdb.js +1 -0
- package/package.json +26 -0
- package/public/admin-app.js +1 -0
- package/public/android-chrome-192x192.png +0 -0
- package/public/android-chrome-512x512.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/components/admin-route-host.ok.js +1 -0
- package/public/components/env-picker.ok.js +1 -0
- package/public/components/field-path-input.ok.js +1 -0
- package/public/components/field.html +6 -0
- package/public/components/geo-map.ok.js +1 -0
- package/public/components/ok-cron-input.ok.js +1 -0
- package/public/components/ok-dropzone.ok.js +1 -0
- package/public/components/ok-js-input.ok.js +1 -0
- package/public/components/ok-json-input.ok.js +1 -0
- package/public/components/ok-text-monaco-input.ok.js +1 -0
- package/public/components/theme-toggle.ok.js +1 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/images/logo.png +0 -0
- package/public/images/logo.svg +333 -0
- package/public/index.html +6 -0
- package/public/layouts/_default.ok.html +1 -0
- package/public/layouts/okdb-cube.ok.html +1 -0
- package/public/login-app.js +1 -0
- package/public/login.html +1 -0
- package/public/modules/ok.js +1 -0
- package/public/sections/api/index.ok.html +1 -0
- package/public/sections/api/parts/api-endpoint.ok.js +1 -0
- package/public/sections/auth/index.ok.html +1 -0
- package/public/sections/auth/modals/create-token-modal.ok.js +1 -0
- package/public/sections/auth/modals/edit-token-modal.ok.js +1 -0
- package/public/sections/auth/modals/perm-info-popover.ok.js +1 -0
- package/public/sections/auth/parts/token-detail.ok.js +1 -0
- package/public/sections/auth/parts/token-list.ok.js +1 -0
- package/public/sections/db/index.ok.html +1 -0
- package/public/sections/db/modals/add-item-modal.ok.js +1 -0
- package/public/sections/db/modals/create-env-modal.ok.js +1 -0
- package/public/sections/db/modals/create-fts-modal.ok.js +1 -0
- package/public/sections/db/modals/create-index-modal.ok.js +1 -0
- package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -0
- package/public/sections/db/modals/demo-env-modal.ok.js +1 -0
- package/public/sections/db/modals/remove-env-modal.ok.js +1 -0
- package/public/sections/db/modals/schema-edit-modal.ok.js +1 -0
- package/public/sections/db/parts/db-overview.ok.js +1 -0
- package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -0
- package/public/sections/db/parts/edit-row.ok.js +1 -0
- package/public/sections/db/parts/tm-timeline.ok.js +1 -0
- package/public/sections/db/parts/type-changelog.ok.js +1 -0
- package/public/sections/db/parts/type-list.ok.js +1 -0
- package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -0
- package/public/sections/db/parts/type-schema-tab.ok.js +1 -0
- package/public/sections/db/parts/type-viewer.ok.js +1 -0
- package/public/sections/db/parts/type-violations-tab.ok.js +1 -0
- package/public/sections/docs/index.ok.html +1 -0
- package/public/sections/embeddings/index.ok.html +1 -0
- package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-overview.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -0
- package/public/sections/embeddings/parts/engines-overview.ok.js +1 -0
- package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -0
- package/public/sections/engines/engine-panel-shared-style.js +1 -0
- package/public/sections/engines/engine-ui-utils.js +1 -0
- package/public/sections/engines/index.ok.html +1 -0
- package/public/sections/engines/modals/engine-modal.ok.js +1 -0
- package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -0
- package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -0
- package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -0
- package/public/sections/engines/parts/engine-resource-card.ok.js +1 -0
- package/public/sections/engines/parts/engine-row-item.ok.js +1 -0
- package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -0
- package/public/sections/files/index.ok.html +1 -0
- package/public/sections/files/parts/files-blob-status.ok.js +1 -0
- package/public/sections/files/parts/files-collection-list.ok.js +1 -0
- package/public/sections/files/parts/files-collection-panel.ok.js +1 -0
- package/public/sections/files/parts/files-file-list.ok.js +1 -0
- package/public/sections/files/parts/files-overview.ok.js +1 -0
- package/public/sections/files/parts/files-path-browser.ok.js +1 -0
- package/public/sections/files/parts/files-upload-panel.ok.js +1 -0
- package/public/sections/functions/index.ok.html +1 -0
- package/public/sections/functions/modals/function-modal.ok.js +1 -0
- package/public/sections/functions/parts/function-detail.ok.js +1 -0
- package/public/sections/functions/parts/function-logs.ok.js +1 -0
- package/public/sections/functions/parts/function-runner.ok.js +1 -0
- package/public/sections/functions/parts/functions-list.ok.js +1 -0
- package/public/sections/license/index.ok.html +1 -0
- package/public/sections/license/parts/license-panel.ok.js +1 -0
- package/public/sections/processors/index.ok.html +1 -0
- package/public/sections/queue/index.ok.html +1 -0
- package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -0
- package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -0
- package/public/sections/queue/modals/edit-job-modal.ok.js +1 -0
- package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -0
- package/public/sections/queue/modals/job-type-modal.ok.js +1 -0
- package/public/sections/queue/parts/ok-job-form.ok.js +1 -0
- package/public/sections/queue/parts/queue-buckets.ok.js +1 -0
- package/public/sections/queue/parts/queue-job-types.ok.js +1 -0
- package/public/sections/queue/parts/queue-jobs.ok.js +1 -0
- package/public/sections/queue/parts/queue-types.ok.js +1 -0
- package/public/sections/queue/parts/queue-workers.ok.js +1 -0
- package/public/sections/sync/index.ok.html +5 -0
- package/public/sections/sync/parts/sync-node-detail.ok.js +1 -0
- package/public/sections/sync/parts/sync-retention.ok.js +1 -0
- package/public/sections/sync/parts/sync-topology.ok.js +1 -0
- package/public/sections/system/index.ok.html +1 -0
- package/public/sections/system/modals/data-ops-modal.ok.js +1 -0
- package/public/sections/system/parts/system-api-panel.ok.js +1 -0
- package/public/sections/system/parts/system-auth-panel.ok.js +1 -0
- package/public/sections/system/parts/system-log-history.ok.js +1 -0
- package/public/sections/system/parts/system-log.ok.js +1 -0
- package/public/sections/system/parts/system-status.ok.js +1 -0
- package/public/sections/system/parts/system-sync-panel.ok.js +1 -0
- package/public/sections/views/index.ok.html +1 -0
- package/public/sections/views/modals/create-view-modal.ok.js +1 -0
- package/public/sections/views/parts/view-detail.ok.js +1 -0
- package/public/sections/views/parts/views-list.ok.js +1 -0
- package/public/sections/views/parts/views-overview.ok.js +1 -0
- package/public/setup-app.js +1 -0
- package/public/setup.html +1 -0
- package/public/site.webmanifest +1 -0
- package/public/stores/auth-store.js +1 -0
- package/public/stores/events-store.js +1 -0
- package/public/stores/functions-store.js +1 -0
- package/public/stores/okdb-store.js +1 -0
- package/public/stores/theme-store.js +1 -0
- package/public/styles.css +1 -0
- package/public/test-cron-input.html +10 -0
- package/public/test-json-input.html +101 -0
- package/public/util/permissions.js +1 -0
- package/public/util/sift-schema.js +1 -0
- package/public/vendor/okjs/ok.esm.min.js +2 -0
- package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -0
- package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -0
- package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -0
- package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -0
- package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -0
- package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -0
- package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -0
- package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -0
- package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -0
- package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -0
- package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -0
- package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -0
- package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -0
- package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -0
- package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -0
- package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -0
- package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -0
- package/public/vendor/okjs/toolkit/manifest.js +1 -0
- package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -0
- package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -0
- package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -0
- package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -0
- package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -0
- package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -0
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -0
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -0
- package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -0
- package/public/view-models/type-query-vm.js +1 -0
- package/types/environment.d.ts +130 -0
- package/types/errors.d.ts +98 -0
- package/types/features/admin.d.ts +4 -0
- package/types/features/api.d.ts +18 -0
- package/types/features/auth.d.ts +31 -0
- package/types/features/embeddings.d.ts +39 -0
- package/types/features/engines.d.ts +23 -0
- package/types/features/files.d.ts +29 -0
- package/types/features/fts.d.ts +25 -0
- package/types/features/functions.d.ts +23 -0
- package/types/features/mcp.d.ts +17 -0
- package/types/features/pipelines.d.ts +19 -0
- package/types/features/queue.d.ts +189 -0
- package/types/features/sync.d.ts +34 -0
- package/types/features/time-machine.d.ts +32 -0
- package/types/features/views.d.ts +16 -0
- package/types/index.d.ts +153 -0
- package/types/options.d.ts +202 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x1a71(_0x398a79,_0x48196c){_0x398a79=_0x398a79-0x14f;const _0x192006=_0x1920();let _0x1a71ac=_0x192006[_0x398a79];return _0x1a71ac;}const _0x4079a7=_0x1a71;(function(_0x3afe0b,_0x2c60e9){const _0x477617=_0x1a71,_0x42137d=_0x3afe0b();while(!![]){try{const _0x426a6a=-parseInt(_0x477617(0x19b))/0x1+parseInt(_0x477617(0x1c4))/0x2*(parseInt(_0x477617(0x184))/0x3)+parseInt(_0x477617(0x170))/0x4+-parseInt(_0x477617(0x175))/0x5*(-parseInt(_0x477617(0x1a4))/0x6)+parseInt(_0x477617(0x198))/0x7*(-parseInt(_0x477617(0x1b4))/0x8)+parseInt(_0x477617(0x18e))/0x9+-parseInt(_0x477617(0x188))/0xa;if(_0x426a6a===_0x2c60e9)break;else _0x42137d['push'](_0x42137d['shift']());}catch(_0x4f516f){_0x42137d['push'](_0x42137d['shift']());}}}(_0x1920,0x5956d));import _0x3d7af1 from'@toolkit/elements/ok-table.ok.js';import _0x453d6c from'../../engines/parts/engine-panel-shell.ok.js';import{ENGINE_PANEL_SHARED_STYLE as _0x30aa06}from'../../engines/engine-panel-shared-style.js';import{buildEmbeddingsPipelineUrl as _0x43cc58,dispatchEnginePipelineSelection as _0x7f3faa}from'../../engines/engine-ui-utils.js';function _0x1920(){const _0x35f856=['_pipelineUrl','min','$dispatch','editError','json','_buildEditAlgConfig','length','editBusy','result','305358ncQcqD','confirm','API','slice','9704720qDmaby','eng','config','/item/','start','application/json','4229199XFFBHH','type','/embeddings/engines/','chars\x20','$ok','max','/stats','not\x20found','algorithm_config','POST','350798HhKMgm','\x20KB','dims','400159skSNXs','data','actionResult','busy','$host','metric','shared','Rebuild\x20the\x20full\x20index\x20from\x20storage?\x20This\x20may\x20take\x20a\x20while.','storage_key','4184670sjUcWX','var(--okdb-danger)','filter','engine-updated','editAlgorithm','workerMetrics','docExpanded','editAlgorithmMap','Snapshot\x20published.','No\x20snapshot\x20needed\x20(up\x20to\x20date).','/snapshot','indexer','\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:title=\x22name\x22\x0a\x20\x20type-label=\x22vector-search\x22\x0a\x20\x20type-color=\x22var(--okdb-accent)\x22\x0a\x20\x20:badges=\x22headerBadges\x22\x0a\x20\x20show-refresh=\x22true\x22\x0a\x20\x20fill=\x22true\x22\x0a\x20\x20:refresh-busy=\x22busy\x20||\x20queryBusy\x20||\x20actionBusy\x22\x0a\x20\x20:on-refresh=\x22()\x20=>\x20onRefresh()\x22\x0a\x20\x20:on-pipeline=\x22viewPipeline\x22\x0a\x20\x20@engine-updated=\x22$dispatch(\x27engine-updated\x27,\x20$event.detail)\x22\x0a\x20\x20@refresh=\x22$dispatch(\x27refresh\x27)\x22\x0a\x20\x20@deleted=\x22$dispatch(\x27deleted\x27,\x20$event.detail)\x22\x0a>\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x0a\x20\x20<if\x20:=\x22stats\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;min-width:0;flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pill-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Vector\x20search\x20algorithm.\x22>{{\x20s.algorithm\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Distance\x20metric.\x22>{{\x20metricValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Vector\x20dimensions.\x22>dims:\x20{{\x20dimsValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Backing\x20storage\x20key.\x22>store:\x20{{\x20storageKeyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22chunkStrategy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Chunking\x20strategy\x20used\x20by\x20the\x20indexer.\x22>chunk:\x20{{\x20chunkStrategy\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Query\x20the\x20live\x20vector\x20index\x20for\x20<strong>{{\x20storageKeyValue\x20}}</strong>\x20and\x20inspect\x20the\x20matched\x20source\x20chunks\x20below.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-note\x22>Use\x20text\x20search\x20here\x20to\x20validate\x20relevance\x20quickly.\x20Snapshot\x20and\x20rebuild\x20are\x20available\x20below\x20when\x20the\x20in-memory\x20index\x20needs\x20maintenance.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-grid\x20metric-grid--compact\x22\x20style=\x22min-width:min(100%,\x20360px);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Vectors</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22>{{\x20vectorCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Capacity</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22font-size:18px;\x22>{{\x20capacityValue\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22wm\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;justify-content:space-between;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Performance</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!wm.searchOps\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;opacity:.4;font-style:italic;\x22>Run\x20a\x20search\x20to\x20populate\x20latency\x20metrics.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Avg\x20latency</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20fmtMs(wm.searchLatencyAvgMs)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>p95\x20latency</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20fmtMs(wm.searchLatencyP95Ms)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Searches</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20wm.searchOps\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Queue\x20depth</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20wm.pendingOps\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22wm.workerMemory\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Heap\x20used</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22\x20style=\x22font-size:15px;\x22>{{\x20fmtBytes(wm.workerMemory.heapUsed)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>RSS</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22\x20style=\x22font-size:15px;\x22>{{\x20fmtBytes(wm.workerMemory.rss)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x20flex:1;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;gap:8px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Search\x20test</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Run\x20a\x20text\x20query\x20and\x20inspect\x20the\x20raw\x20chunk\x20hits\x20and\x20source\x20context.</span>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!hasEmbedder\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:12px;\x20font-style:italic;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20No\x20embedder\x20configured\x20—\x20text\x20queries\x20unavailable.\x20Pass\x20a\x20Float32Array\x20via\x20the\x20API\x20directly.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Enter\x20text\x20query…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22queryText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22queryText\x20=\x20$el.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@keydown.enter=\x22runQuery\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!hasEmbedder\x20||\x20!eng.isRunning\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:72px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22queryLimit\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22queryLimit\x20=\x20Number($el.value)\x20||\x2010\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20max=\x22100\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Top-K\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22runQuery\x22\x20:disabled=\x22queryBusy\x20||\x20!queryText.trim()\x20||\x20!eng.isRunning\x20||\x20!hasEmbedder\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20queryBusy\x20?\x20\x27…\x27\x20:\x20\x27Search\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22queryError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20queryError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22queryResults\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22overflow:auto;\x20min-height:0;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22queryResults.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:13px;\x22>No\x20results.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x20:data=\x22queryResults\x22\x20no-scroll\x20style=\x22width:100%;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x2236px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>#</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>{{\x20queryResults.indexOf(row)\x20+\x201\x20}}</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Key</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20row.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22chunk-loc\x22\x20style=\x22margin-left:8px;\x22>{{\x20fmtRange(row.chunk)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22200px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Score</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20background:var(--okdb-app-border);\x20border-radius:4px;\x20height:6px;\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22\x27height:100%;\x20border-radius:4px;\x20background:\x27\x20+\x20scoreColor(row.score)\x20+\x20\x27;\x20width:\x27\x20+\x20scoreBar(row.score)\x20+\x20\x27%\x27\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.8;\x20min-width:42px;\x20text-align:right;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20(row.score\x20*\x20100).toFixed(1)\x20}}%\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px;\x20font-size:12px;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x22\x20:data-fetch=\x22autoFetch(row)\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Identity\x20line\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.6;\x20font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:10px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>key:\x20<strong\x20style=\x22color:#fff;\x20opacity:1;\x22>{{\x20row.key\x20}}</strong></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22sourceType\x22><span>type:\x20<strong\x20style=\x22color:var(--okdb-accent);\x22>{{\x20sourceType\x20}}</strong></span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22chunk-loc\x22>{{\x20fmtRange(row.chunk)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunkHash\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-family:monospace;\x20font-size:10px;\x22>{{\x20row.chunkHash\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20CHUNKED\x20RESULT\x20═══════════════════════════════════════════\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Tier\x201:\x20Matched\x20chunk\x20text\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:4px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Matched\x20chunk</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!row.chunk.text\x20&&\x20usesNonTrivialPrepare\x20&&\x20getChunkText(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-warning);\x20font-size:10px;\x22\x20title=\x22Chunk\x20offsets\x20are\x20into\x20the\x20prepared\x20text;\x20extraction\x20from\x20the\x20raw\x20field\x20may\x20be\x20approximate.\x22>⚠\x20approximate</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20storeText:\x20true\x20—\x20text\x20carried\x20in\x20the\x20result\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk.text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22chunk-text\x22>{{\x20row.chunk.text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20storeText:\x20false\x20—\x20extract\x20from\x20loaded\x20source\x20doc\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!row.chunk.text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:11px;\x20padding:6px\x200;\x22>Loading\x20chunk…</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.busy\x20&&\x20getChunkText(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22chunk-text\x22>{{\x20getChunkText(row)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.busy\x20&&\x20!getChunkText(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:11px;\x20font-style:italic;\x20padding:4px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.error\x22>Source\x20doc\x20unavailable.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.error\x20&&\x20!sourceType\x22>No\x20source\x20type\x20—\x20cannot\x20look\x20up\x20chunk\x20text.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.error\x20&&\x20sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Chunk\x20text\x20not\x20stored.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!eng.config?.field\x22>\x20No\x20field\x20configured.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.config?.field\x22>\x20Enable\x20<code>storeText:\x20true</code>\x20in\x20the\x20pipeline\x20to\x20store\x20it.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Tier\x202:\x20\x22View\x20in\x20context\x20of\x20source\x22\x20collapsible\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22doc-toggle\x22\x20@click=\x22toggleDocExpand(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docExpanded[row.key]\x22>▲\x20hide\x20source\x20context</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docExpanded[row.key]\x22>▼\x20view\x20in\x20context\x20of\x20source</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docExpanded[row.key]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:8px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:11px;\x22>Loading\x20source…</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x22>{{\x20docCache[row.key].error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.value\x20!==\x20undefined\x20&&\x20!docCache[row.key]?.error\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Field\x20known\x20+\x20value\x20present\x20→\x20show\x20highlighted\x20field\x20text\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.config?.field\x20&&\x20docCache[row.key].value?.[eng.config.field]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Field\x20<strong\x20style=\x22color:#fff;\x20opacity:.9;\x22>{{\x20eng.config.field\x20}}</strong>\x20—\x20matched\x20range\x20highlighted\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22usesNonTrivialPrepare\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-warning);\x22\x20title=\x22The\x20pipeline\x20uses\x20prepare:\x27{{\x20stats.indexer.prepare\x20}}\x27.\x20Chunk\x20offsets\x20are\x20into\x20the\x20prepared\x20text,\x20so\x20the\x20highlight\x20position\x20in\x20the\x20raw\x20field\x20is\x20approximate.\x22>\x20⚠\x20approximate\x20(prepare:\x20{{\x20stats.indexer.prepare\x20}})</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22chunk-text\x20chunk-text--ctx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22splitHighlight(String(docCache[row.key].value[eng.config.field]\x20??\x20\x27\x27),\x20row.chunk)\x22\x20let:item=\x22seg\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22seg.highlight\x20?\x20\x27chunk-hl\x27\x20:\x20\x27\x27\x22>{{\x20seg.text\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20No\x20field\x20or\x20field\x20value\x20missing\x20→\x20fall\x20back\x20to\x20full\x20doc\x20JSON\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!(eng.config?.field\x20&&\x20docCache[row.key].value?.[eng.config.field])\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-all;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:300px;\x20overflow:auto;\x20color:#a5f3fc;\x22>{{\x20fmtDoc(docCache[row.key].value)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:11px;\x22>No\x20source\x20type\x20linked\x20—\x20cannot\x20load\x20source\x20document.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20END\x20CHUNKED\x20══════════════════════════════════════════════\x20-->\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20NON-CHUNKED\x20RESULT:\x20show\x20source\x20doc\x20directly\x20(unchanged)\x20═\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!row.chunk\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:11px;\x22>Loading…</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20margin-top:4px;\x22>{{\x20docCache[row.key].error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.value\x20!==\x20undefined\x20&&\x20!docCache[row.key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-all;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:220px;\x20overflow:auto;\x20color:#a5f3fc;\x22>{{\x20fmtDoc(docCache[row.key].value)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:11px;\x22>No\x20source\x20type\x20linked\x20—\x20cannot\x20look\x20up\x20original\x20document.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20END\x20NON-CHUNKED\x20══════════════════════════════════════════\x20-->\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;justify-content:space-between;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Index\x20details</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!editMode\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20style=\x22font-size:12px;padding:3px\x2010px;\x22\x20@click=\x22openEditConfig\x22\x20:disabled=\x22!eng.isRunning\x20&&\x20!eng.config\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Edit\x20config\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!editMode\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x20kv-grid--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>algorithm</span><span\x20class=\x22kv-val\x22>{{\x20s.algorithm\x20||\x20eng.config?.algorithm\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>metric</span><span\x20class=\x22kv-val\x22>{{\x20metricValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>dims</span><span\x20class=\x22kv-val\x22>{{\x20dimsValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>storage\x20key</span><span\x20class=\x22kv-val\x22>{{\x20storageKeyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.role\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>role</span><span\x20class=\x22kv-val\x22>{{\x20s.role\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.M\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>M</span><span\x20class=\x22kv-val\x22>{{\x20s.M\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>efConstruction</span><span\x20class=\x22kv-val\x22>{{\x20s.efConstruction\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>efSearch</span><span\x20class=\x22kv-val\x22>{{\x20s.efSearch\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.connectivity\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>connectivity</span><span\x20class=\x22kv-val\x22>{{\x20s.connectivity\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>expansion\x20search</span><span\x20class=\x22kv-val\x22>{{\x20s.expansionSearch\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.changesSince\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>changes\x20since\x20snap</span><span\x20class=\x22kv-val\x22>{{\x20s.changesSince\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.latestSnapshot\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>last\x20snapshot</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22\x20style=\x22font-size:11px;\x20word-break:break-all;\x22>{{\x20s.latestSnapshot\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22editMode\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-form\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-note\x22>Saving\x20will\x20restart\x20the\x20engine\x20to\x20apply\x20the\x20new\x20algorithm.\x20stats_data\x20and\x20storage\x20remain\x20intact.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-label\x22>Algorithm</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22editAlgorithm\x22\x20@change=\x22onEditAlgorithmChange($el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22editAlgorithms\x22\x20let:item=\x22alg\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22alg.key\x22\x20:selected=\x22alg.key\x20===\x20editAlgorithm\x22>{{\x20alg.label\x20||\x20alg.key\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22editAlgorithmNote\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-hint\x22>{{\x20editAlgorithmNote\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22editAlgorithmFields\x22\x20let:item=\x22field\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-label\x22>{{\x20field.label\x20||\x20field.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22field.type\x20===\x20\x27select\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22editAlgConfig[field.key]\x22\x20@change=\x22editAlgConfig\x20=\x20{\x20...editAlgConfig,\x20[field.key]:\x20$el.value\x20}\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22field.options\x22\x20let:item=\x22opt\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22opt.value\x22\x20:selected=\x22opt.value\x20===\x20editAlgConfig[field.key]\x22>{{\x20opt.label\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22field.type\x20!==\x20\x27select\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22field.type\x20===\x20\x27number\x27\x20?\x20\x27number\x27\x20:\x20\x27text\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22editAlgConfig[field.key]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22editAlgConfig\x20=\x20{\x20...editAlgConfig,\x20[field.key]:\x20$el.value\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:placeholder=\x22field.placeholder\x20??\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:min=\x22field.min\x20??\x20undefined\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22field.hint\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-hint\x22>{{\x20field.hint\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22editError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);font-size:13px;\x22>{{\x20editError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;gap:8px;margin-top:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22saveConfig\x22\x20:disabled=\x22editBusy\x22>{{\x20editBusy\x20?\x20\x27Saving…\x27\x20:\x20\x27Save\x20&\x20restart\x27\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22closeEditConfig\x22\x20:disabled=\x22editBusy\x22\x20style=\x22opacity:.7;\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Maintenance</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22snapshot\x22\x20:disabled=\x22actionBusy\x20||\x20!eng.isRunning\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionBusy\x20?\x20\x27…\x27\x20:\x20\x27Snapshot\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuild\x22\x20:disabled=\x22actionBusy\x20||\x20!eng.isRunning\x22\x20style=\x22color:var(--okdb-warning);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionBusy\x20?\x20\x27…\x27\x20:\x20\x27Rebuild\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Snapshot\x20current\x20state\x20for\x20faster\x20reloads,\x20or\x20rebuild\x20when\x20the\x20in-memory\x20index\x20drifts\x20from\x20storage.</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<if\x20:=\x22actionResult\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-success);\x20font-size:13px;\x22>{{\x20actionResult\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22actionError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20actionError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','modal','Rebuild\x20complete.','queryBusy','8zspxSB','number','toFixed','embedder','var(--okdb-purple)','editAlgConfig','engine','queryError','load','maxElements','text','_seedEditAlgConfig','$watch','queryResults','actionError','chunk','2PnLMLS','keys','var(--okdb-warning)','\x20MB','$el','isArray','save\x20failed','push','docCache','strategy','isConnected','name','actionBusy','some','/env/','note','rebuild\x20failed','none','string','error','source_type','failed','key','editAlgorithmFields','editMode','<1ms','$attr','algorithm','fields','/query','editAlgorithms','default','var(--okdb-orange)','snapped','message','count','2070144TEtsdk','stats','fetchDoc','snapshot\x20failed','stringify','5GNhHVv','queryLimit','prepare','value','fromEntries','embed-search-panel'];_0x1920=function(){return _0x35f856;};return _0x1920();}const a=_0x30aa06+'\x0a\x20\x20.kv-grid\x20{\x20grid-template-columns:160px\x201fr;\x20}\x0a\x20\x20.chunk-loc\x20\x20{\x20font-size:11px;\x20color:var(--okdb-orange);\x20opacity:.9;\x20white-space:nowrap;\x20}\x0a\x20\x20.chunk-text\x20{\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:160px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x20}\x0a\x20\x20.chunk-text--ctx\x20{\x20max-height:300px;\x20}\x0a\x20\x20.chunk-hl\x20\x20\x20{\x20background:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2013%,\x20transparent);\x20border-bottom:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-orange)\x2053%,\x20transparent);\x20color:#fed7aa;\x20}\x0a\x20\x20.doc-toggle\x20{\x20font-size:11px;\x20color:var(--okdb-accent);\x20cursor:pointer;\x20opacity:.75;\x20background:none;\x20border:none;\x20padding:0;\x20}\x0a\x20\x20.doc-toggle:hover\x20{\x20opacity:1;\x20}\x0a\x20\x20.approx-note\x20{\x20font-size:10px;\x20opacity:.45;\x20margin-top:3px;\x20}\x0a\x20\x20.perf-grid\x20{\x20display:grid;\x20grid-template-columns:repeat(auto-fill,minmax(110px,1fr));\x20gap:8px;\x20}\x0a\x20\x20.perf-cell\x20{\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:8px;\x20padding:8px\x2010px;\x20}\x0a\x20\x20.perf-label\x20{\x20font-size:10px;\x20opacity:.5;\x20text-transform:uppercase;\x20letter-spacing:.05em;\x20margin-bottom:4px;\x20}\x0a\x20\x20.perf-value\x20{\x20font-size:18px;\x20font-weight:600;\x20color:var(--okdb-accent);\x20}\x0a\x20\x20.perf-unit\x20\x20{\x20font-size:11px;\x20opacity:.55;\x20margin-left:2px;\x20}\x0a\x20\x20.edit-form\x20\x20{\x20display:grid;\x20grid-template-columns:140px\x201fr;\x20gap:8px\x2012px;\x20align-items:start;\x20font-size:13px;\x20}\x0a\x20\x20.edit-form\x20select,\x20.edit-form\x20input\x20{\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:6px\x208px;\x20color:inherit;\x20font-size:13px;\x20width:100%;\x20box-sizing:border-box;\x20}\x0a\x20\x20.edit-form\x20select:focus,\x20.edit-form\x20input:focus\x20{\x20outline:none;\x20border-color:var(--okdb-accent);\x20}\x0a\x20\x20.edit-label\x20{\x20opacity:.65;\x20text-align:right;\x20padding-top:7px;\x20}\x0a\x20\x20.edit-hint\x20\x20{\x20font-size:11px;\x20opacity:.4;\x20font-style:italic;\x20margin-top:2px;\x20grid-column:2;\x20}\x0a\x20\x20.edit-note\x20\x20{\x20font-size:12px;\x20opacity:.55;\x20background:color-mix(in\x20srgb,\x20var(--okdb-warning)\x208%,\x20transparent);\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-warning)\x2025%,\x20transparent);\x20border-radius:6px;\x20padding:7px\x2010px;\x20grid-column:1/-1;\x20}\x0a';export default{'tag':_0x4079a7(0x17a),'dependencies':[_0x3d7af1,_0x453d6c],'attr':{'name':{},'engine':{}},'context':_0x135885=>({'busy':!0x1,'stats':null,'error':null,'actionBusy':!0x1,'actionResult':null,'actionError':null,'queryText':'','queryLimit':0xa,'queryResults':null,'queryBusy':!0x1,'queryError':null,'docCache':{},'docExpanded':{},'editMode':!0x1,'editBusy':!0x1,'editError':null,'editAlgorithm':null,'editAlgConfig':{},'editAlgorithms':[],'editAlgorithmMap':{},get 'eng'(){const _0x196253=_0x4079a7;return _0x135885[_0x196253(0x166)][_0x196253(0x1ba)]??{};},get 'name'(){const _0x234b12=_0x4079a7;return _0x135885[_0x234b12(0x166)][_0x234b12(0x157)];},get '_pipelineUrl'(){const _0x4aad08=_0x4079a7;return _0x43cc58(this[_0x4aad08(0x189)],this[_0x4aad08(0x157)]);},get 's'(){const _0x238490=_0x4079a7;return this[_0x238490(0x171)]?.['search']??this[_0x238490(0x171)]??{};},get 'hasEmbedder'(){const _0x449231=_0x4079a7;return!!this[_0x449231(0x189)][_0x449231(0x18a)]?.[_0x449231(0x1b7)];},get 'sourceType'(){const _0x431d1a=_0x4079a7;return this[_0x431d1a(0x171)]?.[_0x431d1a(0x18f)]??this['s']?.[_0x431d1a(0x160)]??this['eng'][_0x431d1a(0x18a)]?.[_0x431d1a(0x160)]??null;},get 'vectorCount'(){const _0x12d68c=_0x4079a7;return this['s'][_0x12d68c(0x16f)]??0x0;},get 'capacityValue'(){const _0x437ea0=_0x4079a7;return this['s'][_0x437ea0(0x1bd)]??'∞';},get 'dimsValue'(){const _0xe1b6aa=_0x4079a7;return this['s'][_0xe1b6aa(0x19a)]??'—';},get 'metricValue'(){const _0x3fce72=_0x4079a7;return this['s'][_0x3fce72(0x1a0)]||'—';},get 'storageKeyValue'(){const _0x2cb844=_0x4079a7;return this['s'][_0x2cb844(0x1a3)]||'—';},get 'chunkStrategy'(){const _0x19bc64=_0x4079a7;return this['s'][_0x19bc64(0x1c3)]?.[_0x19bc64(0x155)]||null;},get 'wm'(){const _0x2c4e27=_0x4079a7;return this['s'][_0x2c4e27(0x1a9)]??null;},get 'headerBadges'(){const _0x5739eb=_0x4079a7,_0x4caa09=[];return this['s'][_0x5739eb(0x167)]&&_0x4caa09[_0x5739eb(0x153)]({'text':this['s'][_0x5739eb(0x167)],'color':_0x5739eb(0x1b8)}),this['s'][_0x5739eb(0x1c3)]&&_0x4caa09[_0x5739eb(0x153)]({'text':'chunked\x20·\x20'+this['s'][_0x5739eb(0x1c3)][_0x5739eb(0x155)],'color':_0x5739eb(0x16c)}),_0x4caa09;},get 'usesNonTrivialPrepare'(){const _0x36858e=_0x4079a7,_0x2881fe=this[_0x36858e(0x171)]?.[_0x36858e(0x1af)]?.[_0x36858e(0x177)];return!!_0x2881fe&&_0x36858e(0x15d)!==_0x2881fe;},'fmtBytes':_0x26e84a=>null==_0x26e84a?'—':_0x26e84a>=0x40000000?(_0x26e84a/0x40000000)['toFixed'](0x1)+'\x20GB':_0x26e84a>=0x100000?(_0x26e84a/0x100000)[_0x4079a7(0x1b6)](0x1)+_0x4079a7(0x14f):_0x26e84a>=0x400?(_0x26e84a/0x400)[_0x4079a7(0x1b6)](0x0)+_0x4079a7(0x199):_0x26e84a+'\x20B','fmtMs':_0x2b1ef3=>null==_0x2b1ef3?'—':_0x2b1ef3<0x1?_0x4079a7(0x165):_0x2b1ef3+'ms',async 'loadEditAlgorithms'(){const _0x627e7f=_0x4079a7;if(!this['editAlgorithms'][_0x627e7f(0x181)])try{const _0xce6aa6=await fetch(__ENV__[_0x627e7f(0x186)]+'/embeddings/algorithms'),_0x58bf6f=await _0xce6aa6['json']();this['editAlgorithms']=_0x58bf6f[_0x627e7f(0x19c)]||[],this[_0x627e7f(0x1ab)]=Object[_0x627e7f(0x179)](this[_0x627e7f(0x16a)]['map'](_0x22b55d=>[_0x22b55d[_0x627e7f(0x162)],_0x22b55d]));}catch{this[_0x627e7f(0x16a)]=[];}},get 'editAlgorithmFields'(){const _0x2951c2=_0x4079a7;return this['editAlgorithmMap'][this[_0x2951c2(0x1a8)]]?.[_0x2951c2(0x168)]??[];},get 'editAlgorithmNote'(){const _0x183fa6=_0x4079a7;return this[_0x183fa6(0x1ab)][this[_0x183fa6(0x1a8)]]?.[_0x183fa6(0x15b)]??null;},async 'openEditConfig'(){const _0xf56d51=_0x4079a7;await this['loadEditAlgorithms']();const _0x495066=this[_0xf56d51(0x189)][_0xf56d51(0x18a)]??{};this[_0xf56d51(0x1a8)]=_0x495066[_0xf56d51(0x167)]??'flat',this[_0xf56d51(0x1bf)](this[_0xf56d51(0x1a8)],_0x495066[_0xf56d51(0x196)]??{}),this[_0xf56d51(0x164)]=!0x0,this[_0xf56d51(0x17e)]=null;},'closeEditConfig'(){const _0x409ed8=_0x4079a7;this[_0x409ed8(0x164)]=!0x1,this[_0x409ed8(0x17e)]=null;},'_seedEditAlgConfig'(_0x547cc8,_0x880183={}){const _0x364f52=_0x4079a7,_0x5afb6f=this[_0x364f52(0x1ab)][_0x547cc8]?.[_0x364f52(0x168)]??[],_0x2da209={};for(const _0xb5311 of _0x5afb6f)_0x2da209[_0xb5311[_0x364f52(0x162)]]=_0x880183[_0xb5311[_0x364f52(0x162)]]??_0xb5311['default']??'';this[_0x364f52(0x1b9)]=_0x2da209;},'onEditAlgorithmChange'(_0x43611e){const _0x1b4129=_0x4079a7;this['editAlgorithm']=_0x43611e;const _0x4c58af=this[_0x1b4129(0x189)][_0x1b4129(0x18a)]?.[_0x1b4129(0x167)]===_0x43611e?this['eng']['config']?.[_0x1b4129(0x196)]??{}:{};this[_0x1b4129(0x1bf)](_0x43611e,_0x4c58af);},'_buildEditAlgConfig'(){const _0x1fb63a=_0x4079a7,_0xc8299f={};for(const _0x1a7055 of this[_0x1fb63a(0x163)]){const _0x275beb=this[_0x1fb63a(0x1b9)][_0x1a7055[_0x1fb63a(0x162)]];''!==_0x275beb&&null!=_0x275beb&&(_0xc8299f[_0x1a7055['key']]='number'===_0x1a7055[_0x1fb63a(0x18f)]?Number(_0x275beb):_0x275beb);}return Object[_0x1fb63a(0x1c5)](_0xc8299f)[_0x1fb63a(0x181)]>0x0?_0xc8299f:void 0x0;},async 'saveConfig'(){const _0x38fa5=_0x4079a7;this[_0x38fa5(0x182)]=!0x0,this[_0x38fa5(0x17e)]=null;try{const _0x3c3d1b=this[_0x38fa5(0x180)](),_0x3bd9d5={'algorithm':this[_0x38fa5(0x1a8)]};_0x3c3d1b?_0x3bd9d5[_0x38fa5(0x196)]=_0x3c3d1b:delete _0x3bd9d5[_0x38fa5(0x196)];const _0x36e678=await fetch(__ENV__[_0x38fa5(0x186)]+_0x38fa5(0x190)+encodeURIComponent(this['eng'][_0x38fa5(0x162)]),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'config':_0x3bd9d5})}),_0x296f0d=await _0x36e678[_0x38fa5(0x17f)]();if(!_0x36e678['ok'])throw new Error(_0x296f0d?.[_0x38fa5(0x15f)]?.[_0x38fa5(0x16e)]||_0x38fa5(0x152));this[_0x38fa5(0x164)]=!0x1,_0x135885[_0x38fa5(0x17d)](_0x38fa5(0x1a7),_0x296f0d[_0x38fa5(0x183)]??_0x296f0d[_0x38fa5(0x19c)]),await this[_0x38fa5(0x1bc)]();}catch(_0x24c308){this[_0x38fa5(0x17e)]=_0x24c308?.[_0x38fa5(0x16e)]||String(_0x24c308);}finally{this[_0x38fa5(0x182)]=!0x1;}},async 'load'(){const _0x26c8ff=_0x4079a7;this[_0x26c8ff(0x19e)]=!0x0,this[_0x26c8ff(0x15f)]=null;try{const _0x1338a2=await fetch(this[_0x26c8ff(0x17b)]+_0x26c8ff(0x194)),_0xf00c77=await _0x1338a2[_0x26c8ff(0x17f)]();if(!_0x1338a2['ok'])throw new Error(_0xf00c77?.[_0x26c8ff(0x15f)]?.[_0x26c8ff(0x16e)]||_0x26c8ff(0x161));this[_0x26c8ff(0x171)]=_0xf00c77[_0x26c8ff(0x19c)];}catch(_0x2b4ac6){this[_0x26c8ff(0x15f)]=_0x2b4ac6?.[_0x26c8ff(0x16e)]||String(_0x2b4ac6),this[_0x26c8ff(0x171)]=null;}finally{this[_0x26c8ff(0x19e)]=!0x1;}},async 'snapshot'(){const _0x5d3fe1=_0x4079a7;if(await _0x135885[_0x5d3fe1(0x192)][_0x5d3fe1(0x1a1)][_0x5d3fe1(0x1b1)]['confirm']('Take\x20a\x20snapshot\x20now?')){this[_0x5d3fe1(0x158)]=!0x0,this[_0x5d3fe1(0x19d)]=null,this[_0x5d3fe1(0x1c2)]=null;try{const _0x34b9c3=await fetch(this[_0x5d3fe1(0x17b)]+_0x5d3fe1(0x1ae),{'method':_0x5d3fe1(0x197)}),_0x3c0f11=await _0x34b9c3[_0x5d3fe1(0x17f)]();if(!_0x34b9c3['ok'])throw new Error(_0x3c0f11?.[_0x5d3fe1(0x15f)]?.[_0x5d3fe1(0x16e)]||_0x5d3fe1(0x173));this[_0x5d3fe1(0x19d)]=_0x3c0f11[_0x5d3fe1(0x19c)]?.[_0x5d3fe1(0x16d)]?_0x5d3fe1(0x1ac):_0x5d3fe1(0x1ad),await this[_0x5d3fe1(0x1bc)]();}catch(_0xb204b7){this[_0x5d3fe1(0x1c2)]=_0xb204b7?.[_0x5d3fe1(0x16e)]||String(_0xb204b7);}finally{this[_0x5d3fe1(0x158)]=!0x1;}}},async 'rebuild'(){const _0x1a2056=_0x4079a7;if(await _0x135885['$ok']['shared'][_0x1a2056(0x1b1)][_0x1a2056(0x185)](_0x1a2056(0x1a2))){this[_0x1a2056(0x158)]=!0x0,this[_0x1a2056(0x19d)]=null,this[_0x1a2056(0x1c2)]=null;try{const _0x366c80=await fetch(this[_0x1a2056(0x17b)]+'/rebuild',{'method':_0x1a2056(0x197)}),_0x7353e6=await _0x366c80[_0x1a2056(0x17f)]();if(!_0x366c80['ok'])throw new Error(_0x7353e6?.[_0x1a2056(0x15f)]?.[_0x1a2056(0x16e)]||_0x1a2056(0x15c));this[_0x1a2056(0x19d)]=_0x1a2056(0x1b2),await this['load']();}catch(_0x2be225){this['actionError']=_0x2be225?.[_0x1a2056(0x16e)]||String(_0x2be225);}finally{this[_0x1a2056(0x158)]=!0x1;}}},async 'runQuery'(){const _0x3d972a=_0x4079a7,_0x2fcc87=String(this['queryText']||'')['trim']();if(_0x2fcc87){this[_0x3d972a(0x1b3)]=!0x0,this[_0x3d972a(0x1bb)]=null,this[_0x3d972a(0x1c1)]=null,this[_0x3d972a(0x154)]={},this[_0x3d972a(0x1aa)]={};try{const _0x3801b2=await fetch(this[_0x3d972a(0x17b)]+_0x3d972a(0x169),{'method':_0x3d972a(0x197),'headers':{'Content-Type':_0x3d972a(0x18d)},'body':JSON[_0x3d972a(0x174)]({'query':_0x2fcc87,'limit':Number(this[_0x3d972a(0x176)])||0xa})}),_0x2e1847=await _0x3801b2['json']();if(!_0x3801b2['ok'])throw new Error(_0x2e1847?.[_0x3d972a(0x15f)]?.[_0x3d972a(0x16e)]||'query\x20failed');this[_0x3d972a(0x1c1)]=_0x2e1847['data']||[];}catch(_0x1fa9e3){this['queryError']=_0x1fa9e3?.[_0x3d972a(0x16e)]||String(_0x1fa9e3);}finally{this[_0x3d972a(0x1b3)]=!0x1;}}},'scoreBar':_0x4122ff=>Math['round'](0x64*Math[_0x4079a7(0x17c)](0x1,Math[_0x4079a7(0x193)](0x0,_0x4122ff))),'scoreColor':_0x1b24b0=>_0x1b24b0>=0.8?'var(--okdb-success)':_0x1b24b0>=0.5?_0x4079a7(0x1c6):_0x4079a7(0x1a5),get 'isChunked'(){const _0x3ab457=_0x4079a7;return Array[_0x3ab457(0x151)](this[_0x3ab457(0x1c1)])&&this['queryResults'][_0x3ab457(0x159)](_0x2ec1cf=>_0x2ec1cf[_0x3ab457(0x1c3)]);},'fmtRange':_0x378c55=>_0x378c55?_0x4079a7(0x191)+_0x378c55[_0x4079a7(0x18c)]+'–'+_0x378c55['end']:'','autoFetch'(_0x285e40){const _0x364a25=_0x4079a7;return!this['sourceType']||this[_0x364a25(0x154)][_0x285e40['key']]||!!_0x285e40[_0x364a25(0x1c3)]?.[_0x364a25(0x1be)]||this[_0x364a25(0x172)](_0x285e40),null;},async 'fetchDoc'(_0x473c23){const _0x473754=_0x4079a7,_0x20deb8=this['sourceType'];if(!_0x20deb8)return;const _0x1bae33=_0x473c23[_0x473754(0x162)];this[_0x473754(0x154)][_0x1bae33]={'busy':!0x0,'value':void 0x0,'error':null};try{const _0xef7e33=this[_0x473754(0x189)][_0x473754(0x18a)]?.['source_env']??_0x473754(0x16b),_0x1a6d21=__ENV__['API']+_0x473754(0x15a)+encodeURIComponent(_0xef7e33),_0xd89c7a=await fetch(_0x1a6d21+'/type/'+encodeURIComponent(_0x20deb8)+_0x473754(0x18b)+encodeURIComponent(_0x1bae33)),_0x50cac5=await _0xd89c7a[_0x473754(0x17f)]();if(!_0xd89c7a['ok'])throw new Error(_0x50cac5?.['error']?.[_0x473754(0x16e)]||_0x473754(0x195));this[_0x473754(0x154)][_0x1bae33]={'busy':!0x1,'value':_0x50cac5[_0x473754(0x19c)]?.['value']??null,'error':null};}catch(_0x608ae7){this['docCache'][_0x1bae33]={'busy':!0x1,'value':void 0x0,'error':_0x608ae7?.[_0x473754(0x16e)]||String(_0x608ae7)};}},'toggleDocExpand'(_0x585a67){const _0x4bfe03=_0x4079a7,_0x13b02d=_0x585a67[_0x4bfe03(0x162)];this[_0x4bfe03(0x1aa)][_0x13b02d]=!this[_0x4bfe03(0x1aa)][_0x13b02d],this['docExpanded'][_0x13b02d]&&!this[_0x4bfe03(0x154)][_0x13b02d]&&this[_0x4bfe03(0x172)](_0x585a67);},'fmtDoc'(_0x5e3405){const _0x33228f=_0x4079a7;try{return JSON[_0x33228f(0x174)](_0x5e3405,null,0x2);}catch{return String(_0x5e3405);}},'getChunkText'(_0x3ea500){const _0x3deb24=_0x4079a7;if(_0x3ea500[_0x3deb24(0x1c3)]?.[_0x3deb24(0x1be)])return _0x3ea500['chunk']['text'];const _0x26e882=this[_0x3deb24(0x189)][_0x3deb24(0x18a)]?.['field'],_0x6fbb8a=this['docCache'][_0x3ea500[_0x3deb24(0x162)]];if(!_0x26e882||!_0x6fbb8a?.[_0x3deb24(0x178)]||!_0x3ea500[_0x3deb24(0x1c3)])return null;const _0xd6b4a1=_0x6fbb8a[_0x3deb24(0x178)][_0x26e882];return _0x3deb24(0x15e)!=typeof _0xd6b4a1?null:_0xd6b4a1[_0x3deb24(0x187)](_0x3ea500[_0x3deb24(0x1c3)][_0x3deb24(0x18c)],_0x3ea500['chunk']['end'])||null;},'splitHighlight'(_0xb834c3,_0x43675d){const _0x476edf=_0x4079a7;if(!_0x43675d||!_0xb834c3||_0x476edf(0x15e)!=typeof _0xb834c3)return null;const {start:_0xd018aa,end:_0x554692}=_0x43675d;if(_0x476edf(0x1b5)!=typeof _0xd018aa||_0x476edf(0x1b5)!=typeof _0x554692)return null;const _0x11d085=Math[_0x476edf(0x193)](0x0,_0xd018aa),_0x53c798=Math[_0x476edf(0x17c)](_0xb834c3[_0x476edf(0x181)],Math[_0x476edf(0x193)](_0x11d085,_0x554692));return _0x11d085>=_0x53c798?[{'text':_0xb834c3,'highlight':!0x1}]:[{'text':_0xb834c3['slice'](0x0,_0x11d085),'highlight':!0x1},{'text':_0xb834c3['slice'](_0x11d085,_0x53c798),'highlight':!0x0},{'text':_0xb834c3[_0x476edf(0x187)](_0x53c798),'highlight':!0x1}][_0x476edf(0x1a6)](_0x2a71df=>_0x2a71df[_0x476edf(0x1be)][_0x476edf(0x181)]>0x0);},async 'onRefresh'(){const _0x29fd5a=_0x4079a7;this[_0x29fd5a(0x1c1)]=null,this[_0x29fd5a(0x1aa)]={},await this[_0x29fd5a(0x1bc)]();},'viewPipeline'(){const _0x46887f=_0x4079a7;_0x7f3faa(_0x135885,this[_0x46887f(0x189)]);}}),async 'init'(_0x3713ce){const _0x15bf98=_0x4079a7;_0x3713ce[_0x15bf98(0x1c0)](()=>_0x3713ce[_0x15bf98(0x166)][_0x15bf98(0x157)],async()=>{const _0x3ae6ec=_0x15bf98;this[_0x3ae6ec(0x171)]=null,this[_0x3ae6ec(0x1c1)]=null,this[_0x3ae6ec(0x1aa)]={},await this[_0x3ae6ec(0x1bc)]();}),await this[_0x15bf98(0x1bc)]();const _0xe098b4=_0x3713ce[_0x15bf98(0x150)]??_0x3713ce[_0x15bf98(0x19f)]??null,_0x4694ce=setInterval(async()=>{const _0x45d953=_0x15bf98;if(!_0xe098b4||_0xe098b4[_0x45d953(0x156)]){if(!this[_0x45d953(0x19e)]&&!this['editBusy']&&!this['editMode'])try{await this[_0x45d953(0x1bc)]();}catch{}}else clearInterval(_0x4694ce);},0x1388);},'template':_0x4079a7(0x1b0),'style':a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x12ea1d=_0x325a;(function(_0x537a0d,_0x55d051){const _0x26bc79=_0x325a,_0x540986=_0x537a0d();while(!![]){try{const _0x54bdad=-parseInt(_0x26bc79(0x14e))/0x1*(parseInt(_0x26bc79(0x154))/0x2)+-parseInt(_0x26bc79(0x144))/0x3*(parseInt(_0x26bc79(0x12b))/0x4)+parseInt(_0x26bc79(0x137))/0x5+parseInt(_0x26bc79(0x145))/0x6+parseInt(_0x26bc79(0x13b))/0x7+parseInt(_0x26bc79(0x14f))/0x8*(-parseInt(_0x26bc79(0x152))/0x9)+parseInt(_0x26bc79(0x143))/0xa;if(_0x54bdad===_0x55d051)break;else _0x540986['push'](_0x540986['shift']());}catch(_0x1236ca){_0x540986['push'](_0x540986['shift']());}}}(_0x88e9,0x2959c));import _0x5672f0 from'../../engines/parts/engine-panel-shell.ok.js';import{ENGINE_PANEL_SHARED_STYLE as _0xd6727a}from'../../engines/engine-panel-shared-style.js';function _0x325a(_0x2e1862,_0x16d620){_0x2e1862=_0x2e1862-0x125;const _0x88e90a=_0x88e9();let _0x325ac8=_0x88e90a[_0x2e1862];return _0x325ac8;}import{dispatchEnginePipelineSelection as _0x4495c5}from'../../engines/engine-ui-utils.js';const s=_0xd6727a;function _0x88e9(){const _0x241471=['engine','application/json','/embeddings/indexers/','processed','330007XVvgYF','24kVjTfT','Cannot\x20determine\x20job_type\x20or\x20indexer\x20name','json','593091zOEXIv','/embeddings/workers/','2dmysvy','concurrency','data','embedder','Retry\x20all\x20failed\x20queue\x20jobs\x20for\x20type\x20\x22<b>','stats','$ok','/stats','88CgYxMy','\x20queue\x20job(s)','message','retryBusy','failed','indexer','shared','embed-worker-panel','/retryFailed','load','job_type','Retried\x20','1249035GChVcK','API','error','config','103817KopuBU','$attr','eng','toast','\x20doc(s)','\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:title=\x22name\x22\x0a\x20\x20type-label=\x22worker\x22\x0a\x20\x20type-color=\x22var(--okdb-warning)\x22\x0a\x20\x20show-refresh=\x22true\x22\x0a\x20\x20:refresh-busy=\x22busy\x20||\x20retryBusy\x22\x0a\x20\x20:on-refresh=\x22onRefresh\x22\x0a\x20\x20:on-pipeline=\x22viewPipeline\x22\x0a\x20\x20@engine-updated=\x22$dispatch(\x27engine-updated\x27,\x20$event.detail)\x22\x0a\x20\x20@refresh=\x22$dispatch(\x27refresh\x27)\x22\x0a\x20\x20@deleted=\x22$dispatch(\x27deleted\x27,\x20$event.detail)\x22\x0a>\x0a\x20\x20<div\x20class=\x22stack-compact\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;min-width:0;flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pill-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Queue\x20job\x20type\x20consumed\x20by\x20this\x20worker.\x22>{{\x20jobType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Indexer\x20this\x20worker\x20feeds.\x22>indexer:\x20{{\x20indexerName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Embedder\x20used\x20for\x20vector\x20generation.\x22>embedder:\x20{{\x20embedderName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Parallel\x20worker\x20lanes.\x22>concurrency:\x20{{\x20concurrencyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Consumes\x20queued\x20embedding\x20jobs\x20for\x20<strong>{{\x20indexerName\x20}}</strong>\x20and\x20pushes\x20text\x20through\x20<strong>{{\x20embedderName\x20}}</strong>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-note\x22>Use\x20retry\x20when\x20queue\x20jobs\x20failed\x20or\x20docs\x20were\x20left\x20stuck\x20pending\x20after\x20a\x20queue\x20disruption.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-grid\x20metric-grid--compact\x22\x20style=\x22min-width:min(100%,\x20360px);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Processed</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20processedCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Failed</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(failedCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20failedCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>In\x20flight</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(inflightCount\x20>\x200\x20?\x20\x27var(--okdb-warning)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20inflightCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;gap:10px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22retryAllFailed()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22retryBusy\x20||\x20(!failedCount\x20&&\x20!jobType)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2027%,\x20transparent);\x20font-size:12px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Retry\x20all\x20failed\x20queue\x20jobs\x20for\x20this\x20worker\x27s\x20job_type\x20+\x20re-enqueue\x20stuck\x20docs\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20retryBusy\x20?\x20\x27Retrying…\x27\x20:\x20\x27↺\x20Retry\x20Failed\x20Jobs\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Retries\x20queue\x20failures\x20and\x20also\x20re-enqueues\x20stuck\x20pending\x20docs\x20on\x20the\x20linked\x20indexer.</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22alert\x20alert--error\x22>{{\x20error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Worker\x20details</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x20kv-grid--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>job\x20type</span><span\x20class=\x22kv-val\x22>{{\x20jobType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>indexer</span><span\x20class=\x22kv-val\x22>{{\x20indexerName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>embedder</span><span\x20class=\x22kv-val\x22>{{\x20embedderName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>concurrency</span><span\x20class=\x22kv-val\x22>{{\x20concurrencyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','stringify','success','3136270mXcLGt','26931jKNPBd','1897830tzTYwr',',\x20re-enqueued\x20','busy','modal','name'];_0x88e9=function(){return _0x241471;};return _0x88e9();}export default{'tag':_0x12ea1d(0x132),'dependencies':[_0x5672f0],'attr':{'name':{},'engine':{}},'context':_0x5eae40=>({'busy':!0x1,'stats':null,'error':null,'retryBusy':!0x1,get 'eng'(){const _0x1ce0ac=_0x12ea1d;return _0x5eae40['$attr'][_0x1ce0ac(0x14a)]??{};},get 'name'(){const _0x14ff44=_0x12ea1d;return _0x5eae40[_0x14ff44(0x13c)]['name'];},get 'jobType'(){const _0x33d9ed=_0x12ea1d;return this['stats']?.['job_type']||this[_0x33d9ed(0x13d)]?.[_0x33d9ed(0x13a)]?.[_0x33d9ed(0x135)]||'—';},get 'indexerName'(){const _0x456e58=_0x12ea1d;return this[_0x456e58(0x128)]?.[_0x456e58(0x130)]||this[_0x456e58(0x13d)]?.['config']?.['indexer']||'—';},get 'embedderName'(){const _0x1d3753=_0x12ea1d;return this[_0x1d3753(0x128)]?.[_0x1d3753(0x126)]||this[_0x1d3753(0x13d)]?.[_0x1d3753(0x13a)]?.[_0x1d3753(0x126)]||'—';},get 'concurrencyValue'(){const _0x3a4ff3=_0x12ea1d;return this['stats']?.[_0x3a4ff3(0x155)]??this['eng']?.[_0x3a4ff3(0x13a)]?.[_0x3a4ff3(0x155)]??'—';},get 'processedCount'(){const _0x4fc597=_0x12ea1d;return this[_0x4fc597(0x128)]?.[_0x4fc597(0x14d)]??0x0;},get 'failedCount'(){const _0x312f7d=_0x12ea1d;return this[_0x312f7d(0x128)]?.[_0x312f7d(0x12f)]??0x0;},get 'inflightCount'(){const _0x2c464d=_0x12ea1d;return this[_0x2c464d(0x128)]?.['in_flight']??0x0;},async 'load'(){const _0x4f2d2c=_0x12ea1d;this[_0x4f2d2c(0x147)]=!0x0,this[_0x4f2d2c(0x139)]=null;try{const _0x4d39bb=await fetch(__ENV__[_0x4f2d2c(0x138)]+_0x4f2d2c(0x153)+encodeURIComponent(this[_0x4f2d2c(0x149)])+_0x4f2d2c(0x12a)),_0xc3b5af=await _0x4d39bb[_0x4f2d2c(0x151)]();if(!_0x4d39bb['ok'])throw new Error(_0xc3b5af?.[_0x4f2d2c(0x139)]?.['message']||_0x4f2d2c(0x12f));this[_0x4f2d2c(0x128)]=_0xc3b5af[_0x4f2d2c(0x125)];}catch(_0x3a2875){this[_0x4f2d2c(0x139)]=_0x3a2875?.['message']||String(_0x3a2875),this[_0x4f2d2c(0x128)]=null;}finally{this[_0x4f2d2c(0x147)]=!0x1;}},async 'onRefresh'(){await this['load']();},'viewPipeline'(){_0x4495c5(_0x5eae40,this['eng']);},async 'retryAllFailed'(){const _0x1e4e75=_0x12ea1d,_0x1564cd=this[_0x1e4e75(0x128)]?.[_0x1e4e75(0x135)]||this[_0x1e4e75(0x13d)]?.[_0x1e4e75(0x13a)]?.[_0x1e4e75(0x135)],_0x1f4fa1=this[_0x1e4e75(0x128)]?.[_0x1e4e75(0x130)]||this['eng']?.[_0x1e4e75(0x13a)]?.[_0x1e4e75(0x130)];if(_0x1564cd||_0x1f4fa1){if(await _0x5eae40[_0x1e4e75(0x129)][_0x1e4e75(0x131)][_0x1e4e75(0x148)]['confirm'](_0x1e4e75(0x127)+_0x1564cd+'</b>\x22?<br><br>This\x20will\x20also\x20re-enqueue\x20any\x20stuck\x20PENDING\x20docs\x20on\x20the\x20indexer.')){this[_0x1e4e75(0x12e)]=!0x0;try{const _0x1c9427=await fetch(__ENV__[_0x1e4e75(0x138)]+'/queue/retryFailed',{'method':'POST','headers':{'Content-Type':_0x1e4e75(0x14b)},'body':JSON[_0x1e4e75(0x141)]({'type':_0x1564cd,'limit':0x1388})}),_0x3c5ebe=await _0x1c9427[_0x1e4e75(0x151)](),_0x21a41e=_0x3c5ebe?.[_0x1e4e75(0x125)]?.['retried']??0x0;let _0x2839d7=0x0;if(_0x1f4fa1){const _0x549b0e=await fetch(__ENV__['API']+_0x1e4e75(0x14c)+encodeURIComponent(_0x1f4fa1)+_0x1e4e75(0x133),{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'limit':0x1388,'includeStuckPending':!0x0})}),_0x51aca3=await _0x549b0e[_0x1e4e75(0x151)]();_0x2839d7=_0x51aca3?.[_0x1e4e75(0x125)]?.['retried']??0x0;}_0x5eae40[_0x1e4e75(0x129)]['shared']?.[_0x1e4e75(0x13e)]?.[_0x1e4e75(0x142)]?.(_0x1e4e75(0x136)+_0x21a41e+_0x1e4e75(0x12c)+(_0x2839d7?_0x1e4e75(0x146)+_0x2839d7+_0x1e4e75(0x13f):'')),_0x5eae40['$dispatch']('refresh'),await this[_0x1e4e75(0x134)]();}catch(_0x44583e){_0x5eae40[_0x1e4e75(0x129)][_0x1e4e75(0x131)]?.[_0x1e4e75(0x13e)]?.[_0x1e4e75(0x139)]?.(_0x44583e?.[_0x1e4e75(0x12d)]||'Retry\x20failed');}finally{this['retryBusy']=!0x1;}}}else _0x5eae40['$ok'][_0x1e4e75(0x131)]?.[_0x1e4e75(0x13e)]?.[_0x1e4e75(0x139)]?.(_0x1e4e75(0x150));}}),async 'init'(_0x38b60c){const _0x499c9e=_0x12ea1d;_0x38b60c['$watch'](()=>_0x38b60c[_0x499c9e(0x13c)][_0x499c9e(0x149)],async()=>{const _0x525e7d=_0x499c9e;this[_0x525e7d(0x128)]=null,this[_0x525e7d(0x139)]=null,await this[_0x525e7d(0x134)]();}),await this[_0x499c9e(0x134)]();},'template':_0x12ea1d(0x140),'style':s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x2e51(_0x2822c9,_0x224caa){_0x2822c9=_0x2822c9-0x1be;var _0x30e7f5=_0x30e7();var _0x2e51e9=_0x30e7f5[_0x2822c9];return _0x2e51e9;}var _0x27a0e0=_0x2e51;(function(_0x1775ed,_0x11ef58){var _0x4c8bc4=_0x2e51,_0x25fa9d=_0x1775ed();while(!![]){try{var _0x4027b7=-parseInt(_0x4c8bc4(0x1c2))/0x1+-parseInt(_0x4c8bc4(0x1d0))/0x2+parseInt(_0x4c8bc4(0x1ce))/0x3*(-parseInt(_0x4c8bc4(0x1c8))/0x4)+-parseInt(_0x4c8bc4(0x1cb))/0x5*(parseInt(_0x4c8bc4(0x1cd))/0x6)+parseInt(_0x4c8bc4(0x1c3))/0x7*(-parseInt(_0x4c8bc4(0x1cc))/0x8)+parseInt(_0x4c8bc4(0x1be))/0x9+parseInt(_0x4c8bc4(0x1c6))/0xa;if(_0x4027b7===_0x11ef58)break;else _0x25fa9d['push'](_0x25fa9d['shift']());}catch(_0x52d51d){_0x25fa9d['push'](_0x25fa9d['shift']());}}}(_0x30e7,0x551b9));import _0x18fb0f from'./embed-embedder-panel.ok.js';import _0x2c4a7e from'./embed-indexer-panel.ok.js';function _0x30e7(){var _0x8edb4b=['14813860vkWsrg','detail','56PgAyem','embeddings-engine-panel','$attr','60VSACbl','672576hrkDGd','262356xawuvO','83292eHqvlu','\x0a<div\x20style=\x22display:flex;flex-direction:column;gap:14px;min-width:0;\x22>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27embedder\x27\x22>\x0a\x20\x20\x20\x20<embed-embedder-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27indexer\x27\x22>\x0a\x20\x20\x20\x20<embed-indexer-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27embed-worker\x27\x22>\x0a\x20\x20\x20\x20<embed-worker-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27vector-search\x27\x22>\x0a\x20\x20\x20\x20<embed-search-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22!hasKnownPanel\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:14px;border:1px\x20solid\x20var(--okdb-app-border);border-radius:12px;background:var(--okdb-app-bg-deep);color:var(--okdb-app-fg-muted);font-size:12px;line-height:1.6;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20embeddings\x20panel\x20is\x20registered\x20for\x20engine\x20type\x20<code>{{\x20panelType\x20||\x20\x27unknown\x27\x20}}</code>.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a</div>\x0a','831148AjSrOQ','6273828VCKOem','engine','type','panelType','80535JqOdra','35GfJTDG','$dispatch','eng'];_0x30e7=function(){return _0x8edb4b;};return _0x30e7();}import _0x82fe33 from'./embed-search-panel.ok.js';import _0x1ff234 from'./embed-worker-panel.ok.js';import{isEmbeddingsEngineType as _0x29f116}from'../../engines/engine-ui-utils.js';export default{'tag':_0x27a0e0(0x1c9),'dependencies':[_0x18fb0f,_0x2c4a7e,_0x82fe33,_0x1ff234],'attr':{'engine':{}},'context':_0x34ec5a=>({get 'eng'(){var _0x1126b3=_0x27a0e0;return _0x34ec5a[_0x1126b3(0x1ca)][_0x1126b3(0x1bf)]??{};},get 'panelType'(){var _0x467e38=_0x27a0e0;return this[_0x467e38(0x1c5)][_0x467e38(0x1c0)]??'';},get 'hasKnownPanel'(){var _0x1fdf7f=_0x27a0e0;return _0x29f116(this[_0x1fdf7f(0x1c1)]);},'forward'(_0x430b30){var _0x112b3d=_0x27a0e0;_0x430b30?.[_0x112b3d(0x1c0)]&&_0x34ec5a[_0x112b3d(0x1c4)](_0x430b30[_0x112b3d(0x1c0)],_0x430b30[_0x112b3d(0x1c7)]);}}),'template':_0x27a0e0(0x1cf)};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x1f94(_0x46b58a,_0x24ff26){_0x46b58a=_0x46b58a-0xb4;const _0x478431=_0x4784();let _0x1f943d=_0x478431[_0x46b58a];return _0x1f943d;}const _0x4f888c=_0x1f94;(function(_0x174260,_0x56a697){const _0xab8f6f=_0x1f94,_0x863610=_0x174260();while(!![]){try{const _0x323861=parseInt(_0xab8f6f(0x171))/0x1+-parseInt(_0xab8f6f(0x140))/0x2+parseInt(_0xab8f6f(0x142))/0x3+parseInt(_0xab8f6f(0x167))/0x4*(-parseInt(_0xab8f6f(0xfa))/0x5)+parseInt(_0xab8f6f(0xf8))/0x6+parseInt(_0xab8f6f(0x185))/0x7*(parseInt(_0xab8f6f(0x184))/0x8)+-parseInt(_0xab8f6f(0x130))/0x9*(parseInt(_0xab8f6f(0xbb))/0xa);if(_0x323861===_0x56a697)break;else _0x863610['push'](_0x863610['shift']());}catch(_0x4a279d){_0x863610['push'](_0x863610['shift']());}}}(_0x4784,0x2ffd9));import _0x573eee from'../../engines/modals/engine-modal.ok.js';function _0x4784(){const _0x593167=['message','Extractor','target_type','Source','allFile','filePipelineEngines','Edit\x20Engine\x20·\x20','meta','color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent)','Queue','filterToSelectedPipeline','pipelines','isEmbedded','statusFilter','type','role','embedEngines','typeLabel','visibleEngines','sort','running','Engines','embedded','Started','~system','success','Env\x20Pipelines','selectedpipeline','engineStatusBucket','embedOnly','modeFilter','Prepare','building','/pipelines/','84lKmErG','Mode','flatMap','pipelineActionBusy','filePipelines','members','matchesSearch','isRunning','Pipelines','engineInSelectedPipeline','292187lwziof','relatedType','trim','find','Provider','pipelineConfigMetrics','job_type','embedPipelineEngines','confirm','background:var(--okdb-app-surface);border:1px\x20solid\x20','Restarted\x20pipeline\x20\x22','source_env','Try\x20changing\x20the\x20pipeline\x20type,\x20status,\x20search,\x20or\x20source-type\x20filters.','select',';border-radius:10px;overflow:hidden;transition:border-color\x20.14s;','Chunk','processor','pipelineTypeFilter','var(--okdb-app-border)','8Cyhiwz','45143dEwEvx','paused','catch','Algorithm','/start','fileEngines','split','all','collectionEngine','degraded','<br><br>Env-owned\x20members\x20will\x20be\x20removed;\x20shared\x20members\x20will\x20be\x20preserved.','Materializer','55;color:','allUniqueEngines','engineMetricSearchParts','name','allEngines','pipelineTypeMatches','embeddings','selectedPipelineName','true','\x20failed','key','collections','runtime','add','filter','warning','engineSourceTypes','POST','1270nbvalj','selectedPipelineMembers','embed-worker','goto-type','Concurrency','$vars','Stop\x20failed','filteredEmbedPipelines','Collection','collection','embedding','relatedEnv','search','start','startsWith','label','Progress','refresh','okdb','pipelineIdentity','Deleted\x20pipeline\x20\x22','isArray','pipelineRequest','join','string','every','touchesSourceType','engines','request','vector-search','Delete\x20pipeline\x20\x22<b>','fileData','var(--okdb-accent)','push','toLowerCase','var(--okdb-warning)','Processor','filteredVisibleEngines','var(--okdb-app-fg)','Worker','Engine','online','Stopped','indexer','withPipelineBusy','#94a3b8','localeCompare','engineEnv','filteredFilePipelines','workers','Try\x20changing\x20the\x20engine\x20type,\x20status,\x20search,\x20or\x20source-type\x20filters.','Try\x20changing\x20the\x20engine\x20type,\x20status,\x20or\x20search\x20filters\x20above.','attention','</b>\x22?<br><br>','isSelectedPipeline','includes','toast','engines-overview','Indexer','DELETE','API','291864eOaBJg','$attr','69740IYLzaF','_uiEnv','allEmbed','var(--okdb-info)','Standalone','value','has','stopped','replace','length','env','source_type','storeEnv','Stop\x20pipeline\x20\x22<b>','number','searchFilter','record','Workers','Embedding\x20Pipelines','groupStatusBucket','var(--okdb-app-fg-muted)','#fb7185','memberOwnerEnv','config','var(--okdb-indigo)','Start\x20failed','modal','embed','$router','var(--okdb-danger)','shared','open','file','Model','json','$dispatch','worker','map','sourceTypeFilter','pipelinetype','pipelineRecords','engineTypeFilter','engineId','accent','Search','default','progress','embedPipelines','family','No\x20members','$ok','pipeline','enginePipelineName','inactive','11565QIvIRP','object','mode','font-size:11px;padding:3px\x2010px;border-radius:999px;border:1px\x20solid\x20','get','activeEngines','some','<engine-modal\x20:modal=\x22modal\x22\x20:engine=\x22engine\x22\x20:env=\x22envName\x22\x20/>','engineStatusMeta','slice','stores','selectedEnv','embedder','var(--okdb-success)','extractors','resolve','73188BzGkEO','error','1025958rvprEk','/env/','state'];_0x4784=function(){return _0x593167;};return _0x4784();}import _0x1c1c65 from'../../engines/parts/engine-resource-card.ok.js';import{compactEngineConfigMetrics as _0x8007c9,compactEngineRowMetrics as _0x2d194a,compactEngineStatusMeta as _0x55de14}from'../../engines/engine-ui-utils.js';export default{'tag':_0x4f888c(0xf4),'dependencies':[_0x573eee,_0x1c1c65],'attr':{'embedEngines':{},'embedPipelines':{},'fileEngines':{},'embedded':{},'filterpipeline':{},'mode':{},'pipelinetype':{},'enginetype':{},'status':{},'search':{},'sourcetype':{},'selectedpipeline':{}},'context':_0x50fdf3=>({get 'allEmbed'(){const _0xc31228=_0x4f888c;return _0x50fdf3['$attr'][_0xc31228(0x155)]??[];},get 'pipelineRecords'(){const _0x2fe304=_0x4f888c;return _0x50fdf3[_0x2fe304(0xf9)]['embedPipelines']??[];},get 'fileData'(){const _0x3d3d4f=_0x4f888c;return _0x50fdf3[_0x3d3d4f(0xf9)][_0x3d3d4f(0x18a)]??{};},get 'allFile'(){const _0x464ea7=_0x4f888c,_0x5518ea=this[_0x464ea7(0xda)];return[..._0x5518ea[_0x464ea7(0x13e)]??[],..._0x5518ea[_0x464ea7(0xb4)]??[],..._0x5518ea[_0x464ea7(0xec)]??[]];},get 'isEmbedded'(){const _0x22d63e=_0x4f888c;return!0x0===_0x50fdf3[_0x22d63e(0xf9)][_0x22d63e(0x15b)]||'true'===_0x50fdf3[_0x22d63e(0xf9)][_0x22d63e(0x15b)];},get 'filterToSelectedPipeline'(){const _0x38a4a7=_0x4f888c;return!0x0===_0x50fdf3['$attr']['filterpipeline']||_0x38a4a7(0x199)===_0x50fdf3[_0x38a4a7(0xf9)]['filterpipeline'];},get 'modeFilter'(){const _0x1b7eb7=_0x4f888c;return'engines'===_0x50fdf3[_0x1b7eb7(0xf9)][_0x1b7eb7(0x132)]?_0x1b7eb7(0xd6):_0x1b7eb7(0x150);},get 'pipelineTypeFilter'(){const _0xf37f1a=_0x4f888c;return[_0xf37f1a(0x18c),_0xf37f1a(0xc5),_0xf37f1a(0x11a)][_0xf37f1a(0xf2)](_0x50fdf3[_0xf37f1a(0xf9)][_0xf37f1a(0x121)])?_0x50fdf3['$attr'][_0xf37f1a(0x121)]:_0xf37f1a(0x18c);},get 'engineTypeFilter'(){const _0x18ed1e=_0x4f888c;return String(_0x50fdf3[_0x18ed1e(0xf9)]['enginetype']??'')[_0x18ed1e(0x173)]();},get 'statusFilter'(){const _0x3be0d3=_0x4f888c;return _0x50fdf3[_0x3be0d3(0xf9)]['status']??'all';},get 'searchFilter'(){const _0x49a124=_0x4f888c;return String(_0x50fdf3[_0x49a124(0xf9)][_0x49a124(0xc7)]??'')[_0x49a124(0x173)]()[_0x49a124(0xdd)]();},get 'sourceTypeFilter'(){const _0x3c3cdd=_0x4f888c;return String(_0x50fdf3['$attr']['sourcetype']??'')[_0x3c3cdd(0x173)]();},get 'selectedPipelineName'(){const _0x485325=_0x4f888c;return String(_0x50fdf3[_0x485325(0xf9)][_0x485325(0x160)]??'')[_0x485325(0x173)]();},'pipelineActionBusy':{},get 'embedOnly'(){const _0x44bbd5=_0x4f888c;return(_0x50fdf3[_0x44bbd5(0xf9)]['embedEngines']??[])[_0x44bbd5(0xb7)](_0x433249=>_0x44bbd5(0x181)!==_0x433249['type']&&'queue-worker'!==_0x433249[_0x44bbd5(0x153)]);},get 'allEngines'(){const _0x1fb041=_0x4f888c;return[...this[_0x1fb041(0xfc)],...this[_0x1fb041(0x149)]];},'engineId':_0x5d204d=>_0x5d204d?_0x5d204d['key']??(_0x5d204d[_0x4f888c(0x153)]&&_0x5d204d[_0x4f888c(0x194)]?_0x5d204d[_0x4f888c(0x153)]+'@'+_0x5d204d[_0x4f888c(0x194)]:_0x5d204d[_0x4f888c(0x194)]??null):null,'engineSourceTypes'(_0xe5328){const _0x22b999=_0x4f888c,_0x43dede=[_0xe5328?.[_0x22b999(0x111)]?.[_0x22b999(0x105)],_0xe5328?.[_0x22b999(0xb5)]?.[_0x22b999(0x105)],_0xe5328?.[_0x22b999(0x111)]?.[_0x22b999(0x147)],_0xe5328?.['runtime']?.[_0x22b999(0x147)]][_0x22b999(0xb7)](Boolean);return[...new Set(_0x43dede)];},'touchesSourceType'(_0x3d08bd){const _0x46694c=_0x4f888c;return!this[_0x46694c(0x120)]||this['engineSourceTypes'](_0x3d08bd)['includes'](this['sourceTypeFilter']);},'engineStatusBucket'(_0x545823){const _0x4a717b=_0x4f888c,_0x493531=_0x545823?.['stats']?.[_0x4a717b(0x144)]??_0x545823?.['status']??null;return _0x545823?.['isRunning']||'online'===_0x493531?_0x4a717b(0x159):[_0x4a717b(0x141),_0x4a717b(0x12f),_0x4a717b(0x186),_0x4a717b(0x165),_0x4a717b(0x18e)]['includes'](_0x493531)?_0x4a717b(0xef):_0x4a717b(0x101);},'groupStatusBucket'(_0x532f6a){const _0x13ef12=_0x4f888c,_0x1e70c4=_0x532f6a[_0x13ef12(0x11f)](_0x1276d5=>this[_0x13ef12(0x161)](_0x1276d5));return 0x0===_0x1e70c4[_0x13ef12(0x103)]?_0x13ef12(0x101):_0x1e70c4[_0x13ef12(0xd4)](_0x798454=>_0x13ef12(0x159)===_0x798454)?'running':_0x1e70c4['some'](_0x4c7759=>_0x13ef12(0xef)===_0x4c7759)||_0x1e70c4[_0x13ef12(0x136)](_0x5df58c=>_0x13ef12(0x159)===_0x5df58c)?_0x13ef12(0xef):_0x13ef12(0x101);},'matchesSearch'(_0x1c1ecd=[]){const _0x20699f=_0x4f888c;return!this[_0x20699f(0x109)]||_0x1c1ecd[_0x20699f(0xb7)](Boolean)[_0x20699f(0xd2)]('\x20')[_0x20699f(0xdd)]()[_0x20699f(0xf2)](this[_0x20699f(0x109)]);},'pipelineTypeMatches'(_0x38b50d){const _0x43c1de=_0x4f888c;return _0x43c1de(0x18c)===this[_0x43c1de(0x182)]||this[_0x43c1de(0x182)]===_0x38b50d;},get 'embedPipelines'(){const _0x2af70e=_0x4f888c;if(this['pipelineRecords'][_0x2af70e(0x103)]>0x0)return this[_0x2af70e(0x122)]['map'](_0x215300=>{const _0x304d27=_0x2af70e,_0x3c9dd9=Array[_0x304d27(0xd0)](_0x215300[_0x304d27(0xd6)])?_0x215300[_0x304d27(0xd6)][_0x304d27(0xb7)](Boolean):[],_0x38538f=_0x3c9dd9[_0x304d27(0x174)](_0x3d8d34=>this[_0x304d27(0xea)](_0x3d8d34))??null,_0xb88966=_0x3c9dd9[_0x304d27(0x174)](_0x7d08dc=>_0x304d27(0x13c)===_0x7d08dc['role']||_0x304d27(0x13c)===_0x7d08dc['type'])??null,_0xe161a2=_0x3c9dd9[_0x304d27(0x174)](_0x54003b=>_0x304d27(0xe6)===_0x54003b[_0x304d27(0x154)]||'indexer'===_0x54003b[_0x304d27(0x153)])??null,_0x3983e9=_0x3c9dd9[_0x304d27(0x174)](_0x443bf6=>'search'===_0x443bf6[_0x304d27(0x154)]||_0x304d27(0xd8)===_0x443bf6[_0x304d27(0x153)])??null,_0x2c416a=_0x3c9dd9[_0x304d27(0x174)](_0x38e0f6=>_0x304d27(0x11e)===_0x38e0f6[_0x304d27(0x154)]||_0x304d27(0xbd)===_0x38e0f6[_0x304d27(0x153)])??null;return{'name':_0x215300[_0x304d27(0x14c)]?.[_0x304d27(0xca)]??_0x215300[_0x304d27(0x14c)]?.['pipeline']??_0x215300['name'],'key':_0x215300['name'],'env':_0x215300[_0x304d27(0x104)]??this[_0x304d27(0xea)](_0x38538f)??_0xe161a2?.[_0x304d27(0x111)]?.[_0x304d27(0x17c)]??_0x3983e9?.[_0x304d27(0x111)]?.[_0x304d27(0x17c)]??null,'type':_0x304d27(0x197)===_0x215300[_0x304d27(0x14c)]?.[_0x304d27(0x12a)]?'embed':_0x304d27(0x104),'record':_0x215300,'members':_0x3c9dd9,'embedder':_0xb88966,'indexer':_0xe161a2,'search':_0x3983e9,'worker':_0x2c416a};})[_0x2af70e(0xb7)](_0x4d6c61=>_0x4d6c61[_0x2af70e(0x16c)][_0x2af70e(0x103)]>0x0)[_0x2af70e(0x158)]((_0x5e920d,_0x2f230d)=>_0x5e920d[_0x2af70e(0x194)][_0x2af70e(0xe9)](_0x2f230d['name']));const _0x214d9e=new Map();for(const _0xa136af of this[_0x2af70e(0x162)]){const _0x681c9b=_0xa136af[_0x2af70e(0x14c)]?.['pipeline']??_0xa136af['name'][_0x2af70e(0x102)](/-worker$/,'');_0x214d9e[_0x2af70e(0x100)](_0x681c9b)||_0x214d9e['set'](_0x681c9b,{'name':_0x681c9b,'type':_0x2af70e(0x115),'embedder':null,'indexer':null,'search':null,'worker':null});const _0x3c0919=_0x214d9e['get'](_0x681c9b);_0x2af70e(0x13c)===_0xa136af[_0x2af70e(0x153)]?_0x3c0919[_0x2af70e(0x13c)]=_0xa136af:_0x2af70e(0xe6)===_0xa136af[_0x2af70e(0x153)]?_0x3c0919[_0x2af70e(0xe6)]=_0xa136af:'vector-search'===_0xa136af['type']?_0x3c0919[_0x2af70e(0xc7)]=_0xa136af:_0x2af70e(0xbd)===_0xa136af[_0x2af70e(0x153)]&&(_0x3c0919[_0x2af70e(0x11e)]=_0xa136af);}return[..._0x214d9e['values']()][_0x2af70e(0xb7)](_0x1ef0c6=>[_0x1ef0c6['embedder'],_0x1ef0c6[_0x2af70e(0xe6)],_0x1ef0c6[_0x2af70e(0xc7)],_0x1ef0c6[_0x2af70e(0x11e)]][_0x2af70e(0xb7)](Boolean)['length']>0x1)[_0x2af70e(0x158)]((_0x383e96,_0x4aec98)=>_0x383e96['name'][_0x2af70e(0xe9)](_0x4aec98['name']));},get 'filePipelines'(){const _0x5666e0=_0x4f888c;return(this['fileData'][_0x5666e0(0xb4)]??[])[_0x5666e0(0x11f)](_0x7102b5=>{const _0x52bccf=_0x5666e0,_0x5b06b9=(this[_0x52bccf(0xda)][_0x52bccf(0x13e)]??[])[_0x52bccf(0xb7)](_0x2cb5a3=>_0x7102b5[_0x52bccf(0x111)]?.['pipeline']?.[_0x52bccf(0xf2)](_0x2cb5a3['name'])),_0x2a1803=(this[_0x52bccf(0xda)][_0x52bccf(0xec)]??[])[_0x52bccf(0xb7)](_0x406bc5=>_0x406bc5[_0x52bccf(0x111)]?.[_0x52bccf(0x18d)]===_0x7102b5[_0x52bccf(0x194)]);return{'name':_0x7102b5['collection']??_0x7102b5[_0x52bccf(0x194)],'type':_0x52bccf(0x11a),'collection':_0x7102b5,'extractors':_0x5b06b9,'workers':_0x2a1803};})[_0x5666e0(0x158)]((_0x3e796f,_0x1afd36)=>_0x3e796f[_0x5666e0(0x194)]['localeCompare'](_0x1afd36[_0x5666e0(0x194)]));},get 'allUniqueEngines'(){const _0x5e25dd=_0x4f888c,_0x2622d9=new Set();return this[_0x5e25dd(0x195)][_0x5e25dd(0xb7)](_0x3f181d=>{const _0x112feb=_0x5e25dd,_0x4d1a68=this['engineId'](_0x3f181d);return!(!_0x4d1a68||_0x2622d9['has'](_0x4d1a68)||(_0x2622d9[_0x112feb(0xb6)](_0x4d1a68),0x0));});},get 'visibleEngines'(){const _0xfa3745=_0x4f888c;return this[_0xfa3745(0x192)][_0xfa3745(0xb7)](_0x1af844=>this[_0xfa3745(0x170)](_0x1af844))[_0xfa3745(0xb7)](_0x26e526=>!this[_0xfa3745(0x123)]||_0x26e526[_0xfa3745(0x153)]===this[_0xfa3745(0x123)])[_0xfa3745(0xb7)](_0x869821=>_0xfa3745(0x18c)===this[_0xfa3745(0x152)]||this['engineStatusBucket'](_0x869821)===this[_0xfa3745(0x152)])['filter'](_0x37446c=>this['touchesSourceType'](_0x37446c))[_0xfa3745(0xb7)](_0x4a5daf=>this[_0xfa3745(0x16d)]([_0x4a5daf?.['name'],_0x4a5daf?.[_0xfa3745(0x153)],_0x4a5daf?.[_0xfa3745(0x14c)]?.[_0xfa3745(0x12d)],_0x4a5daf?.[_0xfa3745(0x104)],_0x4a5daf?.[_0xfa3745(0xfb)],...this[_0xfa3745(0x193)](_0x4a5daf),...this[_0xfa3745(0xb9)](_0x4a5daf),_0x4a5daf?.[_0xfa3745(0x111)]?.['job_type'],_0x4a5daf?.[_0xfa3745(0x111)]?.['handler']?.[_0xfa3745(0x194)]]))[_0xfa3745(0x158)]((_0x2e771e,_0x3401cb)=>String(_0x2e771e[_0xfa3745(0x153)]||'')['localeCompare'](String(_0x3401cb[_0xfa3745(0x153)]||''))||String(_0x2e771e[_0xfa3745(0x194)]||'')['localeCompare'](String(_0x3401cb[_0xfa3745(0x194)]||'')));},get 'visibleEngineGroups'(){const _0x28bea4=_0x4f888c,_0x3facbd=new Map(),_0x26d60a={'key':'__standalone__','label':_0x28bea4(0xfe),'pipeline':null,'engines':[]};for(const _0x10cebb of this[_0x28bea4(0x157)]){const _0x34c2e2=this['enginePipelineName'](_0x10cebb);_0x34c2e2?(_0x3facbd[_0x28bea4(0x100)](_0x34c2e2)||_0x3facbd['set'](_0x34c2e2,{'key':_0x34c2e2,'label':String(_0x34c2e2)[_0x28bea4(0x18b)](':')['pop'](),'pipeline':_0x34c2e2,'engines':[]}),_0x3facbd['get'](_0x34c2e2)[_0x28bea4(0xd6)][_0x28bea4(0xdc)](_0x10cebb)):_0x26d60a[_0x28bea4(0xd6)][_0x28bea4(0xdc)](_0x10cebb);}const _0x1d53f9=[..._0x3facbd['values']()][_0x28bea4(0x158)]((_0x16cd47,_0x4fc310)=>_0x16cd47[_0x28bea4(0xca)][_0x28bea4(0xe9)](_0x4fc310[_0x28bea4(0xca)]));return _0x26d60a[_0x28bea4(0xd6)][_0x28bea4(0x103)]&&_0x1d53f9[_0x28bea4(0xdc)](_0x26d60a),_0x1d53f9;},'matchesGroup'(_0x166425,_0x22beff,_0xdb6de3,_0x2bc734=[]){const _0x373720=_0x4f888c;return('all'===this[_0x373720(0x152)]||this[_0x373720(0x10d)](_0xdb6de3)===this['statusFilter'])&&!(this[_0x373720(0x120)]&&!_0xdb6de3[_0x373720(0x136)](_0xed398=>this[_0x373720(0xd5)](_0xed398)))&&this[_0x373720(0x16d)]([_0x166425?.[_0x373720(0x194)],_0x166425?.[_0x373720(0x153)],_0x166425?.[_0x373720(0x104)],..._0x2bc734,..._0xdb6de3[_0x373720(0x169)](_0xc5a874=>[_0xc5a874?.[_0x373720(0x194)],_0xc5a874?.['type'],...this[_0x373720(0xb9)](_0xc5a874),_0xc5a874?.['config']?.[_0x373720(0x177)],_0xc5a874?.[_0x373720(0x111)]?.['handler']?.[_0x373720(0x194)]])]);},get 'filteredEmbedPipelines'(){const _0x4a0dc9=_0x4f888c;return _0x4a0dc9(0x150)!==this[_0x4a0dc9(0x163)]?[]:this[_0x4a0dc9(0x196)](_0x4a0dc9(0xc5))?this[_0x4a0dc9(0x129)][_0x4a0dc9(0xb7)](_0x4f494f=>(!this[_0x4a0dc9(0x14f)]||!this[_0x4a0dc9(0x198)]||this[_0x4a0dc9(0xce)](_0x4f494f)===this[_0x4a0dc9(0x198)])&&this['matchesGroup'](_0x4f494f,_0x4a0dc9(0xc5),this[_0x4a0dc9(0x178)](_0x4f494f),[_0x4f494f?.['record']?.[_0x4a0dc9(0x14c)]?.['family']])):[];},get 'filteredFilePipelines'(){const _0x466ff6=_0x4f888c;return'pipelines'!==this['modeFilter']?[]:this[_0x466ff6(0x196)](_0x466ff6(0x11a))?this[_0x466ff6(0x16b)]['filter'](_0x16988f=>this['matchesGroup'](_0x16988f,'file',this[_0x466ff6(0x14a)](_0x16988f),[_0x16988f?.[_0x466ff6(0xc4)]?.['collection']])):[];},get 'filteredPipelineCount'(){const _0x4f2582=_0x4f888c;return this['filteredEmbedPipelines'][_0x4f2582(0x103)]+this['filteredFilePipelines'][_0x4f2582(0x103)];},get 'filteredVisibleEngines'(){const _0x9a34a4=_0x4f888c;if(_0x9a34a4(0x150)!==this[_0x9a34a4(0x163)])return[];const _0x23a7dc=new Set(),_0x5f48fd=[];for(const _0x4d0197 of this[_0x9a34a4(0xc2)])for(const _0x220784 of this['embedPipelineEngines'](_0x4d0197)){const _0x40b57c=this[_0x9a34a4(0x124)](_0x220784);_0x40b57c&&!_0x23a7dc[_0x9a34a4(0x100)](_0x40b57c)&&(_0x23a7dc[_0x9a34a4(0xb6)](_0x40b57c),_0x5f48fd[_0x9a34a4(0xdc)](_0x220784));}for(const _0x104586 of this[_0x9a34a4(0xeb)])for(const _0x3575ee of this['filePipelineEngines'](_0x104586)){const _0xd7ac8f=this[_0x9a34a4(0x124)](_0x3575ee);_0xd7ac8f&&!_0x23a7dc[_0x9a34a4(0x100)](_0xd7ac8f)&&(_0x23a7dc[_0x9a34a4(0xb6)](_0xd7ac8f),_0x5f48fd[_0x9a34a4(0xdc)](_0x3575ee));}return _0x5f48fd;},get 'totalPipelineCount'(){const _0x22184f=_0x4f888c;return this[_0x22184f(0x129)][_0x22184f(0x103)]+this[_0x22184f(0x16b)][_0x22184f(0x103)];},get 'totalEngineCount'(){const _0x2ea792=_0x4f888c;return this[_0x2ea792(0x192)][_0x2ea792(0x103)];},get 'visibleItemCount'(){const _0xd453e9=_0x4f888c;return'pipelines'===this[_0xd453e9(0x163)]?this['filteredPipelineCount']:this[_0xd453e9(0x157)][_0xd453e9(0x103)];},get 'totalItemCount'(){const _0x4b3d3a=_0x4f888c;return _0x4b3d3a(0x150)===this[_0x4b3d3a(0x163)]?this['totalPipelineCount']:this['totalEngineCount'];},get 'activeEngines'(){const _0x1d3b4b=_0x4f888c;return _0x1d3b4b(0x150)===this['modeFilter']?this[_0x1d3b4b(0xe0)]:this[_0x1d3b4b(0x157)];},get 'hasAnyEngines'(){const _0xafe8b9=_0x4f888c;return this['allEngines'][_0xafe8b9(0x103)]>0x0;},get 'runningCount'(){const _0x2e8fe6=_0x4f888c;return this[_0x2e8fe6(0x135)]['filter'](_0x501d4b=>_0x2e8fe6(0x159)===this[_0x2e8fe6(0x161)](_0x501d4b))[_0x2e8fe6(0x103)];},get 'errorCount'(){const _0x572a1a=_0x4f888c;return this[_0x572a1a(0x135)][_0x572a1a(0xb7)](_0x414f17=>_0x572a1a(0xef)===this[_0x572a1a(0x161)](_0x414f17))[_0x572a1a(0x103)];},get 'headerTitle'(){const _0x4db3a0=_0x4f888c;return _0x4db3a0(0x150)===this[_0x4db3a0(0x163)]?_0x4db3a0(0x16f):_0x4db3a0(0x15a);},get 'noResultsLabel'(){const _0x5bf41d=_0x4f888c;return _0x5bf41d(0x150)===this[_0x5bf41d(0x163)]?'No\x20pipelines\x20match\x20the\x20current\x20filters':'No\x20engines\x20match\x20the\x20current\x20filters';},get 'noResultsHint'(){const _0x1d316a=_0x4f888c;return this[_0x1d316a(0x151)]?_0x1d316a(0x150)===this['modeFilter']?'Try\x20changing\x20the\x20selected\x20pipeline,\x20status,\x20or\x20search\x20filters\x20above.':_0x1d316a(0xee):_0x1d316a(0x150)===this['modeFilter']?_0x1d316a(0x17d):_0x1d316a(0xed);},'typeLabel':{'embedder':'Embedder','indexer':_0x4f888c(0xf5),'search':_0x4f888c(0x126),'worker':'Worker','vector-search':_0x4f888c(0x126),'embed-worker':_0x4f888c(0xe2),'materializer':_0x4f888c(0x190),'file-extractor':_0x4f888c(0x146),'file-collection':_0x4f888c(0xc3),'file-extractor-worker':'Worker','processor':_0x4f888c(0xdf),'queue-worker':'Queue\x20Worker'},'typeColor':{'embedder':_0x4f888c(0xfd),'indexer':'var(--okdb-purple)','vector-search':_0x4f888c(0xdb),'embed-worker':_0x4f888c(0xde),'materializer':_0x4f888c(0x10f),'file-extractor':_0x4f888c(0x13d),'file-collection':'var(--okdb-sky)','file-extractor-worker':_0x4f888c(0xde),'processor':'var(--okdb-orange)','queue-worker':_0x4f888c(0x112)},'healthDot':_0x1dd24f=>_0x1dd24f&&0x0!==_0x1dd24f['length']?_0x1dd24f['every'](_0x187d06=>_0x187d06[_0x4f888c(0x16e)])?_0x4f888c(0x13d):_0x1dd24f[_0x4f888c(0x136)](_0x2bc2b1=>_0x4f888c(0x141)===_0x2bc2b1['status'])?_0x4f888c(0x117):_0x4f888c(0xde):_0x4f888c(0x10e),'statusDot'(_0x486f89){const _0x48e81b=_0x4f888c;return _0x486f89?this[_0x48e81b(0x138)](_0x486f89)?.['color']??_0x48e81b(0x10e):_0x48e81b(0x10e);},'typeName'(_0x2de0c7){const _0x3a5f2b=_0x4f888c;return this['typeLabel'][_0x2de0c7]||_0x2de0c7||_0x3a5f2b(0xe3);},'shortEngineName'(_0x49f195){const _0x3b9c8a=_0x4f888c,_0x4eab73=String(_0x49f195?.[_0x3b9c8a(0x194)]??_0x49f195?.[_0x3b9c8a(0x19b)]??''),_0x2fa79f=_0x49f195?.[_0x3b9c8a(0x111)]?.['source_env']??_0x49f195?.[_0x3b9c8a(0x104)]??_0x49f195?.[_0x3b9c8a(0x106)]??'';return _0x2fa79f&&_0x4eab73[_0x3b9c8a(0xc9)](_0x2fa79f+':')?_0x4eab73[_0x3b9c8a(0x139)](_0x2fa79f['length']+0x1):_0x4eab73;},'showStatusText'(_0x498e2d){const _0x57b4df=_0x4f888c,_0x22af72=this[_0x57b4df(0x138)](_0x498e2d)?.[_0x57b4df(0xca)];return!!_0x22af72&&![_0x57b4df(0x159),_0x57b4df(0xe4)][_0x57b4df(0xf2)](_0x22af72);},'engineEnv':_0x18d77b=>_0x18d77b?_0x18d77b['config']?.[_0x4f888c(0x17c)]??_0x18d77b['env']??_0x18d77b[_0x4f888c(0xfb)]??_0x18d77b[_0x4f888c(0x106)]??(_0x4f888c(0x13c)===_0x18d77b[_0x4f888c(0x153)]?_0x4f888c(0x15d):null):null,'enginePipelineName':_0x2ebe62=>_0x2ebe62?.['meta']?.[_0x4f888c(0x12d)]??_0x2ebe62?.['config']?.[_0x4f888c(0x12d)]??_0x2ebe62?.[_0x4f888c(0x111)]?.[_0x4f888c(0x18d)]??null,'engineInSelectedPipeline'(_0x35ed36){const _0x49d152=_0x4f888c;if(!this['filterToSelectedPipeline']||!this[_0x49d152(0x198)])return!0x0;if(this[_0x49d152(0x12e)](_0x35ed36)===this['selectedPipelineName'])return!0x0;const _0x217435=this[_0x49d152(0x122)][_0x49d152(0x174)](_0x459632=>this[_0x49d152(0xce)](_0x459632)===this[_0x49d152(0x198)]||_0x459632?.[_0x49d152(0x194)]===this[_0x49d152(0x198)])??null;return!(!Array[_0x49d152(0xd0)](_0x217435?.[_0x49d152(0xd6)])||0x0===_0x217435[_0x49d152(0xd6)][_0x49d152(0x103)])&&_0x217435[_0x49d152(0xd6)][_0x49d152(0x136)](_0x34b9a6=>_0x34b9a6?.[_0x49d152(0x153)]===_0x35ed36?.[_0x49d152(0x153)]&&_0x34b9a6?.[_0x49d152(0x194)]===_0x35ed36?.[_0x49d152(0x194)]);},'embedPipelineEngines':_0x42f8fa=>Array[_0x4f888c(0xd0)](_0x42f8fa?.[_0x4f888c(0x10a)]?.[_0x4f888c(0xd6)])&&_0x42f8fa[_0x4f888c(0x10a)][_0x4f888c(0xd6)][_0x4f888c(0x103)]>0x0?_0x42f8fa[_0x4f888c(0x10a)][_0x4f888c(0xd6)]:[_0x42f8fa['embedder'],_0x42f8fa['indexer'],_0x42f8fa[_0x4f888c(0x11e)],_0x42f8fa['search']][_0x4f888c(0xb7)](Boolean),'pipelineRunningCount'(_0x57963c){const _0x3873d9=_0x4f888c;return this[_0x3873d9(0x178)](_0x57963c)[_0x3873d9(0xb7)](_0x3b795e=>_0x3b795e?.['isRunning'])[_0x3873d9(0x103)];},'pipelineMemberCount'(_0x444886){const _0x4fddc4=_0x4f888c;return this[_0x4fddc4(0x178)](_0x444886)[_0x4fddc4(0x103)];},get 'groupedPipelineHeading'(){const _0x2289bf=_0x4f888c;return this[_0x2289bf(0x122)][_0x2289bf(0x103)]>0x0?_0x2289bf(0x15f):_0x2289bf(0x10c);},'filePipelineEngines':_0x609c8b=>[_0x609c8b['collection'],..._0x609c8b[_0x4f888c(0x13e)],..._0x609c8b[_0x4f888c(0xec)]],'pipelineIdentity':_0x1227a5=>_0x1227a5?.[_0x4f888c(0x10a)]?.[_0x4f888c(0x194)]??_0x1227a5?.[_0x4f888c(0x19b)]??_0x1227a5?.[_0x4f888c(0x194)]??null,'isSelectedPipeline'(_0x1d9df6){const _0x5bb0b3=_0x4f888c,_0x1c10de=this[_0x5bb0b3(0xce)](_0x1d9df6);return!!_0x1c10de&&_0x1c10de===this['selectedPipelineName'];},'togglePipeline'(_0x1ff25f){const _0x16b9c3=_0x4f888c,_0x4df0ef=this[_0x16b9c3(0xce)](_0x1ff25f);_0x50fdf3[_0x16b9c3(0x11d)](_0x16b9c3(0x17e),{'name':this[_0x16b9c3(0xf1)](_0x1ff25f)?'':_0x4df0ef??''});},'pipelineBusy'(_0x333f2c){const _0x2cc19b=_0x4f888c,_0x544721=this[_0x2cc19b(0xce)](_0x333f2c);return!(!_0x544721||!this[_0x2cc19b(0x16a)][_0x544721]);},async 'withPipelineBusy'(_0x21a459,_0xc4e294){const _0x2f0fa9=_0x4f888c,_0x1d23e4=this[_0x2f0fa9(0xce)](_0x21a459);if(_0x1d23e4&&!this[_0x2f0fa9(0x16a)][_0x1d23e4]){this[_0x2f0fa9(0x16a)]={...this['pipelineActionBusy'],[_0x1d23e4]:!0x0};try{await _0xc4e294();}finally{this[_0x2f0fa9(0x16a)]={...this['pipelineActionBusy'],[_0x1d23e4]:!0x1};}}},'selectedPipelineMembers'(_0x2c156b){const _0x44cd95=_0x4f888c;return Array[_0x44cd95(0xd0)](_0x2c156b?.[_0x44cd95(0x10a)]?.['engines'])&&_0x2c156b[_0x44cd95(0x10a)][_0x44cd95(0xd6)][_0x44cd95(0x103)]?_0x2c156b[_0x44cd95(0x10a)][_0x44cd95(0xd6)]:this[_0x44cd95(0x178)](_0x2c156b);},'relatedType':_0x5e5509=>_0x5e5509?.[_0x4f888c(0x111)]?.[_0x4f888c(0x105)]??_0x5e5509?.[_0x4f888c(0xb5)]?.[_0x4f888c(0x105)]??_0x5e5509?.['stats']?.[_0x4f888c(0x105)]??_0x5e5509?.['stats']?.[_0x4f888c(0xe6)]?.['source_type']??null,'relatedEnv':(_0x253057,_0x52d97e=null)=>_0x253057?.[_0x4f888c(0x111)]?.[_0x4f888c(0x17c)]??_0x253057?.[_0x4f888c(0xb5)]?.['source_env']??_0x52d97e??null,'memberOwnerEnv'(_0x602b3a,_0x3c9ac0=null){const _0x2a6d76=_0x4f888c;return _0x602b3a?.['storeEnv']??_0x602b3a?.[_0x2a6d76(0x104)]??this[_0x2a6d76(0xc6)](_0x602b3a,_0x3c9ac0)??_0x3c9ac0??null;},'pipelineConfigMetrics'(_0x4655c2){const _0x1b82f6=_0x4f888c,_0x2e4cd3=this['embedPipelineEngines'](_0x4655c2),_0x14afc8=['Source','Field',_0x1b82f6(0x168),_0x1b82f6(0x164),_0x1b82f6(0x180),_0x1b82f6(0x188),_0x1b82f6(0x11b),_0x1b82f6(0x175),_0x1b82f6(0xbf)],_0x3cef83=new Set(),_0x417aff=[];for(const _0x4bd47f of _0x14afc8){for(const _0x1b3fa4 of _0x2e4cd3[_0x1b82f6(0x169)](_0x40477f=>_0x8007c9(_0x40477f))){const _0x5c172a=_0x1b3fa4[_0x1b82f6(0xca)]+':'+_0x1b3fa4[_0x1b82f6(0xff)];if(_0x1b3fa4['label']===_0x4bd47f&&!_0x3cef83[_0x1b82f6(0x100)](_0x5c172a)){_0x3cef83['add'](_0x5c172a),_0x417aff[_0x1b82f6(0xdc)](_0x1b3fa4);break;}}if(_0x417aff['length']>=0x8)break;}return _0x417aff;},'pipelineHeaderMetrics'(_0x30f744){const _0x377685=_0x4f888c,_0x48b651=new Map(this[_0x377685(0x176)](_0x30f744)['map'](_0x28344b=>[_0x28344b[_0x377685(0xca)],_0x28344b['value']])),_0x112b4c=_0x48b651[_0x377685(0x134)]('Source'),_0x505840=_0x48b651[_0x377685(0x134)]('Field'),_0x6be3a1=[],_0x3b9f38=(_0x49f9a0,_0x5c6d82)=>{const _0x308987=_0x377685;null!=_0x5c6d82&&''!==_0x5c6d82&&_0x6be3a1[_0x308987(0xdc)]({'label':_0x49f9a0,'value':String(_0x5c6d82)});};return _0x3b9f38(_0x377685(0x148),_0x112b4c?_0x505840&&'whole\x20record'!==_0x505840?_0x112b4c+'.'+_0x505840:_0x112b4c:null),_0x3b9f38(_0x377685(0x14e),_0x48b651[_0x377685(0x134)](_0x377685(0x168))),_0x3b9f38('Algorithm',_0x48b651[_0x377685(0x134)]('Algorithm')),_0x3b9f38('Model',_0x48b651[_0x377685(0x134)](_0x377685(0x11b))),_0x3b9f38(_0x377685(0x10b),_0x48b651['get'](_0x377685(0xbf))),_0x3b9f38('Environment',_0x30f744?.[_0x377685(0x104)]??_0x30f744?.['record']?.['env']),_0x6be3a1;},'pipelineProgressMetric'(_0x2037fe){const _0x2ee1e9=_0x4f888c,_0x280080=this[_0x2ee1e9(0x178)](_0x2037fe)[_0x2ee1e9(0x174)](_0x22ceea=>_0x2ee1e9(0xe6)===_0x22ceea?.[_0x2ee1e9(0x153)]||_0x2ee1e9(0xe6)===_0x22ceea?.[_0x2ee1e9(0x154)])??null,_0x55f964=_0x2d194a(_0x280080)['find'](_0x3264e3=>_0x2ee1e9(0xcb)===_0x3264e3?.[_0x2ee1e9(0xca)])??null;if(_0x55f964)return _0x55f964;const _0x3b6066=_0x280080?.[_0x2ee1e9(0x128)]??_0x280080?.[_0x2ee1e9(0xb5)]?.['progress']??null;if(null==_0x3b6066)return null;if(_0x2ee1e9(0xd3)==typeof _0x3b6066||_0x2ee1e9(0x108)==typeof _0x3b6066)return{'label':'Progress','value':String(_0x3b6066),'tone':'accent'};if(_0x2ee1e9(0x131)==typeof _0x3b6066&&_0x2ee1e9(0xd3)==typeof _0x3b6066['phase'])return{'label':_0x2ee1e9(0xcb),'value':_0x3b6066['phase'],'tone':_0x2ee1e9(0x125)};try{return{'label':_0x2ee1e9(0xcb),'value':JSON['stringify'](_0x3b6066),'tone':_0x2ee1e9(0x125)};}catch{return{'label':_0x2ee1e9(0xcb),'value':_0x2ee1e9(0x128),'tone':'accent'};}},async 'pipelineRequest'(_0x25129f,_0x157a8f,_0x44bd16){const _0x3cc6f6=_0x4f888c,_0x5cf40e=_0x25129f?.[_0x3cc6f6(0x10a)]?.[_0x3cc6f6(0x194)]??_0x25129f?.['key']??null,_0x3af94f=_0x25129f?.[_0x3cc6f6(0x104)]??_0x25129f?.['record']?.[_0x3cc6f6(0x104)]??_0x50fdf3['$ok'][_0x3cc6f6(0x13a)][_0x3cc6f6(0xcd)][_0x3cc6f6(0x13b)]??_0x3cc6f6(0x127);_0x5cf40e&&await this[_0x3cc6f6(0xe7)](_0x25129f,async()=>{const _0x2e5388=_0x3cc6f6,_0x48f6c8=_0x2e5388(0xf6)===_0x157a8f?'':'/'+_0x44bd16,_0x881e4e=await fetch(__ENV__[_0x2e5388(0xf7)]+_0x2e5388(0x143)+encodeURIComponent(_0x3af94f)+_0x2e5388(0x166)+encodeURIComponent(_0x5cf40e)+_0x48f6c8,{'method':_0x157a8f}),_0x822b67=await _0x881e4e[_0x2e5388(0x11c)]()[_0x2e5388(0x187)](()=>({}));if(!_0x881e4e['ok'])throw new Error(_0x822b67?.['error']?.['message']||(_0x44bd16||_0x2e5388(0xd7))+_0x2e5388(0x19a));_0x50fdf3[_0x2e5388(0x12c)][_0x2e5388(0x118)]?.[_0x2e5388(0xf3)]?.[_0x2e5388(0x15e)]?.(_0x2e5388(0xf6)===_0x157a8f?_0x2e5388(0xcf)+_0x5cf40e+'\x22':(_0x2e5388(0xc8)===_0x44bd16?_0x2e5388(0x15c):_0x2e5388(0xe5))+'\x20pipeline\x20\x22'+_0x5cf40e+'\x22'),_0x2e5388(0xf6)===_0x157a8f&&_0x50fdf3['$dispatch'](_0x2e5388(0x17e),{'name':''}),_0x50fdf3[_0x2e5388(0x11d)]('refresh');});},async 'restartPipeline'(_0x1c7d85){const _0x27907d=_0x4f888c,_0x12015e=_0x1c7d85?.[_0x27907d(0x10a)]?.[_0x27907d(0x194)]??_0x1c7d85?.['key']??null;_0x12015e&&await _0x50fdf3[_0x27907d(0x12c)][_0x27907d(0x118)]?.['modal']?.[_0x27907d(0x179)]?.('Restart\x20pipeline\x20\x22<b>'+_0x12015e+'</b>\x22?')&&await this[_0x27907d(0xe7)](_0x1c7d85,async()=>{const _0x11efa9=_0x27907d,_0x28fc21=_0x1c7d85?.[_0x11efa9(0x104)]??_0x1c7d85?.['record']?.['env']??_0x50fdf3['$ok']['stores'][_0x11efa9(0xcd)][_0x11efa9(0x13b)]??_0x11efa9(0x127),_0x349967=__ENV__[_0x11efa9(0xf7)]+_0x11efa9(0x143)+encodeURIComponent(_0x28fc21)+_0x11efa9(0x166)+encodeURIComponent(_0x12015e),_0x3697b0=await fetch(_0x349967+'/stop',{'method':_0x11efa9(0xba)}),_0x144ebf=await _0x3697b0[_0x11efa9(0x11c)]()[_0x11efa9(0x187)](()=>({}));if(!_0x3697b0['ok'])throw new Error(_0x144ebf?.[_0x11efa9(0x141)]?.['message']||_0x11efa9(0xc1));const _0x4676f3=await fetch(_0x349967+_0x11efa9(0x189),{'method':_0x11efa9(0xba)}),_0x147e5e=await _0x4676f3['json']()[_0x11efa9(0x187)](()=>({}));if(!_0x4676f3['ok'])throw new Error(_0x147e5e?.[_0x11efa9(0x141)]?.['message']||_0x11efa9(0x113));_0x50fdf3['$ok'][_0x11efa9(0x118)]?.[_0x11efa9(0xf3)]?.[_0x11efa9(0x15e)]?.(_0x11efa9(0x17b)+_0x12015e+'\x22'),_0x50fdf3[_0x11efa9(0x11d)](_0x11efa9(0xcc));});},'pipelineSourceType'(_0x30f5c6){const _0x79b548=_0x4f888c,_0x47c7ba=this[_0x79b548(0x178)](_0x30f5c6);for(const _0x5b40f9 of _0x47c7ba){const _0x8701a9=_0x5b40f9?.[_0x79b548(0x111)]?.[_0x79b548(0x105)]??_0x5b40f9?.[_0x79b548(0xb5)]?.[_0x79b548(0x105)]??_0x5b40f9?.[_0x79b548(0x111)]?.['target_type']??null;if(_0x8701a9)return _0x8701a9;}return null;},async 'startPipeline'(_0x9b7188){const _0x597895=_0x4f888c;try{await this[_0x597895(0xd1)](_0x9b7188,_0x597895(0xba),_0x597895(0xc8));}catch(_0x492a2c){_0x50fdf3[_0x597895(0x12c)]['shared']?.[_0x597895(0xf3)]?.[_0x597895(0x141)]?.(_0x492a2c?.[_0x597895(0x145)]||_0x597895(0x113));}},async 'stopPipeline'(_0x5009c8){const _0x52d452=_0x4f888c,_0x4b3ff7=_0x5009c8?.['record']?.[_0x52d452(0x194)]??_0x5009c8?.[_0x52d452(0x19b)]??null;if(_0x4b3ff7&&await _0x50fdf3[_0x52d452(0x12c)]['shared']?.[_0x52d452(0x114)]?.[_0x52d452(0x179)]?.(_0x52d452(0x107)+_0x4b3ff7+'</b>\x22?'))try{await this[_0x52d452(0xd1)](_0x5009c8,_0x52d452(0xba),'stop');}catch(_0x127183){_0x50fdf3[_0x52d452(0x12c)][_0x52d452(0x118)]?.[_0x52d452(0xf3)]?.[_0x52d452(0x141)]?.(_0x127183?.[_0x52d452(0x145)]||'Stop\x20failed');}},async 'deletePipeline'(_0x653a17){const _0x1d3d66=_0x4f888c,_0x419079=_0x653a17?.[_0x1d3d66(0x10a)]?.[_0x1d3d66(0x194)]??_0x653a17?.[_0x1d3d66(0x19b)]??null;if(!_0x419079)return;const _0x45f073=this[_0x1d3d66(0xbc)](_0x653a17)[_0x1d3d66(0x11f)](_0x28061a=>'•\x20'+(_0x28061a?.['role']||_0x28061a?.['type'])+':\x20'+_0x28061a?.['type']+'@'+_0x28061a?.[_0x1d3d66(0x194)])[_0x1d3d66(0xd2)]('<br>');if(await _0x50fdf3[_0x1d3d66(0x12c)][_0x1d3d66(0x118)]?.[_0x1d3d66(0x114)]?.['confirm']?.(_0x1d3d66(0xd9)+_0x419079+_0x1d3d66(0xf0)+(_0x45f073||_0x1d3d66(0x12b))+_0x1d3d66(0x18f)))try{await this[_0x1d3d66(0xd1)](_0x653a17,_0x1d3d66(0xf6),null);}catch(_0x1fa714){_0x50fdf3[_0x1d3d66(0x12c)][_0x1d3d66(0x118)]?.[_0x1d3d66(0xf3)]?.[_0x1d3d66(0x141)]?.(_0x1fa714?.[_0x1d3d66(0x145)]||'Delete\x20failed');}},'pipelineActionStyle':(_0x1ad7ef=_0x4f888c(0xe8))=>_0x4f888c(0x133)+_0x1ad7ef+_0x4f888c(0x191)+_0x1ad7ef+';background:'+_0x1ad7ef+'12;cursor:pointer;line-height:1.4;white-space:nowrap;','typeName'(_0x46c746){const _0x74f895=_0x4f888c;return this[_0x74f895(0x156)][_0x46c746]||_0x46c746||_0x74f895(0xe3);},'pipelineCardStyle'(_0x292d04){const _0xfb13fa=_0x4f888c;return _0xfb13fa(0x17a)+(this[_0xfb13fa(0xf1)](_0x292d04)?_0xfb13fa(0x14d):_0xfb13fa(0x183))+_0xfb13fa(0x17f);},async 'openEngineModal'(_0x5b293b,_0x226688=null){const _0x5125c3=_0x4f888c;if(!_0x5b293b?.[_0x5125c3(0x194)])return;const _0x26b055=this[_0x5125c3(0x110)](_0x5b293b,_0x226688)??(_0x50fdf3['$ok']['stores'][_0x5125c3(0xcd)]['selectedEnv']||'default');await _0x50fdf3['$ok'][_0x5125c3(0x118)]['modal'][_0x5125c3(0x119)]({'owner':_0x50fdf3,'title':_0x5125c3(0x14b)+_0x5b293b['name'],'canDrag':!0x0,'content':_0x5125c3(0x137),'context':_0x22f68f=>({'modal':_0x22f68f,'engine':_0x5b293b,'envName':_0x26b055})});},'openTypeMember'(_0x1e3847,_0x33a42d=null){const _0x43287d=_0x4f888c,_0x195f73=this[_0x43287d(0x172)](_0x1e3847);if(!_0x195f73)return;const _0x578386=this['relatedEnv'](_0x1e3847,_0x33a42d);_0x50fdf3[_0x43287d(0x11d)](_0x43287d(0xbe),{'type':_0x195f73,'env':_0x578386});},'engineMetricSearchParts':_0x42a596=>_0x2d194a(_0x42a596)[_0x4f888c(0x169)](_0xe06dc1=>[_0xe06dc1?.[_0x4f888c(0xca)],_0xe06dc1?.[_0x4f888c(0xff)]]),'engineStatusMeta':_0x48a268=>_0x55de14(_0x48a268),'lifecycleEnv'(_0x2044d3,_0x69d5b1=null){const _0x5faebf=_0x4f888c;return this['memberOwnerEnv'](_0x2044d3,_0x69d5b1)??this[_0x5faebf(0xea)](_0x2044d3)??_0x50fdf3['$ok'][_0x5faebf(0x13a)]['okdb'][_0x5faebf(0x13b)]??_0x5faebf(0x127);},'metricToneColor'(_0x309082=null){const _0x4b2312=_0x4f888c;switch(_0x309082?.['tone']){case _0x4b2312(0x15e):return _0x4b2312(0x13d);case'danger':return'var(--okdb-danger)';case _0x4b2312(0xb8):return _0x4b2312(0xde);case _0x4b2312(0x125):return _0x4b2312(0xfd);default:return _0x4b2312(0xe1);}},'metricPreview':(_0x3067b5=null)=>_0x3067b5?.[_0x4f888c(0xca)]&&_0x3067b5?.[_0x4f888c(0xff)]?_0x3067b5[_0x4f888c(0xca)]+':\x20'+_0x3067b5[_0x4f888c(0xff)]:'','requestRefresh'(){const _0x323963=_0x4f888c;_0x50fdf3[_0x323963(0x11d)]('refresh');},'goToType'(_0x3aca14){const _0x45c417=_0x4f888c,_0x220912=_0x50fdf3[_0x45c417(0xc0)][_0x45c417(0x116)];_0x220912[_0x45c417(0xdc)](_0x220912[_0x45c417(0x13f)]('/db',{'type':_0x3aca14,'tab':_0x45c417(0x150)}));},'goToFiles'(_0x1b0fcf){const _0x4dc518=_0x4f888c,_0x4f8a2d=_0x50fdf3['$vars'][_0x4dc518(0x116)];_0x4f8a2d[_0x4dc518(0xdc)](_0x4f8a2d['resolve']('/files',{'collection':_0x1b0fcf}));}}),'template':'\x0a<div\x20class=\x22eo-root\x22>\x0a\x0a\x20\x20<!--\x20──\x20Page\x20header\x20──\x20-->\x0a\x20\x20<div\x20class=\x22eo-header\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-title\x22>{{\x20headerTitle\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20:title=\x22isEmbedded\x20?\x20\x27Use\x20the\x20inline\x20filters\x20above\x20to\x20scope\x20this\x20type-local\x20engines\x20view.\x27\x20:\x20\x27Use\x20the\x20left\x20sidebar\x20to\x20switch\x20mode\x20and\x20filter\x20by\x20type,\x20status,\x20search\x20text,\x20and\x20source\x20type.\x27\x22\x20style=\x22font-size:12px;\x20opacity:.3;\x20cursor:help;\x22>ⓘ</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22eo-stats\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20title=\x22Visible\x20results\x22\x20style=\x22color:var(--okdb-app-fg-muted);\x22><span\x20style=\x22opacity:.55;\x22>Visible:</span><span\x20style=\x22color:var(--okdb-app-fg);\x20margin-left:4px;\x22>{{\x20visibleItemCount\x20}}\x20/\x20{{\x20totalItemCount\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-stat-sep\x22></span>\x0a\x20\x20\x20\x20\x20\x20<span\x20title=\x22Running\x20engines\x22\x20style=\x22color:var(--okdb-app-fg-muted);\x22><span\x20style=\x22opacity:.55;\x22>Running:</span><span\x20style=\x22color:var(--okdb-success);\x20margin-left:4px;\x22>{{\x20runningCount\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22errorCount\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-stat-sep\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20title=\x22Engines\x20needing\x20attention\x22\x20style=\x22color:var(--okdb-app-fg-muted);\x22><span\x20style=\x22opacity:.55;\x22>Attention:</span><span\x20style=\x22color:var(--okdb-danger);\x20margin-left:4px;\x22>{{\x20errorCount\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20No\x20engines\x20at\x20all\x20──\x20-->\x0a\x20\x20<if\x20:=\x22!hasAnyEngines\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22eo-alert\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-alert__title\x22>No\x20engines\x20configured</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-alert__body\x22>Create\x20a\x20pipeline\x20to\x20provision\x20engines,\x20then\x20return\x20here\x20to\x20inspect\x20and\x20manage\x20them.</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20No\x20filter\x20results\x20──\x20-->\x0a\x20\x20<if\x20:=\x22hasAnyEngines\x20&&\x20visibleItemCount\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22eo-alert\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-alert__title\x22>{{\x20noResultsLabel\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-alert__body\x22>{{\x20noResultsHint\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Env\x20/\x20embedding\x20pipelines\x20──\x20-->\x0a\x20\x20<if\x20:=\x22filteredEmbedPipelines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22eo-section\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-section__label\x22>{{\x20groupedPipelineHeading\x20}}\x20<span\x20class=\x22eo-count\x22>{{\x20filteredEmbedPipelines.length\x20}}</span></div>\x0a\x20\x20\x20\x20\x20\x20<each\x20:of=\x22filteredEmbedPipelines\x22\x20let:item=\x22g\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22pipelineCardStyle(g)\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline\x20header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-pipeline-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-health-dot\x22\x20:style=\x22\x27background:\x27\x20+\x20healthDot(embedPipelineEngines(g))\x20+\x20\x27;box-shadow:0\x200\x200\x203px\x20\x27\x20+\x20healthDot(embedPipelineEngines(g))\x20+\x20\x2720;\x27\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-pipeline-name\x22\x20:title=\x22g.name\x22>{{\x20g.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-pill\x22\x20:style=\x22g.type\x20===\x20\x27embed\x27\x20?\x20\x27border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);color:var(--okdb-indigo);background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x207%,\x20transparent);\x27\x20:\x20\x27border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);color:var(--okdb-accent);background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x27\x22>{{\x20g.type\x20===\x20\x27file\x27\x20?\x20\x27Files\x27\x20:\x20g.type\x20===\x20\x27embed\x27\x20?\x20\x27Embedding\x27\x20:\x20\x27Env\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-run-count\x22\x20:title=\x22pipelineRunningCount(g)\x20+\x20\x27\x20running\x20of\x20\x27\x20+\x20pipelineMemberCount(g)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:5px;height:5px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20(pipelineRunningCount(g)\x20===\x20pipelineMemberCount(g)\x20&&\x20pipelineMemberCount(g)\x20>\x200\x20?\x20\x27var(--okdb-success)\x27\x20:\x20pipelineRunningCount(g)\x20>\x200\x20?\x20\x27var(--okdb-warning)\x27\x20:\x20\x27#374151\x27)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20pipelineRunningCount(g)\x20}}/{{\x20pipelineMemberCount(g)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-spacer\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineSourceType(g)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openTypeMember(embedPipelineEngines(g).find(e\x20=>\x20e?.config?.source_type\x20||\x20e?.runtime?.source_type\x20||\x20e?.config?.target_type),\x20g.env)\x22\x20:disabled=\x22pipelineBusy(g)\x22\x20title=\x22Open\x20source\x20type\x20context\x22\x20class=\x22eo-btn\x22\x20style=\x22border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);color:var(--okdb-indigo);background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x207%,\x20transparent);\x22>↗\x20Type</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineRunningCount(g)\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22stopPipeline(g)\x22\x20:disabled=\x22pipelineBusy(g)\x22\x20title=\x22Stop\x20all\x20running\x20members\x22\x20class=\x22eo-btn\x22\x20style=\x22border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2033%,\x20transparent);color:var(--okdb-warning);background:color-mix(in\x20srgb,\x20var(--okdb-warning)\x207%,\x20transparent);\x22>■\x20Stop</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineMemberCount(g)\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22restartPipeline(g)\x22\x20:disabled=\x22pipelineBusy(g)\x22\x20title=\x22Restart\x20all\x20members\x20(stop\x20then\x20start)\x22\x20class=\x22eo-btn\x22\x20style=\x22border-color:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2033%,\x20transparent);color:var(--okdb-orange);background:color-mix(in\x20srgb,\x20var(--okdb-orange)\x207%,\x20transparent);\x22>↺\x20Restart</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineRunningCount(g)\x20<\x20pipelineMemberCount(g)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22startPipeline(g)\x22\x20:disabled=\x22pipelineBusy(g)\x22\x20title=\x22Start\x20every\x20runnable\x20member\x22\x20class=\x22eo-btn\x22\x20:style=\x22pipelineActionStyle(\x27var(--okdb-success)\x27)\x22>▶\x20Start</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22togglePipeline(g)\x22\x20:title=\x22isSelectedPipeline(g)\x20?\x20\x27Collapse\x27\x20:\x20\x27Expand\x20members\x27\x22\x20class=\x22eo-btn\x20eo-btn--toggle\x22>Members\x20{{\x20isSelectedPipeline(g)\x20?\x20\x27▴\x27\x20:\x20\x27▾\x27\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Config\x20metrics\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHeaderMetrics(g).length\x20>\x200\x20||\x20pipelineProgressMetric(g)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-pipeline-metrics\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22pipelineHeaderMetrics(g)\x22\x20let:item=\x22metric\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-kv\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-kv__label\x22>{{\x20metric.label\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-kv__val\x22>{{\x20metric.value\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineProgressMetric(g)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-kv\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-kv__label\x22>Progress</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-kv__val\x22\x20:style=\x22\x27color:\x27\x20+\x20metricToneColor(pipelineProgressMetric(g))\x22>{{\x20pipelineProgressMetric(g).value\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Inline\x20member\x20chip\x20strip\x20(always\x20visible\x20when\x20collapsed)\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!isSelectedPipeline(g)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-chip-strip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22embedPipelineEngines(g)\x22\x20let:item=\x22eng\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-chip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:5px;height:5px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20statusDot(eng)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27color:\x27\x20+\x20(typeColor[eng.role\x20||\x20eng.type]\x20??\x20\x27var(--okdb-app-fg-muted)\x27)\x22>{{\x20typeName(eng.role\x20||\x20eng.type)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-chip__name\x22>{{\x20shortEngineName(eng)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22showStatusText(eng)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27color:\x27\x20+\x20engineStatusMeta(eng).color\x20+\x20\x27;opacity:.8;\x27\x22>{{\x20engineStatusMeta(eng).label\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Expanded\x20accordion:\x20full\x20engine-resource-card\x20members\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22isSelectedPipeline(g)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-accordion\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedPipelineMembers(g)\x22\x20let:item=\x22member\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<engine-resource-card\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:engine=\x22member\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:env=\x22lifecycleEnv(member,\x20g.env)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:pipeline=\x22pipelineIdentity(g)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:hidepipeline=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hidetype=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20hideenv=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20variant=\x22member\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:showdelete=\x22false\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@refresh=\x22requestRefresh()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@edit=\x22openEngineModal($event.detail,\x20g.env)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@type-context=\x22openTypeMember($event.detail.engine,\x20g.env)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Footer:\x20destructive\x20action\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-accordion-footer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22deletePipeline(g)\x22\x20:disabled=\x22pipelineBusy(g)\x22\x20title=\x22Delete\x20the\x20pipeline\x20record\x20and\x20env-owned\x20members\x22\x20class=\x22eo-btn\x20eo-btn--danger\x22>🗑\x20Delete\x20pipeline</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20File\x20Pipelines\x20──\x20-->\x0a\x20\x20<if\x20:=\x22filteredFilePipelines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22eo-section\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-section__label\x22>File\x20Pipelines\x20<span\x20class=\x22eo-count\x22>{{\x20filteredFilePipelines.length\x20}}</span></div>\x0a\x20\x20\x20\x20\x20\x20<each\x20:of=\x22filteredFilePipelines\x22\x20let:item=\x22g\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-pipeline-card\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline\x20header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-pipeline-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-health-dot\x22\x20:style=\x22\x27background:\x27\x20+\x20healthDot(filePipelineEngines(g))\x20+\x20\x27;box-shadow:0\x200\x200\x203px\x20\x27\x20+\x20healthDot(filePipelineEngines(g))\x20+\x20\x2720;\x27\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-pipeline-name\x22\x20:title=\x22g.name\x22>{{\x20g.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-pill\x22\x20style=\x22border-color:color-mix(in\x20srgb,\x20var(--okdb-sky)\x2033%,\x20transparent);color:var(--okdb-sky);background:color-mix(in\x20srgb,\x20var(--okdb-sky)\x207%,\x20transparent);\x22>Files</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-run-count\x22\x20:title=\x22filePipelineEngines(g).filter(e\x20=>\x20e.isRunning).length\x20+\x20\x27\x20running\x20of\x20\x27\x20+\x20filePipelineEngines(g).length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:5px;height:5px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20(filePipelineEngines(g).every(e\x20=>\x20e.isRunning)\x20&&\x20filePipelineEngines(g).length\x20>\x200\x20?\x20\x27var(--okdb-success)\x27\x20:\x20filePipelineEngines(g).some(e\x20=>\x20e.isRunning)\x20?\x20\x27var(--okdb-warning)\x27\x20:\x20\x27#374151\x27)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20filePipelineEngines(g).filter(e\x20=>\x20e.isRunning).length\x20}}/{{\x20filePipelineEngines(g).length\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-spacer\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22goToFiles(g.name)\x22\x20title=\x22Open\x20the\x20file\x20collection\x20context\x22\x20class=\x22eo-btn\x22\x20style=\x22border-color:color-mix(in\x20srgb,\x20var(--okdb-sky)\x2033%,\x20transparent);color:var(--okdb-sky);background:color-mix(in\x20srgb,\x20var(--okdb-sky)\x207%,\x20transparent);\x22>↗\x20Open</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Engine\x20chip\x20strip\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-chip-strip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-chip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:5px;height:5px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20statusDot(g.collection)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27color:\x27\x20+\x20(typeColor[g.collection.type]\x20??\x20\x27var(--okdb-sky)\x27)\x22>{{\x20typeLabel[g.collection.type]\x20??\x20\x27Collection\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-chip__name\x22>{{\x20g.collection.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22g.extractors\x22\x20let:item=\x22ext\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-chip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:5px;height:5px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20statusDot(ext)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-success);\x22>Extractor</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-chip__name\x22>{{\x20ext.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22g.workers\x22\x20let:item=\x22w\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-chip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:5px;height:5px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20statusDot(w)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-warning);\x22>Worker</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22eo-chip__name\x22>{{\x20w.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Engines\x20(engine\x20mode)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22modeFilter\x20===\x20\x27engines\x27\x20&&\x20visibleEngines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22eo-section\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22eo-section__label\x22>Engines\x20<span\x20class=\x22eo-count\x22>{{\x20visibleEngines.length\x20}}</span></div>\x0a\x20\x20\x20\x20\x20\x20<each\x20:of=\x22visibleEngineGroups\x22\x20let:item=\x22group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22group.engines\x22\x20let:item=\x22eng\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<engine-resource-card\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:env=\x22lifecycleEnv(eng)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:pipeline=\x22enginePipelineName(eng)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20variant=\x22card\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:showdelete=\x22false\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@refresh=\x22requestRefresh()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@edit=\x22openEngineModal($event.detail,\x20engineEnv($event.detail))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@type-context=\x22goToType($event.detail.type)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>','style':'\x0a/*\x20──\x20Root\x20───────────────────────────────────────────\x20*/\x0aengines-overview\x20.eo-root\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-direction:\x20column;\x0a\x20\x20gap:\x2016px;\x0a\x20\x20max-width:\x20980px;\x0a}\x0a\x0a/*\x20──\x20Page\x20header\x20────────────────────────────────────\x20*/\x0aengines-overview\x20.eo-header\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20justify-content:\x20space-between;\x0a\x20\x20gap:\x2012px;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20flex-wrap:\x20wrap;\x0a}\x0aengines-overview\x20.eo-title\x20{\x20font-weight:\x20700;\x20font-size:\x2017px;\x20color:\x20var(--okdb-app-fg);\x20letter-spacing:\x20-.01em;\x20}\x0aengines-overview\x20.eo-stats\x20{\x20display:\x20flex;\x20gap:\x2010px;\x20flex-wrap:\x20wrap;\x20align-items:\x20center;\x20font-size:\x2011px;\x20}\x0aengines-overview\x20.eo-stat-sep\x20{\x20width:\x201px;\x20height:\x2012px;\x20background:\x20var(--okdb-app-border);\x20flex-shrink:\x200;\x20}\x0a\x0a/*\x20──\x20Alerts\x20─────────────────────────────────────────\x20*/\x0aengines-overview\x20.eo-alert\x20{\x0a\x20\x20padding:\x2012px\x2016px;\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20border-radius:\x2010px;\x0a\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20font-size:\x2012px;\x0a\x20\x20line-height:\x201.6;\x0a}\x0aengines-overview\x20.eo-alert__title\x20{\x20font-weight:\x20600;\x20color:\x20var(--okdb-app-fg-muted);\x20margin-bottom:\x202px;\x20}\x0aengines-overview\x20.eo-alert__body\x20{\x20color:\x20var(--okdb-app-fg-subtle);\x20}\x0a\x0a/*\x20──\x20Section\x20────────────────────────────────────────\x20*/\x0aengines-overview\x20.eo-section\x20{\x20display:\x20flex;\x20flex-direction:\x20column;\x20gap:\x208px;\x20}\x0aengines-overview\x20.eo-section__label\x20{\x0a\x20\x20font-size:\x2010px;\x0a\x20\x20text-transform:\x20uppercase;\x0a\x20\x20letter-spacing:\x20.07em;\x0a\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20opacity:\x20.55;\x0a\x20\x20margin-bottom:\x202px;\x0a}\x0aengines-overview\x20.eo-count\x20{\x0a\x20\x20font-size:\x2010px;\x0a\x20\x20padding:\x200\x206px;\x0a\x20\x20border-radius:\x20999px;\x0a\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20color:\x20var(--okdb-accent-muted);\x0a\x20\x20margin-left:\x204px;\x0a\x20\x20vertical-align:\x20middle;\x0a}\x0a\x0a/*\x20──\x20Pipeline\x20card\x20──────────────────────────────────\x20*/\x0aengines-overview\x20.eo-pipeline-card\x20{\x0a\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20border-radius:\x2010px;\x0a\x20\x20overflow:\x20hidden;\x0a\x20\x20transition:\x20border-color\x20.14s;\x0a}\x0aengines-overview\x20.eo-pipeline-card:hover\x20{\x20border-color:\x20#384047;\x20}\x0a\x0aengines-overview\x20.eo-pipeline-header\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20gap:\x208px;\x0a\x20\x20padding:\x2012px\x2014px;\x0a\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20min-width:\x200;\x0a}\x0aengines-overview\x20.eo-health-dot\x20{\x0a\x20\x20width:\x207px;\x0a\x20\x20height:\x207px;\x0a\x20\x20border-radius:\x2050%;\x0a\x20\x20flex-shrink:\x200;\x0a}\x0aengines-overview\x20.eo-pipeline-name\x20{\x0a\x20\x20font-weight:\x20600;\x0a\x20\x20font-size:\x2013.5px;\x0a\x20\x20color:\x20var(--okdb-app-fg);\x0a\x20\x20overflow:\x20hidden;\x0a\x20\x20text-overflow:\x20ellipsis;\x0a\x20\x20white-space:\x20nowrap;\x0a\x20\x20min-width:\x200;\x0a\x20\x20letter-spacing:\x20-.01em;\x0a}\x0aengines-overview\x20.eo-spacer\x20{\x20flex:\x201;\x20min-width:\x200;\x20}\x0aengines-overview\x20.eo-run-count\x20{\x0a\x20\x20font-size:\x2011px;\x0a\x20\x20color:\x20var(--okdb-accent-muted);\x0a\x20\x20display:\x20inline-flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20gap:\x204px;\x0a\x20\x20white-space:\x20nowrap;\x0a\x20\x20flex-shrink:\x200;\x0a}\x0a\x0a/*\x20──\x20Pills\x20──────────────────────────────────────────\x20*/\x0aengines-overview\x20.eo-pill\x20{\x0a\x20\x20font-size:\x2010.5px;\x0a\x20\x20padding:\x201px\x208px;\x0a\x20\x20border-radius:\x20999px;\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20background:\x20transparent;\x0a\x20\x20display:\x20inline-flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20white-space:\x20nowrap;\x0a\x20\x20flex-shrink:\x200;\x0a\x20\x20letter-spacing:\x20.01em;\x0a}\x0a\x0a/*\x20──\x20Buttons\x20────────────────────────────────────────\x20*/\x0aengines-overview\x20.eo-btn\x20{\x0a\x20\x20font-size:\x2011px;\x0a\x20\x20padding:\x203px\x2010px;\x0a\x20\x20border-radius:\x20999px;\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20cursor:\x20pointer;\x0a\x20\x20line-height:\x201.4;\x0a\x20\x20flex-shrink:\x200;\x0a\x20\x20white-space:\x20nowrap;\x0a\x20\x20transition:\x20filter\x20.12s;\x0a}\x0aengines-overview\x20.eo-btn--toggle\x20{\x20background:\x20var(--okdb-app-bg-deep);\x20border-color:\x20var(--okdb-app-border);\x20color:\x20var(--okdb-app-fg-muted);\x20}\x0aengines-overview\x20.eo-btn--danger\x20{\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:\x20var(--okdb-danger);\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x207%,\x20transparent);\x20}\x0aengines-overview\x20.eo-btn:hover:not(:disabled)\x20{\x20filter:\x20brightness(1.3);\x20}\x0aengines-overview\x20.eo-btn:disabled\x20{\x20opacity:\x20.4;\x20cursor:\x20not-allowed;\x20}\x0a\x0a/*\x20──\x20Metrics\x20row\x20(pipeline\x20header)\x20─────────────────\x20*/\x0aengines-overview\x20.eo-pipeline-metrics\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20gap:\x203px\x2016px;\x0a\x20\x20padding:\x200\x2014px\x2010px\x2035px;\x0a}\x0aengines-overview\x20.eo-kv\x20{\x20display:\x20inline-flex;\x20gap:\x204px;\x20align-items:\x20baseline;\x20font-size:\x2011px;\x20line-height:\x201.4;\x20}\x0aengines-overview\x20.eo-kv__label\x20{\x20font-size:\x209.5px;\x20text-transform:\x20uppercase;\x20letter-spacing:\x20.04em;\x20color:\x20var(--okdb-app-fg-subtle);\x20flex-shrink:\x200;\x20}\x0aengines-overview\x20.eo-kv__val\x20{\x20color:\x20#a8c4d9;\x20overflow:\x20hidden;\x20text-overflow:\x20ellipsis;\x20white-space:\x20nowrap;\x20}\x0a\x0a/*\x20──\x20Inline\x20chip\x20strip\x20(collapsed\x20pipeline)\x20─────────\x20*/\x0aengines-overview\x20.eo-chip-strip\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20gap:\x205px;\x0a\x20\x20padding:\x200\x2014px\x2012px\x2035px;\x0a}\x0aengines-overview\x20.eo-chip\x20{\x0a\x20\x20display:\x20inline-flex;\x0a\x20\x20align-items:\x20center;\x0a\x20\x20gap:\x205px;\x0a\x20\x20padding:\x202px\x208px;\x0a\x20\x20border-radius:\x20999px;\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20font-size:\x2010.5px;\x0a\x20\x20white-space:\x20nowrap;\x0a}\x0aengines-overview\x20.eo-chip__name\x20{\x20color:\x20var(--okdb-accent-muted);\x20}\x0a\x0a/*\x20──\x20Accordion\x20(expanded\x20pipeline)\x20─────────────────\x20*/\x0aengines-overview\x20.eo-accordion\x20{\x0a\x20\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-direction:\x20column;\x0a\x20\x20gap:\x208px;\x0a\x20\x20padding:\x2012px;\x0a}\x0aengines-overview\x20.eo-accordion-footer\x20{\x0a\x20\x20display:\x20flex;\x0a\x20\x20justify-content:\x20flex-end;\x0a\x20\x20padding:\x204px\x202px\x202px;\x0a\x20\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20margin-top:\x202px;\x0a}\x0a'};
|