@kedem/okdb 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +1 -1
  2. package/bin/okdb.js +1 -1
  3. package/okdb-data/default/data.mdb +0 -0
  4. package/okdb-data/default/lock.mdb +0 -0
  5. package/okdb-data/~log/data.mdb +0 -0
  6. package/okdb-data/~log/lock.mdb +0 -0
  7. package/okdb-data/~system/data.mdb +0 -0
  8. package/okdb-data/~system/lock.mdb +0 -0
  9. package/okdb.js +1 -1
  10. package/package.json +1 -1
  11. package/public/admin-app.js +1 -1
  12. package/public/components/admin-route-host.ok.js +1 -1
  13. package/public/components/env-picker.ok.js +1 -1
  14. package/public/components/field-path-input.ok.js +1 -1
  15. package/public/components/geo-map.ok.js +1 -1
  16. package/public/components/ok-cron-input.ok.js +1 -1
  17. package/public/components/ok-dropzone.ok.js +1 -1
  18. package/public/components/ok-js-input.ok.js +1 -1
  19. package/public/components/ok-json-input.ok.js +1 -1
  20. package/public/components/ok-text-monaco-input.ok.js +1 -1
  21. package/public/components/theme-toggle.ok.js +1 -1
  22. package/public/login-app.js +1 -1
  23. package/public/modules/ok.js +1 -1
  24. package/public/sections/api/parts/api-endpoint.ok.js +1 -1
  25. package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
  26. package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
  27. package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
  28. package/public/sections/auth/parts/token-detail.ok.js +1 -1
  29. package/public/sections/auth/parts/token-list.ok.js +1 -1
  30. package/public/sections/db/modals/add-item-modal.ok.js +1 -1
  31. package/public/sections/db/modals/create-env-modal.ok.js +1 -1
  32. package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
  33. package/public/sections/db/modals/create-index-modal.ok.js +1 -1
  34. package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
  35. package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
  36. package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
  37. package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
  38. package/public/sections/db/parts/db-overview.ok.js +1 -1
  39. package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
  40. package/public/sections/db/parts/edit-row.ok.js +1 -1
  41. package/public/sections/db/parts/tm-timeline.ok.js +1 -1
  42. package/public/sections/db/parts/type-changelog.ok.js +1 -1
  43. package/public/sections/db/parts/type-list.ok.js +1 -1
  44. package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
  45. package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
  46. package/public/sections/db/parts/type-viewer.ok.js +1 -1
  47. package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
  48. package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
  49. package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
  50. package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
  51. package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
  52. package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
  53. package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
  54. package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
  55. package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
  56. package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
  57. package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
  58. package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
  59. package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
  60. package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
  61. package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
  62. package/public/sections/engines/engine-panel-shared-style.js +1 -1
  63. package/public/sections/engines/engine-ui-utils.js +1 -1
  64. package/public/sections/engines/modals/engine-modal.ok.js +1 -1
  65. package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
  66. package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
  67. package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
  68. package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
  69. package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
  70. package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
  71. package/public/sections/files/parts/files-blob-status.ok.js +1 -1
  72. package/public/sections/files/parts/files-collection-list.ok.js +1 -1
  73. package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
  74. package/public/sections/files/parts/files-file-list.ok.js +1 -1
  75. package/public/sections/files/parts/files-overview.ok.js +1 -1
  76. package/public/sections/files/parts/files-path-browser.ok.js +1 -1
  77. package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
  78. package/public/sections/functions/modals/function-modal.ok.js +1 -1
  79. package/public/sections/functions/parts/function-detail.ok.js +1 -1
  80. package/public/sections/functions/parts/function-logs.ok.js +1 -1
  81. package/public/sections/functions/parts/function-runner.ok.js +1 -1
  82. package/public/sections/functions/parts/functions-list.ok.js +1 -1
  83. package/public/sections/license/parts/license-panel.ok.js +1 -1
  84. package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
  85. package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
  86. package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
  87. package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
  88. package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
  89. package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
  90. package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
  91. package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
  92. package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
  93. package/public/sections/queue/parts/queue-types.ok.js +1 -1
  94. package/public/sections/queue/parts/queue-workers.ok.js +1 -1
  95. package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
  96. package/public/sections/sync/parts/sync-retention.ok.js +1 -1
  97. package/public/sections/sync/parts/sync-topology.ok.js +1 -1
  98. package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
  99. package/public/sections/system/parts/system-api-panel.ok.js +1 -1
  100. package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
  101. package/public/sections/system/parts/system-log-history.ok.js +1 -1
  102. package/public/sections/system/parts/system-log.ok.js +1 -1
  103. package/public/sections/system/parts/system-status.ok.js +1 -1
  104. package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
  105. package/public/sections/views/modals/create-view-modal.ok.js +1 -1
  106. package/public/sections/views/parts/view-detail.ok.js +1 -1
  107. package/public/sections/views/parts/views-list.ok.js +1 -1
  108. package/public/sections/views/parts/views-overview.ok.js +1 -1
  109. package/public/setup-app.js +1 -1
  110. package/public/stores/auth-store.js +1 -1
  111. package/public/stores/events-store.js +1 -1
  112. package/public/stores/functions-store.js +1 -1
  113. package/public/stores/okdb-store.js +1 -1
  114. package/public/stores/theme-store.js +1 -1
  115. package/public/util/permissions.js +1 -1
  116. package/public/util/sift-schema.js +1 -1
  117. package/public/view-models/type-query-vm.js +1 -1
