@kedem/okdb 1.0.0 → 1.0.3

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.
Files changed (188) hide show
  1. package/README.md +1 -1
  2. package/bin/okdb.js +1 -1
  3. package/keys/public.pem +3 -0
  4. package/okdb.js +1 -1
  5. package/package.json +2 -2
  6. package/public/admin-app.js +1 -1
  7. package/public/components/admin-route-host.ok.js +1 -1
  8. package/public/components/env-picker.ok.js +1 -1
  9. package/public/components/field-path-input.ok.js +1 -1
  10. package/public/components/geo-map.ok.js +1 -1
  11. package/public/components/ok-cron-input.ok.js +1 -1
  12. package/public/components/ok-dropzone.ok.js +1 -1
  13. package/public/components/ok-js-input.ok.js +1 -1
  14. package/public/components/ok-json-input.ok.js +1 -1
  15. package/public/components/ok-text-monaco-input.ok.js +1 -1
  16. package/public/components/theme-toggle.ok.js +1 -1
  17. package/public/login-app.js +1 -1
  18. package/public/modules/ok.js +1 -1
  19. package/public/sections/api/parts/api-endpoint.ok.js +1 -1
  20. package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
  21. package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
  22. package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
  23. package/public/sections/auth/parts/token-detail.ok.js +1 -1
  24. package/public/sections/auth/parts/token-list.ok.js +1 -1
  25. package/public/sections/db/modals/add-item-modal.ok.js +1 -1
  26. package/public/sections/db/modals/create-env-modal.ok.js +1 -1
  27. package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
  28. package/public/sections/db/modals/create-index-modal.ok.js +1 -1
  29. package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
  30. package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
  31. package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
  32. package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
  33. package/public/sections/db/parts/db-overview.ok.js +1 -1
  34. package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
  35. package/public/sections/db/parts/edit-row.ok.js +1 -1
  36. package/public/sections/db/parts/tm-timeline.ok.js +1 -1
  37. package/public/sections/db/parts/type-changelog.ok.js +1 -1
  38. package/public/sections/db/parts/type-list.ok.js +1 -1
  39. package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
  40. package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
  41. package/public/sections/db/parts/type-viewer.ok.js +1 -1
  42. package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
  43. package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
  44. package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
  45. package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
  46. package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
  47. package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
  48. package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
  49. package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
  50. package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
  51. package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
  52. package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
  53. package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
  54. package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
  55. package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
  56. package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
  57. package/public/sections/engines/engine-panel-shared-style.js +1 -1
  58. package/public/sections/engines/engine-ui-utils.js +1 -1
  59. package/public/sections/engines/modals/engine-modal.ok.js +1 -1
  60. package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
  61. package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
  62. package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
  63. package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
  64. package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
  65. package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
  66. package/public/sections/files/parts/files-blob-status.ok.js +1 -1
  67. package/public/sections/files/parts/files-collection-list.ok.js +1 -1
  68. package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
  69. package/public/sections/files/parts/files-file-list.ok.js +1 -1
  70. package/public/sections/files/parts/files-overview.ok.js +1 -1
  71. package/public/sections/files/parts/files-path-browser.ok.js +1 -1
  72. package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
  73. package/public/sections/functions/modals/function-modal.ok.js +1 -1
  74. package/public/sections/functions/parts/function-detail.ok.js +1 -1
  75. package/public/sections/functions/parts/function-logs.ok.js +1 -1
  76. package/public/sections/functions/parts/function-runner.ok.js +1 -1
  77. package/public/sections/functions/parts/functions-list.ok.js +1 -1
  78. package/public/sections/license/parts/license-panel.ok.js +1 -1
  79. package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
  80. package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
  81. package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
  82. package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
  83. package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
  84. package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
  85. package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
  86. package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
  87. package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
  88. package/public/sections/queue/parts/queue-types.ok.js +1 -1
  89. package/public/sections/queue/parts/queue-workers.ok.js +1 -1
  90. package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
  91. package/public/sections/sync/parts/sync-retention.ok.js +1 -1
  92. package/public/sections/sync/parts/sync-topology.ok.js +1 -1
  93. package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
  94. package/public/sections/system/parts/system-api-panel.ok.js +1 -1
  95. package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
  96. package/public/sections/system/parts/system-log-history.ok.js +1 -1
  97. package/public/sections/system/parts/system-log.ok.js +1 -1
  98. package/public/sections/system/parts/system-status.ok.js +1 -1
  99. package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
  100. package/public/sections/views/modals/create-view-modal.ok.js +1 -1
  101. package/public/sections/views/parts/view-detail.ok.js +1 -1
  102. package/public/sections/views/parts/views-list.ok.js +1 -1
  103. package/public/sections/views/parts/views-overview.ok.js +1 -1
  104. package/public/setup-app.js +1 -1
  105. package/public/stores/auth-store.js +1 -1
  106. package/public/stores/events-store.js +1 -1
  107. package/public/stores/functions-store.js +1 -1
  108. package/public/stores/okdb-store.js +1 -1
  109. package/public/stores/theme-store.js +1 -1
  110. package/public/util/permissions.js +1 -1
  111. package/public/util/sift-schema.js +1 -1
  112. package/public/vendor/okjs/ok.esm.min.js +1 -2
  113. package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -1
  114. package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -1
  115. package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -1
  116. package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -1
  117. package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -1
  118. package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -1
  119. package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -1
  120. package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -1
  121. package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -1
  122. package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -1
  123. package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -1
  124. package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -1
  125. package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -1
  126. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -1
  127. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -1
  128. package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -1
  129. package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -1
  130. package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -1
  131. package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -1
  132. package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -1
  133. package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -1
  134. package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -1
  135. package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -1
  136. package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -1
  137. package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -1
  138. package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -1
  139. package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -1
  140. package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -1
  141. package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -1
  142. package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -1
  143. package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -1
  144. package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -1
  145. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -1
  146. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -1
  147. package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -1
  148. package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -1
  149. package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -1
  150. package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -1
  151. package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -1
  152. package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -1
  153. package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -1
  154. package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -1
  155. package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -1
  156. package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -1
  157. package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -1
  158. package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -1
  159. package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -1
  160. package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -1
  161. package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -1
  162. package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -1
  163. package/public/vendor/okjs/toolkit/manifest.js +1 -1
  164. package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -1
  165. package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -1
  166. package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -1
  167. package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -1
  168. package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -1
  169. package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -1
  170. package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -1
  171. package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -1
  172. package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -1
  173. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -1
  174. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -1
  175. package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -1
  176. package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -1
  177. package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -1
  178. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -1
  179. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -1
  180. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -1
  181. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -1
  182. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -1
  183. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -1
  184. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -1
  185. package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -1
  186. package/public/view-models/type-query-vm.js +1 -1
  187. package/public/images/logo.png +0 -0
  188. package/public/images/logo.svg +0 -333
