@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 _0x4bd05f=_0x4771;(function(_0xdb4f29,_0x456712){const _0x1897a2=_0x4771,_0x10ec6f=_0xdb4f29();while(!![]){try{const _0x59b9f5=-parseInt(_0x1897a2(0x248))/0x1+-parseInt(_0x1897a2(0x19b))/0x2*(parseInt(_0x1897a2(0x1b7))/0x3)+-parseInt(_0x1897a2(0x1d5))/0x4+-parseInt(_0x1897a2(0x1f7))/0x5*(parseInt(_0x1897a2(0x24a))/0x6)+parseInt(_0x1897a2(0x1f5))/0x7*(parseInt(_0x1897a2(0x213))/0x8)+-parseInt(_0x1897a2(0x239))/0x9*(parseInt(_0x1897a2(0x1ce))/0xa)+-parseInt(_0x1897a2(0x21d))/0xb*(-parseInt(_0x1897a2(0x219))/0xc);if(_0x59b9f5===_0x456712)break;else _0x10ec6f['push'](_0x10ec6f['shift']());}catch(_0x538e55){_0x10ec6f['push'](_0x10ec6f['shift']());}}}(_0x9be8,0x4a19a));import{buildEngineBasePath as _0x442149,compactEngineConfigMetrics as _0x25ed17,compactEngineErrorText as _0x54d48c,compactEngineRowMetrics as _0x23275d,compactEngineRowStatusBadges as _0x28b8b6,compactEngineRowSummary as _0x42a232,compactEngineStatusMeta as _0x23cb5e,isEmbeddingsEngine as _0x4d531f}from'../engine-ui-utils.js';function _0x4771(_0x71be91,_0xf2fc71){_0x71be91=_0x71be91-0x199;const _0x9be8cf=_0x9be8();let _0x47713a=_0x9be8cf[_0x71be91];return _0x47713a;}function l(_0x3771ed,_0x5683cc=!0x1){const _0x31603d=_0x4771;return null==_0x3771ed?_0x5683cc:!0x0===_0x3771ed||_0x31603d(0x1dc)===_0x3771ed||!0x1!==_0x3771ed&&_0x31603d(0x22c)!==_0x3771ed&&Boolean(_0x3771ed);}const c={'Start':'▶','Stop':'■','Pause':'❚❚','Resume':'▶','Restart':'↻','Retry':'↻','Reset':'⟲','Rebuild':'⚒','Edit':'✎','Type':'↗','Delete':'🗑'};export default{'tag':_0x4bd05f(0x1f9),'attr':{'engine':{},'env':{},'pipeline':{},'hidepipeline':{},'hidetype':{},'hideenv':{},'variant':{},'compact':{},'showdelete':{}},'context':_0x541113=>({'busy':!0x1,'error':null,'typeLabel':{'embedder':_0x4bd05f(0x1d0),'indexer':_0x4bd05f(0x21f),'search':'Search','worker':_0x4bd05f(0x1e8),'vector-search':_0x4bd05f(0x19a),'embed-worker':_0x4bd05f(0x1e8),'materializer':_0x4bd05f(0x1b3),'file-extractor':_0x4bd05f(0x1b5),'file-collection':'Collection','file-extractor-worker':_0x4bd05f(0x1e8),'processor':_0x4bd05f(0x1bf),'queue-worker':_0x4bd05f(0x245)},'typeColor':{'embedder':'var(--okdb-info)','indexer':_0x4bd05f(0x1b4),'vector-search':'var(--okdb-accent)','embed-worker':'var(--okdb-warning)','materializer':_0x4bd05f(0x209),'file-extractor':'var(--okdb-success)','file-collection':_0x4bd05f(0x1d9),'file-extractor-worker':_0x4bd05f(0x237),'processor':_0x4bd05f(0x1a7),'queue-worker':_0x4bd05f(0x1b4)},get 'eng'(){const _0x42e3e1=_0x4bd05f;return _0x541113[_0x42e3e1(0x1c5)][_0x42e3e1(0x21b)]??{};},get 'envName'(){const _0x25d6c5=_0x4bd05f;return _0x541113[_0x25d6c5(0x1c5)][_0x25d6c5(0x246)]??this[_0x25d6c5(0x1c1)]?.['env']??this[_0x25d6c5(0x1c1)]?.['_uiEnv']??this['eng']?.[_0x25d6c5(0x230)]??this[_0x25d6c5(0x1c1)]?.[_0x25d6c5(0x1e5)]?.[_0x25d6c5(0x1ca)]??null;},get 'isMember'(){const _0x3e335d=_0x4bd05f;return'member'===_0x541113[_0x3e335d(0x1c5)][_0x3e335d(0x20f)]||_0x3e335d(0x1de)!==_0x541113[_0x3e335d(0x1c5)][_0x3e335d(0x20f)]&&l(_0x541113[_0x3e335d(0x1c5)][_0x3e335d(0x252)],!0x1);},get 'hidePipeline'(){const _0x5a40a7=_0x4bd05f;return l(_0x541113[_0x5a40a7(0x1c5)][_0x5a40a7(0x218)],!0x1);},get 'hideType'(){const _0x38f37c=_0x4bd05f;return l(_0x541113[_0x38f37c(0x1c5)][_0x38f37c(0x20d)],!0x1);},get 'hideEnv'(){const _0x3962ef=_0x4bd05f;return l(_0x541113[_0x3962ef(0x1c5)]['hideenv'],!0x1);},get 'showDelete'(){const _0x4ad39a=_0x4bd05f;return l(_0x541113[_0x4ad39a(0x1c5)][_0x4ad39a(0x1ec)],!0x1);},get 'basePath'(){const _0x488e51=_0x4bd05f;return _0x442149(this['eng'],this[_0x488e51(0x208)]);},get 'embeddingsMode'(){const _0x1b9ab1=_0x4bd05f;return _0x4d531f(this[_0x1b9ab1(0x1c1)]);},get 'running'(){const _0x54c8d9=_0x4bd05f;return!!this['eng']?.[_0x54c8d9(0x222)];},get 'statusMeta'(){const _0x3f0610=_0x4bd05f;return _0x23cb5e(this[_0x3f0610(0x1c1)]);},get 'paused'(){const _0x36305c=_0x4bd05f;return!0x0===this[_0x36305c(0x1c1)]?.[_0x36305c(0x1dd)]?.[_0x36305c(0x216)]||!0x0===this[_0x36305c(0x1c1)]?.[_0x36305c(0x1ef)]?.[_0x36305c(0x216)]||!0x0===this[_0x36305c(0x1c1)]?.[_0x36305c(0x216)];},get 'pipelineName'(){const _0x55f49c=_0x4bd05f;return _0x541113[_0x55f49c(0x1c5)][_0x55f49c(0x1c9)]??this[_0x55f49c(0x1c1)]?.[_0x55f49c(0x1c7)]?.['pipeline']??this[_0x55f49c(0x1c1)]?.[_0x55f49c(0x1e5)]?.[_0x55f49c(0x1c9)]??this[_0x55f49c(0x1c1)]?.[_0x55f49c(0x1e5)]?.['collectionEngine']??null;},get 'pipelineLabel'(){const _0x5aa8a1=_0x4bd05f;return this[_0x5aa8a1(0x1c4)]?String(this[_0x5aa8a1(0x1c4)])['split'](':')[_0x5aa8a1(0x23e)]():null;},get 'sourceType'(){const _0x35e147=_0x4bd05f;return this[_0x35e147(0x1c1)]?.[_0x35e147(0x1e5)]?.['source_type']??this['eng']?.[_0x35e147(0x1ef)]?.[_0x35e147(0x1fc)]??this[_0x35e147(0x1c1)]?.[_0x35e147(0x1dd)]?.[_0x35e147(0x1fc)]??this[_0x35e147(0x1c1)]?.['stats']?.[_0x35e147(0x1ae)]?.[_0x35e147(0x1fc)]??this['eng']?.['config']?.['target_type']??null;},get 'canRunLifecycle'(){const _0x587298=_0x4bd05f;return!!this[_0x587298(0x19c)];},get 'title'(){const _0x3ad2b9=_0x4bd05f;return this[_0x3ad2b9(0x1c1)]?.[_0x3ad2b9(0x1d3)]??this[_0x3ad2b9(0x1c1)]?.[_0x3ad2b9(0x1ba)]??'Engine';},get 'displayTitle'(){const _0x304a72=_0x4bd05f,_0x31c84d=String(this[_0x304a72(0x1ff)]??'');return _0x31c84d[_0x304a72(0x215)](':')?_0x31c84d[_0x304a72(0x1d2)](':')[_0x304a72(0x23e)]():_0x31c84d;},get 'titleNamespace'(){const _0x19f6ef=_0x4bd05f,_0x5c6488=String(this[_0x19f6ef(0x1ff)]??'');return _0x5c6488[_0x19f6ef(0x215)](':')?_0x5c6488[_0x19f6ef(0x1d2)](':')[_0x19f6ef(0x20a)](0x0,-0x1)[_0x19f6ef(0x238)](':'):null;},get 'description'(){return _0x42a232(this['eng']);},get 'inlineError'(){const _0x10e851=_0x4bd05f;return _0x54d48c(this[_0x10e851(0x1c1)]);},get 'metadata'(){const _0x3ae969=_0x4bd05f,_0x5aa7be=[_0x3ae969(0x225),'Field',_0x3ae969(0x240),_0x3ae969(0x1d0),_0x3ae969(0x1bd),_0x3ae969(0x202),_0x3ae969(0x24e),_0x3ae969(0x22a),_0x3ae969(0x1b8),_0x3ae969(0x20b),_0x3ae969(0x1bb),_0x3ae969(0x1aa),'Prepare',_0x3ae969(0x1e9)],_0x37a53d=new Map(_0x25ed17(this['eng'])[_0x3ae969(0x1fa)](_0x4c12bc=>[_0x4c12bc['label'],_0x4c12bc])),_0x1a9da1=[];for(const _0xd27b5 of _0x5aa7be){if(this[_0x3ae969(0x1a8)]&&_0x3ae969(0x1d0)===_0xd27b5)continue;const _0x359976=_0x37a53d[_0x3ae969(0x236)](_0xd27b5);_0x359976&&(_0x1a9da1[_0x3ae969(0x234)](_0x359976),_0x37a53d['delete'](_0xd27b5));}for(const _0x17c47f of _0x37a53d[_0x3ae969(0x1b1)]())(this[_0x3ae969(0x1a8)]||this[_0x3ae969(0x1a5)])&&_0x3ae969(0x1d6)===_0x17c47f[_0x3ae969(0x1a0)]||_0x1a9da1[_0x3ae969(0x234)](_0x17c47f);return _0x1a9da1[_0x3ae969(0x20a)](0x0,this[_0x3ae969(0x1a8)]?0x6:0xa);},get 'metrics'(){const _0x1eab27=_0x4bd05f,_0x5049d8=[_0x1eab27(0x1da),_0x1eab27(0x1aa),_0x1eab27(0x24b),_0x1eab27(0x1e9),_0x1eab27(0x1d0),_0x1eab27(0x24e),'Model','Algorithm'];return _0x23275d(this[_0x1eab27(0x1c1)])[_0x1eab27(0x22b)](_0x562598=>!_0x5049d8[_0x1eab27(0x215)](_0x562598['label']))[_0x1eab27(0x20a)](0x0,this[_0x1eab27(0x1a8)]?0x5:0x8);},get 'healthBadges'(){const _0x56e63c=_0x4bd05f,_0x137ec4=this['statusMeta'][_0x56e63c(0x1a0)];return _0x28b8b6(this[_0x56e63c(0x1c1)])[_0x56e63c(0x22b)](_0x2df74e=>_0x2df74e?.[_0x56e63c(0x1be)]&&_0x2df74e[_0x56e63c(0x1be)]!==_0x137ec4)[_0x56e63c(0x22b)](_0x32b2d6=>!(this['running']&&_0x56e63c(0x231)===_0x32b2d6[_0x56e63c(0x1be)]))[_0x56e63c(0x20a)](0x0,0x2);},get 'primaryAction'(){const _0x3f0005=_0x4bd05f;return this[_0x3f0005(0x1f8)]?this[_0x3f0005(0x1cb)]?this[_0x3f0005(0x1f3)]?{'label':_0x3f0005(0x232),'method':_0x3f0005(0x1e7),'suffix':_0x3f0005(0x1a4),'color':_0x3f0005(0x237),'confirm':_0x3f0005(0x243)+this[_0x3f0005(0x1ff)]+'\x22?','toast':_0x3f0005(0x1c6)}:_0x3f0005(0x214)===this[_0x3f0005(0x1c1)]?.[_0x3f0005(0x226)]?{'label':_0x3f0005(0x250),'method':'POST','suffix':_0x3f0005(0x1e3),'color':_0x3f0005(0x1a7),'confirm':_0x3f0005(0x1d7)+this[_0x3f0005(0x1ff)]+'\x22?','toast':_0x3f0005(0x1e2)}:{'label':'Start','method':'POST','suffix':_0x3f0005(0x1b2),'color':_0x3f0005(0x24c),'confirm':null,'toast':_0x3f0005(0x247)}:_0x3f0005(0x214)===this['eng']?.['status']?{'label':_0x3f0005(0x1c0),'method':_0x3f0005(0x1e7),'suffix':_0x3f0005(0x212),'color':'var(--okdb-orange)','confirm':null,'toast':_0x3f0005(0x23a)}:this[_0x3f0005(0x216)]?{'label':_0x3f0005(0x21a),'method':_0x3f0005(0x1e7),'suffix':'/resume','color':_0x3f0005(0x24c),'confirm':null,'toast':_0x3f0005(0x249)}:{'label':_0x3f0005(0x1e1),'method':_0x3f0005(0x1e7),'suffix':_0x3f0005(0x1f2),'color':_0x3f0005(0x237),'confirm':null,'toast':_0x3f0005(0x1f0)}:null;},get 'overflowActions'(){const _0x241e49=_0x4bd05f,_0x9be2a2=[];return this['canRunLifecycle']&&(_0x9be2a2['push']({'key':_0x241e49(0x1c8),'label':_0x241e49(0x250),'method':'POST','suffix':_0x241e49(0x1e3),'color':_0x241e49(0x1ed),'confirm':this[_0x241e49(0x1cb)]?_0x241e49(0x1d7)+this[_0x241e49(0x1ff)]+'\x22?':null,'toast':_0x241e49(0x1e2)}),this[_0x241e49(0x1cb)]||_0x9be2a2[_0x241e49(0x234)]({'key':'pause','label':this[_0x241e49(0x216)]?_0x241e49(0x21a):_0x241e49(0x1e1),'method':_0x241e49(0x1e7),'suffix':this[_0x241e49(0x216)]?_0x241e49(0x1d8):'/pause','color':this[_0x241e49(0x216)]?_0x241e49(0x24c):_0x241e49(0x237),'toast':this[_0x241e49(0x216)]?'Engine\x20resumed':_0x241e49(0x1f0)}),_0x241e49(0x1df)===this[_0x241e49(0x1c1)]?.[_0x241e49(0x1b0)]&&(_0x9be2a2[_0x241e49(0x234)]({'key':_0x241e49(0x23d),'label':_0x241e49(0x20e),'title':_0x241e49(0x1eb),'method':_0x241e49(0x1e7),'suffix':'/reset-cursor','color':_0x241e49(0x1f4),'confirm':_0x241e49(0x199)+this[_0x241e49(0x1ff)]+'\x22?','toast':'Engine\x20cursor\x20reset'}),_0x9be2a2['push']({'key':_0x241e49(0x1ad),'label':_0x241e49(0x203),'method':'POST','suffix':_0x241e49(0x1a9),'color':_0x241e49(0x24c),'confirm':'Rebuild\x20engine\x20\x22'+this[_0x241e49(0x1ff)]+'\x22?','toast':_0x241e49(0x200)}))),_0x9be2a2[_0x241e49(0x234)]({'key':_0x241e49(0x22f),'label':_0x241e49(0x1cf),'color':_0x241e49(0x1db),'local':'edit'}),this[_0x241e49(0x24d)]&&!this[_0x241e49(0x22d)]&&_0x9be2a2[_0x241e49(0x234)]({'key':_0x241e49(0x1b0),'label':_0x241e49(0x1f1),'title':_0x241e49(0x1b9),'color':'var(--okdb-accent-2)','local':_0x241e49(0x1b0)}),this[_0x241e49(0x233)]&&this[_0x241e49(0x1f8)]&&_0x9be2a2[_0x241e49(0x234)]({'key':_0x241e49(0x223),'label':_0x241e49(0x1a6),'method':'DELETE','suffix':'','color':_0x241e49(0x1e6),'confirm':'Delete\x20engine\x20\x22'+this['title']+'\x22?','toast':_0x241e49(0x244),'destructive':!0x0}),_0x9be2a2;},'typeName'(_0x24f8bf){const _0x250de4=_0x4bd05f;return this[_0x250de4(0x1ab)][_0x24f8bf]||_0x24f8bf||_0x250de4(0x227);},'glyph':_0x3f2cea=>c[_0x3f2cea]??'','pillStyle'(_0xf1eee0){const _0x53469d=_0x4bd05f,_0x9914c=_0xf1eee0[_0x53469d(0x220)]('var(');return _0x53469d(0x1ea)+(_0x9914c?_0x53469d(0x1e4)+_0xf1eee0+_0x53469d(0x221):_0xf1eee0+'55')+_0x53469d(0x206)+_0xf1eee0+_0x53469d(0x19d)+(_0x9914c?_0x53469d(0x1e4)+_0xf1eee0+_0x53469d(0x1a3):_0xf1eee0+'12')+';';},'typeBadgeStyle'(){const _0xae58f4=_0x4bd05f;return this['pillStyle'](this[_0xae58f4(0x228)][this['eng']?.[_0xae58f4(0x1b0)]]??'var(--okdb-app-fg-muted)');},'pipelineBadgeStyle':()=>_0x4bd05f(0x21c),'envBadgeStyle':()=>'border-color:color-mix(in\x20srgb,\x20var(--okdb-app-border)\x2040%,\x20transparent);\x20color:#7a93a8;\x20background:transparent;','healthBadgeStyle'(_0x3a92bc){const _0x5ad585=_0x4bd05f;return this[_0x5ad585(0x1f6)](_0x3a92bc?.[_0x5ad585(0x1b6)]??_0x5ad585(0x1ed));},'typePillStyle'(){const _0x30f808=_0x4bd05f;return this[_0x30f808(0x210)]();},'statusPillStyle'(){const _0x22e9cb=_0x4bd05f;return this[_0x22e9cb(0x1f6)](this[_0x22e9cb(0x1d1)][_0x22e9cb(0x1b6)]??'var(--okdb-app-fg-muted)');},'metricToneColor'(_0x54f628=null){const _0x3e72d8=_0x4bd05f;if(_0x3e72d8(0x1cc)===_0x54f628?.[_0x3e72d8(0x1a0)]&&Number(String(_0x54f628[_0x3e72d8(0x1e0)])[_0x3e72d8(0x1c2)](/,/g,''))<=0x0)return _0x3e72d8(0x1ed);switch(_0x54f628?.['tone']){case'danger':return _0x3e72d8(0x1e6);case'warning':return'var(--okdb-warning)';default:return _0x3e72d8(0x242);}},'metricPercent'(_0x1bb2fe=null){const _0x594be6=_0x4bd05f,_0x56f880=String(_0x1bb2fe?.[_0x594be6(0x1e0)]??'')[_0x594be6(0x205)](/(?:\(|\b)(\d{1,3})%/);if(!_0x56f880)return null;const _0x261c19=Number(_0x56f880[0x1]);return Number[_0x594be6(0x235)](_0x261c19)?Math[_0x594be6(0x22e)](0x0,Math['min'](0x64,_0x261c19)):null;},'progressMetric'(){const _0x5666c2=_0x4bd05f;return _0x23275d(this[_0x5666c2(0x1c1)])[_0x5666c2(0x201)](_0x32e455=>_0x5666c2(0x19e)===_0x32e455?.[_0x5666c2(0x1a0)])??null;},'progressFillStyle'(){const _0x225911=_0x4bd05f,_0x439d25=this[_0x225911(0x20c)]();return _0x225911(0x23c)+(this[_0x225911(0x251)](_0x439d25)??0x0)+_0x225911(0x1fe)+(_0x225911(0x24f)===_0x439d25?.[_0x225911(0x204)]?_0x225911(0x1e6):'warning'===_0x439d25?.['tone']?'var(--okdb-warning)':_0x225911(0x24c))+';';},'showProgressBar'(){const _0x23e287=_0x4bd05f,_0x4833bd=this[_0x23e287(0x251)](this['progressMetric']());return null!=_0x4833bd&&_0x4833bd<0x64;},async 'runAction'(_0x2bce69){const _0x1dfb6e=_0x4bd05f;if(_0x2bce69){if(_0x1dfb6e(0x22f)!==_0x2bce69[_0x1dfb6e(0x1cd)]){if(_0x1dfb6e(0x1b0)!==_0x2bce69[_0x1dfb6e(0x1cd)]){if(this[_0x1dfb6e(0x19c)]&&(!_0x2bce69[_0x1dfb6e(0x1fd)]||await _0x541113[_0x1dfb6e(0x224)][_0x1dfb6e(0x211)][_0x1dfb6e(0x241)][_0x1dfb6e(0x1fd)](_0x2bce69['confirm']))){this[_0x1dfb6e(0x1af)]=!0x0,this[_0x1dfb6e(0x214)]=null;try{const _0x146837=await fetch(''+this[_0x1dfb6e(0x19c)]+(_0x2bce69[_0x1dfb6e(0x1ac)]??''),{'method':_0x2bce69[_0x1dfb6e(0x1a1)]??'POST'}),_0x56a2a1=await _0x146837[_0x1dfb6e(0x23f)]()[_0x1dfb6e(0x1fb)](()=>({}));if(!_0x146837['ok'])throw new Error(_0x56a2a1?.[_0x1dfb6e(0x214)]?.[_0x1dfb6e(0x21e)]||_0x2bce69[_0x1dfb6e(0x1a0)]+_0x1dfb6e(0x1a2));_0x541113['$ok']['shared']?.[_0x1dfb6e(0x1bc)]?.[_0x1dfb6e(0x207)]?.(_0x2bce69[_0x1dfb6e(0x1bc)]??_0x2bce69[_0x1dfb6e(0x1a0)]+_0x1dfb6e(0x23b)),_0x541113[_0x1dfb6e(0x217)](_0x1dfb6e(0x1c3),_0x2bce69['key']??_0x2bce69[_0x1dfb6e(0x1a0)]),_0x541113[_0x1dfb6e(0x217)](_0x1dfb6e(0x1d4));}catch(_0x5ea161){this[_0x1dfb6e(0x214)]=_0x5ea161?.[_0x1dfb6e(0x21e)]||String(_0x5ea161),_0x541113['$ok'][_0x1dfb6e(0x211)]?.[_0x1dfb6e(0x1bc)]?.[_0x1dfb6e(0x214)]?.(this[_0x1dfb6e(0x214)]);}finally{this[_0x1dfb6e(0x1af)]=!0x1;}}}else _0x541113[_0x1dfb6e(0x217)](_0x1dfb6e(0x1ee),{'engine':this[_0x1dfb6e(0x1c1)],'type':this[_0x1dfb6e(0x24d)],'env':this[_0x1dfb6e(0x208)]});}else _0x541113['$dispatch'](_0x1dfb6e(0x22f),this[_0x1dfb6e(0x1c1)]);}}}),'template':_0x4bd05f(0x229),'style':_0x4bd05f(0x19f)};function _0x9be8(){const _0x28ae04=['join','2007rTtQJc','Engine\x20retry\x20started','\x20complete','height:100%;width:','reset','pop','json','Storage','modal','var(--okdb-app-fg)','Stop\x20engine\x20\x22','Engine\x20deleted','Queue\x20Worker','env','Engine\x20started','180565HERfzx','Engine\x20resumed','6UDnKpl','Prepare','var(--okdb-success)','sourceType','Provider','danger','Restart','metricPercent','compact','Reset\x20cursor\x20for\x20engine\x20\x22','Search','156500wltHkD','basePath',';\x20background:','Progress','\x0aengine-resource-card\x20{\x20display:\x20block;\x20}\x0a\x0a/*\x20──\x20Top-level\x20hover\x20(applies\x20when\x20component\x20root\x20carries\x20.engine-resource-card\x20class)\x20──\x20*/\x0a.engine-resource-card:hover\x20{\x20border-color:\x20var(--okdb-app-border-strong);\x20}\x0a\x0a/*\x20──\x20Card\x20variant\x20(standalone)\x20───────────────────────\x20*/\x0aengine-resource-card\x20.erc--card\x20{\x0a\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20border-radius:\x2010px;\x0a\x20\x20padding:\x2012px\x2014px;\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-direction:\x20column;\x0a\x20\x20gap:\x208px;\x0a\x20\x20box-shadow:\x200\x200\x204px\x20rgba(255,255,255,0.03);\x0a\x20\x20transition:\x20border-color\x20.14s;\x0a}\x0aengine-resource-card\x20.erc--card:hover\x20{\x20border-color:\x20var(--okdb-app-border-strong);\x20}\x0a\x0a/*\x20──\x20Member\x20variant\x20(inside\x20pipeline)\x20────────────────\x20*/\x0aengine-resource-card\x20.erc--member\x20{\x0a\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20border-radius:\x208px;\x0a\x20\x20padding:\x209px\x2012px;\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-direction:\x20column;\x0a\x20\x20gap:\x206px;\x0a\x20\x20transition:\x20border-color\x20.12s,\x20background\x20.12s;\x0a}\x0aengine-resource-card\x20.erc--member:hover\x20{\x20border-color:\x20var(--okdb-app-border-strong);\x20background:\x20var(--okdb-app-surface);\x20}\x0a\x0a/*\x20──\x20Header\x20row\x20─────────────────────────────────────\x20*/\x0aengine-resource-card\x20.erc-header\x20{\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x205px;\x20flex-wrap:\x20wrap;\x20min-width:\x200;\x20}\x0aengine-resource-card\x20.erc-dot\x20{\x20width:\x207px;\x20height:\x207px;\x20border-radius:\x2050%;\x20flex-shrink:\x200;\x20}\x0aengine-resource-card\x20.erc-name-group\x20{\x20display:\x20flex;\x20align-items:\x20baseline;\x20gap:\x205px;\x20min-width:\x200;\x20}\x0aengine-resource-card\x20.erc-name\x20{\x20font-size:\x2013px;\x20font-weight:\x20600;\x20color:\x20var(--okdb-app-fg-strong);\x20overflow:\x20hidden;\x20text-overflow:\x20ellipsis;\x20white-space:\x20nowrap;\x20letter-spacing:\x20-.01em;\x20}\x0aengine-resource-card\x20.erc-ns\x20{\x20font-size:\x2010.5px;\x20color:\x20var(--okdb-app-fg-subtle);\x20white-space:\x20nowrap;\x20}\x0aengine-resource-card\x20.erc-spacer\x20{\x20flex:\x201;\x20min-width:\x200;\x20}\x0aengine-resource-card\x20.erc-sep\x20{\x20width:\x201px;\x20height:\x2012px;\x20background:\x20var(--okdb-app-border);\x20flex-shrink:\x200;\x20}\x0a\x0a/*\x20──\x20Pills\x20──────────────────────────────────────────\x20*/\x0aengine-resource-card\x20.erc-pill\x20{\x20font-size:\x2010.5px;\x20padding:\x201px\x208px;\x20border-radius:\x20999px;\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x20color:\x20var(--okdb-app-fg-muted);\x20background:\x20transparent;\x20display:\x20inline-flex;\x20align-items:\x20center;\x20white-space:\x20nowrap;\x20flex-shrink:\x200;\x20letter-spacing:\x20.01em;\x20}\x0aengine-resource-card\x20.erc-pill--pipeline\x20{\x20border-color:\x20#6366f144;\x20color:\x20#a5b4fc;\x20background:\x20#6366f110;\x20}\x0aengine-resource-card\x20.erc-pill--env\x20{\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-app-border)\x2040%,\x20transparent);\x20color:\x20#7a93a8;\x20}\x0a\x0a/*\x20──\x20Buttons\x20────────────────────────────────────────\x20*/\x0aengine-resource-card\x20.erc-btn\x20{\x20font-size:\x2011px;\x20padding:\x202px\x2010px;\x20border-radius:\x20999px;\x20border:\x201px\x20solid;\x20cursor:\x20pointer;\x20line-height:\x201.5;\x20flex-shrink:\x200;\x20white-space:\x20nowrap;\x20transition:\x20filter\x20.12s;\x20}\x0aengine-resource-card\x20.erc-btn--primary\x20{\x20font-weight:\x20600;\x20}\x0aengine-resource-card\x20.erc-btn--muted\x20{\x20background:\x20var(--okdb-app-bg-deep);\x20border-color:\x20var(--okdb-app-border);\x20}\x0aengine-resource-card\x20.erc-btn:hover:not(:disabled)\x20{\x20filter:\x20brightness(1.3);\x20}\x0aengine-resource-card\x20.erc-btn:disabled\x20{\x20opacity:\x20.4;\x20cursor:\x20not-allowed;\x20}\x0a\x0a/*\x20──\x20Content\x20rows\x20───────────────────────────────────\x20*/\x0aengine-resource-card\x20.erc-summary\x20{\x20font-size:\x2011.5px;\x20line-height:\x201.55;\x20color:\x20#6d8899;\x20padding-left:\x2012px;\x20}\x0aengine-resource-card\x20.erc-kv-row\x20{\x20display:\x20grid;\x20grid-template-columns:repeat(auto-fit,\x20minmax(180px,\x201fr));\x20gap:\x202px\x2012px;\x20padding-left:\x2012px;\x20}\x0aengine-resource-card\x20.erc--member\x20.erc-kv-row\x20{\x20grid-template-columns:\x20repeat(3,\x201fr);\x20gap:\x202px\x2010px;\x20}\x0aengine-resource-card\x20.erc-kv-row--metrics\x20{\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x20padding-top:\x206px;\x20}\x0aengine-resource-card\x20.erc-kv\x20{\x20display:\x20inline-flex;\x20gap:\x204px;\x20align-items:\x20baseline;\x20font-size:\x2011px;\x20line-height:\x201.35;\x20}\x0aengine-resource-card\x20.erc-kv__label\x20{\x20font-size:\x209.5px;\x20text-transform:\x20uppercase;\x20letter-spacing:\x20.04em;\x20color:\x20var(--okdb-app-fg-subtle);\x20flex-shrink:\x200;\x20}\x0aengine-resource-card\x20.erc-kv__val\x20{\x20color:\x20#a8c4d9;\x20overflow:\x20hidden;\x20text-overflow:\x20ellipsis;\x20white-space:\x20nowrap;\x20}\x0aengine-resource-card\x20.erc-progress\x20{\x20height:\x203px;\x20width:\x20100%;\x20border-radius:\x20999px;\x20background:\x20var(--okdb-app-bg-deep);\x20overflow:\x20hidden;\x20}\x0aengine-resource-card\x20.erc-error\x20{\x20font-size:\x2011px;\x20line-height:\x201.5;\x20color:\x20var(--okdb-danger);\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x20padding-top:\x206px;\x20padding-left:\x2012px;\x20}\x0a','label','method','\x20failed','\x207%,\x20transparent)','/stop','hideEnv','Delete','var(--okdb-orange)','isMember','/rebuild','Mode','typeLabel','suffix','rebuild','indexer','busy','type','values','/start','Materializer','var(--okdb-accent-2)','Extractor','color','6zAZeuN','Concurrency','View\x20Type\x20Context','key','TTL','toast','Dims','text','Processor','Retry','eng','replace','action','pipelineName','$attr','Engine\x20stopped','meta','restart','pipeline','source_env','embeddingsMode','Error','local','25220NuDeiQ','Edit','Embedder','statusMeta','split','name','refresh','515832mHRvGQ','Source\x20env','Restart\x20engine\x20\x22','/resume','var(--okdb-sky)','Field','var(--okdb-accent)','true','stats','card','materializer','value','Pause','Engine\x20restarted','/restart','color-mix(in\x20srgb,\x20','config','var(--okdb-danger)','POST','Worker','Chunk','border-color:','Reset\x20Cursor','showdelete','var(--okdb-app-fg-muted)','type-context','runtime','Engine\x20paused','Type','/pause','running','var(--okdb-info)','21TfkUYm','pillStyle','1487680cjHEiV','canRunLifecycle','engine-resource-card','map','catch','source_type','confirm','%;border-radius:999px;background:','title','Engine\x20rebuild\x20started','find','Algorithm','Rebuild','tone','match',';\x20color:','success','envName','#fb7185','slice','Poll','progressMetric','hidetype','Reset','variant','typeBadgeStyle','shared','/retry','173848HqiOkR','error','includes','paused','$dispatch','hidepipeline','507336qZUXdj','Resume','engine','border-color:#6366f144;\x20color:#a5b4fc;\x20background:#6366f110;','407doGivp','message','Indexer','startsWith','\x2033%,\x20transparent)','isRunning','delete','$ok','Source','status','Engine','typeColor','\x0a<div\x20:class=\x22isMember\x20?\x20\x27engine-resource-card\x20erc\x20erc--member\x27\x20:\x20\x27engine-resource-card\x20erc\x20erc--card\x27\x22>\x0a\x0a\x20\x20<!--\x20──\x20Name\x20+\x20type\x20+\x20status\x20+\x20actions\x20row\x20──\x20-->\x0a\x20\x20<div\x20class=\x22erc-header\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22erc-dot\x22\x20:style=\x22\x27background:\x27\x20+\x20statusMeta.color\x20+\x20\x27;box-shadow:0\x200\x200\x203px\x20color-mix(in\x20srgb,\x20\x27\x20+\x20statusMeta.color\x20+\x20\x27\x2013%,\x20transparent);\x27\x22\x20:title=\x22statusMeta.title\x22></span>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-name-group\x22>\x0a\x20\x20\x20\x20\x20\x20<code\x20class=\x22erc-name\x22\x20:title=\x22title\x22>{{\x20displayTitle\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22titleNamespace\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-ns\x22>{{\x20titleNamespace\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22typeBadgeStyle()\x22>{{\x20typeName(eng.role\x20||\x20eng.type)\x20}}</span>\x0a\x20\x20\x20\x20<if\x20:=\x22!running\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22statusPillStyle()\x22>{{\x20statusMeta.label\x20}}</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22pipelineLabel\x20&&\x20!hidePipeline\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22pipelineBadgeStyle()\x22\x20:title=\x22\x27pipeline:\x20\x27\x20+\x20pipelineName\x22>{{\x20pipelineLabel\x20}}</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22envName\x20&&\x20!isMember\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22envBadgeStyle()\x22\x20:title=\x22\x27env:\x20\x27\x20+\x20envName\x22>{{\x20envName\x20}}</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<each\x20:of=\x22healthBadges\x22\x20let:item=\x22badge\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22healthBadgeStyle(badge)\x22\x20:title=\x22badge.title\x22>{{\x20badge.text\x20}}</span>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<span\x20class=\x22erc-spacer\x22></span>\x0a\x20\x20\x20\x20<each\x20:of=\x22overflowActions\x22\x20let:item=\x22action\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22runAction(action)\x22\x20:disabled=\x22busy\x22\x20:title=\x22action.title\x20||\x20action.label\x22\x20class=\x22erc-btn\x20erc-btn--muted\x22\x20:style=\x22\x27color:\x27\x20+\x20action.color\x20+\x20\x27;\x27\x22>{{\x20glyph(action.label)\x20}}\x20{{\x20action.label\x20}}</button>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<if\x20:=\x22overflowActions.length\x20>\x200\x20&&\x20primaryAction\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-sep\x22></span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22primaryAction\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22runAction(primaryAction)\x22\x20:disabled=\x22busy\x22\x20class=\x22erc-btn\x20erc-btn--primary\x22\x20:style=\x22pillStyle(primaryAction.color)\x22>{{\x20busy\x20?\x20\x27…\x27\x20:\x20(glyph(primaryAction.label)\x20+\x20\x27\x20\x27\x20+\x20primaryAction.label)\x20}}</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Summary\x20(card\x20mode\x20only)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22description\x20&&\x20!isMember\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-summary\x22>{{\x20description\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Config\x20metadata\x20──\x20-->\x0a\x20\x20<if\x20:=\x22metadata.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-kv-row\x22>\x0a\x20\x20\x20\x20\x20\x20<each\x20:of=\x22metadata\x22\x20let:item=\x22metric\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv\x22\x20:title=\x22metric.title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv__label\x22>{{\x20metric.label\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv__val\x22>{{\x20metric.value\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Runtime\x20metrics\x20──\x20-->\x0a\x20\x20<if\x20:=\x22metrics.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-kv-row\x20erc-kv-row--metrics\x22>\x0a\x20\x20\x20\x20\x20\x20<each\x20:of=\x22metrics\x22\x20let:item=\x22metric\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv\x22\x20:title=\x22metric.title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv__label\x22>{{\x20metric.label\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv__val\x22\x20:style=\x22\x27color:\x27\x20+\x20metricToneColor(metric)\x22>{{\x20metric.value\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Progress\x20bar\x20──\x20-->\x0a\x20\x20<if\x20:=\x22showProgressBar()\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-progress\x22\x20:title=\x22progressMetric()?.title\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20:style=\x22progressFillStyle()\x22></div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Error\x20──\x20-->\x0a\x20\x20<if\x20:=\x22inlineError\x20||\x20error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-error\x22>⚠\x20{{\x20inlineError\x20||\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','Model','filter','false','hideType','max','edit','storeEnv','healthy','Stop','showDelete','push','isFinite','get','var(--okdb-warning)'];_0x9be8=function(){return _0x28ae04;};return _0x9be8();}
|
|
1
|
+
const _0x145ee7=_0x5ad3;function _0x3def(){const _0x5398e3=['label','type-context','hidetype','Error','/restart','var(--okdb-info)','hidepipeline','filter','member','Engine\x20rebuild\x20started','delete','Restart','Chunk','match','materializer','compact','$ok','join','/stop',';\x20color:','rebuild','12LQspQp','runtime','Concurrency','8220820zcTyPe','height:100%;width:','Delete','envName','showdelete','danger','/pause','Engine\x20resumed','2575779ipAeMC','1637165HVOrER','color-mix(in\x20srgb,\x20','busy','success','Collection','\x20complete','$dispatch','var(--okdb-orange)','pillStyle','edit','metricPercent','Retry','Rebuild\x20engine\x20\x22','DELETE','split','\x0a<div\x20:class=\x22isMember\x20?\x20\x27engine-resource-card\x20erc\x20erc--member\x27\x20:\x20\x27engine-resource-card\x20erc\x20erc--card\x27\x22>\x0a\x0a\x20\x20<!--\x20──\x20Name\x20+\x20type\x20+\x20status\x20+\x20actions\x20row\x20──\x20-->\x0a\x20\x20<div\x20class=\x22erc-header\x22>\x0a\x20\x20\x20\x20<span\x20class=\x22erc-dot\x22\x20:style=\x22\x27background:\x27\x20+\x20statusMeta.color\x20+\x20\x27;box-shadow:0\x200\x200\x203px\x20color-mix(in\x20srgb,\x20\x27\x20+\x20statusMeta.color\x20+\x20\x27\x2013%,\x20transparent);\x27\x22\x20:title=\x22statusMeta.title\x22></span>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-name-group\x22>\x0a\x20\x20\x20\x20\x20\x20<code\x20class=\x22erc-name\x22\x20:title=\x22title\x22>{{\x20displayTitle\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22titleNamespace\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-ns\x22>{{\x20titleNamespace\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22typeBadgeStyle()\x22>{{\x20typeName(eng.role\x20||\x20eng.type)\x20}}</span>\x0a\x20\x20\x20\x20<if\x20:=\x22!running\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22statusPillStyle()\x22>{{\x20statusMeta.label\x20}}</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22pipelineLabel\x20&&\x20!hidePipeline\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22pipelineBadgeStyle()\x22\x20:title=\x22\x27pipeline:\x20\x27\x20+\x20pipelineName\x22>{{\x20pipelineLabel\x20}}</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22envName\x20&&\x20!isMember\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22envBadgeStyle()\x22\x20:title=\x22\x27env:\x20\x27\x20+\x20envName\x22>{{\x20envName\x20}}</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<each\x20:of=\x22healthBadges\x22\x20let:item=\x22badge\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-pill\x22\x20:style=\x22healthBadgeStyle(badge)\x22\x20:title=\x22badge.title\x22>{{\x20badge.text\x20}}</span>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<span\x20class=\x22erc-spacer\x22></span>\x0a\x20\x20\x20\x20<each\x20:of=\x22overflowActions\x22\x20let:item=\x22action\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22runAction(action)\x22\x20:disabled=\x22busy\x22\x20:title=\x22action.title\x20||\x20action.label\x22\x20class=\x22erc-btn\x20erc-btn--muted\x22\x20:style=\x22\x27color:\x27\x20+\x20action.color\x20+\x20\x27;\x27\x22>{{\x20glyph(action.label)\x20}}\x20{{\x20action.label\x20}}</button>\x0a\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20<if\x20:=\x22overflowActions.length\x20>\x200\x20&&\x20primaryAction\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-sep\x22></span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22primaryAction\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22runAction(primaryAction)\x22\x20:disabled=\x22busy\x22\x20class=\x22erc-btn\x20erc-btn--primary\x22\x20:style=\x22pillStyle(primaryAction.color)\x22>{{\x20busy\x20?\x20\x27…\x27\x20:\x20(glyph(primaryAction.label)\x20+\x20\x27\x20\x27\x20+\x20primaryAction.label)\x20}}</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Summary\x20(card\x20mode\x20only)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22description\x20&&\x20!isMember\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-summary\x22>{{\x20description\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Config\x20metadata\x20──\x20-->\x0a\x20\x20<if\x20:=\x22metadata.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-kv-row\x22>\x0a\x20\x20\x20\x20\x20\x20<each\x20:of=\x22metadata\x22\x20let:item=\x22metric\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv\x22\x20:title=\x22metric.title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv__label\x22>{{\x20metric.label\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv__val\x22>{{\x20metric.value\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Runtime\x20metrics\x20──\x20-->\x0a\x20\x20<if\x20:=\x22metrics.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-kv-row\x20erc-kv-row--metrics\x22>\x0a\x20\x20\x20\x20\x20\x20<each\x20:of=\x22metrics\x22\x20let:item=\x22metric\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv\x22\x20:title=\x22metric.title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv__label\x22>{{\x20metric.label\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22erc-kv__val\x22\x20:style=\x22\x27color:\x27\x20+\x20metricToneColor(metric)\x22>{{\x20metric.value\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Progress\x20bar\x20──\x20-->\x0a\x20\x20<if\x20:=\x22showProgressBar()\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-progress\x22\x20:title=\x22progressMetric()?.title\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20:style=\x22progressFillStyle()\x22></div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Error\x20──\x20-->\x0a\x20\x20<if\x20:=\x22inlineError\x20||\x20error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22erc-error\x22>⚠\x20{{\x20inlineError\x20||\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','#fb7185','border-color:color-mix(in\x20srgb,\x20var(--okdb-app-border)\x2040%,\x20transparent);\x20color:#7a93a8;\x20background:transparent;','6528690TeYwvc','TTL','env','statusMeta','var(--okdb-warning)','2ocDaiW','pop','Engine\x20deleted','canRunLifecycle','eng','Pause','pipeline','_uiEnv','Provider','hideType','/start','View\x20Type\x20Context','Search','Edit','push','showDelete','get','collectionEngine','Engine\x20started','Engine\x20paused','Reset','Model','Prepare','Algorithm','key','false','running','/resume','/rebuild','\x2033%,\x20transparent)','Rebuild','8OTwnLg','hideEnv','Reset\x20Cursor','Embedder','slice','typeBadgeStyle','refresh','var(--okdb-sky)','Progress','reset','Poll','var(--okdb-danger)','config','true','embeddingsMode','restart','healthy','target_type','values','699639xrkMhE','isFinite','tone','7051919OrOxhY','Worker','Reset\x20cursor\x20for\x20engine\x20\x22','Restart\x20engine\x20\x22','toast','indexer','text','status','modal','title','1127493tWdsZE','border-color:','Engine\x20retry\x20started','Extractor','var(--okdb-app-fg-muted)','name','includes','Field','Indexer','color','suffix','/reset-cursor','type','method','POST','paused','Delete\x20engine\x20\x22','Type','stats','min','Engine','isMember','pipelineName','$attr','%;border-radius:999px;background:','progressMetric','storeEnv','Resume','var(--okdb-success)','Stop\x20engine\x20\x22','Dims','basePath','warning','source_type','variant','Stop','\x20failed','error','\x207%,\x20transparent)','isRunning','var(--okdb-accent)','Mode','source_env','Storage','local','sourceType','/retry','confirm','shared','Engine\x20stopped','message','\x0aengine-resource-card\x20{\x20display:\x20block;\x20}\x0a\x0a/*\x20──\x20Top-level\x20hover\x20(applies\x20when\x20component\x20root\x20carries\x20.engine-resource-card\x20class)\x20──\x20*/\x0a.engine-resource-card:hover\x20{\x20border-color:\x20var(--okdb-app-border-strong);\x20}\x0a\x0a/*\x20──\x20Card\x20variant\x20(standalone)\x20───────────────────────\x20*/\x0aengine-resource-card\x20.erc--card\x20{\x0a\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20border-radius:\x2010px;\x0a\x20\x20padding:\x2012px\x2014px;\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-direction:\x20column;\x0a\x20\x20gap:\x208px;\x0a\x20\x20box-shadow:\x200\x200\x204px\x20rgba(255,255,255,0.03);\x0a\x20\x20transition:\x20border-color\x20.14s;\x0a}\x0aengine-resource-card\x20.erc--card:hover\x20{\x20border-color:\x20var(--okdb-app-border-strong);\x20}\x0a\x0a/*\x20──\x20Member\x20variant\x20(inside\x20pipeline)\x20────────────────\x20*/\x0aengine-resource-card\x20.erc--member\x20{\x0a\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20border:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20border-radius:\x208px;\x0a\x20\x20padding:\x209px\x2012px;\x0a\x20\x20display:\x20flex;\x0a\x20\x20flex-direction:\x20column;\x0a\x20\x20gap:\x206px;\x0a\x20\x20transition:\x20border-color\x20.12s,\x20background\x20.12s;\x0a}\x0aengine-resource-card\x20.erc--member:hover\x20{\x20border-color:\x20var(--okdb-app-border-strong);\x20background:\x20var(--okdb-app-surface);\x20}\x0a\x0a/*\x20──\x20Header\x20row\x20─────────────────────────────────────\x20*/\x0aengine-resource-card\x20.erc-header\x20{\x20display:\x20flex;\x20align-items:\x20center;\x20gap:\x205px;\x20flex-wrap:\x20wrap;\x20min-width:\x200;\x20}\x0aengine-resource-card\x20.erc-dot\x20{\x20width:\x207px;\x20height:\x207px;\x20border-radius:\x2050%;\x20flex-shrink:\x200;\x20}\x0aengine-resource-card\x20.erc-name-group\x20{\x20display:\x20flex;\x20align-items:\x20baseline;\x20gap:\x205px;\x20min-width:\x200;\x20}\x0aengine-resource-card\x20.erc-name\x20{\x20font-size:\x2013px;\x20font-weight:\x20600;\x20color:\x20var(--okdb-app-fg-strong);\x20overflow:\x20hidden;\x20text-overflow:\x20ellipsis;\x20white-space:\x20nowrap;\x20letter-spacing:\x20-.01em;\x20}\x0aengine-resource-card\x20.erc-ns\x20{\x20font-size:\x2010.5px;\x20color:\x20var(--okdb-app-fg-subtle);\x20white-space:\x20nowrap;\x20}\x0aengine-resource-card\x20.erc-spacer\x20{\x20flex:\x201;\x20min-width:\x200;\x20}\x0aengine-resource-card\x20.erc-sep\x20{\x20width:\x201px;\x20height:\x2012px;\x20background:\x20var(--okdb-app-border);\x20flex-shrink:\x200;\x20}\x0a\x0a/*\x20──\x20Pills\x20──────────────────────────────────────────\x20*/\x0aengine-resource-card\x20.erc-pill\x20{\x20font-size:\x2010.5px;\x20padding:\x201px\x208px;\x20border-radius:\x20999px;\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x20color:\x20var(--okdb-app-fg-muted);\x20background:\x20transparent;\x20display:\x20inline-flex;\x20align-items:\x20center;\x20white-space:\x20nowrap;\x20flex-shrink:\x200;\x20letter-spacing:\x20.01em;\x20}\x0aengine-resource-card\x20.erc-pill--pipeline\x20{\x20border-color:\x20#6366f144;\x20color:\x20#a5b4fc;\x20background:\x20#6366f110;\x20}\x0aengine-resource-card\x20.erc-pill--env\x20{\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-app-border)\x2040%,\x20transparent);\x20color:\x20#7a93a8;\x20}\x0a\x0a/*\x20──\x20Buttons\x20────────────────────────────────────────\x20*/\x0aengine-resource-card\x20.erc-btn\x20{\x20font-size:\x2011px;\x20padding:\x202px\x2010px;\x20border-radius:\x20999px;\x20border:\x201px\x20solid;\x20cursor:\x20pointer;\x20line-height:\x201.5;\x20flex-shrink:\x200;\x20white-space:\x20nowrap;\x20transition:\x20filter\x20.12s;\x20}\x0aengine-resource-card\x20.erc-btn--primary\x20{\x20font-weight:\x20600;\x20}\x0aengine-resource-card\x20.erc-btn--muted\x20{\x20background:\x20var(--okdb-app-bg-deep);\x20border-color:\x20var(--okdb-app-border);\x20}\x0aengine-resource-card\x20.erc-btn:hover:not(:disabled)\x20{\x20filter:\x20brightness(1.3);\x20}\x0aengine-resource-card\x20.erc-btn:disabled\x20{\x20opacity:\x20.4;\x20cursor:\x20not-allowed;\x20}\x0a\x0a/*\x20──\x20Content\x20rows\x20───────────────────────────────────\x20*/\x0aengine-resource-card\x20.erc-summary\x20{\x20font-size:\x2011.5px;\x20line-height:\x201.55;\x20color:\x20#6d8899;\x20padding-left:\x2012px;\x20}\x0aengine-resource-card\x20.erc-kv-row\x20{\x20display:\x20grid;\x20grid-template-columns:repeat(auto-fit,\x20minmax(180px,\x201fr));\x20gap:\x202px\x2012px;\x20padding-left:\x2012px;\x20}\x0aengine-resource-card\x20.erc--member\x20.erc-kv-row\x20{\x20grid-template-columns:\x20repeat(3,\x201fr);\x20gap:\x202px\x2010px;\x20}\x0aengine-resource-card\x20.erc-kv-row--metrics\x20{\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x20padding-top:\x206px;\x20}\x0aengine-resource-card\x20.erc-kv\x20{\x20display:\x20inline-flex;\x20gap:\x204px;\x20align-items:\x20baseline;\x20font-size:\x2011px;\x20line-height:\x201.35;\x20}\x0aengine-resource-card\x20.erc-kv__label\x20{\x20font-size:\x209.5px;\x20text-transform:\x20uppercase;\x20letter-spacing:\x20.04em;\x20color:\x20var(--okdb-app-fg-subtle);\x20flex-shrink:\x200;\x20}\x0aengine-resource-card\x20.erc-kv__val\x20{\x20color:\x20#a8c4d9;\x20overflow:\x20hidden;\x20text-overflow:\x20ellipsis;\x20white-space:\x20nowrap;\x20}\x0aengine-resource-card\x20.erc-progress\x20{\x20height:\x203px;\x20width:\x20100%;\x20border-radius:\x20999px;\x20background:\x20var(--okdb-app-bg-deep);\x20overflow:\x20hidden;\x20}\x0aengine-resource-card\x20.erc-error\x20{\x20font-size:\x2011px;\x20line-height:\x201.5;\x20color:\x20var(--okdb-danger);\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x20padding-top:\x206px;\x20padding-left:\x2012px;\x20}\x0a','typeColor','Materializer','json','max','var(--okdb-accent-2)'];_0x3def=function(){return _0x5398e3;};return _0x3def();}(function(_0x480cc8,_0x50623f){const _0x404de9=_0x5ad3,_0x180ede=_0x480cc8();while(!![]){try{const _0x5d01b7=-parseInt(_0x404de9(0x136))/0x1+-parseInt(_0x404de9(0x104))/0x2*(-parseInt(_0x404de9(0xec))/0x3)+-parseInt(_0x404de9(0xe1))/0x4*(parseInt(_0x404de9(0xed))/0x5)+parseInt(_0x404de9(0xff))/0x6+parseInt(_0x404de9(0x139))/0x7*(parseInt(_0x404de9(0x123))/0x8)+parseInt(_0x404de9(0x143))/0x9+-parseInt(_0x404de9(0xe4))/0xa;if(_0x5d01b7===_0x50623f)break;else _0x180ede['push'](_0x180ede['shift']());}catch(_0x3bc357){_0x180ede['push'](_0x180ede['shift']());}}}(_0x3def,0x8c796));import{buildEngineBasePath as _0x402e8f,compactEngineConfigMetrics as _0x14b5e1,compactEngineErrorText as _0x1adcde,compactEngineRowMetrics as _0x4b1cde,compactEngineRowStatusBadges as _0x4af50d,compactEngineRowSummary as _0x32a20c,compactEngineStatusMeta as _0x55eade,isEmbeddingsEngine as _0x420bf1}from'../engine-ui-utils.js';function l(_0xd0016d,_0x12c5b4=!0x1){const _0x2923ac=_0x5ad3;return null==_0xd0016d?_0x12c5b4:!0x0===_0xd0016d||_0x2923ac(0x130)===_0xd0016d||!0x1!==_0xd0016d&&_0x2923ac(0x11d)!==_0xd0016d&&Boolean(_0xd0016d);}function _0x5ad3(_0x1188b3,_0x5c9669){_0x1188b3=_0x1188b3-0xdc;const _0x3defd8=_0x3def();let _0x5ad361=_0x3defd8[_0x1188b3];return _0x5ad361;}const c={'Start':'▶','Stop':'■','Pause':'❚❚','Resume':'▶','Restart':'↻','Retry':'↻','Reset':'⟲','Rebuild':'⚒','Edit':'✎','Type':'↗','Delete':'🗑'};export default{'tag':'engine-resource-card','attr':{'engine':{},'env':{},'pipeline':{},'hidepipeline':{},'hidetype':{},'hideenv':{},'variant':{},'compact':{},'showdelete':{}},'context':_0x5738fc=>({'busy':!0x1,'error':null,'typeLabel':{'embedder':'Embedder','indexer':_0x145ee7(0x14b),'search':'Search','worker':'Worker','vector-search':_0x145ee7(0x110),'embed-worker':_0x145ee7(0x13a),'materializer':_0x145ee7(0x178),'file-extractor':_0x145ee7(0x146),'file-collection':_0x145ee7(0xf1),'file-extractor-worker':_0x145ee7(0x13a),'processor':'Processor','queue-worker':'Queue\x20Worker'},'typeColor':{'embedder':_0x145ee7(0x181),'indexer':_0x145ee7(0x17b),'vector-search':_0x145ee7(0x16b),'embed-worker':_0x145ee7(0x103),'materializer':_0x145ee7(0xfd),'file-extractor':_0x145ee7(0x15f),'file-collection':_0x145ee7(0x12a),'file-extractor-worker':_0x145ee7(0x103),'processor':_0x145ee7(0xf4),'queue-worker':_0x145ee7(0x17b)},get 'eng'(){const _0x4fe014=_0x145ee7;return _0x5738fc[_0x4fe014(0x15a)]['engine']??{};},get 'envName'(){const _0x555459=_0x145ee7;return _0x5738fc[_0x555459(0x15a)]['env']??this['eng']?.[_0x555459(0x101)]??this['eng']?.[_0x555459(0x10b)]??this[_0x555459(0x108)]?.[_0x555459(0x15d)]??this['eng']?.[_0x555459(0x12f)]?.[_0x555459(0x16d)]??null;},get 'isMember'(){const _0x3672fc=_0x145ee7;return _0x3672fc(0x184)===_0x5738fc[_0x3672fc(0x15a)][_0x3672fc(0x165)]||'card'!==_0x5738fc[_0x3672fc(0x15a)]['variant']&&l(_0x5738fc['$attr'][_0x3672fc(0x18b)],!0x1);},get 'hidePipeline'(){const _0x54f4af=_0x145ee7;return l(_0x5738fc['$attr'][_0x54f4af(0x182)],!0x1);},get 'hideType'(){const _0x120348=_0x145ee7;return l(_0x5738fc[_0x120348(0x15a)][_0x120348(0x17e)],!0x1);},get 'hideEnv'(){const _0x10fdd0=_0x145ee7;return l(_0x5738fc[_0x10fdd0(0x15a)]['hideenv'],!0x1);},get 'showDelete'(){const _0x309848=_0x145ee7;return l(_0x5738fc['$attr'][_0x309848(0xe8)],!0x1);},get 'basePath'(){const _0x590d01=_0x145ee7;return _0x402e8f(this[_0x590d01(0x108)],this['envName']);},get 'embeddingsMode'(){return _0x420bf1(this['eng']);},get 'running'(){const _0x2e7600=_0x145ee7;return!!this[_0x2e7600(0x108)]?.[_0x2e7600(0x16a)];},get 'statusMeta'(){return _0x55eade(this['eng']);},get 'paused'(){const _0x3b3c7e=_0x145ee7;return!0x0===this[_0x3b3c7e(0x108)]?.['stats']?.[_0x3b3c7e(0x152)]||!0x0===this['eng']?.[_0x3b3c7e(0xe2)]?.[_0x3b3c7e(0x152)]||!0x0===this[_0x3b3c7e(0x108)]?.['paused'];},get 'pipelineName'(){const _0x3fbae7=_0x145ee7;return _0x5738fc[_0x3fbae7(0x15a)]['pipeline']??this[_0x3fbae7(0x108)]?.['meta']?.[_0x3fbae7(0x10a)]??this[_0x3fbae7(0x108)]?.[_0x3fbae7(0x12f)]?.[_0x3fbae7(0x10a)]??this[_0x3fbae7(0x108)]?.[_0x3fbae7(0x12f)]?.[_0x3fbae7(0x115)]??null;},get 'pipelineLabel'(){const _0x1f74ab=_0x145ee7;return this['pipelineName']?String(this[_0x1f74ab(0x159)])[_0x1f74ab(0xfb)](':')[_0x1f74ab(0x105)]():null;},get 'sourceType'(){const _0x5aec23=_0x145ee7;return this[_0x5aec23(0x108)]?.[_0x5aec23(0x12f)]?.[_0x5aec23(0x164)]??this['eng']?.[_0x5aec23(0xe2)]?.[_0x5aec23(0x164)]??this['eng']?.[_0x5aec23(0x155)]?.[_0x5aec23(0x164)]??this['eng']?.['stats']?.[_0x5aec23(0x13e)]?.['source_type']??this[_0x5aec23(0x108)]?.[_0x5aec23(0x12f)]?.[_0x5aec23(0x134)]??null;},get 'canRunLifecycle'(){const _0x2740d4=_0x145ee7;return!!this[_0x2740d4(0x162)];},get 'title'(){const _0x1a0cf6=_0x145ee7;return this[_0x1a0cf6(0x108)]?.[_0x1a0cf6(0x148)]??this['eng']?.[_0x1a0cf6(0x11c)]??_0x1a0cf6(0x157);},get 'displayTitle'(){const _0x2d158b=_0x145ee7,_0x40e554=String(this[_0x2d158b(0x142)]??'');return _0x40e554[_0x2d158b(0x149)](':')?_0x40e554[_0x2d158b(0xfb)](':')[_0x2d158b(0x105)]():_0x40e554;},get 'titleNamespace'(){const _0x4ba2eb=_0x145ee7,_0x1e02d3=String(this[_0x4ba2eb(0x142)]??'');return _0x1e02d3[_0x4ba2eb(0x149)](':')?_0x1e02d3[_0x4ba2eb(0xfb)](':')[_0x4ba2eb(0x127)](0x0,-0x1)[_0x4ba2eb(0xdd)](':'):null;},get 'description'(){const _0x22c98e=_0x145ee7;return _0x32a20c(this[_0x22c98e(0x108)]);},get 'inlineError'(){const _0x2f7e32=_0x145ee7;return _0x1adcde(this[_0x2f7e32(0x108)]);},get 'metadata'(){const _0x4dac54=_0x145ee7,_0x4e8c1c=['Source',_0x4dac54(0x14a),_0x4dac54(0x16e),_0x4dac54(0x126),_0x4dac54(0x161),_0x4dac54(0x11b),_0x4dac54(0x10c),_0x4dac54(0x119),_0x4dac54(0xe3),_0x4dac54(0x12d),_0x4dac54(0x100),_0x4dac54(0x16c),_0x4dac54(0x11a),_0x4dac54(0x188)],_0x5ced03=new Map(_0x14b5e1(this[_0x4dac54(0x108)])['map'](_0x2d009d=>[_0x2d009d[_0x4dac54(0x17c)],_0x2d009d])),_0x54eade=[];for(const _0x8fbe7e of _0x4e8c1c){if(this[_0x4dac54(0x158)]&&'Embedder'===_0x8fbe7e)continue;const _0x1ffd73=_0x5ced03[_0x4dac54(0x114)](_0x8fbe7e);_0x1ffd73&&(_0x54eade[_0x4dac54(0x112)](_0x1ffd73),_0x5ced03[_0x4dac54(0x186)](_0x8fbe7e));}for(const _0x5043d0 of _0x5ced03[_0x4dac54(0x135)]())(this['isMember']||this[_0x4dac54(0x124)])&&'Source\x20env'===_0x5043d0[_0x4dac54(0x17c)]||_0x54eade[_0x4dac54(0x112)](_0x5043d0);return _0x54eade[_0x4dac54(0x127)](0x0,this['isMember']?0x6:0xa);},get 'metrics'(){const _0x4d24b0=_0x145ee7,_0xe77f2c=[_0x4d24b0(0x14a),'Mode',_0x4d24b0(0x11a),_0x4d24b0(0x188),'Embedder','Provider',_0x4d24b0(0x119),'Algorithm'];return _0x4b1cde(this[_0x4d24b0(0x108)])[_0x4d24b0(0x183)](_0x11fcbd=>!_0xe77f2c[_0x4d24b0(0x149)](_0x11fcbd[_0x4d24b0(0x17c)]))[_0x4d24b0(0x127)](0x0,this[_0x4d24b0(0x158)]?0x5:0x8);},get 'healthBadges'(){const _0x43480b=_0x145ee7,_0x3f1d98=this['statusMeta'][_0x43480b(0x17c)];return _0x4af50d(this[_0x43480b(0x108)])[_0x43480b(0x183)](_0x5a5199=>_0x5a5199?.['text']&&_0x5a5199[_0x43480b(0x13f)]!==_0x3f1d98)['filter'](_0x30e87e=>!(this[_0x43480b(0x11e)]&&_0x43480b(0x133)===_0x30e87e[_0x43480b(0x13f)]))[_0x43480b(0x127)](0x0,0x2);},get 'primaryAction'(){const _0x30726d=_0x145ee7;return this[_0x30726d(0x107)]?this[_0x30726d(0x131)]?this[_0x30726d(0x11e)]?{'label':_0x30726d(0x166),'method':_0x30726d(0x151),'suffix':_0x30726d(0xde),'color':_0x30726d(0x103),'confirm':_0x30726d(0x160)+this[_0x30726d(0x142)]+'\x22?','toast':_0x30726d(0x174)}:_0x30726d(0x168)===this[_0x30726d(0x108)]?.[_0x30726d(0x140)]?{'label':_0x30726d(0x187),'method':_0x30726d(0x151),'suffix':_0x30726d(0x180),'color':_0x30726d(0xf4),'confirm':'Restart\x20engine\x20\x22'+this[_0x30726d(0x142)]+'\x22?','toast':'Engine\x20restarted'}:{'label':'Start','method':'POST','suffix':_0x30726d(0x10e),'color':_0x30726d(0x15f),'confirm':null,'toast':_0x30726d(0x116)}:_0x30726d(0x168)===this[_0x30726d(0x108)]?.[_0x30726d(0x140)]?{'label':_0x30726d(0xf8),'method':_0x30726d(0x151),'suffix':_0x30726d(0x171),'color':'var(--okdb-orange)','confirm':null,'toast':_0x30726d(0x145)}:this[_0x30726d(0x152)]?{'label':_0x30726d(0x15e),'method':_0x30726d(0x151),'suffix':_0x30726d(0x11f),'color':_0x30726d(0x15f),'confirm':null,'toast':_0x30726d(0xeb)}:{'label':'Pause','method':_0x30726d(0x151),'suffix':'/pause','color':_0x30726d(0x103),'confirm':null,'toast':_0x30726d(0x117)}:null;},get 'overflowActions'(){const _0x3cce0a=_0x145ee7,_0x599833=[];return this[_0x3cce0a(0x107)]&&(_0x599833[_0x3cce0a(0x112)]({'key':_0x3cce0a(0x132),'label':_0x3cce0a(0x187),'method':_0x3cce0a(0x151),'suffix':_0x3cce0a(0x180),'color':_0x3cce0a(0x147),'confirm':this[_0x3cce0a(0x131)]?_0x3cce0a(0x13c)+this[_0x3cce0a(0x142)]+'\x22?':null,'toast':'Engine\x20restarted'}),this[_0x3cce0a(0x131)]||_0x599833[_0x3cce0a(0x112)]({'key':'pause','label':this['paused']?_0x3cce0a(0x15e):_0x3cce0a(0x109),'method':'POST','suffix':this[_0x3cce0a(0x152)]?_0x3cce0a(0x11f):_0x3cce0a(0xea),'color':this[_0x3cce0a(0x152)]?'var(--okdb-success)':_0x3cce0a(0x103),'toast':this['paused']?_0x3cce0a(0xeb):_0x3cce0a(0x117)}),_0x3cce0a(0x18a)===this[_0x3cce0a(0x108)]?.['type']&&(_0x599833[_0x3cce0a(0x112)]({'key':_0x3cce0a(0x12c),'label':_0x3cce0a(0x118),'title':_0x3cce0a(0x125),'method':'POST','suffix':_0x3cce0a(0x14e),'color':_0x3cce0a(0x181),'confirm':_0x3cce0a(0x13b)+this[_0x3cce0a(0x142)]+'\x22?','toast':'Engine\x20cursor\x20reset'}),_0x599833[_0x3cce0a(0x112)]({'key':_0x3cce0a(0xe0),'label':_0x3cce0a(0x122),'method':'POST','suffix':_0x3cce0a(0x120),'color':'var(--okdb-success)','confirm':_0x3cce0a(0xf9)+this[_0x3cce0a(0x142)]+'\x22?','toast':_0x3cce0a(0x185)}))),_0x599833['push']({'key':_0x3cce0a(0xf6),'label':_0x3cce0a(0x111),'color':_0x3cce0a(0x16b),'local':'edit'}),this[_0x3cce0a(0x170)]&&!this[_0x3cce0a(0x10d)]&&_0x599833[_0x3cce0a(0x112)]({'key':_0x3cce0a(0x14f),'label':_0x3cce0a(0x154),'title':_0x3cce0a(0x10f),'color':_0x3cce0a(0x17b),'local':'type'}),this[_0x3cce0a(0x113)]&&this[_0x3cce0a(0x107)]&&_0x599833[_0x3cce0a(0x112)]({'key':_0x3cce0a(0x186),'label':_0x3cce0a(0xe6),'method':_0x3cce0a(0xfa),'suffix':'','color':'var(--okdb-danger)','confirm':_0x3cce0a(0x153)+this[_0x3cce0a(0x142)]+'\x22?','toast':_0x3cce0a(0x106),'destructive':!0x0}),_0x599833;},'typeName'(_0x4f53b3){return this['typeLabel'][_0x4f53b3]||_0x4f53b3||'Engine';},'glyph':_0x518e15=>c[_0x518e15]??'','pillStyle'(_0x4fd406){const _0x290f46=_0x145ee7,_0x536fbd=_0x4fd406['startsWith']('var(');return _0x290f46(0x144)+(_0x536fbd?'color-mix(in\x20srgb,\x20'+_0x4fd406+_0x290f46(0x121):_0x4fd406+'55')+_0x290f46(0xdf)+_0x4fd406+';\x20background:'+(_0x536fbd?_0x290f46(0xee)+_0x4fd406+_0x290f46(0x169):_0x4fd406+'12')+';';},'typeBadgeStyle'(){const _0x359abb=_0x145ee7;return this[_0x359abb(0xf5)](this[_0x359abb(0x177)][this[_0x359abb(0x108)]?.[_0x359abb(0x14f)]]??_0x359abb(0x147));},'pipelineBadgeStyle':()=>'border-color:#6366f144;\x20color:#a5b4fc;\x20background:#6366f110;','envBadgeStyle':()=>_0x145ee7(0xfe),'healthBadgeStyle'(_0x1940f7){const _0x8d5a89=_0x145ee7;return this[_0x8d5a89(0xf5)](_0x1940f7?.[_0x8d5a89(0x14c)]??_0x8d5a89(0x147));},'typePillStyle'(){const _0x2c3090=_0x145ee7;return this[_0x2c3090(0x128)]();},'statusPillStyle'(){const _0xff8467=_0x145ee7;return this[_0xff8467(0xf5)](this[_0xff8467(0x102)][_0xff8467(0x14c)]??'var(--okdb-app-fg-muted)');},'metricToneColor'(_0x1cf62d=null){const _0x57bc06=_0x145ee7;if(_0x57bc06(0x17f)===_0x1cf62d?.[_0x57bc06(0x17c)]&&Number(String(_0x1cf62d['value'])['replace'](/,/g,''))<=0x0)return _0x57bc06(0x147);switch(_0x1cf62d?.[_0x57bc06(0x138)]){case _0x57bc06(0xe9):return _0x57bc06(0x12e);case _0x57bc06(0x163):return _0x57bc06(0x103);default:return'var(--okdb-app-fg)';}},'metricPercent'(_0x349181=null){const _0x90ee0a=_0x145ee7,_0x487fa0=String(_0x349181?.['value']??'')[_0x90ee0a(0x189)](/(?:\(|\b)(\d{1,3})%/);if(!_0x487fa0)return null;const _0x3657f2=Number(_0x487fa0[0x1]);return Number[_0x90ee0a(0x137)](_0x3657f2)?Math[_0x90ee0a(0x17a)](0x0,Math[_0x90ee0a(0x156)](0x64,_0x3657f2)):null;},'progressMetric'(){const _0x2d60fe=_0x145ee7;return _0x4b1cde(this[_0x2d60fe(0x108)])['find'](_0x5182af=>_0x2d60fe(0x12b)===_0x5182af?.[_0x2d60fe(0x17c)])??null;},'progressFillStyle'(){const _0x6a8fad=_0x145ee7,_0x58fcfe=this[_0x6a8fad(0x15c)]();return _0x6a8fad(0xe5)+(this[_0x6a8fad(0xf7)](_0x58fcfe)??0x0)+_0x6a8fad(0x15b)+(_0x6a8fad(0xe9)===_0x58fcfe?.[_0x6a8fad(0x138)]?_0x6a8fad(0x12e):'warning'===_0x58fcfe?.[_0x6a8fad(0x138)]?'var(--okdb-warning)':'var(--okdb-success)')+';';},'showProgressBar'(){const _0x3f27c2=_0x145ee7,_0x5bbef2=this['metricPercent'](this[_0x3f27c2(0x15c)]());return null!=_0x5bbef2&&_0x5bbef2<0x64;},async 'runAction'(_0x2d15d4){const _0x3058f4=_0x145ee7;if(_0x2d15d4){if(_0x3058f4(0xf6)!==_0x2d15d4[_0x3058f4(0x16f)]){if('type'!==_0x2d15d4[_0x3058f4(0x16f)]){if(this[_0x3058f4(0x162)]&&(!_0x2d15d4[_0x3058f4(0x172)]||await _0x5738fc[_0x3058f4(0xdc)][_0x3058f4(0x173)][_0x3058f4(0x141)][_0x3058f4(0x172)](_0x2d15d4[_0x3058f4(0x172)]))){this[_0x3058f4(0xef)]=!0x0,this[_0x3058f4(0x168)]=null;try{const _0x58c9ef=await fetch(''+this['basePath']+(_0x2d15d4[_0x3058f4(0x14d)]??''),{'method':_0x2d15d4[_0x3058f4(0x150)]??_0x3058f4(0x151)}),_0x342d6d=await _0x58c9ef[_0x3058f4(0x179)]()['catch'](()=>({}));if(!_0x58c9ef['ok'])throw new Error(_0x342d6d?.[_0x3058f4(0x168)]?.[_0x3058f4(0x175)]||_0x2d15d4[_0x3058f4(0x17c)]+_0x3058f4(0x167));_0x5738fc[_0x3058f4(0xdc)]['shared']?.[_0x3058f4(0x13d)]?.[_0x3058f4(0xf0)]?.(_0x2d15d4[_0x3058f4(0x13d)]??_0x2d15d4[_0x3058f4(0x17c)]+_0x3058f4(0xf2)),_0x5738fc[_0x3058f4(0xf3)]('action',_0x2d15d4[_0x3058f4(0x11c)]??_0x2d15d4[_0x3058f4(0x17c)]),_0x5738fc[_0x3058f4(0xf3)](_0x3058f4(0x129));}catch(_0x145526){this[_0x3058f4(0x168)]=_0x145526?.['message']||String(_0x145526),_0x5738fc[_0x3058f4(0xdc)]['shared']?.[_0x3058f4(0x13d)]?.[_0x3058f4(0x168)]?.(this['error']);}finally{this['busy']=!0x1;}}}else _0x5738fc['$dispatch'](_0x3058f4(0x17d),{'engine':this[_0x3058f4(0x108)],'type':this[_0x3058f4(0x170)],'env':this[_0x3058f4(0xe7)]});}else _0x5738fc[_0x3058f4(0xf3)](_0x3058f4(0xf6),this[_0x3058f4(0x108)]);}}}),'template':_0x145ee7(0xfc),'style':_0x145ee7(0x176)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
function _0x3e33(_0x1e3bfe,_0x593c80){_0x1e3bfe=_0x1e3bfe-0xa6;var _0x570c7c=_0x570c();var _0x3e33d8=_0x570c7c[_0x1e3bfe];return _0x3e33d8;}var _0xfb5671=_0x3e33;(function(_0x336ed8,_0x38582c){var _0x5e4a7b=_0x3e33,_0x48455e=_0x336ed8();while(!![]){try{var _0x43ac80=parseInt(_0x5e4a7b(0xbb))/0x1*(-parseInt(_0x5e4a7b(0xac))/0x2)+parseInt(_0x5e4a7b(0xc3))/0x3*(-parseInt(_0x5e4a7b(0xaf))/0x4)+parseInt(_0x5e4a7b(0xb7))/0x5*(parseInt(_0x5e4a7b(0xbc))/0x6)+parseInt(_0x5e4a7b(0xb6))/0x7+parseInt(_0x5e4a7b(0xc6))/0x8+-parseInt(_0x5e4a7b(0xb4))/0x9*(-parseInt(_0x5e4a7b(0xb3))/0xa)+-parseInt(_0x5e4a7b(0xa8))/0xb;if(_0x43ac80===_0x38582c)break;else _0x48455e['push'](_0x48455e['shift']());}catch(_0x7d96eb){_0x48455e['push'](_0x48455e['shift']());}}}(_0x570c,0x360c9));function _0x570c(){var _0xe6082=['Edit','2060120ESwfav',';background:','var(--okdb-app-border)','var(--okdb-app-surface)','6092691YIHzOi','\x0a<button\x0a\x20\x20@click=\x22select()\x22\x0a\x20\x20:style=\x22rootStyle\x22\x0a>\x0a\x20\x20<span\x20:style=\x22\x27width:6px;height:6px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20tone\x22></span>\x0a\x20\x20<span\x20:style=\x22\x27font-size:10px;padding:1px\x206px;border-radius:4px;border:1px\x20solid\x20\x27\x20+\x20labelAlpha(rowLabelColor)\x20+\x20\x27;color:\x27\x20+\x20rowLabelColor\x20+\x20\x27;min-width:54px;text-align:center;flex-shrink:0;\x27\x22>{{\x20rowLabel\x20}}</span>\x0a\x20\x20<span\x20style=\x22flex:1;font-size:12px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;\x22>{{\x20rowTitle\x20}}</span>\x0a\x20\x20<if\x20:=\x22rowSubtitle\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22font-size:11px;opacity:.4;font-style:italic;flex-shrink:0;\x22>{{\x20rowSubtitle\x20}}</span>\x0a\x20\x20</if>\x0a\x20\x20<slot\x20/>\x0a\x20\x20<if\x20:=\x22hasActionLabel\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22font-size:11px;padding:2px\x208px;border-radius:999px;border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2027%,\x20transparent);color:var(--okdb-accent);flex-shrink:0;\x22>{{\x20rowActionLabel\x20}}</span>\x0a\x20\x20</if>\x0a</button>\x0a','startsWith','labelColor','22OWSfZf','selected','color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent)','1904PCFzeB','engine','$dispatch','rowActionLabel','183570wSvxFG','171lHtyAE','true','1392006jgqDIt','30pkasyR','actionLabel','name','engine-row-item','20778EGbuQs','353844uiHPPd','isSelected','type',';cursor:pointer;width:100%;text-align:left;color:inherit;min-width:0;','display:flex;align-items:center;gap:7px;padding:7px\x209px;border-radius:6px;border:1px\x20solid\x20','$attr','var(--okdb-app-bg-deep)','978wEdVpi','eng'];_0x570c=function(){return _0xe6082;};return _0x570c();}import{statusTone as _0x44feca}from'../engine-ui-utils.js';export default{'tag':_0xfb5671(0xba),'attr':{'engine':{},'label':{},'labelColor':{},'subtitle':{},'title':{},'actionLabel':{},'selected':{}},'context':_0x2b7408=>({get 'eng'(){var _0x26d761=_0xfb5671;return _0x2b7408[_0x26d761(0xc1)][_0x26d761(0xb0)]??{};},get 'tone'(){var _0x4fd6b2=_0xfb5671;return _0x44feca(this[_0x4fd6b2(0xc4)]);},get 'rowTitle'(){var _0x4e9562=_0xfb5671;return _0x2b7408[_0x4e9562(0xc1)]['title']??this[_0x4e9562(0xc4)][_0x4e9562(0xb9)]??'engine';},get 'rowLabel'(){var _0x40abd9=_0xfb5671;return _0x2b7408[_0x40abd9(0xc1)]['label']??this[_0x40abd9(0xc4)][_0x40abd9(0xbe)]??'engine';},get 'rowLabelColor'(){var _0x230108=_0xfb5671;return _0x2b7408[_0x230108(0xc1)][_0x230108(0xab)]??'var(--okdb-accent)';},'labelAlpha':(_0x2e8b45,_0x56cc78=0x1b)=>_0x2e8b45[_0xfb5671(0xaa)]('var(')?'color-mix(in\x20srgb,\x20'+_0x2e8b45+'\x20'+_0x56cc78+'%,\x20transparent)':_0x2e8b45+'44',get 'rowSubtitle'(){return _0x2b7408['$attr']['subtitle']??'';},get 'rowActionLabel'(){var _0x20229a=_0xfb5671;return _0x2b7408[_0x20229a(0xc1)][_0x20229a(0xb8)]??_0x20229a(0xc5);},get 'hasActionLabel'(){var _0x200dc8=_0xfb5671;return!!(this[_0x200dc8(0xb2)]||'')['trim']();},get 'isSelected'(){var _0x5e13a1=_0xfb5671;return!0x0===_0x2b7408[_0x5e13a1(0xc1)]['selected']||_0x5e13a1(0xb5)===_0x2b7408[_0x5e13a1(0xc1)][_0x5e13a1(0xad)];},get 'rootStyle'(){var _0x547654=_0xfb5671;return _0x547654(0xc0)+(this[_0x547654(0xbd)]?_0x547654(0xae):_0x547654(0xa6))+_0x547654(0xc7)+(this['isSelected']?_0x547654(0xa7):_0x547654(0xc2))+_0x547654(0xbf);},'select'(){var _0x4bd00c=_0xfb5671;_0x2b7408[_0x4bd00c(0xb1)]('select',this[_0x4bd00c(0xc4)]);}}),'template':_0xfb5671(0xa9)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _0x55c2(_0x51d4c9,_0x38a948){_0x51d4c9=_0x51d4c9-0x11a;const _0x4421da=_0x4421();let _0x55c2e4=_0x4421da[_0x51d4c9];return _0x55c2e4;}const _0x39feb4=_0x55c2;(function(_0x4d1cd2,_0x33eaf0){const _0x5e6f77=_0x55c2,_0x74a5ed=_0x4d1cd2();while(!![]){try{const _0x46a9e8=-parseInt(_0x5e6f77(0x1b3))/0x1+-parseInt(_0x5e6f77(0x140))/0x2*(-parseInt(_0x5e6f77(0x163))/0x3)+parseInt(_0x5e6f77(0x15f))/0x4*(parseInt(_0x5e6f77(0x1b7))/0x5)+parseInt(_0x5e6f77(0x136))/0x6+parseInt(_0x5e6f77(0x1a2))/0x7*(parseInt(_0x5e6f77(0x185))/0x8)+-parseInt(_0x5e6f77(0x1ac))/0x9*(-parseInt(_0x5e6f77(0x1b0))/0xa)+-parseInt(_0x5e6f77(0x19d))/0xb*(parseInt(_0x5e6f77(0x177))/0xc);if(_0x46a9e8===_0x33eaf0)break;else _0x74a5ed['push'](_0x74a5ed['shift']());}catch(_0x155004){_0x74a5ed['push'](_0x74a5ed['shift']());}}}(_0x4421,0xde1d8));import _0x327d63 from'./engine-panel-shell.ok.js';import _0x4d77ab from'../../functions/modals/function-modal.ok.js';function _0x4421(){const _0x6a1290=['isMaterializer','materializerTargetType','syncWorkerConfig','keys','$attr','formatJson','trunc','120QFTGTE','runningBatches','put','handler','Worker\x20settings\x20saved','key','affinity','appliedOps','cursorKey','number','close','materializerPreviewPayload','info','data','reasonText','Example\x20source\x20row','Poll\x20interval','env','join','/retry','handlerName','$watch','running','config','583UlXQds','message','Reset\x20cursor\x20for\x20materializer\x20\x22','updated','$ok','188657DktaYA','Edit\x20Function\x20·\x20','reason','type','progress','inactive','pipelineStats','selectEnv','json','processed','3546wLSLiF','remove','materializerRepairBusy','example-2','1730XKcdNw','Job\x20TTL','pollInterval','988680QDwooh','source_env','replace','select','5aGTWdj','selectedEnv','isArray','materializerPreviewContext','snapshot','state','concurrency','result','toast','target_env','Materializer\x20retry\x20started','catch','onEnvChanged','async','isProcessor','mode','open','functions','source_type','isRunning','/rebuild','eng','queue_env','runtime','filter','processedChanges','stringify','Materializer\x20cursor\x20reset','toLocaleString','okdb','saveConfigError','8910834oigvWX','Failed\x20(','targetCount','Rebuild\x20materializer\x20\x22','all\x20nodes','loadOverviewRuns','isFinite','clearTargetOnRebuild','materializerTargetEnv','boolean','6FilPNL','name','isQueueWorker','online','workerStats','engine','target_type','buildWorkerConfigPatch','lockMode','handlerEnv','stats','materializerSourceType','border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2040%,\x20transparent);color:var(--okdb-accent);background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);','stateText','failedBatches','failed','length','all','recordRuns','workerHandler','error','setModalPayloadDraft','build','materializerSourceEnv','paused','example-1','envName','basePath','stores','success','stopped','1087316rjxHEJ','generic-engine-panel','string','includes','378633xbmtIj','No\x20worker\x20setting\x20changes\x20to\x20save','/reset-cursor','modal','ttl','job_type','bootstrap','status','affinityText','pipelineHandler','batchSize','$dispatch','materializerRepairError','shared','hydrateValues','openHandlerFunction','lag','originMode','runMaterializerRepairAction','round','160656ZIcyfj','saveConfigBusy','entries','failOnHandlerError','workerConfigDraft','yes','refresh'];_0x4421=function(){return _0x6a1290;};return _0x4421();}import{ENGINE_PANEL_SHARED_STYLE as _0x47dbd7}from'../engine-panel-shared-style.js';import{buildEngineBasePath as _0x37202b,formatJsonValue as _0x1a0e4b,getApiErrorMessage as _0x922859,openFunctionRoute as _0x3eef1f,resolveEngineEnvName as _0x20cffe}from'../engine-ui-utils.js';function o(_0x28405f,_0x5590a4='—'){const _0x2e257c=_0x55c2;return null==_0x28405f||''===_0x28405f?_0x5590a4:Array['isArray'](_0x28405f)?_0x28405f[_0x2e257c(0x150)]?_0x28405f[_0x2e257c(0x197)](',\x20'):_0x5590a4:_0x2e257c(0x13f)==typeof _0x28405f?_0x28405f?_0x2e257c(0x17c):'no':String(_0x28405f);}function c(_0x3e9501,_0x24ed23=[]){const _0x570de0=_0x55c2;return function(_0x43aed5){const _0x457074=_0x55c2;return!!_0x43aed5&&'object'==typeof _0x43aed5&&!Array[_0x457074(0x1b9)](_0x43aed5);}(_0x3e9501)?Object[_0x570de0(0x179)](_0x3e9501)[_0x570de0(0x12f)](([_0x351748,_0xaa43a5])=>!_0x24ed23[_0x570de0(0x162)](_0x351748)&&(null==_0xaa43a5||[_0x570de0(0x161),_0x570de0(0x18e),_0x570de0(0x13f)][_0x570de0(0x162)](typeof _0xaa43a5))):[];}function d(_0x588a98,_0x360a97){const _0x5016bb=_0x55c2;if(''===_0x588a98||null==_0x588a98)return null;const _0x24752a=Math[_0x5016bb(0x184)](Number(_0x588a98));if(!Number[_0x5016bb(0x13c)](_0x24752a)||_0x24752a<0x1)throw new Error(_0x360a97+'\x20must\x20be\x20a\x20positive\x20integer');return _0x24752a;}function p(_0x5e7e3a){const _0x25aa05=_0x55c2;if(null==_0x5e7e3a||''===_0x5e7e3a)return'—';const _0xdbb8d3=Number(_0x5e7e3a);if(!Number['isFinite'](_0xdbb8d3))return String(_0x5e7e3a);const _0x23b171=_0xdbb8d3<=0x1?0x64*_0xdbb8d3:_0xdbb8d3;return Math[_0x25aa05(0x176)](_0x23b171)+'%';}export default{'tag':_0x39feb4(0x160),'dependencies':[_0x327d63,_0x4d77ab],'attr':{'engine':{},'env':{},'modal':{}},'context':_0x277553=>({'saveConfigBusy':!0x1,'saveConfigError':null,'materializerRepairBusy':!0x1,'materializerRepairError':null,'showRawRuntime':!0x1,'showRawStats':!0x1,'showRawConfig':!0x1,'workerConfigDraft':{'concurrency':'','pollInterval':'','ttl':''},get 'eng'(){const _0x1d4132=_0x39feb4;return _0x277553[_0x1d4132(0x182)]['engine']??{};},get 'envName'(){const _0x430632=_0x39feb4;return _0x20cffe(this[_0x430632(0x12c)],_0x277553['$attr'][_0x430632(0x196)]??null);},get 'basePath'(){const _0x44c4e1=_0x39feb4;return _0x37202b(this[_0x44c4e1(0x12c)],this['envName']);},get 'isQueueWorker'(){const _0x49e144=_0x39feb4;return'queue-worker'===this[_0x49e144(0x12c)]['type'];},get 'isProcessor'(){const _0x16c659=_0x39feb4;return'processor'===this[_0x16c659(0x12c)]['type'];},get 'isMaterializer'(){const _0x49bb7a=_0x39feb4;return'materializer'===this[_0x49bb7a(0x12c)][_0x49bb7a(0x1a5)];},get 'hasSpecializedPipelineView'(){const _0x5638de=_0x39feb4;return this[_0x5638de(0x142)]||this[_0x5638de(0x125)]||this['isMaterializer'];},get 'stateText'(){const _0x5afa42=_0x39feb4;return _0x5afa42(0x154)===this[_0x5afa42(0x12c)][_0x5afa42(0x16a)]?_0x5afa42(0x154):_0x5afa42(0x1a7)===this[_0x5afa42(0x12c)][_0x5afa42(0x16a)]?_0x5afa42(0x1a7):this[_0x5afa42(0x12c)][_0x5afa42(0x12a)]||'online'===this[_0x5afa42(0x12c)][_0x5afa42(0x16a)]?'running':this[_0x5afa42(0x12c)][_0x5afa42(0x16a)]||_0x5afa42(0x15e);},get 'reasonText'(){const _0x423994=_0x39feb4,_0x2cc1d5=this['eng'][_0x423994(0x1a4)]??null;return _0x2cc1d5&&_0x2cc1d5!==this[_0x423994(0x14d)]?String(_0x2cc1d5)[_0x423994(0x1b5)](/_/g,'\x20'):'—';},get 'affinityText'(){const _0x46da1a=_0x39feb4;return o(this[_0x46da1a(0x12c)][_0x46da1a(0x18b)],_0x46da1a(0x13a));},get 'updatedText'(){const _0x285f3a=_0x39feb4;return function(_0x237d50){const _0x2b6e07=_0x55c2;if(!_0x237d50)return'—';try{return new Date(_0x237d50)[_0x2b6e07(0x133)]();}catch{return String(_0x237d50);}}(this[_0x285f3a(0x12c)][_0x285f3a(0x12e)]?.[_0x285f3a(0x1a0)]);},get 'runtimePreviewEntries'(){const _0x19c43d=_0x39feb4;return c(this['eng'][_0x19c43d(0x12e)],['state','reason',_0x19c43d(0x154),_0x19c43d(0x19b),_0x19c43d(0x1a0)]);},get 'statsPreviewEntries'(){const _0x527673=_0x39feb4;return c(this[_0x527673(0x12c)][_0x527673(0x14a)],['engine_key','job_type',_0x527673(0x12d),_0x527673(0x188),_0x527673(0x11d),'processed',_0x527673(0x14f),_0x527673(0x19b)]);},get 'configPreviewEntries'(){const _0x57a538=_0x39feb4;return c(this[_0x57a538(0x12c)][_0x57a538(0x19c)],[_0x57a538(0x168),_0x57a538(0x12d),_0x57a538(0x188),'concurrency',_0x57a538(0x1b2),_0x57a538(0x167)]);},get 'workerStats'(){const _0x2c3fac=_0x39feb4;return this[_0x2c3fac(0x12c)][_0x2c3fac(0x14a)]??{};},get 'pipelineStats'(){const _0x193a24=_0x39feb4;return this[_0x193a24(0x12c)][_0x193a24(0x14a)]??{};},get 'workerHandler'(){const _0x429e7d=_0x39feb4;return this['workerStats']['handler']??this[_0x429e7d(0x12c)][_0x429e7d(0x19c)]?.[_0x429e7d(0x188)]??null;},get 'pipelineHandler'(){const _0x4d1a2d=_0x39feb4;return this[_0x4d1a2d(0x1a8)][_0x4d1a2d(0x188)]??this[_0x4d1a2d(0x12c)]['config']?.[_0x4d1a2d(0x188)]??null;},get 'handlerName'(){const _0xe81019=_0x39feb4;return this[_0xe81019(0x16c)]?.['name']??null;},get 'handlerEnv'(){const _0x565f17=_0x39feb4;return this[_0x565f17(0x16c)]?.[_0x565f17(0x196)]??this['envName']??'—';},get 'canOpenHandlerFunction'(){const _0xb37fe9=_0x39feb4;return!!this[_0xb37fe9(0x199)];},get 'workerJobType'(){const _0x17cc26=_0x39feb4;return this['workerStats'][_0x17cc26(0x168)]??this[_0x17cc26(0x12c)][_0x17cc26(0x19c)]?.['job_type']??'—';},get 'workerQueueEnv'(){const _0x57a6d0=_0x39feb4;return this['workerStats'][_0x57a6d0(0x12d)]??this[_0x57a6d0(0x12c)]['config']?.[_0x57a6d0(0x12d)]??this[_0x57a6d0(0x15a)]??'—';},get 'workerFunctionEnv'(){const _0x39fd2e=_0x39feb4;return this[_0x39fd2e(0x153)]?.['env']??this[_0x39fd2e(0x15a)]??'—';},get 'workerRecordRuns'(){const _0x564995=_0x39feb4;return this[_0x564995(0x12c)][_0x564995(0x19c)]?.[_0x564995(0x188)]?.[_0x564995(0x152)]??_0x564995(0x151);},get 'workerProcessed'(){const _0x5c68ad=_0x39feb4;return this[_0x5c68ad(0x144)][_0x5c68ad(0x1ab)]??0x0;},get 'workerFailed'(){const _0x21ef81=_0x39feb4;return this[_0x21ef81(0x144)][_0x21ef81(0x14f)]??0x0;},get 'workerRunning'(){const _0xad98fb=_0x39feb4;return this[_0xad98fb(0x144)]['running']??0x0;},get 'workerConcurrency'(){const _0x2f206d=_0x39feb4;return this[_0x2f206d(0x144)][_0x2f206d(0x11d)]??this['eng'][_0x2f206d(0x19c)]?.[_0x2f206d(0x11d)]??0x1;},get 'workerPollInterval'(){const _0x3165fd=_0x39feb4;return this[_0x3165fd(0x12c)][_0x3165fd(0x19c)]?.[_0x3165fd(0x1b2)]??0x3e8;},get 'workerTtl'(){const _0x18f007=_0x39feb4;return this[_0x18f007(0x12c)][_0x18f007(0x19c)]?.['ttl']??0x7530;},get 'canOpenWorkerFunction'(){const _0x1044cc=_0x39feb4;return!!this[_0x1044cc(0x153)]?.[_0x1044cc(0x141)];},get 'showWorkerReason'(){const _0x2ac363=_0x39feb4;return'—'!==this[_0x2ac363(0x193)]&&_0x2ac363(0x19b)!==this[_0x2ac363(0x193)];},get 'showWorkerAffinity'(){const _0x33a1b6=_0x39feb4;return _0x33a1b6(0x13a)!==this[_0x33a1b6(0x16b)];},get 'processorSourceType'(){const _0x301d8b=_0x39feb4;return this[_0x301d8b(0x1a8)][_0x301d8b(0x129)]??this[_0x301d8b(0x12c)][_0x301d8b(0x19c)]?.[_0x301d8b(0x129)]??'—';},get 'processorSourceEnv'(){const _0x4080bc=_0x39feb4;return this[_0x4080bc(0x1a8)][_0x4080bc(0x1b4)]??this['eng'][_0x4080bc(0x19c)]?.[_0x4080bc(0x1b4)]??this[_0x4080bc(0x15a)]??'—';},get 'processorMode'(){const _0x44b035=_0x39feb4;return this[_0x44b035(0x1a8)][_0x44b035(0x126)]??this[_0x44b035(0x12c)]['config']?.[_0x44b035(0x126)]??_0x44b035(0x124);},get 'processorBootstrap'(){const _0x3763b0=_0x39feb4;return this[_0x3763b0(0x1a8)][_0x3763b0(0x169)]??this['eng'][_0x3763b0(0x19c)]?.[_0x3763b0(0x169)]??_0x3763b0(0x11b);},get 'processorOriginMode'(){const _0x1c8f63=_0x39feb4;return this['pipelineStats'][_0x1c8f63(0x174)]??this[_0x1c8f63(0x12c)][_0x1c8f63(0x19c)]?.['originMode']??_0x1c8f63(0x151);},get 'processorBatchSize'(){const _0x12081c=_0x39feb4;return this[_0x12081c(0x1a8)][_0x12081c(0x16d)]??this[_0x12081c(0x12c)][_0x12081c(0x19c)]?.[_0x12081c(0x16d)]??0x100;},get 'processorCursorKey'(){const _0x234fba=_0x39feb4;return this['pipelineStats'][_0x234fba(0x18d)]??this[_0x234fba(0x12c)]['config']?.['cursorKey']??this['eng'][_0x234fba(0x18a)]??'—';},get 'processorLockMode'(){const _0x218f5f=_0x39feb4;return this[_0x218f5f(0x1a8)]['lockMode']??this[_0x218f5f(0x12c)]['config']?.[_0x218f5f(0x148)]??'exclusive';},get 'processorHydrateValues'(){const _0x17602e=_0x39feb4;return o(this[_0x17602e(0x1a8)][_0x17602e(0x171)]??this[_0x17602e(0x12c)][_0x17602e(0x19c)]?.['hydrateValues']??!0x0);},get 'processorFailOnHandlerError'(){const _0x571432=_0x39feb4;return o(this['pipelineStats'][_0x571432(0x17a)]??this[_0x571432(0x12c)][_0x571432(0x19c)]?.[_0x571432(0x17a)]??!0x0);},get 'processorInvocations'(){return this['pipelineStats']['invocations']??0x0;},get 'processorProcessedChanges'(){const _0x319970=_0x39feb4;return this[_0x319970(0x1a8)][_0x319970(0x130)]??0x0;},get 'processorFailedBatches'(){const _0x24fd9f=_0x39feb4;return this['pipelineStats'][_0x24fd9f(0x14e)]??0x0;},get 'processorRunningBatches'(){return this['pipelineStats']['runningBatches']??0x0;},get 'processorLag'(){const _0x5a0972=_0x39feb4;return this[_0x5a0972(0x1a8)]['lag']??'—';},get 'processorProgress'(){const _0x1cf1d0=_0x39feb4;return p(this[_0x1cf1d0(0x1a8)][_0x1cf1d0(0x1a6)]);},get 'processorPaused'(){return!0x0===this['pipelineStats']['paused'];},get 'materializerSourceType'(){const _0x2a86c0=_0x39feb4;return this[_0x2a86c0(0x1a8)]['source_type']??this[_0x2a86c0(0x12c)][_0x2a86c0(0x19c)]?.[_0x2a86c0(0x129)]??'—';},get 'materializerTargetType'(){const _0x15aa4f=_0x39feb4;return this[_0x15aa4f(0x1a8)][_0x15aa4f(0x146)]??this[_0x15aa4f(0x12c)]['config']?.['target_type']??'—';},get 'materializerSourceEnv'(){const _0x1cabc5=_0x39feb4;return this[_0x1cabc5(0x1a8)]['source_env']??this[_0x1cabc5(0x12c)]['config']?.[_0x1cabc5(0x1b4)]??this[_0x1cabc5(0x15a)]??'—';},get 'materializerTargetEnv'(){const _0x2b44a4=_0x39feb4;return this[_0x2b44a4(0x1a8)][_0x2b44a4(0x120)]??this[_0x2b44a4(0x12c)][_0x2b44a4(0x19c)]?.[_0x2b44a4(0x120)]??this[_0x2b44a4(0x15a)]??'—';},get 'materializerBootstrap'(){const _0x50732f=_0x39feb4;return this[_0x50732f(0x1a8)]['bootstrap']??this[_0x50732f(0x12c)][_0x50732f(0x19c)]?.[_0x50732f(0x169)]??_0x50732f(0x11b);},get 'materializerOriginMode'(){const _0x1ea1b7=_0x39feb4;return this['pipelineStats'][_0x1ea1b7(0x174)]??this[_0x1ea1b7(0x12c)][_0x1ea1b7(0x19c)]?.[_0x1ea1b7(0x174)]??_0x1ea1b7(0x151);},get 'materializerBatchSize'(){const _0x20fb85=_0x39feb4;return this[_0x20fb85(0x1a8)][_0x20fb85(0x16d)]??this[_0x20fb85(0x12c)]['config']?.[_0x20fb85(0x16d)]??0x80;},get 'materializerCursorKey'(){const _0x25b480=_0x39feb4;return this[_0x25b480(0x1a8)]['cursorKey']??this['eng'][_0x25b480(0x19c)]?.[_0x25b480(0x18d)]??this['eng'][_0x25b480(0x18a)]??'—';},get 'materializerClearTargetOnRebuild'(){const _0x13a283=_0x39feb4;return o(this[_0x13a283(0x1a8)]['clearTargetOnRebuild']??this[_0x13a283(0x12c)][_0x13a283(0x19c)]?.[_0x13a283(0x13d)]??!0x0);},get 'materializerProcessedChanges'(){const _0x35e188=_0x39feb4;return this['pipelineStats'][_0x35e188(0x130)]??0x0;},get 'materializerAppliedOps'(){const _0x17e8fe=_0x39feb4;return this['pipelineStats'][_0x17e8fe(0x18c)]??0x0;},get 'materializerFailedBatches'(){const _0xbe7236=_0x39feb4;return this[_0xbe7236(0x1a8)][_0xbe7236(0x14e)]??0x0;},get 'materializerRunningBatches'(){const _0x5c8d33=_0x39feb4;return this['pipelineStats'][_0x5c8d33(0x186)]??0x0;},get 'materializerTargetCount'(){const _0x5bc6db=_0x39feb4;return this[_0x5bc6db(0x1a8)][_0x5bc6db(0x138)]??'—';},get 'materializerLag'(){const _0x4ee271=_0x39feb4;return this[_0x4ee271(0x1a8)][_0x4ee271(0x173)]??'—';},get 'materializerProgress'(){const _0x2f6fa2=_0x39feb4;return p(this[_0x2f6fa2(0x1a8)][_0x2f6fa2(0x1a6)]);},get 'materializerPaused'(){const _0xf753f6=_0x39feb4;return!0x0===this[_0xf753f6(0x1a8)][_0xf753f6(0x158)];},get 'materializerErrorText'(){const _0x317e6a=_0x39feb4;return this[_0x317e6a(0x1a8)][_0x317e6a(0x154)]??this[_0x317e6a(0x12c)][_0x317e6a(0x154)]??null;},get 'materializerPreviewPayload'(){const _0x5cd7e0=_0x39feb4;return[{'action':_0x5cd7e0(0x187),'key':_0x5cd7e0(0x159),'value':{'sample':!0x0,'title':_0x5cd7e0(0x194),'sourceType':this[_0x5cd7e0(0x14b)]},'clock':null},{'action':_0x5cd7e0(0x1ad),'key':_0x5cd7e0(0x1af),'clock':0x7b}];},get 'materializerPreviewContext'(){const _0x4b5201=_0x39feb4;return{'mode':_0x4b5201(0x143)===this[_0x4b5201(0x1a8)][_0x4b5201(0x11c)]?'live':_0x4b5201(0x156),'sourceType':this[_0x4b5201(0x14b)],'targetType':this[_0x4b5201(0x17f)],'sourceEnv':this[_0x4b5201(0x157)],'targetEnv':this[_0x4b5201(0x13e)],'engineKey':this[_0x4b5201(0x12c)][_0x4b5201(0x18a)]??null,'cursorKey':this['materializerCursorKey']};},'formatJson':_0x1a0e4b,'labelize':_0x4ecca1=>String(_0x4ecca1||'')[_0x39feb4(0x1b5)](/_/g,'\x20'),'humanValue':o,'rawToggleStyle':_0x9a0238=>_0x9a0238?_0x39feb4(0x14c):'','syncWorkerConfig'(_0x4e2274=null){const _0xb98f51=_0x39feb4,_0x523e8b=_0x4e2274?.[_0xb98f51(0x19c)]??{};this[_0xb98f51(0x17b)]={'concurrency':null==_0x523e8b[_0xb98f51(0x11d)]?'':String(_0x523e8b[_0xb98f51(0x11d)]),'pollInterval':null==_0x523e8b[_0xb98f51(0x1b2)]?'':String(_0x523e8b[_0xb98f51(0x1b2)]),'ttl':null==_0x523e8b[_0xb98f51(0x167)]?'':String(_0x523e8b[_0xb98f51(0x167)])},this[_0xb98f51(0x135)]=null;},'buildWorkerConfigPatch'(){const _0x37c287=_0x39feb4,_0x3f1617=this['eng'][_0x37c287(0x19c)]??{},_0x2cdcdb={'concurrency':d(this[_0x37c287(0x17b)][_0x37c287(0x11d)],'Concurrency'),'pollInterval':d(this[_0x37c287(0x17b)]['pollInterval'],_0x37c287(0x195)),'ttl':d(this[_0x37c287(0x17b)]['ttl'],_0x37c287(0x1b1))},_0x59d27c={};for(const [_0x3d8c4c,_0x62071c]of Object[_0x37c287(0x179)](_0x2cdcdb))null==_0x62071c?void 0x0!==_0x3f1617[_0x3d8c4c]&&(_0x59d27c[_0x3d8c4c]=null):_0x3f1617[_0x3d8c4c]!==_0x62071c&&(_0x59d27c[_0x3d8c4c]=_0x62071c);return _0x59d27c;},'resetWorkerConfig'(){const _0x26fc2c=_0x39feb4;this[_0x26fc2c(0x180)](this[_0x26fc2c(0x12c)]);},'inspectWorkerFunction'(){const _0x3979a2=_0x39feb4;this[_0x3979a2(0x172)](this['workerHandler']?.[_0x3979a2(0x141)]??null);},'openHandlerFunction'(_0xeb1d83=null){const _0x46f651=_0x39feb4,_0x1f8e6d=_0xeb1d83??this[_0x46f651(0x199)];_0x1f8e6d&&_0x3eef1f(_0x277553,_0x1f8e6d,{'beforeNavigate':()=>_0x277553[_0x46f651(0x182)][_0x46f651(0x166)]?.[_0x46f651(0x18f)]?.()});},async 'openHandlerEditor'(){const _0x5042e6=_0x39feb4;if(!this[_0x5042e6(0x199)])return;const _0x44be83=_0x277553[_0x5042e6(0x1a1)]['stores'][_0x5042e6(0x134)],_0x368c42=_0x277553['$ok'][_0x5042e6(0x15c)][_0x5042e6(0x128)],_0xab5638=this[_0x5042e6(0x149)]&&'—'!==this[_0x5042e6(0x149)]?this['handlerEnv']:this[_0x5042e6(0x15a)];_0xab5638?(_0x44be83[_0x5042e6(0x1b8)]!==_0xab5638&&_0x44be83[_0x5042e6(0x1a9)](_0xab5638),await _0x368c42[_0x5042e6(0x123)](),await _0x368c42[_0x5042e6(0x1b6)](this[_0x5042e6(0x199)]),_0x368c42['beginEditDraft'](),_0x368c42[_0x5042e6(0x155)](this[_0x5042e6(0x183)](this[_0x5042e6(0x190)])),_0x368c42['setModalPreviewContext']({'materializerContext':this[_0x5042e6(0x11a)]}),await _0x277553[_0x5042e6(0x1a1)]['shared']['modal'][_0x5042e6(0x127)]({'owner':_0x277553,'title':_0x5042e6(0x1a3)+this[_0x5042e6(0x199)],'canDrag':!0x0,'content':'<function-modal\x20:modal=\x22modal\x22\x20mode=\x22edit\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x56d02c=>({'modal':_0x56d02c,'onDone':async()=>{const _0x54856e=_0x5042e6;await _0x368c42['select'](this[_0x54856e(0x199)]),await _0x368c42[_0x54856e(0x13b)](),_0x277553[_0x54856e(0x16e)](_0x54856e(0x17d));}})})):this[_0x5042e6(0x172)]();},async 'runMaterializerRepairAction'(_0x1ac682,_0x387344,_0x53f870=null){const _0xc3fab0=_0x39feb4;if(this[_0xc3fab0(0x17e)]&&this[_0xc3fab0(0x15b)]&&!this[_0xc3fab0(0x1ae)]){if(_0x53f870&&!await _0x277553[_0xc3fab0(0x1a1)]['shared'][_0xc3fab0(0x166)]['confirm'](_0x53f870))return;this['materializerRepairBusy']=!0x0,this[_0xc3fab0(0x16f)]=null;try{const _0x4a29e5=await fetch(''+this['basePath']+_0x1ac682,{'method':'POST'}),_0x2ddb8c=await _0x4a29e5[_0xc3fab0(0x1aa)]()[_0xc3fab0(0x122)](()=>({}));if(!_0x4a29e5['ok'])throw new Error(_0x922859(_0x2ddb8c,'Failed\x20('+_0x4a29e5['status']+')'));const _0x4578ea=_0x2ddb8c?.[_0xc3fab0(0x192)]??_0x2ddb8c?.[_0xc3fab0(0x11e)]??null;_0x4578ea&&_0x277553['$dispatch']('engine-updated',_0x4578ea),_0x277553[_0xc3fab0(0x16e)](_0xc3fab0(0x17d)),_0x277553[_0xc3fab0(0x1a1)][_0xc3fab0(0x170)]?.[_0xc3fab0(0x11f)]?.[_0xc3fab0(0x15d)]?.(_0x387344);}catch(_0x62e8a1){this['materializerRepairError']=_0x62e8a1?.[_0xc3fab0(0x19e)]||String(_0x62e8a1),_0x277553[_0xc3fab0(0x1a1)][_0xc3fab0(0x170)]?.[_0xc3fab0(0x11f)]?.[_0xc3fab0(0x154)]?.(this[_0xc3fab0(0x16f)]);}finally{this[_0xc3fab0(0x1ae)]=!0x1;}}},'retryMaterializer'(){const _0xbe110=_0x39feb4;return this[_0xbe110(0x175)](_0xbe110(0x198),_0xbe110(0x121));},'resetMaterializerCursor'(){const _0x281603=_0x39feb4;return this[_0x281603(0x175)](_0x281603(0x165),_0x281603(0x132),_0x281603(0x19f)+this[_0x281603(0x12c)][_0x281603(0x141)]+'\x22?');},'rebuildMaterializer'(){const _0x3b1be6=_0x39feb4;return this['runMaterializerRepairAction'](_0x3b1be6(0x12b),'Materializer\x20rebuild\x20started',_0x3b1be6(0x139)+this[_0x3b1be6(0x12c)][_0x3b1be6(0x141)]+'\x22?');},async 'saveWorkerConfig'(){const _0x5caed9=_0x39feb4;if(this['isQueueWorker']&&this[_0x5caed9(0x15b)]&&!this[_0x5caed9(0x178)]){this[_0x5caed9(0x178)]=!0x0,this[_0x5caed9(0x135)]=null;try{const _0x5cf994=this[_0x5caed9(0x147)]();if(!Object[_0x5caed9(0x181)](_0x5cf994)[_0x5caed9(0x150)])return void _0x277553[_0x5caed9(0x1a1)][_0x5caed9(0x170)]?.[_0x5caed9(0x11f)]?.[_0x5caed9(0x191)]?.(_0x5caed9(0x164));const _0x59a4c4=await fetch(this[_0x5caed9(0x15b)],{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON[_0x5caed9(0x131)]({'config':_0x5cf994})}),_0xa5e541=await _0x59a4c4[_0x5caed9(0x1aa)]()[_0x5caed9(0x122)](()=>({}));if(!_0x59a4c4['ok'])throw new Error(_0x922859(_0xa5e541,_0x5caed9(0x137)+_0x59a4c4['status']+')'));const _0x3a1ea3=_0xa5e541?.[_0x5caed9(0x192)]??_0xa5e541?.['result']??null;_0x3a1ea3&&(this[_0x5caed9(0x180)](_0x3a1ea3),_0x277553[_0x5caed9(0x16e)]('engine-updated',_0x3a1ea3)),_0x277553[_0x5caed9(0x16e)](_0x5caed9(0x17d)),_0x277553[_0x5caed9(0x1a1)]['shared']?.['toast']?.[_0x5caed9(0x15d)]?.(_0x5caed9(0x189));}catch(_0x4c7c98){this[_0x5caed9(0x135)]=_0x4c7c98?.['message']||String(_0x4c7c98),_0x277553['$ok'][_0x5caed9(0x170)]?.[_0x5caed9(0x11f)]?.[_0x5caed9(0x154)]?.(this['saveConfigError']);}finally{this[_0x5caed9(0x178)]=!0x1;}}}}),'init'(_0x330df8){const _0x3bda0d=_0x39feb4;this[_0x3bda0d(0x180)](_0x330df8[_0x3bda0d(0x182)]['engine']),_0x330df8[_0x3bda0d(0x19a)](()=>_0x330df8[_0x3bda0d(0x182)][_0x3bda0d(0x145)],()=>this[_0x3bda0d(0x180)](_0x330df8[_0x3bda0d(0x182)][_0x3bda0d(0x145)]));},'template':'\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:env=\x22envName\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:=\x22isQueueWorker\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=\x22Queue\x20job\x20type\x20this\x20worker\x20consumes.\x22>{{\x20workerJobType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Environment\x20whose\x20queue\x20is\x20consumed.\x22>queue:\x20{{\x20workerQueueEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Function\x20environment.\x22>fn\x20env:\x20{{\x20workerFunctionEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22showWorkerReason\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Why\x20the\x20worker\x20is\x20in\x20its\x20current\x20state.\x22>{{\x20reasonText\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\x20\x20<if\x20:=\x22showWorkerAffinity\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Node\x20tags\x20required\x20for\x20this\x20worker\x20to\x20run.\x22>affinity:\x20{{\x20affinityText\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<div\x20style=\x22display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20style=\x22margin:0;\x22>Function</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22canOpenWorkerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22inspectWorkerFunction()\x22\x20class=\x22inline-link\x22\x20title=\x22View\x20or\x20edit\x20this\x20function\x20in\x20the\x20Functions\x20section.\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ƒ\x20{{\x20workerHandler?.name\x20||\x20\x27—\x27\x20}}\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</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!canOpenWorkerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22muted-code\x22\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20workerHandler?.name\x20||\x20\x27—\x27\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</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%,\x20360px);\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>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>{{\x20workerProcessed\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>Error</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(workerFailed\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-strong)\x27)\x22>{{\x20workerFailed\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>Active</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(workerRunning\x20>\x200\x20?\x20\x27var(--okdb-warning)\x27\x20:\x20\x27var(--okdb-app-fg-strong)\x27)\x22>{{\x20workerRunning\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>Concurrency</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-accent);\x22>{{\x20workerConcurrency\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\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\x20style=\x22display:flex;align-items:center;gap:8px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22\x20style=\x22margin:0;\x22>Settings</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:1;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22\x20style=\x22margin-right:4px;\x22>updated\x20{{\x20updatedText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22resetWorkerConfig()\x22\x20:disabled=\x22saveConfigBusy\x20||\x20!basePath\x22\x20title=\x22Discard\x20unsaved\x20changes.\x22\x20style=\x22font-size:11px;padding:4px\x2010px;opacity:.75;\x22>Reset</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22saveWorkerConfig()\x22\x20:disabled=\x22saveConfigBusy\x20||\x20!basePath\x22\x20title=\x22Save\x20and\x20restart\x20the\x20worker\x20with\x20these\x20values.\x22\x20style=\x22font-size:11px;padding:4px\x2010px;color:var(--okdb-accent);border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20saveConfigBusy\x20?\x20\x27Saving…\x27\x20:\x20\x27Save\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22field-stack\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20title=\x22Parallel\x20worker\x20lanes.\x22>Concurrency</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20class=\x22field-input\x22\x20type=\x22number\x22\x20min=\x221\x22\x20:value=\x22workerConfigDraft.concurrency\x22\x20@input=\x22workerConfigDraft.concurrency\x20=\x20$event.target.value\x22\x20placeholder=\x221\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22field-stack\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20title=\x22Milliseconds\x20to\x20wait\x20before\x20polling\x20again\x20when\x20the\x20queue\x20is\x20empty.\x22>Poll</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20class=\x22field-input\x22\x20type=\x22number\x22\x20min=\x221\x22\x20:value=\x22workerConfigDraft.pollInterval\x22\x20@input=\x22workerConfigDraft.pollInterval\x20=\x20$event.target.value\x22\x20placeholder=\x221000\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22field-stack\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20title=\x22Milliseconds\x20an\x20in-flight\x20claim\x20stays\x20reserved\x20before\x20it\x20can\x20be\x20reclaimed.\x22>TTL</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20class=\x22field-input\x22\x20type=\x22number\x22\x20min=\x221\x22\x20:value=\x22workerConfigDraft.ttl\x22\x20@input=\x22workerConfigDraft.ttl\x20=\x20$event.target.value\x22\x20placeholder=\x2230000\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22field-stack\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20title=\x22Whether\x20function\x20runs\x20are\x20persisted.\x22>Runs</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-input\x22\x20style=\x22display:flex;align-items:center;min-height:36px;background:var(--okdb-app-bg);\x22>{{\x20workerRecordRuns\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22saveConfigError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22alert\x20alert--error\x22>{{\x20saveConfigError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22isProcessor\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\x20this\x20processor\x20watches.\x22>{{\x20processorSourceType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Environment\x20whose\x20changelog\x20is\x20consumed.\x22>source:\x20{{\x20processorSourceEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Function\x20environment.\x22>fn\x20env:\x20{{\x20handlerEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22How\x20source\x20changes\x20are\x20consumed.\x22>mode:\x20{{\x20processorMode\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22processorPaused\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Processor\x20registration\x20is\x20currently\x20paused.\x22>paused</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\x20\x20<if\x20:=\x22showWorkerReason\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Why\x20the\x20processor\x20is\x20in\x20its\x20current\x20state.\x22>{{\x20reasonText\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<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Watches\x20<strong>{{\x20processorSourceType\x20}}</strong>\x20in\x20<strong>{{\x20processorSourceEnv\x20}}</strong>\x20and\x20runs\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22canOpenHandlerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openHandlerFunction()\x22\x20class=\x22inline-link\x22\x20title=\x22View\x20or\x20edit\x20this\x20function\x20in\x20the\x20Functions\x20section.\x22>ƒ\x20{{\x20handlerName\x20}}\x20↗</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:=\x22!canOpenHandlerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22muted-code\x22\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20handlerName\x20||\x20\x27—\x27\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\x20\x20for\x20each\x20change\x20batch.\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>Use\x20this\x20engine\x20for\x20side\x20effects\x20and\x20projections\x20driven\x20by\x20change\x20batches\x20without\x20owning\x20a\x20dedicated\x20target\x20type.</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>Invocations</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-accent);\x22>{{\x20processorInvocations\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>Changes</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>{{\x20processorProcessedChanges\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>Failures</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(processorFailedBatches\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-strong)\x27)\x22>{{\x20processorFailedBatches\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>Lag</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(processorLag\x20===\x200\x20?\x20\x27var(--okdb-success)\x27\x20:\x20\x27var(--okdb-warning)\x27)\x22>{{\x20processorLag\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\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>Processing\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>bootstrap</span><span\x20class=\x22kv-val\x22>{{\x20processorBootstrap\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>origin\x20mode</span><span\x20class=\x22kv-val\x22>{{\x20processorOriginMode\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>batch\x20size</span><span\x20class=\x22kv-val\x22>{{\x20processorBatchSize\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>running\x20batches</span><span\x20class=\x22kv-val\x22>{{\x20processorRunningBatches\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>progress</span><span\x20class=\x22kv-val\x22>{{\x20processorProgress\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>cursor\x20key</span><span\x20class=\x22kv-val\x22>{{\x20processorCursorKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>lock\x20mode</span><span\x20class=\x22kv-val\x22>{{\x20processorLockMode\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>hydrate\x20values</span><span\x20class=\x22kv-val\x22>{{\x20processorHydrateValues\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>fail\x20on\x20fn\x20error</span><span\x20class=\x22kv-val\x22>{{\x20processorFailOnHandlerError\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22isMaterializer\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\x20this\x20materializer\x20watches.\x22>{{\x20materializerSourceType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Target\x20type\x20updated\x20by\x20returned\x20ops.\x22>target:\x20{{\x20materializerTargetType\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{{\x20materializerSourceEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Target\x20environment.\x22>target\x20env:\x20{{\x20materializerTargetEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Function\x20environment.\x22>fn\x20env:\x20{{\x20handlerEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22materializerPaused\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Materializer\x20registration\x20is\x20currently\x20paused.\x22>paused</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<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Projects\x20<strong>{{\x20materializerSourceType\x20}}</strong>\x20into\x20<strong>{{\x20materializerTargetType\x20}}</strong>\x20using\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22canOpenHandlerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openHandlerFunction()\x22\x20class=\x22inline-link\x22\x20title=\x22View\x20or\x20edit\x20this\x20function\x20in\x20the\x20Functions\x20section.\x22>ƒ\x20{{\x20handlerName\x20}}\x20↗</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:=\x22!canOpenHandlerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22muted-code\x22\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20handlerName\x20||\x20\x27—\x27\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\x20\x20and\x20applies\x20the\x20returned\x20ops\x20to\x20the\x20target\x20collection.\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>Use\x20this\x20engine\x20when\x20you\x20want\x20deterministic,\x20rebuildable\x20derived\x20records\x20instead\x20of\x20free-form\x20side\x20effects.</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>Applied\x20ops</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>{{\x20materializerAppliedOps\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>Target\x20rows</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-accent);\x22>{{\x20materializerTargetCount\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>Changes</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>{{\x20materializerProcessedChanges\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>Failures</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(materializerFailedBatches\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-strong)\x27)\x22>{{\x20materializerFailedBatches\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\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>Materialization\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>bootstrap</span><span\x20class=\x22kv-val\x22>{{\x20materializerBootstrap\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>origin\x20mode</span><span\x20class=\x22kv-val\x22>{{\x20materializerOriginMode\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>batch\x20size</span><span\x20class=\x22kv-val\x22>{{\x20materializerBatchSize\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>running\x20batches</span><span\x20class=\x22kv-val\x22>{{\x20materializerRunningBatches\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>progress</span><span\x20class=\x22kv-val\x22>{{\x20materializerProgress\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>lag</span><span\x20class=\x22kv-val\x22>{{\x20materializerLag\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>cursor\x20key</span><span\x20class=\x22kv-val\x22>{{\x20materializerCursorKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>clear\x20on\x20rebuild</span><span\x20class=\x22kv-val\x22>{{\x20materializerClearTargetOnRebuild\x20}}</span>\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;border-color:#244057;\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:6px;min-width:0;flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Repair\x20workflow</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-note\x22\x20style=\x22margin:0;\x22>Edit\x20the\x20handler\x20with\x20seeded\x20sample\x20input,\x20verify\x20the\x20draft\x20run,\x20then\x20retry,\x20rewind,\x20or\x20rebuild\x20from\x20here.</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=\x22display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openHandlerEditor()\x22\x20:disabled=\x22!canOpenHandlerFunction\x20||\x20materializerRepairBusy\x22\x20style=\x22font-size:12px;padding:4px\x2010px;color:var(--okdb-accent);border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x22>ƒ\x20Edit\x20handler</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22retryMaterializer()\x22\x20:disabled=\x22materializerRepairBusy\x20||\x20!basePath\x22\x20style=\x22font-size:12px;padding:4px\x2010px;color:var(--okdb-orange);border-color:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2033%,\x20transparent);\x22>↻\x20Retry</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22resetMaterializerCursor()\x22\x20:disabled=\x22materializerRepairBusy\x20||\x20!basePath\x22\x20style=\x22font-size:12px;padding:4px\x2010px;color:var(--okdb-info);border-color:color-mix(in\x20srgb,\x20var(--okdb-info)\x2033%,\x20transparent);\x22>⇤\x20Reset\x20cursor</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildMaterializer()\x22\x20:disabled=\x22materializerRepairBusy\x20||\x20!basePath\x22\x20style=\x22font-size:12px;padding:4px\x2010px;color:var(--okdb-success);border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>⟳\x20Rebuild</button>\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<if\x20:=\x22materializerErrorText\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22alert\x20alert--error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;margin-bottom:4px;\x22>Last\x20materializer\x20error</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>{{\x20materializerErrorText\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22materializerRepairError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22alert\x20alert--error\x22>{{\x20materializerRepairError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:grid;grid-template-columns:minmax(0,1fr)\x20minmax(280px,.9fr);gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Suggested\x20<code>ctx.payload</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22\x20style=\x22margin:0;max-height:220px;overflow:auto;\x22>{{\x20formatJson(materializerPreviewPayload)\x20}}</pre>\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;flex-direction:column;gap:8px;min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Suggested\x20<code>ctx.materializer</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22\x20style=\x22margin:0;max-height:220px;overflow:auto;\x22>{{\x20formatJson(materializerPreviewContext)\x20}}</pre>\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\x20class=\x22story-note\x22\x20style=\x22margin:0;\x22>Recommended\x20order:\x20<strong>Edit\x20handler</strong>\x20→\x20run\x20the\x20seeded\x20draft\x20preview\x20→\x20<strong>Retry</strong>.\x20Use\x20<strong>Reset\x20cursor</strong>\x20to\x20replay\x20without\x20clearing\x20the\x20target,\x20or\x20<strong>Rebuild</strong>\x20to\x20clear\x20and\x20rematerialize\x20from\x20scratch.</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!hasSpecializedPipelineView\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22panel-grid\x20panel-grid--two\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;flex-direction:column;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Overview</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>state</span><span\x20class=\x22kv-val\x22>{{\x20stateText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>reason</span><span\x20class=\x22kv-val\x22>{{\x20reasonText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>enabled</span><span\x20class=\x22kv-val\x22>{{\x20eng.enabled\x20===\x20false\x20?\x20\x27no\x27\x20:\x20\x27yes\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>affinity</span><span\x20class=\x22kv-val\x22>{{\x20affinityText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>updated</span><span\x20class=\x22kv-val\x22>{{\x20updatedText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22runtimePreviewEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Runtime\x20details</div>\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20<each\x20:of=\x22runtimePreviewEntries\x22\x20let:item=\x22entry\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>{{\x20labelize(entry[0])\x20}}</span><span\x20class=\x22kv-val\x22>{{\x20humanValue(entry[1])\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;flex-direction:column;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Configuration</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22configPreviewEntries.length\x20>\x200\x22>\x0a\x20\x20\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\x20\x20<each\x20:of=\x22configPreviewEntries\x22\x20let:item=\x22entry\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>{{\x20labelize(entry[0])\x20}}</span><span\x20class=\x22kv-val\x22>{{\x20humanValue(entry[1])\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22configPreviewEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22helper-text\x22>This\x20engine\x20mostly\x20uses\x20structured\x20config.\x20Open\x20the\x20raw\x20JSON\x20below\x20if\x20you\x20need\x20the\x20full\x20payload.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22statsPreviewEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Stats\x20snapshot</div>\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20<each\x20:of=\x22statsPreviewEntries\x22\x20let:item=\x22entry\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>{{\x20labelize(entry[0])\x20}}</span><span\x20class=\x22kv-val\x22>{{\x20humanValue(entry[1])\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;flex-direction:column;gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;gap:8px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Raw\x20data</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-subtitle\x22>Keep\x20the\x20default\x20view\x20visual\x20first.\x20Open\x20these\x20only\x20when\x20you\x20need\x20the\x20underlying\x20JSON.</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22raw-toggle-row\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.runtime\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22raw-toggle\x22\x20:style=\x22rawToggleStyle(showRawRuntime)\x22\x20@click=\x22showRawRuntime\x20=\x20!showRawRuntime\x22>Runtime\x20JSON</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22raw-toggle\x22\x20:style=\x22rawToggleStyle(showRawStats)\x22\x20@click=\x22showRawStats\x20=\x20!showRawStats\x22>Stats\x20JSON</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.config\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22raw-toggle\x22\x20:style=\x22rawToggleStyle(showRawConfig)\x22\x20@click=\x22showRawConfig\x20=\x20!showRawConfig\x22>Config\x20JSON</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22showRawRuntime\x20&&\x20eng.runtime\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Runtime\x20payload</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22>{{\x20formatJson(eng.runtime)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22showRawStats\x20&&\x20eng.stats\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Stats\x20payload</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22>{{\x20formatJson(eng.stats)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22showRawConfig\x20&&\x20eng.config\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Config\x20payload</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22>{{\x20formatJson(eng.config)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','style':_0x47dbd7};
|
|
1
|
+
const _0x224a85=_0x493d;function _0x493d(_0x1c3754,_0x312219){_0x1c3754=_0x1c3754-0x118;const _0x33bbd2=_0x33bb();let _0x493d77=_0x33bbd2[_0x1c3754];return _0x493d77;}(function(_0x58ed1f,_0x412710){const _0x4ef6e8=_0x493d,_0x1e05b6=_0x58ed1f();while(!![]){try{const _0xeb7887=-parseInt(_0x4ef6e8(0x16f))/0x1+parseInt(_0x4ef6e8(0x166))/0x2*(parseInt(_0x4ef6e8(0x196))/0x3)+parseInt(_0x4ef6e8(0x140))/0x4+parseInt(_0x4ef6e8(0x126))/0x5*(parseInt(_0x4ef6e8(0x170))/0x6)+parseInt(_0x4ef6e8(0x154))/0x7*(-parseInt(_0x4ef6e8(0x195))/0x8)+-parseInt(_0x4ef6e8(0x1b2))/0x9+parseInt(_0x4ef6e8(0x13a))/0xa;if(_0xeb7887===_0x412710)break;else _0x1e05b6['push'](_0x1e05b6['shift']());}catch(_0x342deb){_0x1e05b6['push'](_0x1e05b6['shift']());}}}(_0x33bb,0x4f995));import _0x1b8cfb from'./engine-panel-shell.ok.js';import _0x418dcd from'../../functions/modals/function-modal.ok.js';import{ENGINE_PANEL_SHARED_STYLE as _0x2b5256}from'../engine-panel-shared-style.js';import{buildEngineBasePath as _0x2a72f3,formatJsonValue as _0x3d4a0d,getApiErrorMessage as _0x2a7ee6,openFunctionRoute as _0x3096d,resolveEngineEnvName as _0x2c2102}from'../engine-ui-utils.js';function o(_0x2c0f08,_0x4911e3='—'){const _0x529e6f=_0x493d;return null==_0x2c0f08||''===_0x2c0f08?_0x4911e3:Array[_0x529e6f(0x153)](_0x2c0f08)?_0x2c0f08[_0x529e6f(0x118)]?_0x2c0f08[_0x529e6f(0x173)](',\x20'):_0x4911e3:'boolean'==typeof _0x2c0f08?_0x2c0f08?'yes':'no':String(_0x2c0f08);}function c(_0x57f7d4,_0x60b0b8=[]){const _0x1315ed=_0x493d;return function(_0x48c93b){const _0x686103=_0x493d;return!!_0x48c93b&&_0x686103(0x199)==typeof _0x48c93b&&!Array['isArray'](_0x48c93b);}(_0x57f7d4)?Object[_0x1315ed(0x11a)](_0x57f7d4)[_0x1315ed(0x194)](([_0x62fbac,_0x42cae8])=>!_0x60b0b8['includes'](_0x62fbac)&&(null==_0x42cae8||['string',_0x1315ed(0x128),_0x1315ed(0x188)][_0x1315ed(0x162)](typeof _0x42cae8))):[];}function d(_0x2ae7fd,_0x594e76){const _0x498e48=_0x493d;if(''===_0x2ae7fd||null==_0x2ae7fd)return null;const _0x2ed44b=Math[_0x498e48(0x144)](Number(_0x2ae7fd));if(!Number[_0x498e48(0x11e)](_0x2ed44b)||_0x2ed44b<0x1)throw new Error(_0x594e76+_0x498e48(0x192));return _0x2ed44b;}function p(_0x3742c4){const _0xf7173f=_0x493d;if(null==_0x3742c4||''===_0x3742c4)return'—';const _0x24e54b=Number(_0x3742c4);if(!Number[_0xf7173f(0x11e)](_0x24e54b))return String(_0x3742c4);const _0x1e50b1=_0x24e54b<=0x1?0x64*_0x24e54b:_0x24e54b;return Math['round'](_0x1e50b1)+'%';}export default{'tag':_0x224a85(0x156),'dependencies':[_0x1b8cfb,_0x418dcd],'attr':{'engine':{},'env':{},'modal':{}},'context':_0xe5eb0c=>({'saveConfigBusy':!0x1,'saveConfigError':null,'materializerRepairBusy':!0x1,'materializerRepairError':null,'showRawRuntime':!0x1,'showRawStats':!0x1,'showRawConfig':!0x1,'workerConfigDraft':{'concurrency':'','pollInterval':'','ttl':''},get 'eng'(){const _0x3235de=_0x224a85;return _0xe5eb0c[_0x3235de(0x1aa)][_0x3235de(0x186)]??{};},get 'envName'(){const _0x3a6c5f=_0x224a85;return _0x2c2102(this['eng'],_0xe5eb0c[_0x3a6c5f(0x1aa)]['env']??null);},get 'basePath'(){const _0x22467a=_0x224a85;return _0x2a72f3(this[_0x22467a(0x18b)],this['envName']);},get 'isQueueWorker'(){const _0x2d6965=_0x224a85;return _0x2d6965(0x179)===this['eng'][_0x2d6965(0x177)];},get 'isProcessor'(){const _0x5826c6=_0x224a85;return'processor'===this['eng'][_0x5826c6(0x177)];},get 'isMaterializer'(){const _0x6a2756=_0x224a85;return _0x6a2756(0x16a)===this['eng'][_0x6a2756(0x177)];},get 'hasSpecializedPipelineView'(){return this['isQueueWorker']||this['isProcessor']||this['isMaterializer'];},get 'stateText'(){const _0x1788db=_0x224a85;return _0x1788db(0x17f)===this[_0x1788db(0x18b)]['status']?_0x1788db(0x17f):_0x1788db(0x120)===this[_0x1788db(0x18b)][_0x1788db(0x1a7)]?_0x1788db(0x120):this[_0x1788db(0x18b)]['isRunning']||'online'===this[_0x1788db(0x18b)]['status']?_0x1788db(0x174):this['eng']['status']||_0x1788db(0x14f);},get 'reasonText'(){const _0x3d6580=_0x224a85,_0x8c3823=this['eng']['reason']??null;return _0x8c3823&&_0x8c3823!==this[_0x3d6580(0x17d)]?String(_0x8c3823)[_0x3d6580(0x1a4)](/_/g,'\x20'):'—';},get 'affinityText'(){const _0xf05ff4=_0x224a85;return o(this[_0xf05ff4(0x18b)][_0xf05ff4(0x18e)],_0xf05ff4(0x1ac));},get 'updatedText'(){const _0x4bc91c=_0x224a85;return function(_0x461030){const _0x1c34d5=_0x493d;if(!_0x461030)return'—';try{return new Date(_0x461030)[_0x1c34d5(0x1a6)]();}catch{return String(_0x461030);}}(this['eng']['runtime']?.[_0x4bc91c(0x150)]);},get 'runtimePreviewEntries'(){const _0xbcab80=_0x224a85;return c(this['eng']['runtime'],[_0xbcab80(0x16d),_0xbcab80(0x131),_0xbcab80(0x17f),_0xbcab80(0x174),_0xbcab80(0x150)]);},get 'statsPreviewEntries'(){const _0x371f9e=_0x224a85;return c(this['eng'][_0x371f9e(0x14d)],[_0x371f9e(0x1a3),_0x371f9e(0x14b),_0x371f9e(0x19e),'handler',_0x371f9e(0x137),_0x371f9e(0x19f),_0x371f9e(0x13c),'running']);},get 'configPreviewEntries'(){const _0x13bc74=_0x224a85;return c(this[_0x13bc74(0x18b)][_0x13bc74(0x11b)],['job_type',_0x13bc74(0x19e),_0x13bc74(0x183),_0x13bc74(0x137),_0x13bc74(0x160),'ttl']);},get 'workerStats'(){const _0x51a7b3=_0x224a85;return this[_0x51a7b3(0x18b)][_0x51a7b3(0x14d)]??{};},get 'pipelineStats'(){const _0x36931e=_0x224a85;return this[_0x36931e(0x18b)][_0x36931e(0x14d)]??{};},get 'workerHandler'(){const _0x339165=_0x224a85;return this[_0x339165(0x18f)][_0x339165(0x183)]??this[_0x339165(0x18b)]['config']?.[_0x339165(0x183)]??null;},get 'pipelineHandler'(){const _0x1999ff=_0x224a85;return this[_0x1999ff(0x13f)][_0x1999ff(0x183)]??this[_0x1999ff(0x18b)][_0x1999ff(0x11b)]?.[_0x1999ff(0x183)]??null;},get 'handlerName'(){const _0xfe0eef=_0x224a85;return this[_0xfe0eef(0x14e)]?.[_0xfe0eef(0x159)]??null;},get 'handlerEnv'(){const _0x398bd5=_0x224a85;return this[_0x398bd5(0x14e)]?.[_0x398bd5(0x16b)]??this[_0x398bd5(0x13b)]??'—';},get 'canOpenHandlerFunction'(){const _0x55f74e=_0x224a85;return!!this[_0x55f74e(0x1a9)];},get 'workerJobType'(){const _0x1a7e01=_0x224a85;return this[_0x1a7e01(0x18f)]['job_type']??this[_0x1a7e01(0x18b)]['config']?.['job_type']??'—';},get 'workerQueueEnv'(){const _0x5c87be=_0x224a85;return this[_0x5c87be(0x18f)]['queue_env']??this[_0x5c87be(0x18b)][_0x5c87be(0x11b)]?.['queue_env']??this['envName']??'—';},get 'workerFunctionEnv'(){const _0x19e91e=_0x224a85;return this[_0x19e91e(0x1a1)]?.[_0x19e91e(0x16b)]??this[_0x19e91e(0x13b)]??'—';},get 'workerRecordRuns'(){const _0xe12ae2=_0x224a85;return this[_0xe12ae2(0x18b)][_0xe12ae2(0x11b)]?.[_0xe12ae2(0x183)]?.[_0xe12ae2(0x16c)]??'all';},get 'workerProcessed'(){const _0x40572d=_0x224a85;return this['workerStats'][_0x40572d(0x19f)]??0x0;},get 'workerFailed'(){const _0x491068=_0x224a85;return this[_0x491068(0x18f)][_0x491068(0x13c)]??0x0;},get 'workerRunning'(){const _0x206675=_0x224a85;return this['workerStats'][_0x206675(0x174)]??0x0;},get 'workerConcurrency'(){const _0x1eedc0=_0x224a85;return this['workerStats'][_0x1eedc0(0x137)]??this[_0x1eedc0(0x18b)][_0x1eedc0(0x11b)]?.[_0x1eedc0(0x137)]??0x1;},get 'workerPollInterval'(){const _0x1a0b89=_0x224a85;return this[_0x1a0b89(0x18b)]['config']?.[_0x1a0b89(0x160)]??0x3e8;},get 'workerTtl'(){const _0x429f75=_0x224a85;return this[_0x429f75(0x18b)][_0x429f75(0x11b)]?.['ttl']??0x7530;},get 'canOpenWorkerFunction'(){const _0x2afd03=_0x224a85;return!!this[_0x2afd03(0x1a1)]?.[_0x2afd03(0x159)];},get 'showWorkerReason'(){const _0x5e1e9d=_0x224a85;return'—'!==this[_0x5e1e9d(0x141)]&&_0x5e1e9d(0x174)!==this[_0x5e1e9d(0x141)];},get 'showWorkerAffinity'(){const _0x379ced=_0x224a85;return _0x379ced(0x1ac)!==this['affinityText'];},get 'processorSourceType'(){const _0x3dc13e=_0x224a85;return this['pipelineStats'][_0x3dc13e(0x191)]??this[_0x3dc13e(0x18b)]['config']?.['source_type']??'—';},get 'processorSourceEnv'(){const _0x118d24=_0x224a85;return this[_0x118d24(0x13f)][_0x118d24(0x189)]??this[_0x118d24(0x18b)][_0x118d24(0x11b)]?.[_0x118d24(0x189)]??this['envName']??'—';},get 'processorMode'(){const _0x37ed01=_0x224a85;return this[_0x37ed01(0x13f)]['mode']??this['eng'][_0x37ed01(0x11b)]?.[_0x37ed01(0x1ab)]??'async';},get 'processorBootstrap'(){const _0x10f704=_0x224a85;return this[_0x10f704(0x13f)]['bootstrap']??this[_0x10f704(0x18b)]['config']?.[_0x10f704(0x15a)]??_0x10f704(0x146);},get 'processorOriginMode'(){const _0x3ce51a=_0x224a85;return this[_0x3ce51a(0x13f)][_0x3ce51a(0x1a0)]??this[_0x3ce51a(0x18b)]['config']?.['originMode']??_0x3ce51a(0x151);},get 'processorBatchSize'(){const _0x30402e=_0x224a85;return this[_0x30402e(0x13f)][_0x30402e(0x136)]??this[_0x30402e(0x18b)][_0x30402e(0x11b)]?.[_0x30402e(0x136)]??0x100;},get 'processorCursorKey'(){const _0x4d1268=_0x224a85;return this[_0x4d1268(0x13f)][_0x4d1268(0x139)]??this['eng'][_0x4d1268(0x11b)]?.[_0x4d1268(0x139)]??this[_0x4d1268(0x18b)][_0x4d1268(0x143)]??'—';},get 'processorLockMode'(){const _0xc40c63=_0x224a85;return this[_0xc40c63(0x13f)][_0xc40c63(0x134)]??this[_0xc40c63(0x18b)][_0xc40c63(0x11b)]?.[_0xc40c63(0x134)]??_0xc40c63(0x1af);},get 'processorHydrateValues'(){const _0x2b0181=_0x224a85;return o(this[_0x2b0181(0x13f)][_0x2b0181(0x197)]??this[_0x2b0181(0x18b)][_0x2b0181(0x11b)]?.[_0x2b0181(0x197)]??!0x0);},get 'processorFailOnHandlerError'(){const _0x27affe=_0x224a85;return o(this[_0x27affe(0x13f)]['failOnHandlerError']??this[_0x27affe(0x18b)]['config']?.[_0x27affe(0x17e)]??!0x0);},get 'processorInvocations'(){const _0x8ed9b8=_0x224a85;return this[_0x8ed9b8(0x13f)][_0x8ed9b8(0x12f)]??0x0;},get 'processorProcessedChanges'(){const _0xfabfe1=_0x224a85;return this[_0xfabfe1(0x13f)][_0xfabfe1(0x184)]??0x0;},get 'processorFailedBatches'(){const _0xe79989=_0x224a85;return this[_0xe79989(0x13f)][_0xe79989(0x157)]??0x0;},get 'processorRunningBatches'(){const _0x3201a2=_0x224a85;return this[_0x3201a2(0x13f)][_0x3201a2(0x17a)]??0x0;},get 'processorLag'(){const _0x21b3db=_0x224a85;return this[_0x21b3db(0x13f)][_0x21b3db(0x18a)]??'—';},get 'processorProgress'(){const _0x5b57b8=_0x224a85;return p(this['pipelineStats'][_0x5b57b8(0x147)]);},get 'processorPaused'(){const _0x32b0b6=_0x224a85;return!0x0===this[_0x32b0b6(0x13f)]['paused'];},get 'materializerSourceType'(){const _0x5c94c3=_0x224a85;return this[_0x5c94c3(0x13f)]['source_type']??this['eng'][_0x5c94c3(0x11b)]?.[_0x5c94c3(0x191)]??'—';},get 'materializerTargetType'(){const _0x2b847c=_0x224a85;return this['pipelineStats']['target_type']??this['eng'][_0x2b847c(0x11b)]?.['target_type']??'—';},get 'materializerSourceEnv'(){const _0x1db647=_0x224a85;return this['pipelineStats'][_0x1db647(0x189)]??this[_0x1db647(0x18b)][_0x1db647(0x11b)]?.['source_env']??this[_0x1db647(0x13b)]??'—';},get 'materializerTargetEnv'(){const _0x4efee9=_0x224a85;return this[_0x4efee9(0x13f)][_0x4efee9(0x165)]??this[_0x4efee9(0x18b)]['config']?.[_0x4efee9(0x165)]??this[_0x4efee9(0x13b)]??'—';},get 'materializerBootstrap'(){const _0x474169=_0x224a85;return this['pipelineStats'][_0x474169(0x15a)]??this[_0x474169(0x18b)][_0x474169(0x11b)]?.[_0x474169(0x15a)]??_0x474169(0x146);},get 'materializerOriginMode'(){const _0x37221e=_0x224a85;return this[_0x37221e(0x13f)][_0x37221e(0x1a0)]??this[_0x37221e(0x18b)][_0x37221e(0x11b)]?.['originMode']??_0x37221e(0x151);},get 'materializerBatchSize'(){const _0x3b0083=_0x224a85;return this[_0x3b0083(0x13f)][_0x3b0083(0x136)]??this[_0x3b0083(0x18b)][_0x3b0083(0x11b)]?.[_0x3b0083(0x136)]??0x80;},get 'materializerCursorKey'(){const _0x44a3f5=_0x224a85;return this['pipelineStats'][_0x44a3f5(0x139)]??this[_0x44a3f5(0x18b)][_0x44a3f5(0x11b)]?.['cursorKey']??this[_0x44a3f5(0x18b)][_0x44a3f5(0x143)]??'—';},get 'materializerClearTargetOnRebuild'(){const _0x447b83=_0x224a85;return o(this[_0x447b83(0x13f)]['clearTargetOnRebuild']??this[_0x447b83(0x18b)]['config']?.[_0x447b83(0x18c)]??!0x0);},get 'materializerProcessedChanges'(){const _0x376d0d=_0x224a85;return this[_0x376d0d(0x13f)][_0x376d0d(0x184)]??0x0;},get 'materializerAppliedOps'(){const _0x525120=_0x224a85;return this[_0x525120(0x13f)][_0x525120(0x167)]??0x0;},get 'materializerFailedBatches'(){const _0x8eefb6=_0x224a85;return this[_0x8eefb6(0x13f)][_0x8eefb6(0x157)]??0x0;},get 'materializerRunningBatches'(){const _0x1ee538=_0x224a85;return this[_0x1ee538(0x13f)]['runningBatches']??0x0;},get 'materializerTargetCount'(){const _0x31b8a9=_0x224a85;return this[_0x31b8a9(0x13f)][_0x31b8a9(0x193)]??'—';},get 'materializerLag'(){const _0x2dc869=_0x224a85;return this[_0x2dc869(0x13f)][_0x2dc869(0x18a)]??'—';},get 'materializerProgress'(){const _0x4121e2=_0x224a85;return p(this[_0x4121e2(0x13f)]['progress']);},get 'materializerPaused'(){const _0x2fff1b=_0x224a85;return!0x0===this[_0x2fff1b(0x13f)][_0x2fff1b(0x19b)];},get 'materializerErrorText'(){const _0x42de06=_0x224a85;return this['pipelineStats'][_0x42de06(0x17f)]??this[_0x42de06(0x18b)]['error']??null;},get 'materializerPreviewPayload'(){const _0x2089bf=_0x224a85;return[{'action':_0x2089bf(0x19a),'key':_0x2089bf(0x149),'value':{'sample':!0x0,'title':_0x2089bf(0x12a),'sourceType':this[_0x2089bf(0x132)]},'clock':null},{'action':_0x2089bf(0x12c),'key':_0x2089bf(0x1b1),'clock':0x7b}];},get 'materializerPreviewContext'(){const _0x5b3361=_0x224a85;return{'mode':_0x5b3361(0x12e)===this[_0x5b3361(0x13f)][_0x5b3361(0x16d)]?_0x5b3361(0x129):_0x5b3361(0x135),'sourceType':this[_0x5b3361(0x132)],'targetType':this[_0x5b3361(0x1a2)],'sourceEnv':this['materializerSourceEnv'],'targetEnv':this[_0x5b3361(0x19c)],'engineKey':this['eng'][_0x5b3361(0x143)]??null,'cursorKey':this[_0x5b3361(0x13e)]};},'formatJson':_0x3d4a0d,'labelize':_0x135131=>String(_0x135131||'')[_0x224a85(0x1a4)](/_/g,'\x20'),'humanValue':o,'rawToggleStyle':_0x5a6085=>_0x5a6085?_0x224a85(0x13d):'','syncWorkerConfig'(_0x54393e=null){const _0x477285=_0x224a85,_0x3bb9b3=_0x54393e?.[_0x477285(0x11b)]??{};this[_0x477285(0x18d)]={'concurrency':null==_0x3bb9b3[_0x477285(0x137)]?'':String(_0x3bb9b3[_0x477285(0x137)]),'pollInterval':null==_0x3bb9b3['pollInterval']?'':String(_0x3bb9b3[_0x477285(0x160)]),'ttl':null==_0x3bb9b3[_0x477285(0x172)]?'':String(_0x3bb9b3[_0x477285(0x172)])},this[_0x477285(0x1ad)]=null;},'buildWorkerConfigPatch'(){const _0x230b21=_0x224a85,_0x21691c=this[_0x230b21(0x18b)][_0x230b21(0x11b)]??{},_0x216f11={'concurrency':d(this[_0x230b21(0x18d)][_0x230b21(0x137)],_0x230b21(0x15e)),'pollInterval':d(this['workerConfigDraft']['pollInterval'],'Poll\x20interval'),'ttl':d(this[_0x230b21(0x18d)][_0x230b21(0x172)],_0x230b21(0x16e))},_0x313d07={};for(const [_0x5cc19a,_0x13df10]of Object[_0x230b21(0x11a)](_0x216f11))null==_0x13df10?void 0x0!==_0x21691c[_0x5cc19a]&&(_0x313d07[_0x5cc19a]=null):_0x21691c[_0x5cc19a]!==_0x13df10&&(_0x313d07[_0x5cc19a]=_0x13df10);return _0x313d07;},'resetWorkerConfig'(){const _0x14df4c=_0x224a85;this[_0x14df4c(0x180)](this[_0x14df4c(0x18b)]);},'inspectWorkerFunction'(){const _0x1e7fd5=_0x224a85;this[_0x1e7fd5(0x17c)](this[_0x1e7fd5(0x1a1)]?.[_0x1e7fd5(0x159)]??null);},'openHandlerFunction'(_0x3fb407=null){const _0xe336a5=_0x224a85,_0x650638=_0x3fb407??this[_0xe336a5(0x1a9)];_0x650638&&_0x3096d(_0xe5eb0c,_0x650638,{'beforeNavigate':()=>_0xe5eb0c['$attr'][_0xe336a5(0x1a5)]?.[_0xe336a5(0x155)]?.()});},async 'openHandlerEditor'(){const _0x530ff2=_0x224a85;if(!this[_0x530ff2(0x1a9)])return;const _0x503270=_0xe5eb0c[_0x530ff2(0x127)][_0x530ff2(0x169)]['okdb'],_0x2ed3b9=_0xe5eb0c[_0x530ff2(0x127)]['stores']['functions'],_0x18f8f1=this['handlerEnv']&&'—'!==this[_0x530ff2(0x138)]?this[_0x530ff2(0x138)]:this[_0x530ff2(0x13b)];_0x18f8f1?(_0x503270[_0x530ff2(0x164)]!==_0x18f8f1&&_0x503270[_0x530ff2(0x14a)](_0x18f8f1),await _0x2ed3b9[_0x530ff2(0x176)](),await _0x2ed3b9[_0x530ff2(0x15b)](this[_0x530ff2(0x1a9)]),_0x2ed3b9[_0x530ff2(0x122)](),_0x2ed3b9[_0x530ff2(0x198)](this[_0x530ff2(0x12b)](this[_0x530ff2(0x17b)])),_0x2ed3b9[_0x530ff2(0x145)]({'materializerContext':this[_0x530ff2(0x123)]}),await _0xe5eb0c['$ok'][_0x530ff2(0x187)][_0x530ff2(0x1a5)]['open']({'owner':_0xe5eb0c,'title':'Edit\x20Function\x20·\x20'+this['handlerName'],'canDrag':!0x0,'content':_0x530ff2(0x1ae),'context':_0x4b6f2c=>({'modal':_0x4b6f2c,'onDone':async()=>{const _0x252d56=_0x530ff2;await _0x2ed3b9[_0x252d56(0x15b)](this[_0x252d56(0x1a9)]),await _0x2ed3b9[_0x252d56(0x163)](),_0xe5eb0c[_0x252d56(0x11f)]('refresh');}})})):this[_0x530ff2(0x17c)]();},async 'runMaterializerRepairAction'(_0xd81afc,_0x4ab212,_0x2e5fae=null){const _0x11e96a=_0x224a85;if(this['isMaterializer']&&this[_0x11e96a(0x19d)]&&!this[_0x11e96a(0x181)]){if(_0x2e5fae&&!await _0xe5eb0c[_0x11e96a(0x127)][_0x11e96a(0x187)][_0x11e96a(0x1a5)][_0x11e96a(0x119)](_0x2e5fae))return;this[_0x11e96a(0x181)]=!0x0,this['materializerRepairError']=null;try{const _0x209917=await fetch(''+this[_0x11e96a(0x19d)]+_0xd81afc,{'method':_0x11e96a(0x11c)}),_0xa66b58=await _0x209917['json']()[_0x11e96a(0x125)](()=>({}));if(!_0x209917['ok'])throw new Error(_0x2a7ee6(_0xa66b58,'Failed\x20('+_0x209917[_0x11e96a(0x1a7)]+')'));const _0x68243e=_0xa66b58?.[_0x11e96a(0x152)]??_0xa66b58?.[_0x11e96a(0x124)]??null;_0x68243e&&_0xe5eb0c[_0x11e96a(0x11f)]('engine-updated',_0x68243e),_0xe5eb0c[_0x11e96a(0x11f)]('refresh'),_0xe5eb0c['$ok'][_0x11e96a(0x187)]?.[_0x11e96a(0x15c)]?.[_0x11e96a(0x182)]?.(_0x4ab212);}catch(_0x2e65da){this[_0x11e96a(0x15f)]=_0x2e65da?.[_0x11e96a(0x130)]||String(_0x2e65da),_0xe5eb0c[_0x11e96a(0x127)][_0x11e96a(0x187)]?.[_0x11e96a(0x15c)]?.['error']?.(this['materializerRepairError']);}finally{this[_0x11e96a(0x181)]=!0x1;}}},'retryMaterializer'(){const _0x2d0059=_0x224a85;return this['runMaterializerRepairAction'](_0x2d0059(0x14c),_0x2d0059(0x175));},'resetMaterializerCursor'(){const _0x1bf67b=_0x224a85;return this[_0x1bf67b(0x161)](_0x1bf67b(0x178),_0x1bf67b(0x148),_0x1bf67b(0x11d)+this[_0x1bf67b(0x18b)][_0x1bf67b(0x159)]+'\x22?');},'rebuildMaterializer'(){const _0x210107=_0x224a85;return this[_0x210107(0x161)](_0x210107(0x12d),_0x210107(0x133),_0x210107(0x168)+this[_0x210107(0x18b)]['name']+'\x22?');},async 'saveWorkerConfig'(){const _0x4bf0fe=_0x224a85;if(this['isQueueWorker']&&this[_0x4bf0fe(0x19d)]&&!this[_0x4bf0fe(0x190)]){this['saveConfigBusy']=!0x0,this['saveConfigError']=null;try{const _0x5dc707=this[_0x4bf0fe(0x15d)]();if(!Object[_0x4bf0fe(0x1b0)](_0x5dc707)[_0x4bf0fe(0x118)])return void _0xe5eb0c[_0x4bf0fe(0x127)][_0x4bf0fe(0x187)]?.['toast']?.['info']?.(_0x4bf0fe(0x1a8));const _0x35c668=await fetch(this['basePath'],{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'config':_0x5dc707})}),_0x3e9e64=await _0x35c668['json']()[_0x4bf0fe(0x125)](()=>({}));if(!_0x35c668['ok'])throw new Error(_0x2a7ee6(_0x3e9e64,_0x4bf0fe(0x171)+_0x35c668[_0x4bf0fe(0x1a7)]+')'));const _0x5d8958=_0x3e9e64?.[_0x4bf0fe(0x152)]??_0x3e9e64?.[_0x4bf0fe(0x124)]??null;_0x5d8958&&(this[_0x4bf0fe(0x180)](_0x5d8958),_0xe5eb0c['$dispatch'](_0x4bf0fe(0x142),_0x5d8958)),_0xe5eb0c[_0x4bf0fe(0x11f)](_0x4bf0fe(0x158)),_0xe5eb0c[_0x4bf0fe(0x127)][_0x4bf0fe(0x187)]?.[_0x4bf0fe(0x15c)]?.[_0x4bf0fe(0x182)]?.('Worker\x20settings\x20saved');}catch(_0x1c564a){this[_0x4bf0fe(0x1ad)]=_0x1c564a?.['message']||String(_0x1c564a),_0xe5eb0c[_0x4bf0fe(0x127)][_0x4bf0fe(0x187)]?.[_0x4bf0fe(0x15c)]?.['error']?.(this[_0x4bf0fe(0x1ad)]);}finally{this[_0x4bf0fe(0x190)]=!0x1;}}}}),'init'(_0x5d1a4d){const _0x2cf66a=_0x224a85;this['syncWorkerConfig'](_0x5d1a4d[_0x2cf66a(0x1aa)]['engine']),_0x5d1a4d[_0x2cf66a(0x185)](()=>_0x5d1a4d[_0x2cf66a(0x1aa)][_0x2cf66a(0x186)],()=>this[_0x2cf66a(0x180)](_0x5d1a4d[_0x2cf66a(0x1aa)][_0x2cf66a(0x186)]));},'template':_0x224a85(0x121),'style':_0x2b5256};function _0x33bb(){const _0xad5fa1=['lockMode','build','batchSize','concurrency','handlerEnv','cursorKey','7119430Wlriws','envName','failed','border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2040%,\x20transparent);color:var(--okdb-accent);background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);','materializerCursorKey','pipelineStats','1136384Lnjkee','reasonText','engine-updated','key','trunc','setModalPreviewContext','snapshot','progress','Materializer\x20cursor\x20reset','example-1','selectEnv','job_type','/retry','stats','pipelineHandler','stopped','updated','all','data','isArray','105658sVvPpQ','close','generic-engine-panel','failedBatches','refresh','name','bootstrap','select','toast','buildWorkerConfigPatch','Concurrency','materializerRepairError','pollInterval','runMaterializerRepairAction','includes','loadOverviewRuns','selectedEnv','target_env','4lrIqQX','appliedOps','Rebuild\x20materializer\x20\x22','stores','materializer','env','recordRuns','state','Job\x20TTL','268432rhFtAq','89274dXmnhY','Failed\x20(','ttl','join','running','Materializer\x20retry\x20started','onEnvChanged','type','/reset-cursor','queue-worker','runningBatches','materializerPreviewPayload','openHandlerFunction','stateText','failOnHandlerError','error','syncWorkerConfig','materializerRepairBusy','success','handler','processedChanges','$watch','engine','shared','boolean','source_env','lag','eng','clearTargetOnRebuild','workerConfigDraft','affinity','workerStats','saveConfigBusy','source_type','\x20must\x20be\x20a\x20positive\x20integer','targetCount','filter','248ByfPVD','909072ExrZFe','hydrateValues','setModalPayloadDraft','object','put','paused','materializerTargetEnv','basePath','queue_env','processed','originMode','workerHandler','materializerTargetType','engine_key','replace','modal','toLocaleString','status','No\x20worker\x20setting\x20changes\x20to\x20save','handlerName','$attr','mode','all\x20nodes','saveConfigError','<function-modal\x20:modal=\x22modal\x22\x20mode=\x22edit\x22\x20:on-done=\x22onDone\x22\x20/>','exclusive','keys','example-2','4991247hmwpcU','length','confirm','entries','config','POST','Reset\x20cursor\x20for\x20materializer\x20\x22','isFinite','$dispatch','inactive','\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:env=\x22envName\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:=\x22isQueueWorker\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=\x22Queue\x20job\x20type\x20this\x20worker\x20consumes.\x22>{{\x20workerJobType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Environment\x20whose\x20queue\x20is\x20consumed.\x22>queue:\x20{{\x20workerQueueEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Function\x20environment.\x22>fn\x20env:\x20{{\x20workerFunctionEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22showWorkerReason\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Why\x20the\x20worker\x20is\x20in\x20its\x20current\x20state.\x22>{{\x20reasonText\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\x20\x20<if\x20:=\x22showWorkerAffinity\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Node\x20tags\x20required\x20for\x20this\x20worker\x20to\x20run.\x22>affinity:\x20{{\x20affinityText\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<div\x20style=\x22display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20style=\x22margin:0;\x22>Function</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22canOpenWorkerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22inspectWorkerFunction()\x22\x20class=\x22inline-link\x22\x20title=\x22View\x20or\x20edit\x20this\x20function\x20in\x20the\x20Functions\x20section.\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ƒ\x20{{\x20workerHandler?.name\x20||\x20\x27—\x27\x20}}\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</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!canOpenWorkerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22muted-code\x22\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20workerHandler?.name\x20||\x20\x27—\x27\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</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%,\x20360px);\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>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>{{\x20workerProcessed\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>Error</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(workerFailed\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-strong)\x27)\x22>{{\x20workerFailed\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>Active</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(workerRunning\x20>\x200\x20?\x20\x27var(--okdb-warning)\x27\x20:\x20\x27var(--okdb-app-fg-strong)\x27)\x22>{{\x20workerRunning\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>Concurrency</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-accent);\x22>{{\x20workerConcurrency\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\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\x20style=\x22display:flex;align-items:center;gap:8px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22\x20style=\x22margin:0;\x22>Settings</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:1;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22\x20style=\x22margin-right:4px;\x22>updated\x20{{\x20updatedText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22resetWorkerConfig()\x22\x20:disabled=\x22saveConfigBusy\x20||\x20!basePath\x22\x20title=\x22Discard\x20unsaved\x20changes.\x22\x20style=\x22font-size:11px;padding:4px\x2010px;opacity:.75;\x22>Reset</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22saveWorkerConfig()\x22\x20:disabled=\x22saveConfigBusy\x20||\x20!basePath\x22\x20title=\x22Save\x20and\x20restart\x20the\x20worker\x20with\x20these\x20values.\x22\x20style=\x22font-size:11px;padding:4px\x2010px;color:var(--okdb-accent);border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20saveConfigBusy\x20?\x20\x27Saving…\x27\x20:\x20\x27Save\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22field-stack\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20title=\x22Parallel\x20worker\x20lanes.\x22>Concurrency</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20class=\x22field-input\x22\x20type=\x22number\x22\x20min=\x221\x22\x20:value=\x22workerConfigDraft.concurrency\x22\x20@input=\x22workerConfigDraft.concurrency\x20=\x20$event.target.value\x22\x20placeholder=\x221\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22field-stack\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20title=\x22Milliseconds\x20to\x20wait\x20before\x20polling\x20again\x20when\x20the\x20queue\x20is\x20empty.\x22>Poll</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20class=\x22field-input\x22\x20type=\x22number\x22\x20min=\x221\x22\x20:value=\x22workerConfigDraft.pollInterval\x22\x20@input=\x22workerConfigDraft.pollInterval\x20=\x20$event.target.value\x22\x20placeholder=\x221000\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22field-stack\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20title=\x22Milliseconds\x20an\x20in-flight\x20claim\x20stays\x20reserved\x20before\x20it\x20can\x20be\x20reclaimed.\x22>TTL</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20class=\x22field-input\x22\x20type=\x22number\x22\x20min=\x221\x22\x20:value=\x22workerConfigDraft.ttl\x22\x20@input=\x22workerConfigDraft.ttl\x20=\x20$event.target.value\x22\x20placeholder=\x2230000\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22field-stack\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22field-label\x22\x20title=\x22Whether\x20function\x20runs\x20are\x20persisted.\x22>Runs</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-input\x22\x20style=\x22display:flex;align-items:center;min-height:36px;background:var(--okdb-app-bg);\x22>{{\x20workerRecordRuns\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22saveConfigError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22alert\x20alert--error\x22>{{\x20saveConfigError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22isProcessor\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\x20this\x20processor\x20watches.\x22>{{\x20processorSourceType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Environment\x20whose\x20changelog\x20is\x20consumed.\x22>source:\x20{{\x20processorSourceEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Function\x20environment.\x22>fn\x20env:\x20{{\x20handlerEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22How\x20source\x20changes\x20are\x20consumed.\x22>mode:\x20{{\x20processorMode\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22processorPaused\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Processor\x20registration\x20is\x20currently\x20paused.\x22>paused</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\x20\x20<if\x20:=\x22showWorkerReason\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Why\x20the\x20processor\x20is\x20in\x20its\x20current\x20state.\x22>{{\x20reasonText\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<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Watches\x20<strong>{{\x20processorSourceType\x20}}</strong>\x20in\x20<strong>{{\x20processorSourceEnv\x20}}</strong>\x20and\x20runs\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22canOpenHandlerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openHandlerFunction()\x22\x20class=\x22inline-link\x22\x20title=\x22View\x20or\x20edit\x20this\x20function\x20in\x20the\x20Functions\x20section.\x22>ƒ\x20{{\x20handlerName\x20}}\x20↗</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:=\x22!canOpenHandlerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22muted-code\x22\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20handlerName\x20||\x20\x27—\x27\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\x20\x20for\x20each\x20change\x20batch.\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>Use\x20this\x20engine\x20for\x20side\x20effects\x20and\x20projections\x20driven\x20by\x20change\x20batches\x20without\x20owning\x20a\x20dedicated\x20target\x20type.</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>Invocations</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-accent);\x22>{{\x20processorInvocations\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>Changes</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>{{\x20processorProcessedChanges\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>Failures</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(processorFailedBatches\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-strong)\x27)\x22>{{\x20processorFailedBatches\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>Lag</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(processorLag\x20===\x200\x20?\x20\x27var(--okdb-success)\x27\x20:\x20\x27var(--okdb-warning)\x27)\x22>{{\x20processorLag\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\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>Processing\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>bootstrap</span><span\x20class=\x22kv-val\x22>{{\x20processorBootstrap\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>origin\x20mode</span><span\x20class=\x22kv-val\x22>{{\x20processorOriginMode\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>batch\x20size</span><span\x20class=\x22kv-val\x22>{{\x20processorBatchSize\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>running\x20batches</span><span\x20class=\x22kv-val\x22>{{\x20processorRunningBatches\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>progress</span><span\x20class=\x22kv-val\x22>{{\x20processorProgress\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>cursor\x20key</span><span\x20class=\x22kv-val\x22>{{\x20processorCursorKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>lock\x20mode</span><span\x20class=\x22kv-val\x22>{{\x20processorLockMode\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>hydrate\x20values</span><span\x20class=\x22kv-val\x22>{{\x20processorHydrateValues\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>fail\x20on\x20fn\x20error</span><span\x20class=\x22kv-val\x22>{{\x20processorFailOnHandlerError\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22isMaterializer\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\x20this\x20materializer\x20watches.\x22>{{\x20materializerSourceType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Target\x20type\x20updated\x20by\x20returned\x20ops.\x22>target:\x20{{\x20materializerTargetType\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{{\x20materializerSourceEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Target\x20environment.\x22>target\x20env:\x20{{\x20materializerTargetEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Function\x20environment.\x22>fn\x20env:\x20{{\x20handlerEnv\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22materializerPaused\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Materializer\x20registration\x20is\x20currently\x20paused.\x22>paused</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<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Projects\x20<strong>{{\x20materializerSourceType\x20}}</strong>\x20into\x20<strong>{{\x20materializerTargetType\x20}}</strong>\x20using\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22canOpenHandlerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openHandlerFunction()\x22\x20class=\x22inline-link\x22\x20title=\x22View\x20or\x20edit\x20this\x20function\x20in\x20the\x20Functions\x20section.\x22>ƒ\x20{{\x20handlerName\x20}}\x20↗</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:=\x22!canOpenHandlerFunction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22muted-code\x22\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20handlerName\x20||\x20\x27—\x27\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\x20\x20and\x20applies\x20the\x20returned\x20ops\x20to\x20the\x20target\x20collection.\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>Use\x20this\x20engine\x20when\x20you\x20want\x20deterministic,\x20rebuildable\x20derived\x20records\x20instead\x20of\x20free-form\x20side\x20effects.</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>Applied\x20ops</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>{{\x20materializerAppliedOps\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>Target\x20rows</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-accent);\x22>{{\x20materializerTargetCount\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>Changes</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>{{\x20materializerProcessedChanges\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>Failures</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(materializerFailedBatches\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-strong)\x27)\x22>{{\x20materializerFailedBatches\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\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>Materialization\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>bootstrap</span><span\x20class=\x22kv-val\x22>{{\x20materializerBootstrap\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>origin\x20mode</span><span\x20class=\x22kv-val\x22>{{\x20materializerOriginMode\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>batch\x20size</span><span\x20class=\x22kv-val\x22>{{\x20materializerBatchSize\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>running\x20batches</span><span\x20class=\x22kv-val\x22>{{\x20materializerRunningBatches\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>progress</span><span\x20class=\x22kv-val\x22>{{\x20materializerProgress\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>lag</span><span\x20class=\x22kv-val\x22>{{\x20materializerLag\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>cursor\x20key</span><span\x20class=\x22kv-val\x22>{{\x20materializerCursorKey\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>clear\x20on\x20rebuild</span><span\x20class=\x22kv-val\x22>{{\x20materializerClearTargetOnRebuild\x20}}</span>\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;border-color:#244057;\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:6px;min-width:0;flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Repair\x20workflow</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-note\x22\x20style=\x22margin:0;\x22>Edit\x20the\x20handler\x20with\x20seeded\x20sample\x20input,\x20verify\x20the\x20draft\x20run,\x20then\x20retry,\x20rewind,\x20or\x20rebuild\x20from\x20here.</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=\x22display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openHandlerEditor()\x22\x20:disabled=\x22!canOpenHandlerFunction\x20||\x20materializerRepairBusy\x22\x20style=\x22font-size:12px;padding:4px\x2010px;color:var(--okdb-accent);border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x22>ƒ\x20Edit\x20handler</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22retryMaterializer()\x22\x20:disabled=\x22materializerRepairBusy\x20||\x20!basePath\x22\x20style=\x22font-size:12px;padding:4px\x2010px;color:var(--okdb-orange);border-color:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2033%,\x20transparent);\x22>↻\x20Retry</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22resetMaterializerCursor()\x22\x20:disabled=\x22materializerRepairBusy\x20||\x20!basePath\x22\x20style=\x22font-size:12px;padding:4px\x2010px;color:var(--okdb-info);border-color:color-mix(in\x20srgb,\x20var(--okdb-info)\x2033%,\x20transparent);\x22>⇤\x20Reset\x20cursor</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildMaterializer()\x22\x20:disabled=\x22materializerRepairBusy\x20||\x20!basePath\x22\x20style=\x22font-size:12px;padding:4px\x2010px;color:var(--okdb-success);border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>⟳\x20Rebuild</button>\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<if\x20:=\x22materializerErrorText\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22alert\x20alert--error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;margin-bottom:4px;\x22>Last\x20materializer\x20error</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>{{\x20materializerErrorText\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22materializerRepairError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22alert\x20alert--error\x22>{{\x20materializerRepairError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:grid;grid-template-columns:minmax(0,1fr)\x20minmax(280px,.9fr);gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Suggested\x20<code>ctx.payload</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22\x20style=\x22margin:0;max-height:220px;overflow:auto;\x22>{{\x20formatJson(materializerPreviewPayload)\x20}}</pre>\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;flex-direction:column;gap:8px;min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Suggested\x20<code>ctx.materializer</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22\x20style=\x22margin:0;max-height:220px;overflow:auto;\x22>{{\x20formatJson(materializerPreviewContext)\x20}}</pre>\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\x20class=\x22story-note\x22\x20style=\x22margin:0;\x22>Recommended\x20order:\x20<strong>Edit\x20handler</strong>\x20→\x20run\x20the\x20seeded\x20draft\x20preview\x20→\x20<strong>Retry</strong>.\x20Use\x20<strong>Reset\x20cursor</strong>\x20to\x20replay\x20without\x20clearing\x20the\x20target,\x20or\x20<strong>Rebuild</strong>\x20to\x20clear\x20and\x20rematerialize\x20from\x20scratch.</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!hasSpecializedPipelineView\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22panel-grid\x20panel-grid--two\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;flex-direction:column;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Overview</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>state</span><span\x20class=\x22kv-val\x22>{{\x20stateText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>reason</span><span\x20class=\x22kv-val\x22>{{\x20reasonText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>enabled</span><span\x20class=\x22kv-val\x22>{{\x20eng.enabled\x20===\x20false\x20?\x20\x27no\x27\x20:\x20\x27yes\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>affinity</span><span\x20class=\x22kv-val\x22>{{\x20affinityText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>updated</span><span\x20class=\x22kv-val\x22>{{\x20updatedText\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22runtimePreviewEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Runtime\x20details</div>\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20<each\x20:of=\x22runtimePreviewEntries\x22\x20let:item=\x22entry\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>{{\x20labelize(entry[0])\x20}}</span><span\x20class=\x22kv-val\x22>{{\x20humanValue(entry[1])\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;flex-direction:column;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Configuration</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22configPreviewEntries.length\x20>\x200\x22>\x0a\x20\x20\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\x20\x20<each\x20:of=\x22configPreviewEntries\x22\x20let:item=\x22entry\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>{{\x20labelize(entry[0])\x20}}</span><span\x20class=\x22kv-val\x22>{{\x20humanValue(entry[1])\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22configPreviewEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22helper-text\x22>This\x20engine\x20mostly\x20uses\x20structured\x20config.\x20Open\x20the\x20raw\x20JSON\x20below\x20if\x20you\x20need\x20the\x20full\x20payload.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22statsPreviewEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Stats\x20snapshot</div>\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20<each\x20:of=\x22statsPreviewEntries\x22\x20let:item=\x22entry\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>{{\x20labelize(entry[0])\x20}}</span><span\x20class=\x22kv-val\x22>{{\x20humanValue(entry[1])\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;flex-direction:column;gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;gap:8px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Raw\x20data</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-subtitle\x22>Keep\x20the\x20default\x20view\x20visual\x20first.\x20Open\x20these\x20only\x20when\x20you\x20need\x20the\x20underlying\x20JSON.</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22raw-toggle-row\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.runtime\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22raw-toggle\x22\x20:style=\x22rawToggleStyle(showRawRuntime)\x22\x20@click=\x22showRawRuntime\x20=\x20!showRawRuntime\x22>Runtime\x20JSON</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22raw-toggle\x22\x20:style=\x22rawToggleStyle(showRawStats)\x22\x20@click=\x22showRawStats\x20=\x20!showRawStats\x22>Stats\x20JSON</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.config\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22raw-toggle\x22\x20:style=\x22rawToggleStyle(showRawConfig)\x22\x20@click=\x22showRawConfig\x20=\x20!showRawConfig\x22>Config\x20JSON</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22showRawRuntime\x20&&\x20eng.runtime\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Runtime\x20payload</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22>{{\x20formatJson(eng.runtime)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22showRawStats\x20&&\x20eng.stats\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Stats\x20payload</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22>{{\x20formatJson(eng.stats)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22showRawConfig\x20&&\x20eng.config\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22field-label\x22>Config\x20payload</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22json-block\x22>{{\x20formatJson(eng.config)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','beginEditDraft','materializerPreviewContext','result','catch','5iNTTJV','$ok','number','live','Example\x20source\x20row','formatJson','remove','/rebuild','online','invocations','message','reason','materializerSourceType','Materializer\x20rebuild\x20started'];_0x33bb=function(){return _0xad5fa1;};return _0x33bb();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const _0x30be55=_0xad98;(function(_0x3a514b,_0x22d9e6){const _0x21aeb6=_0xad98,_0x48241c=_0x3a514b();while(!![]){try{const _0x324f89=parseInt(_0x21aeb6(0x201))/0x1+-parseInt(_0x21aeb6(0x200))/0x2*(parseInt(_0x21aeb6(0x206))/0x3)+parseInt(_0x21aeb6(0x1f5))/0x4*(parseInt(_0x21aeb6(0x1f1))/0x5)+parseInt(_0x21aeb6(0x208))/0x6*(-parseInt(_0x21aeb6(0x1fd))/0x7)+parseInt(_0x21aeb6(0x1f0))/0x8+parseInt(_0x21aeb6(0x1e9))/0x9*(parseInt(_0x21aeb6(0x1ea))/0xa)+-parseInt(_0x21aeb6(0x204))/0xb;if(_0x324f89===_0x22d9e6)break;else _0x48241c['push'](_0x48241c['shift']());}catch(_0x240c72){_0x48241c['push'](_0x48241c['shift']());}}}(_0x2103,0x272c3));export default{'tag':_0x30be55(0x1f8),'context':_0xdb640=>({'busy':!0x1,'syncing':!0x1,'blobs':[],'error':null,'syncResult':null,async 'load'(){const _0x2d52e6=_0x30be55;this[_0x2d52e6(0x1f7)]=!0x0,this[_0x2d52e6(0x1eb)]=null;try{const _0x526c50=await fetch(__ENV__[_0x2d52e6(0x1f2)]+'/files/blobs/status'),_0x28d673=await _0x526c50[_0x2d52e6(0x1ee)]();if(!_0x526c50['ok'])throw new Error(_0x28d673?.[_0x2d52e6(0x1eb)]?.[_0x2d52e6(0x1f9)]||_0x2d52e6(0x1fa));this['blobs']=_0x28d673[_0x2d52e6(0x205)]??[];}catch(_0x3f726a){this['error']=_0x3f726a?.[_0x2d52e6(0x1f9)]||String(_0x3f726a);}finally{this[_0x2d52e6(0x1f7)]=!0x1;}},async 'triggerSync'(){const _0x558613=_0x30be55;this[_0x558613(0x1ff)]=!0x0,this['syncResult']=null;try{const _0x548f73=await fetch(__ENV__[_0x558613(0x1f2)]+_0x558613(0x1fb),{'method':_0x558613(0x203),'headers':{'Content-Type':_0x558613(0x1ef)},'body':'{}'}),_0x525513=await _0x548f73[_0x558613(0x1ee)]();if(!_0x548f73['ok'])throw new Error(_0x525513?.[_0x558613(0x1eb)]?.[_0x558613(0x1f9)]||_0x558613(0x1fa));this[_0x558613(0x1fe)]=_0x525513['data'],await this[_0x558613(0x1ed)]();}catch(_0x12fae1){this[_0x558613(0x1eb)]=_0x12fae1?.[_0x558613(0x1f9)]||String(_0x12fae1);}finally{this[_0x558613(0x1ff)]=!0x1;}},'fmtSize':_0x2a04f3=>null==_0x2a04f3?'—':_0x2a04f3<0x400?_0x2a04f3+'\x20B':_0x2a04f3<0x100000?(_0x2a04f3/0x400)['toFixed'](0x1)+_0x30be55(0x1f6):(_0x2a04f3/0x100000)[_0x30be55(0x1f3)](0x1)+_0x30be55(0x202),'nodeCount':_0x25aa03=>_0x25aa03&&'object'==typeof _0x25aa03?Object[_0x30be55(0x1f4)](_0x25aa03)[_0x30be55(0x1ec)](Boolean)[_0x30be55(0x207)]:0x0}),async 'mount'(){await this['load']();},'template':_0x30be55(0x1fc)};function _0xad98(_0x3c7008,_0x4b71a6){_0x3c7008=_0x3c7008-0x1e9;const _0x21033f=_0x2103();let _0xad98e8=_0x21033f[_0x3c7008];return _0xad98e8;}function _0x2103(){const _0x445c6f=['message','failed','/files/blobs/sync','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\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;\x20font-size:15px;\x22>Blob\x20Mesh\x20Sync</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22\x20style=\x22font-size:12px;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22triggerSync()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22syncing\x20||\x20busy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:12px;\x20background:var(--okdb-sky-soft-bg);\x20border-color:var(--okdb-sky-soft-border);\x20color:var(--okdb-sky);\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20syncing\x20?\x20\x27Syncing…\x27\x20:\x20\x27⇄\x20Sync\x20Blobs\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22syncResult\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20padding:8px\x2012px;\x0a\x20\x20\x20\x20\x20\x20border-radius:8px;\x0a\x20\x20\x20\x20\x20\x20background:#1a2f1a;\x0a\x20\x20\x20\x20\x20\x20border:1px\x20solid\x20#2a4a2a;\x0a\x20\x20\x20\x20\x20\x20font-size:12px;\x0a\x20\x20\x20\x20\x20\x20color:#86efac;\x0a\x20\x20\x20\x20\x22>\x0a\x20\x20\x20\x20\x20\x20Sync\x20complete\x20—\x20pulled\x20<strong>{{\x20syncResult.synced\x20}}</strong>\x20blob(s).\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22syncResult.errors?.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-danger);\x20margin-left:8px;\x22>{{\x20syncResult.errors.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\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Loading…</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20blobs.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20opacity:.4;\x20padding:24px\x200;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20blobs\x20tracked\x20yet.\x20Upload\x20files\x20to\x20see\x20them\x20here.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22blobs.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20overflow:auto;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:100%;\x20border-collapse:collapse;\x20font-size:12px;\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);\x20opacity:.6;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:left;\x20padding:6px\x208px;\x20font-weight:500;\x22>Hash</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x20padding:6px\x208px;\x20font-weight:500;\x22>Refs</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:center;\x20padding:6px\x208px;\x20font-weight:500;\x22>On\x20Disk</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x20padding:6px\x208px;\x20font-weight:500;\x22>Size</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x20padding:6px\x208px;\x20font-weight:500;\x22>Nodes</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=\x22blobs\x22\x20let:item=\x22b\x22\x20style=\x22border-bottom:1px\x20solid\x20var(--okdb-app-surface-2);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:5px\x208px;\x20font-family:monospace;\x20font-size:11px;\x20opacity:.7;\x22\x20:title=\x22b.hash\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20b.hash\x20?\x20b.hash.slice(0,\x2012)\x20:\x20\x27\x27\x20}}…\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\x20style=\x22padding:5px\x208px;\x20text-align:right;\x20font-family:monospace;\x22>{{\x20b.refs\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:5px\x208px;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22b.onDisk\x20?\x20\x27color:var(--okdb-success);\x27\x20:\x20\x27color:var(--okdb-danger);\x27\x22>{{\x20b.onDisk\x20?\x20\x27✓\x27\x20:\x20\x27✗\x27\x20}}</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\x20style=\x22padding:5px\x208px;\x20text-align:right;\x20font-family:monospace;\x20opacity:.7;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fmtSize(b.sizeBytes)\x20}}\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\x20style=\x22padding:5px\x208px;\x20text-align:right;\x20opacity:.6;\x22>{{\x20nodeCount(b.nodes)\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\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.4;\x20text-align:right;\x22>{{\x20blobs.length\x20}}\x20blob(s)\x20tracked</div>\x0a\x20\x20</if>\x0a\x0a</div>','7fLBEJs','syncResult','syncing','46IoCMOb','55898AoRcaa','\x20MB','POST','1050896FAXVjS','data','10281bkUAJN','length','1784166YbzYvT','9zahxVK','2243550uKczsR','error','filter','load','json','application/json','2280728gHKqbq','675SkdhIj','API','toFixed','values','1980dPLHkC','\x20KB','busy','files-blob-status'];_0x2103=function(){return _0x445c6f;};return _0x2103();}
|