@@ -1 +1 @@
1
- function _0x1a71(_0x398a79,_0x48196c){_0x398a79=_0x398a79-0x14f;const _0x192006=_0x1920();let _0x1a71ac=_0x192006[_0x398a79];return _0x1a71ac;}const _0x4079a7=_0x1a71;(function(_0x3afe0b,_0x2c60e9){const _0x477617=_0x1a71,_0x42137d=_0x3afe0b();while(!![]){try{const _0x426a6a=-parseInt(_0x477617(0x19b))/0x1+parseInt(_0x477617(0x1c4))/0x2*(parseInt(_0x477617(0x184))/0x3)+parseInt(_0x477617(0x170))/0x4+-parseInt(_0x477617(0x175))/0x5*(-parseInt(_0x477617(0x1a4))/0x6)+parseInt(_0x477617(0x198))/0x7*(-parseInt(_0x477617(0x1b4))/0x8)+parseInt(_0x477617(0x18e))/0x9+-parseInt(_0x477617(0x188))/0xa;if(_0x426a6a===_0x2c60e9)break;else _0x42137d['push'](_0x42137d['shift']());}catch(_0x4f516f){_0x42137d['push'](_0x42137d['shift']());}}}(_0x1920,0x5956d));import _0x3d7af1 from'@toolkit/elements/ok-table.ok.js';import _0x453d6c from'../../engines/parts/engine-panel-shell.ok.js';import{ENGINE_PANEL_SHARED_STYLE as _0x30aa06}from'../../engines/engine-panel-shared-style.js';import{buildEmbeddingsPipelineUrl as _0x43cc58,dispatchEnginePipelineSelection as _0x7f3faa}from'../../engines/engine-ui-utils.js';function _0x1920(){const _0x35f856=['_pipelineUrl','min','$dispatch','editError','json','_buildEditAlgConfig','length','editBusy','result','305358ncQcqD','confirm','API','slice','9704720qDmaby','eng','config','/item/','start','application/json','4229199XFFBHH','type','/embeddings/engines/','chars\x20','$ok','max','/stats','not\x20found','algorithm_config','POST','350798HhKMgm','\x20KB','dims','400159skSNXs','data','actionResult','busy','$host','metric','shared','Rebuild\x20the\x20full\x20index\x20from\x20storage?\x20This\x20may\x20take\x20a\x20while.','storage_key','4184670sjUcWX','var(--okdb-danger)','filter','engine-updated','editAlgorithm','workerMetrics','docExpanded','editAlgorithmMap','Snapshot\x20published.','No\x20snapshot\x20needed\x20(up\x20to\x20date).','/snapshot','indexer','\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:title=\x22name\x22\x0a\x20\x20type-label=\x22vector-search\x22\x0a\x20\x20type-color=\x22var(--okdb-accent)\x22\x0a\x20\x20:badges=\x22headerBadges\x22\x0a\x20\x20show-refresh=\x22true\x22\x0a\x20\x20fill=\x22true\x22\x0a\x20\x20:refresh-busy=\x22busy\x20||\x20queryBusy\x20||\x20actionBusy\x22\x0a\x20\x20:on-refresh=\x22()\x20=>\x20onRefresh()\x22\x0a\x20\x20:on-pipeline=\x22viewPipeline\x22\x0a\x20\x20@engine-updated=\x22$dispatch(\x27engine-updated\x27,\x20$event.detail)\x22\x0a\x20\x20@refresh=\x22$dispatch(\x27refresh\x27)\x22\x0a\x20\x20@deleted=\x22$dispatch(\x27deleted\x27,\x20$event.detail)\x22\x0a>\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x0a\x20\x20<if\x20:=\x22stats\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;min-width:0;flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pill-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Vector\x20search\x20algorithm.\x22>{{\x20s.algorithm\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Distance\x20metric.\x22>{{\x20metricValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Vector\x20dimensions.\x22>dims:\x20{{\x20dimsValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Backing\x20storage\x20key.\x22>store:\x20{{\x20storageKeyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22chunkStrategy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Chunking\x20strategy\x20used\x20by\x20the\x20indexer.\x22>chunk:\x20{{\x20chunkStrategy\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Query\x20the\x20live\x20vector\x20index\x20for\x20<strong>{{\x20storageKeyValue\x20}}</strong>\x20and\x20inspect\x20the\x20matched\x20source\x20chunks\x20below.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-note\x22>Use\x20text\x20search\x20here\x20to\x20validate\x20relevance\x20quickly.\x20Snapshot\x20and\x20rebuild\x20are\x20available\x20below\x20when\x20the\x20in-memory\x20index\x20needs\x20maintenance.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-grid\x20metric-grid--compact\x22\x20style=\x22min-width:min(100%,\x20360px);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Vectors</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22>{{\x20vectorCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Capacity</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22font-size:18px;\x22>{{\x20capacityValue\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22wm\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;justify-content:space-between;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Performance</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!wm.searchOps\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;opacity:.4;font-style:italic;\x22>Run\x20a\x20search\x20to\x20populate\x20latency\x20metrics.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Avg\x20latency</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20fmtMs(wm.searchLatencyAvgMs)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>p95\x20latency</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20fmtMs(wm.searchLatencyP95Ms)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Searches</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20wm.searchOps\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Queue\x20depth</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20wm.pendingOps\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22wm.workerMemory\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Heap\x20used</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22\x20style=\x22font-size:15px;\x22>{{\x20fmtBytes(wm.workerMemory.heapUsed)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>RSS</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22\x20style=\x22font-size:15px;\x22>{{\x20fmtBytes(wm.workerMemory.rss)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x20flex:1;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;gap:8px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Search\x20test</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Run\x20a\x20text\x20query\x20and\x20inspect\x20the\x20raw\x20chunk\x20hits\x20and\x20source\x20context.</span>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!hasEmbedder\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:12px;\x20font-style:italic;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20No\x20embedder\x20configured\x20—\x20text\x20queries\x20unavailable.\x20Pass\x20a\x20Float32Array\x20via\x20the\x20API\x20directly.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Enter\x20text\x20query…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22queryText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22queryText\x20=\x20$el.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@keydown.enter=\x22runQuery\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!hasEmbedder\x20||\x20!eng.isRunning\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:72px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22queryLimit\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22queryLimit\x20=\x20Number($el.value)\x20||\x2010\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20max=\x22100\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Top-K\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22runQuery\x22\x20:disabled=\x22queryBusy\x20||\x20!queryText.trim()\x20||\x20!eng.isRunning\x20||\x20!hasEmbedder\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20queryBusy\x20?\x20\x27…\x27\x20:\x20\x27Search\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22queryError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20queryError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22queryResults\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22overflow:auto;\x20min-height:0;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22queryResults.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:13px;\x22>No\x20results.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x20:data=\x22queryResults\x22\x20no-scroll\x20style=\x22width:100%;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x2236px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>#</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>{{\x20queryResults.indexOf(row)\x20+\x201\x20}}</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Key</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20row.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22chunk-loc\x22\x20style=\x22margin-left:8px;\x22>{{\x20fmtRange(row.chunk)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22200px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Score</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20background:var(--okdb-app-border);\x20border-radius:4px;\x20height:6px;\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22\x27height:100%;\x20border-radius:4px;\x20background:\x27\x20+\x20scoreColor(row.score)\x20+\x20\x27;\x20width:\x27\x20+\x20scoreBar(row.score)\x20+\x20\x27%\x27\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.8;\x20min-width:42px;\x20text-align:right;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20(row.score\x20*\x20100).toFixed(1)\x20}}%\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px;\x20font-size:12px;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x22\x20:data-fetch=\x22autoFetch(row)\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Identity\x20line\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.6;\x20font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:10px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>key:\x20<strong\x20style=\x22color:#fff;\x20opacity:1;\x22>{{\x20row.key\x20}}</strong></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22sourceType\x22><span>type:\x20<strong\x20style=\x22color:var(--okdb-accent);\x22>{{\x20sourceType\x20}}</strong></span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22chunk-loc\x22>{{\x20fmtRange(row.chunk)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunkHash\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-family:monospace;\x20font-size:10px;\x22>{{\x20row.chunkHash\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20CHUNKED\x20RESULT\x20═══════════════════════════════════════════\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Tier\x201:\x20Matched\x20chunk\x20text\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:4px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Matched\x20chunk</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!row.chunk.text\x20&&\x20usesNonTrivialPrepare\x20&&\x20getChunkText(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-warning);\x20font-size:10px;\x22\x20title=\x22Chunk\x20offsets\x20are\x20into\x20the\x20prepared\x20text;\x20extraction\x20from\x20the\x20raw\x20field\x20may\x20be\x20approximate.\x22>⚠\x20approximate</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20storeText:\x20true\x20—\x20text\x20carried\x20in\x20the\x20result\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk.text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22chunk-text\x22>{{\x20row.chunk.text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20storeText:\x20false\x20—\x20extract\x20from\x20loaded\x20source\x20doc\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!row.chunk.text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:11px;\x20padding:6px\x200;\x22>Loading\x20chunk…</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.busy\x20&&\x20getChunkText(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22chunk-text\x22>{{\x20getChunkText(row)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.busy\x20&&\x20!getChunkText(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:11px;\x20font-style:italic;\x20padding:4px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.error\x22>Source\x20doc\x20unavailable.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.error\x20&&\x20!sourceType\x22>No\x20source\x20type\x20—\x20cannot\x20look\x20up\x20chunk\x20text.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.error\x20&&\x20sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Chunk\x20text\x20not\x20stored.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!eng.config?.field\x22>\x20No\x20field\x20configured.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.config?.field\x22>\x20Enable\x20<code>storeText:\x20true</code>\x20in\x20the\x20pipeline\x20to\x20store\x20it.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Tier\x202:\x20\x22View\x20in\x20context\x20of\x20source\x22\x20collapsible\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22doc-toggle\x22\x20@click=\x22toggleDocExpand(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docExpanded[row.key]\x22>▲\x20hide\x20source\x20context</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docExpanded[row.key]\x22>▼\x20view\x20in\x20context\x20of\x20source</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docExpanded[row.key]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:8px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:11px;\x22>Loading\x20source…</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x22>{{\x20docCache[row.key].error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.value\x20!==\x20undefined\x20&&\x20!docCache[row.key]?.error\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Field\x20known\x20+\x20value\x20present\x20→\x20show\x20highlighted\x20field\x20text\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.config?.field\x20&&\x20docCache[row.key].value?.[eng.config.field]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Field\x20<strong\x20style=\x22color:#fff;\x20opacity:.9;\x22>{{\x20eng.config.field\x20}}</strong>\x20—\x20matched\x20range\x20highlighted\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22usesNonTrivialPrepare\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-warning);\x22\x20title=\x22The\x20pipeline\x20uses\x20prepare:\x27{{\x20stats.indexer.prepare\x20}}\x27.\x20Chunk\x20offsets\x20are\x20into\x20the\x20prepared\x20text,\x20so\x20the\x20highlight\x20position\x20in\x20the\x20raw\x20field\x20is\x20approximate.\x22>\x20⚠\x20approximate\x20(prepare:\x20{{\x20stats.indexer.prepare\x20}})</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22chunk-text\x20chunk-text--ctx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22splitHighlight(String(docCache[row.key].value[eng.config.field]\x20??\x20\x27\x27),\x20row.chunk)\x22\x20let:item=\x22seg\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22seg.highlight\x20?\x20\x27chunk-hl\x27\x20:\x20\x27\x27\x22>{{\x20seg.text\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20No\x20field\x20or\x20field\x20value\x20missing\x20→\x20fall\x20back\x20to\x20full\x20doc\x20JSON\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!(eng.config?.field\x20&&\x20docCache[row.key].value?.[eng.config.field])\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-all;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:300px;\x20overflow:auto;\x20color:#a5f3fc;\x22>{{\x20fmtDoc(docCache[row.key].value)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:11px;\x22>No\x20source\x20type\x20linked\x20—\x20cannot\x20load\x20source\x20document.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20END\x20CHUNKED\x20══════════════════════════════════════════════\x20-->\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20NON-CHUNKED\x20RESULT:\x20show\x20source\x20doc\x20directly\x20(unchanged)\x20═\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!row.chunk\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:11px;\x22>Loading…</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20margin-top:4px;\x22>{{\x20docCache[row.key].error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.value\x20!==\x20undefined\x20&&\x20!docCache[row.key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-all;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:220px;\x20overflow:auto;\x20color:#a5f3fc;\x22>{{\x20fmtDoc(docCache[row.key].value)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:11px;\x22>No\x20source\x20type\x20linked\x20—\x20cannot\x20look\x20up\x20original\x20document.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20END\x20NON-CHUNKED\x20══════════════════════════════════════════\x20-->\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;justify-content:space-between;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Index\x20details</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!editMode\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20style=\x22font-size:12px;padding:3px\x2010px;\x22\x20@click=\x22openEditConfig\x22\x20:disabled=\x22!eng.isRunning\x20&&\x20!eng.config\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Edit\x20config\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!editMode\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x20kv-grid--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>algorithm</span><span\x20class=\x22kv-val\x22>{{\x20s.algorithm\x20||\x20eng.config?.algorithm\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>metric</span><span\x20class=\x22kv-val\x22>{{\x20metricValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>dims</span><span\x20class=\x22kv-val\x22>{{\x20dimsValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>storage\x20key</span><span\x20class=\x22kv-val\x22>{{\x20storageKeyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.role\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>role</span><span\x20class=\x22kv-val\x22>{{\x20s.role\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.M\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>M</span><span\x20class=\x22kv-val\x22>{{\x20s.M\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>efConstruction</span><span\x20class=\x22kv-val\x22>{{\x20s.efConstruction\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>efSearch</span><span\x20class=\x22kv-val\x22>{{\x20s.efSearch\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.connectivity\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>connectivity</span><span\x20class=\x22kv-val\x22>{{\x20s.connectivity\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>expansion\x20search</span><span\x20class=\x22kv-val\x22>{{\x20s.expansionSearch\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.changesSince\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>changes\x20since\x20snap</span><span\x20class=\x22kv-val\x22>{{\x20s.changesSince\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.latestSnapshot\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>last\x20snapshot</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22\x20style=\x22font-size:11px;\x20word-break:break-all;\x22>{{\x20s.latestSnapshot\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22editMode\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-form\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-note\x22>Saving\x20will\x20restart\x20the\x20engine\x20to\x20apply\x20the\x20new\x20algorithm.\x20stats_data\x20and\x20storage\x20remain\x20intact.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-label\x22>Algorithm</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22editAlgorithm\x22\x20@change=\x22onEditAlgorithmChange($el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22editAlgorithms\x22\x20let:item=\x22alg\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22alg.key\x22\x20:selected=\x22alg.key\x20===\x20editAlgorithm\x22>{{\x20alg.label\x20||\x20alg.key\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22editAlgorithmNote\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-hint\x22>{{\x20editAlgorithmNote\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22editAlgorithmFields\x22\x20let:item=\x22field\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-label\x22>{{\x20field.label\x20||\x20field.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22field.type\x20===\x20\x27select\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22editAlgConfig[field.key]\x22\x20@change=\x22editAlgConfig\x20=\x20{\x20...editAlgConfig,\x20[field.key]:\x20$el.value\x20}\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22field.options\x22\x20let:item=\x22opt\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22opt.value\x22\x20:selected=\x22opt.value\x20===\x20editAlgConfig[field.key]\x22>{{\x20opt.label\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22field.type\x20!==\x20\x27select\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22field.type\x20===\x20\x27number\x27\x20?\x20\x27number\x27\x20:\x20\x27text\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22editAlgConfig[field.key]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22editAlgConfig\x20=\x20{\x20...editAlgConfig,\x20[field.key]:\x20$el.value\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:placeholder=\x22field.placeholder\x20??\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:min=\x22field.min\x20??\x20undefined\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22field.hint\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-hint\x22>{{\x20field.hint\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22editError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);font-size:13px;\x22>{{\x20editError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;gap:8px;margin-top:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22saveConfig\x22\x20:disabled=\x22editBusy\x22>{{\x20editBusy\x20?\x20\x27Saving…\x27\x20:\x20\x27Save\x20&\x20restart\x27\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22closeEditConfig\x22\x20:disabled=\x22editBusy\x22\x20style=\x22opacity:.7;\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Maintenance</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22snapshot\x22\x20:disabled=\x22actionBusy\x20||\x20!eng.isRunning\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionBusy\x20?\x20\x27…\x27\x20:\x20\x27Snapshot\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuild\x22\x20:disabled=\x22actionBusy\x20||\x20!eng.isRunning\x22\x20style=\x22color:var(--okdb-warning);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionBusy\x20?\x20\x27…\x27\x20:\x20\x27Rebuild\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Snapshot\x20current\x20state\x20for\x20faster\x20reloads,\x20or\x20rebuild\x20when\x20the\x20in-memory\x20index\x20drifts\x20from\x20storage.</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<if\x20:=\x22actionResult\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-success);\x20font-size:13px;\x22>{{\x20actionResult\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22actionError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20actionError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','modal','Rebuild\x20complete.','queryBusy','8zspxSB','number','toFixed','embedder','var(--okdb-purple)','editAlgConfig','engine','queryError','load','maxElements','text','_seedEditAlgConfig','$watch','queryResults','actionError','chunk','2PnLMLS','keys','var(--okdb-warning)','\x20MB','$el','isArray','save\x20failed','push','docCache','strategy','isConnected','name','actionBusy','some','/env/','note','rebuild\x20failed','none','string','error','source_type','failed','key','editAlgorithmFields','editMode','<1ms','$attr','algorithm','fields','/query','editAlgorithms','default','var(--okdb-orange)','snapped','message','count','2070144TEtsdk','stats','fetchDoc','snapshot\x20failed','stringify','5GNhHVv','queryLimit','prepare','value','fromEntries','embed-search-panel'];_0x1920=function(){return _0x35f856;};return _0x1920();}const a=_0x30aa06+'\x0a\x20\x20.kv-grid\x20{\x20grid-template-columns:160px\x201fr;\x20}\x0a\x20\x20.chunk-loc\x20\x20{\x20font-size:11px;\x20color:var(--okdb-orange);\x20opacity:.9;\x20white-space:nowrap;\x20}\x0a\x20\x20.chunk-text\x20{\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:160px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x20}\x0a\x20\x20.chunk-text--ctx\x20{\x20max-height:300px;\x20}\x0a\x20\x20.chunk-hl\x20\x20\x20{\x20background:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2013%,\x20transparent);\x20border-bottom:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-orange)\x2053%,\x20transparent);\x20color:#fed7aa;\x20}\x0a\x20\x20.doc-toggle\x20{\x20font-size:11px;\x20color:var(--okdb-accent);\x20cursor:pointer;\x20opacity:.75;\x20background:none;\x20border:none;\x20padding:0;\x20}\x0a\x20\x20.doc-toggle:hover\x20{\x20opacity:1;\x20}\x0a\x20\x20.approx-note\x20{\x20font-size:10px;\x20opacity:.45;\x20margin-top:3px;\x20}\x0a\x20\x20.perf-grid\x20{\x20display:grid;\x20grid-template-columns:repeat(auto-fill,minmax(110px,1fr));\x20gap:8px;\x20}\x0a\x20\x20.perf-cell\x20{\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:8px;\x20padding:8px\x2010px;\x20}\x0a\x20\x20.perf-label\x20{\x20font-size:10px;\x20opacity:.5;\x20text-transform:uppercase;\x20letter-spacing:.05em;\x20margin-bottom:4px;\x20}\x0a\x20\x20.perf-value\x20{\x20font-size:18px;\x20font-weight:600;\x20color:var(--okdb-accent);\x20}\x0a\x20\x20.perf-unit\x20\x20{\x20font-size:11px;\x20opacity:.55;\x20margin-left:2px;\x20}\x0a\x20\x20.edit-form\x20\x20{\x20display:grid;\x20grid-template-columns:140px\x201fr;\x20gap:8px\x2012px;\x20align-items:start;\x20font-size:13px;\x20}\x0a\x20\x20.edit-form\x20select,\x20.edit-form\x20input\x20{\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:6px\x208px;\x20color:inherit;\x20font-size:13px;\x20width:100%;\x20box-sizing:border-box;\x20}\x0a\x20\x20.edit-form\x20select:focus,\x20.edit-form\x20input:focus\x20{\x20outline:none;\x20border-color:var(--okdb-accent);\x20}\x0a\x20\x20.edit-label\x20{\x20opacity:.65;\x20text-align:right;\x20padding-top:7px;\x20}\x0a\x20\x20.edit-hint\x20\x20{\x20font-size:11px;\x20opacity:.4;\x20font-style:italic;\x20margin-top:2px;\x20grid-column:2;\x20}\x0a\x20\x20.edit-note\x20\x20{\x20font-size:12px;\x20opacity:.55;\x20background:color-mix(in\x20srgb,\x20var(--okdb-warning)\x208%,\x20transparent);\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-warning)\x2025%,\x20transparent);\x20border-radius:6px;\x20padding:7px\x2010px;\x20grid-column:1/-1;\x20}\x0a';export default{'tag':_0x4079a7(0x17a),'dependencies':[_0x3d7af1,_0x453d6c],'attr':{'name':{},'engine':{}},'context':_0x135885=>({'busy':!0x1,'stats':null,'error':null,'actionBusy':!0x1,'actionResult':null,'actionError':null,'queryText':'','queryLimit':0xa,'queryResults':null,'queryBusy':!0x1,'queryError':null,'docCache':{},'docExpanded':{},'editMode':!0x1,'editBusy':!0x1,'editError':null,'editAlgorithm':null,'editAlgConfig':{},'editAlgorithms':[],'editAlgorithmMap':{},get 'eng'(){const _0x196253=_0x4079a7;return _0x135885[_0x196253(0x166)][_0x196253(0x1ba)]??{};},get 'name'(){const _0x234b12=_0x4079a7;return _0x135885[_0x234b12(0x166)][_0x234b12(0x157)];},get '_pipelineUrl'(){const _0x4aad08=_0x4079a7;return _0x43cc58(this[_0x4aad08(0x189)],this[_0x4aad08(0x157)]);},get 's'(){const _0x238490=_0x4079a7;return this[_0x238490(0x171)]?.['search']??this[_0x238490(0x171)]??{};},get 'hasEmbedder'(){const _0x449231=_0x4079a7;return!!this[_0x449231(0x189)][_0x449231(0x18a)]?.[_0x449231(0x1b7)];},get 'sourceType'(){const _0x431d1a=_0x4079a7;return this[_0x431d1a(0x171)]?.[_0x431d1a(0x18f)]??this['s']?.[_0x431d1a(0x160)]??this['eng'][_0x431d1a(0x18a)]?.[_0x431d1a(0x160)]??null;},get 'vectorCount'(){const _0x12d68c=_0x4079a7;return this['s'][_0x12d68c(0x16f)]??0x0;},get 'capacityValue'(){const _0x437ea0=_0x4079a7;return this['s'][_0x437ea0(0x1bd)]??'∞';},get 'dimsValue'(){const _0xe1b6aa=_0x4079a7;return this['s'][_0xe1b6aa(0x19a)]??'—';},get 'metricValue'(){const _0x3fce72=_0x4079a7;return this['s'][_0x3fce72(0x1a0)]||'—';},get 'storageKeyValue'(){const _0x2cb844=_0x4079a7;return this['s'][_0x2cb844(0x1a3)]||'—';},get 'chunkStrategy'(){const _0x19bc64=_0x4079a7;return this['s'][_0x19bc64(0x1c3)]?.[_0x19bc64(0x155)]||null;},get 'wm'(){const _0x2c4e27=_0x4079a7;return this['s'][_0x2c4e27(0x1a9)]??null;},get 'headerBadges'(){const _0x5739eb=_0x4079a7,_0x4caa09=[];return this['s'][_0x5739eb(0x167)]&&_0x4caa09[_0x5739eb(0x153)]({'text':this['s'][_0x5739eb(0x167)],'color':_0x5739eb(0x1b8)}),this['s'][_0x5739eb(0x1c3)]&&_0x4caa09[_0x5739eb(0x153)]({'text':'chunked\x20·\x20'+this['s'][_0x5739eb(0x1c3)][_0x5739eb(0x155)],'color':_0x5739eb(0x16c)}),_0x4caa09;},get 'usesNonTrivialPrepare'(){const _0x36858e=_0x4079a7,_0x2881fe=this[_0x36858e(0x171)]?.[_0x36858e(0x1af)]?.[_0x36858e(0x177)];return!!_0x2881fe&&_0x36858e(0x15d)!==_0x2881fe;},'fmtBytes':_0x26e84a=>null==_0x26e84a?'—':_0x26e84a>=0x40000000?(_0x26e84a/0x40000000)['toFixed'](0x1)+'\x20GB':_0x26e84a>=0x100000?(_0x26e84a/0x100000)[_0x4079a7(0x1b6)](0x1)+_0x4079a7(0x14f):_0x26e84a>=0x400?(_0x26e84a/0x400)[_0x4079a7(0x1b6)](0x0)+_0x4079a7(0x199):_0x26e84a+'\x20B','fmtMs':_0x2b1ef3=>null==_0x2b1ef3?'—':_0x2b1ef3<0x1?_0x4079a7(0x165):_0x2b1ef3+'ms',async 'loadEditAlgorithms'(){const _0x627e7f=_0x4079a7;if(!this['editAlgorithms'][_0x627e7f(0x181)])try{const _0xce6aa6=await fetch(__ENV__[_0x627e7f(0x186)]+'/embeddings/algorithms'),_0x58bf6f=await _0xce6aa6['json']();this['editAlgorithms']=_0x58bf6f[_0x627e7f(0x19c)]||[],this[_0x627e7f(0x1ab)]=Object[_0x627e7f(0x179)](this[_0x627e7f(0x16a)]['map'](_0x22b55d=>[_0x22b55d[_0x627e7f(0x162)],_0x22b55d]));}catch{this[_0x627e7f(0x16a)]=[];}},get 'editAlgorithmFields'(){const _0x2951c2=_0x4079a7;return this['editAlgorithmMap'][this[_0x2951c2(0x1a8)]]?.[_0x2951c2(0x168)]??[];},get 'editAlgorithmNote'(){const _0x183fa6=_0x4079a7;return this[_0x183fa6(0x1ab)][this[_0x183fa6(0x1a8)]]?.[_0x183fa6(0x15b)]??null;},async 'openEditConfig'(){const _0xf56d51=_0x4079a7;await this['loadEditAlgorithms']();const _0x495066=this[_0xf56d51(0x189)][_0xf56d51(0x18a)]??{};this[_0xf56d51(0x1a8)]=_0x495066[_0xf56d51(0x167)]??'flat',this[_0xf56d51(0x1bf)](this[_0xf56d51(0x1a8)],_0x495066[_0xf56d51(0x196)]??{}),this[_0xf56d51(0x164)]=!0x0,this[_0xf56d51(0x17e)]=null;},'closeEditConfig'(){const _0x409ed8=_0x4079a7;this[_0x409ed8(0x164)]=!0x1,this[_0x409ed8(0x17e)]=null;},'_seedEditAlgConfig'(_0x547cc8,_0x880183={}){const _0x364f52=_0x4079a7,_0x5afb6f=this[_0x364f52(0x1ab)][_0x547cc8]?.[_0x364f52(0x168)]??[],_0x2da209={};for(const _0xb5311 of _0x5afb6f)_0x2da209[_0xb5311[_0x364f52(0x162)]]=_0x880183[_0xb5311[_0x364f52(0x162)]]??_0xb5311['default']??'';this[_0x364f52(0x1b9)]=_0x2da209;},'onEditAlgorithmChange'(_0x43611e){const _0x1b4129=_0x4079a7;this['editAlgorithm']=_0x43611e;const _0x4c58af=this[_0x1b4129(0x189)][_0x1b4129(0x18a)]?.[_0x1b4129(0x167)]===_0x43611e?this['eng']['config']?.[_0x1b4129(0x196)]??{}:{};this[_0x1b4129(0x1bf)](_0x43611e,_0x4c58af);},'_buildEditAlgConfig'(){const _0x1fb63a=_0x4079a7,_0xc8299f={};for(const _0x1a7055 of this[_0x1fb63a(0x163)]){const _0x275beb=this[_0x1fb63a(0x1b9)][_0x1a7055[_0x1fb63a(0x162)]];''!==_0x275beb&&null!=_0x275beb&&(_0xc8299f[_0x1a7055['key']]='number'===_0x1a7055[_0x1fb63a(0x18f)]?Number(_0x275beb):_0x275beb);}return Object[_0x1fb63a(0x1c5)](_0xc8299f)[_0x1fb63a(0x181)]>0x0?_0xc8299f:void 0x0;},async 'saveConfig'(){const _0x38fa5=_0x4079a7;this[_0x38fa5(0x182)]=!0x0,this[_0x38fa5(0x17e)]=null;try{const _0x3c3d1b=this[_0x38fa5(0x180)](),_0x3bd9d5={'algorithm':this[_0x38fa5(0x1a8)]};_0x3c3d1b?_0x3bd9d5[_0x38fa5(0x196)]=_0x3c3d1b:delete _0x3bd9d5[_0x38fa5(0x196)];const _0x36e678=await fetch(__ENV__[_0x38fa5(0x186)]+_0x38fa5(0x190)+encodeURIComponent(this['eng'][_0x38fa5(0x162)]),{'method':'PATCH','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'config':_0x3bd9d5})}),_0x296f0d=await _0x36e678[_0x38fa5(0x17f)]();if(!_0x36e678['ok'])throw new Error(_0x296f0d?.[_0x38fa5(0x15f)]?.[_0x38fa5(0x16e)]||_0x38fa5(0x152));this[_0x38fa5(0x164)]=!0x1,_0x135885[_0x38fa5(0x17d)](_0x38fa5(0x1a7),_0x296f0d[_0x38fa5(0x183)]??_0x296f0d[_0x38fa5(0x19c)]),await this[_0x38fa5(0x1bc)]();}catch(_0x24c308){this[_0x38fa5(0x17e)]=_0x24c308?.[_0x38fa5(0x16e)]||String(_0x24c308);}finally{this[_0x38fa5(0x182)]=!0x1;}},async 'load'(){const _0x26c8ff=_0x4079a7;this[_0x26c8ff(0x19e)]=!0x0,this[_0x26c8ff(0x15f)]=null;try{const _0x1338a2=await fetch(this[_0x26c8ff(0x17b)]+_0x26c8ff(0x194)),_0xf00c77=await _0x1338a2[_0x26c8ff(0x17f)]();if(!_0x1338a2['ok'])throw new Error(_0xf00c77?.[_0x26c8ff(0x15f)]?.[_0x26c8ff(0x16e)]||_0x26c8ff(0x161));this[_0x26c8ff(0x171)]=_0xf00c77[_0x26c8ff(0x19c)];}catch(_0x2b4ac6){this[_0x26c8ff(0x15f)]=_0x2b4ac6?.[_0x26c8ff(0x16e)]||String(_0x2b4ac6),this[_0x26c8ff(0x171)]=null;}finally{this[_0x26c8ff(0x19e)]=!0x1;}},async 'snapshot'(){const _0x5d3fe1=_0x4079a7;if(await _0x135885[_0x5d3fe1(0x192)][_0x5d3fe1(0x1a1)][_0x5d3fe1(0x1b1)]['confirm']('Take\x20a\x20snapshot\x20now?')){this[_0x5d3fe1(0x158)]=!0x0,this[_0x5d3fe1(0x19d)]=null,this[_0x5d3fe1(0x1c2)]=null;try{const _0x34b9c3=await fetch(this[_0x5d3fe1(0x17b)]+_0x5d3fe1(0x1ae),{'method':_0x5d3fe1(0x197)}),_0x3c0f11=await _0x34b9c3[_0x5d3fe1(0x17f)]();if(!_0x34b9c3['ok'])throw new Error(_0x3c0f11?.[_0x5d3fe1(0x15f)]?.[_0x5d3fe1(0x16e)]||_0x5d3fe1(0x173));this[_0x5d3fe1(0x19d)]=_0x3c0f11[_0x5d3fe1(0x19c)]?.[_0x5d3fe1(0x16d)]?_0x5d3fe1(0x1ac):_0x5d3fe1(0x1ad),await this[_0x5d3fe1(0x1bc)]();}catch(_0xb204b7){this[_0x5d3fe1(0x1c2)]=_0xb204b7?.[_0x5d3fe1(0x16e)]||String(_0xb204b7);}finally{this[_0x5d3fe1(0x158)]=!0x1;}}},async 'rebuild'(){const _0x1a2056=_0x4079a7;if(await _0x135885['$ok']['shared'][_0x1a2056(0x1b1)][_0x1a2056(0x185)](_0x1a2056(0x1a2))){this[_0x1a2056(0x158)]=!0x0,this[_0x1a2056(0x19d)]=null,this[_0x1a2056(0x1c2)]=null;try{const _0x366c80=await fetch(this[_0x1a2056(0x17b)]+'/rebuild',{'method':_0x1a2056(0x197)}),_0x7353e6=await _0x366c80[_0x1a2056(0x17f)]();if(!_0x366c80['ok'])throw new Error(_0x7353e6?.[_0x1a2056(0x15f)]?.[_0x1a2056(0x16e)]||_0x1a2056(0x15c));this[_0x1a2056(0x19d)]=_0x1a2056(0x1b2),await this['load']();}catch(_0x2be225){this['actionError']=_0x2be225?.[_0x1a2056(0x16e)]||String(_0x2be225);}finally{this[_0x1a2056(0x158)]=!0x1;}}},async 'runQuery'(){const _0x3d972a=_0x4079a7,_0x2fcc87=String(this['queryText']||'')['trim']();if(_0x2fcc87){this[_0x3d972a(0x1b3)]=!0x0,this[_0x3d972a(0x1bb)]=null,this[_0x3d972a(0x1c1)]=null,this[_0x3d972a(0x154)]={},this[_0x3d972a(0x1aa)]={};try{const _0x3801b2=await fetch(this[_0x3d972a(0x17b)]+_0x3d972a(0x169),{'method':_0x3d972a(0x197),'headers':{'Content-Type':_0x3d972a(0x18d)},'body':JSON[_0x3d972a(0x174)]({'query':_0x2fcc87,'limit':Number(this[_0x3d972a(0x176)])||0xa})}),_0x2e1847=await _0x3801b2['json']();if(!_0x3801b2['ok'])throw new Error(_0x2e1847?.[_0x3d972a(0x15f)]?.[_0x3d972a(0x16e)]||'query\x20failed');this[_0x3d972a(0x1c1)]=_0x2e1847['data']||[];}catch(_0x1fa9e3){this['queryError']=_0x1fa9e3?.[_0x3d972a(0x16e)]||String(_0x1fa9e3);}finally{this[_0x3d972a(0x1b3)]=!0x1;}}},'scoreBar':_0x4122ff=>Math['round'](0x64*Math[_0x4079a7(0x17c)](0x1,Math[_0x4079a7(0x193)](0x0,_0x4122ff))),'scoreColor':_0x1b24b0=>_0x1b24b0>=0.8?'var(--okdb-success)':_0x1b24b0>=0.5?_0x4079a7(0x1c6):_0x4079a7(0x1a5),get 'isChunked'(){const _0x3ab457=_0x4079a7;return Array[_0x3ab457(0x151)](this[_0x3ab457(0x1c1)])&&this['queryResults'][_0x3ab457(0x159)](_0x2ec1cf=>_0x2ec1cf[_0x3ab457(0x1c3)]);},'fmtRange':_0x378c55=>_0x378c55?_0x4079a7(0x191)+_0x378c55[_0x4079a7(0x18c)]+'–'+_0x378c55['end']:'','autoFetch'(_0x285e40){const _0x364a25=_0x4079a7;return!this['sourceType']||this[_0x364a25(0x154)][_0x285e40['key']]||!!_0x285e40[_0x364a25(0x1c3)]?.[_0x364a25(0x1be)]||this[_0x364a25(0x172)](_0x285e40),null;},async 'fetchDoc'(_0x473c23){const _0x473754=_0x4079a7,_0x20deb8=this['sourceType'];if(!_0x20deb8)return;const _0x1bae33=_0x473c23[_0x473754(0x162)];this[_0x473754(0x154)][_0x1bae33]={'busy':!0x0,'value':void 0x0,'error':null};try{const _0xef7e33=this[_0x473754(0x189)][_0x473754(0x18a)]?.['source_env']??_0x473754(0x16b),_0x1a6d21=__ENV__['API']+_0x473754(0x15a)+encodeURIComponent(_0xef7e33),_0xd89c7a=await fetch(_0x1a6d21+'/type/'+encodeURIComponent(_0x20deb8)+_0x473754(0x18b)+encodeURIComponent(_0x1bae33)),_0x50cac5=await _0xd89c7a[_0x473754(0x17f)]();if(!_0xd89c7a['ok'])throw new Error(_0x50cac5?.['error']?.[_0x473754(0x16e)]||_0x473754(0x195));this[_0x473754(0x154)][_0x1bae33]={'busy':!0x1,'value':_0x50cac5[_0x473754(0x19c)]?.['value']??null,'error':null};}catch(_0x608ae7){this['docCache'][_0x1bae33]={'busy':!0x1,'value':void 0x0,'error':_0x608ae7?.[_0x473754(0x16e)]||String(_0x608ae7)};}},'toggleDocExpand'(_0x585a67){const _0x4bfe03=_0x4079a7,_0x13b02d=_0x585a67[_0x4bfe03(0x162)];this[_0x4bfe03(0x1aa)][_0x13b02d]=!this[_0x4bfe03(0x1aa)][_0x13b02d],this['docExpanded'][_0x13b02d]&&!this[_0x4bfe03(0x154)][_0x13b02d]&&this[_0x4bfe03(0x172)](_0x585a67);},'fmtDoc'(_0x5e3405){const _0x33228f=_0x4079a7;try{return JSON[_0x33228f(0x174)](_0x5e3405,null,0x2);}catch{return String(_0x5e3405);}},'getChunkText'(_0x3ea500){const _0x3deb24=_0x4079a7;if(_0x3ea500[_0x3deb24(0x1c3)]?.[_0x3deb24(0x1be)])return _0x3ea500['chunk']['text'];const _0x26e882=this[_0x3deb24(0x189)][_0x3deb24(0x18a)]?.['field'],_0x6fbb8a=this['docCache'][_0x3ea500[_0x3deb24(0x162)]];if(!_0x26e882||!_0x6fbb8a?.[_0x3deb24(0x178)]||!_0x3ea500[_0x3deb24(0x1c3)])return null;const _0xd6b4a1=_0x6fbb8a[_0x3deb24(0x178)][_0x26e882];return _0x3deb24(0x15e)!=typeof _0xd6b4a1?null:_0xd6b4a1[_0x3deb24(0x187)](_0x3ea500[_0x3deb24(0x1c3)][_0x3deb24(0x18c)],_0x3ea500['chunk']['end'])||null;},'splitHighlight'(_0xb834c3,_0x43675d){const _0x476edf=_0x4079a7;if(!_0x43675d||!_0xb834c3||_0x476edf(0x15e)!=typeof _0xb834c3)return null;const {start:_0xd018aa,end:_0x554692}=_0x43675d;if(_0x476edf(0x1b5)!=typeof _0xd018aa||_0x476edf(0x1b5)!=typeof _0x554692)return null;const _0x11d085=Math[_0x476edf(0x193)](0x0,_0xd018aa),_0x53c798=Math[_0x476edf(0x17c)](_0xb834c3[_0x476edf(0x181)],Math[_0x476edf(0x193)](_0x11d085,_0x554692));return _0x11d085>=_0x53c798?[{'text':_0xb834c3,'highlight':!0x1}]:[{'text':_0xb834c3['slice'](0x0,_0x11d085),'highlight':!0x1},{'text':_0xb834c3['slice'](_0x11d085,_0x53c798),'highlight':!0x0},{'text':_0xb834c3[_0x476edf(0x187)](_0x53c798),'highlight':!0x1}][_0x476edf(0x1a6)](_0x2a71df=>_0x2a71df[_0x476edf(0x1be)][_0x476edf(0x181)]>0x0);},async 'onRefresh'(){const _0x29fd5a=_0x4079a7;this[_0x29fd5a(0x1c1)]=null,this[_0x29fd5a(0x1aa)]={},await this[_0x29fd5a(0x1bc)]();},'viewPipeline'(){const _0x46887f=_0x4079a7;_0x7f3faa(_0x135885,this[_0x46887f(0x189)]);}}),async 'init'(_0x3713ce){const _0x15bf98=_0x4079a7;_0x3713ce[_0x15bf98(0x1c0)](()=>_0x3713ce[_0x15bf98(0x166)][_0x15bf98(0x157)],async()=>{const _0x3ae6ec=_0x15bf98;this[_0x3ae6ec(0x171)]=null,this[_0x3ae6ec(0x1c1)]=null,this[_0x3ae6ec(0x1aa)]={},await this[_0x3ae6ec(0x1bc)]();}),await this[_0x15bf98(0x1bc)]();const _0xe098b4=_0x3713ce[_0x15bf98(0x150)]??_0x3713ce[_0x15bf98(0x19f)]??null,_0x4694ce=setInterval(async()=>{const _0x45d953=_0x15bf98;if(!_0xe098b4||_0xe098b4[_0x45d953(0x156)]){if(!this[_0x45d953(0x19e)]&&!this['editBusy']&&!this['editMode'])try{await this[_0x45d953(0x1bc)]();}catch{}}else clearInterval(_0x4694ce);},0x1388);},'template':_0x4079a7(0x1b0),'style':a};
1
+ function _0x5304(_0x52975e,_0xaca0fc){_0x52975e=_0x52975e-0xfe;const _0x560746=_0x5607();let _0x53044f=_0x560746[_0x52975e];return _0x53044f;}const _0x214a29=_0x5304;(function(_0x46ac77,_0x5b5237){const _0x2ecd12=_0x5304,_0x4ca6cf=_0x46ac77();while(!![]){try{const _0x21525d=-parseInt(_0x2ecd12(0x139))/0x1*(parseInt(_0x2ecd12(0x164))/0x2)+parseInt(_0x2ecd12(0x15e))/0x3*(-parseInt(_0x2ecd12(0x13a))/0x4)+-parseInt(_0x2ecd12(0x144))/0x5*(-parseInt(_0x2ecd12(0x117))/0x6)+-parseInt(_0x2ecd12(0x165))/0x7+-parseInt(_0x2ecd12(0x127))/0x8*(parseInt(_0x2ecd12(0x114))/0x9)+-parseInt(_0x2ecd12(0x175))/0xa+-parseInt(_0x2ecd12(0x12c))/0xb*(-parseInt(_0x2ecd12(0x10b))/0xc);if(_0x21525d===_0x5b5237)break;else _0x4ca6cf['push'](_0x4ca6cf['shift']());}catch(_0x379589){_0x4ca6cf['push'](_0x4ca6cf['shift']());}}}(_0x5607,0xb2a6a));import _0x14bae5 from'@toolkit/elements/ok-table.ok.js';function _0x5607(){const _0x3ec04d=['fetchDoc','chunked\x20·\x20','push','query\x20failed','/env/','busy','$watch','Rebuild\x20complete.','6dKamzu','flat','filter','name','min','modal','2FqxSjg','1963360ooYXyF','embedder','source_type','keys','loadEditAlgorithms','queryBusy','sourceType','$attr','queryResults','API','fields','start','map','slice','engine-updated','embed-search-panel','13783280QyXXVB','\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:title=\x22name\x22\x0a\x20\x20type-label=\x22vector-search\x22\x0a\x20\x20type-color=\x22var(--okdb-accent)\x22\x0a\x20\x20:badges=\x22headerBadges\x22\x0a\x20\x20show-refresh=\x22true\x22\x0a\x20\x20fill=\x22true\x22\x0a\x20\x20:refresh-busy=\x22busy\x20||\x20queryBusy\x20||\x20actionBusy\x22\x0a\x20\x20:on-refresh=\x22()\x20=>\x20onRefresh()\x22\x0a\x20\x20:on-pipeline=\x22viewPipeline\x22\x0a\x20\x20@engine-updated=\x22$dispatch(\x27engine-updated\x27,\x20$event.detail)\x22\x0a\x20\x20@refresh=\x22$dispatch(\x27refresh\x27)\x22\x0a\x20\x20@deleted=\x22$dispatch(\x27deleted\x27,\x20$event.detail)\x22\x0a>\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x0a\x20\x20<if\x20:=\x22stats\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;min-width:0;flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pill-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Vector\x20search\x20algorithm.\x22>{{\x20s.algorithm\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Distance\x20metric.\x22>{{\x20metricValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Vector\x20dimensions.\x22>dims:\x20{{\x20dimsValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Backing\x20storage\x20key.\x22>store:\x20{{\x20storageKeyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22chunkStrategy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Chunking\x20strategy\x20used\x20by\x20the\x20indexer.\x22>chunk:\x20{{\x20chunkStrategy\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Query\x20the\x20live\x20vector\x20index\x20for\x20<strong>{{\x20storageKeyValue\x20}}</strong>\x20and\x20inspect\x20the\x20matched\x20source\x20chunks\x20below.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-note\x22>Use\x20text\x20search\x20here\x20to\x20validate\x20relevance\x20quickly.\x20Snapshot\x20and\x20rebuild\x20are\x20available\x20below\x20when\x20the\x20in-memory\x20index\x20needs\x20maintenance.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-grid\x20metric-grid--compact\x22\x20style=\x22min-width:min(100%,\x20360px);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Vectors</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22>{{\x20vectorCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Capacity</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22font-size:18px;\x22>{{\x20capacityValue\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22wm\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;justify-content:space-between;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Performance</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!wm.searchOps\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;opacity:.4;font-style:italic;\x22>Run\x20a\x20search\x20to\x20populate\x20latency\x20metrics.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Avg\x20latency</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20fmtMs(wm.searchLatencyAvgMs)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>p95\x20latency</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20fmtMs(wm.searchLatencyP95Ms)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Searches</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20wm.searchOps\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Queue\x20depth</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22>{{\x20wm.pendingOps\x20??\x200\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22wm.workerMemory\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>Heap\x20used</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22\x20style=\x22font-size:15px;\x22>{{\x20fmtBytes(wm.workerMemory.heapUsed)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-label\x22>RSS</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22perf-value\x22\x20style=\x22font-size:15px;\x22>{{\x20fmtBytes(wm.workerMemory.rss)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x20flex:1;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;gap:8px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Search\x20test</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Run\x20a\x20text\x20query\x20and\x20inspect\x20the\x20raw\x20chunk\x20hits\x20and\x20source\x20context.</span>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!hasEmbedder\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.55;\x20font-size:12px;\x20font-style:italic;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20No\x20embedder\x20configured\x20—\x20text\x20queries\x20unavailable.\x20Pass\x20a\x20Float32Array\x20via\x20the\x20API\x20directly.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Enter\x20text\x20query…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22queryText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22queryText\x20=\x20$el.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@keydown.enter=\x22runQuery\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!hasEmbedder\x20||\x20!eng.isRunning\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:72px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22queryLimit\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22queryLimit\x20=\x20Number($el.value)\x20||\x2010\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20max=\x22100\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Top-K\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22runQuery\x22\x20:disabled=\x22queryBusy\x20||\x20!queryText.trim()\x20||\x20!eng.isRunning\x20||\x20!hasEmbedder\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20queryBusy\x20?\x20\x27…\x27\x20:\x20\x27Search\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22queryError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20queryError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22queryResults\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22overflow:auto;\x20min-height:0;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22queryResults.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:13px;\x22>No\x20results.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x20:data=\x22queryResults\x22\x20no-scroll\x20style=\x22width:100%;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x2236px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>#</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>{{\x20queryResults.indexOf(row)\x20+\x201\x20}}</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Key</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20row.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22chunk-loc\x22\x20style=\x22margin-left:8px;\x22>{{\x20fmtRange(row.chunk)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22200px\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>Score</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20background:var(--okdb-app-border);\x20border-radius:4px;\x20height:6px;\x20overflow:hidden;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22\x27height:100%;\x20border-radius:4px;\x20background:\x27\x20+\x20scoreColor(row.score)\x20+\x20\x27;\x20width:\x27\x20+\x20scoreBar(row.score)\x20+\x20\x27%\x27\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.8;\x20min-width:42px;\x20text-align:right;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20(row.score\x20*\x20100).toFixed(1)\x20}}%\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px;\x20font-size:12px;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x22\x20:data-fetch=\x22autoFetch(row)\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Identity\x20line\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.6;\x20font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:10px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>key:\x20<strong\x20style=\x22color:#fff;\x20opacity:1;\x22>{{\x20row.key\x20}}</strong></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22sourceType\x22><span>type:\x20<strong\x20style=\x22color:var(--okdb-accent);\x22>{{\x20sourceType\x20}}</strong></span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22chunk-loc\x22>{{\x20fmtRange(row.chunk)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunkHash\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-family:monospace;\x20font-size:10px;\x22>{{\x20row.chunkHash\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20CHUNKED\x20RESULT\x20═══════════════════════════════════════════\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Tier\x201:\x20Matched\x20chunk\x20text\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:4px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Matched\x20chunk</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!row.chunk.text\x20&&\x20usesNonTrivialPrepare\x20&&\x20getChunkText(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-warning);\x20font-size:10px;\x22\x20title=\x22Chunk\x20offsets\x20are\x20into\x20the\x20prepared\x20text;\x20extraction\x20from\x20the\x20raw\x20field\x20may\x20be\x20approximate.\x22>⚠\x20approximate</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20storeText:\x20true\x20—\x20text\x20carried\x20in\x20the\x20result\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.chunk.text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22chunk-text\x22>{{\x20row.chunk.text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20storeText:\x20false\x20—\x20extract\x20from\x20loaded\x20source\x20doc\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!row.chunk.text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:11px;\x20padding:6px\x200;\x22>Loading\x20chunk…</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.busy\x20&&\x20getChunkText(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22chunk-text\x22>{{\x20getChunkText(row)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.busy\x20&&\x20!getChunkText(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:11px;\x20font-style:italic;\x20padding:4px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.error\x22>Source\x20doc\x20unavailable.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.error\x20&&\x20!sourceType\x22>No\x20source\x20type\x20—\x20cannot\x20look\x20up\x20chunk\x20text.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docCache[row.key]?.error\x20&&\x20sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Chunk\x20text\x20not\x20stored.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!eng.config?.field\x22>\x20No\x20field\x20configured.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.config?.field\x22>\x20Enable\x20<code>storeText:\x20true</code>\x20in\x20the\x20pipeline\x20to\x20store\x20it.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Tier\x202:\x20\x22View\x20in\x20context\x20of\x20source\x22\x20collapsible\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22doc-toggle\x22\x20@click=\x22toggleDocExpand(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docExpanded[row.key]\x22>▲\x20hide\x20source\x20context</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!docExpanded[row.key]\x22>▼\x20view\x20in\x20context\x20of\x20source</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docExpanded[row.key]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:8px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:11px;\x22>Loading\x20source…</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x22>{{\x20docCache[row.key].error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.value\x20!==\x20undefined\x20&&\x20!docCache[row.key]?.error\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Field\x20known\x20+\x20value\x20present\x20→\x20show\x20highlighted\x20field\x20text\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22eng.config?.field\x20&&\x20docCache[row.key].value?.[eng.config.field]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Field\x20<strong\x20style=\x22color:#fff;\x20opacity:.9;\x22>{{\x20eng.config.field\x20}}</strong>\x20—\x20matched\x20range\x20highlighted\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22usesNonTrivialPrepare\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-warning);\x22\x20title=\x22The\x20pipeline\x20uses\x20prepare:\x27{{\x20stats.indexer.prepare\x20}}\x27.\x20Chunk\x20offsets\x20are\x20into\x20the\x20prepared\x20text,\x20so\x20the\x20highlight\x20position\x20in\x20the\x20raw\x20field\x20is\x20approximate.\x22>\x20⚠\x20approximate\x20(prepare:\x20{{\x20stats.indexer.prepare\x20}})</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22chunk-text\x20chunk-text--ctx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22splitHighlight(String(docCache[row.key].value[eng.config.field]\x20??\x20\x27\x27),\x20row.chunk)\x22\x20let:item=\x22seg\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22seg.highlight\x20?\x20\x27chunk-hl\x27\x20:\x20\x27\x27\x22>{{\x20seg.text\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20No\x20field\x20or\x20field\x20value\x20missing\x20→\x20fall\x20back\x20to\x20full\x20doc\x20JSON\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!(eng.config?.field\x20&&\x20docCache[row.key].value?.[eng.config.field])\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-all;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:300px;\x20overflow:auto;\x20color:#a5f3fc;\x22>{{\x20fmtDoc(docCache[row.key].value)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:11px;\x22>No\x20source\x20type\x20linked\x20—\x20cannot\x20load\x20source\x20document.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20END\x20CHUNKED\x20══════════════════════════════════════════════\x20-->\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20NON-CHUNKED\x20RESULT:\x20show\x20source\x20doc\x20directly\x20(unchanged)\x20═\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!row.chunk\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:11px;\x22>Loading…</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20margin-top:4px;\x22>{{\x20docCache[row.key].error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22docCache[row.key]?.value\x20!==\x20undefined\x20&&\x20!docCache[row.key]?.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20style=\x22margin:0;\x20white-space:pre-wrap;\x20word-break:break-all;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:220px;\x20overflow:auto;\x20color:#a5f3fc;\x22>{{\x20fmtDoc(docCache[row.key].value)\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!sourceType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:11px;\x22>No\x20source\x20type\x20linked\x20—\x20cannot\x20look\x20up\x20original\x20document.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20═══\x20END\x20NON-CHUNKED\x20══════════════════════════════════════════\x20-->\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;justify-content:space-between;gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Index\x20details</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!editMode\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20style=\x22font-size:12px;padding:3px\x2010px;\x22\x20@click=\x22openEditConfig\x22\x20:disabled=\x22!eng.isRunning\x20&&\x20!eng.config\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Edit\x20config\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!editMode\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x20kv-grid--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>algorithm</span><span\x20class=\x22kv-val\x22>{{\x20s.algorithm\x20||\x20eng.config?.algorithm\x20||\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>metric</span><span\x20class=\x22kv-val\x22>{{\x20metricValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>dims</span><span\x20class=\x22kv-val\x22>{{\x20dimsValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>storage\x20key</span><span\x20class=\x22kv-val\x22>{{\x20storageKeyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.role\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>role</span><span\x20class=\x22kv-val\x22>{{\x20s.role\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.M\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>M</span><span\x20class=\x22kv-val\x22>{{\x20s.M\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>efConstruction</span><span\x20class=\x22kv-val\x22>{{\x20s.efConstruction\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>efSearch</span><span\x20class=\x22kv-val\x22>{{\x20s.efSearch\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.connectivity\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>connectivity</span><span\x20class=\x22kv-val\x22>{{\x20s.connectivity\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>expansion\x20search</span><span\x20class=\x22kv-val\x22>{{\x20s.expansionSearch\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.changesSince\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>changes\x20since\x20snap</span><span\x20class=\x22kv-val\x22>{{\x20s.changesSince\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22s.latestSnapshot\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>last\x20snapshot</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-val\x22\x20style=\x22font-size:11px;\x20word-break:break-all;\x22>{{\x20s.latestSnapshot\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22editMode\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-form\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-note\x22>Saving\x20will\x20restart\x20the\x20engine\x20to\x20apply\x20the\x20new\x20algorithm.\x20stats_data\x20and\x20storage\x20remain\x20intact.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-label\x22>Algorithm</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22editAlgorithm\x22\x20@change=\x22onEditAlgorithmChange($el.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22editAlgorithms\x22\x20let:item=\x22alg\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22alg.key\x22\x20:selected=\x22alg.key\x20===\x20editAlgorithm\x22>{{\x20alg.label\x20||\x20alg.key\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22editAlgorithmNote\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-hint\x22>{{\x20editAlgorithmNote\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22editAlgorithmFields\x22\x20let:item=\x22field\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22edit-label\x22>{{\x20field.label\x20||\x20field.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22field.type\x20===\x20\x27select\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22editAlgConfig[field.key]\x22\x20@change=\x22editAlgConfig\x20=\x20{\x20...editAlgConfig,\x20[field.key]:\x20$el.value\x20}\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22field.options\x22\x20let:item=\x22opt\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22opt.value\x22\x20:selected=\x22opt.value\x20===\x20editAlgConfig[field.key]\x22>{{\x20opt.label\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22field.type\x20!==\x20\x27select\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22field.type\x20===\x20\x27number\x27\x20?\x20\x27number\x27\x20:\x20\x27text\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22editAlgConfig[field.key]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22editAlgConfig\x20=\x20{\x20...editAlgConfig,\x20[field.key]:\x20$el.value\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:placeholder=\x22field.placeholder\x20??\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:min=\x22field.min\x20??\x20undefined\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22field.hint\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22edit-hint\x22>{{\x20field.hint\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22editError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);font-size:13px;\x22>{{\x20editError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;gap:8px;margin-top:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22saveConfig\x22\x20:disabled=\x22editBusy\x22>{{\x20editBusy\x20?\x20\x27Saving…\x27\x20:\x20\x27Save\x20&\x20restart\x27\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22closeEditConfig\x22\x20:disabled=\x22editBusy\x22\x20style=\x22opacity:.7;\x22>Cancel</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Maintenance</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:10px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22snapshot\x22\x20:disabled=\x22actionBusy\x20||\x20!eng.isRunning\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionBusy\x20?\x20\x27…\x27\x20:\x20\x27Snapshot\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuild\x22\x20:disabled=\x22actionBusy\x20||\x20!eng.isRunning\x22\x20style=\x22color:var(--okdb-warning);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionBusy\x20?\x20\x27…\x27\x20:\x20\x27Rebuild\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Snapshot\x20current\x20state\x20for\x20faster\x20reloads,\x20or\x20rebuild\x20when\x20the\x20in-memory\x20index\x20drifts\x20from\x20storage.</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<if\x20:=\x22actionResult\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-success);\x20font-size:13px;\x22>{{\x20actionResult\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22actionError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:13px;\x22>{{\x20actionError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','editAlgorithms','editAlgorithmFields','POST','metric','PATCH','editMode','fromEntries','var(--okdb-purple)','engine','queryText','$dispatch','strategy','type','/item/','<1ms','trim','12mJtdlX','algorithm_config','search','stats','maxElements','var(--okdb-danger)','_pipelineUrl','_buildEditAlgConfig','var(--okdb-warning)','9eoReMX','snapshot\x20failed','field','3537582ACGeEO','docCache','$ok','editAlgConfig','$el','note','message','application/json','source_env','var(--okdb-orange)','_seedEditAlgConfig','editAlgorithm','key','toFixed','confirm','text','257144cmtQFe','/snapshot','not\x20found','queryLimit','editBusy','36472117DtBmrg','shared','\x0a\x20\x20.kv-grid\x20{\x20grid-template-columns:160px\x201fr;\x20}\x0a\x20\x20.chunk-loc\x20\x20{\x20font-size:11px;\x20color:var(--okdb-orange);\x20opacity:.9;\x20white-space:nowrap;\x20}\x0a\x20\x20.chunk-text\x20{\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:160px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x20}\x0a\x20\x20.chunk-text--ctx\x20{\x20max-height:300px;\x20}\x0a\x20\x20.chunk-hl\x20\x20\x20{\x20background:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2013%,\x20transparent);\x20border-bottom:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-orange)\x2053%,\x20transparent);\x20color:#fed7aa;\x20}\x0a\x20\x20.doc-toggle\x20{\x20font-size:11px;\x20color:var(--okdb-accent);\x20cursor:pointer;\x20opacity:.75;\x20background:none;\x20border:none;\x20padding:0;\x20}\x0a\x20\x20.doc-toggle:hover\x20{\x20opacity:1;\x20}\x0a\x20\x20.approx-note\x20{\x20font-size:10px;\x20opacity:.45;\x20margin-top:3px;\x20}\x0a\x20\x20.perf-grid\x20{\x20display:grid;\x20grid-template-columns:repeat(auto-fill,minmax(110px,1fr));\x20gap:8px;\x20}\x0a\x20\x20.perf-cell\x20{\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:8px;\x20padding:8px\x2010px;\x20}\x0a\x20\x20.perf-label\x20{\x20font-size:10px;\x20opacity:.5;\x20text-transform:uppercase;\x20letter-spacing:.05em;\x20margin-bottom:4px;\x20}\x0a\x20\x20.perf-value\x20{\x20font-size:18px;\x20font-weight:600;\x20color:var(--okdb-accent);\x20}\x0a\x20\x20.perf-unit\x20\x20{\x20font-size:11px;\x20opacity:.55;\x20margin-left:2px;\x20}\x0a\x20\x20.edit-form\x20\x20{\x20display:grid;\x20grid-template-columns:140px\x201fr;\x20gap:8px\x2012px;\x20align-items:start;\x20font-size:13px;\x20}\x0a\x20\x20.edit-form\x20select,\x20.edit-form\x20input\x20{\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:6px\x208px;\x20color:inherit;\x20font-size:13px;\x20width:100%;\x20box-sizing:border-box;\x20}\x0a\x20\x20.edit-form\x20select:focus,\x20.edit-form\x20input:focus\x20{\x20outline:none;\x20border-color:var(--okdb-accent);\x20}\x0a\x20\x20.edit-label\x20{\x20opacity:.65;\x20text-align:right;\x20padding-top:7px;\x20}\x0a\x20\x20.edit-hint\x20\x20{\x20font-size:11px;\x20opacity:.4;\x20font-style:italic;\x20margin-top:2px;\x20grid-column:2;\x20}\x0a\x20\x20.edit-note\x20\x20{\x20font-size:12px;\x20opacity:.55;\x20background:color-mix(in\x20srgb,\x20var(--okdb-warning)\x208%,\x20transparent);\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-warning)\x2025%,\x20transparent);\x20border-radius:6px;\x20padding:7px\x2010px;\x20grid-column:1/-1;\x20}\x0a','/rebuild','length','algorithm','error','var(--okdb-success)','actionError','editAlgorithmMap','docExpanded','json','eng','717393HAkwTl','1530292KPoFLT','isConnected','config','round','max','load','value','data','workerMetrics','chunk','5ERMRZF','actionBusy','isArray','actionResult','number','end','/query','queryError','default','count','\x20GB','result','\x20KB','rebuild\x20failed','Take\x20a\x20snapshot\x20now?','save\x20failed','/embeddings/engines/','editError'];_0x5607=function(){return _0x3ec04d;};return _0x5607();}import _0x81180e from'../../engines/parts/engine-panel-shell.ok.js';import{ENGINE_PANEL_SHARED_STYLE as _0x3bc99f}from'../../engines/engine-panel-shared-style.js';import{buildEmbeddingsPipelineUrl as _0x2bc020,dispatchEnginePipelineSelection as _0x149b46}from'../../engines/engine-ui-utils.js';const a=_0x3bc99f+_0x214a29(0x12e);export default{'tag':_0x214a29(0x174),'dependencies':[_0x14bae5,_0x81180e],'attr':{'name':{},'engine':{}},'context':_0x557513=>({'busy':!0x1,'stats':null,'error':null,'actionBusy':!0x1,'actionResult':null,'actionError':null,'queryText':'','queryLimit':0xa,'queryResults':null,'queryBusy':!0x1,'queryError':null,'docCache':{},'docExpanded':{},'editMode':!0x1,'editBusy':!0x1,'editError':null,'editAlgorithm':null,'editAlgConfig':{},'editAlgorithms':[],'editAlgorithmMap':{},get 'eng'(){const _0xe60470=_0x214a29;return _0x557513[_0xe60470(0x16c)][_0xe60470(0x103)]??{};},get 'name'(){const _0x4ff706=_0x214a29;return _0x557513['$attr'][_0x4ff706(0x161)];},get '_pipelineUrl'(){const _0x5db0aa=_0x214a29;return _0x2bc020(this[_0x5db0aa(0x138)],this['name']);},get 's'(){const _0x5bbd8f=_0x214a29;return this[_0x5bbd8f(0x10e)]?.[_0x5bbd8f(0x10d)]??this[_0x5bbd8f(0x10e)]??{};},get 'hasEmbedder'(){const _0x44f4b3=_0x214a29;return!!this[_0x44f4b3(0x138)][_0x44f4b3(0x13c)]?.[_0x44f4b3(0x166)];},get 'sourceType'(){const _0x297188=_0x214a29;return this[_0x297188(0x10e)]?.['type']??this['s']?.[_0x297188(0x167)]??this['eng'][_0x297188(0x13c)]?.[_0x297188(0x167)]??null;},get 'vectorCount'(){const _0x11f3d0=_0x214a29;return this['s'][_0x11f3d0(0x14d)]??0x0;},get 'capacityValue'(){const _0x444043=_0x214a29;return this['s'][_0x444043(0x10f)]??'∞';},get 'dimsValue'(){return this['s']['dims']??'—';},get 'metricValue'(){const _0x1e314d=_0x214a29;return this['s'][_0x1e314d(0xfe)]||'—';},get 'storageKeyValue'(){return this['s']['storage_key']||'—';},get 'chunkStrategy'(){const _0x72a44=_0x214a29;return this['s'][_0x72a44(0x143)]?.[_0x72a44(0x106)]||null;},get 'wm'(){const _0x3aad1d=_0x214a29;return this['s'][_0x3aad1d(0x142)]??null;},get 'headerBadges'(){const _0x1d4da0=_0x214a29,_0x1c6d36=[];return this['s'][_0x1d4da0(0x131)]&&_0x1c6d36[_0x1d4da0(0x158)]({'text':this['s']['algorithm'],'color':_0x1d4da0(0x102)}),this['s'][_0x1d4da0(0x143)]&&_0x1c6d36['push']({'text':_0x1d4da0(0x157)+this['s'][_0x1d4da0(0x143)][_0x1d4da0(0x106)],'color':_0x1d4da0(0x120)}),_0x1c6d36;},get 'usesNonTrivialPrepare'(){const _0x443a10=_0x214a29,_0x50ec5f=this[_0x443a10(0x10e)]?.['indexer']?.['prepare'];return!!_0x50ec5f&&'none'!==_0x50ec5f;},'fmtBytes':_0xb1bad6=>null==_0xb1bad6?'—':_0xb1bad6>=0x40000000?(_0xb1bad6/0x40000000)[_0x214a29(0x124)](0x1)+_0x214a29(0x14e):_0xb1bad6>=0x100000?(_0xb1bad6/0x100000)[_0x214a29(0x124)](0x1)+'\x20MB':_0xb1bad6>=0x400?(_0xb1bad6/0x400)[_0x214a29(0x124)](0x0)+_0x214a29(0x150):_0xb1bad6+'\x20B','fmtMs':_0x31dd51=>null==_0x31dd51?'—':_0x31dd51<0x1?_0x214a29(0x109):_0x31dd51+'ms',async 'loadEditAlgorithms'(){const _0x3d46ac=_0x214a29;if(!this[_0x3d46ac(0x177)][_0x3d46ac(0x130)])try{const _0x6bfad9=await fetch(__ENV__['API']+'/embeddings/algorithms'),_0x2aa448=await _0x6bfad9[_0x3d46ac(0x137)]();this[_0x3d46ac(0x177)]=_0x2aa448[_0x3d46ac(0x141)]||[],this[_0x3d46ac(0x135)]=Object[_0x3d46ac(0x101)](this[_0x3d46ac(0x177)][_0x3d46ac(0x171)](_0x12409e=>[_0x12409e[_0x3d46ac(0x123)],_0x12409e]));}catch{this['editAlgorithms']=[];}},get 'editAlgorithmFields'(){const _0x1a837e=_0x214a29;return this[_0x1a837e(0x135)][this['editAlgorithm']]?.[_0x1a837e(0x16f)]??[];},get 'editAlgorithmNote'(){const _0x1bfa53=_0x214a29;return this['editAlgorithmMap'][this[_0x1bfa53(0x122)]]?.[_0x1bfa53(0x11c)]??null;},async 'openEditConfig'(){const _0x1221e8=_0x214a29;await this[_0x1221e8(0x169)]();const _0x50b9ae=this[_0x1221e8(0x138)][_0x1221e8(0x13c)]??{};this[_0x1221e8(0x122)]=_0x50b9ae[_0x1221e8(0x131)]??_0x1221e8(0x15f),this[_0x1221e8(0x121)](this[_0x1221e8(0x122)],_0x50b9ae[_0x1221e8(0x10c)]??{}),this['editMode']=!0x0,this[_0x1221e8(0x155)]=null;},'closeEditConfig'(){const _0x482047=_0x214a29;this[_0x482047(0x100)]=!0x1,this[_0x482047(0x155)]=null;},'_seedEditAlgConfig'(_0x1cf2d5,_0xb304dd={}){const _0x136eeb=_0x214a29,_0x548c73=this[_0x136eeb(0x135)][_0x1cf2d5]?.[_0x136eeb(0x16f)]??[],_0x22107e={};for(const _0x567052 of _0x548c73)_0x22107e[_0x567052['key']]=_0xb304dd[_0x567052['key']]??_0x567052[_0x136eeb(0x14c)]??'';this[_0x136eeb(0x11a)]=_0x22107e;},'onEditAlgorithmChange'(_0x51221a){const _0x3efda7=_0x214a29;this['editAlgorithm']=_0x51221a;const _0x2f459e=this[_0x3efda7(0x138)][_0x3efda7(0x13c)]?.[_0x3efda7(0x131)]===_0x51221a?this['eng'][_0x3efda7(0x13c)]?.[_0x3efda7(0x10c)]??{}:{};this['_seedEditAlgConfig'](_0x51221a,_0x2f459e);},'_buildEditAlgConfig'(){const _0x2857d1=_0x214a29,_0x1d956e={};for(const _0x471423 of this[_0x2857d1(0x178)]){const _0x1030ff=this['editAlgConfig'][_0x471423[_0x2857d1(0x123)]];''!==_0x1030ff&&null!=_0x1030ff&&(_0x1d956e[_0x471423[_0x2857d1(0x123)]]=_0x2857d1(0x148)===_0x471423[_0x2857d1(0x107)]?Number(_0x1030ff):_0x1030ff);}return Object[_0x2857d1(0x168)](_0x1d956e)[_0x2857d1(0x130)]>0x0?_0x1d956e:void 0x0;},async 'saveConfig'(){const _0x1a4dce=_0x214a29;this[_0x1a4dce(0x12b)]=!0x0,this[_0x1a4dce(0x155)]=null;try{const _0x3b9189=this[_0x1a4dce(0x112)](),_0x665ec3={'algorithm':this[_0x1a4dce(0x122)]};_0x3b9189?_0x665ec3['algorithm_config']=_0x3b9189:delete _0x665ec3['algorithm_config'];const _0xba15cf=await fetch(__ENV__[_0x1a4dce(0x16e)]+_0x1a4dce(0x154)+encodeURIComponent(this[_0x1a4dce(0x138)][_0x1a4dce(0x123)]),{'method':_0x1a4dce(0xff),'headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'config':_0x665ec3})}),_0x4d0c18=await _0xba15cf[_0x1a4dce(0x137)]();if(!_0xba15cf['ok'])throw new Error(_0x4d0c18?.['error']?.[_0x1a4dce(0x11d)]||_0x1a4dce(0x153));this[_0x1a4dce(0x100)]=!0x1,_0x557513[_0x1a4dce(0x105)](_0x1a4dce(0x173),_0x4d0c18[_0x1a4dce(0x14f)]??_0x4d0c18[_0x1a4dce(0x141)]),await this[_0x1a4dce(0x13f)]();}catch(_0x562ad5){this[_0x1a4dce(0x155)]=_0x562ad5?.[_0x1a4dce(0x11d)]||String(_0x562ad5);}finally{this[_0x1a4dce(0x12b)]=!0x1;}},async 'load'(){const _0x3cd1e2=_0x214a29;this['busy']=!0x0,this[_0x3cd1e2(0x132)]=null;try{const _0x1c8793=await fetch(this[_0x3cd1e2(0x111)]+'/stats'),_0x1bf98d=await _0x1c8793[_0x3cd1e2(0x137)]();if(!_0x1c8793['ok'])throw new Error(_0x1bf98d?.[_0x3cd1e2(0x132)]?.[_0x3cd1e2(0x11d)]||'failed');this[_0x3cd1e2(0x10e)]=_0x1bf98d[_0x3cd1e2(0x141)];}catch(_0x4d620a){this[_0x3cd1e2(0x132)]=_0x4d620a?.[_0x3cd1e2(0x11d)]||String(_0x4d620a),this[_0x3cd1e2(0x10e)]=null;}finally{this[_0x3cd1e2(0x15b)]=!0x1;}},async 'snapshot'(){const _0x3a46d6=_0x214a29;if(await _0x557513[_0x3a46d6(0x119)][_0x3a46d6(0x12d)]['modal']['confirm'](_0x3a46d6(0x152))){this[_0x3a46d6(0x145)]=!0x0,this[_0x3a46d6(0x147)]=null,this[_0x3a46d6(0x134)]=null;try{const _0x7c60ec=await fetch(this[_0x3a46d6(0x111)]+_0x3a46d6(0x128),{'method':_0x3a46d6(0x179)}),_0x51d71b=await _0x7c60ec[_0x3a46d6(0x137)]();if(!_0x7c60ec['ok'])throw new Error(_0x51d71b?.[_0x3a46d6(0x132)]?.[_0x3a46d6(0x11d)]||_0x3a46d6(0x115));this['actionResult']=_0x51d71b['data']?.['snapped']?'Snapshot\x20published.':'No\x20snapshot\x20needed\x20(up\x20to\x20date).',await this['load']();}catch(_0x31cf78){this['actionError']=_0x31cf78?.[_0x3a46d6(0x11d)]||String(_0x31cf78);}finally{this[_0x3a46d6(0x145)]=!0x1;}}},async 'rebuild'(){const _0x5f26d1=_0x214a29;if(await _0x557513[_0x5f26d1(0x119)][_0x5f26d1(0x12d)][_0x5f26d1(0x163)][_0x5f26d1(0x125)]('Rebuild\x20the\x20full\x20index\x20from\x20storage?\x20This\x20may\x20take\x20a\x20while.')){this[_0x5f26d1(0x145)]=!0x0,this['actionResult']=null,this[_0x5f26d1(0x134)]=null;try{const _0x1fb1dd=await fetch(this[_0x5f26d1(0x111)]+_0x5f26d1(0x12f),{'method':_0x5f26d1(0x179)}),_0x3d8887=await _0x1fb1dd[_0x5f26d1(0x137)]();if(!_0x1fb1dd['ok'])throw new Error(_0x3d8887?.[_0x5f26d1(0x132)]?.[_0x5f26d1(0x11d)]||_0x5f26d1(0x151));this[_0x5f26d1(0x147)]=_0x5f26d1(0x15d),await this[_0x5f26d1(0x13f)]();}catch(_0x53c3bc){this[_0x5f26d1(0x134)]=_0x53c3bc?.[_0x5f26d1(0x11d)]||String(_0x53c3bc);}finally{this[_0x5f26d1(0x145)]=!0x1;}}},async 'runQuery'(){const _0x320e74=_0x214a29,_0x63534c=String(this[_0x320e74(0x104)]||'')[_0x320e74(0x10a)]();if(_0x63534c){this[_0x320e74(0x16a)]=!0x0,this['queryError']=null,this[_0x320e74(0x16d)]=null,this[_0x320e74(0x118)]={},this['docExpanded']={};try{const _0x3ed619=await fetch(this[_0x320e74(0x111)]+_0x320e74(0x14a),{'method':'POST','headers':{'Content-Type':_0x320e74(0x11e)},'body':JSON['stringify']({'query':_0x63534c,'limit':Number(this[_0x320e74(0x12a)])||0xa})}),_0x20a4e8=await _0x3ed619['json']();if(!_0x3ed619['ok'])throw new Error(_0x20a4e8?.[_0x320e74(0x132)]?.[_0x320e74(0x11d)]||_0x320e74(0x159));this[_0x320e74(0x16d)]=_0x20a4e8['data']||[];}catch(_0x56ddc8){this[_0x320e74(0x14b)]=_0x56ddc8?.[_0x320e74(0x11d)]||String(_0x56ddc8);}finally{this[_0x320e74(0x16a)]=!0x1;}}},'scoreBar':_0x4f28f3=>Math[_0x214a29(0x13d)](0x64*Math[_0x214a29(0x162)](0x1,Math[_0x214a29(0x13e)](0x0,_0x4f28f3))),'scoreColor':_0x3b784b=>_0x3b784b>=0.8?_0x214a29(0x133):_0x3b784b>=0.5?_0x214a29(0x113):_0x214a29(0x110),get 'isChunked'(){const _0x62bf5a=_0x214a29;return Array[_0x62bf5a(0x146)](this[_0x62bf5a(0x16d)])&&this['queryResults']['some'](_0x2f0008=>_0x2f0008[_0x62bf5a(0x143)]);},'fmtRange':_0x27ff18=>_0x27ff18?'chars\x20'+_0x27ff18[_0x214a29(0x170)]+'–'+_0x27ff18[_0x214a29(0x149)]:'','autoFetch'(_0xff5d4b){const _0x40fa2f=_0x214a29;return!this['sourceType']||this['docCache'][_0xff5d4b[_0x40fa2f(0x123)]]||!!_0xff5d4b['chunk']?.['text']||this[_0x40fa2f(0x156)](_0xff5d4b),null;},async 'fetchDoc'(_0x2c8bba){const _0x7bff10=_0x214a29,_0x55afff=this[_0x7bff10(0x16b)];if(!_0x55afff)return;const _0x372c0d=_0x2c8bba[_0x7bff10(0x123)];this[_0x7bff10(0x118)][_0x372c0d]={'busy':!0x0,'value':void 0x0,'error':null};try{const _0x42ca20=this[_0x7bff10(0x138)]['config']?.[_0x7bff10(0x11f)]??'default',_0x5b5b02=__ENV__[_0x7bff10(0x16e)]+_0x7bff10(0x15a)+encodeURIComponent(_0x42ca20),_0x19f2e5=await fetch(_0x5b5b02+'/type/'+encodeURIComponent(_0x55afff)+_0x7bff10(0x108)+encodeURIComponent(_0x372c0d)),_0x35d206=await _0x19f2e5['json']();if(!_0x19f2e5['ok'])throw new Error(_0x35d206?.[_0x7bff10(0x132)]?.[_0x7bff10(0x11d)]||_0x7bff10(0x129));this['docCache'][_0x372c0d]={'busy':!0x1,'value':_0x35d206[_0x7bff10(0x141)]?.[_0x7bff10(0x140)]??null,'error':null};}catch(_0x18ef18){this[_0x7bff10(0x118)][_0x372c0d]={'busy':!0x1,'value':void 0x0,'error':_0x18ef18?.[_0x7bff10(0x11d)]||String(_0x18ef18)};}},'toggleDocExpand'(_0x377ade){const _0x47cc1f=_0x214a29,_0x450077=_0x377ade[_0x47cc1f(0x123)];this['docExpanded'][_0x450077]=!this['docExpanded'][_0x450077],this[_0x47cc1f(0x136)][_0x450077]&&!this[_0x47cc1f(0x118)][_0x450077]&&this['fetchDoc'](_0x377ade);},'fmtDoc'(_0x4cb1ce){try{return JSON['stringify'](_0x4cb1ce,null,0x2);}catch{return String(_0x4cb1ce);}},'getChunkText'(_0x2e2ea8){const _0x35a7c4=_0x214a29;if(_0x2e2ea8['chunk']?.['text'])return _0x2e2ea8['chunk'][_0x35a7c4(0x126)];const _0x67eb34=this[_0x35a7c4(0x138)]['config']?.[_0x35a7c4(0x116)],_0x2437c6=this[_0x35a7c4(0x118)][_0x2e2ea8[_0x35a7c4(0x123)]];if(!_0x67eb34||!_0x2437c6?.[_0x35a7c4(0x140)]||!_0x2e2ea8['chunk'])return null;const _0x1387e5=_0x2437c6[_0x35a7c4(0x140)][_0x67eb34];return'string'!=typeof _0x1387e5?null:_0x1387e5[_0x35a7c4(0x172)](_0x2e2ea8[_0x35a7c4(0x143)][_0x35a7c4(0x170)],_0x2e2ea8['chunk'][_0x35a7c4(0x149)])||null;},'splitHighlight'(_0xe877a4,_0x141f37){const _0x2a6f96=_0x214a29;if(!_0x141f37||!_0xe877a4||'string'!=typeof _0xe877a4)return null;const {start:_0x371d04,end:_0x2cfca0}=_0x141f37;if('number'!=typeof _0x371d04||_0x2a6f96(0x148)!=typeof _0x2cfca0)return null;const _0x195e29=Math[_0x2a6f96(0x13e)](0x0,_0x371d04),_0x1c4f3a=Math['min'](_0xe877a4[_0x2a6f96(0x130)],Math[_0x2a6f96(0x13e)](_0x195e29,_0x2cfca0));return _0x195e29>=_0x1c4f3a?[{'text':_0xe877a4,'highlight':!0x1}]:[{'text':_0xe877a4[_0x2a6f96(0x172)](0x0,_0x195e29),'highlight':!0x1},{'text':_0xe877a4[_0x2a6f96(0x172)](_0x195e29,_0x1c4f3a),'highlight':!0x0},{'text':_0xe877a4['slice'](_0x1c4f3a),'highlight':!0x1}][_0x2a6f96(0x160)](_0x5686c6=>_0x5686c6[_0x2a6f96(0x126)][_0x2a6f96(0x130)]>0x0);},async 'onRefresh'(){const _0x4e832f=_0x214a29;this[_0x4e832f(0x16d)]=null,this[_0x4e832f(0x136)]={},await this['load']();},'viewPipeline'(){const _0x157fb5=_0x214a29;_0x149b46(_0x557513,this[_0x157fb5(0x138)]);}}),async 'init'(_0x3bc72e){const _0x3c6514=_0x214a29;_0x3bc72e[_0x3c6514(0x15c)](()=>_0x3bc72e[_0x3c6514(0x16c)][_0x3c6514(0x161)],async()=>{const _0x1a3f05=_0x3c6514;this[_0x1a3f05(0x10e)]=null,this[_0x1a3f05(0x16d)]=null,this[_0x1a3f05(0x136)]={},await this[_0x1a3f05(0x13f)]();}),await this[_0x3c6514(0x13f)]();const _0x1321f9=_0x3bc72e[_0x3c6514(0x11b)]??_0x3bc72e['$host']??null,_0x555dde=setInterval(async()=>{const _0x562c86=_0x3c6514;if(!_0x1321f9||_0x1321f9[_0x562c86(0x13b)]){if(!this['busy']&&!this[_0x562c86(0x12b)]&&!this[_0x562c86(0x100)])try{await this['load']();}catch{}}else clearInterval(_0x555dde);},0x1388);},'template':_0x214a29(0x176),'style':a};
@@ -1 +1 @@
1
- const _0x12ea1d=_0x325a;(function(_0x537a0d,_0x55d051){const _0x26bc79=_0x325a,_0x540986=_0x537a0d();while(!![]){try{const _0x54bdad=-parseInt(_0x26bc79(0x14e))/0x1*(parseInt(_0x26bc79(0x154))/0x2)+-parseInt(_0x26bc79(0x144))/0x3*(parseInt(_0x26bc79(0x12b))/0x4)+parseInt(_0x26bc79(0x137))/0x5+parseInt(_0x26bc79(0x145))/0x6+parseInt(_0x26bc79(0x13b))/0x7+parseInt(_0x26bc79(0x14f))/0x8*(-parseInt(_0x26bc79(0x152))/0x9)+parseInt(_0x26bc79(0x143))/0xa;if(_0x54bdad===_0x55d051)break;else _0x540986['push'](_0x540986['shift']());}catch(_0x1236ca){_0x540986['push'](_0x540986['shift']());}}}(_0x88e9,0x2959c));import _0x5672f0 from'../../engines/parts/engine-panel-shell.ok.js';import{ENGINE_PANEL_SHARED_STYLE as _0xd6727a}from'../../engines/engine-panel-shared-style.js';function _0x325a(_0x2e1862,_0x16d620){_0x2e1862=_0x2e1862-0x125;const _0x88e90a=_0x88e9();let _0x325ac8=_0x88e90a[_0x2e1862];return _0x325ac8;}import{dispatchEnginePipelineSelection as _0x4495c5}from'../../engines/engine-ui-utils.js';const s=_0xd6727a;function _0x88e9(){const _0x241471=['engine','application/json','/embeddings/indexers/','processed','330007XVvgYF','24kVjTfT','Cannot\x20determine\x20job_type\x20or\x20indexer\x20name','json','593091zOEXIv','/embeddings/workers/','2dmysvy','concurrency','data','embedder','Retry\x20all\x20failed\x20queue\x20jobs\x20for\x20type\x20\x22<b>','stats','$ok','/stats','88CgYxMy','\x20queue\x20job(s)','message','retryBusy','failed','indexer','shared','embed-worker-panel','/retryFailed','load','job_type','Retried\x20','1249035GChVcK','API','error','config','103817KopuBU','$attr','eng','toast','\x20doc(s)','\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:title=\x22name\x22\x0a\x20\x20type-label=\x22worker\x22\x0a\x20\x20type-color=\x22var(--okdb-warning)\x22\x0a\x20\x20show-refresh=\x22true\x22\x0a\x20\x20:refresh-busy=\x22busy\x20||\x20retryBusy\x22\x0a\x20\x20:on-refresh=\x22onRefresh\x22\x0a\x20\x20:on-pipeline=\x22viewPipeline\x22\x0a\x20\x20@engine-updated=\x22$dispatch(\x27engine-updated\x27,\x20$event.detail)\x22\x0a\x20\x20@refresh=\x22$dispatch(\x27refresh\x27)\x22\x0a\x20\x20@deleted=\x22$dispatch(\x27deleted\x27,\x20$event.detail)\x22\x0a>\x0a\x20\x20<div\x20class=\x22stack-compact\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;min-width:0;flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pill-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Queue\x20job\x20type\x20consumed\x20by\x20this\x20worker.\x22>{{\x20jobType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Indexer\x20this\x20worker\x20feeds.\x22>indexer:\x20{{\x20indexerName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Embedder\x20used\x20for\x20vector\x20generation.\x22>embedder:\x20{{\x20embedderName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Parallel\x20worker\x20lanes.\x22>concurrency:\x20{{\x20concurrencyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Consumes\x20queued\x20embedding\x20jobs\x20for\x20<strong>{{\x20indexerName\x20}}</strong>\x20and\x20pushes\x20text\x20through\x20<strong>{{\x20embedderName\x20}}</strong>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-note\x22>Use\x20retry\x20when\x20queue\x20jobs\x20failed\x20or\x20docs\x20were\x20left\x20stuck\x20pending\x20after\x20a\x20queue\x20disruption.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-grid\x20metric-grid--compact\x22\x20style=\x22min-width:min(100%,\x20360px);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Processed</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20processedCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Failed</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(failedCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20failedCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>In\x20flight</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(inflightCount\x20>\x200\x20?\x20\x27var(--okdb-warning)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20inflightCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;gap:10px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22retryAllFailed()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22retryBusy\x20||\x20(!failedCount\x20&&\x20!jobType)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2027%,\x20transparent);\x20font-size:12px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Retry\x20all\x20failed\x20queue\x20jobs\x20for\x20this\x20worker\x27s\x20job_type\x20+\x20re-enqueue\x20stuck\x20docs\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20retryBusy\x20?\x20\x27Retrying…\x27\x20:\x20\x27↺\x20Retry\x20Failed\x20Jobs\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Retries\x20queue\x20failures\x20and\x20also\x20re-enqueues\x20stuck\x20pending\x20docs\x20on\x20the\x20linked\x20indexer.</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22alert\x20alert--error\x22>{{\x20error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Worker\x20details</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x20kv-grid--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>job\x20type</span><span\x20class=\x22kv-val\x22>{{\x20jobType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>indexer</span><span\x20class=\x22kv-val\x22>{{\x20indexerName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>embedder</span><span\x20class=\x22kv-val\x22>{{\x20embedderName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>concurrency</span><span\x20class=\x22kv-val\x22>{{\x20concurrencyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','stringify','success','3136270mXcLGt','26931jKNPBd','1897830tzTYwr',',\x20re-enqueued\x20','busy','modal','name'];_0x88e9=function(){return _0x241471;};return _0x88e9();}export default{'tag':_0x12ea1d(0x132),'dependencies':[_0x5672f0],'attr':{'name':{},'engine':{}},'context':_0x5eae40=>({'busy':!0x1,'stats':null,'error':null,'retryBusy':!0x1,get 'eng'(){const _0x1ce0ac=_0x12ea1d;return _0x5eae40['$attr'][_0x1ce0ac(0x14a)]??{};},get 'name'(){const _0x14ff44=_0x12ea1d;return _0x5eae40[_0x14ff44(0x13c)]['name'];},get 'jobType'(){const _0x33d9ed=_0x12ea1d;return this['stats']?.['job_type']||this[_0x33d9ed(0x13d)]?.[_0x33d9ed(0x13a)]?.[_0x33d9ed(0x135)]||'—';},get 'indexerName'(){const _0x456e58=_0x12ea1d;return this[_0x456e58(0x128)]?.[_0x456e58(0x130)]||this[_0x456e58(0x13d)]?.['config']?.['indexer']||'—';},get 'embedderName'(){const _0x1d3753=_0x12ea1d;return this[_0x1d3753(0x128)]?.[_0x1d3753(0x126)]||this[_0x1d3753(0x13d)]?.[_0x1d3753(0x13a)]?.[_0x1d3753(0x126)]||'—';},get 'concurrencyValue'(){const _0x3a4ff3=_0x12ea1d;return this['stats']?.[_0x3a4ff3(0x155)]??this['eng']?.[_0x3a4ff3(0x13a)]?.[_0x3a4ff3(0x155)]??'—';},get 'processedCount'(){const _0x4fc597=_0x12ea1d;return this[_0x4fc597(0x128)]?.[_0x4fc597(0x14d)]??0x0;},get 'failedCount'(){const _0x312f7d=_0x12ea1d;return this[_0x312f7d(0x128)]?.[_0x312f7d(0x12f)]??0x0;},get 'inflightCount'(){const _0x2c464d=_0x12ea1d;return this[_0x2c464d(0x128)]?.['in_flight']??0x0;},async 'load'(){const _0x4f2d2c=_0x12ea1d;this[_0x4f2d2c(0x147)]=!0x0,this[_0x4f2d2c(0x139)]=null;try{const _0x4d39bb=await fetch(__ENV__[_0x4f2d2c(0x138)]+_0x4f2d2c(0x153)+encodeURIComponent(this[_0x4f2d2c(0x149)])+_0x4f2d2c(0x12a)),_0xc3b5af=await _0x4d39bb[_0x4f2d2c(0x151)]();if(!_0x4d39bb['ok'])throw new Error(_0xc3b5af?.[_0x4f2d2c(0x139)]?.['message']||_0x4f2d2c(0x12f));this[_0x4f2d2c(0x128)]=_0xc3b5af[_0x4f2d2c(0x125)];}catch(_0x3a2875){this[_0x4f2d2c(0x139)]=_0x3a2875?.['message']||String(_0x3a2875),this[_0x4f2d2c(0x128)]=null;}finally{this[_0x4f2d2c(0x147)]=!0x1;}},async 'onRefresh'(){await this['load']();},'viewPipeline'(){_0x4495c5(_0x5eae40,this['eng']);},async 'retryAllFailed'(){const _0x1e4e75=_0x12ea1d,_0x1564cd=this[_0x1e4e75(0x128)]?.[_0x1e4e75(0x135)]||this[_0x1e4e75(0x13d)]?.[_0x1e4e75(0x13a)]?.[_0x1e4e75(0x135)],_0x1f4fa1=this[_0x1e4e75(0x128)]?.[_0x1e4e75(0x130)]||this['eng']?.[_0x1e4e75(0x13a)]?.[_0x1e4e75(0x130)];if(_0x1564cd||_0x1f4fa1){if(await _0x5eae40[_0x1e4e75(0x129)][_0x1e4e75(0x131)][_0x1e4e75(0x148)]['confirm'](_0x1e4e75(0x127)+_0x1564cd+'</b>\x22?<br><br>This\x20will\x20also\x20re-enqueue\x20any\x20stuck\x20PENDING\x20docs\x20on\x20the\x20indexer.')){this[_0x1e4e75(0x12e)]=!0x0;try{const _0x1c9427=await fetch(__ENV__[_0x1e4e75(0x138)]+'/queue/retryFailed',{'method':'POST','headers':{'Content-Type':_0x1e4e75(0x14b)},'body':JSON[_0x1e4e75(0x141)]({'type':_0x1564cd,'limit':0x1388})}),_0x3c5ebe=await _0x1c9427[_0x1e4e75(0x151)](),_0x21a41e=_0x3c5ebe?.[_0x1e4e75(0x125)]?.['retried']??0x0;let _0x2839d7=0x0;if(_0x1f4fa1){const _0x549b0e=await fetch(__ENV__['API']+_0x1e4e75(0x14c)+encodeURIComponent(_0x1f4fa1)+_0x1e4e75(0x133),{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'limit':0x1388,'includeStuckPending':!0x0})}),_0x51aca3=await _0x549b0e[_0x1e4e75(0x151)]();_0x2839d7=_0x51aca3?.[_0x1e4e75(0x125)]?.['retried']??0x0;}_0x5eae40[_0x1e4e75(0x129)]['shared']?.[_0x1e4e75(0x13e)]?.[_0x1e4e75(0x142)]?.(_0x1e4e75(0x136)+_0x21a41e+_0x1e4e75(0x12c)+(_0x2839d7?_0x1e4e75(0x146)+_0x2839d7+_0x1e4e75(0x13f):'')),_0x5eae40['$dispatch']('refresh'),await this[_0x1e4e75(0x134)]();}catch(_0x44583e){_0x5eae40[_0x1e4e75(0x129)][_0x1e4e75(0x131)]?.[_0x1e4e75(0x13e)]?.[_0x1e4e75(0x139)]?.(_0x44583e?.[_0x1e4e75(0x12d)]||'Retry\x20failed');}finally{this['retryBusy']=!0x1;}}}else _0x5eae40['$ok'][_0x1e4e75(0x131)]?.[_0x1e4e75(0x13e)]?.[_0x1e4e75(0x139)]?.(_0x1e4e75(0x150));}}),async 'init'(_0x38b60c){const _0x499c9e=_0x12ea1d;_0x38b60c['$watch'](()=>_0x38b60c[_0x499c9e(0x13c)][_0x499c9e(0x149)],async()=>{const _0x525e7d=_0x499c9e;this[_0x525e7d(0x128)]=null,this[_0x525e7d(0x139)]=null,await this[_0x525e7d(0x134)]();}),await this[_0x499c9e(0x134)]();},'template':_0x12ea1d(0x140),'style':s};
1
+ const _0x534aa7=_0x2dcb;function _0x53eb(){const _0x40efcc=['processed','$ok','8466864HXYcpG','API','eng','embedder',',\x20re-enqueued\x20','Retry\x20all\x20failed\x20queue\x20jobs\x20for\x20type\x20\x22<b>','failed','json','retryBusy','179765DzbJnF','1512XEQulY','data','$dispatch','load','engine','job_type','success','application/json','$attr','concurrency','2562492JvBkBz','busy','/embeddings/workers/','464412TLXgDY','/queue/retryFailed','Cannot\x20determine\x20job_type\x20or\x20indexer\x20name','name','stats','modal','embed-worker-panel','/embeddings/indexers/','Retried\x20','40PePRag','797586Lyiaza','retried','config','/retryFailed','confirm','toast','message','Retry\x20failed','$watch','184170iMaCtE','in_flight','POST','stringify','shared','error','63suPwVm','3251154yJXwey','indexer'];_0x53eb=function(){return _0x40efcc;};return _0x53eb();}(function(_0x5ce672,_0x5332a2){const _0x584ce0=_0x2dcb,_0x366f62=_0x5ce672();while(!![]){try{const _0x39b049=parseInt(_0x584ce0(0x89))/0x1+-parseInt(_0x584ce0(0x86))/0x2+-parseInt(_0x584ce0(0x6e))/0x3+-parseInt(_0x584ce0(0x92))/0x4*(parseInt(_0x584ce0(0x7b))/0x5)+parseInt(_0x584ce0(0x93))/0x6*(-parseInt(_0x584ce0(0x6d))/0x7)+parseInt(_0x584ce0(0x72))/0x8+parseInt(_0x584ce0(0x7c))/0x9*(parseInt(_0x584ce0(0x9c))/0xa);if(_0x39b049===_0x5332a2)break;else _0x366f62['push'](_0x366f62['shift']());}catch(_0x2df6a9){_0x366f62['push'](_0x366f62['shift']());}}}(_0x53eb,0xa9e91));import _0x3e8945 from'../../engines/parts/engine-panel-shell.ok.js';import{ENGINE_PANEL_SHARED_STYLE as _0x440914}from'../../engines/engine-panel-shared-style.js';import{dispatchEnginePipelineSelection as _0x3b473f}from'../../engines/engine-ui-utils.js';function _0x2dcb(_0x5d4424,_0x23515a){_0x5d4424=_0x5d4424-0x6b;const _0x53eb32=_0x53eb();let _0x2dcba7=_0x53eb32[_0x5d4424];return _0x2dcba7;}const s=_0x440914;export default{'tag':_0x534aa7(0x8f),'dependencies':[_0x3e8945],'attr':{'name':{},'engine':{}},'context':_0x3f2fa5=>({'busy':!0x1,'stats':null,'error':null,'retryBusy':!0x1,get 'eng'(){const _0x5d29ca=_0x534aa7;return _0x3f2fa5[_0x5d29ca(0x84)][_0x5d29ca(0x80)]??{};},get 'name'(){return _0x3f2fa5['$attr']['name'];},get 'jobType'(){const _0x19fbaa=_0x534aa7;return this[_0x19fbaa(0x8d)]?.[_0x19fbaa(0x81)]||this[_0x19fbaa(0x74)]?.[_0x19fbaa(0x95)]?.[_0x19fbaa(0x81)]||'—';},get 'indexerName'(){const _0xbf636e=_0x534aa7;return this['stats']?.[_0xbf636e(0x6f)]||this[_0xbf636e(0x74)]?.['config']?.[_0xbf636e(0x6f)]||'—';},get 'embedderName'(){const _0x16922f=_0x534aa7;return this[_0x16922f(0x8d)]?.[_0x16922f(0x75)]||this[_0x16922f(0x74)]?.[_0x16922f(0x95)]?.[_0x16922f(0x75)]||'—';},get 'concurrencyValue'(){const _0x35ab66=_0x534aa7;return this[_0x35ab66(0x8d)]?.[_0x35ab66(0x85)]??this['eng']?.['config']?.['concurrency']??'—';},get 'processedCount'(){const _0x5b2702=_0x534aa7;return this[_0x5b2702(0x8d)]?.[_0x5b2702(0x70)]??0x0;},get 'failedCount'(){const _0x148e62=_0x534aa7;return this[_0x148e62(0x8d)]?.[_0x148e62(0x78)]??0x0;},get 'inflightCount'(){const _0xbd1c0c=_0x534aa7;return this[_0xbd1c0c(0x8d)]?.[_0xbd1c0c(0x9d)]??0x0;},async 'load'(){const _0x37a174=_0x534aa7;this[_0x37a174(0x87)]=!0x0,this[_0x37a174(0x6c)]=null;try{const _0x581d95=await fetch(__ENV__['API']+_0x37a174(0x88)+encodeURIComponent(this['name'])+'/stats'),_0x2d0dd9=await _0x581d95[_0x37a174(0x79)]();if(!_0x581d95['ok'])throw new Error(_0x2d0dd9?.[_0x37a174(0x6c)]?.['message']||_0x37a174(0x78));this['stats']=_0x2d0dd9[_0x37a174(0x7d)];}catch(_0x1eb489){this[_0x37a174(0x6c)]=_0x1eb489?.['message']||String(_0x1eb489),this[_0x37a174(0x8d)]=null;}finally{this[_0x37a174(0x87)]=!0x1;}},async 'onRefresh'(){await this['load']();},'viewPipeline'(){_0x3b473f(_0x3f2fa5,this['eng']);},async 'retryAllFailed'(){const _0x38235a=_0x534aa7,_0x33436a=this[_0x38235a(0x8d)]?.[_0x38235a(0x81)]||this[_0x38235a(0x74)]?.['config']?.[_0x38235a(0x81)],_0x3c2a61=this[_0x38235a(0x8d)]?.[_0x38235a(0x6f)]||this['eng']?.['config']?.[_0x38235a(0x6f)];if(_0x33436a||_0x3c2a61){if(await _0x3f2fa5[_0x38235a(0x71)][_0x38235a(0x6b)][_0x38235a(0x8e)][_0x38235a(0x97)](_0x38235a(0x77)+_0x33436a+'</b>\x22?<br><br>This\x20will\x20also\x20re-enqueue\x20any\x20stuck\x20PENDING\x20docs\x20on\x20the\x20indexer.')){this[_0x38235a(0x7a)]=!0x0;try{const _0x139948=await fetch(__ENV__[_0x38235a(0x73)]+_0x38235a(0x8a),{'method':_0x38235a(0x9e),'headers':{'Content-Type':_0x38235a(0x83)},'body':JSON['stringify']({'type':_0x33436a,'limit':0x1388})}),_0x5dcf20=await _0x139948['json'](),_0xff5e43=_0x5dcf20?.[_0x38235a(0x7d)]?.['retried']??0x0;let _0x701c5a=0x0;if(_0x3c2a61){const _0x183aec=await fetch(__ENV__[_0x38235a(0x73)]+_0x38235a(0x90)+encodeURIComponent(_0x3c2a61)+_0x38235a(0x96),{'method':_0x38235a(0x9e),'headers':{'Content-Type':_0x38235a(0x83)},'body':JSON[_0x38235a(0x9f)]({'limit':0x1388,'includeStuckPending':!0x0})}),_0xaf2d7a=await _0x183aec[_0x38235a(0x79)]();_0x701c5a=_0xaf2d7a?.[_0x38235a(0x7d)]?.[_0x38235a(0x94)]??0x0;}_0x3f2fa5[_0x38235a(0x71)][_0x38235a(0x6b)]?.[_0x38235a(0x98)]?.[_0x38235a(0x82)]?.(_0x38235a(0x91)+_0xff5e43+'\x20queue\x20job(s)'+(_0x701c5a?_0x38235a(0x76)+_0x701c5a+'\x20doc(s)':'')),_0x3f2fa5[_0x38235a(0x7e)]('refresh'),await this[_0x38235a(0x7f)]();}catch(_0x17fd0e){_0x3f2fa5['$ok'][_0x38235a(0x6b)]?.[_0x38235a(0x98)]?.[_0x38235a(0x6c)]?.(_0x17fd0e?.[_0x38235a(0x99)]||_0x38235a(0x9a));}finally{this['retryBusy']=!0x1;}}}else _0x3f2fa5['$ok'][_0x38235a(0x6b)]?.[_0x38235a(0x98)]?.[_0x38235a(0x6c)]?.(_0x38235a(0x8b));}}),async 'init'(_0x6ce44e){const _0x555c11=_0x534aa7;_0x6ce44e[_0x555c11(0x9b)](()=>_0x6ce44e[_0x555c11(0x84)][_0x555c11(0x8c)],async()=>{const _0x19aa06=_0x555c11;this[_0x19aa06(0x8d)]=null,this['error']=null,await this[_0x19aa06(0x7f)]();}),await this['load']();},'template':'\x0a<engine-panel-shell\x0a\x20\x20:engine=\x22eng\x22\x0a\x20\x20:title=\x22name\x22\x0a\x20\x20type-label=\x22worker\x22\x0a\x20\x20type-color=\x22var(--okdb-warning)\x22\x0a\x20\x20show-refresh=\x22true\x22\x0a\x20\x20:refresh-busy=\x22busy\x20||\x20retryBusy\x22\x0a\x20\x20:on-refresh=\x22onRefresh\x22\x0a\x20\x20:on-pipeline=\x22viewPipeline\x22\x0a\x20\x20@engine-updated=\x22$dispatch(\x27engine-updated\x27,\x20$event.detail)\x22\x0a\x20\x20@refresh=\x22$dispatch(\x27refresh\x27)\x22\x0a\x20\x20@deleted=\x22$dispatch(\x27deleted\x27,\x20$event.detail)\x22\x0a>\x0a\x20\x20<div\x20class=\x22stack-compact\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;flex-direction:column;gap:8px;min-width:0;flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pill-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Queue\x20job\x20type\x20consumed\x20by\x20this\x20worker.\x22>{{\x20jobType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Indexer\x20this\x20worker\x20feeds.\x22>indexer:\x20{{\x20indexerName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Embedder\x20used\x20for\x20vector\x20generation.\x22>embedder:\x20{{\x20embedderName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22info-pill\x22\x20title=\x22Parallel\x20worker\x20lanes.\x22>concurrency:\x20{{\x20concurrencyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-lead\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Consumes\x20queued\x20embedding\x20jobs\x20for\x20<strong>{{\x20indexerName\x20}}</strong>\x20and\x20pushes\x20text\x20through\x20<strong>{{\x20embedderName\x20}}</strong>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22story-note\x22>Use\x20retry\x20when\x20queue\x20jobs\x20failed\x20or\x20docs\x20were\x20left\x20stuck\x20pending\x20after\x20a\x20queue\x20disruption.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-grid\x20metric-grid--compact\x22\x20style=\x22min-width:min(100%,\x20360px);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Processed</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20processedCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>Failed</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(failedCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20failedCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-card\x20metric-card--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-title\x22>In\x20flight</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22metric-value\x22\x20:style=\x22\x27color:\x27\x20+\x20(inflightCount\x20>\x200\x20?\x20\x27var(--okdb-warning)\x27\x20:\x20\x27var(--okdb-app-fg)\x27)\x22>{{\x20inflightCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;align-items:center;gap:10px;flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22retryAllFailed()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22retryBusy\x20||\x20(!failedCount\x20&&\x20!jobType)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2027%,\x20transparent);\x20font-size:12px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Retry\x20all\x20failed\x20queue\x20jobs\x20for\x20this\x20worker\x27s\x20job_type\x20+\x20re-enqueue\x20stuck\x20docs\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20retryBusy\x20?\x20\x27Retrying…\x27\x20:\x20\x27↺\x20Retry\x20Failed\x20Jobs\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22story-note\x22>Retries\x20queue\x20failures\x20and\x20also\x20re-enqueues\x20stuck\x20pending\x20docs\x20on\x20the\x20linked\x20indexer.</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22alert\x20alert--error\x22>{{\x20error\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20stack-compact\x22\x20style=\x22padding:14px;gap:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22card-title\x22\x20style=\x22margin:0;\x22>Worker\x20details</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22kv-grid\x20kv-grid--compact\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>job\x20type</span><span\x20class=\x22kv-val\x22>{{\x20jobType\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>indexer</span><span\x20class=\x22kv-val\x22>{{\x20indexerName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>embedder</span><span\x20class=\x22kv-val\x22>{{\x20embedderName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22kv-key\x22>concurrency</span><span\x20class=\x22kv-val\x22>{{\x20concurrencyValue\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a</engine-panel-shell>\x0a','style':s};
@@ -1 +1 @@
1
- function _0x2e51(_0x2822c9,_0x224caa){_0x2822c9=_0x2822c9-0x1be;var _0x30e7f5=_0x30e7();var _0x2e51e9=_0x30e7f5[_0x2822c9];return _0x2e51e9;}var _0x27a0e0=_0x2e51;(function(_0x1775ed,_0x11ef58){var _0x4c8bc4=_0x2e51,_0x25fa9d=_0x1775ed();while(!![]){try{var _0x4027b7=-parseInt(_0x4c8bc4(0x1c2))/0x1+-parseInt(_0x4c8bc4(0x1d0))/0x2+parseInt(_0x4c8bc4(0x1ce))/0x3*(-parseInt(_0x4c8bc4(0x1c8))/0x4)+-parseInt(_0x4c8bc4(0x1cb))/0x5*(parseInt(_0x4c8bc4(0x1cd))/0x6)+parseInt(_0x4c8bc4(0x1c3))/0x7*(-parseInt(_0x4c8bc4(0x1cc))/0x8)+parseInt(_0x4c8bc4(0x1be))/0x9+parseInt(_0x4c8bc4(0x1c6))/0xa;if(_0x4027b7===_0x11ef58)break;else _0x25fa9d['push'](_0x25fa9d['shift']());}catch(_0x52d51d){_0x25fa9d['push'](_0x25fa9d['shift']());}}}(_0x30e7,0x551b9));import _0x18fb0f from'./embed-embedder-panel.ok.js';import _0x2c4a7e from'./embed-indexer-panel.ok.js';function _0x30e7(){var _0x8edb4b=['14813860vkWsrg','detail','56PgAyem','embeddings-engine-panel','$attr','60VSACbl','672576hrkDGd','262356xawuvO','83292eHqvlu','\x0a<div\x20style=\x22display:flex;flex-direction:column;gap:14px;min-width:0;\x22>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27embedder\x27\x22>\x0a\x20\x20\x20\x20<embed-embedder-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27indexer\x27\x22>\x0a\x20\x20\x20\x20<embed-indexer-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27embed-worker\x27\x22>\x0a\x20\x20\x20\x20<embed-worker-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27vector-search\x27\x22>\x0a\x20\x20\x20\x20<embed-search-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22!hasKnownPanel\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:14px;border:1px\x20solid\x20var(--okdb-app-border);border-radius:12px;background:var(--okdb-app-bg-deep);color:var(--okdb-app-fg-muted);font-size:12px;line-height:1.6;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20embeddings\x20panel\x20is\x20registered\x20for\x20engine\x20type\x20<code>{{\x20panelType\x20||\x20\x27unknown\x27\x20}}</code>.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a</div>\x0a','831148AjSrOQ','6273828VCKOem','engine','type','panelType','80535JqOdra','35GfJTDG','$dispatch','eng'];_0x30e7=function(){return _0x8edb4b;};return _0x30e7();}import _0x82fe33 from'./embed-search-panel.ok.js';import _0x1ff234 from'./embed-worker-panel.ok.js';import{isEmbeddingsEngineType as _0x29f116}from'../../engines/engine-ui-utils.js';export default{'tag':_0x27a0e0(0x1c9),'dependencies':[_0x18fb0f,_0x2c4a7e,_0x82fe33,_0x1ff234],'attr':{'engine':{}},'context':_0x34ec5a=>({get 'eng'(){var _0x1126b3=_0x27a0e0;return _0x34ec5a[_0x1126b3(0x1ca)][_0x1126b3(0x1bf)]??{};},get 'panelType'(){var _0x467e38=_0x27a0e0;return this[_0x467e38(0x1c5)][_0x467e38(0x1c0)]??'';},get 'hasKnownPanel'(){var _0x1fdf7f=_0x27a0e0;return _0x29f116(this[_0x1fdf7f(0x1c1)]);},'forward'(_0x430b30){var _0x112b3d=_0x27a0e0;_0x430b30?.[_0x112b3d(0x1c0)]&&_0x34ec5a[_0x112b3d(0x1c4)](_0x430b30[_0x112b3d(0x1c0)],_0x430b30[_0x112b3d(0x1c7)]);}}),'template':_0x27a0e0(0x1cf)};
1
+ (function(_0x4f2d23,_0x53f337){var _0xd884ba=_0xa306,_0x48b161=_0x4f2d23();while(!![]){try{var _0x58738f=parseInt(_0xd884ba(0x11a))/0x1*(parseInt(_0xd884ba(0x120))/0x2)+parseInt(_0xd884ba(0x115))/0x3*(parseInt(_0xd884ba(0x11f))/0x4)+-parseInt(_0xd884ba(0x122))/0x5+-parseInt(_0xd884ba(0x119))/0x6*(parseInt(_0xd884ba(0x11d))/0x7)+parseInt(_0xd884ba(0x118))/0x8+-parseInt(_0xd884ba(0x117))/0x9+parseInt(_0xd884ba(0x11e))/0xa;if(_0x58738f===_0x53f337)break;else _0x48b161['push'](_0x48b161['shift']());}catch(_0x2a4822){_0x48b161['push'](_0x48b161['shift']());}}}(_0x1f36,0x78a39));import _0x2d4326 from'./embed-embedder-panel.ok.js';import _0x1d4606 from'./embed-indexer-panel.ok.js';import _0x4e7eef from'./embed-search-panel.ok.js';function _0xa306(_0x2ef321,_0xf414b4){_0x2ef321=_0x2ef321-0x115;var _0x1f36d1=_0x1f36();var _0xa30619=_0x1f36d1[_0x2ef321];return _0xa30619;}function _0x1f36(){var _0x49a343=['969045BjFgZa','9081BxMzRs','type','4351590QODcqa','4032008QrzVkg','4352040chFeov','27598JFfFQB','eng','panelType','7JtjCXX','1013690OfuBBI','576kfeTTX','62LXFBwE','engine'];_0x1f36=function(){return _0x49a343;};return _0x1f36();}import _0x5db74d from'./embed-worker-panel.ok.js';import{isEmbeddingsEngineType as _0x5c67c3}from'../../engines/engine-ui-utils.js';export default{'tag':'embeddings-engine-panel','dependencies':[_0x2d4326,_0x1d4606,_0x4e7eef,_0x5db74d],'attr':{'engine':{}},'context':_0x5d6388=>({get 'eng'(){var _0x3be465=_0xa306;return _0x5d6388['$attr'][_0x3be465(0x121)]??{};},get 'panelType'(){var _0x3e57f7=_0xa306;return this[_0x3e57f7(0x11b)][_0x3e57f7(0x116)]??'';},get 'hasKnownPanel'(){var _0x260d9c=_0xa306;return _0x5c67c3(this[_0x260d9c(0x11c)]);},'forward'(_0x4bf44b){var _0x199c6d=_0xa306;_0x4bf44b?.['type']&&_0x5d6388['$dispatch'](_0x4bf44b[_0x199c6d(0x116)],_0x4bf44b['detail']);}}),'template':'\x0a<div\x20style=\x22display:flex;flex-direction:column;gap:14px;min-width:0;\x22>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27embedder\x27\x22>\x0a\x20\x20\x20\x20<embed-embedder-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27indexer\x27\x22>\x0a\x20\x20\x20\x20<embed-indexer-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27embed-worker\x27\x22>\x0a\x20\x20\x20\x20<embed-worker-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22panelType\x20===\x20\x27vector-search\x27\x22>\x0a\x20\x20\x20\x20<embed-search-panel\x0a\x20\x20\x20\x20\x20\x20:name=\x22eng.name\x22\x0a\x20\x20\x20\x20\x20\x20:engine=\x22eng\x22\x0a\x20\x20\x20\x20\x20\x20@engine-updated=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22forward($event)\x22\x0a\x20\x20\x20\x20\x20\x20@deleted=\x22forward($event)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x20\x20<if\x20:=\x22!hasKnownPanel\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:14px;border:1px\x20solid\x20var(--okdb-app-border);border-radius:12px;background:var(--okdb-app-bg-deep);color:var(--okdb-app-fg-muted);font-size:12px;line-height:1.6;\x22>\x0a\x20\x20\x20\x20\x20\x20No\x20embeddings\x20panel\x20is\x20registered\x20for\x20engine\x20type\x20<code>{{\x20panelType\x20||\x20\x27unknown\x27\x20}}</code>.\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a</div>\x0a'};