@@ -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
+ function _0x593b(_0x58b086,_0x5eb81d){_0x58b086=_0x58b086-0x182;const _0x5840d8=_0x5840();let _0x593b61=_0x5840d8[_0x58b086];return _0x593b61;}const _0x155102=_0x593b;(function(_0x3efb9f,_0x57106f){const _0x3559fa=_0x593b,_0x137735=_0x3efb9f();while(!![]){try{const _0x5b0266=parseInt(_0x3559fa(0x195))/0x1+-parseInt(_0x3559fa(0x229))/0x2*(parseInt(_0x3559fa(0x207))/0x3)+parseInt(_0x3559fa(0x1d0))/0x4*(-parseInt(_0x3559fa(0x19f))/0x5)+-parseInt(_0x3559fa(0x22d))/0x6+-parseInt(_0x3559fa(0x214))/0x7*(parseInt(_0x3559fa(0x1ab))/0x8)+-parseInt(_0x3559fa(0x222))/0x9*(-parseInt(_0x3559fa(0x1c6))/0xa)+parseInt(_0x3559fa(0x1fd))/0xb*(parseInt(_0x3559fa(0x1e9))/0xc);if(_0x5b0266===_0x57106f)break;else _0x137735['push'](_0x137735['shift']());}catch(_0x33604e){_0x137735['push'](_0x137735['shift']());}}}(_0x5840,0x7a419));function _0x5840(){const _0x515e42=['compact','var(--okdb-accent-2)','includes','rebuild','action','busy','Restart\x20engine\x20\x22','Engine\x20resumed','canRunLifecycle','danger','statusMeta','isFinite','running','/resume','sourceType','color','modal','json','showDelete','12EMbjuM','\x207%,\x20transparent)','var(--okdb-orange)','label','var(--okdb-danger)','config','/start','type','Engine\x20paused','var(--okdb-app-fg-muted)','min','shared','progressMetric','pipeline','paused','Retry','source_type','showdelete','Field','eng','12190706vXWlPi','DELETE','hideenv','pop','reset','Worker','Concurrency','card','var(--okdb-success)','TTL','1429842gGgsvR','warning','hidepipeline',';\x20color:','$ok','toast','basePath','Engine\x20deleted','Engine\x20stopped','startsWith','Start','storeEnv','isRunning','5278cDiyWn','local','var(--okdb-sky)','error','Embedder','hideEnv','typeLabel','status','catch','false','values','\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','Engine\x20rebuild\x20started','Restart','5102730shNJev','%;border-radius:999px;background:','Source\x20env','meta','border-color:color-mix(in\x20srgb,\x20var(--okdb-app-border)\x2040%,\x20transparent);\x20color:#7a93a8;\x20background:transparent;','value','$dispatch','2MXliDF','Resume','var(--okdb-accent)','Delete\x20engine\x20\x22','2353914HAQuBl','target_type','Engine\x20restarted','\x20complete','/reset-cursor','member','find','hidetype','push','Queue\x20Worker','Progress','tone','var(--okdb-warning)','key','$attr','typeColor','method','collectionEngine','Mode','Delete','314099tbhkTO','/retry','Engine','Prepare','Rebuild\x20engine\x20\x22','delete','\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','\x2033%,\x20transparent)','Engine\x20retry\x20started','Provider','1685gbTFkX','success','stats','confirm','pillStyle','\x20failed','envName','POST','/restart','Stop\x20engine\x20\x22','Indexer','replace','6256ujpwCw','#fb7185','slice','Processor','Type','name','type-context','Error','edit','var(--okdb-info)','Chunk','source_env','Extractor','Search','join','engine-resource-card','suffix','env','Algorithm','Storage','isMember','border-color:','split','var(--okdb-app-fg)','Reset\x20Cursor','hideType','embeddingsMode','10gKzyDE','color-mix(in\x20srgb,\x20','title','Poll','text','true','message','Source','filter',';\x20background:','356hsFixI','Dims','typeBadgeStyle','materializer','Pause','runtime'];_0x5840=function(){return _0x515e42;};return _0x5840();}import{buildEngineBasePath as _0xf72430,compactEngineConfigMetrics as _0x24dc89,compactEngineErrorText as _0x273523,compactEngineRowMetrics as _0x13090e,compactEngineRowStatusBadges as _0x354d4b,compactEngineRowSummary as _0x42b9a1,compactEngineStatusMeta as _0x40050d,isEmbeddingsEngine as _0x372c19}from'../engine-ui-utils.js';function l(_0x1b0d14,_0x2a47c9=!0x1){const _0x4622a7=_0x593b;return null==_0x1b0d14?_0x2a47c9:!0x0===_0x1b0d14||_0x4622a7(0x1cb)===_0x1b0d14||!0x1!==_0x1b0d14&&_0x4622a7(0x21d)!==_0x1b0d14&&Boolean(_0x1b0d14);}const c={'Start':'▶','Stop':'■','Pause':'❚❚','Resume':'▶','Restart':'↻','Retry':'↻','Reset':'⟲','Rebuild':'⚒','Edit':'✎','Type':'↗','Delete':'🗑'};export default{'tag':_0x155102(0x1ba),'attr':{'engine':{},'env':{},'pipeline':{},'hidepipeline':{},'hidetype':{},'hideenv':{},'variant':{},'compact':{},'showdelete':{}},'context':_0x137afe=>({'busy':!0x1,'error':null,'typeLabel':{'embedder':_0x155102(0x218),'indexer':_0x155102(0x1a9),'search':_0x155102(0x1b8),'worker':_0x155102(0x202),'vector-search':'Search','embed-worker':_0x155102(0x202),'materializer':'Materializer','file-extractor':_0x155102(0x1b7),'file-collection':'Collection','file-extractor-worker':'Worker','processor':_0x155102(0x1ae),'queue-worker':_0x155102(0x18a)},'typeColor':{'embedder':_0x155102(0x1b4),'indexer':_0x155102(0x1d7),'vector-search':_0x155102(0x22b),'embed-worker':'var(--okdb-warning)','materializer':_0x155102(0x1ac),'file-extractor':_0x155102(0x205),'file-collection':_0x155102(0x216),'file-extractor-worker':_0x155102(0x18d),'processor':_0x155102(0x1eb),'queue-worker':_0x155102(0x1d7)},get 'eng'(){return _0x137afe['$attr']['engine']??{};},get 'envName'(){const _0x1879ac=_0x155102;return _0x137afe[_0x1879ac(0x18f)][_0x1879ac(0x1bc)]??this[_0x1879ac(0x1fc)]?.['env']??this['eng']?.['_uiEnv']??this[_0x1879ac(0x1fc)]?.[_0x1879ac(0x212)]??this['eng']?.['config']?.[_0x1879ac(0x1b6)]??null;},get 'isMember'(){const _0x48b063=_0x155102;return _0x48b063(0x186)===_0x137afe[_0x48b063(0x18f)]['variant']||_0x48b063(0x204)!==_0x137afe[_0x48b063(0x18f)]['variant']&&l(_0x137afe[_0x48b063(0x18f)][_0x48b063(0x1d6)],!0x1);},get 'hidePipeline'(){const _0x204098=_0x155102;return l(_0x137afe['$attr'][_0x204098(0x209)],!0x1);},get 'hideType'(){const _0x43a079=_0x155102;return l(_0x137afe['$attr'][_0x43a079(0x188)],!0x1);},get 'hideEnv'(){const _0x3b6cc2=_0x155102;return l(_0x137afe['$attr'][_0x3b6cc2(0x1ff)],!0x1);},get 'showDelete'(){const _0x1c2a62=_0x155102;return l(_0x137afe[_0x1c2a62(0x18f)][_0x1c2a62(0x1fa)],!0x1);},get 'basePath'(){const _0xdd4274=_0x155102;return _0xf72430(this[_0xdd4274(0x1fc)],this['envName']);},get 'embeddingsMode'(){const _0x3db7e9=_0x155102;return _0x372c19(this[_0x3db7e9(0x1fc)]);},get 'running'(){const _0x2d6a05=_0x155102;return!!this[_0x2d6a05(0x1fc)]?.[_0x2d6a05(0x213)];},get 'statusMeta'(){const _0x2c72f3=_0x155102;return _0x40050d(this[_0x2c72f3(0x1fc)]);},get 'paused'(){const _0x1dbcbc=_0x155102;return!0x0===this[_0x1dbcbc(0x1fc)]?.[_0x1dbcbc(0x1a1)]?.['paused']||!0x0===this['eng']?.[_0x1dbcbc(0x1d5)]?.['paused']||!0x0===this[_0x1dbcbc(0x1fc)]?.[_0x1dbcbc(0x1f7)];},get 'pipelineName'(){const _0x1f5dec=_0x155102;return _0x137afe[_0x1f5dec(0x18f)][_0x1f5dec(0x1f6)]??this[_0x1f5dec(0x1fc)]?.[_0x1f5dec(0x225)]?.['pipeline']??this[_0x1f5dec(0x1fc)]?.[_0x1f5dec(0x1ee)]?.[_0x1f5dec(0x1f6)]??this[_0x1f5dec(0x1fc)]?.[_0x1f5dec(0x1ee)]?.[_0x1f5dec(0x192)]??null;},get 'pipelineLabel'(){const _0x2087d3=_0x155102;return this['pipelineName']?String(this['pipelineName'])['split'](':')[_0x2087d3(0x200)]():null;},get 'sourceType'(){const _0x45912b=_0x155102;return this['eng']?.[_0x45912b(0x1ee)]?.[_0x45912b(0x1f9)]??this[_0x45912b(0x1fc)]?.[_0x45912b(0x1d5)]?.['source_type']??this[_0x45912b(0x1fc)]?.[_0x45912b(0x1a1)]?.[_0x45912b(0x1f9)]??this[_0x45912b(0x1fc)]?.['stats']?.['indexer']?.[_0x45912b(0x1f9)]??this[_0x45912b(0x1fc)]?.[_0x45912b(0x1ee)]?.[_0x45912b(0x182)]??null;},get 'canRunLifecycle'(){const _0x12827a=_0x155102;return!!this[_0x12827a(0x20d)];},get 'title'(){const _0x17fd02=_0x155102;return this[_0x17fd02(0x1fc)]?.[_0x17fd02(0x1b0)]??this['eng']?.[_0x17fd02(0x18e)]??_0x17fd02(0x197);},get 'displayTitle'(){const _0x1cda47=_0x155102,_0x2ad27c=String(this[_0x1cda47(0x1c8)]??'');return _0x2ad27c[_0x1cda47(0x1d8)](':')?_0x2ad27c['split'](':')[_0x1cda47(0x200)]():_0x2ad27c;},get 'titleNamespace'(){const _0x432054=_0x155102,_0x1a9556=String(this[_0x432054(0x1c8)]??'');return _0x1a9556['includes'](':')?_0x1a9556[_0x432054(0x1c1)](':')[_0x432054(0x1ad)](0x0,-0x1)[_0x432054(0x1b9)](':'):null;},get 'description'(){const _0x308f95=_0x155102;return _0x42b9a1(this[_0x308f95(0x1fc)]);},get 'inlineError'(){const _0x59160b=_0x155102;return _0x273523(this[_0x59160b(0x1fc)]);},get 'metadata'(){const _0x1eed32=_0x155102,_0x5df5a0=[_0x1eed32(0x1cd),_0x1eed32(0x1fb),_0x1eed32(0x1be),'Embedder',_0x1eed32(0x1d1),_0x1eed32(0x1bd),_0x1eed32(0x19e),'Model',_0x1eed32(0x203),_0x1eed32(0x1c9),_0x1eed32(0x206),_0x1eed32(0x193),_0x1eed32(0x198),_0x1eed32(0x1b5)],_0x32fd0b=new Map(_0x24dc89(this[_0x1eed32(0x1fc)])['map'](_0x5905ec=>[_0x5905ec['label'],_0x5905ec])),_0x557dfc=[];for(const _0x177062 of _0x5df5a0){if(this[_0x1eed32(0x1bf)]&&_0x1eed32(0x218)===_0x177062)continue;const _0x130ff3=_0x32fd0b['get'](_0x177062);_0x130ff3&&(_0x557dfc[_0x1eed32(0x189)](_0x130ff3),_0x32fd0b[_0x1eed32(0x19a)](_0x177062));}for(const _0x2f58d0 of _0x32fd0b[_0x1eed32(0x21e)]())(this[_0x1eed32(0x1bf)]||this[_0x1eed32(0x219)])&&_0x1eed32(0x224)===_0x2f58d0[_0x1eed32(0x1ec)]||_0x557dfc[_0x1eed32(0x189)](_0x2f58d0);return _0x557dfc[_0x1eed32(0x1ad)](0x0,this[_0x1eed32(0x1bf)]?0x6:0xa);},get 'metrics'(){const _0x464635=_0x155102,_0x2d0876=['Field','Mode',_0x464635(0x198),_0x464635(0x1b5),'Embedder',_0x464635(0x19e),'Model',_0x464635(0x1bd)];return _0x13090e(this['eng'])[_0x464635(0x1ce)](_0x34783f=>!_0x2d0876['includes'](_0x34783f[_0x464635(0x1ec)]))[_0x464635(0x1ad)](0x0,this[_0x464635(0x1bf)]?0x5:0x8);},get 'healthBadges'(){const _0x254926=_0x155102,_0x280f80=this['statusMeta']['label'];return _0x354d4b(this[_0x254926(0x1fc)])[_0x254926(0x1ce)](_0x40c479=>_0x40c479?.['text']&&_0x40c479[_0x254926(0x1ca)]!==_0x280f80)[_0x254926(0x1ce)](_0x5c3bae=>!(this[_0x254926(0x1e2)]&&'healthy'===_0x5c3bae[_0x254926(0x1ca)]))[_0x254926(0x1ad)](0x0,0x2);},get 'primaryAction'(){const _0x79cc8e=_0x155102;return this[_0x79cc8e(0x1de)]?this[_0x79cc8e(0x1c5)]?this[_0x79cc8e(0x1e2)]?{'label':'Stop','method':_0x79cc8e(0x1a6),'suffix':'/stop','color':_0x79cc8e(0x18d),'confirm':_0x79cc8e(0x1a8)+this[_0x79cc8e(0x1c8)]+'\x22?','toast':_0x79cc8e(0x20f)}:_0x79cc8e(0x217)===this[_0x79cc8e(0x1fc)]?.[_0x79cc8e(0x21b)]?{'label':_0x79cc8e(0x221),'method':'POST','suffix':_0x79cc8e(0x1a7),'color':_0x79cc8e(0x1eb),'confirm':_0x79cc8e(0x1dc)+this[_0x79cc8e(0x1c8)]+'\x22?','toast':_0x79cc8e(0x183)}:{'label':_0x79cc8e(0x211),'method':_0x79cc8e(0x1a6),'suffix':_0x79cc8e(0x1ef),'color':_0x79cc8e(0x205),'confirm':null,'toast':'Engine\x20started'}:'error'===this[_0x79cc8e(0x1fc)]?.[_0x79cc8e(0x21b)]?{'label':_0x79cc8e(0x1f8),'method':_0x79cc8e(0x1a6),'suffix':_0x79cc8e(0x196),'color':_0x79cc8e(0x1eb),'confirm':null,'toast':_0x79cc8e(0x19d)}:this['paused']?{'label':_0x79cc8e(0x22a),'method':_0x79cc8e(0x1a6),'suffix':_0x79cc8e(0x1e3),'color':_0x79cc8e(0x205),'confirm':null,'toast':_0x79cc8e(0x1dd)}:{'label':_0x79cc8e(0x1d4),'method':_0x79cc8e(0x1a6),'suffix':'/pause','color':'var(--okdb-warning)','confirm':null,'toast':_0x79cc8e(0x1f1)}:null;},get 'overflowActions'(){const _0x4a18f7=_0x155102,_0xbf30ac=[];return this[_0x4a18f7(0x1de)]&&(_0xbf30ac[_0x4a18f7(0x189)]({'key':'restart','label':_0x4a18f7(0x221),'method':'POST','suffix':'/restart','color':_0x4a18f7(0x1f2),'confirm':this[_0x4a18f7(0x1c5)]?_0x4a18f7(0x1dc)+this[_0x4a18f7(0x1c8)]+'\x22?':null,'toast':_0x4a18f7(0x183)}),this[_0x4a18f7(0x1c5)]||_0xbf30ac[_0x4a18f7(0x189)]({'key':'pause','label':this[_0x4a18f7(0x1f7)]?_0x4a18f7(0x22a):_0x4a18f7(0x1d4),'method':'POST','suffix':this[_0x4a18f7(0x1f7)]?_0x4a18f7(0x1e3):'/pause','color':this['paused']?_0x4a18f7(0x205):_0x4a18f7(0x18d),'toast':this[_0x4a18f7(0x1f7)]?_0x4a18f7(0x1dd):_0x4a18f7(0x1f1)}),_0x4a18f7(0x1d3)===this[_0x4a18f7(0x1fc)]?.['type']&&(_0xbf30ac[_0x4a18f7(0x189)]({'key':_0x4a18f7(0x201),'label':'Reset','title':_0x4a18f7(0x1c3),'method':_0x4a18f7(0x1a6),'suffix':_0x4a18f7(0x185),'color':_0x4a18f7(0x1b4),'confirm':'Reset\x20cursor\x20for\x20engine\x20\x22'+this[_0x4a18f7(0x1c8)]+'\x22?','toast':'Engine\x20cursor\x20reset'}),_0xbf30ac[_0x4a18f7(0x189)]({'key':_0x4a18f7(0x1d9),'label':'Rebuild','method':_0x4a18f7(0x1a6),'suffix':'/rebuild','color':_0x4a18f7(0x205),'confirm':_0x4a18f7(0x199)+this[_0x4a18f7(0x1c8)]+'\x22?','toast':_0x4a18f7(0x220)}))),_0xbf30ac[_0x4a18f7(0x189)]({'key':_0x4a18f7(0x1b3),'label':'Edit','color':_0x4a18f7(0x22b),'local':_0x4a18f7(0x1b3)}),this[_0x4a18f7(0x1e4)]&&!this[_0x4a18f7(0x1c4)]&&_0xbf30ac['push']({'key':_0x4a18f7(0x1f0),'label':_0x4a18f7(0x1af),'title':'View\x20Type\x20Context','color':_0x4a18f7(0x1d7),'local':_0x4a18f7(0x1f0)}),this[_0x4a18f7(0x1e8)]&&this[_0x4a18f7(0x1de)]&&_0xbf30ac[_0x4a18f7(0x189)]({'key':_0x4a18f7(0x19a),'label':_0x4a18f7(0x194),'method':_0x4a18f7(0x1fe),'suffix':'','color':'var(--okdb-danger)','confirm':_0x4a18f7(0x22c)+this['title']+'\x22?','toast':_0x4a18f7(0x20e),'destructive':!0x0}),_0xbf30ac;},'typeName'(_0x295018){const _0x29a606=_0x155102;return this[_0x29a606(0x21a)][_0x295018]||_0x295018||_0x29a606(0x197);},'glyph':_0x44f070=>c[_0x44f070]??'','pillStyle'(_0x4c0e1f){const _0x1dc4e9=_0x155102,_0x3bf764=_0x4c0e1f[_0x1dc4e9(0x210)]('var(');return _0x1dc4e9(0x1c0)+(_0x3bf764?_0x1dc4e9(0x1c7)+_0x4c0e1f+_0x1dc4e9(0x19c):_0x4c0e1f+'55')+_0x1dc4e9(0x20a)+_0x4c0e1f+_0x1dc4e9(0x1cf)+(_0x3bf764?_0x1dc4e9(0x1c7)+_0x4c0e1f+_0x1dc4e9(0x1ea):_0x4c0e1f+'12')+';';},'typeBadgeStyle'(){const _0x55d2d7=_0x155102;return this[_0x55d2d7(0x1a3)](this[_0x55d2d7(0x190)][this[_0x55d2d7(0x1fc)]?.[_0x55d2d7(0x1f0)]]??'var(--okdb-app-fg-muted)');},'pipelineBadgeStyle':()=>'border-color:#6366f144;\x20color:#a5b4fc;\x20background:#6366f110;','envBadgeStyle':()=>_0x155102(0x226),'healthBadgeStyle'(_0x5467cb){const _0xbaa491=_0x155102;return this['pillStyle'](_0x5467cb?.[_0xbaa491(0x1e5)]??'var(--okdb-app-fg-muted)');},'typePillStyle'(){const _0x48596a=_0x155102;return this[_0x48596a(0x1d2)]();},'statusPillStyle'(){const _0x175a75=_0x155102;return this[_0x175a75(0x1a3)](this[_0x175a75(0x1e0)][_0x175a75(0x1e5)]??_0x175a75(0x1f2));},'metricToneColor'(_0x2e0e22=null){const _0x80e2a3=_0x155102;if(_0x80e2a3(0x1b2)===_0x2e0e22?.[_0x80e2a3(0x1ec)]&&Number(String(_0x2e0e22[_0x80e2a3(0x227)])[_0x80e2a3(0x1aa)](/,/g,''))<=0x0)return _0x80e2a3(0x1f2);switch(_0x2e0e22?.[_0x80e2a3(0x18c)]){case _0x80e2a3(0x1df):return _0x80e2a3(0x1ed);case _0x80e2a3(0x208):return'var(--okdb-warning)';default:return _0x80e2a3(0x1c2);}},'metricPercent'(_0x6def76=null){const _0x25f64e=_0x155102,_0x26313a=String(_0x6def76?.[_0x25f64e(0x227)]??'')['match'](/(?:\(|\b)(\d{1,3})%/);if(!_0x26313a)return null;const _0x23f9ef=Number(_0x26313a[0x1]);return Number[_0x25f64e(0x1e1)](_0x23f9ef)?Math['max'](0x0,Math[_0x25f64e(0x1f3)](0x64,_0x23f9ef)):null;},'progressMetric'(){const _0x42044b=_0x155102;return _0x13090e(this[_0x42044b(0x1fc)])[_0x42044b(0x187)](_0x2db8e4=>_0x42044b(0x18b)===_0x2db8e4?.[_0x42044b(0x1ec)])??null;},'progressFillStyle'(){const _0x39c657=_0x155102,_0x493907=this[_0x39c657(0x1f5)]();return'height:100%;width:'+(this['metricPercent'](_0x493907)??0x0)+_0x39c657(0x223)+(_0x39c657(0x1df)===_0x493907?.[_0x39c657(0x18c)]?'var(--okdb-danger)':'warning'===_0x493907?.[_0x39c657(0x18c)]?_0x39c657(0x18d):_0x39c657(0x205))+';';},'showProgressBar'(){const _0x53696f=_0x155102,_0x3b5bc2=this['metricPercent'](this[_0x53696f(0x1f5)]());return null!=_0x3b5bc2&&_0x3b5bc2<0x64;},async 'runAction'(_0x69b1bb){const _0x47b089=_0x155102;if(_0x69b1bb){if('edit'!==_0x69b1bb[_0x47b089(0x215)]){if(_0x47b089(0x1f0)!==_0x69b1bb['local']){if(this[_0x47b089(0x20d)]&&(!_0x69b1bb['confirm']||await _0x137afe[_0x47b089(0x20b)][_0x47b089(0x1f4)][_0x47b089(0x1e6)][_0x47b089(0x1a2)](_0x69b1bb[_0x47b089(0x1a2)]))){this[_0x47b089(0x1db)]=!0x0,this['error']=null;try{const _0xd40e04=await fetch(''+this[_0x47b089(0x20d)]+(_0x69b1bb[_0x47b089(0x1bb)]??''),{'method':_0x69b1bb[_0x47b089(0x191)]??_0x47b089(0x1a6)}),_0x136ff6=await _0xd40e04[_0x47b089(0x1e7)]()[_0x47b089(0x21c)](()=>({}));if(!_0xd40e04['ok'])throw new Error(_0x136ff6?.[_0x47b089(0x217)]?.[_0x47b089(0x1cc)]||_0x69b1bb[_0x47b089(0x1ec)]+_0x47b089(0x1a4));_0x137afe[_0x47b089(0x20b)][_0x47b089(0x1f4)]?.[_0x47b089(0x20c)]?.[_0x47b089(0x1a0)]?.(_0x69b1bb['toast']??_0x69b1bb[_0x47b089(0x1ec)]+_0x47b089(0x184)),_0x137afe[_0x47b089(0x228)](_0x47b089(0x1da),_0x69b1bb[_0x47b089(0x18e)]??_0x69b1bb[_0x47b089(0x1ec)]),_0x137afe[_0x47b089(0x228)]('refresh');}catch(_0x3d0904){this['error']=_0x3d0904?.[_0x47b089(0x1cc)]||String(_0x3d0904),_0x137afe[_0x47b089(0x20b)][_0x47b089(0x1f4)]?.[_0x47b089(0x20c)]?.[_0x47b089(0x217)]?.(this['error']);}finally{this['busy']=!0x1;}}}else _0x137afe[_0x47b089(0x228)](_0x47b089(0x1b1),{'engine':this[_0x47b089(0x1fc)],'type':this[_0x47b089(0x1e4)],'env':this[_0x47b089(0x1a5)]});}else _0x137afe[_0x47b089(0x228)](_0x47b089(0x1b3),this[_0x47b089(0x1fc)]);}}}),'template':_0x155102(0x19b),'style':_0x155102(0x21f)};
@@ -1 +1 @@
1
- var _0x432ce3=_0x2923;(function(_0x275e1e,_0x2cb4eb){var _0x281a04=_0x2923,_0x33cb71=_0x275e1e();while(!![]){try{var _0x5163b6=parseInt(_0x281a04(0x7c))/0x1+-parseInt(_0x281a04(0x9a))/0x2*(parseInt(_0x281a04(0x91))/0x3)+parseInt(_0x281a04(0x98))/0x4+parseInt(_0x281a04(0x8c))/0x5*(parseInt(_0x281a04(0x86))/0x6)+-parseInt(_0x281a04(0x7d))/0x7*(-parseInt(_0x281a04(0x84))/0x8)+parseInt(_0x281a04(0x85))/0x9*(-parseInt(_0x281a04(0x93))/0xa)+-parseInt(_0x281a04(0x89))/0xb;if(_0x5163b6===_0x2cb4eb)break;else _0x33cb71['push'](_0x33cb71['shift']());}catch(_0x1f21c5){_0x33cb71['push'](_0x33cb71['shift']());}}}(_0x15e0,0x764f1));import{statusTone as _0xdb0a1}from'../engine-ui-utils.js';function _0x2923(_0x118b98,_0x3eb0c7){_0x118b98=_0x118b98-0x79;var _0x15e0ab=_0x15e0();var _0x292316=_0x15e0ab[_0x118b98];return _0x292316;}export default{'tag':_0x432ce3(0x8b),'attr':{'engine':{},'label':{},'labelColor':{},'subtitle':{},'title':{},'actionLabel':{},'selected':{}},'context':_0x31cba1=>({get 'eng'(){var _0x49bf06=_0x432ce3;return _0x31cba1[_0x49bf06(0x92)]['engine']??{};},get 'tone'(){return _0xdb0a1(this['eng']);},get 'rowTitle'(){var _0xfafc87=_0x432ce3;return _0x31cba1[_0xfafc87(0x92)][_0xfafc87(0x96)]??this[_0xfafc87(0x8e)]['name']??_0xfafc87(0x8d);},get 'rowLabel'(){var _0x388eb5=_0x432ce3;return _0x31cba1[_0x388eb5(0x92)][_0x388eb5(0x81)]??this[_0x388eb5(0x8e)][_0x388eb5(0x7b)]??'engine';},get 'rowLabelColor'(){var _0x5470f5=_0x432ce3;return _0x31cba1['$attr'][_0x5470f5(0x88)]??'var(--okdb-accent)';},'labelAlpha':(_0x521eda,_0x394615=0x1b)=>_0x521eda['startsWith'](_0x432ce3(0x97))?_0x432ce3(0x90)+_0x521eda+'\x20'+_0x394615+'%,\x20transparent)':_0x521eda+'44',get 'rowSubtitle'(){var _0x58b567=_0x432ce3;return _0x31cba1[_0x58b567(0x92)][_0x58b567(0x80)]??'';},get 'rowActionLabel'(){var _0xf1c0c3=_0x432ce3;return _0x31cba1[_0xf1c0c3(0x92)][_0xf1c0c3(0x8f)]??_0xf1c0c3(0x87);},get 'hasActionLabel'(){var _0x253051=_0x432ce3;return!!(this['rowActionLabel']||'')[_0x253051(0x7e)]();},get 'isSelected'(){var _0x3dfeda=_0x432ce3;return!0x0===_0x31cba1['$attr']['selected']||_0x3dfeda(0x79)===_0x31cba1[_0x3dfeda(0x92)][_0x3dfeda(0x8a)];},get 'rootStyle'(){var _0x30e88b=_0x432ce3;return _0x30e88b(0x7a)+(this[_0x30e88b(0x95)]?_0x30e88b(0x94):_0x30e88b(0x99))+';background:'+(this[_0x30e88b(0x95)]?'var(--okdb-app-surface)':_0x30e88b(0x7f))+';cursor:pointer;width:100%;text-align:left;color:inherit;min-width:0;';},'select'(){var _0x2a4e3d=_0x432ce3;_0x31cba1[_0x2a4e3d(0x82)](_0x2a4e3d(0x83),this[_0x2a4e3d(0x8e)]);}}),'template':'\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'};function _0x15e0(){var _0x52d54a=['691082BeCHxk','trim','var(--okdb-app-bg-deep)','subtitle','label','$dispatch','select','8gNKOuh','5703381CXvdTv','8334GcUGcJ','Edit','labelColor','5556100BAvXoa','selected','engine-row-item','2115oEhraz','engine','eng','actionLabel','color-mix(in\x20srgb,\x20','78756SKmnrh','$attr','10JNkYLM','color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent)','isSelected','title','var(','3199556IaJlcS','var(--okdb-app-border)','44aNhGOL','true','display:flex;align-items:center;gap:7px;padding:7px\x209px;border-radius:6px;border:1px\x20solid\x20','type','714784tUJvYd'];_0x15e0=function(){return _0x52d54a;};return _0x15e0();}
1
+ var _0x14d3f5=_0x25d9;(function(_0x30f85c,_0x3280bc){var _0x4c364a=_0x25d9,_0x6418f=_0x30f85c();while(!![]){try{var _0x5a2863=-parseInt(_0x4c364a(0xd0))/0x1*(parseInt(_0x4c364a(0xcb))/0x2)+parseInt(_0x4c364a(0xd4))/0x3*(parseInt(_0x4c364a(0xd9))/0x4)+parseInt(_0x4c364a(0xca))/0x5*(parseInt(_0x4c364a(0xd2))/0x6)+-parseInt(_0x4c364a(0xe1))/0x7+-parseInt(_0x4c364a(0xd7))/0x8*(parseInt(_0x4c364a(0xec))/0x9)+parseInt(_0x4c364a(0xcd))/0xa+parseInt(_0x4c364a(0xe6))/0xb*(-parseInt(_0x4c364a(0xde))/0xc);if(_0x5a2863===_0x3280bc)break;else _0x6418f['push'](_0x6418f['shift']());}catch(_0x452dcc){_0x6418f['push'](_0x6418f['shift']());}}}(_0x5738,0xad1e8));function _0x5738(){var _0x17d9f1=['$dispatch','Edit','3636591ShaGuy','title','actionLabel','subtitle','trim','516923UTrtYX','label','true','select','rowActionLabel','$attr','9LOpGVy','startsWith','var(--okdb-app-border)','%,\x20transparent)','5RaSVrK','2FQqkEU','color-mix(in\x20srgb,\x20','7396580cWfNYp','var(--okdb-app-bg-deep)','engine','485552YoDIKz','\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','4563096lcFsoh','name','9159NdXXCZ','eng','display:flex;align-items:center;gap:7px;padding:7px\x209px;border-radius:6px;border:1px\x20solid\x20','3083248BmOwkq','selected','1832kDKKRr','var(','var(--okdb-accent)','engine-row-item','var(--okdb-app-surface)','204zDZkDz'];_0x5738=function(){return _0x17d9f1;};return _0x5738();}function _0x25d9(_0x38982b,_0x494eb0){_0x38982b=_0x38982b-0xc7;var _0x5738e9=_0x5738();var _0x25d9ea=_0x5738e9[_0x38982b];return _0x25d9ea;}import{statusTone as _0x1676dd}from'../engine-ui-utils.js';export default{'tag':_0x14d3f5(0xdc),'attr':{'engine':{},'label':{},'labelColor':{},'subtitle':{},'title':{},'actionLabel':{},'selected':{}},'context':_0x195fb8=>({get 'eng'(){var _0x3582e8=_0x14d3f5;return _0x195fb8[_0x3582e8(0xeb)][_0x3582e8(0xcf)]??{};},get 'tone'(){return _0x1676dd(this['eng']);},get 'rowTitle'(){var _0x16502b=_0x14d3f5;return _0x195fb8[_0x16502b(0xeb)][_0x16502b(0xe2)]??this[_0x16502b(0xd5)][_0x16502b(0xd3)]??_0x16502b(0xcf);},get 'rowLabel'(){var _0x493269=_0x14d3f5;return _0x195fb8[_0x493269(0xeb)][_0x493269(0xe7)]??this[_0x493269(0xd5)]['type']??_0x493269(0xcf);},get 'rowLabelColor'(){var _0xb7e09d=_0x14d3f5;return _0x195fb8[_0xb7e09d(0xeb)]['labelColor']??_0xb7e09d(0xdb);},'labelAlpha':(_0xd56577,_0xa06e39=0x1b)=>_0xd56577[_0x14d3f5(0xc7)](_0x14d3f5(0xda))?_0x14d3f5(0xcc)+_0xd56577+'\x20'+_0xa06e39+_0x14d3f5(0xc9):_0xd56577+'44',get 'rowSubtitle'(){var _0x29e198=_0x14d3f5;return _0x195fb8[_0x29e198(0xeb)][_0x29e198(0xe4)]??'';},get 'rowActionLabel'(){var _0x516b36=_0x14d3f5;return _0x195fb8['$attr'][_0x516b36(0xe3)]??_0x516b36(0xe0);},get 'hasActionLabel'(){var _0x2b241e=_0x14d3f5;return!!(this[_0x2b241e(0xea)]||'')[_0x2b241e(0xe5)]();},get 'isSelected'(){var _0x2d06c6=_0x14d3f5;return!0x0===_0x195fb8['$attr']['selected']||_0x2d06c6(0xe8)===_0x195fb8[_0x2d06c6(0xeb)][_0x2d06c6(0xd8)];},get 'rootStyle'(){var _0x53f648=_0x14d3f5;return _0x53f648(0xd6)+(this['isSelected']?'color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent)':_0x53f648(0xc8))+';background:'+(this['isSelected']?_0x53f648(0xdd):_0x53f648(0xce))+';cursor:pointer;width:100%;text-align:left;color:inherit;min-width:0;';},'select'(){var _0x404ab6=_0x14d3f5;_0x195fb8[_0x404ab6(0xdf)](_0x404ab6(0xe9),this[_0x404ab6(0xd5)]);}}),'template':_0x14d3f5(0xd1)};
@@ -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 _0x40775c=_0x58da;(function(_0x1182bf,_0x274a6a){const _0x3fa4db=_0x58da,_0x115621=_0x1182bf();while(!![]){try{const _0x40539a=parseInt(_0x3fa4db(0x230))/0x1+parseInt(_0x3fa4db(0x224))/0x2+parseInt(_0x3fa4db(0x213))/0x3*(parseInt(_0x3fa4db(0x20d))/0x4)+-parseInt(_0x3fa4db(0x1f4))/0x5+-parseInt(_0x3fa4db(0x1b0))/0x6*(parseInt(_0x3fa4db(0x218))/0x7)+parseInt(_0x3fa4db(0x1cd))/0x8+parseInt(_0x3fa4db(0x1d2))/0x9*(-parseInt(_0x3fa4db(0x211))/0xa);if(_0x40539a===_0x274a6a)break;else _0x115621['push'](_0x115621['shift']());}catch(_0x3e17ca){_0x115621['push'](_0x115621['shift']());}}}(_0x2e7c,0x5e60c));import _0x44e0f4 from'./engine-panel-shell.ok.js';import _0x55ec78 from'../../functions/modals/function-modal.ok.js';import{ENGINE_PANEL_SHARED_STYLE as _0x3628c8}from'../engine-panel-shared-style.js';import{buildEngineBasePath as _0x4c9cde,formatJsonValue as _0x47dc45,getApiErrorMessage as _0x3e1260,openFunctionRoute as _0x111376,resolveEngineEnvName as _0x297458}from'../engine-ui-utils.js';function _0x58da(_0x42a01d,_0x19d885){_0x42a01d=_0x42a01d-0x1a8;const _0x2e7c29=_0x2e7c();let _0x58da61=_0x2e7c29[_0x42a01d];return _0x58da61;}function _0x2e7c(){const _0x584cf9=['queue_env','materializerSourceEnv','shared','failedBatches','materializerPreviewContext','queue-worker','invocations','batchSize','refresh','targetCount','failOnHandlerError','$dispatch','1233545KCHHDv','originMode','catch','isQueueWorker','info','workerHandler','engine-updated','materializerPreviewPayload','boolean','No\x20worker\x20setting\x20changes\x20to\x20save','functions','all\x20nodes','success','openHandlerFunction','handlerEnv','/reset-cursor','json','engine','select','affinity','$attr','source_type','/retry','syncWorkerConfig','basePath','1309352BldQVw','saveConfigError','handler','ttl','10GRhlIV','mode','3ThphCI','running','runMaterializerRepairAction','snapshot','beginEditDraft','539gweWZV','saveConfigBusy','string','all','confirm','remove','Materializer\x20retry\x20started','toast','pipelineStats','Reset\x20cursor\x20for\x20materializer\x20\x22','job_type','engine_key','345092eyDmnz','materializerTargetType','data','state','stats','target_type','Failed\x20(','materializerCursorKey','example-2','reasonText','object','result','358329CXALFO','POST','generic-engine-panel','pollInterval','includes','close','async','modal','config','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);','name','materializerRepairError','exclusive','Materializer\x20cursor\x20reset','type','failed','online','concurrency','eng','source_env','inactive','hydrateValues','29034wArEZM','processed','lag','length','materializerTargetEnv','Job\x20TTL','isMaterializer','open','stopped','affinityText','Poll\x20interval','envName','onEnvChanged','target_env','cursorKey','env','replace','handlerName','workerStats','materializerRepairBusy','clearTargetOnRebuild','entries','yes','materializerSourceType','processedChanges','paused','runningBatches','Concurrency','\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','5930640BQAdMu','status','Worker\x20settings\x20saved','runtime','isArray','5342931xPCtOA','\x20must\x20be\x20a\x20positive\x20integer','$ok','processor','stores','okdb','workerConfigDraft','stringify','pipelineHandler','$watch','build','materializer','key','reason','put','error','PATCH','Rebuild\x20materializer\x20\x22','isProcessor','isFinite','bootstrap','application/json'];_0x2e7c=function(){return _0x584cf9;};return _0x2e7c();}function o(_0xeee457,_0x144ade='—'){const _0x1c8f85=_0x58da;return null==_0xeee457||''===_0xeee457?_0x144ade:Array[_0x1c8f85(0x1d1)](_0xeee457)?_0xeee457[_0x1c8f85(0x1b3)]?_0xeee457['join'](',\x20'):_0x144ade:_0x1c8f85(0x1fc)==typeof _0xeee457?_0xeee457?_0x1c8f85(0x1c6):'no':String(_0xeee457);}function c(_0x14ed46,_0x4454e8=[]){const _0x5f2349=_0x58da;return function(_0x47928c){const _0x33d521=_0x58da;return!!_0x47928c&&_0x33d521(0x22e)==typeof _0x47928c&&!Array[_0x33d521(0x1d1)](_0x47928c);}(_0x14ed46)?Object[_0x5f2349(0x1c5)](_0x14ed46)['filter'](([_0x465f4d,_0x4fd6d2])=>!_0x4454e8['includes'](_0x465f4d)&&(null==_0x4fd6d2||[_0x5f2349(0x21a),'number',_0x5f2349(0x1fc)][_0x5f2349(0x234)](typeof _0x4fd6d2))):[];}function d(_0x1cb1bc,_0x1a11c9){const _0x1bd8ba=_0x58da;if(''===_0x1cb1bc||null==_0x1cb1bc)return null;const _0x1774f0=Math['trunc'](Number(_0x1cb1bc));if(!Number['isFinite'](_0x1774f0)||_0x1774f0<0x1)throw new Error(_0x1a11c9+_0x1bd8ba(0x1d3));return _0x1774f0;}function p(_0x17e999){const _0x2c3af0=_0x58da;if(null==_0x17e999||''===_0x17e999)return'—';const _0x34d8bd=Number(_0x17e999);if(!Number[_0x2c3af0(0x1e5)](_0x34d8bd))return String(_0x17e999);const _0x12e640=_0x34d8bd<=0x1?0x64*_0x34d8bd:_0x34d8bd;return Math['round'](_0x12e640)+'%';}export default{'tag':_0x40775c(0x232),'dependencies':[_0x44e0f4,_0x55ec78],'attr':{'engine':{},'env':{},'modal':{}},'context':_0x392f64=>({'saveConfigBusy':!0x1,'saveConfigError':null,'materializerRepairBusy':!0x1,'materializerRepairError':null,'showRawRuntime':!0x1,'showRawStats':!0x1,'showRawConfig':!0x1,'workerConfigDraft':{'concurrency':'','pollInterval':'','ttl':''},get 'eng'(){const _0xbe6660=_0x40775c;return _0x392f64[_0xbe6660(0x208)][_0xbe6660(0x205)]??{};},get 'envName'(){const _0x24eab2=_0x40775c;return _0x297458(this['eng'],_0x392f64[_0x24eab2(0x208)][_0x24eab2(0x1bf)]??null);},get 'basePath'(){const _0x2e3679=_0x40775c;return _0x4c9cde(this[_0x2e3679(0x1ac)],this[_0x2e3679(0x1bb)]);},get 'isQueueWorker'(){const _0x5d62a3=_0x40775c;return _0x5d62a3(0x1ed)===this[_0x5d62a3(0x1ac)][_0x5d62a3(0x1a8)];},get 'isProcessor'(){const _0x314736=_0x40775c;return _0x314736(0x1d5)===this['eng']['type'];},get 'isMaterializer'(){const _0x442254=_0x40775c;return _0x442254(0x1dd)===this['eng'][_0x442254(0x1a8)];},get 'hasSpecializedPipelineView'(){const _0x4d16ac=_0x40775c;return this['isQueueWorker']||this[_0x4d16ac(0x1e4)]||this[_0x4d16ac(0x1b6)];},get 'stateText'(){const _0x53ed31=_0x40775c;return _0x53ed31(0x1e1)===this[_0x53ed31(0x1ac)][_0x53ed31(0x1ce)]?_0x53ed31(0x1e1):_0x53ed31(0x1ae)===this[_0x53ed31(0x1ac)][_0x53ed31(0x1ce)]?_0x53ed31(0x1ae):this[_0x53ed31(0x1ac)]['isRunning']||_0x53ed31(0x1aa)===this['eng'][_0x53ed31(0x1ce)]?'running':this[_0x53ed31(0x1ac)]['status']||_0x53ed31(0x1b8);},get 'reasonText'(){const _0x53e244=_0x40775c,_0x1c63ad=this[_0x53e244(0x1ac)][_0x53e244(0x1df)]??null;return _0x1c63ad&&_0x1c63ad!==this['stateText']?String(_0x1c63ad)[_0x53e244(0x1c0)](/_/g,'\x20'):'—';},get 'affinityText'(){const _0x732cd5=_0x40775c;return o(this[_0x732cd5(0x1ac)][_0x732cd5(0x207)],_0x732cd5(0x1ff));},get 'updatedText'(){const _0x5c7a75=_0x40775c;return function(_0x99089d){if(!_0x99089d)return'—';try{return new Date(_0x99089d)['toLocaleString']();}catch{return String(_0x99089d);}}(this[_0x5c7a75(0x1ac)][_0x5c7a75(0x1d0)]?.['updated']);},get 'runtimePreviewEntries'(){const _0x2fa668=_0x40775c;return c(this[_0x2fa668(0x1ac)][_0x2fa668(0x1d0)],[_0x2fa668(0x227),_0x2fa668(0x1df),'error',_0x2fa668(0x214),'updated']);},get 'statsPreviewEntries'(){const _0x524e6d=_0x40775c;return c(this[_0x524e6d(0x1ac)][_0x524e6d(0x228)],[_0x524e6d(0x223),_0x524e6d(0x222),_0x524e6d(0x1e8),_0x524e6d(0x20f),_0x524e6d(0x1ab),_0x524e6d(0x1b1),_0x524e6d(0x1a9),_0x524e6d(0x214)]);},get 'configPreviewEntries'(){const _0x1bb8b3=_0x40775c;return c(this[_0x1bb8b3(0x1ac)][_0x1bb8b3(0x238)],[_0x1bb8b3(0x222),_0x1bb8b3(0x1e8),'handler','concurrency','pollInterval','ttl']);},get 'workerStats'(){const _0x1f846c=_0x40775c;return this[_0x1f846c(0x1ac)][_0x1f846c(0x228)]??{};},get 'pipelineStats'(){const _0xd680e7=_0x40775c;return this[_0xd680e7(0x1ac)][_0xd680e7(0x228)]??{};},get 'workerHandler'(){const _0x5052c2=_0x40775c;return this[_0x5052c2(0x1c2)][_0x5052c2(0x20f)]??this[_0x5052c2(0x1ac)][_0x5052c2(0x238)]?.[_0x5052c2(0x20f)]??null;},get 'pipelineHandler'(){const _0x3eaf42=_0x40775c;return this['pipelineStats'][_0x3eaf42(0x20f)]??this[_0x3eaf42(0x1ac)][_0x3eaf42(0x238)]?.[_0x3eaf42(0x20f)]??null;},get 'handlerName'(){const _0x16833e=_0x40775c;return this[_0x16833e(0x1da)]?.[_0x16833e(0x23a)]??null;},get 'handlerEnv'(){const _0x3e5c22=_0x40775c;return this[_0x3e5c22(0x1da)]?.['env']??this['envName']??'—';},get 'canOpenHandlerFunction'(){const _0x279cd1=_0x40775c;return!!this[_0x279cd1(0x1c1)];},get 'workerJobType'(){const _0x2fd4cd=_0x40775c;return this[_0x2fd4cd(0x1c2)]['job_type']??this['eng'][_0x2fd4cd(0x238)]?.[_0x2fd4cd(0x222)]??'—';},get 'workerQueueEnv'(){const _0x229684=_0x40775c;return this[_0x229684(0x1c2)]['queue_env']??this[_0x229684(0x1ac)][_0x229684(0x238)]?.[_0x229684(0x1e8)]??this[_0x229684(0x1bb)]??'—';},get 'workerFunctionEnv'(){const _0x224dd5=_0x40775c;return this[_0x224dd5(0x1f9)]?.[_0x224dd5(0x1bf)]??this['envName']??'—';},get 'workerRecordRuns'(){const _0x5c3f74=_0x40775c;return this['eng']['config']?.[_0x5c3f74(0x20f)]?.['recordRuns']??'all';},get 'workerProcessed'(){const _0x3fa6f3=_0x40775c;return this['workerStats'][_0x3fa6f3(0x1b1)]??0x0;},get 'workerFailed'(){const _0x47cb75=_0x40775c;return this[_0x47cb75(0x1c2)][_0x47cb75(0x1a9)]??0x0;},get 'workerRunning'(){const _0x30b8a1=_0x40775c;return this[_0x30b8a1(0x1c2)][_0x30b8a1(0x214)]??0x0;},get 'workerConcurrency'(){const _0x5251d6=_0x40775c;return this['workerStats'][_0x5251d6(0x1ab)]??this['eng']['config']?.[_0x5251d6(0x1ab)]??0x1;},get 'workerPollInterval'(){const _0x28c87b=_0x40775c;return this['eng']['config']?.[_0x28c87b(0x233)]??0x3e8;},get 'workerTtl'(){const _0x182664=_0x40775c;return this[_0x182664(0x1ac)][_0x182664(0x238)]?.['ttl']??0x7530;},get 'canOpenWorkerFunction'(){const _0x1e1f0e=_0x40775c;return!!this['workerHandler']?.[_0x1e1f0e(0x23a)];},get 'showWorkerReason'(){const _0x1b915f=_0x40775c;return'—'!==this[_0x1b915f(0x22d)]&&_0x1b915f(0x214)!==this[_0x1b915f(0x22d)];},get 'showWorkerAffinity'(){const _0x1d1e72=_0x40775c;return'all\x20nodes'!==this[_0x1d1e72(0x1b9)];},get 'processorSourceType'(){const _0xe68f50=_0x40775c;return this['pipelineStats']['source_type']??this['eng'][_0xe68f50(0x238)]?.[_0xe68f50(0x209)]??'—';},get 'processorSourceEnv'(){const _0x14c8d7=_0x40775c;return this[_0x14c8d7(0x220)][_0x14c8d7(0x1ad)]??this['eng'][_0x14c8d7(0x238)]?.[_0x14c8d7(0x1ad)]??this[_0x14c8d7(0x1bb)]??'—';},get 'processorMode'(){const _0x121203=_0x40775c;return this[_0x121203(0x220)][_0x121203(0x212)]??this[_0x121203(0x1ac)][_0x121203(0x238)]?.[_0x121203(0x212)]??_0x121203(0x236);},get 'processorBootstrap'(){const _0x16c563=_0x40775c;return this['pipelineStats']['bootstrap']??this[_0x16c563(0x1ac)][_0x16c563(0x238)]?.['bootstrap']??_0x16c563(0x216);},get 'processorOriginMode'(){const _0x126560=_0x40775c;return this[_0x126560(0x220)]['originMode']??this[_0x126560(0x1ac)][_0x126560(0x238)]?.[_0x126560(0x1f5)]??'all';},get 'processorBatchSize'(){const _0x42a1b7=_0x40775c;return this[_0x42a1b7(0x220)]['batchSize']??this[_0x42a1b7(0x1ac)][_0x42a1b7(0x238)]?.[_0x42a1b7(0x1ef)]??0x100;},get 'processorCursorKey'(){const _0x8fde45=_0x40775c;return this[_0x8fde45(0x220)][_0x8fde45(0x1be)]??this[_0x8fde45(0x1ac)]['config']?.['cursorKey']??this[_0x8fde45(0x1ac)][_0x8fde45(0x1de)]??'—';},get 'processorLockMode'(){const _0x512ed9=_0x40775c;return this[_0x512ed9(0x220)]['lockMode']??this[_0x512ed9(0x1ac)][_0x512ed9(0x238)]?.['lockMode']??_0x512ed9(0x23c);},get 'processorHydrateValues'(){const _0x1a335d=_0x40775c;return o(this[_0x1a335d(0x220)][_0x1a335d(0x1af)]??this[_0x1a335d(0x1ac)][_0x1a335d(0x238)]?.[_0x1a335d(0x1af)]??!0x0);},get 'processorFailOnHandlerError'(){const _0x173d4c=_0x40775c;return o(this[_0x173d4c(0x220)][_0x173d4c(0x1f2)]??this[_0x173d4c(0x1ac)][_0x173d4c(0x238)]?.[_0x173d4c(0x1f2)]??!0x0);},get 'processorInvocations'(){const _0x41a954=_0x40775c;return this[_0x41a954(0x220)][_0x41a954(0x1ee)]??0x0;},get 'processorProcessedChanges'(){const _0x2a7496=_0x40775c;return this[_0x2a7496(0x220)][_0x2a7496(0x1c8)]??0x0;},get 'processorFailedBatches'(){return this['pipelineStats']['failedBatches']??0x0;},get 'processorRunningBatches'(){const _0x232da4=_0x40775c;return this['pipelineStats'][_0x232da4(0x1ca)]??0x0;},get 'processorLag'(){const _0x40499f=_0x40775c;return this[_0x40499f(0x220)]['lag']??'—';},get 'processorProgress'(){return p(this['pipelineStats']['progress']);},get 'processorPaused'(){const _0x34be9e=_0x40775c;return!0x0===this[_0x34be9e(0x220)][_0x34be9e(0x1c9)];},get 'materializerSourceType'(){const _0x40c753=_0x40775c;return this[_0x40c753(0x220)][_0x40c753(0x209)]??this[_0x40c753(0x1ac)][_0x40c753(0x238)]?.[_0x40c753(0x209)]??'—';},get 'materializerTargetType'(){const _0x5cd860=_0x40775c;return this[_0x5cd860(0x220)][_0x5cd860(0x229)]??this[_0x5cd860(0x1ac)][_0x5cd860(0x238)]?.['target_type']??'—';},get 'materializerSourceEnv'(){const _0x2c0c82=_0x40775c;return this['pipelineStats'][_0x2c0c82(0x1ad)]??this[_0x2c0c82(0x1ac)][_0x2c0c82(0x238)]?.[_0x2c0c82(0x1ad)]??this[_0x2c0c82(0x1bb)]??'—';},get 'materializerTargetEnv'(){const _0x25c785=_0x40775c;return this[_0x25c785(0x220)][_0x25c785(0x1bd)]??this['eng'][_0x25c785(0x238)]?.[_0x25c785(0x1bd)]??this['envName']??'—';},get 'materializerBootstrap'(){const _0x2a4d10=_0x40775c;return this['pipelineStats']['bootstrap']??this[_0x2a4d10(0x1ac)][_0x2a4d10(0x238)]?.[_0x2a4d10(0x1e6)]??'snapshot';},get 'materializerOriginMode'(){const _0x4d019e=_0x40775c;return this['pipelineStats'][_0x4d019e(0x1f5)]??this[_0x4d019e(0x1ac)][_0x4d019e(0x238)]?.[_0x4d019e(0x1f5)]??_0x4d019e(0x21b);},get 'materializerBatchSize'(){const _0x33143d=_0x40775c;return this[_0x33143d(0x220)]['batchSize']??this['eng'][_0x33143d(0x238)]?.[_0x33143d(0x1ef)]??0x80;},get 'materializerCursorKey'(){const _0x3a7f26=_0x40775c;return this[_0x3a7f26(0x220)]['cursorKey']??this[_0x3a7f26(0x1ac)]['config']?.[_0x3a7f26(0x1be)]??this['eng'][_0x3a7f26(0x1de)]??'—';},get 'materializerClearTargetOnRebuild'(){const _0x473573=_0x40775c;return o(this[_0x473573(0x220)][_0x473573(0x1c4)]??this['eng'][_0x473573(0x238)]?.[_0x473573(0x1c4)]??!0x0);},get 'materializerProcessedChanges'(){const _0xebf598=_0x40775c;return this[_0xebf598(0x220)]['processedChanges']??0x0;},get 'materializerAppliedOps'(){const _0x12a788=_0x40775c;return this[_0x12a788(0x220)]['appliedOps']??0x0;},get 'materializerFailedBatches'(){const _0x5971b5=_0x40775c;return this['pipelineStats'][_0x5971b5(0x1eb)]??0x0;},get 'materializerRunningBatches'(){const _0x4544ce=_0x40775c;return this[_0x4544ce(0x220)]['runningBatches']??0x0;},get 'materializerTargetCount'(){const _0x3b6b23=_0x40775c;return this[_0x3b6b23(0x220)][_0x3b6b23(0x1f1)]??'—';},get 'materializerLag'(){const _0x25a59e=_0x40775c;return this[_0x25a59e(0x220)][_0x25a59e(0x1b2)]??'—';},get 'materializerProgress'(){const _0x2b9bc8=_0x40775c;return p(this[_0x2b9bc8(0x220)]['progress']);},get 'materializerPaused'(){const _0x1ac2ec=_0x40775c;return!0x0===this[_0x1ac2ec(0x220)][_0x1ac2ec(0x1c9)];},get 'materializerErrorText'(){const _0x161477=_0x40775c;return this[_0x161477(0x220)]['error']??this[_0x161477(0x1ac)][_0x161477(0x1e1)]??null;},get 'materializerPreviewPayload'(){const _0x1f37c3=_0x40775c;return[{'action':_0x1f37c3(0x1e0),'key':'example-1','value':{'sample':!0x0,'title':'Example\x20source\x20row','sourceType':this[_0x1f37c3(0x1c7)]},'clock':null},{'action':_0x1f37c3(0x21d),'key':_0x1f37c3(0x22c),'clock':0x7b}];},get 'materializerPreviewContext'(){const _0x3b53d2=_0x40775c;return{'mode':_0x3b53d2(0x1aa)===this[_0x3b53d2(0x220)]['state']?'live':_0x3b53d2(0x1dc),'sourceType':this['materializerSourceType'],'targetType':this[_0x3b53d2(0x225)],'sourceEnv':this[_0x3b53d2(0x1e9)],'targetEnv':this[_0x3b53d2(0x1b4)],'engineKey':this[_0x3b53d2(0x1ac)][_0x3b53d2(0x1de)]??null,'cursorKey':this[_0x3b53d2(0x22b)]};},'formatJson':_0x47dc45,'labelize':_0x1ca9be=>String(_0x1ca9be||'')['replace'](/_/g,'\x20'),'humanValue':o,'rawToggleStyle':_0x4f0b6b=>_0x4f0b6b?_0x40775c(0x239):'','syncWorkerConfig'(_0x428036=null){const _0x4c2366=_0x40775c,_0x37e2d2=_0x428036?.['config']??{};this[_0x4c2366(0x1d8)]={'concurrency':null==_0x37e2d2['concurrency']?'':String(_0x37e2d2[_0x4c2366(0x1ab)]),'pollInterval':null==_0x37e2d2['pollInterval']?'':String(_0x37e2d2[_0x4c2366(0x233)]),'ttl':null==_0x37e2d2[_0x4c2366(0x210)]?'':String(_0x37e2d2['ttl'])},this[_0x4c2366(0x20e)]=null;},'buildWorkerConfigPatch'(){const _0x3641b6=_0x40775c,_0x924016=this['eng'][_0x3641b6(0x238)]??{},_0x35f6d1={'concurrency':d(this[_0x3641b6(0x1d8)][_0x3641b6(0x1ab)],_0x3641b6(0x1cb)),'pollInterval':d(this[_0x3641b6(0x1d8)][_0x3641b6(0x233)],_0x3641b6(0x1ba)),'ttl':d(this[_0x3641b6(0x1d8)]['ttl'],_0x3641b6(0x1b5))},_0x513fb1={};for(const [_0x4837d1,_0x12eb18]of Object[_0x3641b6(0x1c5)](_0x35f6d1))null==_0x12eb18?void 0x0!==_0x924016[_0x4837d1]&&(_0x513fb1[_0x4837d1]=null):_0x924016[_0x4837d1]!==_0x12eb18&&(_0x513fb1[_0x4837d1]=_0x12eb18);return _0x513fb1;},'resetWorkerConfig'(){const _0x1bb48d=_0x40775c;this[_0x1bb48d(0x20b)](this[_0x1bb48d(0x1ac)]);},'inspectWorkerFunction'(){const _0x3f0a8f=_0x40775c;this['openHandlerFunction'](this[_0x3f0a8f(0x1f9)]?.['name']??null);},'openHandlerFunction'(_0x5a16d4=null){const _0x5239f3=_0x40775c,_0x216046=_0x5a16d4??this[_0x5239f3(0x1c1)];_0x216046&&_0x111376(_0x392f64,_0x216046,{'beforeNavigate':()=>_0x392f64['$attr'][_0x5239f3(0x237)]?.[_0x5239f3(0x235)]?.()});},async 'openHandlerEditor'(){const _0x698f97=_0x40775c;if(!this[_0x698f97(0x1c1)])return;const _0x25f3bb=_0x392f64['$ok'][_0x698f97(0x1d6)][_0x698f97(0x1d7)],_0x1cb5e3=_0x392f64[_0x698f97(0x1d4)]['stores'][_0x698f97(0x1fe)],_0x1724a6=this['handlerEnv']&&'—'!==this['handlerEnv']?this[_0x698f97(0x202)]:this[_0x698f97(0x1bb)];_0x1724a6?(_0x25f3bb['selectedEnv']!==_0x1724a6&&_0x25f3bb['selectEnv'](_0x1724a6),await _0x1cb5e3[_0x698f97(0x1bc)](),await _0x1cb5e3['select'](this['handlerName']),_0x1cb5e3[_0x698f97(0x217)](),_0x1cb5e3['setModalPayloadDraft'](this['formatJson'](this[_0x698f97(0x1fb)])),_0x1cb5e3['setModalPreviewContext']({'materializerContext':this[_0x698f97(0x1ec)]}),await _0x392f64[_0x698f97(0x1d4)][_0x698f97(0x1ea)][_0x698f97(0x237)][_0x698f97(0x1b7)]({'owner':_0x392f64,'title':'Edit\x20Function\x20·\x20'+this[_0x698f97(0x1c1)],'canDrag':!0x0,'content':'<function-modal\x20:modal=\x22modal\x22\x20mode=\x22edit\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x3a046=>({'modal':_0x3a046,'onDone':async()=>{const _0x3193be=_0x698f97;await _0x1cb5e3[_0x3193be(0x206)](this[_0x3193be(0x1c1)]),await _0x1cb5e3['loadOverviewRuns'](),_0x392f64[_0x3193be(0x1f3)](_0x3193be(0x1f0));}})})):this[_0x698f97(0x201)]();},async 'runMaterializerRepairAction'(_0x35b790,_0x46b406,_0xec8d0=null){const _0x480e1f=_0x40775c;if(this[_0x480e1f(0x1b6)]&&this['basePath']&&!this[_0x480e1f(0x1c3)]){if(_0xec8d0&&!await _0x392f64[_0x480e1f(0x1d4)]['shared']['modal'][_0x480e1f(0x21c)](_0xec8d0))return;this[_0x480e1f(0x1c3)]=!0x0,this['materializerRepairError']=null;try{const _0x51542f=await fetch(''+this[_0x480e1f(0x20c)]+_0x35b790,{'method':_0x480e1f(0x231)}),_0x2ec49d=await _0x51542f[_0x480e1f(0x204)]()[_0x480e1f(0x1f6)](()=>({}));if(!_0x51542f['ok'])throw new Error(_0x3e1260(_0x2ec49d,'Failed\x20('+_0x51542f[_0x480e1f(0x1ce)]+')'));const _0x45c916=_0x2ec49d?.[_0x480e1f(0x226)]??_0x2ec49d?.['result']??null;_0x45c916&&_0x392f64[_0x480e1f(0x1f3)](_0x480e1f(0x1fa),_0x45c916),_0x392f64[_0x480e1f(0x1f3)](_0x480e1f(0x1f0)),_0x392f64[_0x480e1f(0x1d4)][_0x480e1f(0x1ea)]?.[_0x480e1f(0x21f)]?.[_0x480e1f(0x200)]?.(_0x46b406);}catch(_0x51befc){this[_0x480e1f(0x23b)]=_0x51befc?.['message']||String(_0x51befc),_0x392f64['$ok']['shared']?.[_0x480e1f(0x21f)]?.['error']?.(this['materializerRepairError']);}finally{this[_0x480e1f(0x1c3)]=!0x1;}}},'retryMaterializer'(){const _0x5c02d2=_0x40775c;return this[_0x5c02d2(0x215)](_0x5c02d2(0x20a),_0x5c02d2(0x21e));},'resetMaterializerCursor'(){const _0x1914c6=_0x40775c;return this[_0x1914c6(0x215)](_0x1914c6(0x203),_0x1914c6(0x23d),_0x1914c6(0x221)+this['eng'][_0x1914c6(0x23a)]+'\x22?');},'rebuildMaterializer'(){const _0xbb1bf2=_0x40775c;return this[_0xbb1bf2(0x215)]('/rebuild','Materializer\x20rebuild\x20started',_0xbb1bf2(0x1e3)+this[_0xbb1bf2(0x1ac)][_0xbb1bf2(0x23a)]+'\x22?');},async 'saveWorkerConfig'(){const _0x14be88=_0x40775c;if(this[_0x14be88(0x1f7)]&&this[_0x14be88(0x20c)]&&!this[_0x14be88(0x219)]){this[_0x14be88(0x219)]=!0x0,this['saveConfigError']=null;try{const _0x4ee8d2=this['buildWorkerConfigPatch']();if(!Object['keys'](_0x4ee8d2)[_0x14be88(0x1b3)])return void _0x392f64['$ok'][_0x14be88(0x1ea)]?.[_0x14be88(0x21f)]?.[_0x14be88(0x1f8)]?.(_0x14be88(0x1fd));const _0x12f6a8=await fetch(this[_0x14be88(0x20c)],{'method':_0x14be88(0x1e2),'headers':{'Content-Type':_0x14be88(0x1e7)},'body':JSON[_0x14be88(0x1d9)]({'config':_0x4ee8d2})}),_0x51c003=await _0x12f6a8[_0x14be88(0x204)]()[_0x14be88(0x1f6)](()=>({}));if(!_0x12f6a8['ok'])throw new Error(_0x3e1260(_0x51c003,_0x14be88(0x22a)+_0x12f6a8[_0x14be88(0x1ce)]+')'));const _0x57e55a=_0x51c003?.['data']??_0x51c003?.[_0x14be88(0x22f)]??null;_0x57e55a&&(this['syncWorkerConfig'](_0x57e55a),_0x392f64[_0x14be88(0x1f3)](_0x14be88(0x1fa),_0x57e55a)),_0x392f64['$dispatch'](_0x14be88(0x1f0)),_0x392f64['$ok'][_0x14be88(0x1ea)]?.[_0x14be88(0x21f)]?.[_0x14be88(0x200)]?.(_0x14be88(0x1cf));}catch(_0x517373){this[_0x14be88(0x20e)]=_0x517373?.['message']||String(_0x517373),_0x392f64[_0x14be88(0x1d4)]['shared']?.[_0x14be88(0x21f)]?.[_0x14be88(0x1e1)]?.(this[_0x14be88(0x20e)]);}finally{this[_0x14be88(0x219)]=!0x1;}}}}),'init'(_0x4ae85f){const _0x1da577=_0x40775c;this[_0x1da577(0x20b)](_0x4ae85f[_0x1da577(0x208)][_0x1da577(0x205)]),_0x4ae85f[_0x1da577(0x1db)](()=>_0x4ae85f[_0x1da577(0x208)][_0x1da577(0x205)],()=>this['syncWorkerConfig'](_0x4ae85f[_0x1da577(0x208)][_0x1da577(0x205)]));},'template':_0x40775c(0x1cc),'style':_0x3628c8};
@@ -1 +1 @@
1
- function _0x5abb(_0x11b1b6,_0x1a2462){_0x11b1b6=_0x11b1b6-0x1dc;const _0x20d1d7=_0x20d1();let _0x5abb96=_0x20d1d7[_0x11b1b6];return _0x5abb96;}const _0x4f9cb8=_0x5abb;function _0x20d1(){const _0x1c23dc=['syncing','files-blob-status','5911488gSrtzc','error','blobs','failed','object','values','busy','length','/files/blobs/sync','data','load','syncResult','56450klqPoJ','toFixed','574512TCgQfV','28qMyARm','json','\x20KB','2776803qxDhat','message','API','1072056pFhJOt','134740bkMsmY','application/json','\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>','5790000kJNPnS','\x20MB','POST','filter','232vFVeIP','/files/blobs/status'];_0x20d1=function(){return _0x1c23dc;};return _0x20d1();}(function(_0x1ba591,_0x3d3525){const _0x36c76e=_0x5abb,_0x25f91b=_0x1ba591();while(!![]){try{const _0x4478f7=parseInt(_0x36c76e(0x1ee))/0x1+parseInt(_0x36c76e(0x1ef))/0x2+-parseInt(_0x36c76e(0x1eb))/0x3+-parseInt(_0x36c76e(0x1f6))/0x4*(-parseInt(_0x36c76e(0x1e5))/0x5)+-parseInt(_0x36c76e(0x1e7))/0x6*(parseInt(_0x36c76e(0x1e8))/0x7)+parseInt(_0x36c76e(0x1f2))/0x8+-parseInt(_0x36c76e(0x1fa))/0x9;if(_0x4478f7===_0x3d3525)break;else _0x25f91b['push'](_0x25f91b['shift']());}catch(_0x51e563){_0x25f91b['push'](_0x25f91b['shift']());}}}(_0x20d1,0x86e6b));export default{'tag':_0x4f9cb8(0x1f9),'context':_0x384f35=>({'busy':!0x1,'syncing':!0x1,'blobs':[],'error':null,'syncResult':null,async 'load'(){const _0x5b0d2a=_0x4f9cb8;this[_0x5b0d2a(0x1df)]=!0x0,this[_0x5b0d2a(0x1fb)]=null;try{const _0x12c8c0=await fetch(__ENV__['API']+_0x5b0d2a(0x1f7)),_0x43ba19=await _0x12c8c0['json']();if(!_0x12c8c0['ok'])throw new Error(_0x43ba19?.[_0x5b0d2a(0x1fb)]?.[_0x5b0d2a(0x1ec)]||_0x5b0d2a(0x1dc));this[_0x5b0d2a(0x1fc)]=_0x43ba19[_0x5b0d2a(0x1e2)]??[];}catch(_0x24490e){this[_0x5b0d2a(0x1fb)]=_0x24490e?.['message']||String(_0x24490e);}finally{this[_0x5b0d2a(0x1df)]=!0x1;}},async 'triggerSync'(){const _0x87a9dc=_0x4f9cb8;this[_0x87a9dc(0x1f8)]=!0x0,this[_0x87a9dc(0x1e4)]=null;try{const _0x2ccda9=await fetch(__ENV__[_0x87a9dc(0x1ed)]+_0x87a9dc(0x1e1),{'method':_0x87a9dc(0x1f4),'headers':{'Content-Type':_0x87a9dc(0x1f0)},'body':'{}'}),_0x353d17=await _0x2ccda9[_0x87a9dc(0x1e9)]();if(!_0x2ccda9['ok'])throw new Error(_0x353d17?.[_0x87a9dc(0x1fb)]?.[_0x87a9dc(0x1ec)]||_0x87a9dc(0x1dc));this[_0x87a9dc(0x1e4)]=_0x353d17[_0x87a9dc(0x1e2)],await this['load']();}catch(_0xf28add){this[_0x87a9dc(0x1fb)]=_0xf28add?.[_0x87a9dc(0x1ec)]||String(_0xf28add);}finally{this[_0x87a9dc(0x1f8)]=!0x1;}},'fmtSize':_0x4bff17=>null==_0x4bff17?'—':_0x4bff17<0x400?_0x4bff17+'\x20B':_0x4bff17<0x100000?(_0x4bff17/0x400)[_0x4f9cb8(0x1e6)](0x1)+_0x4f9cb8(0x1ea):(_0x4bff17/0x100000)[_0x4f9cb8(0x1e6)](0x1)+_0x4f9cb8(0x1f3),'nodeCount':_0x378927=>_0x378927&&_0x4f9cb8(0x1dd)==typeof _0x378927?Object[_0x4f9cb8(0x1de)](_0x378927)[_0x4f9cb8(0x1f5)](Boolean)[_0x4f9cb8(0x1e0)]:0x0}),async 'mount'(){const _0x30d11c=_0x4f9cb8;await this[_0x30d11c(0x1e3)]();},'template':_0x4f9cb8(0x1f1)};
1
+ const _0x443467=_0x4dbf;(function(_0x594c2d,_0x3a0d5c){const _0x2394bf=_0x4dbf,_0x110d57=_0x594c2d();while(!![]){try{const _0x45ddb5=parseInt(_0x2394bf(0xb4))/0x1*(-parseInt(_0x2394bf(0x9f))/0x2)+parseInt(_0x2394bf(0xa8))/0x3*(-parseInt(_0x2394bf(0xaa))/0x4)+parseInt(_0x2394bf(0xb8))/0x5*(-parseInt(_0x2394bf(0x9e))/0x6)+-parseInt(_0x2394bf(0xa9))/0x7+parseInt(_0x2394bf(0x9c))/0x8*(parseInt(_0x2394bf(0xa4))/0x9)+parseInt(_0x2394bf(0xac))/0xa*(-parseInt(_0x2394bf(0xb3))/0xb)+parseInt(_0x2394bf(0xb9))/0xc;if(_0x45ddb5===_0x3a0d5c)break;else _0x110d57['push'](_0x110d57['shift']());}catch(_0x59c53d){_0x110d57['push'](_0x110d57['shift']());}}}(_0x3688,0x67e7b));function _0x4dbf(_0x6143a8,_0x4e4a31){_0x6143a8=_0x6143a8-0x9b;const _0x36889c=_0x3688();let _0x4dbf06=_0x36889c[_0x6143a8];return _0x4dbf06;}export default{'tag':'files-blob-status','context':_0x31bf0f=>({'busy':!0x1,'syncing':!0x1,'blobs':[],'error':null,'syncResult':null,async 'load'(){const _0x37e5fa=_0x4dbf;this['busy']=!0x0,this[_0x37e5fa(0xb7)]=null;try{const _0x2a8ab4=await fetch(__ENV__['API']+_0x37e5fa(0xb5)),_0x4d97b4=await _0x2a8ab4[_0x37e5fa(0x9d)]();if(!_0x2a8ab4['ok'])throw new Error(_0x4d97b4?.['error']?.[_0x37e5fa(0xaf)]||'failed');this[_0x37e5fa(0xb6)]=_0x4d97b4['data']??[];}catch(_0x367ab8){this[_0x37e5fa(0xb7)]=_0x367ab8?.[_0x37e5fa(0xaf)]||String(_0x367ab8);}finally{this[_0x37e5fa(0xb2)]=!0x1;}},async 'triggerSync'(){const _0xa20c9d=_0x4dbf;this['syncing']=!0x0,this[_0xa20c9d(0xa6)]=null;try{const _0x42ab9a=await fetch(__ENV__[_0xa20c9d(0xa5)]+_0xa20c9d(0xb1),{'method':_0xa20c9d(0x9b),'headers':{'Content-Type':_0xa20c9d(0xa1)},'body':'{}'}),_0x2fb72c=await _0x42ab9a[_0xa20c9d(0x9d)]();if(!_0x42ab9a['ok'])throw new Error(_0x2fb72c?.['error']?.['message']||'failed');this[_0xa20c9d(0xa6)]=_0x2fb72c[_0xa20c9d(0xa3)],await this['load']();}catch(_0x4a6813){this[_0xa20c9d(0xb7)]=_0x4a6813?.['message']||String(_0x4a6813);}finally{this[_0xa20c9d(0xad)]=!0x1;}},'fmtSize':_0x19ee48=>null==_0x19ee48?'—':_0x19ee48<0x400?_0x19ee48+'\x20B':_0x19ee48<0x100000?(_0x19ee48/0x400)['toFixed'](0x1)+_0x443467(0xa7):(_0x19ee48/0x100000)['toFixed'](0x1)+_0x443467(0xa2),'nodeCount':_0x39eb01=>_0x39eb01&&'object'==typeof _0x39eb01?Object[_0x443467(0xab)](_0x39eb01)[_0x443467(0xa0)](Boolean)[_0x443467(0xae)]:0x0}),async 'mount'(){await this['load']();},'template':_0x443467(0xb0)};function _0x3688(){const _0xe66f04=['\x20KB','312105XLHaST','3632811kokuqd','8cKcGWd','values','164190DpbfzR','syncing','length','message','\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>','/files/blobs/sync','busy','22hOpUjs','89308MyafoL','/files/blobs/status','blobs','error','12235sqEcyy','24872388NoPZdt','POST','24UTFvgh','json','1404GwOOsb','12qoFGXv','filter','application/json','\x20MB','data','663669VKtogN','API','syncResult'];_0x3688=function(){return _0xe66f04;};return _0x3688();}