@kedem/okdb 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/okdb.js +1 -1
- package/okdb-data/default/data.mdb +0 -0
- package/okdb-data/default/lock.mdb +0 -0
- package/okdb-data/~log/data.mdb +0 -0
- package/okdb-data/~log/lock.mdb +0 -0
- package/okdb-data/~system/data.mdb +0 -0
- package/okdb-data/~system/lock.mdb +0 -0
- package/okdb.js +1 -1
- package/package.json +1 -1
- package/public/admin-app.js +1 -1
- package/public/components/admin-route-host.ok.js +1 -1
- package/public/components/env-picker.ok.js +1 -1
- package/public/components/field-path-input.ok.js +1 -1
- package/public/components/geo-map.ok.js +1 -1
- package/public/components/ok-cron-input.ok.js +1 -1
- package/public/components/ok-dropzone.ok.js +1 -1
- package/public/components/ok-js-input.ok.js +1 -1
- package/public/components/ok-json-input.ok.js +1 -1
- package/public/components/ok-text-monaco-input.ok.js +1 -1
- package/public/components/theme-toggle.ok.js +1 -1
- package/public/login-app.js +1 -1
- package/public/modules/ok.js +1 -1
- package/public/sections/api/parts/api-endpoint.ok.js +1 -1
- package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
- package/public/sections/auth/parts/token-detail.ok.js +1 -1
- package/public/sections/auth/parts/token-list.ok.js +1 -1
- package/public/sections/db/modals/add-item-modal.ok.js +1 -1
- package/public/sections/db/modals/create-env-modal.ok.js +1 -1
- package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
- package/public/sections/db/modals/create-index-modal.ok.js +1 -1
- package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
- package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
- package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
- package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
- package/public/sections/db/parts/db-overview.ok.js +1 -1
- package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
- package/public/sections/db/parts/edit-row.ok.js +1 -1
- package/public/sections/db/parts/tm-timeline.ok.js +1 -1
- package/public/sections/db/parts/type-changelog.ok.js +1 -1
- package/public/sections/db/parts/type-list.ok.js +1 -1
- package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
- package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
- package/public/sections/db/parts/type-viewer.ok.js +1 -1
- package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
- package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
- package/public/sections/engines/engine-panel-shared-style.js +1 -1
- package/public/sections/engines/engine-ui-utils.js +1 -1
- package/public/sections/engines/modals/engine-modal.ok.js +1 -1
- package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
- package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
- package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
- package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
- package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
- package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
- package/public/sections/files/parts/files-blob-status.ok.js +1 -1
- package/public/sections/files/parts/files-collection-list.ok.js +1 -1
- package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
- package/public/sections/files/parts/files-file-list.ok.js +1 -1
- package/public/sections/files/parts/files-overview.ok.js +1 -1
- package/public/sections/files/parts/files-path-browser.ok.js +1 -1
- package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
- package/public/sections/functions/modals/function-modal.ok.js +1 -1
- package/public/sections/functions/parts/function-detail.ok.js +1 -1
- package/public/sections/functions/parts/function-logs.ok.js +1 -1
- package/public/sections/functions/parts/function-runner.ok.js +1 -1
- package/public/sections/functions/parts/functions-list.ok.js +1 -1
- package/public/sections/license/parts/license-panel.ok.js +1 -1
- package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
- package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
- package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
- package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
- package/public/sections/queue/parts/queue-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-workers.ok.js +1 -1
- package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
- package/public/sections/sync/parts/sync-retention.ok.js +1 -1
- package/public/sections/sync/parts/sync-topology.ok.js +1 -1
- package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
- package/public/sections/system/parts/system-api-panel.ok.js +1 -1
- package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
- package/public/sections/system/parts/system-log-history.ok.js +1 -1
- package/public/sections/system/parts/system-log.ok.js +1 -1
- package/public/sections/system/parts/system-status.ok.js +1 -1
- package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
- package/public/sections/views/modals/create-view-modal.ok.js +1 -1
- package/public/sections/views/parts/view-detail.ok.js +1 -1
- package/public/sections/views/parts/views-list.ok.js +1 -1
- package/public/sections/views/parts/views-overview.ok.js +1 -1
- package/public/setup-app.js +1 -1
- package/public/stores/auth-store.js +1 -1
- package/public/stores/events-store.js +1 -1
- package/public/stores/functions-store.js +1 -1
- package/public/stores/okdb-store.js +1 -1
- package/public/stores/theme-store.js +1 -1
- package/public/util/permissions.js +1 -1
- package/public/util/sift-schema.js +1 -1
- package/public/view-models/type-query-vm.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x17afcb=_0xaa2d;function _0xaa2d(_0x2a7765,_0x305602){_0x2a7765=_0x2a7765-0xe7;const _0x43108a=_0x4310();let _0xaa2d25=_0x43108a[_0x2a7765];return _0xaa2d25;}(function(_0x2c268f,_0x6ad3f1){const _0xa422cd=_0xaa2d,_0x1e6af0=_0x2c268f();while(!![]){try{const _0x2fc1fc=-parseInt(_0xa422cd(0xf2))/0x1*(parseInt(_0xa422cd(0x115))/0x2)+-parseInt(_0xa422cd(0x103))/0x3+parseInt(_0xa422cd(0x113))/0x4*(parseInt(_0xa422cd(0x102))/0x5)+parseInt(_0xa422cd(0xfd))/0x6+parseInt(_0xa422cd(0x121))/0x7+-parseInt(_0xa422cd(0xec))/0x8*(parseInt(_0xa422cd(0x11a))/0x9)+parseInt(_0xa422cd(0x10c))/0xa;if(_0x2fc1fc===_0x6ad3f1)break;else _0x1e6af0['push'](_0x1e6af0['shift']());}catch(_0x58835e){_0x1e6af0['push'](_0x1e6af0['shift']());}}}(_0x4310,0x2796b));import _0x41269e from'@toolkit/elements/ok-icon.ok.js';import _0x494c8f from'@toolkit/core/ok-overlay.ok.js';import _0x15f0d3 from'../../../stores/events-store.js';import _0x1a92dc from'../../engines/parts/engine-row-item.ok.js';function _0x4310(){const _0x76cd84=['\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x20height:100%;\x20min-height:0;\x22>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x22>Engines</div>\x0a\x20\x20\x20\x20<button\x20@click=\x22load\x22\x20:disabled=\x22busy\x22\x20style=\x22opacity:.8;\x22>↻</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:24px;height:24px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Top\x20nav:\x20Overview\x20+\x20Create\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:2px;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20:class=\x22selected\x20===\x20null\x20?\x20\x27eng-row\x20eng-row--on\x27\x20:\x20\x27eng-row\x27\x22\x0a\x20\x20\x20\x20\x20\x20@click=\x22selectNone\x22\x0a\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22width:14px;\x20text-align:center;\x20flex-shrink:0;\x22>⊞</span>\x0a\x20\x20\x20\x20\x20\x20<span>Overview</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20:class=\x22selected\x20===\x20\x27__create__\x27\x20?\x20\x27eng-row\x20eng-row--on\x27\x20:\x20\x27eng-row\x27\x22\x0a\x20\x20\x20\x20\x20\x20@click=\x22openCreate\x22\x0a\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22width:14px;\x20text-align:center;\x20flex-shrink:0;\x20color:var(--okdb-accent);\x22>+</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-accent);\x22>Create\x20Engine</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22border-top:1px\x20solid\x20var(--okdb-app-border);\x20margin:0\x200\x204px;\x22></div>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20overflow:auto;\x20min-height:0;\x20padding-right:4px;\x22>\x0a\x20\x20\x20\x20<each\x20:of=\x22typeOrder\x22\x20let:item=\x22t\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasEngines(t)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20opacity:.5;\x20letter-spacing:.06em;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20typeLabel[t]\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:2px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22grouped[t]\x22\x20let:item=\x22eng\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<engine-row-item\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20:label=\x22itemLabel[t]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:label-color=\x22itemColor[t]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:subtitle=\x22eng.status\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action-label=\x22\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:selected=\x22selected\x20===\x20eng.key\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22select($event.detail)\x22\x0a\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\x20\x20<if\x20:=\x22pipeline(eng)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22pipeline-tag\x22\x20:title=\x22\x27pipeline:\x20\x27\x20+\x20pipeline(eng)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20pipeline(eng)\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</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</engine-row-item>\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\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</each>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22engines.length\x20===\x200\x20&&\x20!busy\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:12px;\x22>No\x20engines\x20found.</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','var(--okdb-accent)','key','Embedder','Embedders','1911606qypJMq','engine:stopped','.eng-row{display:flex;align-items:center;gap:8px;padding:6px\x208px;border-radius:6px;border:1px\x20solid\x20transparent;background:0\x200;cursor:pointer;width:100%}.eng-row--on,.eng-row:hover{background:var(--okdb-app-surface);border-color:var(--okdb-app-border)}.eng-row--on{border-color:var(--okdb-accent)}.pipeline-tag{flex-shrink:0;max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;padding:1px\x205px;border-radius:999px;border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-indigo)\x2033%,transparent);color:var(--okdb-indigo);background:color-mix(in\x20srgb,var(--okdb-indigo)\x207%,transparent);letter-spacing:.02em}','$ok','fulfilled','1660WmFOmZ','407823mgtmJT','select','selectedEnv','loaded','length','var(--okdb-purple)','grouped','engines','/embeddings/embedders','1681690lRtowM','embeddings:pipeline:ready','then','push','var(--okdb-info)','vector-search','__create__','244wxstsY','API','2BQAjEt','meta','Search','json','load','24588OGfWzG','pipeline','embed-engine-list\x20load\x20error','/env/','value','engine:uninstalled','status','35175MqDszO','Worker','engine:started','$dispatch','type','selected','280ijPfjC','embeddings:indexer:flushed','okdb','stores','/engines','engine:installed','118331Vctjys','data','Workers','busy','var(--okdb-warning)','_unsubs'];_0x4310=function(){return _0x76cd84;};return _0x4310();}export default{'tag':'embed-engine-list','dependencies':[_0x494c8f,_0x41269e,_0x1a92dc],'context':_0x538fab=>({'busy':!0x1,'engines':[],'selected':null,'_unsubs':[],'typeOrder':['embedder','indexer','embed-worker',_0x17afcb(0x111)],'typeLabel':{'embedder':_0x17afcb(0xfc),'indexer':'Indexers','embed-worker':_0x17afcb(0xf4),'vector-search':_0x17afcb(0x117)},'itemLabel':{'embedder':_0x17afcb(0xfb),'indexer':'Indexer','embed-worker':_0x17afcb(0xe7),'vector-search':_0x17afcb(0x117)},'itemColor':{'embedder':_0x17afcb(0x110),'indexer':_0x17afcb(0x108),'embed-worker':_0x17afcb(0xf6),'vector-search':_0x17afcb(0xf9)},async 'load'(){const _0x210daf=_0x17afcb;this[_0x210daf(0xf5)]=!0x0;try{const _0x3a79de=_0x538fab[_0x210daf(0x100)]?.[_0x210daf(0xef)]?.[_0x210daf(0xee)]?.[_0x210daf(0x105)]||'default',[_0x280e74,_0x2c74ae]=await Promise['allSettled']([fetch(__ENV__[_0x210daf(0x114)]+_0x210daf(0x11d)+encodeURIComponent(_0x3a79de)+_0x210daf(0xf0))[_0x210daf(0x10e)](_0x9bf026=>_0x9bf026['json']()),fetch(__ENV__[_0x210daf(0x114)]+_0x210daf(0x10b))[_0x210daf(0x10e)](_0x59eb47=>_0x59eb47[_0x210daf(0x118)]())]),_0x1dc861='fulfilled'===_0x280e74['status']?_0x280e74[_0x210daf(0x11e)]?.[_0x210daf(0xf3)]??[]:[],_0x563c29=_0x210daf(0x101)===_0x2c74ae[_0x210daf(0x120)]?_0x2c74ae[_0x210daf(0x11e)]?.['data']??[]:[];this[_0x210daf(0x10a)]=[..._0x563c29,..._0x1dc861],_0x538fab['$dispatch'](_0x210daf(0x106),this['engines']);}catch(_0x5677df){console['error'](_0x210daf(0x11c),_0x5677df),this[_0x210daf(0x10a)]=[];}finally{this[_0x210daf(0xf5)]=!0x1;}},async 'refresh'(){const _0x24aed2=_0x17afcb;await this[_0x24aed2(0x119)]();},get 'grouped'(){const _0x12f82b=_0x17afcb,_0x3204b1={};for(const _0xd0466e of this['typeOrder'])_0x3204b1[_0xd0466e]=[];for(const _0x1093cd of this[_0x12f82b(0x10a)])_0x3204b1[_0x1093cd[_0x12f82b(0xea)]]&&_0x3204b1[_0x1093cd[_0x12f82b(0xea)]][_0x12f82b(0x10f)](_0x1093cd);return _0x3204b1;},'hasEngines'(_0x36a28d){const _0x2e2de=_0x17afcb;return(this[_0x2e2de(0x109)][_0x36a28d]||[])[_0x2e2de(0x107)]>0x0;},'selectNone'(){const _0x1a27eb=_0x17afcb;this[_0x1a27eb(0xeb)]=null,_0x538fab[_0x1a27eb(0xe9)](_0x1a27eb(0x104),null);},'openCreate'(){const _0x29d10b=_0x17afcb;this[_0x29d10b(0xeb)]=_0x29d10b(0x112),_0x538fab['$dispatch']('create',null);},'clearSelection'(){const _0x5c4963=_0x17afcb;this[_0x5c4963(0xeb)]=null;},'select'(_0x539410){const _0x96944d=_0x17afcb;this[_0x96944d(0xeb)]=_0x539410?.[_0x96944d(0xfa)]??null,_0x538fab['$dispatch'](_0x96944d(0x104),_0x539410);},'pipeline':_0x27b372=>_0x27b372[_0x17afcb(0x116)]?.[_0x17afcb(0x11b)]??null}),async 'mount'(){const _0x21d4db=_0x17afcb;await this[_0x21d4db(0x119)]();const _0xd34847=()=>this[_0x21d4db(0x119)]();this[_0x21d4db(0xf7)]=[_0x15f0d3['on'](_0x21d4db(0xe8),_0xd34847),_0x15f0d3['on'](_0x21d4db(0xfe),_0xd34847),_0x15f0d3['on']('engine:error',_0xd34847),_0x15f0d3['on'](_0x21d4db(0xf1),_0xd34847),_0x15f0d3['on'](_0x21d4db(0x11f),_0xd34847),_0x15f0d3['on'](_0x21d4db(0x10d),_0xd34847),_0x15f0d3['on']('embeddings:indexer:ready',_0xd34847),_0x15f0d3['on'](_0x21d4db(0xed),_0xd34847)];},'unmount'(){const _0x21a111=_0x17afcb;for(const _0x42bea7 of this[_0x21a111(0xf7)])_0x42bea7();this[_0x21a111(0xf7)]=[];},'template':_0x17afcb(0xf8),'style':_0x17afcb(0xff)};
|
|
1
|
+
function _0x6951(_0x1d2ca7,_0x142abd){_0x1d2ca7=_0x1d2ca7-0xb4;const _0x1d77e5=_0x1d77();let _0x69516b=_0x1d77e5[_0x1d2ca7];return _0x69516b;}const _0x29892c=_0x6951;(function(_0x468f70,_0xbb9a35){const _0x567eff=_0x6951,_0x4eea51=_0x468f70();while(!![]){try{const _0x510ce3=parseInt(_0x567eff(0xb4))/0x1*(parseInt(_0x567eff(0xcc))/0x2)+parseInt(_0x567eff(0xce))/0x3*(parseInt(_0x567eff(0xc9))/0x4)+-parseInt(_0x567eff(0xca))/0x5*(-parseInt(_0x567eff(0xeb))/0x6)+parseInt(_0x567eff(0xde))/0x7*(-parseInt(_0x567eff(0xbd))/0x8)+-parseInt(_0x567eff(0xec))/0x9+-parseInt(_0x567eff(0xe3))/0xa+parseInt(_0x567eff(0xe6))/0xb;if(_0x510ce3===_0xbb9a35)break;else _0x4eea51['push'](_0x4eea51['shift']());}catch(_0x3de80d){_0x4eea51['push'](_0x4eea51['shift']());}}}(_0x1d77,0x77805));import _0x23cd8c from'@toolkit/elements/ok-icon.ok.js';import _0x5dbe35 from'@toolkit/core/ok-overlay.ok.js';import _0x111e5d from'../../../stores/events-store.js';import _0x229fab from'../../engines/parts/engine-row-item.ok.js';export default{'tag':_0x29892c(0xe1),'dependencies':[_0x5dbe35,_0x23cd8c,_0x229fab],'context':_0x301e09=>({'busy':!0x1,'engines':[],'selected':null,'_unsubs':[],'typeOrder':[_0x29892c(0xcb),_0x29892c(0xcd),_0x29892c(0xdd),_0x29892c(0xe5)],'typeLabel':{'embedder':_0x29892c(0xe8),'indexer':'Indexers','embed-worker':_0x29892c(0xea),'vector-search':_0x29892c(0xe9)},'itemLabel':{'embedder':_0x29892c(0xc1),'indexer':_0x29892c(0xb5),'embed-worker':_0x29892c(0xd7),'vector-search':_0x29892c(0xe9)},'itemColor':{'embedder':'var(--okdb-info)','indexer':'var(--okdb-purple)','embed-worker':_0x29892c(0xc8),'vector-search':_0x29892c(0xd1)},async 'load'(){const _0x59ae90=_0x29892c;this[_0x59ae90(0xb9)]=!0x0;try{const _0x1ffd12=_0x301e09['$ok']?.[_0x59ae90(0xb7)]?.['okdb']?.[_0x59ae90(0xbc)]||_0x59ae90(0xc2),[_0x29ad37,_0x4ba439]=await Promise[_0x59ae90(0xc7)]([fetch(__ENV__['API']+'/env/'+encodeURIComponent(_0x1ffd12)+_0x59ae90(0xd2))[_0x59ae90(0xc6)](_0x4510cc=>_0x4510cc[_0x59ae90(0xb6)]()),fetch(__ENV__[_0x59ae90(0xe7)]+_0x59ae90(0xe4))[_0x59ae90(0xc6)](_0x278668=>_0x278668[_0x59ae90(0xb6)]())]),_0x37b780=_0x59ae90(0xdc)===_0x29ad37[_0x59ae90(0xda)]?_0x29ad37[_0x59ae90(0xd4)]?.[_0x59ae90(0xc5)]??[]:[],_0x48133b=_0x59ae90(0xdc)===_0x4ba439['status']?_0x4ba439['value']?.['data']??[]:[];this[_0x59ae90(0xe0)]=[..._0x48133b,..._0x37b780],_0x301e09[_0x59ae90(0xdb)](_0x59ae90(0xd6),this['engines']);}catch(_0xd46520){console[_0x59ae90(0xbe)]('embed-engine-list\x20load\x20error',_0xd46520),this[_0x59ae90(0xe0)]=[];}finally{this[_0x59ae90(0xb9)]=!0x1;}},async 'refresh'(){await this['load']();},get 'grouped'(){const _0x1a6f34=_0x29892c,_0x2f3f3d={};for(const _0x4f6444 of this[_0x1a6f34(0xd8)])_0x2f3f3d[_0x4f6444]=[];for(const _0x5a7422 of this[_0x1a6f34(0xe0)])_0x2f3f3d[_0x5a7422[_0x1a6f34(0xd3)]]&&_0x2f3f3d[_0x5a7422['type']][_0x1a6f34(0xba)](_0x5a7422);return _0x2f3f3d;},'hasEngines'(_0xe75a88){const _0xf807ea=_0x29892c;return(this[_0xf807ea(0xd9)][_0xe75a88]||[])[_0xf807ea(0xd0)]>0x0;},'selectNone'(){const _0x5592b5=_0x29892c;this['selected']=null,_0x301e09[_0x5592b5(0xdb)](_0x5592b5(0xbb),null);},'openCreate'(){const _0x190e95=_0x29892c;this[_0x190e95(0xd5)]='__create__',_0x301e09[_0x190e95(0xdb)](_0x190e95(0xc4),null);},'clearSelection'(){const _0x49a6c5=_0x29892c;this[_0x49a6c5(0xd5)]=null;},'select'(_0xc2ccad){const _0x5d6e64=_0x29892c;this['selected']=_0xc2ccad?.[_0x5d6e64(0xcf)]??null,_0x301e09[_0x5d6e64(0xdb)]('select',_0xc2ccad);},'pipeline':_0x3ca966=>_0x3ca966[_0x29892c(0xe2)]?.['pipeline']??null}),async 'mount'(){const _0x17f162=_0x29892c;await this[_0x17f162(0xc3)]();const _0x48181d=()=>this[_0x17f162(0xc3)]();this[_0x17f162(0xb8)]=[_0x111e5d['on']('engine:started',_0x48181d),_0x111e5d['on'](_0x17f162(0xbf),_0x48181d),_0x111e5d['on']('engine:error',_0x48181d),_0x111e5d['on'](_0x17f162(0xc0),_0x48181d),_0x111e5d['on']('engine:uninstalled',_0x48181d),_0x111e5d['on']('embeddings:pipeline:ready',_0x48181d),_0x111e5d['on']('embeddings:indexer:ready',_0x48181d),_0x111e5d['on']('embeddings:indexer:flushed',_0x48181d)];},'unmount'(){const _0x56ee81=_0x29892c;for(const _0xd8f410 of this[_0x56ee81(0xb8)])_0xd8f410();this[_0x56ee81(0xb8)]=[];},'template':_0x29892c(0xdf),'style':'.eng-row{display:flex;align-items:center;gap:8px;padding:6px\x208px;border-radius:6px;border:1px\x20solid\x20transparent;background:0\x200;cursor:pointer;width:100%}.eng-row--on,.eng-row:hover{background:var(--okdb-app-surface);border-color:var(--okdb-app-border)}.eng-row--on{border-color:var(--okdb-accent)}.pipeline-tag{flex-shrink:0;max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;padding:1px\x205px;border-radius:999px;border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-indigo)\x2033%,transparent);color:var(--okdb-indigo);background:color-mix(in\x20srgb,var(--okdb-indigo)\x207%,transparent);letter-spacing:.02em}'};function _0x1d77(){const _0x11df97=['API','Embedders','Search','Workers','66Prqlcz','6073416SClQAI','347mMfVqV','Indexer','json','stores','_unsubs','busy','push','select','selectedEnv','4267960KgHvaG','error','engine:stopped','engine:installed','Embedder','default','load','create','data','then','allSettled','var(--okdb-warning)','116ManIZD','381125nlIAHu','embedder','3396cCsxAS','indexer','30159AEdQXd','key','length','var(--okdb-accent)','/engines','type','value','selected','loaded','Worker','typeOrder','grouped','status','$dispatch','fulfilled','embed-worker','7sRIBrD','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x20height:100%;\x20min-height:0;\x22>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x22>Engines</div>\x0a\x20\x20\x20\x20<button\x20@click=\x22load\x22\x20:disabled=\x22busy\x22\x20style=\x22opacity:.8;\x22>↻</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:24px;height:24px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Top\x20nav:\x20Overview\x20+\x20Create\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:2px;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20:class=\x22selected\x20===\x20null\x20?\x20\x27eng-row\x20eng-row--on\x27\x20:\x20\x27eng-row\x27\x22\x0a\x20\x20\x20\x20\x20\x20@click=\x22selectNone\x22\x0a\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22width:14px;\x20text-align:center;\x20flex-shrink:0;\x22>⊞</span>\x0a\x20\x20\x20\x20\x20\x20<span>Overview</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20:class=\x22selected\x20===\x20\x27__create__\x27\x20?\x20\x27eng-row\x20eng-row--on\x27\x20:\x20\x27eng-row\x27\x22\x0a\x20\x20\x20\x20\x20\x20@click=\x22openCreate\x22\x0a\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22width:14px;\x20text-align:center;\x20flex-shrink:0;\x20color:var(--okdb-accent);\x22>+</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-accent);\x22>Create\x20Engine</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22border-top:1px\x20solid\x20var(--okdb-app-border);\x20margin:0\x200\x204px;\x22></div>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20overflow:auto;\x20min-height:0;\x20padding-right:4px;\x22>\x0a\x20\x20\x20\x20<each\x20:of=\x22typeOrder\x22\x20let:item=\x22t\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasEngines(t)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20opacity:.5;\x20letter-spacing:.06em;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20typeLabel[t]\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:2px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22grouped[t]\x22\x20let:item=\x22eng\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<engine-row-item\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20:label=\x22itemLabel[t]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:label-color=\x22itemColor[t]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:subtitle=\x22eng.status\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action-label=\x22\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:selected=\x22selected\x20===\x20eng.key\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22select($event.detail)\x22\x0a\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\x20\x20<if\x20:=\x22pipeline(eng)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22pipeline-tag\x22\x20:title=\x22\x27pipeline:\x20\x27\x20+\x20pipeline(eng)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20pipeline(eng)\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</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</engine-row-item>\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\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</each>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22engines.length\x20===\x200\x20&&\x20!busy\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:12px;\x22>No\x20engines\x20found.</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','engines','embed-engine-list','meta','2525050rcgdeF','/embeddings/embedders','vector-search','2541913LkPGfF'];_0x1d77=function(){return _0x11df97;};return _0x1d77();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x1404a6=_0x2714;(function(_0x354461,_0x396f65){const _0x4b09cb=_0x2714,_0x239f1e=_0x354461();while(!![]){try{const _0x362822=parseInt(_0x4b09cb(0xb9))/0x1*(-parseInt(_0x4b09cb(0xd6))/0x2)+parseInt(_0x4b09cb(0xa4))/0x3+-parseInt(_0x4b09cb(0x87))/0x4*(-parseInt(_0x4b09cb(0x85))/0x5)+parseInt(_0x4b09cb(0x7e))/0x6*(-parseInt(_0x4b09cb(0xe5))/0x7)+parseInt(_0x4b09cb(0x75))/0x8+-parseInt(_0x4b09cb(0x90))/0x9*(-parseInt(_0x4b09cb(0xc1))/0xa)+-parseInt(_0x4b09cb(0xd0))/0xb;if(_0x362822===_0x396f65)break;else _0x239f1e['push'](_0x239f1e['shift']());}catch(_0x517ffe){_0x239f1e['push'](_0x239f1e['shift']());}}}(_0x5ccd,0x697b4));import _0x433062 from'@toolkit/elements/ok-icon.ok.js';import _0x3d83d1 from'@toolkit/elements/ok-table.ok.js';function _0x5ccd(){const _0xf31a1f=['embeddings:indexer:doc:failed','search','_pipelineUrl','load','vector','indexer','source_key','mode','4137fGJBRN','default','embeddings:indexer:flushed','\x20more]','join','deleted','queueStats','/docs?','var(--okdb-info)','round','4729136VFzrYx','docCounts','now','engine:started','docsStatus','storage_key','embeddings:doc:status_change','m\x20ago','not\x20found','7692fqwmMt','engine',',\x20cleaned\x20up\x20','min','push','all','embedder','3392630ashcYA','partial','4oXKwlM','loadDocs','h\x20ago','\x20doc(s)','</b>\x22?<br><br>Use\x20this\x20when\x20jobs\x20were\x20purged\x20from\x20the\x20queue\x20but\x20docs\x20are\x20stuck\x20as\x20PENDING.','var(--okdb-danger)','modal','Retry\x20failed','var(--okdb-success)','153DGdPqo','Re-enqueue\x20ALL\x20failed\x20AND\x20stuck-pending\x20docs\x20for\x20\x22<b>','/stats','source_env','docsLoadMs','shared','API','retry\x20failed','last_seen_clock','flush\x20failed','success','config','\x20failed)','docs','eng','#9ca3af','Delete\x20\x22','length','\x0a\x20\x20.pill\x20{\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:var(--okdb-app-surface);\x20padding:3px\x2010px;\x20border-radius:999px;\x20font-size:12px;\x20cursor:pointer;\x20}\x0a\x20\x20.pill--on\x20{\x20border-color:var(--okdb-accent);\x20}\x0a','message','640992shEJJe','data','_busy','stringify','Re-enqueued\x20\x22','stats','queue','retried','$watch','_unsubs','Re-enqueued\x20','map','error','head_clock','total_chunks','embed-indexer-panel','failed','name','json','POST','vector_count','24754OWpkVz','var(--okdb-purple)','$ok','status','/flush','Re-enqueue\x20all\x20failed\x20docs\x20for\x20indexer\x20\x22','docsBusy','done','445910riBmfM','application/json','set','toast','\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:title=\x22name\x22\x0a\x20\x20type-label=\x22indexer\x22\x0a\x20\x20type-color=\x22var(--okdb-purple)\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||\x20docsBusy\x20||\x20queueBusy\x20||\x20flushing\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<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:=\x22indexer\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22stack-compact\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\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\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\x20\x20<div\x20class=\x22pill-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Source\x20type\x20being\x20indexed.\x22>{{\x20indexer.source_type\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Source\x20environment.\x22>source\x20env:\x20{{\x20sourceEnvName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Embedder\x20used\x20to\x20create\x20vectors.\x22>embedder:\x20{{\x20embedderName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Storage\x20key\x20for\x20the\x20vector\x20store.\x22>store:\x20{{\x20storageKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20:style=\x22\x27border-color:\x27\x20+\x20(isCaughtUp\x20?\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent)\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-warning)\x2033%,\x20transparent)\x27)\x20+\x20\x27;color:\x27\x20+\x20(isCaughtUp\x20?\x20\x27var(--okdb-success)\x27\x20:\x20\x27var(--okdb-warning)\x27)\x20+\x20\x27;background:\x27\x20+\x20(isCaughtUp\x20?\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent)\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-warning)\x207%,\x20transparent)\x27)\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20isCaughtUp\x20?\x20\x27caught\x20up\x27\x20:\x20\x27processing\x27\x20}}\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</div>\x0a\x20\x20\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\x20\x20\x20Watches\x20<strong>{{\x20indexer.source_type\x20||\x20\x27—\x27\x20}}</strong>\x20and\x20keeps\x20vectors\x20current\x20in\x20<strong>{{\x20storageKey\x20}}</strong>.\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\x20\x20<div\x20class=\x22story-note\x22>Flush\x20to\x20force\x20pending\x20writes\x20through\x20now.\x20Use\x20the\x20document\x20table\x20below\x20to\x20inspect\x20failures,\x20retry\x20queue-backed\x20docs,\x20and\x20inspect\x20stored\x20vectors.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-grid\x20metric-grid--compact\x22\x20style=\x22min-width:min(100%,\x20420px);\x22>\x0a\x20\x20\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\x20\x20<div\x20class=\x22metric-title\x22>Vectors</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20vectorCount.toLocaleString()\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\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Done</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20doneDocs.toLocaleString()\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\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Pending</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(pendingDocs\x20>\x200\x20?\x20\x27var(--okdb-warning)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20pendingDocs.toLocaleString()\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\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\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\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(failedDocs\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20failedDocs.toLocaleString()\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\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\x20\x20<button\x20@click=\x22flush\x22\x20:disabled=\x22flushing\x20||\x20!eng.isRunning\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20flushing\x20?\x20\x27Flushing…\x27\x20:\x20\x27Flush\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Changelog\x20{{\x20indexer.last_seen_clock\x20??\x20\x27—\x27\x20}}\x20/\x20{{\x20indexer.head_clock\x20??\x20\x27—\x27\x20}}\x20·\x20{{\x20clockPct\x20}}%</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22search\x20&&\x20search.count\x20!=\x20null\x20&&\x20search.count\x20!==\x20indexer.vector_count\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22\x20style=\x22color:var(--okdb-warning);\x22\x20title=\x22In-memory\x20index\x20differs\x20from\x20storage\x20—\x20rebuild\x20may\x20be\x20needed\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20search\x20index:\x20{{\x20search.count.toLocaleString()\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</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20height:6px;\x20overflow:hidden;\x22\x20:title=\x22clockPct\x20+\x20\x27%\x20of\x20changelog\x20processed\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22\x27height:100%;\x20border-radius:6px;\x20transition:width\x20.3s;\x20background:\x27\x20+\x20(isCaughtUp\x20?\x20\x27var(--okdb-success)\x27\x20:\x20\x27var(--okdb-accent)\x27)\x20+\x20\x27;\x20width:\x27\x20+\x20clockPct\x20+\x20\x27%\x27\x22></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\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Indexer\x20settings</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x20kv-grid--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>source\x20type</span><span\x20class=\x22kv-val\x22>{{\x20indexer.source_type\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>source\x20env</span><span\x20class=\x22kv-val\x22>{{\x20sourceEnvName\x20}}</span>\x0a\x20\x20\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\x20\x20<span\x20class=\x22kv-key\x22>storage\x20key</span><span\x20class=\x22kv-val\x22>{{\x20storageKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>mode</span><span\x20class=\x22kv-val\x22>{{\x20indexer.mode\x20||\x20\x27inline\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexer.job_type\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>job\x20type</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22\x20style=\x22font-size:11px;font-family:monospace;\x22>{{\x20indexer.job_type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\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<if\x20:=\x22queueMode\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20margin-bottom:10px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Queue</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>job\x20type:\x20<span\x20style=\x22font-family:monospace;\x22>{{\x20indexer.job_type\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadQueueStats\x22\x20:disabled=\x22queueBusy\x22\x20style=\x22margin-left:auto;\x20font-size:11px;\x20padding:2px\x208px;\x20opacity:.7;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22queueStats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:repeat(4,1fr);\x20gap:8px;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22stat-box\x22\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-warning);\x22>{{\x20queueStats.byStatus?.pending\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:10px;\x20opacity:.6;\x20margin-top:2px;\x22>Pending</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\x20\x20<div\x20class=\x22stat-box\x22\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-info);\x22>{{\x20queueStats.byStatus?.running\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:10px;\x20opacity:.6;\x20margin-top:2px;\x22>Running</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\x20\x20<div\x20class=\x22stat-box\x22\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-success);\x22>{{\x20queueStats.byStatus?.done\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:10px;\x20opacity:.6;\x20margin-top:2px;\x22>Done</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\x20\x20<div\x20class=\x22stat-box\x22\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-danger);\x22>{{\x20queueStats.byStatus?.failed\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:10px;\x20opacity:.6;\x20margin-top:2px;\x22>Failed</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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:8px;\x20font-size:11px;\x20opacity:.4;\x20font-style:italic;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Queue\x20tracks\x20individual\x20job\x20attempts.\x20Done\x20jobs\x20are\x20auto-pruned;\x20failed\x20jobs\x20persist\x20until\x20retried.\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\x20\x20<if\x20:=\x22!queueStats\x20&&\x20!queueBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20font-style:italic;\x22>No\x20queue\x20stats\x20for\x20this\x20job\x20type\x20—\x20queue\x20may\x20be\x20idle\x20or\x20feature\x20inactive.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22queueBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x22>Loading…</div>\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</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Doc\x20status\x20table\x20-->\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;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Documents</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(null)\x22\x20\x20\x20\x20\x20\x20\x20:class=\x22docsStatus\x20==\x20null\x20\x20\x20\x20\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>All</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27pending\x27)\x22\x20\x20:class=\x22docsStatus\x20===\x20\x27pending\x27\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Pending</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27done\x27)\x22\x20\x20\x20\x20\x20:class=\x22docsStatus\x20===\x20\x27done\x27\x20\x20\x20\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Done</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27failed\x27)\x22\x20\x20\x20:class=\x22docsStatus\x20===\x20\x27failed\x27\x20\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Failed</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27partial\x27)\x22\x20\x20:class=\x22docsStatus\x20===\x20\x27partial\x27\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Partial</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27deleted\x27)\x22\x20\x20:class=\x22docsStatus\x20===\x20\x27deleted\x27\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Deleted</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadDocs\x22\x20:disabled=\x22docsBusy\x22\x20style=\x22opacity:.8;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexer?.mode\x20===\x20\x27queue\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22retryFailed()\x22\x20:disabled=\x22docsBusy\x22\x0a\x20\x20\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\x20\x20\x20title=\x22Re-enqueue\x20all\x20FAILED\x20docs\x20for\x20this\x20indexer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↺\x20Retry\x20Failed\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22retryStuckPending()\x22\x20:disabled=\x22docsBusy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22color:var(--okdb-app-fg-muted);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-app-fg-muted)\x2027%,\x20transparent);\x20font-size:12px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Re-enqueue\x20FAILED\x20+\x20stuck\x20PENDING\x20docs\x20(use\x20when\x20queue\x20jobs\x20were\x20purged\x20externally)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↺\x20Retry\x20Stuck\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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\x0a\x20\x20\x20\x20<if\x20:=\x22docsError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20docsError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22position:relative;\x20flex:1;\x20min-height:0;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22docsBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:28px;height:28px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<ok-table\x20:data=\x22docs\x22\x20no-scroll\x20style=\x22width:100%;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22130px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Status</header>\x0a\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<span\x20:style=\x22\x27color:\x27\x20+\x20statusColor(row.status)\x20+\x20\x27;\x20font-size:12px;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20row.status\x20}}\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\x20\x20<if\x20:=\x22chunkProgress(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.7;\x20margin-left:4px;\x22>{{\x20chunkProgress(row)\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</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Source\x20Key</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>{{\x20row.source_key\x20}}</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22110px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Updated</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>{{\x20relTime(row.updated)\x20}}</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\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<header>Error</header>\x0a\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<if\x20:=\x22row.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-danger);\x20font-size:11px;\x20opacity:.85;\x22\x20:title=\x22row.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20row.error.slice(0,\x2060)\x20}}{{\x20row.error.length\x20>\x2060\x20?\x20\x27…\x27\x20:\x20\x27\x27\x20}}\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</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22140px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Actions</header>\x0a\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<div\x20style=\x22display:flex;\x20gap:4px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22(row.status\x20===\x20\x27failed\x27\x20||\x20row.status\x20===\x20\x27pending\x27)\x20&&\x20indexer?.mode\x20===\x20\x27queue\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22retryDoc(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22row._busy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2027%,\x20transparent);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Re-enqueue\x20this\x20document\x20for\x20embedding\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>↺\x20Retry</button>\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:=\x22row.status\x20!==\x20\x27deleted\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22markDeleteDoc(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22row._busy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20color:var(--okdb-danger);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Delete</button>\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px;\x20font-size:12px;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>source_key</span>\x20\x20<span\x20class=\x22kv-val\x22>{{\x20row.source_key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>engine_key</span>\x20\x20<span\x20class=\x22kv-val\x22>{{\x20row.engine_key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>mode</span>\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>{{\x20row.mode\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>clock</span>\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>{{\x20row.clock\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>created</span>\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>{{\x20relTime(row.created)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>updated</span>\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>{{\x20relTime(row.updated)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.total_chunks\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>chunks</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-success);\x22>{{\x20row.chunk_done\x20??\x200\x20}}\x20done</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk_failed\x20>\x200\x22><span\x20style=\x22color:var(--okdb-danger);\x22>\x20·\x20{{\x20row.chunk_failed\x20}}\x20failed</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22(row.chunk_pending\x20??\x200)\x20>\x200\x22><span\x20style=\x22color:var(--okdb-warning);\x22>\x20·\x20{{\x20row.chunk_pending\x20}}\x20pending</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x22>\x20/\x20{{\x20row.total_chunks\x20}}\x20total</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\x20\x20<if\x20:=\x22row.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20white-space:pre-wrap;\x22>{{\x20row.error\x20}}</div>\x0a\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<!--\x20Vector\x20viewer\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.status\x20===\x20\x27done\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20margin-top:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22toggleVector(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-purple);\x20border-color:var(--okdb-purple);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22vectorCache[row.source_key]?.busy\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\x20\x20\x20\x20<if\x20:=\x22vectorCache[row.source_key]?.busy\x22>…</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorCache[row.source_key]?.busy\x20&&\x20!vectorCache[row.source_key]?.vector\x20&&\x20!vectorCache[row.source_key]?.error\x22>🔍\x20View\x20Vector</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorCache[row.source_key]?.vector\x20||\x20vectorCache[row.source_key]?.error\x22>✕\x20Hide\x20Vector</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorCache[row.source_key]?.dims\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:11px;\x22>{{\x20vectorCache[row.source_key].dims\x20}}\x20dims</span>\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorCache[row.source_key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:11px;\x22>{{\x20vectorCache[row.source_key].error\x20}}</div>\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<if\x20:=\x22vectorCache[row.source_key]?.vector\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-family:monospace;\x20font-size:11px;\x20word-break:break-all;\x20color:var(--okdb-purple);\x20max-height:80px;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fmtVec(vectorCache[row.source_key].vector)\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</if>\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</expanded>\x0a\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22docs.length\x20===\x200\x20&&\x20!docsBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:13px;\x20padding:12px\x200;\x22>No\x20documents\x20found.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.6;\x20display:flex;\x20gap:12px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Showing\x20{{\x20docs.length\x20}}{{\x20docs.length\x20>=\x20docsLimit\x20?\x20\x27+\x27\x20:\x20\x27\x27\x20}}\x20{{\x20docsStatus\x20||\x20\x27\x27\x20}}\x20docs\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docsLoadMs\x20!==\x20null\x22>\x20in\x20{{\x20docsLoadMs\x20}}ms</if>\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexer?.doc_counts?.total\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x22>Total\x20tracked:\x20{{\x20indexer.doc_counts.total.toLocaleString()\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','chunk_failed','markDelete\x20failed','dims','busy','Deleted',',\x20…\x20+','\x20deleted','Delete\x20failed','engine:stopped','flushing','2854907VAUAqy','/retry','embeddings:indexer:ready','Flush\x20failed','/embeddings/storage/','vectorCache','64qdRVvP','/docs/','s\x20ago','confirm','$attr','/retry-failed','loadQueueStats'];_0x5ccd=function(){return _0xf31a1f;};return _0x5ccd();}import _0x43bccd from'@toolkit/core/ok-overlay.ok.js';import _0x5d5548 from'../../../stores/events-store.js';import _0x85804 from'../../engines/parts/engine-panel-shell.ok.js';function _0x2714(_0x106794,_0x153ce9){_0x106794=_0x106794-0x74;const _0x5ccdfd=_0x5ccd();let _0x27142a=_0x5ccdfd[_0x106794];return _0x27142a;}import{ENGINE_PANEL_SHARED_STYLE as _0x4ef9d6}from'../../engines/engine-panel-shared-style.js';import{buildEmbeddingsPipelineUrl as _0x5d6c5d,dispatchEnginePipelineSelection as _0x446368}from'../../engines/engine-ui-utils.js';const d=_0x4ef9d6+_0x1404a6(0xa2);export default{'tag':_0x1404a6(0xb3),'dependencies':[_0x433062,_0x3d83d1,_0x43bccd,_0x85804],'attr':{'name':{},'engine':{}},'context':_0x5f05f2=>({'busy':!0x1,'flushing':!0x1,'stats':null,'error':null,'docsStatus':null,'docs':[],'docsBusy':!0x1,'docsError':null,'docsLimit':0x32,'docsLoadMs':null,'queueStats':null,'queueBusy':!0x1,get 'eng'(){const _0x38478c=_0x1404a6;return _0x5f05f2[_0x38478c(0xda)][_0x38478c(0x7f)]??{};},get 'name'(){const _0x1c8092=_0x1404a6;return _0x5f05f2[_0x1c8092(0xda)][_0x1c8092(0xb5)];},get '_pipelineUrl'(){const _0xef507a=_0x1404a6;return _0x5d6c5d(this[_0xef507a(0x9e)],this['name']);},get 'indexer'(){const _0x321b82=_0x1404a6;return this[_0x321b82(0xa9)]?.[_0x321b82(0xe2)]??null;},get 'search'(){const _0xe1b460=_0x1404a6;return this[_0xe1b460(0xa9)]?.[_0xe1b460(0xde)]??null;},get 'sourceEnvName'(){const _0x3f034e=_0x1404a6;return this[_0x3f034e(0x9e)]?.[_0x3f034e(0x9b)]?.[_0x3f034e(0x93)]??_0x3f034e(0xe6);},get 'embedderName'(){const _0x28bd6c=_0x1404a6;return this[_0x28bd6c(0xe2)]?.['embedder']||this[_0x28bd6c(0x9e)]?.['config']?.[_0x28bd6c(0x84)]||'—';},get 'storageKey'(){const _0x2ed0da=_0x1404a6;return this[_0x2ed0da(0xe2)]?.[_0x2ed0da(0x7a)]||this[_0x2ed0da(0x9e)]?.['config']?.[_0x2ed0da(0x7a)]||this[_0x2ed0da(0xb5)];},get 'docCounts'(){const _0x10c9e7=_0x1404a6;return this[_0x10c9e7(0xe2)]?.['doc_counts']??null;},get 'queueMode'(){const _0x4232be=_0x1404a6;return'queue'===(this[_0x4232be(0xe2)]?.[_0x4232be(0xe4)]||'inline');},get 'pendingDocs'(){const _0x22d8b8=_0x1404a6;return this[_0x22d8b8(0x76)]?.['pending']??0x0;},get 'failedDocs'(){const _0x40f92e=_0x1404a6;return this[_0x40f92e(0x76)]?.['failed']??0x0;},get 'doneDocs'(){const _0x3cdb76=_0x1404a6;return this[_0x3cdb76(0x76)]?.[_0x3cdb76(0xc0)]??0x0;},get 'vectorCount'(){const _0x184da6=_0x1404a6;return this[_0x184da6(0xe2)]?.[_0x184da6(0xb8)]??0x0;},get 'headerBadges'(){const _0x23123a=_0x1404a6,_0x12846b=[];return this[_0x23123a(0xe2)]?.[_0x23123a(0xe4)]&&_0x12846b[_0x23123a(0x82)]({'text':this['indexer'][_0x23123a(0xe4)],'color':_0x23123a(0xba)}),_0x12846b;},get 'clockPct'(){const _0x3a000a=_0x1404a6,_0x34acd8=this[_0x3a000a(0xe2)]?.[_0x3a000a(0x98)]??0x0,_0x8fb5f=this['indexer']?.['head_clock']??0x0;return _0x8fb5f?Math[_0x3a000a(0x81)](0x64,Math[_0x3a000a(0x74)](_0x34acd8/_0x8fb5f*0x64)):0x0;},get 'isCaughtUp'(){const _0x3ff3bc=_0x1404a6,_0x3196fe=this['indexer']?.[_0x3ff3bc(0x98)]??0x0,_0x2bf499=this[_0x3ff3bc(0xe2)]?.[_0x3ff3bc(0xb1)]??0x0;return _0x2bf499>0x0&&_0x3196fe>=_0x2bf499;},async 'load'(){const _0x1bdc1c=_0x1404a6;this[_0x1bdc1c(0xc9)]=!0x0,this[_0x1bdc1c(0xb0)]=null;try{const _0x4ceb11=await fetch(this['_pipelineUrl']+_0x1bdc1c(0x92)),_0x31171b=await _0x4ceb11[_0x1bdc1c(0xb6)]();if(!_0x4ceb11['ok'])throw new Error(_0x31171b?.[_0x1bdc1c(0xb0)]?.[_0x1bdc1c(0xa3)]||_0x1bdc1c(0xb4));this[_0x1bdc1c(0xa9)]=_0x31171b[_0x1bdc1c(0xa5)];}catch(_0x3efbd1){this['error']=_0x3efbd1?.[_0x1bdc1c(0xa3)]||String(_0x3efbd1),this[_0x1bdc1c(0xa9)]=null;}finally{this[_0x1bdc1c(0xc9)]=!0x1;}},async 'flush'(){const _0xcb50bf=_0x1404a6;this[_0xcb50bf(0xcf)]=!0x0;try{if(!(await fetch(this[_0xcb50bf(0xdf)]+_0xcb50bf(0xbd),{'method':_0xcb50bf(0xb7)}))['ok'])throw new Error(_0xcb50bf(0x99));_0x5f05f2[_0xcb50bf(0xbb)][_0xcb50bf(0x95)]?.[_0xcb50bf(0xc4)]?.[_0xcb50bf(0x9a)]?.('Flushed'),await this[_0xcb50bf(0xe0)](),await this[_0xcb50bf(0x88)]();}catch(_0x2dc75e){_0x5f05f2[_0xcb50bf(0xbb)][_0xcb50bf(0x95)]?.[_0xcb50bf(0xc4)]?.[_0xcb50bf(0xb0)]?.(_0x2dc75e?.['message']||_0xcb50bf(0xd3));}finally{this[_0xcb50bf(0xcf)]=!0x1;}},async 'setDocsStatus'(_0x8a3654){const _0xba593f=_0x1404a6;this[_0xba593f(0x79)]=_0x8a3654,await this[_0xba593f(0x88)]();},async 'onRefresh'(){const _0x30f952=_0x1404a6;await Promise[_0x30f952(0x83)]([this[_0x30f952(0xe0)](),this['loadDocs']()]),_0x30f952(0xaa)===this['indexer']?.[_0x30f952(0xe4)]&&await this[_0x30f952(0xdc)]();},async 'loadDocs'(){const _0x9a3577=_0x1404a6;this['docsBusy']=!0x0,this['docsError']=null;const _0x4fe19c=Date[_0x9a3577(0x77)]();try{const _0x20fc0e=new URLSearchParams({'limit':this['docsLimit']});this['docsStatus']&&_0x20fc0e[_0x9a3577(0xc3)](_0x9a3577(0xbc),this[_0x9a3577(0x79)]);const _0x1e8961=await fetch(this[_0x9a3577(0xdf)]+_0x9a3577(0xec)+_0x20fc0e),_0x237204=await _0x1e8961[_0x9a3577(0xb6)]();if(!_0x1e8961['ok'])throw new Error(_0x237204?.[_0x9a3577(0xb0)]?.[_0x9a3577(0xa3)]||_0x9a3577(0xb4));this[_0x9a3577(0x9d)]=_0x237204[_0x9a3577(0xa5)]||[],this[_0x9a3577(0x94)]=Date[_0x9a3577(0x77)]()-_0x4fe19c;}catch(_0x4810f4){this['docsError']=_0x4810f4?.['message']||String(_0x4810f4),this[_0x9a3577(0x9d)]=[],this[_0x9a3577(0x94)]=null;}finally{this[_0x9a3577(0xbf)]=!0x1;}},async 'loadQueueStats'(){const _0x51a0ab=_0x1404a6;_0x51a0ab(0xaa)===this['indexer']?.['mode']&&(this[_0x51a0ab(0xeb)]=this['stats']?.[_0x51a0ab(0xaa)]??null);},async 'markDeleteDoc'(_0x102226){const _0x275b2f=_0x1404a6;if(await _0x5f05f2[_0x275b2f(0xbb)][_0x275b2f(0x95)][_0x275b2f(0x8d)][_0x275b2f(0xd9)](_0x275b2f(0xa0)+_0x102226['source_key']+'\x22?')){_0x102226[_0x275b2f(0xa6)]=!0x0;try{if(!(await fetch(this[_0x275b2f(0xdf)]+_0x275b2f(0xd7)+encodeURIComponent(_0x102226['source_key'])+'/markDelete',{'method':_0x275b2f(0xb7),'headers':{'Content-Type':_0x275b2f(0xc2)},'body':JSON['stringify']({'clock':null})}))['ok'])throw new Error(_0x275b2f(0xc7));_0x5f05f2[_0x275b2f(0xbb)][_0x275b2f(0x95)]?.[_0x275b2f(0xc4)]?.['info']?.(_0x275b2f(0xca)),await this[_0x275b2f(0x88)]();}catch(_0x1fa194){_0x5f05f2[_0x275b2f(0xbb)][_0x275b2f(0x95)]?.[_0x275b2f(0xc4)]?.[_0x275b2f(0xb0)]?.(_0x1fa194?.[_0x275b2f(0xa3)]||_0x275b2f(0xcd));}finally{_0x102226[_0x275b2f(0xa6)]=!0x1;}}},async 'retryDoc'(_0x495067){const _0x274ed3=_0x1404a6;_0x495067['_busy']=!0x0;try{const _0x4eddfb=await fetch(this[_0x274ed3(0xdf)]+_0x274ed3(0xd7)+encodeURIComponent(_0x495067[_0x274ed3(0xe3)])+_0x274ed3(0xd1),{'method':_0x274ed3(0xb7)}),_0x58660c=await _0x4eddfb[_0x274ed3(0xb6)]();if(!_0x4eddfb['ok'])throw new Error(_0x58660c?.['error']?.['message']||_0x274ed3(0x97));_0x5f05f2[_0x274ed3(0xbb)][_0x274ed3(0x95)]?.[_0x274ed3(0xc4)]?.[_0x274ed3(0x9a)]?.(_0x274ed3(0xa8)+_0x495067[_0x274ed3(0xe3)]+'\x22'),await this[_0x274ed3(0x88)]();}catch(_0x1fb4c0){_0x5f05f2[_0x274ed3(0xbb)][_0x274ed3(0x95)]?.[_0x274ed3(0xc4)]?.[_0x274ed3(0xb0)]?.(_0x1fb4c0?.[_0x274ed3(0xa3)]||_0x274ed3(0x8e));}finally{_0x495067[_0x274ed3(0xa6)]=!0x1;}},async 'retryFailed'(){const _0x5b28cd=_0x1404a6;if(await _0x5f05f2[_0x5b28cd(0xbb)][_0x5b28cd(0x95)][_0x5b28cd(0x8d)]['confirm'](_0x5b28cd(0xbe)+this[_0x5b28cd(0xb5)]+'\x22?')){this[_0x5b28cd(0xbf)]=!0x0;try{const _0x340ede=await fetch(this[_0x5b28cd(0xdf)]+_0x5b28cd(0xdb),{'method':_0x5b28cd(0xb7),'headers':{'Content-Type':_0x5b28cd(0xc2)},'body':JSON[_0x5b28cd(0xa7)]({'limit':0x1388,'includeStuckPending':!0x1})}),_0x56d058=await _0x340ede[_0x5b28cd(0xb6)]();if(!_0x340ede['ok'])throw new Error(_0x56d058?.[_0x5b28cd(0xb0)]?.['message']||_0x5b28cd(0xb4));const _0x27a3e8=_0x56d058[_0x5b28cd(0xa5)];_0x5f05f2[_0x5b28cd(0xbb)][_0x5b28cd(0x95)]?.[_0x5b28cd(0xc4)]?.[_0x5b28cd(0x9a)]?.('Re-enqueued\x20'+_0x27a3e8[_0x5b28cd(0xab)]+_0x5b28cd(0x8a)+(_0x27a3e8[_0x5b28cd(0xea)]?_0x5b28cd(0x80)+_0x27a3e8['deleted']+_0x5b28cd(0xcc):'')),await Promise['all']([this['load'](),this[_0x5b28cd(0x88)]()]);}catch(_0x4747fa){_0x5f05f2[_0x5b28cd(0xbb)][_0x5b28cd(0x95)]?.[_0x5b28cd(0xc4)]?.[_0x5b28cd(0xb0)]?.(_0x4747fa?.[_0x5b28cd(0xa3)]||'Retry\x20failed');}finally{this[_0x5b28cd(0xbf)]=!0x1;}}},async 'retryStuckPending'(){const _0x5e7ac7=_0x1404a6;if(await _0x5f05f2['$ok'][_0x5e7ac7(0x95)][_0x5e7ac7(0x8d)]['confirm'](_0x5e7ac7(0x91)+this[_0x5e7ac7(0xb5)]+_0x5e7ac7(0x8b))){this[_0x5e7ac7(0xbf)]=!0x0;try{const _0x411222=await fetch(this[_0x5e7ac7(0xdf)]+_0x5e7ac7(0xdb),{'method':_0x5e7ac7(0xb7),'headers':{'Content-Type':_0x5e7ac7(0xc2)},'body':JSON[_0x5e7ac7(0xa7)]({'limit':0x1388,'includeStuckPending':!0x0})}),_0x4979f0=await _0x411222[_0x5e7ac7(0xb6)]();if(!_0x411222['ok'])throw new Error(_0x4979f0?.['error']?.[_0x5e7ac7(0xa3)]||_0x5e7ac7(0xb4));const _0x5f2790=_0x4979f0['data'];_0x5f05f2['$ok'][_0x5e7ac7(0x95)]?.[_0x5e7ac7(0xc4)]?.[_0x5e7ac7(0x9a)]?.(_0x5e7ac7(0xae)+_0x5f2790['retried']+'\x20doc(s)'+(_0x5f2790[_0x5e7ac7(0xea)]?_0x5e7ac7(0x80)+_0x5f2790[_0x5e7ac7(0xea)]+'\x20deleted':'')),await Promise['all']([this[_0x5e7ac7(0xe0)](),this[_0x5e7ac7(0x88)]()]);}catch(_0x9f0bac){_0x5f05f2[_0x5e7ac7(0xbb)]['shared']?.[_0x5e7ac7(0xc4)]?.[_0x5e7ac7(0xb0)]?.(_0x9f0bac?.[_0x5e7ac7(0xa3)]||'Retry\x20failed');}finally{this[_0x5e7ac7(0xbf)]=!0x1;}}},'statusColor':_0x203141=>({'done':_0x1404a6(0x8f),'failed':_0x1404a6(0x8c),'deleted':_0x1404a6(0x9f),'pending':'var(--okdb-warning)','running':_0x1404a6(0xed),'partial':'var(--okdb-orange)'}[_0x203141]||_0x1404a6(0x9f)),'chunkProgress'(_0x5289dd){const _0x35f766=_0x1404a6;if(!(_0x5289dd[_0x35f766(0xb2)]>0x0))return null;const _0x498600=_0x5289dd['chunk_done']??0x0,_0x272062=_0x5289dd[_0x35f766(0xb2)],_0xb655b7=_0x5289dd[_0x35f766(0xc6)]??0x0;return _0x35f766(0x86)===_0x5289dd[_0x35f766(0xbc)]&&_0xb655b7>0x0?_0x498600+'/'+_0x272062+'\x20('+_0xb655b7+_0x35f766(0x9c):_0x498600+'/'+_0x272062;},'relTime'(_0x5f3889){const _0x58ee41=_0x1404a6;if(!_0x5f3889)return'—';const _0x4dbe9b=Date['now']()-_0x5f3889;return _0x4dbe9b<0x1388?'just\x20now':_0x4dbe9b<0xea60?Math[_0x58ee41(0x74)](_0x4dbe9b/0x3e8)+_0x58ee41(0xd8):_0x4dbe9b<0x36ee80?Math[_0x58ee41(0x74)](_0x4dbe9b/0xea60)+_0x58ee41(0x7c):Math[_0x58ee41(0x74)](_0x4dbe9b/0x36ee80)+_0x58ee41(0x89);},'vectorCache':{},async 'fetchVector'(_0x55b4f1){const _0x366899=_0x1404a6,_0x11afc3=_0x55b4f1[_0x366899(0xe3)];if(!this[_0x366899(0xd5)][_0x11afc3]?.[_0x366899(0xe1)]&&!this[_0x366899(0xd5)][_0x11afc3]?.[_0x366899(0xc9)]){this[_0x366899(0xd5)][_0x11afc3]={'busy':!0x0,'error':null,'vector':null,'dims':null};try{const _0x41d1ff=this['indexer']?.[_0x366899(0x7a)]||this[_0x366899(0xb5)],_0x5d2b44=await fetch(__ENV__[_0x366899(0x96)]+_0x366899(0xd4)+encodeURIComponent(_0x41d1ff)+'/'+encodeURIComponent(_0x11afc3)),_0x54484b=await _0x5d2b44['json']();if(!_0x5d2b44['ok'])throw new Error(_0x54484b?.['error']?.[_0x366899(0xa3)]||_0x366899(0x7d));this[_0x366899(0xd5)][_0x11afc3]={'busy':!0x1,'error':null,'dims':_0x54484b[_0x366899(0xa5)][_0x366899(0xc8)],'vector':_0x54484b[_0x366899(0xa5)][_0x366899(0xe1)]};}catch(_0x4f0be6){this['vectorCache'][_0x11afc3]={'busy':!0x1,'error':_0x4f0be6?.['message']||String(_0x4f0be6),'vector':null,'dims':null};}}},'toggleVector'(_0x1781e2){const _0x4b8f2f=_0x1404a6,_0x5933b4=_0x1781e2[_0x4b8f2f(0xe3)];this['vectorCache'][_0x5933b4]?.[_0x4b8f2f(0xe1)]||this[_0x4b8f2f(0xd5)][_0x5933b4]?.[_0x4b8f2f(0xb0)]?delete this[_0x4b8f2f(0xd5)][_0x5933b4]:this['fetchVector'](_0x1781e2);},'fmtVec'(_0x4b0a5b){const _0x34fdf0=_0x1404a6;if(!_0x4b0a5b)return'';const _0xa4d72c=_0x4b0a5b['slice'](0x0,0xc)[_0x34fdf0(0xaf)](_0x4419a4=>_0x4419a4['toFixed'](0x4))[_0x34fdf0(0xe9)](',\x20');return _0x4b0a5b[_0x34fdf0(0xa1)]>0xc?'['+_0xa4d72c+_0x34fdf0(0xcb)+(_0x4b0a5b['length']-0xc)+_0x34fdf0(0xe8):'['+_0xa4d72c+']';},'viewPipeline'(){const _0x2479cb=_0x1404a6;_0x446368(_0x5f05f2,this[_0x2479cb(0x9e)]);},'_unsubs':[]}),async 'init'(_0x4133ca){const _0x42e25a=_0x1404a6;_0x4133ca[_0x42e25a(0xac)](()=>_0x4133ca[_0x42e25a(0xda)][_0x42e25a(0xb5)],async()=>{const _0x58a343=_0x42e25a;this[_0x58a343(0xa9)]=null,this[_0x58a343(0x9d)]=[],this[_0x58a343(0xeb)]=null,await Promise['all']([this[_0x58a343(0xe0)](),this['loadDocs']()]),_0x58a343(0xaa)===this['indexer']?.[_0x58a343(0xe4)]&&await this[_0x58a343(0xdc)]();}),await Promise[_0x42e25a(0x83)]([this['load'](),this[_0x42e25a(0x88)]()]),'queue'===this[_0x42e25a(0xe2)]?.[_0x42e25a(0xe4)]&&await this[_0x42e25a(0xdc)]();},'mount'(){const _0x1a404b=_0x1404a6,_0x5a7a1a=()=>this[_0x1a404b(0xb5)],_0x4e8ad9=_0x321c37=>{const _0x3d72bf=_0x1a404b;_0x321c37?.['engine']&&_0x321c37[_0x3d72bf(0x7f)]!==_0x5a7a1a()||this[_0x3d72bf(0xe0)]();},_0x52d2d7=_0x46af0e=>{const _0x28cea1=_0x1a404b;_0x46af0e?.[_0x28cea1(0x7f)]&&_0x46af0e[_0x28cea1(0x7f)]!==_0x5a7a1a()||this['loadDocs']();};this[_0x1a404b(0xad)]=[_0x5d5548['on'](_0x1a404b(0xd2),_0x4e8ad9),_0x5d5548['on'](_0x1a404b(0xe7),_0x4e8ad9),_0x5d5548['on'](_0x1a404b(0x78),_0x4e8ad9),_0x5d5548['on'](_0x1a404b(0xce),_0x4e8ad9),_0x5d5548['on']('engine:error',_0x4e8ad9),_0x5d5548['on']('embeddings:indexer:doc:done',_0x52d2d7),_0x5d5548['on'](_0x1a404b(0xdd),_0x52d2d7),_0x5d5548['on'](_0x1a404b(0x7b),_0x52d2d7)];},'unmount'(){const _0x2eda02=_0x1404a6;for(const _0x4ec963 of this[_0x2eda02(0xad)])_0x4ec963();this[_0x2eda02(0xad)]=[];},'template':_0x1404a6(0xc5),'style':d};
|
|
1
|
+
function _0x46e0(){const _0x14476a=['docsError','flushing','storage_key','$attr','status','/retry-failed','s\x20ago','markDelete\x20failed','join','retried','docsLoadMs','10ZzYwXu','\x20doc(s)','_pipelineUrl','chunk_failed','27ZqlBgs','21liatoT','dims','/flush','Flushed','\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:title=\x22name\x22\x0a\x20\x20type-label=\x22indexer\x22\x0a\x20\x20type-color=\x22var(--okdb-purple)\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||\x20docsBusy\x20||\x20queueBusy\x20||\x20flushing\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<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:=\x22indexer\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22stack-compact\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\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\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\x20\x20<div\x20class=\x22pill-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Source\x20type\x20being\x20indexed.\x22>{{\x20indexer.source_type\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Source\x20environment.\x22>source\x20env:\x20{{\x20sourceEnvName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Embedder\x20used\x20to\x20create\x20vectors.\x22>embedder:\x20{{\x20embedderName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Storage\x20key\x20for\x20the\x20vector\x20store.\x22>store:\x20{{\x20storageKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20:style=\x22\x27border-color:\x27\x20+\x20(isCaughtUp\x20?\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent)\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-warning)\x2033%,\x20transparent)\x27)\x20+\x20\x27;color:\x27\x20+\x20(isCaughtUp\x20?\x20\x27var(--okdb-success)\x27\x20:\x20\x27var(--okdb-warning)\x27)\x20+\x20\x27;background:\x27\x20+\x20(isCaughtUp\x20?\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent)\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-warning)\x207%,\x20transparent)\x27)\x20+\x20\x27;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20isCaughtUp\x20?\x20\x27caught\x20up\x27\x20:\x20\x27processing\x27\x20}}\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</div>\x0a\x20\x20\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\x20\x20\x20Watches\x20<strong>{{\x20indexer.source_type\x20||\x20\x27—\x27\x20}}</strong>\x20and\x20keeps\x20vectors\x20current\x20in\x20<strong>{{\x20storageKey\x20}}</strong>.\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\x20\x20<div\x20class=\x22story-note\x22>Flush\x20to\x20force\x20pending\x20writes\x20through\x20now.\x20Use\x20the\x20document\x20table\x20below\x20to\x20inspect\x20failures,\x20retry\x20queue-backed\x20docs,\x20and\x20inspect\x20stored\x20vectors.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-grid\x20metric-grid--compact\x22\x20style=\x22min-width:min(100%,\x20420px);\x22>\x0a\x20\x20\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\x20\x20<div\x20class=\x22metric-title\x22>Vectors</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20vectorCount.toLocaleString()\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\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Done</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20doneDocs.toLocaleString()\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\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Pending</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(pendingDocs\x20>\x200\x20?\x20\x27var(--okdb-warning)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20pendingDocs.toLocaleString()\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\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\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\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(failedDocs\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20failedDocs.toLocaleString()\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\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\x20\x20<button\x20@click=\x22flush\x22\x20:disabled=\x22flushing\x20||\x20!eng.isRunning\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20flushing\x20?\x20\x27Flushing…\x27\x20:\x20\x27Flush\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Changelog\x20{{\x20indexer.last_seen_clock\x20??\x20\x27—\x27\x20}}\x20/\x20{{\x20indexer.head_clock\x20??\x20\x27—\x27\x20}}\x20·\x20{{\x20clockPct\x20}}%</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22search\x20&&\x20search.count\x20!=\x20null\x20&&\x20search.count\x20!==\x20indexer.vector_count\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22\x20style=\x22color:var(--okdb-warning);\x22\x20title=\x22In-memory\x20index\x20differs\x20from\x20storage\x20—\x20rebuild\x20may\x20be\x20needed\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20search\x20index:\x20{{\x20search.count.toLocaleString()\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</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20height:6px;\x20overflow:hidden;\x22\x20:title=\x22clockPct\x20+\x20\x27%\x20of\x20changelog\x20processed\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22\x27height:100%;\x20border-radius:6px;\x20transition:width\x20.3s;\x20background:\x27\x20+\x20(isCaughtUp\x20?\x20\x27var(--okdb-success)\x27\x20:\x20\x27var(--okdb-accent)\x27)\x20+\x20\x27;\x20width:\x27\x20+\x20clockPct\x20+\x20\x27%\x27\x22></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\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Indexer\x20settings</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x20kv-grid--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>source\x20type</span><span\x20class=\x22kv-val\x22>{{\x20indexer.source_type\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>source\x20env</span><span\x20class=\x22kv-val\x22>{{\x20sourceEnvName\x20}}</span>\x0a\x20\x20\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\x20\x20<span\x20class=\x22kv-key\x22>storage\x20key</span><span\x20class=\x22kv-val\x22>{{\x20storageKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>mode</span><span\x20class=\x22kv-val\x22>{{\x20indexer.mode\x20||\x20\x27inline\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexer.job_type\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>job\x20type</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22\x20style=\x22font-size:11px;font-family:monospace;\x22>{{\x20indexer.job_type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\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<if\x20:=\x22queueMode\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20margin-bottom:10px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Queue</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>job\x20type:\x20<span\x20style=\x22font-family:monospace;\x22>{{\x20indexer.job_type\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadQueueStats\x22\x20:disabled=\x22queueBusy\x22\x20style=\x22margin-left:auto;\x20font-size:11px;\x20padding:2px\x208px;\x20opacity:.7;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22queueStats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:repeat(4,1fr);\x20gap:8px;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22stat-box\x22\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-warning);\x22>{{\x20queueStats.byStatus?.pending\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:10px;\x20opacity:.6;\x20margin-top:2px;\x22>Pending</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\x20\x20<div\x20class=\x22stat-box\x22\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-info);\x22>{{\x20queueStats.byStatus?.running\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:10px;\x20opacity:.6;\x20margin-top:2px;\x22>Running</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\x20\x20<div\x20class=\x22stat-box\x22\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-success);\x22>{{\x20queueStats.byStatus?.done\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:10px;\x20opacity:.6;\x20margin-top:2px;\x22>Done</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\x20\x20<div\x20class=\x22stat-box\x22\x20style=\x22background:var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-danger);\x22>{{\x20queueStats.byStatus?.failed\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:10px;\x20opacity:.6;\x20margin-top:2px;\x22>Failed</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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:8px;\x20font-size:11px;\x20opacity:.4;\x20font-style:italic;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Queue\x20tracks\x20individual\x20job\x20attempts.\x20Done\x20jobs\x20are\x20auto-pruned;\x20failed\x20jobs\x20persist\x20until\x20retried.\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\x20\x20<if\x20:=\x22!queueStats\x20&&\x20!queueBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20font-style:italic;\x22>No\x20queue\x20stats\x20for\x20this\x20job\x20type\x20—\x20queue\x20may\x20be\x20idle\x20or\x20feature\x20inactive.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22queueBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x22>Loading…</div>\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</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Doc\x20status\x20table\x20-->\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;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Documents</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(null)\x22\x20\x20\x20\x20\x20\x20\x20:class=\x22docsStatus\x20==\x20null\x20\x20\x20\x20\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>All</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27pending\x27)\x22\x20\x20:class=\x22docsStatus\x20===\x20\x27pending\x27\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Pending</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27done\x27)\x22\x20\x20\x20\x20\x20:class=\x22docsStatus\x20===\x20\x27done\x27\x20\x20\x20\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Done</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27failed\x27)\x22\x20\x20\x20:class=\x22docsStatus\x20===\x20\x27failed\x27\x20\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Failed</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27partial\x27)\x22\x20\x20:class=\x22docsStatus\x20===\x20\x27partial\x27\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Partial</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDocsStatus(\x27deleted\x27)\x22\x20\x20:class=\x22docsStatus\x20===\x20\x27deleted\x27\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>Deleted</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadDocs\x22\x20:disabled=\x22docsBusy\x22\x20style=\x22opacity:.8;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexer?.mode\x20===\x20\x27queue\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22retryFailed()\x22\x20:disabled=\x22docsBusy\x22\x0a\x20\x20\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\x20\x20\x20title=\x22Re-enqueue\x20all\x20FAILED\x20docs\x20for\x20this\x20indexer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↺\x20Retry\x20Failed\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22retryStuckPending()\x22\x20:disabled=\x22docsBusy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22color:var(--okdb-app-fg-muted);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-app-fg-muted)\x2027%,\x20transparent);\x20font-size:12px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Re-enqueue\x20FAILED\x20+\x20stuck\x20PENDING\x20docs\x20(use\x20when\x20queue\x20jobs\x20were\x20purged\x20externally)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↺\x20Retry\x20Stuck\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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\x0a\x20\x20\x20\x20<if\x20:=\x22docsError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20docsError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22position:relative;\x20flex:1;\x20min-height:0;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22docsBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:28px;height:28px;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<ok-table\x20:data=\x22docs\x22\x20no-scroll\x20style=\x22width:100%;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22130px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Status</header>\x0a\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<span\x20:style=\x22\x27color:\x27\x20+\x20statusColor(row.status)\x20+\x20\x27;\x20font-size:12px;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20row.status\x20}}\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\x20\x20<if\x20:=\x22chunkProgress(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.7;\x20margin-left:4px;\x22>{{\x20chunkProgress(row)\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</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Source\x20Key</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>{{\x20row.source_key\x20}}</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22110px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Updated</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>{{\x20relTime(row.updated)\x20}}</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\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<header>Error</header>\x0a\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<if\x20:=\x22row.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-danger);\x20font-size:11px;\x20opacity:.85;\x22\x20:title=\x22row.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20row.error.slice(0,\x2060)\x20}}{{\x20row.error.length\x20>\x2060\x20?\x20\x27…\x27\x20:\x20\x27\x27\x20}}\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</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22140px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Actions</header>\x0a\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<div\x20style=\x22display:flex;\x20gap:4px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22(row.status\x20===\x20\x27failed\x27\x20||\x20row.status\x20===\x20\x27pending\x27)\x20&&\x20indexer?.mode\x20===\x20\x27queue\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22retryDoc(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22row._busy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2027%,\x20transparent);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Re-enqueue\x20this\x20document\x20for\x20embedding\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>↺\x20Retry</button>\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:=\x22row.status\x20!==\x20\x27deleted\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22markDeleteDoc(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22row._busy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x208px;\x20color:var(--okdb-danger);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Delete</button>\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px;\x20font-size:12px;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>source_key</span>\x20\x20<span\x20class=\x22kv-val\x22>{{\x20row.source_key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>engine_key</span>\x20\x20<span\x20class=\x22kv-val\x22>{{\x20row.engine_key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>mode</span>\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>{{\x20row.mode\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>clock</span>\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>{{\x20row.clock\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>created</span>\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>{{\x20relTime(row.created)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>updated</span>\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>{{\x20relTime(row.updated)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.total_chunks\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>chunks</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-success);\x22>{{\x20row.chunk_done\x20??\x200\x20}}\x20done</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk_failed\x20>\x200\x22><span\x20style=\x22color:var(--okdb-danger);\x22>\x20·\x20{{\x20row.chunk_failed\x20}}\x20failed</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22(row.chunk_pending\x20??\x200)\x20>\x200\x22><span\x20style=\x22color:var(--okdb-warning);\x22>\x20·\x20{{\x20row.chunk_pending\x20}}\x20pending</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x22>\x20/\x20{{\x20row.total_chunks\x20}}\x20total</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\x20\x20<if\x20:=\x22row.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20white-space:pre-wrap;\x22>{{\x20row.error\x20}}</div>\x0a\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<!--\x20Vector\x20viewer\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.status\x20===\x20\x27done\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20margin-top:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22toggleVector(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-purple);\x20border-color:var(--okdb-purple);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22vectorCache[row.source_key]?.busy\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\x20\x20\x20\x20<if\x20:=\x22vectorCache[row.source_key]?.busy\x22>…</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorCache[row.source_key]?.busy\x20&&\x20!vectorCache[row.source_key]?.vector\x20&&\x20!vectorCache[row.source_key]?.error\x22>🔍\x20View\x20Vector</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorCache[row.source_key]?.vector\x20||\x20vectorCache[row.source_key]?.error\x22>✕\x20Hide\x20Vector</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorCache[row.source_key]?.dims\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x20font-size:11px;\x22>{{\x20vectorCache[row.source_key].dims\x20}}\x20dims</span>\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorCache[row.source_key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:11px;\x22>{{\x20vectorCache[row.source_key].error\x20}}</div>\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<if\x20:=\x22vectorCache[row.source_key]?.vector\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-family:monospace;\x20font-size:11px;\x20word-break:break-all;\x20color:var(--okdb-purple);\x20max-height:80px;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fmtVec(vectorCache[row.source_key].vector)\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</if>\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</expanded>\x0a\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22docs.length\x20===\x200\x20&&\x20!docsBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:13px;\x20padding:12px\x200;\x22>No\x20documents\x20found.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.6;\x20display:flex;\x20gap:12px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Showing\x20{{\x20docs.length\x20}}{{\x20docs.length\x20>=\x20docsLimit\x20?\x20\x27+\x27\x20:\x20\x27\x27\x20}}\x20{{\x20docsStatus\x20||\x20\x27\x27\x20}}\x20docs\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docsLoadMs\x20!==\x20null\x22>\x20in\x20{{\x20docsLoadMs\x20}}ms</if>\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexer?.doc_counts?.total\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.7;\x22>Total\x20tracked:\x20{{\x20indexer.doc_counts.total.toLocaleString()\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','1112628ewzyid','now','#9ca3af','min','engine:error','791216rqjjPx','queue','docsBusy','embeddings:indexer:ready','embeddings:doc:status_change','engine:stopped','confirm','queueStats','set','message','var(--okdb-orange)','/markDelete','4784835EidoiS','108408HemAdw','toast','Re-enqueued\x20','error','length','name','vectorCache','mode','last_seen_clock','\x20deleted','application/json','2724795zwjvJy','head_clock','embeddings:indexer:doc:failed','source_env','source_key','search','doc_counts','load','inline','done','stats','data','Re-enqueued\x20\x22','chunk_done','indexer','loadDocs','$ok','/stats','engine:started','var(--okdb-info)','_busy','docsLimit','embeddings:indexer:doc:done','json','pending','_unsubs','shared','$watch','just\x20now','loadQueueStats','2PhJFGs','embed-indexer-panel','var(--okdb-warning)','\x20failed)','</b>\x22?<br><br>Use\x20this\x20when\x20jobs\x20were\x20purged\x20from\x20the\x20queue\x20but\x20docs\x20are\x20stuck\x20as\x20PENDING.','stringify','/docs/','API','round','571836aFdiAb','push','not\x20found','docCounts','deleted','all','Delete\x20\x22','flush\x20failed','POST','/docs?','modal','failed','slice','fetchVector','/retry','Retry\x20failed','var(--okdb-purple)','total_chunks','Flush\x20failed','busy','engine','info','docsStatus','docs','map','600120nrwbBc','config',',\x20…\x20+','Delete\x20failed','eng','vector','success'];_0x46e0=function(){return _0x14476a;};return _0x46e0();}function _0x33fc(_0x45aa82,_0x1e1316){_0x45aa82=_0x45aa82-0x10b;const _0x46e0f2=_0x46e0();let _0x33fcf8=_0x46e0f2[_0x45aa82];return _0x33fcf8;}const _0x1d367c=_0x33fc;(function(_0x449b7c,_0x651954){const _0x2c5b43=_0x33fc,_0x72fe8=_0x449b7c();while(!![]){try{const _0x5eb1db=-parseInt(_0x2c5b43(0x15c))/0x1*(-parseInt(_0x2c5b43(0x133))/0x2)+-parseInt(_0x2c5b43(0x121))/0x3+parseInt(_0x2c5b43(0x17e))/0x4+-parseInt(_0x2c5b43(0x13e))/0x5+-parseInt(_0x2c5b43(0x165))/0x6*(-parseInt(_0x2c5b43(0x11c))/0x7)+parseInt(_0x2c5b43(0x126))/0x8*(parseInt(_0x2c5b43(0x11b))/0x9)+parseInt(_0x2c5b43(0x117))/0xa*(parseInt(_0x2c5b43(0x132))/0xb);if(_0x5eb1db===_0x651954)break;else _0x72fe8['push'](_0x72fe8['shift']());}catch(_0x3f8b56){_0x72fe8['push'](_0x72fe8['shift']());}}}(_0x46e0,0x57f14));import _0x532db3 from'@toolkit/elements/ok-icon.ok.js';import _0x273b64 from'@toolkit/elements/ok-table.ok.js';import _0xa8b9df from'@toolkit/core/ok-overlay.ok.js';import _0x5b4fdb from'../../../stores/events-store.js';import _0x27268f from'../../engines/parts/engine-panel-shell.ok.js';import{ENGINE_PANEL_SHARED_STYLE as _0x23ade1}from'../../engines/engine-panel-shared-style.js';import{buildEmbeddingsPipelineUrl as _0x484e00,dispatchEnginePipelineSelection as _0x4694c9}from'../../engines/engine-ui-utils.js';const d=_0x23ade1+'\x0a\x20\x20.pill\x20{\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:var(--okdb-app-surface);\x20padding:3px\x2010px;\x20border-radius:999px;\x20font-size:12px;\x20cursor:pointer;\x20}\x0a\x20\x20.pill--on\x20{\x20border-color:var(--okdb-accent);\x20}\x0a';export default{'tag':_0x1d367c(0x15d),'dependencies':[_0x532db3,_0x273b64,_0xa8b9df,_0x27268f],'attr':{'name':{},'engine':{}},'context':_0x7bf357=>({'busy':!0x1,'flushing':!0x1,'stats':null,'error':null,'docsStatus':null,'docs':[],'docsBusy':!0x1,'docsError':null,'docsLimit':0x32,'docsLoadMs':null,'queueStats':null,'queueBusy':!0x1,get 'eng'(){const _0x37e5aa=_0x1d367c;return _0x7bf357[_0x37e5aa(0x10f)][_0x37e5aa(0x179)]??{};},get 'name'(){const _0x51d0d9=_0x1d367c;return _0x7bf357[_0x51d0d9(0x10f)][_0x51d0d9(0x138)];},get '_pipelineUrl'(){const _0x45d411=_0x1d367c;return _0x484e00(this[_0x45d411(0x182)],this[_0x45d411(0x138)]);},get 'indexer'(){const _0x1a0af7=_0x1d367c;return this[_0x1a0af7(0x148)]?.['indexer']??null;},get 'search'(){const _0x5e863f=_0x1d367c;return this[_0x5e863f(0x148)]?.[_0x5e863f(0x143)]??null;},get 'sourceEnvName'(){const _0x38a2f1=_0x1d367c;return this[_0x38a2f1(0x182)]?.[_0x38a2f1(0x17f)]?.[_0x38a2f1(0x141)]??'default';},get 'embedderName'(){const _0x2acb92=_0x1d367c;return this['indexer']?.['embedder']||this[_0x2acb92(0x182)]?.[_0x2acb92(0x17f)]?.['embedder']||'—';},get 'storageKey'(){const _0xf1fd49=_0x1d367c;return this[_0xf1fd49(0x14c)]?.['storage_key']||this['eng']?.[_0xf1fd49(0x17f)]?.[_0xf1fd49(0x10e)]||this[_0xf1fd49(0x138)];},get 'docCounts'(){const _0x364ae=_0x1d367c;return this[_0x364ae(0x14c)]?.[_0x364ae(0x144)]??null;},get 'queueMode'(){const _0x57c1f4=_0x1d367c;return _0x57c1f4(0x127)===(this['indexer']?.[_0x57c1f4(0x13a)]||_0x57c1f4(0x146));},get 'pendingDocs'(){const _0x7e7665=_0x1d367c;return this['docCounts']?.[_0x7e7665(0x156)]??0x0;},get 'failedDocs'(){const _0x3c7123=_0x1d367c;return this[_0x3c7123(0x168)]?.[_0x3c7123(0x170)]??0x0;},get 'doneDocs'(){const _0x1ef524=_0x1d367c;return this[_0x1ef524(0x168)]?.[_0x1ef524(0x147)]??0x0;},get 'vectorCount'(){return this['indexer']?.['vector_count']??0x0;},get 'headerBadges'(){const _0x405ca8=_0x1d367c,_0x55fdea=[];return this['indexer']?.['mode']&&_0x55fdea[_0x405ca8(0x166)]({'text':this[_0x405ca8(0x14c)][_0x405ca8(0x13a)],'color':_0x405ca8(0x175)}),_0x55fdea;},get 'clockPct'(){const _0x11a0e8=_0x1d367c,_0x4a0d8b=this[_0x11a0e8(0x14c)]?.[_0x11a0e8(0x13b)]??0x0,_0x4a0c03=this[_0x11a0e8(0x14c)]?.[_0x11a0e8(0x13f)]??0x0;return _0x4a0c03?Math[_0x11a0e8(0x124)](0x64,Math[_0x11a0e8(0x164)](_0x4a0d8b/_0x4a0c03*0x64)):0x0;},get 'isCaughtUp'(){const _0x461a3c=_0x1d367c,_0xc06cd2=this[_0x461a3c(0x14c)]?.[_0x461a3c(0x13b)]??0x0,_0x589376=this[_0x461a3c(0x14c)]?.[_0x461a3c(0x13f)]??0x0;return _0x589376>0x0&&_0xc06cd2>=_0x589376;},async 'load'(){const _0x5212dd=_0x1d367c;this[_0x5212dd(0x178)]=!0x0,this[_0x5212dd(0x136)]=null;try{const _0x2631d4=await fetch(this['_pipelineUrl']+_0x5212dd(0x14f)),_0x7cfbeb=await _0x2631d4[_0x5212dd(0x155)]();if(!_0x2631d4['ok'])throw new Error(_0x7cfbeb?.['error']?.['message']||'failed');this[_0x5212dd(0x148)]=_0x7cfbeb['data'];}catch(_0xd2c644){this[_0x5212dd(0x136)]=_0xd2c644?.['message']||String(_0xd2c644),this[_0x5212dd(0x148)]=null;}finally{this[_0x5212dd(0x178)]=!0x1;}},async 'flush'(){const _0x1c8a48=_0x1d367c;this[_0x1c8a48(0x10d)]=!0x0;try{if(!(await fetch(this[_0x1c8a48(0x119)]+_0x1c8a48(0x11e),{'method':_0x1c8a48(0x16d)}))['ok'])throw new Error(_0x1c8a48(0x16c));_0x7bf357[_0x1c8a48(0x14e)][_0x1c8a48(0x158)]?.[_0x1c8a48(0x134)]?.[_0x1c8a48(0x10b)]?.(_0x1c8a48(0x11f)),await this[_0x1c8a48(0x145)](),await this[_0x1c8a48(0x14d)]();}catch(_0x134bc1){_0x7bf357[_0x1c8a48(0x14e)][_0x1c8a48(0x158)]?.[_0x1c8a48(0x134)]?.[_0x1c8a48(0x136)]?.(_0x134bc1?.[_0x1c8a48(0x12f)]||_0x1c8a48(0x177));}finally{this[_0x1c8a48(0x10d)]=!0x1;}},async 'setDocsStatus'(_0x24ed09){const _0x3001db=_0x1d367c;this[_0x3001db(0x17b)]=_0x24ed09,await this['loadDocs']();},async 'onRefresh'(){const _0x3653cc=_0x1d367c;await Promise['all']([this['load'](),this[_0x3653cc(0x14d)]()]),_0x3653cc(0x127)===this[_0x3653cc(0x14c)]?.[_0x3653cc(0x13a)]&&await this['loadQueueStats']();},async 'loadDocs'(){const _0x1bd515=_0x1d367c;this[_0x1bd515(0x128)]=!0x0,this[_0x1bd515(0x10c)]=null;const _0xecb923=Date[_0x1bd515(0x122)]();try{const _0x5fe373=new URLSearchParams({'limit':this[_0x1bd515(0x153)]});this['docsStatus']&&_0x5fe373[_0x1bd515(0x12e)](_0x1bd515(0x110),this[_0x1bd515(0x17b)]);const _0x32c30f=await fetch(this[_0x1bd515(0x119)]+_0x1bd515(0x16e)+_0x5fe373),_0x14aa57=await _0x32c30f[_0x1bd515(0x155)]();if(!_0x32c30f['ok'])throw new Error(_0x14aa57?.[_0x1bd515(0x136)]?.[_0x1bd515(0x12f)]||_0x1bd515(0x170));this[_0x1bd515(0x17c)]=_0x14aa57['data']||[],this[_0x1bd515(0x116)]=Date[_0x1bd515(0x122)]()-_0xecb923;}catch(_0x25d51d){this[_0x1bd515(0x10c)]=_0x25d51d?.['message']||String(_0x25d51d),this[_0x1bd515(0x17c)]=[],this[_0x1bd515(0x116)]=null;}finally{this[_0x1bd515(0x128)]=!0x1;}},async 'loadQueueStats'(){const _0x1ff624=_0x1d367c;'queue'===this[_0x1ff624(0x14c)]?.[_0x1ff624(0x13a)]&&(this[_0x1ff624(0x12d)]=this['stats']?.[_0x1ff624(0x127)]??null);},async 'markDeleteDoc'(_0x20fda8){const _0x46f910=_0x1d367c;if(await _0x7bf357['$ok'][_0x46f910(0x158)][_0x46f910(0x16f)][_0x46f910(0x12c)](_0x46f910(0x16b)+_0x20fda8[_0x46f910(0x142)]+'\x22?')){_0x20fda8[_0x46f910(0x152)]=!0x0;try{if(!(await fetch(this[_0x46f910(0x119)]+'/docs/'+encodeURIComponent(_0x20fda8[_0x46f910(0x142)])+_0x46f910(0x131),{'method':_0x46f910(0x16d),'headers':{'Content-Type':_0x46f910(0x13d)},'body':JSON[_0x46f910(0x161)]({'clock':null})}))['ok'])throw new Error(_0x46f910(0x113));_0x7bf357[_0x46f910(0x14e)][_0x46f910(0x158)]?.['toast']?.[_0x46f910(0x17a)]?.('Deleted'),await this[_0x46f910(0x14d)]();}catch(_0x55ae3f){_0x7bf357[_0x46f910(0x14e)][_0x46f910(0x158)]?.['toast']?.[_0x46f910(0x136)]?.(_0x55ae3f?.[_0x46f910(0x12f)]||_0x46f910(0x181));}finally{_0x20fda8[_0x46f910(0x152)]=!0x1;}}},async 'retryDoc'(_0x56603e){const _0x1fdcde=_0x1d367c;_0x56603e[_0x1fdcde(0x152)]=!0x0;try{const _0x109a4c=await fetch(this[_0x1fdcde(0x119)]+_0x1fdcde(0x162)+encodeURIComponent(_0x56603e[_0x1fdcde(0x142)])+_0x1fdcde(0x173),{'method':'POST'}),_0x3aef2e=await _0x109a4c[_0x1fdcde(0x155)]();if(!_0x109a4c['ok'])throw new Error(_0x3aef2e?.[_0x1fdcde(0x136)]?.[_0x1fdcde(0x12f)]||'retry\x20failed');_0x7bf357['$ok']['shared']?.[_0x1fdcde(0x134)]?.[_0x1fdcde(0x10b)]?.(_0x1fdcde(0x14a)+_0x56603e['source_key']+'\x22'),await this[_0x1fdcde(0x14d)]();}catch(_0x1d39a5){_0x7bf357[_0x1fdcde(0x14e)][_0x1fdcde(0x158)]?.[_0x1fdcde(0x134)]?.[_0x1fdcde(0x136)]?.(_0x1d39a5?.['message']||_0x1fdcde(0x174));}finally{_0x56603e['_busy']=!0x1;}},async 'retryFailed'(){const _0x3dbebf=_0x1d367c;if(await _0x7bf357[_0x3dbebf(0x14e)]['shared'][_0x3dbebf(0x16f)][_0x3dbebf(0x12c)]('Re-enqueue\x20all\x20failed\x20docs\x20for\x20indexer\x20\x22'+this[_0x3dbebf(0x138)]+'\x22?')){this[_0x3dbebf(0x128)]=!0x0;try{const _0x502ecb=await fetch(this['_pipelineUrl']+_0x3dbebf(0x111),{'method':'POST','headers':{'Content-Type':_0x3dbebf(0x13d)},'body':JSON[_0x3dbebf(0x161)]({'limit':0x1388,'includeStuckPending':!0x1})}),_0x566b0a=await _0x502ecb[_0x3dbebf(0x155)]();if(!_0x502ecb['ok'])throw new Error(_0x566b0a?.[_0x3dbebf(0x136)]?.[_0x3dbebf(0x12f)]||_0x3dbebf(0x170));const _0x56dc67=_0x566b0a['data'];_0x7bf357[_0x3dbebf(0x14e)]['shared']?.[_0x3dbebf(0x134)]?.[_0x3dbebf(0x10b)]?.('Re-enqueued\x20'+_0x56dc67[_0x3dbebf(0x115)]+'\x20doc(s)'+(_0x56dc67['deleted']?',\x20cleaned\x20up\x20'+_0x56dc67[_0x3dbebf(0x169)]+_0x3dbebf(0x13c):'')),await Promise[_0x3dbebf(0x16a)]([this['load'](),this[_0x3dbebf(0x14d)]()]);}catch(_0x38838f){_0x7bf357['$ok'][_0x3dbebf(0x158)]?.[_0x3dbebf(0x134)]?.['error']?.(_0x38838f?.[_0x3dbebf(0x12f)]||_0x3dbebf(0x174));}finally{this[_0x3dbebf(0x128)]=!0x1;}}},async 'retryStuckPending'(){const _0xf77f9=_0x1d367c;if(await _0x7bf357[_0xf77f9(0x14e)]['shared'][_0xf77f9(0x16f)]['confirm']('Re-enqueue\x20ALL\x20failed\x20AND\x20stuck-pending\x20docs\x20for\x20\x22<b>'+this['name']+_0xf77f9(0x160))){this[_0xf77f9(0x128)]=!0x0;try{const _0x38fb2f=await fetch(this[_0xf77f9(0x119)]+_0xf77f9(0x111),{'method':_0xf77f9(0x16d),'headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'limit':0x1388,'includeStuckPending':!0x0})}),_0x42da44=await _0x38fb2f[_0xf77f9(0x155)]();if(!_0x38fb2f['ok'])throw new Error(_0x42da44?.['error']?.[_0xf77f9(0x12f)]||'failed');const _0x27a197=_0x42da44[_0xf77f9(0x149)];_0x7bf357['$ok'][_0xf77f9(0x158)]?.[_0xf77f9(0x134)]?.['success']?.(_0xf77f9(0x135)+_0x27a197[_0xf77f9(0x115)]+_0xf77f9(0x118)+(_0x27a197[_0xf77f9(0x169)]?',\x20cleaned\x20up\x20'+_0x27a197[_0xf77f9(0x169)]+_0xf77f9(0x13c):'')),await Promise[_0xf77f9(0x16a)]([this[_0xf77f9(0x145)](),this[_0xf77f9(0x14d)]()]);}catch(_0x451608){_0x7bf357['$ok']['shared']?.[_0xf77f9(0x134)]?.['error']?.(_0x451608?.[_0xf77f9(0x12f)]||_0xf77f9(0x174));}finally{this[_0xf77f9(0x128)]=!0x1;}}},'statusColor':_0x401508=>({'done':'var(--okdb-success)','failed':'var(--okdb-danger)','deleted':_0x1d367c(0x123),'pending':_0x1d367c(0x15e),'running':_0x1d367c(0x151),'partial':_0x1d367c(0x130)}[_0x401508]||'#9ca3af'),'chunkProgress'(_0xdd8d43){const _0x10e61c=_0x1d367c;if(!(_0xdd8d43[_0x10e61c(0x176)]>0x0))return null;const _0x47b7ba=_0xdd8d43[_0x10e61c(0x14b)]??0x0,_0x38ae24=_0xdd8d43['total_chunks'],_0x3c49e7=_0xdd8d43[_0x10e61c(0x11a)]??0x0;return'partial'===_0xdd8d43[_0x10e61c(0x110)]&&_0x3c49e7>0x0?_0x47b7ba+'/'+_0x38ae24+'\x20('+_0x3c49e7+_0x10e61c(0x15f):_0x47b7ba+'/'+_0x38ae24;},'relTime'(_0x2b82cb){const _0x42d183=_0x1d367c;if(!_0x2b82cb)return'—';const _0x59d56d=Date[_0x42d183(0x122)]()-_0x2b82cb;return _0x59d56d<0x1388?_0x42d183(0x15a):_0x59d56d<0xea60?Math[_0x42d183(0x164)](_0x59d56d/0x3e8)+_0x42d183(0x112):_0x59d56d<0x36ee80?Math[_0x42d183(0x164)](_0x59d56d/0xea60)+'m\x20ago':Math[_0x42d183(0x164)](_0x59d56d/0x36ee80)+'h\x20ago';},'vectorCache':{},async 'fetchVector'(_0x4a133f){const _0x565568=_0x1d367c,_0x43e973=_0x4a133f[_0x565568(0x142)];if(!this['vectorCache'][_0x43e973]?.[_0x565568(0x183)]&&!this[_0x565568(0x139)][_0x43e973]?.[_0x565568(0x178)]){this[_0x565568(0x139)][_0x43e973]={'busy':!0x0,'error':null,'vector':null,'dims':null};try{const _0x385af6=this[_0x565568(0x14c)]?.[_0x565568(0x10e)]||this[_0x565568(0x138)],_0x49e02a=await fetch(__ENV__[_0x565568(0x163)]+'/embeddings/storage/'+encodeURIComponent(_0x385af6)+'/'+encodeURIComponent(_0x43e973)),_0x56dfb7=await _0x49e02a['json']();if(!_0x49e02a['ok'])throw new Error(_0x56dfb7?.[_0x565568(0x136)]?.['message']||_0x565568(0x167));this['vectorCache'][_0x43e973]={'busy':!0x1,'error':null,'dims':_0x56dfb7[_0x565568(0x149)][_0x565568(0x11d)],'vector':_0x56dfb7['data'][_0x565568(0x183)]};}catch(_0x4410ad){this['vectorCache'][_0x43e973]={'busy':!0x1,'error':_0x4410ad?.[_0x565568(0x12f)]||String(_0x4410ad),'vector':null,'dims':null};}}},'toggleVector'(_0xe753e4){const _0x3ea104=_0x1d367c,_0x4b2066=_0xe753e4[_0x3ea104(0x142)];this[_0x3ea104(0x139)][_0x4b2066]?.['vector']||this[_0x3ea104(0x139)][_0x4b2066]?.[_0x3ea104(0x136)]?delete this[_0x3ea104(0x139)][_0x4b2066]:this[_0x3ea104(0x172)](_0xe753e4);},'fmtVec'(_0x28af32){const _0x511f8c=_0x1d367c;if(!_0x28af32)return'';const _0x339277=_0x28af32[_0x511f8c(0x171)](0x0,0xc)[_0x511f8c(0x17d)](_0x175f73=>_0x175f73['toFixed'](0x4))[_0x511f8c(0x114)](',\x20');return _0x28af32[_0x511f8c(0x137)]>0xc?'['+_0x339277+_0x511f8c(0x180)+(_0x28af32[_0x511f8c(0x137)]-0xc)+'\x20more]':'['+_0x339277+']';},'viewPipeline'(){const _0x2d7885=_0x1d367c;_0x4694c9(_0x7bf357,this[_0x2d7885(0x182)]);},'_unsubs':[]}),async 'init'(_0x507aa6){const _0x2f983c=_0x1d367c;_0x507aa6[_0x2f983c(0x159)](()=>_0x507aa6['$attr'][_0x2f983c(0x138)],async()=>{const _0x4cc800=_0x2f983c;this[_0x4cc800(0x148)]=null,this[_0x4cc800(0x17c)]=[],this['queueStats']=null,await Promise[_0x4cc800(0x16a)]([this[_0x4cc800(0x145)](),this['loadDocs']()]),_0x4cc800(0x127)===this['indexer']?.[_0x4cc800(0x13a)]&&await this['loadQueueStats']();}),await Promise[_0x2f983c(0x16a)]([this[_0x2f983c(0x145)](),this[_0x2f983c(0x14d)]()]),'queue'===this[_0x2f983c(0x14c)]?.[_0x2f983c(0x13a)]&&await this[_0x2f983c(0x15b)]();},'mount'(){const _0x2b3523=_0x1d367c,_0x132245=()=>this[_0x2b3523(0x138)],_0x2b32cc=_0x354a2f=>{const _0x4f975b=_0x2b3523;_0x354a2f?.[_0x4f975b(0x179)]&&_0x354a2f[_0x4f975b(0x179)]!==_0x132245()||this[_0x4f975b(0x145)]();},_0x525d8d=_0x1fb29e=>{const _0x2bb63b=_0x2b3523;_0x1fb29e?.[_0x2bb63b(0x179)]&&_0x1fb29e[_0x2bb63b(0x179)]!==_0x132245()||this['loadDocs']();};this[_0x2b3523(0x157)]=[_0x5b4fdb['on'](_0x2b3523(0x129),_0x2b32cc),_0x5b4fdb['on']('embeddings:indexer:flushed',_0x2b32cc),_0x5b4fdb['on'](_0x2b3523(0x150),_0x2b32cc),_0x5b4fdb['on'](_0x2b3523(0x12b),_0x2b32cc),_0x5b4fdb['on'](_0x2b3523(0x125),_0x2b32cc),_0x5b4fdb['on'](_0x2b3523(0x154),_0x525d8d),_0x5b4fdb['on'](_0x2b3523(0x140),_0x525d8d),_0x5b4fdb['on'](_0x2b3523(0x12a),_0x525d8d)];},'unmount'(){const _0x2a1fc4=_0x1d367c;for(const _0xe12033 of this[_0x2a1fc4(0x157)])_0xe12033();this['_unsubs']=[];},'template':_0x1d367c(0x120),'style':d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function _0x3702(){var _0x21d58a=['759228GpNNQj','24FIOkZV','3231oWpWzs','28930OenqIB','160965ETkqPx','77161UUAZJM','9830168DEhjsJ','1674232ojoppk','embed-lifecycle-bar','219KFlGqu','16886kacQyB'];_0x3702=function(){return _0x21d58a;};return _0x3702();}var _0x209abe=_0x1c41;(function(_0x547fe5,_0x352751){var _0x396251=_0x1c41,_0x119956=_0x547fe5();while(!![]){try{var _0x449620=-parseInt(_0x396251(0x1ed))/0x1+-parseInt(_0x396251(0x1f2))/0x2*(-parseInt(_0x396251(0x1f1))/0x3)+-parseInt(_0x396251(0x1e9))/0x4*(parseInt(_0x396251(0x1ec))/0x5)+-parseInt(_0x396251(0x1e8))/0x6+parseInt(_0x396251(0x1ef))/0x7+parseInt(_0x396251(0x1ee))/0x8+-parseInt(_0x396251(0x1ea))/0x9*(parseInt(_0x396251(0x1eb))/0xa);if(_0x449620===_0x352751)break;else _0x119956['push'](_0x119956['shift']());}catch(_0x570510){_0x119956['push'](_0x119956['shift']());}}}(_0x3702,0x9e68a));import _0x3943a4 from'../../engines/parts/engine-lifecycle-actions.ok.js';function _0x1c41(_0xa1a3f4,_0x42bbcd){_0xa1a3f4=_0xa1a3f4-0x1e8;var _0x37023a=_0x3702();var _0x1c413a=_0x37023a[_0xa1a3f4];return _0x1c413a;}export default{..._0x3943a4,'tag':_0x209abe(0x1f0)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x26c4b1=_0x35b4;function _0x35b4(_0x3b430f,_0x1403e4){_0x3b430f=_0x3b430f-0x1e3;const _0x1a919f=_0x1a91();let _0x35b449=_0x1a919f[_0x3b430f];return _0x35b449;}(function(_0x1c48be,_0x5b94db){const _0x46f754=_0x35b4,_0x1dd83c=_0x1c48be();while(!![]){try{const _0x37dc3d=-parseInt(_0x46f754(0x1f3))/0x1+-parseInt(_0x46f754(0x1ff))/0x2*(parseInt(_0x46f754(0x1e4))/0x3)+-parseInt(_0x46f754(0x1fc))/0x4+-parseInt(_0x46f754(0x1e6))/0x5*(parseInt(_0x46f754(0x1fb))/0x6)+-parseInt(_0x46f754(0x1f0))/0x7*(parseInt(_0x46f754(0x1fa))/0x8)+-parseInt(_0x46f754(0x1ec))/0x9+-parseInt(_0x46f754(0x1e5))/0xa*(-parseInt(_0x46f754(0x1f6))/0xb);if(_0x37dc3d===_0x5b94db)break;else _0x1dd83c['push'](_0x1dd83c['shift']());}catch(_0x3754f1){_0x1dd83c['push'](_0x1dd83c['shift']());}}}(_0x1a91,0x6904e));import _0x4adafc from'../modals/register-model-modal.ok.js';function _0x1a91(){const _0x1ed4ea=['filterProvider','provider','\x0a<div\x20:style=\x22compactMode\x0a\x20\x20?\x20\x27display:flex;\x20flex-direction:column;\x20gap:14px;\x20width:min(900px,\x2078vw);\x20max-width:900px;\x27\x0a\x20\x20:\x20\x27display:flex;\x20flex-direction:column;\x20gap:16px;\x20max-width:860px;\x27\x22>\x0a\x0a\x20\x20<!--\x20Header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20<div\x20:style=\x22compactMode\x20?\x20\x27font-weight:600;\x20font-size:16px;\x27\x20:\x20\x27font-weight:600;\x20font-size:18px;\x27\x22>Model\x20Catalog</div>\x0a\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.55;\x22>{{totalCount}}\x20models</span>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22\x20style=\x22opacity:.8;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openAdd()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20font-weight:600;\x20padding:5px\x2014px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20+\x20Register\x20Model\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x20padding:10px;\x20border:1px\x20solid\x20var(--okdb-danger);\x20border-radius:8px;\x22>{{error}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Provider\x20filter\x20pills\x20-->\x0a\x20\x20<if\x20:=\x22providers.length\x20>\x201\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-wrap:wrap;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22filterProvider\x20=\x20null\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22filterProvider\x20==\x20null\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20All\x20({{totalCount}})\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20<for\x20:=\x22providers\x22\x20let:p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22filterProvider\x20=\x20p\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22filterProvider\x20===\x20p\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{p}}\x20({{(models[p]\x20||\x20[]).length}})\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</for>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Table\x20-->\x0a\x20\x20<if\x20:=\x22filteredEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-surface);\x20border-radius:12px;\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:100%;\x20border-collapse:collapse;\x20font-size:13px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:1px\x20solid\x20var(--okdb-app-border);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22>Provider</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22>Model</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22\x20style=\x22text-align:right;\x22>Dims</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22>Description</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22\x20style=\x22text-align:right;\x20width:80px;\x22></th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22filteredEntries\x22\x20let:item=\x22m\x22\x20class=\x22tr\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22padding:2px\x208px;\x20border-radius:999px;\x20font-size:11px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x22>{{m.provider}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22\x20style=\x22font-family:monospace;\x22>{{m.model}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22\x20style=\x22text-align:right;\x20font-family:monospace;\x20color:var(--okdb-warning);\x22>{{m.dims}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22\x20style=\x22opacity:.6;\x20font-size:12px;\x22>{{m.description\x20||\x20\x27—\x27}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22\x20style=\x22text-align:right;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!m.builtin\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove(m)\x22\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22>✕</button>\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<if\x20:=\x22m.builtin\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.4;\x20font-style:italic;\x22>built-in</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</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20filteredEntries.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:13px;\x20line-height:1.8;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20models\x20in\x20catalog\x20for\x20the\x20selected\x20filter.<br>\x0a\x20\x20\x20\x20\x20\x20Register\x20a\x20custom\x20model\x20to\x20auto-resolve\x20its\x20dimensions\x20when\x20creating\x20engines.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','onchanged','model','218526LSQBzn','20sChWjA','1715PbnWYF','initialprovider','json','/embeddings/models/','values','message','3565890vPEilM','modal','data','sort','7fkgvDt','error','Removed\x20\x22','617560tloIMQ','compact','$attr','20948631LCTKUp','map','push','shared','6273032ZAemQI','11412XcWKxd','1674020KcdKsN','DELETE','Failed\x20to\x20load\x20models','14fyrXba','info','reduce','<register-model-modal\x20:modal=\x22modal\x22\x20:initial-provider=\x22initialProvider\x22\x20:on-done=\x22onDone\x22\x20/>','/embeddings/models','$ok','</b>\x22\x20from\x20catalog?','models','builtin','open','load','busy','embed-model-catalog','keys','providers','includes','confirm'];_0x1a91=function(){return _0x1ed4ea;};return _0x1a91();}export default{'tag':_0x26c4b1(0x20b),'attr':{'initialprovider':{},'compact':{},'onchanged':{}},'dependencies':[_0x4adafc],'context':_0x2ac376=>({'busy':!0x1,'models':{},'error':null,'filterProvider':null,get 'initialProvider'(){const _0x722afd=_0x26c4b1;return _0x2ac376[_0x722afd(0x1f5)][_0x722afd(0x1e7)]||null;},get 'compactMode'(){const _0x4d3aac=_0x26c4b1;return!0x0===_0x2ac376['$attr'][_0x4d3aac(0x1f4)]||'true'===_0x2ac376[_0x4d3aac(0x1f5)][_0x4d3aac(0x1f4)];},async 'load'(){const _0x37775c=_0x26c4b1;this[_0x37775c(0x20a)]=!0x0,this[_0x37775c(0x1f1)]=null;try{const _0x10db35=await fetch(__ENV__['API']+_0x37775c(0x203)),_0x10d5db=await _0x10db35['json']();if(!_0x10db35['ok'])throw new Error(_0x10d5db?.[_0x37775c(0x1f1)]?.[_0x37775c(0x1eb)]||_0x37775c(0x1fe));this[_0x37775c(0x206)]=_0x10d5db[_0x37775c(0x1ee)]??{};}catch(_0x505633){this[_0x37775c(0x1f1)]=_0x505633?.[_0x37775c(0x1eb)]||String(_0x505633),this[_0x37775c(0x206)]={};}finally{this[_0x37775c(0x20a)]=!0x1;}},get 'providers'(){const _0x40efc4=_0x26c4b1;return Object[_0x40efc4(0x20c)](this[_0x40efc4(0x206)])[_0x40efc4(0x1ef)]();},get 'filteredEntries'(){const _0x8b65ca=_0x26c4b1,_0x5b9428=this[_0x8b65ca(0x210)];if(!_0x5b9428){const _0x217f67=[];for(const _0x5610fd of this[_0x8b65ca(0x20d)])for(const _0x2c8b8d of this[_0x8b65ca(0x206)][_0x5610fd]||[])_0x217f67[_0x8b65ca(0x1f8)]({..._0x2c8b8d,'provider':_0x2c8b8d[_0x8b65ca(0x211)]??_0x5610fd});return _0x217f67;}return(this[_0x8b65ca(0x206)][_0x5b9428]||[])[_0x8b65ca(0x1f7)](_0x2255ca=>({..._0x2255ca,'provider':_0x2255ca['provider']??_0x5b9428}));},get 'totalCount'(){const _0x1f80ca=_0x26c4b1;return Object[_0x1f80ca(0x1ea)](this[_0x1f80ca(0x206)])[_0x1f80ca(0x201)]((_0x170402,_0x13218d)=>_0x170402+_0x13218d['length'],0x0);},async 'openAdd'(){const _0x23b760=_0x26c4b1;await _0x2ac376[_0x23b760(0x204)][_0x23b760(0x1f9)][_0x23b760(0x1ed)][_0x23b760(0x208)]({'owner':_0x2ac376,'title':'Register\x20Model','content':_0x23b760(0x202),'context':_0x714c84=>({'modal':_0x714c84,'initialProvider':this[_0x23b760(0x210)]||'','onDone':async()=>{const _0x35444e=_0x23b760;await this[_0x35444e(0x209)](),await _0x2ac376['$attr']['onchanged']?.();}})});},async 'remove'(_0xbc9e9f){const _0x5bc408=_0x26c4b1;if(_0xbc9e9f[_0x5bc408(0x207)])return void _0x2ac376[_0x5bc408(0x204)][_0x5bc408(0x1f9)]?.['toast']?.[_0x5bc408(0x1f1)]?.('Built-in\x20models\x20cannot\x20be\x20deleted');const _0x170703=_0xbc9e9f[_0x5bc408(0x211)]+':'+_0xbc9e9f[_0x5bc408(0x1e3)];if(await _0x2ac376[_0x5bc408(0x204)][_0x5bc408(0x1f9)][_0x5bc408(0x1ed)][_0x5bc408(0x20f)]('Remove\x20model\x20\x22<b>'+_0x170703+_0x5bc408(0x205)))try{const _0xa4a3e3=await fetch(__ENV__['API']+_0x5bc408(0x1e9)+encodeURIComponent(_0x170703),{'method':_0x5bc408(0x1fd)});if(!_0xa4a3e3['ok']){const _0x3e4ff0=await _0xa4a3e3[_0x5bc408(0x1e8)]();throw new Error(_0x3e4ff0?.[_0x5bc408(0x1f1)]?.[_0x5bc408(0x1eb)]||'Delete\x20failed');}_0x2ac376[_0x5bc408(0x204)][_0x5bc408(0x1f9)]?.['toast']?.[_0x5bc408(0x200)]?.(_0x5bc408(0x1f2)+_0x170703+'\x22'),await this['load'](),await _0x2ac376[_0x5bc408(0x1f5)][_0x5bc408(0x213)]?.();}catch(_0x9639dc){_0x2ac376['$ok'][_0x5bc408(0x1f9)]?.['toast']?.[_0x5bc408(0x1f1)]?.(_0x9639dc?.['message']||'Delete\x20failed');}}}),async 'mount'(_0x5ac346){const _0x5446b7=_0x26c4b1;await this['load']();const _0x56f561=_0x5ac346[_0x5446b7(0x1f5)][_0x5446b7(0x1e7)]||null;_0x56f561&&this[_0x5446b7(0x20d)][_0x5446b7(0x20e)](_0x56f561)&&(this[_0x5446b7(0x210)]=_0x56f561);},'template':_0x26c4b1(0x212),'style':'.pill{border:1px\x20solid\x20var(--okdb-app-border);background:var(--okdb-app-surface);padding:4px\x2010px;border-radius:999px;font-size:12px;cursor:pointer}.pill--on{border-color:var(--okdb-accent)}.td,.th{padding:8px\x2012px}.th{text-align:left;font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.04em;opacity:.55}.td{border-top:1px\x20solid\x20#1e2932}.tr:hover\x20.td{background:#ffffff06}'};
|
|
1
|
+
function _0xda39(_0x38d415,_0x5cc988){_0x38d415=_0x38d415-0xe6;const _0x330cf0=_0x330c();let _0xda3994=_0x330cf0[_0x38d415];return _0xda3994;}const _0x4f2c29=_0xda39;(function(_0x4823cf,_0x55a04a){const _0x25e72d=_0xda39,_0x5737ae=_0x4823cf();while(!![]){try{const _0x5d5ad2=parseInt(_0x25e72d(0xfa))/0x1+parseInt(_0x25e72d(0xe9))/0x2+parseInt(_0x25e72d(0x112))/0x3*(-parseInt(_0x25e72d(0x101))/0x4)+parseInt(_0x25e72d(0x111))/0x5+-parseInt(_0x25e72d(0x103))/0x6*(-parseInt(_0x25e72d(0x117))/0x7)+parseInt(_0x25e72d(0xf7))/0x8*(-parseInt(_0x25e72d(0x118))/0x9)+parseInt(_0x25e72d(0x10c))/0xa;if(_0x5d5ad2===_0x55a04a)break;else _0x5737ae['push'](_0x5737ae['shift']());}catch(_0x27395a){_0x5737ae['push'](_0x5737ae['shift']());}}}(_0x330c,0x2ebe0));import _0x48277d from'../modals/register-model-modal.ok.js';function _0x330c(){const _0xefc1ab=['</b>\x22\x20from\x20catalog?','68368OdcMzM','<register-model-modal\x20:modal=\x22modal\x22\x20:initial-provider=\x22initialProvider\x22\x20:on-done=\x22onDone\x22\x20/>','model','shared','true','$ok','.pill{border:1px\x20solid\x20var(--okdb-app-border);background:var(--okdb-app-surface);padding:4px\x2010px;border-radius:999px;font-size:12px;cursor:pointer}.pill--on{border-color:var(--okdb-accent)}.td,.th{padding:8px\x2012px}.th{text-align:left;font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.04em;opacity:.55}.td{border-top:1px\x20solid\x20#1e2932}.tr:hover\x20.td{background:#ffffff06}','24ToVHHp','data','48BNSidi','compact','Remove\x20model\x20\x22<b>','reduce','filterProvider','API','initialprovider','Failed\x20to\x20load\x20models','embed-model-catalog','1645240QLLtIb','message','provider','onchanged','models','440005ZOVcso','76233TeTZSk','modal','length','toast','info','280672xRlzkL','261YdwZOd','open','confirm','values','148256wfigyV','sort','/embeddings/models','/embeddings/models/','providers','includes','$attr','error','DELETE','load','\x0a<div\x20:style=\x22compactMode\x0a\x20\x20?\x20\x27display:flex;\x20flex-direction:column;\x20gap:14px;\x20width:min(900px,\x2078vw);\x20max-width:900px;\x27\x0a\x20\x20:\x20\x27display:flex;\x20flex-direction:column;\x20gap:16px;\x20max-width:860px;\x27\x22>\x0a\x0a\x20\x20<!--\x20Header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20<div\x20:style=\x22compactMode\x20?\x20\x27font-weight:600;\x20font-size:16px;\x27\x20:\x20\x27font-weight:600;\x20font-size:18px;\x27\x22>Model\x20Catalog</div>\x0a\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.55;\x22>{{totalCount}}\x20models</span>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22\x20style=\x22opacity:.8;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openAdd()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20font-weight:600;\x20padding:5px\x2014px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20+\x20Register\x20Model\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x20padding:10px;\x20border:1px\x20solid\x20var(--okdb-danger);\x20border-radius:8px;\x22>{{error}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Provider\x20filter\x20pills\x20-->\x0a\x20\x20<if\x20:=\x22providers.length\x20>\x201\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-wrap:wrap;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22filterProvider\x20=\x20null\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22filterProvider\x20==\x20null\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20All\x20({{totalCount}})\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20<for\x20:=\x22providers\x22\x20let:p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22filterProvider\x20=\x20p\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22filterProvider\x20===\x20p\x20?\x20\x27pill\x20pill--on\x27\x20:\x20\x27pill\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{p}}\x20({{(models[p]\x20||\x20[]).length}})\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</for>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Table\x20-->\x0a\x20\x20<if\x20:=\x22filteredEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-surface);\x20border-radius:12px;\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:100%;\x20border-collapse:collapse;\x20font-size:13px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:1px\x20solid\x20var(--okdb-app-border);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22>Provider</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22>Model</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22\x20style=\x22text-align:right;\x22>Dims</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22>Description</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22th\x22\x20style=\x22text-align:right;\x20width:80px;\x22></th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22filteredEntries\x22\x20let:item=\x22m\x22\x20class=\x22tr\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22padding:2px\x208px;\x20border-radius:999px;\x20font-size:11px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x22>{{m.provider}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22\x20style=\x22font-family:monospace;\x22>{{m.model}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22\x20style=\x22text-align:right;\x20font-family:monospace;\x20color:var(--okdb-warning);\x22>{{m.dims}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22\x20style=\x22opacity:.6;\x20font-size:12px;\x22>{{m.description\x20||\x20\x27—\x27}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22td\x22\x20style=\x22text-align:right;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!m.builtin\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove(m)\x22\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22>✕</button>\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<if\x20:=\x22m.builtin\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.4;\x20font-style:italic;\x22>built-in</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</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20filteredEntries.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:13px;\x20line-height:1.8;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20models\x20in\x20catalog\x20for\x20the\x20selected\x20filter.<br>\x0a\x20\x20\x20\x20\x20\x20Register\x20a\x20custom\x20model\x20to\x20auto-resolve\x20its\x20dimensions\x20when\x20creating\x20engines.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','push','Delete\x20failed','keys','102584eeWyYk','busy'];_0x330c=function(){return _0xefc1ab;};return _0x330c();}export default{'tag':_0x4f2c29(0x10b),'attr':{'initialprovider':{},'compact':{},'onchanged':{}},'dependencies':[_0x48277d],'context':_0x5a07b3=>({'busy':!0x1,'models':{},'error':null,'filterProvider':null,get 'initialProvider'(){const _0x4c52d5=_0x4f2c29;return _0x5a07b3[_0x4c52d5(0xef)][_0x4c52d5(0x109)]||null;},get 'compactMode'(){const _0x1da631=_0x4f2c29;return!0x0===_0x5a07b3[_0x1da631(0xef)]['compact']||_0x1da631(0xfe)===_0x5a07b3[_0x1da631(0xef)][_0x1da631(0x104)];},async 'load'(){const _0x40d75f=_0x4f2c29;this['busy']=!0x0,this[_0x40d75f(0xf0)]=null;try{const _0x3492fd=await fetch(__ENV__[_0x40d75f(0x108)]+_0x40d75f(0xeb)),_0x4b276e=await _0x3492fd['json']();if(!_0x3492fd['ok'])throw new Error(_0x4b276e?.[_0x40d75f(0xf0)]?.[_0x40d75f(0x10d)]||_0x40d75f(0x10a));this['models']=_0x4b276e[_0x40d75f(0x102)]??{};}catch(_0x5d36a1){this[_0x40d75f(0xf0)]=_0x5d36a1?.[_0x40d75f(0x10d)]||String(_0x5d36a1),this[_0x40d75f(0x110)]={};}finally{this[_0x40d75f(0xf8)]=!0x1;}},get 'providers'(){const _0x36fedc=_0x4f2c29;return Object[_0x36fedc(0xf6)](this[_0x36fedc(0x110)])[_0x36fedc(0xea)]();},get 'filteredEntries'(){const _0x217ef0=_0x4f2c29,_0x4c341d=this['filterProvider'];if(!_0x4c341d){const _0x477262=[];for(const _0x4bb180 of this[_0x217ef0(0xed)])for(const _0x3801fc of this[_0x217ef0(0x110)][_0x4bb180]||[])_0x477262[_0x217ef0(0xf4)]({..._0x3801fc,'provider':_0x3801fc[_0x217ef0(0x10e)]??_0x4bb180});return _0x477262;}return(this[_0x217ef0(0x110)][_0x4c341d]||[])['map'](_0x48e1e6=>({..._0x48e1e6,'provider':_0x48e1e6[_0x217ef0(0x10e)]??_0x4c341d}));},get 'totalCount'(){const _0x4b16e6=_0x4f2c29;return Object[_0x4b16e6(0xe8)](this['models'])[_0x4b16e6(0x106)]((_0x15fae8,_0x2ecd26)=>_0x15fae8+_0x2ecd26[_0x4b16e6(0x114)],0x0);},async 'openAdd'(){const _0x478026=_0x4f2c29;await _0x5a07b3[_0x478026(0xff)][_0x478026(0xfd)][_0x478026(0x113)][_0x478026(0xe6)]({'owner':_0x5a07b3,'title':'Register\x20Model','content':_0x478026(0xfb),'context':_0x5cb81c=>({'modal':_0x5cb81c,'initialProvider':this[_0x478026(0x107)]||'','onDone':async()=>{const _0x517233=_0x478026;await this[_0x517233(0xf2)](),await _0x5a07b3['$attr'][_0x517233(0x10f)]?.();}})});},async 'remove'(_0x1ac3d3){const _0x1ddb38=_0x4f2c29;if(_0x1ac3d3['builtin'])return void _0x5a07b3[_0x1ddb38(0xff)][_0x1ddb38(0xfd)]?.[_0x1ddb38(0x115)]?.[_0x1ddb38(0xf0)]?.('Built-in\x20models\x20cannot\x20be\x20deleted');const _0x8402ea=_0x1ac3d3[_0x1ddb38(0x10e)]+':'+_0x1ac3d3[_0x1ddb38(0xfc)];if(await _0x5a07b3[_0x1ddb38(0xff)][_0x1ddb38(0xfd)][_0x1ddb38(0x113)][_0x1ddb38(0xe7)](_0x1ddb38(0x105)+_0x8402ea+_0x1ddb38(0xf9)))try{const _0x11fafa=await fetch(__ENV__[_0x1ddb38(0x108)]+_0x1ddb38(0xec)+encodeURIComponent(_0x8402ea),{'method':_0x1ddb38(0xf1)});if(!_0x11fafa['ok']){const _0x37c68a=await _0x11fafa['json']();throw new Error(_0x37c68a?.[_0x1ddb38(0xf0)]?.['message']||_0x1ddb38(0xf5));}_0x5a07b3['$ok'][_0x1ddb38(0xfd)]?.['toast']?.[_0x1ddb38(0x116)]?.('Removed\x20\x22'+_0x8402ea+'\x22'),await this[_0x1ddb38(0xf2)](),await _0x5a07b3[_0x1ddb38(0xef)][_0x1ddb38(0x10f)]?.();}catch(_0x1a2af8){_0x5a07b3[_0x1ddb38(0xff)][_0x1ddb38(0xfd)]?.[_0x1ddb38(0x115)]?.[_0x1ddb38(0xf0)]?.(_0x1a2af8?.[_0x1ddb38(0x10d)]||_0x1ddb38(0xf5));}}}),async 'mount'(_0x21a3fc){const _0x562919=_0x4f2c29;await this[_0x562919(0xf2)]();const _0x11f90b=_0x21a3fc[_0x562919(0xef)][_0x562919(0x109)]||null;_0x11f90b&&this['providers'][_0x562919(0xee)](_0x11f90b)&&(this[_0x562919(0x107)]=_0x11f90b);},'template':_0x4f2c29(0xf3),'style':_0x4f2c29(0x100)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _0x16d7(){const _0x5215d5=['toast','Indexer','key','every','modal','var(--okdb-app-fg-muted)','<br>','pipelineBusy','join','length','sort','embed-worker','filter','replace','15657UPXNfa','_pipelineUrl','Search','/type/','875367xUHGsR','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:20px;\x20max-width:860px;\x22>\x0a\x0a\x20\x20<!--\x20Header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:18px;\x22>Embeddings\x20Overview</div>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openCreate()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20font-weight:600;\x20padding:6px\x2016px;\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20+\x20Create\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x0a\x20\x20<!--\x20No\x20engines\x20at\x20all\x20-->\x0a\x20\x20<if\x20:=\x22allEngines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:14px;\x20line-height:1.8;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20engines\x20created\x20yet.<br>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Use\x20<b>+\x20Create</b>\x20to\x20set\x20up\x20a\x20pipeline\x20or\x20individual\x20engine.<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b>Embedder</b>\x20—\x20connection\x20to\x20an\x20ML\x20service\x20(Ollama,\x20OpenAI\x20…)<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b>Indexer</b>\x20—\x20watches\x20a\x20OKDB\x20type\x27s\x20change\x20log\x20and\x20creates\x20embeddings<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b>Worker</b>\x20—\x20queue\x20consumer\x20for\x20queue-mode\x20indexing<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b>Search</b>\x20—\x20nearest-neighbour\x20index\x20over\x20a\x20storage\x20key\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Pipeline\x20groups\x20-->\x0a\x20\x20<if\x20:=\x22groups.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20opacity:.45;\x20letter-spacing:.06em;\x20margin-bottom:8px;\x22>Pipelines</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22groups\x22\x20let:item=\x22g\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27background:var(--okdb-app-surface);\x20border-radius:10px;\x20padding:14px\x2016px;\x20box-shadow:\x27\x20+\x20(focusPipeline\x20===\x20g.name\x20?\x20\x270\x200\x200\x202px\x20var(--okdb-accent),\x200\x200\x2012px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent)\x27\x20:\x20\x270\x200\x205px\x20#ffffff1a\x27)\x20+\x20\x27;\x20transition:box-shadow\x20.3s;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Group\x20header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20margin-bottom:10px;\x22>\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\x20\x20\x20\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthDot(g)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22healthTitle(g)\x22\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\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>{{\x20g.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Vector\x20store\x20summary:\x20storage_key\x20+\x20persisted\x20count\x20from\x20indexer\x20stats\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22g.indexer?.meta?.pipeline\x22>\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\x20\x20\x20\x20style=\x22font-size:11px;\x20opacity:.6;\x20font-family:monospace;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22LMDB\x20vector\x20store\x20for\x20this\x20pipeline\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\x20\x20\x20\x20~emb:vec:{{\x20g.indexer.config?.storage_key\x20??\x20g.name\x20}}\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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline-level\x20actions\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:6px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22[g.embedder,\x20g.indexer,\x20g.search,\x20g.worker].filter(Boolean).some(e\x20=>\x20e.isRunning)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22stopPipeline(g)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22pipelineBusy[g.name]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-warning);\x20border-color:var(--okdb-warning);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Stop\x20all\x20engines\x20in\x20this\x20pipeline\x22\x0a\x20\x20\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\x20\x20\x20\x20\x20\x20{{\x20pipelineBusy[g.name]\x20?\x20\x27…\x27\x20:\x20\x27⏹\x20Stop\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22deletePipeline(g)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22pipelineBusy[g.name]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-danger);\x20border-color:var(--okdb-danger);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Stop\x20and\x20permanently\x20delete\x20all\x20engines\x20in\x20this\x20pipeline\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\x20\x20\x20\x20{{\x20pipelineBusy[g.name]\x20?\x20\x27…\x27\x20:\x20\x27✕\x20Delete\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Engine\x20rows\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22[g.embedder,\x20g.indexer,\x20g.search,\x20g.worker].filter(Boolean)\x22\x20let:item=\x22eng\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<engine-row-item\x0a\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20:label=\x22typeLabel[eng.type]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:label-color=\x22typeColor[eng.type]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:subtitle=\x22eng.status\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action-label=\x22Open\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22select($event.detail)\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\x20\x20\x20\x20<if\x20:=\x22eng.status\x20===\x20\x27error\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20color:var(--okdb-danger);\x20flex-shrink:0;\x22\x20:title=\x22eng.error\x20||\x20\x27error\x27\x22>⚠\x20error</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</engine-row-item>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Missing\x20role\x20indicators\x20for\x20pipeline\x20completeness\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!g.worker\x20&&\x20g.indexer?.config?.mode\x20===\x20\x27queue\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20padding:3px\x208px;\x20color:var(--okdb-warning);\x22>⚠\x20queue\x20mode\x20—\x20no\x20worker\x20configured</div>\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<if\x20:=\x22!g.search\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20padding:3px\x208px;\x20color:var(--okdb-warning);\x22>⚠\x20no\x20vector-search\x20engine</div>\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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Standalone\x20engines\x20(don\x27t\x20form\x20a\x20group)\x20-->\x0a\x20\x20<if\x20:=\x22allEngines.length\x20>\x200\x20&&\x20(groups.length\x20>\x200\x20?\x20orphans.length\x20>\x200\x20:\x20true)\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20opacity:.45;\x20letter-spacing:.06em;\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20groups.length\x20>\x200\x20?\x20\x27Standalone\x20Engines\x27\x20:\x20\x27Engines\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22groups.length\x20>\x200\x20?\x20orphans\x20:\x20allEngines\x22\x20let:item=\x22eng\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<engine-row-item\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:label=\x22typeLabel[eng.type]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:label-color=\x22typeColor[eng.type]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:subtitle=\x22eng.status\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action-label=\x22Open\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22select($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.status\x20===\x20\x27error\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20color:var(--okdb-danger);\x20flex-shrink:0;\x22\x20:title=\x22eng.error\x20||\x20\x27error\x27\x22>⚠\x20error</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</engine-row-item>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Summary\x20counts\x20-->\x0a\x20\x20<if\x20:=\x22allEngines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:16px;\x20font-size:12px;\x20opacity:.5;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<span>{{\x20allEngines.filter(e\x20=>\x20e.isRunning).length\x20}}\x20/\x20{{\x20allEngines.length\x20}}\x20running</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22allEngines.filter(e\x20=>\x20e.status\x20===\x20\x27error\x27).length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-danger);\x22>{{\x20allEngines.filter(e\x20=>\x20e.status\x20===\x20\x27error\x27).length\x20}}\x20error(s)</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','</b>\x22?<br><br>','error','all\x20running','set','/pipelines/','some','2542160EtZakY','171SpbAFn','DELETE','worker','show-create','add','embedder','var(--okdb-success)','vector-search','push','meta','embed-overview','pipeline','var(--okdb-accent)','Delete\x20the\x20entire\x20pipeline\x20\x22<b>','info','confirm','3106635hTWgdw','default','Pipeline\x20\x22','/env/','18332UKQnDc','API','engines','focusPipeline','$ok','storage_key','map','Stop\x20all\x20engines\x20in\x20pipeline\x20\x22','source_type','shared','_enginesOf','name','383510tiQzGo','66HPDaro','status','6599272LUSrad','search','var(--okdb-danger)','values','\x22\x20stopped','config','12EUmhqX','message','has\x20errors','indexer','created','<br><br>This\x20cannot\x20be\x20undone.','/stop','Worker','success','var(--okdb-purple)','select','isRunning','type','var(--okdb-warning)','$dispatch','pipelines','allEngines','Embedder'];_0x16d7=function(){return _0x5215d5;};return _0x16d7();}const _0x2f3408=_0x1c55;function _0x1c55(_0x58c317,_0x956c59){_0x58c317=_0x58c317-0xf1;const _0x16d726=_0x16d7();let _0x1c55b2=_0x16d726[_0x58c317];return _0x1c55b2;}(function(_0x2c83d2,_0x4a8f45){const _0x28bf90=_0x1c55,_0x269e74=_0x2c83d2();while(!![]){try{const _0x2199ac=-parseInt(_0x28bf90(0x125))/0x1*(parseInt(_0x28bf90(0xfd))/0x2)+-parseInt(_0x28bf90(0x129))/0x3+-parseInt(_0x28bf90(0x146))/0x4+parseInt(_0x28bf90(0x131))/0x5*(parseInt(_0x28bf90(0x105))/0x6)+parseInt(_0x28bf90(0x142))/0x7+-parseInt(_0x28bf90(0xff))/0x8+-parseInt(_0x28bf90(0x132))/0x9*(-parseInt(_0x28bf90(0xfc))/0xa);if(_0x2199ac===_0x4a8f45)break;else _0x269e74['push'](_0x269e74['shift']());}catch(_0x37d29b){_0x269e74['push'](_0x269e74['shift']());}}}(_0x16d7,0x869d0));import _0x4aae9c from'../../engines/parts/engine-row-item.ok.js';export default{'tag':_0x2f3408(0x13c),'dependencies':[_0x4aae9c],'attr':{'engines':{},'focusPipeline':{}},'context':_0x2a7cae=>({'pipelineBusy':{},get 'allEngines'(){const _0x323f3b=_0x2f3408;return _0x2a7cae['$attr'][_0x323f3b(0xf2)]??[];},get 'focusPipeline'(){const _0x161272=_0x2f3408;return _0x2a7cae['$attr'][_0x161272(0xf3)]??null;},get 'pipelines'(){const _0x21d827=_0x2f3408,_0xac2aac=new Map();for(const _0x3e672f of this[_0x21d827(0x115)]){const _0x3fba8d=_0x3e672f[_0x21d827(0x13b)]?.[_0x21d827(0x13d)]??_0x3e672f[_0x21d827(0xfb)][_0x21d827(0x124)](/-worker$/,'');_0xac2aac['has'](_0x3fba8d)||_0xac2aac[_0x21d827(0x12e)](_0x3fba8d,{'name':_0x3fba8d,'embedder':null,'indexer':null,'search':null,'worker':null});const _0x3e0795=_0xac2aac['get'](_0x3fba8d);_0x21d827(0x137)===_0x3e672f['type']?_0x3e0795[_0x21d827(0x137)]=_0x3e672f:'indexer'===_0x3e672f[_0x21d827(0x111)]?_0x3e0795['indexer']=_0x3e672f:_0x21d827(0x139)===_0x3e672f[_0x21d827(0x111)]?_0x3e0795[_0x21d827(0x100)]=_0x3e672f:_0x21d827(0x122)===_0x3e672f[_0x21d827(0x111)]&&(_0x3e0795['worker']=_0x3e672f);}return[..._0xac2aac[_0x21d827(0x102)]()][_0x21d827(0x121)]((_0x1b7151,_0x5b5144)=>_0x1b7151['name']['localeCompare'](_0x5b5144['name']));},get 'orphans'(){const _0x5e40d5=_0x2f3408,_0x1138c8=new Set();for(const _0x1221ef of this['pipelines'])for(const _0x5d89a3 of[_0x1221ef['embedder'],_0x1221ef[_0x5e40d5(0x108)],_0x1221ef[_0x5e40d5(0x100)],_0x1221ef['worker']])_0x5d89a3&&_0x1138c8[_0x5e40d5(0x136)](_0x5d89a3[_0x5e40d5(0x119)]);const _0x2a21cd=this['pipelines'][_0x5e40d5(0x123)](_0x2c045f=>0x1===[_0x2c045f[_0x5e40d5(0x137)],_0x2c045f[_0x5e40d5(0x108)],_0x2c045f[_0x5e40d5(0x100)],_0x2c045f[_0x5e40d5(0x134)]]['filter'](Boolean)[_0x5e40d5(0x120)]),_0x4e1ca1=[];for(const _0x188839 of _0x2a21cd){const _0x454631=_0x188839[_0x5e40d5(0x137)]??_0x188839['indexer']??_0x188839[_0x5e40d5(0x100)]??_0x188839['worker'];_0x454631&&_0x4e1ca1[_0x5e40d5(0x13a)](_0x454631);}return _0x4e1ca1;},get 'groups'(){const _0x41515d=_0x2f3408;return this[_0x41515d(0x114)]['filter'](_0xe526e=>[_0xe526e['embedder'],_0xe526e[_0x41515d(0x108)],_0xe526e[_0x41515d(0x100)],_0xe526e[_0x41515d(0x134)]][_0x41515d(0x123)](Boolean)[_0x41515d(0x120)]>0x1);},'healthDot'(_0x28e994){const _0x32ed21=_0x2f3408,_0x178160=[_0x28e994[_0x32ed21(0x137)],_0x28e994['indexer'],_0x28e994['search'],_0x28e994[_0x32ed21(0x134)]]['filter'](Boolean);return _0x178160[_0x32ed21(0x11a)](_0x1f15da=>_0x1f15da[_0x32ed21(0x110)])?_0x32ed21(0x138):_0x178160[_0x32ed21(0x130)](_0x76caaa=>_0x32ed21(0x12c)===_0x76caaa[_0x32ed21(0xfe)])?_0x32ed21(0x101):_0x32ed21(0x112);},'healthTitle'(_0x1f4fb9){const _0x1c3392=_0x2f3408,_0x56516a=[_0x1f4fb9[_0x1c3392(0x137)],_0x1f4fb9[_0x1c3392(0x108)],_0x1f4fb9[_0x1c3392(0x100)],_0x1f4fb9[_0x1c3392(0x134)]][_0x1c3392(0x123)](Boolean);return _0x56516a[_0x1c3392(0x11a)](_0x2fd9a3=>_0x2fd9a3[_0x1c3392(0x110)])?_0x1c3392(0x12d):_0x56516a[_0x1c3392(0x130)](_0x2d4613=>_0x1c3392(0x12c)===_0x2d4613[_0x1c3392(0xfe)])?_0x1c3392(0x107):'partially\x20running';},'typeColor':{'embedder':'var(--okdb-info)','indexer':_0x2f3408(0x10e),'vector-search':_0x2f3408(0x13e),'embed-worker':'var(--okdb-warning)'},'typeLabel':{'embedder':_0x2f3408(0x116),'indexer':_0x2f3408(0x118),'vector-search':_0x2f3408(0x127),'embed-worker':_0x2f3408(0x10c)},'statusDot':_0x495996=>_0x495996['isRunning']?'var(--okdb-success)':'error'===_0x495996['status']?'var(--okdb-danger)':_0x2f3408(0x11c),'select'(_0x282965){const _0x170c39=_0x2f3408;_0x2a7cae['$dispatch'](_0x170c39(0x10f),_0x282965);},'openCreate'(){const _0x1c1dea=_0x2f3408;_0x2a7cae[_0x1c1dea(0x113)](_0x1c1dea(0x135),null);},'_enginesOf':_0x341a3b=>[_0x341a3b[_0x2f3408(0x137)],_0x341a3b['indexer'],_0x341a3b[_0x2f3408(0x100)],_0x341a3b[_0x2f3408(0x134)]][_0x2f3408(0x123)](Boolean),'_pipelineUrl'(_0x36c436){const _0x43be15=_0x2f3408,_0x33a979=_0x36c436[_0x43be15(0x108)]??_0x36c436[_0x43be15(0x100)]??_0x36c436['worker'];if(!_0x33a979)return null;const _0x540b4a=_0x33a979[_0x43be15(0x104)]??{},_0x3331d1=encodeURIComponent(_0x540b4a['source_env']??_0x43be15(0x143)),_0x1b9e89=encodeURIComponent(_0x540b4a[_0x43be15(0xf8)]??''),_0x232679=encodeURIComponent(_0x540b4a[_0x43be15(0xf5)]??_0x36c436[_0x43be15(0xfb)]);return __ENV__[_0x43be15(0xf1)]+_0x43be15(0x145)+_0x3331d1+_0x43be15(0x128)+_0x1b9e89+_0x43be15(0x12f)+_0x232679;},async 'stopPipeline'(_0x53e06b){const _0x394b5e=_0x2f3408;if(await _0x2a7cae[_0x394b5e(0xf4)]['shared']['modal'][_0x394b5e(0x141)](_0x394b5e(0xf7)+_0x53e06b[_0x394b5e(0xfb)]+'\x22?')){this[_0x394b5e(0x11e)]={...this[_0x394b5e(0x11e)],[_0x53e06b[_0x394b5e(0xfb)]]:!0x0};try{const _0x4846cc=this[_0x394b5e(0x126)](_0x53e06b);_0x4846cc&&await fetch(_0x4846cc+_0x394b5e(0x10b),{'method':'POST'}),_0x2a7cae[_0x394b5e(0xf4)][_0x394b5e(0xf9)]?.[_0x394b5e(0x117)]?.[_0x394b5e(0x140)]?.(_0x394b5e(0x144)+_0x53e06b[_0x394b5e(0xfb)]+_0x394b5e(0x103)),_0x2a7cae['$dispatch'](_0x394b5e(0x109),null);}catch(_0x4c7b1c){_0x2a7cae['$ok'][_0x394b5e(0xf9)]?.['toast']?.[_0x394b5e(0x12c)]?.(_0x4c7b1c?.[_0x394b5e(0x106)]||'Stop\x20failed');}finally{this['pipelineBusy']={...this[_0x394b5e(0x11e)],[_0x53e06b['name']]:!0x1};}}},async 'deletePipeline'(_0x163ae9){const _0xc08691=_0x2f3408,_0x13fbd6=this[_0xc08691(0xfa)](_0x163ae9)[_0xc08691(0xf6)](_0x1d5e78=>'•\x20'+_0x1d5e78[_0xc08691(0x111)]+':\x20'+_0x1d5e78[_0xc08691(0xfb)])[_0xc08691(0x11f)](_0xc08691(0x11d));if(await _0x2a7cae['$ok'][_0xc08691(0xf9)][_0xc08691(0x11b)]['confirm'](_0xc08691(0x13f)+_0x163ae9[_0xc08691(0xfb)]+_0xc08691(0x12b)+_0x13fbd6+_0xc08691(0x10a))){this['pipelineBusy']={...this['pipelineBusy'],[_0x163ae9[_0xc08691(0xfb)]]:!0x0};try{const _0x543cac=this['_pipelineUrl'](_0x163ae9);_0x543cac&&await fetch(_0x543cac,{'method':_0xc08691(0x133)}),_0x2a7cae[_0xc08691(0xf4)][_0xc08691(0xf9)]?.[_0xc08691(0x117)]?.[_0xc08691(0x10d)]?.(_0xc08691(0x144)+_0x163ae9[_0xc08691(0xfb)]+'\x22\x20deleted'),_0x2a7cae[_0xc08691(0x113)](_0xc08691(0x109),null);}catch(_0x5d1983){_0x2a7cae[_0xc08691(0xf4)][_0xc08691(0xf9)]?.[_0xc08691(0x117)]?.[_0xc08691(0x12c)]?.(_0x5d1983?.[_0xc08691(0x106)]||'Delete\x20failed');}finally{this[_0xc08691(0x11e)]={...this[_0xc08691(0x11e)],[_0x163ae9[_0xc08691(0xfb)]]:!0x1};}}}}),'template':_0x2f3408(0x12a),'style':''};
|
|
1
|
+
const _0x5b8f86=_0x1ba4;(function(_0x4561eb,_0x1692ba){const _0x3d64c4=_0x1ba4,_0x1eda56=_0x4561eb();while(!![]){try{const _0x3f43c5=-parseInt(_0x3d64c4(0x1ef))/0x1+-parseInt(_0x3d64c4(0x21d))/0x2+-parseInt(_0x3d64c4(0x21a))/0x3*(parseInt(_0x3d64c4(0x204))/0x4)+parseInt(_0x3d64c4(0x22b))/0x5+parseInt(_0x3d64c4(0x228))/0x6+parseInt(_0x3d64c4(0x1e4))/0x7*(-parseInt(_0x3d64c4(0x210))/0x8)+parseInt(_0x3d64c4(0x220))/0x9;if(_0x3f43c5===_0x1692ba)break;else _0x1eda56['push'](_0x1eda56['shift']());}catch(_0x137a58){_0x1eda56['push'](_0x1eda56['shift']());}}}(_0x1b7e,0xacfe4));function _0x1ba4(_0x91fce3,_0x4271c2){_0x91fce3=_0x91fce3-0x1e0;const _0x1b7e5a=_0x1b7e();let _0x1ba414=_0x1b7e5a[_0x91fce3];return _0x1ba414;}function _0x1b7e(){const _0x473e3f=['isRunning','search','2137490CaINAk','focusPipeline','embedder','toast','sort','var(--okdb-info)','filter','pipelines','engines','get','message','6279FHlEeE','Worker','Embedder','$attr','/pipelines/','var(--okdb-warning)','has','length','name','add','success','964006RTzjDY','meta','storage_key','partially\x20running','source_type','\x22\x20stopped','default','<br>','error','join','pipeline','\x22\x20deleted','key','$ok','Stop\x20all\x20engines\x20in\x20pipeline\x20\x22','some','set','embed-overview','has\x20errors','push','confirm','432JmeUzq','<br><br>This\x20cannot\x20be\x20undone.','var(--okdb-success)','show-create','shared','replace','indexer','DELETE','Pipeline\x20\x22','$dispatch','every','pipelineBusy','816YTkzzv','var(--okdb-danger)','POST','var(--okdb-purple)','info','source_env','type','/env/','Delete\x20failed','created','1362arkHOa','status','Delete\x20the\x20entire\x20pipeline\x20\x22<b>','2042364MbaIft','values','modal','18087768sUJggi','select','var(--okdb-accent)','embed-worker','vector-search','var(--okdb-app-fg-muted)','/stop','worker','2382264bqMpTy'];_0x1b7e=function(){return _0x473e3f;};return _0x1b7e();}import _0x856df5 from'../../engines/parts/engine-row-item.ok.js';export default{'tag':_0x5b8f86(0x200),'dependencies':[_0x856df5],'attr':{'engines':{},'focusPipeline':{}},'context':_0x4ae089=>({'pipelineBusy':{},get 'allEngines'(){const _0xc94528=_0x5b8f86;return _0x4ae089[_0xc94528(0x1e7)][_0xc94528(0x1e1)]??[];},get 'focusPipeline'(){const _0x2ba2d0=_0x5b8f86;return _0x4ae089[_0x2ba2d0(0x1e7)][_0x2ba2d0(0x22c)]??null;},get 'pipelines'(){const _0x26af92=_0x5b8f86,_0x4f0d25=new Map();for(const _0x273f48 of this['allEngines']){const _0x56291c=_0x273f48[_0x26af92(0x1f0)]?.[_0x26af92(0x1f9)]??_0x273f48['name'][_0x26af92(0x209)](/-worker$/,'');_0x4f0d25[_0x26af92(0x1ea)](_0x56291c)||_0x4f0d25[_0x26af92(0x1ff)](_0x56291c,{'name':_0x56291c,'embedder':null,'indexer':null,'search':null,'worker':null});const _0x199efa=_0x4f0d25[_0x26af92(0x1e2)](_0x56291c);'embedder'===_0x273f48[_0x26af92(0x216)]?_0x199efa['embedder']=_0x273f48:_0x26af92(0x20a)===_0x273f48[_0x26af92(0x216)]?_0x199efa[_0x26af92(0x20a)]=_0x273f48:_0x26af92(0x224)===_0x273f48['type']?_0x199efa[_0x26af92(0x22a)]=_0x273f48:_0x26af92(0x223)===_0x273f48[_0x26af92(0x216)]&&(_0x199efa[_0x26af92(0x227)]=_0x273f48);}return[..._0x4f0d25[_0x26af92(0x21e)]()][_0x26af92(0x22f)]((_0x5b39a1,_0x366c75)=>_0x5b39a1[_0x26af92(0x1ec)]['localeCompare'](_0x366c75[_0x26af92(0x1ec)]));},get 'orphans'(){const _0x140ad4=_0x5b8f86,_0x20fd01=new Set();for(const _0x49775f of this[_0x140ad4(0x1e0)])for(const _0x9aedb3 of[_0x49775f[_0x140ad4(0x22d)],_0x49775f[_0x140ad4(0x20a)],_0x49775f[_0x140ad4(0x22a)],_0x49775f[_0x140ad4(0x227)]])_0x9aedb3&&_0x20fd01[_0x140ad4(0x1ed)](_0x9aedb3[_0x140ad4(0x1fb)]);const _0x49d06b=this[_0x140ad4(0x1e0)]['filter'](_0x2a427c=>0x1===[_0x2a427c[_0x140ad4(0x22d)],_0x2a427c['indexer'],_0x2a427c['search'],_0x2a427c['worker']][_0x140ad4(0x231)](Boolean)[_0x140ad4(0x1eb)]),_0x3aeb5b=[];for(const _0x1f6f10 of _0x49d06b){const _0x5733c7=_0x1f6f10['embedder']??_0x1f6f10[_0x140ad4(0x20a)]??_0x1f6f10['search']??_0x1f6f10[_0x140ad4(0x227)];_0x5733c7&&_0x3aeb5b[_0x140ad4(0x202)](_0x5733c7);}return _0x3aeb5b;},get 'groups'(){const _0x28976a=_0x5b8f86;return this[_0x28976a(0x1e0)]['filter'](_0x4c0b5d=>[_0x4c0b5d[_0x28976a(0x22d)],_0x4c0b5d[_0x28976a(0x20a)],_0x4c0b5d[_0x28976a(0x22a)],_0x4c0b5d[_0x28976a(0x227)]][_0x28976a(0x231)](Boolean)[_0x28976a(0x1eb)]>0x1);},'healthDot'(_0xb44642){const _0x56ecef=_0x5b8f86,_0x3a20f0=[_0xb44642[_0x56ecef(0x22d)],_0xb44642[_0x56ecef(0x20a)],_0xb44642[_0x56ecef(0x22a)],_0xb44642[_0x56ecef(0x227)]][_0x56ecef(0x231)](Boolean);return _0x3a20f0[_0x56ecef(0x20e)](_0x2a26e5=>_0x2a26e5[_0x56ecef(0x229)])?_0x56ecef(0x206):_0x3a20f0[_0x56ecef(0x1fe)](_0x21dc02=>_0x56ecef(0x1f7)===_0x21dc02[_0x56ecef(0x21b)])?_0x56ecef(0x211):_0x56ecef(0x1e9);},'healthTitle'(_0x432093){const _0xcb8a99=_0x5b8f86,_0x52aa41=[_0x432093['embedder'],_0x432093[_0xcb8a99(0x20a)],_0x432093[_0xcb8a99(0x22a)],_0x432093[_0xcb8a99(0x227)]][_0xcb8a99(0x231)](Boolean);return _0x52aa41[_0xcb8a99(0x20e)](_0x8095e3=>_0x8095e3['isRunning'])?'all\x20running':_0x52aa41[_0xcb8a99(0x1fe)](_0x54b7ea=>_0xcb8a99(0x1f7)===_0x54b7ea['status'])?_0xcb8a99(0x201):_0xcb8a99(0x1f2);},'typeColor':{'embedder':_0x5b8f86(0x230),'indexer':_0x5b8f86(0x213),'vector-search':_0x5b8f86(0x222),'embed-worker':_0x5b8f86(0x1e9)},'typeLabel':{'embedder':_0x5b8f86(0x1e6),'indexer':'Indexer','vector-search':'Search','embed-worker':_0x5b8f86(0x1e5)},'statusDot':_0x17c6f7=>_0x17c6f7['isRunning']?_0x5b8f86(0x206):_0x5b8f86(0x1f7)===_0x17c6f7[_0x5b8f86(0x21b)]?_0x5b8f86(0x211):_0x5b8f86(0x225),'select'(_0xe8e859){const _0x356863=_0x5b8f86;_0x4ae089[_0x356863(0x20d)](_0x356863(0x221),_0xe8e859);},'openCreate'(){const _0x2bbcb8=_0x5b8f86;_0x4ae089[_0x2bbcb8(0x20d)](_0x2bbcb8(0x207),null);},'_enginesOf':_0x47d6c0=>[_0x47d6c0[_0x5b8f86(0x22d)],_0x47d6c0['indexer'],_0x47d6c0[_0x5b8f86(0x22a)],_0x47d6c0[_0x5b8f86(0x227)]][_0x5b8f86(0x231)](Boolean),'_pipelineUrl'(_0x1f9a51){const _0x578a9c=_0x5b8f86,_0x4a0716=_0x1f9a51['indexer']??_0x1f9a51[_0x578a9c(0x22a)]??_0x1f9a51[_0x578a9c(0x227)];if(!_0x4a0716)return null;const _0x50cd30=_0x4a0716['config']??{},_0x2ef25e=encodeURIComponent(_0x50cd30[_0x578a9c(0x215)]??_0x578a9c(0x1f5)),_0x381525=encodeURIComponent(_0x50cd30[_0x578a9c(0x1f3)]??''),_0x162cc2=encodeURIComponent(_0x50cd30[_0x578a9c(0x1f1)]??_0x1f9a51[_0x578a9c(0x1ec)]);return __ENV__['API']+_0x578a9c(0x217)+_0x2ef25e+'/type/'+_0x381525+_0x578a9c(0x1e8)+_0x162cc2;},async 'stopPipeline'(_0x352926){const _0x1bfbdf=_0x5b8f86;if(await _0x4ae089[_0x1bfbdf(0x1fc)][_0x1bfbdf(0x208)][_0x1bfbdf(0x21f)][_0x1bfbdf(0x203)](_0x1bfbdf(0x1fd)+_0x352926['name']+'\x22?')){this[_0x1bfbdf(0x20f)]={...this[_0x1bfbdf(0x20f)],[_0x352926[_0x1bfbdf(0x1ec)]]:!0x0};try{const _0x2354ba=this['_pipelineUrl'](_0x352926);_0x2354ba&&await fetch(_0x2354ba+_0x1bfbdf(0x226),{'method':_0x1bfbdf(0x212)}),_0x4ae089[_0x1bfbdf(0x1fc)][_0x1bfbdf(0x208)]?.[_0x1bfbdf(0x22e)]?.[_0x1bfbdf(0x214)]?.(_0x1bfbdf(0x20c)+_0x352926[_0x1bfbdf(0x1ec)]+_0x1bfbdf(0x1f4)),_0x4ae089['$dispatch'](_0x1bfbdf(0x219),null);}catch(_0x31003f){_0x4ae089[_0x1bfbdf(0x1fc)][_0x1bfbdf(0x208)]?.[_0x1bfbdf(0x22e)]?.[_0x1bfbdf(0x1f7)]?.(_0x31003f?.[_0x1bfbdf(0x1e3)]||'Stop\x20failed');}finally{this[_0x1bfbdf(0x20f)]={...this[_0x1bfbdf(0x20f)],[_0x352926[_0x1bfbdf(0x1ec)]]:!0x1};}}},async 'deletePipeline'(_0x48520f){const _0x119d47=_0x5b8f86,_0xf9c2b5=this['_enginesOf'](_0x48520f)['map'](_0x37c68e=>'•\x20'+_0x37c68e['type']+':\x20'+_0x37c68e['name'])[_0x119d47(0x1f8)](_0x119d47(0x1f6));if(await _0x4ae089[_0x119d47(0x1fc)][_0x119d47(0x208)][_0x119d47(0x21f)][_0x119d47(0x203)](_0x119d47(0x21c)+_0x48520f[_0x119d47(0x1ec)]+'</b>\x22?<br><br>'+_0xf9c2b5+_0x119d47(0x205))){this[_0x119d47(0x20f)]={...this[_0x119d47(0x20f)],[_0x48520f['name']]:!0x0};try{const _0x53a525=this['_pipelineUrl'](_0x48520f);_0x53a525&&await fetch(_0x53a525,{'method':_0x119d47(0x20b)}),_0x4ae089[_0x119d47(0x1fc)]['shared']?.[_0x119d47(0x22e)]?.[_0x119d47(0x1ee)]?.('Pipeline\x20\x22'+_0x48520f[_0x119d47(0x1ec)]+_0x119d47(0x1fa)),_0x4ae089['$dispatch'](_0x119d47(0x219),null);}catch(_0x40b55d){_0x4ae089[_0x119d47(0x1fc)][_0x119d47(0x208)]?.[_0x119d47(0x22e)]?.[_0x119d47(0x1f7)]?.(_0x40b55d?.['message']||_0x119d47(0x218));}finally{this[_0x119d47(0x20f)]={...this[_0x119d47(0x20f)],[_0x48520f[_0x119d47(0x1ec)]]:!0x1};}}}}),'template':'\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:20px;\x20max-width:860px;\x22>\x0a\x0a\x20\x20<!--\x20Header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:18px;\x22>Embeddings\x20Overview</div>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openCreate()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20font-weight:600;\x20padding:6px\x2016px;\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20+\x20Create\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x0a\x20\x20<!--\x20No\x20engines\x20at\x20all\x20-->\x0a\x20\x20<if\x20:=\x22allEngines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:14px;\x20line-height:1.8;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20engines\x20created\x20yet.<br>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Use\x20<b>+\x20Create</b>\x20to\x20set\x20up\x20a\x20pipeline\x20or\x20individual\x20engine.<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b>Embedder</b>\x20—\x20connection\x20to\x20an\x20ML\x20service\x20(Ollama,\x20OpenAI\x20…)<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b>Indexer</b>\x20—\x20watches\x20a\x20OKDB\x20type\x27s\x20change\x20log\x20and\x20creates\x20embeddings<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b>Worker</b>\x20—\x20queue\x20consumer\x20for\x20queue-mode\x20indexing<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b>Search</b>\x20—\x20nearest-neighbour\x20index\x20over\x20a\x20storage\x20key\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Pipeline\x20groups\x20-->\x0a\x20\x20<if\x20:=\x22groups.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20opacity:.45;\x20letter-spacing:.06em;\x20margin-bottom:8px;\x22>Pipelines</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22groups\x22\x20let:item=\x22g\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27background:var(--okdb-app-surface);\x20border-radius:10px;\x20padding:14px\x2016px;\x20box-shadow:\x27\x20+\x20(focusPipeline\x20===\x20g.name\x20?\x20\x270\x200\x200\x202px\x20var(--okdb-accent),\x200\x200\x2012px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent)\x27\x20:\x20\x270\x200\x205px\x20#ffffff1a\x27)\x20+\x20\x27;\x20transition:box-shadow\x20.3s;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Group\x20header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20margin-bottom:10px;\x22>\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\x20\x20\x20\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthDot(g)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22healthTitle(g)\x22\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\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>{{\x20g.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Vector\x20store\x20summary:\x20storage_key\x20+\x20persisted\x20count\x20from\x20indexer\x20stats\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22g.indexer?.meta?.pipeline\x22>\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\x20\x20\x20\x20style=\x22font-size:11px;\x20opacity:.6;\x20font-family:monospace;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22LMDB\x20vector\x20store\x20for\x20this\x20pipeline\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\x20\x20\x20\x20~emb:vec:{{\x20g.indexer.config?.storage_key\x20??\x20g.name\x20}}\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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline-level\x20actions\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:6px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22[g.embedder,\x20g.indexer,\x20g.search,\x20g.worker].filter(Boolean).some(e\x20=>\x20e.isRunning)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22stopPipeline(g)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22pipelineBusy[g.name]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-warning);\x20border-color:var(--okdb-warning);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Stop\x20all\x20engines\x20in\x20this\x20pipeline\x22\x0a\x20\x20\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\x20\x20\x20\x20\x20\x20{{\x20pipelineBusy[g.name]\x20?\x20\x27…\x27\x20:\x20\x27⏹\x20Stop\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\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<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22deletePipeline(g)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22pipelineBusy[g.name]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-danger);\x20border-color:var(--okdb-danger);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Stop\x20and\x20permanently\x20delete\x20all\x20engines\x20in\x20this\x20pipeline\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\x20\x20\x20\x20{{\x20pipelineBusy[g.name]\x20?\x20\x27…\x27\x20:\x20\x27✕\x20Delete\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Engine\x20rows\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:5px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22[g.embedder,\x20g.indexer,\x20g.search,\x20g.worker].filter(Boolean)\x22\x20let:item=\x22eng\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<engine-row-item\x0a\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20:label=\x22typeLabel[eng.type]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:label-color=\x22typeColor[eng.type]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:subtitle=\x22eng.status\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action-label=\x22Open\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22select($event.detail)\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\x20\x20\x20\x20<if\x20:=\x22eng.status\x20===\x20\x27error\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20color:var(--okdb-danger);\x20flex-shrink:0;\x22\x20:title=\x22eng.error\x20||\x20\x27error\x27\x22>⚠\x20error</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</engine-row-item>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Missing\x20role\x20indicators\x20for\x20pipeline\x20completeness\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!g.worker\x20&&\x20g.indexer?.config?.mode\x20===\x20\x27queue\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20padding:3px\x208px;\x20color:var(--okdb-warning);\x22>⚠\x20queue\x20mode\x20—\x20no\x20worker\x20configured</div>\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<if\x20:=\x22!g.search\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20padding:3px\x208px;\x20color:var(--okdb-warning);\x22>⚠\x20no\x20vector-search\x20engine</div>\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\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Standalone\x20engines\x20(don\x27t\x20form\x20a\x20group)\x20-->\x0a\x20\x20<if\x20:=\x22allEngines.length\x20>\x200\x20&&\x20(groups.length\x20>\x200\x20?\x20orphans.length\x20>\x200\x20:\x20true)\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20text-transform:uppercase;\x20opacity:.45;\x20letter-spacing:.06em;\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20groups.length\x20>\x200\x20?\x20\x27Standalone\x20Engines\x27\x20:\x20\x27Engines\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22groups.length\x20>\x200\x20?\x20orphans\x20:\x20allEngines\x22\x20let:item=\x22eng\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<engine-row-item\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:label=\x22typeLabel[eng.type]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:label-color=\x22typeColor[eng.type]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:subtitle=\x22eng.status\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20action-label=\x22Open\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22select($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.status\x20===\x20\x27error\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20color:var(--okdb-danger);\x20flex-shrink:0;\x22\x20:title=\x22eng.error\x20||\x20\x27error\x27\x22>⚠\x20error</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</engine-row-item>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Summary\x20counts\x20-->\x0a\x20\x20<if\x20:=\x22allEngines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:16px;\x20font-size:12px;\x20opacity:.5;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<span>{{\x20allEngines.filter(e\x20=>\x20e.isRunning).length\x20}}\x20/\x20{{\x20allEngines.length\x20}}\x20running</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22allEngines.filter(e\x20=>\x20e.status\x20===\x20\x27error\x27).length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-danger);\x22>{{\x20allEngines.filter(e\x20=>\x20e.status\x20===\x20\x27error\x27).length\x20}}\x20error(s)</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','style':''};
|