@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
- const _0x31845a=_0x2c45;(function(_0x594d19,_0x28d6c3){const _0x4f4e4b=_0x2c45,_0x2d77cb=_0x594d19();while(!![]){try{const _0x1b8914=parseInt(_0x4f4e4b(0xf3))/0x1+parseInt(_0x4f4e4b(0x182))/0x2*(-parseInt(_0x4f4e4b(0x16a))/0x3)+-parseInt(_0x4f4e4b(0x17b))/0x4+parseInt(_0x4f4e4b(0x105))/0x5*(parseInt(_0x4f4e4b(0x154))/0x6)+parseInt(_0x4f4e4b(0x166))/0x7+parseInt(_0x4f4e4b(0x145))/0x8*(parseInt(_0x4f4e4b(0x11a))/0x9)+-parseInt(_0x4f4e4b(0x178))/0xa*(parseInt(_0x4f4e4b(0x116))/0xb);if(_0x1b8914===_0x28d6c3)break;else _0x2d77cb['push'](_0x2d77cb['shift']());}catch(_0x29a7e5){_0x2d77cb['push'](_0x2d77cb['shift']());}}}(_0x4114,0x93656));function _0x2c45(_0x489205,_0x411038){_0x489205=_0x489205-0xf3;const _0x41148f=_0x4114();let _0x2c4504=_0x41148f[_0x489205];return _0x2c4504;}function _0x4114(){const _0x37d992=['pipelines','30gLWcvd','/env/','var(--okdb-sky)','1840812gsWunI','envName','item:update','$watch','all','isArray','resolve','2nJpvTL','pageSize','has','recentChanges','degraded','meta','898545KRgVSI','success','_reloadTypes','now','loadViolations','Failed\x20to\x20load\x20pipelines','index:registered','engine:installed','\x20·\x20','engines','var(--okdb-warning)','label','pipelineLabel','_unsubs','apiBase','recentError','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:20px;\x20max-width:860px;\x22>\x0a\x0a\x20\x20<!--\x20Header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:18px;\x22>Database\x20Overview</div>\x0a\x20\x20\x20\x20<if\x20:=\x22recentBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>updating…</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadRecent()\x22\x20:disabled=\x22recentBusy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20↻\x20Refresh\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Stat\x20cards\x20row\x20-->\x0a\x20\x20<div\x20class=\x22ov-stat-row\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>DB\x20Size</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--accent);\x22>{{\x20approxSize\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Clock</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22font-family:monospace;\x20font-size:18px;\x22>{{\x20fmt(info?.clock)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>User\x20Types</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-purple);\x22>{{\x20types.length\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Total\x20Records</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20fmt(totalRecords)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Empty\x20state\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Standard\x20empty\x20hint\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20margin-bottom:12px;\x22>🗄️</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:15px;\x20margin-bottom:5px;\x22>No\x20types\x20registered\x20yet</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20opacity:.6;\x20line-height:1.7;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20<b>Register\x20Type\x20+</b>\x20in\x20the\x20sidebar\x20to\x20create\x20your\x20first\x20collection.<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Types\x20are\x20strongly-typed\x20document\x20collections\x20stored\x20in\x20LMDB.\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<!--\x20Demo\x20data\x20card\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card\x22\x20@click=\x22openDemoModal()\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__aurora\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22position:relative;\x20z-index:1;\x20display:flex;\x20flex-direction:column;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__sparkle\x22>✦</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__title\x22>Generate\x20Demo\x20Environment</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__desc\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Instantly\x20populate\x20a\x20new\x20environment\x20with\x20realistic\x20data,\x20indexes,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20and\x20full-text\x20search\x20—\x20ready\x20to\x20explore\x20in\x20seconds.\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=\x22ov-demo-card__badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent);\x22>🛒\x20E-Commerce</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-accent);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x22>📊\x20Analytics</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-purple);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-purple)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x22>📝\x20Content\x20Hub</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-warning)\x207%,\x20transparent);\x22>👥\x20Team\x20Directory</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-orange);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-orange)\x207%,\x20transparent);\x22>🗺️\x20City\x20Explorer</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=\x22ov-demo-card__cta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Choose\x20a\x20preset</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:6px;\x20font-size:14px;\x22>→</span>\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</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Types\x20table\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Types</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20types.length\x20}}\x20user&nbsp;·&nbsp;{{\x20systemTypes.length\x20}}\x20system\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20class=\x22ov-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th>Name</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Records</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Pages</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Indexes</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th></th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22types\x22\x20let:item=\x22t\x22\x20class=\x22ov-row\x22\x20@click=\x22select(t)\x22\x20title=\x22Open\x20in\x20type\x20viewer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x22>{{\x20t.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20color:var(--accent);\x20font-weight:600;\x22>{{\x20fmt(t.count)\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.5;\x20font-size:12px;\x22>{{\x20fmt(typePages(t.type))\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIndexCount(t.type)\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:1px\x207px;\x20border-radius:999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x2033%,\x20transparent);\x20color:var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:11px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>{{\x20typeIndexCount(t.type)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIndexCount(t.type)\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.3;\x22>—</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.3;\x20font-size:11px;\x20padding-right:16px;\x22>→</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Violations\x20summary\x20-->\x0a\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x20||\x20violationsBusy\x20||\x20violationsError\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Schema\x20Violations</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20font-weight:600;\x22>{{\x20totalViolations\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>across\x20all\x20types\x20in\x20{{\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadViolations()\x22\x20:disabled=\x22violationsBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsBusy\x20&&\x20violations.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.45;\x22>Loading…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px\x2016px;\x20color:var(--okdb-danger);\x20font-size:12px;\x22>{{\x20violationsError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!violationsBusy\x20&&\x20!violationsError\x20&&\x20violationsByType.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.4;\x22>No\x20violations.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsByType.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22violationsByType\x22\x20let:item=\x22grp\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20type\x20group\x20header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-group\x22\x20@click=\x22toggleViolationGroup(grp.type)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-viol-arrow\x22\x20:style=\x22expandedViolationType\x20===\x20grp.type\x20?\x20\x27transform:rotate(90deg)\x27\x20:\x20\x27\x27\x22>›</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x20flex:1;\x22>{{\x20grp.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20margin-right:8px;\x22>{{\x20grp.count\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click:stop=\x22navigateToType(grp.type)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:5px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:transparent;\x20color:var(--okdb-sky);\x20cursor:pointer;\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20Schema\x20tab\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Schema\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20expanded\x20violations\x20for\x20this\x20type\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22expandedViolationType\x20===\x20grp.type\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22grp.items\x22\x20let:item=\x22v\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:11px;\x20color:var(--okdb-json-key);\x20flex:1;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20v.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.45;\x20white-space:nowrap;\x20margin-left:8px;\x22>{{\x20(v.errors\x20??\x20[]).length\x20||\x20(v.errorCount\x20??\x200)\x20}}\x20error(s)</span>\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</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Time\x20Machine\x20card\x20-->\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:13px;\x22>⏱\x20Time\x20Machine</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!tmStatus\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>loading…</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22tmStatus.enabled\x20?\x20disableTM()\x20:\x20enableTM()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27font-size:11px;\x20padding:2px\x2010px;\x20color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20border-color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent)\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent)\x27)\x20+\x20\x27;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20tmStatus.enabled\x20?\x20\x27Disable\x27\x20:\x20\x27Enable\x27\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>{{\x20tmScanMsg\x20||\x20\x27…\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20flex-direction:column;\x20gap:3px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>tracking\x20since\x20clock\x20{{\x20tmStatus.startClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20!==\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>last\x20processed:\x20{{\x20tmStatus.lastProcessedClock\x20}}\x20·\x20env\x20at:\x20{{\x20tmStatus.envClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20===\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>processed\x20through\x20clock\x20{{\x20tmStatus.lastProcessedClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20tmStatus.headCount\x20}}\x20heads</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>disabled</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22ov-card\x22\x20style=\x22overflow:visible;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Pipelines</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>overview\x20highlights\x20for\x20the\x20current\x20environment</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:16px;\x20display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-headline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x20min-width:0;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x20color:var(--okdb-app-fg);\x22>{{\x20pipelineSummaryText\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.error\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:var(--okdb-danger);border-color:var(--okdb-danger-deep-border);background:#450a0a33;\x27\x22>{{\x20pipelineHealthCounts.error\x20}}\x20error</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.degraded\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#fcd34d;border-color:#854d0e;background:#451a0333;\x27\x22>{{\x20pipelineHealthCounts.degraded\x20}}\x20degraded</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\x20\x20<if\x20:=\x22pipelineHealthCounts.online\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#86efac;border-color:#166534;background:#052e1633;\x27\x22>{{\x20pipelineHealthCounts.online\x20}}\x20online</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\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:640px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20The\x20overview\x20should\x20only\x20surface\x20high-signal\x20pipeline\x20highlights.\x20Open\x20the\x20dedicated\x20workspace\x20when\x20you\x20want\x20the\x20full\x20grouped\x20pipeline\x20list\x20and\x20member\x20details.\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\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadPipelines()\x22\x20:disabled=\x22pipelinesBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openPipelinesWorkspace()\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x22>Open\x20pipelines\x20workspace\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-error\x22>{{\x20pipelinesError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x22>Loading\x20pipeline\x20highlights…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:24px;\x20opacity:.3;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.78;\x22>No\x20pipelines\x20in\x20{{\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20will\x20appear\x20here\x20once\x20created\x20or\x20synced.\x20This\x20frontpage\x20intentionally\x20stays\x20compact\x20and\x20only\x20shows\x20a\x20small\x20highlight\x20list.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHighlights.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22pipelineHighlights\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22ov-pipeline-highlight\x22\x20@click=\x22openPipelinesWorkspace(pipeline)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:9px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineLabel(pipeline)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:11px;color:\x27\x20+\x20healthColor(pipeline.health)\x20+\x20\x27;opacity:.95;white-space:nowrap;\x27\x22>{{\x20pipeline.health\x20||\x20\x27unknown\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:12px;\x20flex-wrap:wrap;\x20margin-top:6px;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Members:</span>\x20<span\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20fmt(pipeline.engines?.length\x20||\x200)\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipeline.status\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Status:</span>\x20<span\x20:style=\x22\x27color:\x27\x20+\x20statusColor(pipeline.status)\x22>{{\x20pipeline.status\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineRoleSummary(pipeline)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelines.length\x20>\x20pipelineHighlights.length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Showing\x20{{\x20pipelineHighlights.length\x20}}\x20of\x20{{\x20pipelines.length\x20}}\x20pipelines.\x20Open\x20the\x20dedicated\x20workspace\x20for\x20the\x20full\x20inventory.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Recent\x20activity\x20-->\x0a\x20\x20<if\x20:=\x22recentChanges.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Recent\x20Activity</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-left:auto;\x22>last\x20{{\x20recentChanges.length\x20}}\x20changes</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:100%;\x20border-collapse:collapse;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22recentChanges\x22\x20let:item=\x22ch\x22\x20class=\x22ov-row\x20ov-row--sm\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20width:60px;\x20font-family:monospace;\x20opacity:.4;\x20padding-left:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.clock\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22width:100px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:10px;\x20padding:2px\x206px;\x20border-radius:3px;\x20border:1px\x20solid;\x20color:\x27+actionColor(ch.action)+\x27;\x20border-color:\x27+actionColor(ch.action)+\x2755;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionLabel(ch.action)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.7;\x20max-width:110px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.type\x20||\x20\x27—\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.45;\x20max-width:160px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.key\x20||\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20opacity:.35;\x20white-space:nowrap;\x20font-size:11px;\x20padding-right:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20relTime(ch.timestamp)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','indexes','5RNwBvX','info','var(--okdb-danger)','engine:stopped','add','No\x20members','okdb','expandedViolationType','loadRecent','push','system:poke','types','data','error','sync:apply','catch','select','3736865uuYZaN','stores','\x22\x20is\x20ready!','just\x20now','18qBQkNE','entries','$vars','\x20engine','stopped','toast','tmStatus','idle','selectEnv','toLowerCase','env','modal','var(--okdb-purple)','var(--okdb-accent)','default','length','$ok','Failed\x20to\x20load\x20violations','replace','/violations','_reloadTimer','localeCompare','toLocaleDateString','violations','$dispatch','pipeline:start','building','set','type','loadTMStatus','type:registered','system:clock_change','s\x20ago','filter','tmScanMsg','violationsBusy','loadPipelines','lastProcessedClock','slice','count','lastPageNumber','result','/time-machine/enable','1271568GVJgpp','online','API','sort','shared','pipelinesError','<span\x20style=\x22background:linear-gradient(135deg,var(--okdb-accent),var(--okdb-purple)\x2050%,var(--okdb-success));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;font-size:15px;\x22>✦\x20Demo\x20Environment</span>','name','json','pipeline:delete','toFixed','$router','join','recentBusy','keys','389478QAbNSn','pipelineEngineCount','type:drop','scanning…','engine:uninstalled','round','POST','tmBusy','reduce','running','startsWith','violationsError','pipeline:stop','/changelog?limit=10','_scheduleReload','Unnamed\x20pipeline','includes','pipelineSeverity','7171003nrDkLu','selectedEnv','✦\x20Demo\x20environment\x20\x22','reloadEnvs','668091rWvxaO','open','message','var(--okdb-app-fg-muted)','var(--okdb-success)','health','/time-machine/status','\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(4,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2016px\x2018px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.06em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-value\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2022px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2013px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-collapse:\x20collapse;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20th\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x207px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.05em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row:hover\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#ffffff07;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20tbody\x20tr:last-child\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-headline\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-pill\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2024px\x2020px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(auto-fit,\x20minmax(240px,\x201fr));\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2011px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20tbody\x20.ov-row--sm:last-child\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group:hover\x20{\x20background:\x20#ffffff07;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-arrow\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20inline-block;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x2016px\x206px\x2038px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row:last-child\x20{\x20border-bottom:\x20none;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2030px\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Demo\x20data\x20card\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20border-color\x20.25s,\x20box-shadow\x20.25s,\x20transform\x20.2s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2053%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent),\x200\x208px\x2040px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x209%,\x20transparent),\x200\x200\x2080px\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20transform:\x20translateY(-2px);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20absolute;\x0a\x20\x20\x20\x20\x20\x20\x20\x20inset:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2020%\x2050%,\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2080%\x2030%,\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2050%\x2090%,\x20color-mix(in\x20srgb,\x20var(--okdb-success)\x204%,\x20transparent),\x20transparent\x2055%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20pointer-events:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-aurora\x208s\x20ease-in-out\x20infinite\x20alternate;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__sparkle\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2026px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-accent),\x20var(--okdb-purple)\x2040%,\x20var(--okdb-success));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-hue\x206s\x20linear\x20infinite;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2017px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-app-fg-strong),\x20var(--okdb-accent));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__desc\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20380px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.65;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__badges\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-badge\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-badge\x20{\x20transform:\x20scale(1.05);\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__cta\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-accent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.8;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20opacity\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-card__cta\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-hue\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20filter:\x20hue-rotate(0deg);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20filter:\x20hue-rotate(360deg);\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20opacity:\x20.7;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20opacity:\x201.3;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','engine:error','pipelinesBusy','pages','m\x20ago','reloadOverviewData'];_0x4114=function(){return _0x37d992;};return _0x4114();}import _0x151063 from'../../../stores/events-store.js';import _0x2f4db6 from'../modals/demo-env-modal.ok.js';export default{'tag':'db-overview','dependencies':[_0x2f4db6],'attr':{'stats':{}},'context':_0x5213ef=>({'recentChanges':[],'recentBusy':!0x1,'recentError':null,'pipelines':[],'pipelinesBusy':!0x1,'pipelinesError':null,'violations':[],'violationsBusy':!0x1,'violationsError':null,'expandedViolationType':null,'tmStatus':null,'tmBusy':!0x1,'tmScanMsg':'',get 'info'(){const _0x3241e7=_0x2c45;return _0x5213ef[_0x3241e7(0x12a)]['stores']['okdb']['info'];},get 'types'(){const _0x21f769=_0x2c45;return(_0x5213ef[_0x21f769(0x12a)][_0x21f769(0x117)]['okdb'][_0x21f769(0x110)]||[])['filter'](_0x51dfa7=>!_0x51dfa7['type'][_0x21f769(0x15e)]('~'))[_0x21f769(0x148)]((_0x3b1646,_0x53b227)=>_0x3b1646[_0x21f769(0x136)][_0x21f769(0x12f)](_0x53b227[_0x21f769(0x136)]));},get 'systemTypes'(){const _0x1b420a=_0x2c45;return(_0x5213ef['$ok']['stores'][_0x1b420a(0x10b)][_0x1b420a(0x110)]||[])[_0x1b420a(0x13b)](_0x5d1064=>_0x5d1064[_0x1b420a(0x136)][_0x1b420a(0x15e)]('~'));},get 'envName'(){const _0x456201=_0x2c45;return _0x5213ef[_0x456201(0x12a)][_0x456201(0x117)][_0x456201(0x10b)]['selectedEnv']||_0x456201(0x128);},get 'totalRecords'(){const _0x46d8af=_0x2c45;return(_0x5213ef[_0x46d8af(0x12a)][_0x46d8af(0x117)][_0x46d8af(0x10b)][_0x46d8af(0x110)]||[])[_0x46d8af(0x13b)](_0x10bce9=>!_0x10bce9[_0x46d8af(0x136)][_0x46d8af(0x15e)]('~'))[_0x46d8af(0x15c)]((_0x10036b,_0x133cf4)=>_0x10036b+(_0x133cf4[_0x46d8af(0x141)]||0x0),0x0);},get 'approxSize'(){const _0x5866d7=_0x2c45,_0x3c5173=this['info']?.[_0x5866d7(0x142)],_0x11687a=this[_0x5866d7(0x106)]?.[_0x5866d7(0x183)];if(!_0x3c5173||!_0x11687a)return'--';let _0x37a9fa=_0x3c5173*_0x11687a;const _0x19ef45=['B','KB','MB','GB','TB'];let _0x438e3b=0x0;for(;_0x37a9fa>=0x400&&_0x438e3b<_0x19ef45[_0x5866d7(0x129)]-0x1;)_0x37a9fa/=0x400,_0x438e3b++;return _0x37a9fa[_0x5866d7(0x14f)](0x2)+'\x20'+_0x19ef45[_0x438e3b];},'typeIndexCount'(_0xdba4c2){const _0x32d333=_0x2c45,_0x23624d=this[_0x32d333(0x106)]?.[_0x32d333(0x110)]?.[_0xdba4c2]?.[_0x32d333(0x104)];return _0x23624d?Object[_0x32d333(0x153)](_0x23624d)[_0x32d333(0x129)]:0x0;},'typePages'(_0x588d0b){const _0x1a3731=_0x2c45;return this[_0x1a3731(0x106)]?.[_0x1a3731(0x110)]?.[_0x588d0b]?.[_0x1a3731(0x111)]?.[_0x1a3731(0x174)]??null;},'select'(_0x6523e8){const _0xa89ba4=_0x2c45;_0x5213ef[_0xa89ba4(0x132)]('select',_0x6523e8);},async 'loadRecent'(){const _0x48f964=_0x2c45;this[_0x48f964(0x152)]=!0x0,this[_0x48f964(0x102)]=null;try{const _0x1fadf6=await fetch(_0x5213ef[_0x48f964(0x12a)][_0x48f964(0x117)][_0x48f964(0x10b)][_0x48f964(0x101)]+_0x48f964(0x161));if(_0x1fadf6['ok']){const _0xe65a37=await _0x1fadf6['json']();this[_0x48f964(0x185)]=_0xe65a37[_0x48f964(0x111)]??[];}}catch(_0x5e3484){this[_0x48f964(0x102)]=_0x5e3484?.['message']||'Failed\x20to\x20load\x20changes';}finally{this[_0x48f964(0x152)]=!0x1;}},'actionColor':_0x158558=>({'put':'var(--okdb-success)','remove':_0x31845a(0x107),'type_register':_0x31845a(0x127),'type_drop':_0x31845a(0x107),'index_register':_0x31845a(0x126),'index_drop':'var(--okdb-warning)'}[_0x158558]||'var(--okdb-app-fg-muted)'),'actionLabel':_0x2a6b4c=>(_0x2a6b4c||'')[_0x31845a(0x12c)](/_/g,'\x20'),'relTime'(_0x5307f9){const _0xfc4a33=_0x31845a;if(!_0x5307f9)return'—';const _0x504d82=Date[_0xfc4a33(0xf6)]()-_0x5307f9;return _0x504d82<0x1388?_0xfc4a33(0x119):_0x504d82<0xea60?Math[_0xfc4a33(0x159)](_0x504d82/0x3e8)+_0xfc4a33(0x13a):_0x504d82<0x36ee80?Math['round'](_0x504d82/0xea60)+_0xfc4a33(0x175):_0x504d82<0x5265c00?Math[_0xfc4a33(0x159)](_0x504d82/0x36ee80)+'h\x20ago':new Date(_0x5307f9)[_0xfc4a33(0x130)]();},'fmt':_0x4d40ad=>null==_0x4d40ad?'--':Number(_0x4d40ad)['toLocaleString'](),'healthColor':_0x44ccb8=>_0x31845a(0x146)===_0x44ccb8?_0x31845a(0x16e):_0x31845a(0x186)===_0x44ccb8?_0x31845a(0xfd):_0x31845a(0x112)===_0x44ccb8?'var(--okdb-danger)':'stopped'===_0x44ccb8?'var(--okdb-app-fg-muted)':_0x31845a(0x17a),'statusColor':_0x32b830=>_0x31845a(0x15d)===_0x32b830||_0x31845a(0x146)===_0x32b830?'var(--okdb-success)':_0x31845a(0x134)===_0x32b830||_0x31845a(0x186)===_0x32b830?_0x31845a(0xfd):_0x31845a(0x112)===_0x32b830?_0x31845a(0x107):_0x31845a(0x11e)===_0x32b830||'idle'===_0x32b830?_0x31845a(0x16d):'var(--okdb-sky)','pipelineKey'(_0x2c6afa){const _0x529687=_0x31845a;return(_0x2c6afa?.[_0x529687(0x124)]||this[_0x529687(0x17c)])+'::'+(_0x2c6afa?.[_0x529687(0x14c)]||'');},'pipelineLabel':_0x3af25b=>_0x3af25b?.[_0x31845a(0x187)]?.[_0x31845a(0xfe)]||_0x3af25b?.[_0x31845a(0x14c)]||_0x31845a(0x163),'pipelineRoleSummary'(_0x302beb){const _0x33920c=_0x31845a,_0x2b54eb=Array[_0x33920c(0x180)](_0x302beb?.[_0x33920c(0xfc)])?_0x302beb['engines']:[];if(0x0===_0x2b54eb[_0x33920c(0x129)])return _0x33920c(0x10a);const _0x21a656=[];for(const _0x2d3d55 of _0x2b54eb){const _0xee590b=_0x2d3d55?.['role']||_0x2d3d55?.[_0x33920c(0x136)];if(_0xee590b&&!_0x21a656[_0x33920c(0x164)](_0xee590b)&&(_0x21a656['push'](_0xee590b),_0x21a656[_0x33920c(0x129)]>=0x3))break;}return _0x21a656[_0x33920c(0x151)]('\x20·\x20');},'pipelineSeverity'(_0x1ef7d7){const _0x2a964b=_0x31845a,_0x469691=String(_0x1ef7d7?.['health']||'')[_0x2a964b(0x123)](),_0x1833ce=String(_0x1ef7d7?.['status']||'')[_0x2a964b(0x123)]();return _0x2a964b(0x112)===_0x469691||'error'===_0x1833ce?0x0:_0x2a964b(0x186)===_0x469691||_0x2a964b(0x186)===_0x1833ce||_0x2a964b(0x134)===_0x1833ce?0x1:_0x2a964b(0x11e)===_0x469691||_0x2a964b(0x11e)===_0x1833ce||_0x2a964b(0x121)===_0x1833ce?0x2:'online'===_0x469691||_0x2a964b(0x15d)===_0x1833ce||_0x2a964b(0x146)===_0x1833ce?0x3:0x4;},get 'pipelineEngineCount'(){const _0x3b444c=_0x31845a,_0x285cac=new Set();for(const _0x253db4 of this['pipelines'])for(const _0x55f084 of _0x253db4?.[_0x3b444c(0xfc)]||[]){const _0x5a483c=_0x55f084?.['key']||(_0x55f084?.['type']&&_0x55f084?.[_0x3b444c(0x14c)]?_0x55f084[_0x3b444c(0x136)]+'@'+_0x55f084[_0x3b444c(0x14c)]:_0x55f084?.[_0x3b444c(0x14c)])||null;_0x5a483c&&_0x285cac[_0x3b444c(0x109)]((_0x253db4?.['env']||this['envName'])+'::'+_0x5a483c);}return _0x285cac['size'];},get 'pipelineHealthCounts'(){const _0xb294b6=_0x31845a,_0x387be9={'online':0x0,'degraded':0x0,'error':0x0,'stopped':0x0};for(const _0x4e4f7d of this['pipelines']){const _0x806f11=String(_0x4e4f7d?.[_0xb294b6(0x16f)]||'')[_0xb294b6(0x123)]();null!=_0x387be9[_0x806f11]&&(_0x387be9[_0x806f11]+=0x1);}return _0x387be9;},get 'pipelineSummaryText'(){const _0x2c5eb8=_0x31845a,_0x80f1dc=this[_0x2c5eb8(0x177)][_0x2c5eb8(0x129)],_0x15e287=this[_0x2c5eb8(0x155)];return _0x80f1dc+'\x20pipeline'+(0x1===_0x80f1dc?'':'s')+_0x2c5eb8(0xfb)+_0x15e287+_0x2c5eb8(0x11d)+(0x1===_0x15e287?'':'s');},get 'pipelineHighlights'(){const _0x245dc1=_0x31845a;return[...this[_0x245dc1(0x177)]][_0x245dc1(0x148)]((_0x55d8bd,_0x57f129)=>{const _0xaef0ad=_0x245dc1,_0x564e88=this[_0xaef0ad(0x165)](_0x55d8bd)-this[_0xaef0ad(0x165)](_0x57f129);return 0x0!==_0x564e88?_0x564e88:this['pipelineLabel'](_0x55d8bd)[_0xaef0ad(0x12f)](this[_0xaef0ad(0xff)](_0x57f129));})[_0x245dc1(0x140)](0x0,0x4);},async 'loadPipelines'(){const _0x396b9e=_0x31845a;this[_0x396b9e(0x173)]=!0x0,this[_0x396b9e(0x14a)]=null;try{const _0x5ad625=await fetch(_0x5213ef[_0x396b9e(0x12a)][_0x396b9e(0x117)][_0x396b9e(0x10b)][_0x396b9e(0x101)]+'/pipelines'),_0x11875a=await _0x5ad625[_0x396b9e(0x14d)]()[_0x396b9e(0x114)](()=>({}));if(!_0x5ad625['ok'])throw new Error(_0x11875a?.[_0x396b9e(0x112)]?.['message']||'Failed\x20to\x20load\x20pipelines');this[_0x396b9e(0x177)]=_0x11875a?.['data']??_0x11875a?.[_0x396b9e(0x143)]??[];}catch(_0x1c899f){this[_0x396b9e(0x14a)]=_0x1c899f?.[_0x396b9e(0x16c)]||_0x396b9e(0xf8),this[_0x396b9e(0x177)]=[];}finally{this['pipelinesBusy']=!0x1;}},'openPipelinesWorkspace'(_0x3f6b46=null){const _0x3fc33a=_0x31845a,_0x1591a0=_0x5213ef[_0x3fc33a(0x11c)]?.[_0x3fc33a(0x150)];if(!_0x1591a0?.[_0x3fc33a(0x181)]||!_0x1591a0?.[_0x3fc33a(0x10e)])return;const _0xd86368={'env':this[_0x3fc33a(0x17c)],'mode':_0x3fc33a(0x177)};_0x3f6b46?.['name']&&(_0xd86368['pipeline']=_0x3f6b46[_0x3fc33a(0x14c)]),_0x1591a0[_0x3fc33a(0x10e)](_0x1591a0['resolve']('/engines',_0xd86368));},async 'openDemoModal'(){const _0x41eeef=_0x31845a;await _0x5213ef[_0x41eeef(0x12a)][_0x41eeef(0x149)][_0x41eeef(0x125)][_0x41eeef(0x16b)]({'owner':_0x5213ef,'title':_0x41eeef(0x14b),'canDrag':!0x0,'content':'<demo-env-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x5bba6e=>({'modal':_0x5bba6e,'onDone':async _0x930258=>{const _0x37da50=_0x41eeef;_0x5213ef[_0x37da50(0x12a)]['stores'][_0x37da50(0x10b)][_0x37da50(0x122)](_0x930258),await _0x5213ef[_0x37da50(0x12a)]['stores'][_0x37da50(0x10b)][_0x37da50(0x169)](),_0x5213ef[_0x37da50(0x12a)][_0x37da50(0x149)]?.[_0x37da50(0x11f)]?.[_0x37da50(0xf4)]?.(_0x37da50(0x168)+_0x930258+_0x37da50(0x118));}})});},'_unsubs':[],'_reloadTimer':null,'_scheduleReload'(){const _0x3651eb=_0x31845a;clearTimeout(this[_0x3651eb(0x12e)]),this[_0x3651eb(0x12e)]=setTimeout(()=>this[_0x3651eb(0x10d)](),0x258);},async '_reloadTypes'(){const _0x3875d4=_0x31845a;await Promise[_0x3875d4(0x17f)]([_0x5213ef[_0x3875d4(0x12a)][_0x3875d4(0x117)][_0x3875d4(0x10b)]['reloadTypes'](),_0x5213ef[_0x3875d4(0x12a)][_0x3875d4(0x117)][_0x3875d4(0x10b)]['reloadInfo']()]);},async 'loadViolations'(){const _0x10544b=_0x31845a;this[_0x10544b(0x13d)]=!0x0,this[_0x10544b(0x15f)]=null;try{const _0x5dffc9=await fetch(_0x5213ef[_0x10544b(0x12a)][_0x10544b(0x117)][_0x10544b(0x10b)][_0x10544b(0x101)]+_0x10544b(0x12d));if(0x194===_0x5dffc9['status'])return void(this[_0x10544b(0x131)]=[]);if(!_0x5dffc9['ok']){const _0x403104=await _0x5dffc9[_0x10544b(0x14d)]()[_0x10544b(0x114)](()=>({}));throw new Error(_0x403104?.[_0x10544b(0x112)]?.[_0x10544b(0x16c)]||_0x10544b(0x12b));}const _0xaab79c=await _0x5dffc9[_0x10544b(0x14d)]();this[_0x10544b(0x131)]=_0xaab79c?.[_0x10544b(0x111)]?.['violations']??_0xaab79c?.[_0x10544b(0x143)]?.[_0x10544b(0x131)]??[];}catch(_0x16f094){this[_0x10544b(0x15f)]=_0x16f094?.[_0x10544b(0x16c)]||_0x10544b(0x12b),this[_0x10544b(0x131)]=[];}finally{this[_0x10544b(0x13d)]=!0x1;}},get 'violationsByType'(){const _0x48b24a=_0x31845a,_0x455b66=new Map();for(const _0xf8b87f of this[_0x48b24a(0x131)]){const _0x407c89=_0xf8b87f[_0x48b24a(0x136)]||'?';_0x455b66[_0x48b24a(0x184)](_0x407c89)||_0x455b66[_0x48b24a(0x135)](_0x407c89,[]),_0x455b66['get'](_0x407c89)[_0x48b24a(0x10e)](_0xf8b87f);}return[..._0x455b66[_0x48b24a(0x11b)]()]['map'](([_0x4a8dcf,_0x5f147a])=>({'type':_0x4a8dcf,'count':_0x5f147a[_0x48b24a(0x129)],'items':_0x5f147a}))[_0x48b24a(0x148)]((_0x35d589,_0x4d89a0)=>_0x4d89a0[_0x48b24a(0x141)]-_0x35d589['count']);},get 'totalViolations'(){const _0x2dd2af=_0x31845a;return this[_0x2dd2af(0x131)]['length'];},'toggleViolationGroup'(_0x1ab10f){const _0x34479a=_0x31845a;this['expandedViolationType']=this[_0x34479a(0x10c)]===_0x1ab10f?null:_0x1ab10f;},'navigateToType'(_0x28f303){const _0x452b8d=_0x31845a;_0x5213ef[_0x452b8d(0x132)](_0x452b8d(0x115),{'type':_0x28f303});},async 'reloadOverviewData'(){const _0x5a95f9=_0x31845a;await Promise['all']([this[_0x5a95f9(0x10d)](),this['loadPipelines'](),this[_0x5a95f9(0xf7)]()]);},async 'loadTMStatus'(){const _0x56b897=_0x31845a;try{const _0x3ba225=_0x5213ef[_0x56b897(0x12a)][_0x56b897(0x117)][_0x56b897(0x10b)][_0x56b897(0x167)]||_0x56b897(0x128),_0x3fa8c3=await fetch(__ENV__[_0x56b897(0x147)]+_0x56b897(0x179)+encodeURIComponent(_0x3ba225)+_0x56b897(0x170));if(!_0x3fa8c3['ok'])return void(this[_0x56b897(0x120)]={'enabled':!0x1});const _0x589b4e=await _0x3fa8c3['json']();this['tmStatus']=_0x589b4e[_0x56b897(0x143)]??_0x589b4e['data']??{'enabled':!0x1};}catch{this[_0x56b897(0x120)]={'enabled':!0x1};}},async 'enableTM'(){const _0xa1fe26=_0x31845a;if(!this[_0xa1fe26(0x15b)]){this[_0xa1fe26(0x15b)]=!0x0,this[_0xa1fe26(0x13c)]=_0xa1fe26(0x157);try{const _0x25396a=_0x5213ef['$ok'][_0xa1fe26(0x117)][_0xa1fe26(0x10b)]['selectedEnv']||_0xa1fe26(0x128);await fetch(__ENV__['API']+'/env/'+encodeURIComponent(_0x25396a)+_0xa1fe26(0x144),{'method':_0xa1fe26(0x15a)});const _0x5d5294=Date['now']()+0x2710;for(;Date['now']()<_0x5d5294&&(await new Promise(_0x94cc05=>setTimeout(_0x94cc05,0x3e8)),await this[_0xa1fe26(0x137)](),!(this[_0xa1fe26(0x120)]?.[_0xa1fe26(0x13f)]>0x0)););}catch{}this[_0xa1fe26(0x15b)]=!0x1,this[_0xa1fe26(0x13c)]='';}},async 'disableTM'(){const _0x3e66e7=_0x31845a;if(!this[_0x3e66e7(0x15b)]){this['tmBusy']=!0x0;try{const _0x21b26e=_0x5213ef[_0x3e66e7(0x12a)][_0x3e66e7(0x117)][_0x3e66e7(0x10b)]['selectedEnv']||_0x3e66e7(0x128);await fetch(__ENV__[_0x3e66e7(0x147)]+_0x3e66e7(0x179)+encodeURIComponent(_0x21b26e)+_0x3e66e7(0x144),{'method':'DELETE'}),await this[_0x3e66e7(0x137)]();}catch{}this[_0x3e66e7(0x15b)]=!0x1;}}}),'init'(_0x3015c1){const _0xd023a6=_0x31845a;this['loadTMStatus'](),_0x3015c1[_0xd023a6(0x17e)](()=>_0x3015c1[_0xd023a6(0x12a)]['stores'][_0xd023a6(0x10b)][_0xd023a6(0x167)],()=>{const _0x4906f4=_0xd023a6;this['reloadOverviewData'](),this[_0x4906f4(0x137)]();});},'mount'(){const _0x21af7f=_0x31845a;this[_0x21af7f(0x176)]();const _0x21922e=()=>this[_0x21af7f(0x13e)]();this[_0x21af7f(0x100)]=[_0x151063['on'](_0x21af7f(0x138),()=>this[_0x21af7f(0xf5)]()),_0x151063['on'](_0x21af7f(0x156),()=>this[_0x21af7f(0xf5)]()),_0x151063['on'](_0x21af7f(0xf9),()=>this[_0x21af7f(0xf5)]()),_0x151063['on']('index:drop',()=>this[_0x21af7f(0xf5)]()),_0x151063['on']('engine:started',_0x21922e),_0x151063['on'](_0x21af7f(0x108),_0x21922e),_0x151063['on'](_0x21af7f(0x172),_0x21922e),_0x151063['on'](_0x21af7f(0xfa),_0x21922e),_0x151063['on'](_0x21af7f(0x158),_0x21922e),_0x151063['on'](_0x21af7f(0x133),_0x21922e),_0x151063['on'](_0x21af7f(0x160),_0x21922e),_0x151063['on'](_0x21af7f(0x14e),_0x21922e),_0x151063['on']('item:create',()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x17d),()=>this[_0x21af7f(0x162)]()),_0x151063['on']('item:remove',()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x113),()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x139),()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x10f),()=>this[_0x21af7f(0x162)]())];},'unmount'(){const _0x24df3d=_0x31845a;clearTimeout(this['_reloadTimer']);for(const _0x23a28a of this[_0x24df3d(0x100)])_0x23a28a();this[_0x24df3d(0x100)]=[];},'template':_0x31845a(0x103),'style':_0x31845a(0x171)};
1
+ const _0x13dc4f=_0x5def;function _0x5def(_0x47b6f7,_0x40270e){_0x47b6f7=_0x47b6f7-0xf9;const _0x513b2d=_0x513b();let _0x5def64=_0x513b2d[_0x47b6f7];return _0x5def64;}(function(_0x4b37ab,_0x270c82){const _0x3a8976=_0x5def,_0xfa1405=_0x4b37ab();while(!![]){try{const _0x548950=parseInt(_0x3a8976(0x18c))/0x1+-parseInt(_0x3a8976(0x101))/0x2*(parseInt(_0x3a8976(0x17c))/0x3)+parseInt(_0x3a8976(0x175))/0x4*(parseInt(_0x3a8976(0x158))/0x5)+-parseInt(_0x3a8976(0x10a))/0x6+-parseInt(_0x3a8976(0x15f))/0x7+parseInt(_0x3a8976(0x16a))/0x8*(-parseInt(_0x3a8976(0x156))/0x9)+parseInt(_0x3a8976(0x14a))/0xa;if(_0x548950===_0x270c82)break;else _0xfa1405['push'](_0xfa1405['shift']());}catch(_0x409706){_0xfa1405['push'](_0xfa1405['shift']());}}}(_0x513b,0xd3f72));function _0x513b(){const _0x48c45b=['keys','loadRecent','var(--okdb-sky)','join','db-overview','pipeline:delete','_unsubs','recentError','20208010KAvGVe','/env/','/time-machine/enable','toLowerCase','types','h\x20ago','Failed\x20to\x20load\x20changes','count','var(--okdb-accent)','engine:started','pipelinesError','/pipelines','9xiPJuB','replace','75265ZslxJQ','engines','reloadOverviewData','tmScanMsg','_reloadTypes','/time-machine/status','data','5382272SaMIUK','reloadTypes','indexes','open','online','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:20px;\x20max-width:860px;\x22>\x0a\x0a\x20\x20<!--\x20Header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:18px;\x22>Database\x20Overview</div>\x0a\x20\x20\x20\x20<if\x20:=\x22recentBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>updating…</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadRecent()\x22\x20:disabled=\x22recentBusy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20↻\x20Refresh\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Stat\x20cards\x20row\x20-->\x0a\x20\x20<div\x20class=\x22ov-stat-row\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>DB\x20Size</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--accent);\x22>{{\x20approxSize\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Clock</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22font-family:monospace;\x20font-size:18px;\x22>{{\x20fmt(info?.clock)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>User\x20Types</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-purple);\x22>{{\x20types.length\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Total\x20Records</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20fmt(totalRecords)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Empty\x20state\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Standard\x20empty\x20hint\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20margin-bottom:12px;\x22>🗄️</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:15px;\x20margin-bottom:5px;\x22>No\x20types\x20registered\x20yet</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20opacity:.6;\x20line-height:1.7;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20<b>Register\x20Type\x20+</b>\x20in\x20the\x20sidebar\x20to\x20create\x20your\x20first\x20collection.<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Types\x20are\x20strongly-typed\x20document\x20collections\x20stored\x20in\x20LMDB.\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<!--\x20Demo\x20data\x20card\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card\x22\x20@click=\x22openDemoModal()\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__aurora\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22position:relative;\x20z-index:1;\x20display:flex;\x20flex-direction:column;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__sparkle\x22>✦</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__title\x22>Generate\x20Demo\x20Environment</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__desc\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Instantly\x20populate\x20a\x20new\x20environment\x20with\x20realistic\x20data,\x20indexes,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20and\x20full-text\x20search\x20—\x20ready\x20to\x20explore\x20in\x20seconds.\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=\x22ov-demo-card__badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent);\x22>🛒\x20E-Commerce</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-accent);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x22>📊\x20Analytics</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-purple);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-purple)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x22>📝\x20Content\x20Hub</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-warning)\x207%,\x20transparent);\x22>👥\x20Team\x20Directory</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-orange);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-orange)\x207%,\x20transparent);\x22>🗺️\x20City\x20Explorer</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=\x22ov-demo-card__cta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Choose\x20a\x20preset</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:6px;\x20font-size:14px;\x22>→</span>\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</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Types\x20table\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Types</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20types.length\x20}}\x20user&nbsp;·&nbsp;{{\x20systemTypes.length\x20}}\x20system\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20class=\x22ov-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th>Name</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Records</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Pages</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Indexes</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th></th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22types\x22\x20let:item=\x22t\x22\x20class=\x22ov-row\x22\x20@click=\x22select(t)\x22\x20title=\x22Open\x20in\x20type\x20viewer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x22>{{\x20t.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20color:var(--accent);\x20font-weight:600;\x22>{{\x20fmt(t.count)\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.5;\x20font-size:12px;\x22>{{\x20fmt(typePages(t.type))\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIndexCount(t.type)\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:1px\x207px;\x20border-radius:999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x2033%,\x20transparent);\x20color:var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:11px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>{{\x20typeIndexCount(t.type)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIndexCount(t.type)\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.3;\x22>—</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.3;\x20font-size:11px;\x20padding-right:16px;\x22>→</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Violations\x20summary\x20-->\x0a\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x20||\x20violationsBusy\x20||\x20violationsError\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Schema\x20Violations</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20font-weight:600;\x22>{{\x20totalViolations\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>across\x20all\x20types\x20in\x20{{\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadViolations()\x22\x20:disabled=\x22violationsBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsBusy\x20&&\x20violations.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.45;\x22>Loading…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px\x2016px;\x20color:var(--okdb-danger);\x20font-size:12px;\x22>{{\x20violationsError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!violationsBusy\x20&&\x20!violationsError\x20&&\x20violationsByType.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.4;\x22>No\x20violations.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsByType.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22violationsByType\x22\x20let:item=\x22grp\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20type\x20group\x20header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-group\x22\x20@click=\x22toggleViolationGroup(grp.type)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-viol-arrow\x22\x20:style=\x22expandedViolationType\x20===\x20grp.type\x20?\x20\x27transform:rotate(90deg)\x27\x20:\x20\x27\x27\x22>›</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x20flex:1;\x22>{{\x20grp.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20margin-right:8px;\x22>{{\x20grp.count\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click:stop=\x22navigateToType(grp.type)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:5px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:transparent;\x20color:var(--okdb-sky);\x20cursor:pointer;\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20Schema\x20tab\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Schema\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20expanded\x20violations\x20for\x20this\x20type\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22expandedViolationType\x20===\x20grp.type\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22grp.items\x22\x20let:item=\x22v\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:11px;\x20color:var(--okdb-json-key);\x20flex:1;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20v.key\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.45;\x20white-space:nowrap;\x20margin-left:8px;\x22>{{\x20(v.errors\x20??\x20[]).length\x20||\x20(v.errorCount\x20??\x200)\x20}}\x20error(s)</span>\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</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Time\x20Machine\x20card\x20-->\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:13px;\x22>⏱\x20Time\x20Machine</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!tmStatus\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>loading…</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22tmStatus.enabled\x20?\x20disableTM()\x20:\x20enableTM()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27font-size:11px;\x20padding:2px\x2010px;\x20color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20border-color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent)\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent)\x27)\x20+\x20\x27;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20tmStatus.enabled\x20?\x20\x27Disable\x27\x20:\x20\x27Enable\x27\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>{{\x20tmScanMsg\x20||\x20\x27…\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20flex-direction:column;\x20gap:3px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>tracking\x20since\x20clock\x20{{\x20tmStatus.startClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20!==\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>last\x20processed:\x20{{\x20tmStatus.lastProcessedClock\x20}}\x20·\x20env\x20at:\x20{{\x20tmStatus.envClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20===\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>processed\x20through\x20clock\x20{{\x20tmStatus.lastProcessedClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20tmStatus.headCount\x20}}\x20heads</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>disabled</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22ov-card\x22\x20style=\x22overflow:visible;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Pipelines</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>overview\x20highlights\x20for\x20the\x20current\x20environment</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:16px;\x20display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-headline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x20min-width:0;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x20color:var(--okdb-app-fg);\x22>{{\x20pipelineSummaryText\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.error\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:var(--okdb-danger);border-color:var(--okdb-danger-deep-border);background:#450a0a33;\x27\x22>{{\x20pipelineHealthCounts.error\x20}}\x20error</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.degraded\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#fcd34d;border-color:#854d0e;background:#451a0333;\x27\x22>{{\x20pipelineHealthCounts.degraded\x20}}\x20degraded</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\x20\x20<if\x20:=\x22pipelineHealthCounts.online\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#86efac;border-color:#166534;background:#052e1633;\x27\x22>{{\x20pipelineHealthCounts.online\x20}}\x20online</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\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:640px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20The\x20overview\x20should\x20only\x20surface\x20high-signal\x20pipeline\x20highlights.\x20Open\x20the\x20dedicated\x20workspace\x20when\x20you\x20want\x20the\x20full\x20grouped\x20pipeline\x20list\x20and\x20member\x20details.\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\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadPipelines()\x22\x20:disabled=\x22pipelinesBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openPipelinesWorkspace()\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x22>Open\x20pipelines\x20workspace\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-error\x22>{{\x20pipelinesError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x22>Loading\x20pipeline\x20highlights…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:24px;\x20opacity:.3;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.78;\x22>No\x20pipelines\x20in\x20{{\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20will\x20appear\x20here\x20once\x20created\x20or\x20synced.\x20This\x20frontpage\x20intentionally\x20stays\x20compact\x20and\x20only\x20shows\x20a\x20small\x20highlight\x20list.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHighlights.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22pipelineHighlights\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22ov-pipeline-highlight\x22\x20@click=\x22openPipelinesWorkspace(pipeline)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:9px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineLabel(pipeline)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:11px;color:\x27\x20+\x20healthColor(pipeline.health)\x20+\x20\x27;opacity:.95;white-space:nowrap;\x27\x22>{{\x20pipeline.health\x20||\x20\x27unknown\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:12px;\x20flex-wrap:wrap;\x20margin-top:6px;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Members:</span>\x20<span\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20fmt(pipeline.engines?.length\x20||\x200)\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipeline.status\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Status:</span>\x20<span\x20:style=\x22\x27color:\x27\x20+\x20statusColor(pipeline.status)\x22>{{\x20pipeline.status\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineRoleSummary(pipeline)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelines.length\x20>\x20pipelineHighlights.length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Showing\x20{{\x20pipelineHighlights.length\x20}}\x20of\x20{{\x20pipelines.length\x20}}\x20pipelines.\x20Open\x20the\x20dedicated\x20workspace\x20for\x20the\x20full\x20inventory.\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Recent\x20activity\x20-->\x0a\x20\x20<if\x20:=\x22recentChanges.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Recent\x20Activity</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-left:auto;\x22>last\x20{{\x20recentChanges.length\x20}}\x20changes</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:100%;\x20border-collapse:collapse;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22recentChanges\x22\x20let:item=\x22ch\x22\x20class=\x22ov-row\x20ov-row--sm\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20width:60px;\x20font-family:monospace;\x20opacity:.4;\x20padding-left:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.clock\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22width:100px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:10px;\x20padding:2px\x206px;\x20border-radius:3px;\x20border:1px\x20solid;\x20color:\x27+actionColor(ch.action)+\x27;\x20border-color:\x27+actionColor(ch.action)+\x2755;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionLabel(ch.action)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.7;\x20max-width:110px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.type\x20||\x20\x27—\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.45;\x20max-width:160px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.key\x20||\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20opacity:.35;\x20white-space:nowrap;\x20font-size:11px;\x20padding-right:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20relTime(ch.timestamp)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','get','tmBusy','tmStatus','index:drop','type:registered','9733384buejsm','DELETE','loadViolations','shared','message','building','\x20·\x20','index:registered','_scheduleReload','engine:uninstalled','add','440MbCMxG','pipelinesBusy','item:remove','pipeline:stop','No\x20members','role','s\x20ago','309189OYePOm','violationsBusy','isArray','envName','system:clock_change','Failed\x20to\x20load\x20violations','health','$watch','length','$dispatch','okdb','stores','recentBusy','env','meta','var(--okdb-danger)','891296LWCvPN','stopped','violationsError','all','sync:apply','var(--okdb-success)','POST','scanning…','_reloadTimer','API','apiBase','22CvpWdN','json','map','resolve','reloadEnvs','success','system:poke','engine:error','\x20pipeline','3482730sStoOQ','info','selectedEnv','pipelineLabel','error','var(--okdb-warning)','pipelineSeverity','pipeline:start','toast','item:create','/engines','push','localeCompare','filter','/changelog?limit=10','catch','type','toLocaleString','toFixed','round','/violations','idle','name','status','expandedViolationType','set','startsWith','result','pageSize','pages','$ok','lastProcessedClock','loadPipelines','label','Failed\x20to\x20load\x20pipelines','pipelines','loadTMStatus','just\x20now','reduce','degraded','slice','violations','now','default','sort','Unnamed\x20pipeline','$vars','key','reloadInfo','entries','\x20engine','includes','var(--okdb-app-fg-muted)','running','has','$router'];_0x513b=function(){return _0x48c45b;};return _0x513b();}import _0x549d2d from'../../../stores/events-store.js';import _0x2eefd5 from'../modals/demo-env-modal.ok.js';export default{'tag':_0x13dc4f(0x146),'dependencies':[_0x2eefd5],'attr':{'stats':{}},'context':_0x926488=>({'recentChanges':[],'recentBusy':!0x1,'recentError':null,'pipelines':[],'pipelinesBusy':!0x1,'pipelinesError':null,'violations':[],'violationsBusy':!0x1,'violationsError':null,'expandedViolationType':null,'tmStatus':null,'tmBusy':!0x1,'tmScanMsg':'',get 'info'(){const _0x40bb28=_0x13dc4f;return _0x926488[_0x40bb28(0x128)][_0x40bb28(0x187)][_0x40bb28(0x186)][_0x40bb28(0x10b)];},get 'types'(){const _0x4b56a8=_0x13dc4f;return(_0x926488[_0x4b56a8(0x128)][_0x4b56a8(0x187)][_0x4b56a8(0x186)][_0x4b56a8(0x14e)]||[])[_0x4b56a8(0x117)](_0x976b87=>!_0x976b87['type'][_0x4b56a8(0x124)]('~'))[_0x4b56a8(0x136)]((_0x26bb97,_0x3dceb2)=>_0x26bb97[_0x4b56a8(0x11a)][_0x4b56a8(0x116)](_0x3dceb2[_0x4b56a8(0x11a)]));},get 'systemTypes'(){const _0x39200e=_0x13dc4f;return(_0x926488[_0x39200e(0x128)][_0x39200e(0x187)][_0x39200e(0x186)][_0x39200e(0x14e)]||[])['filter'](_0x937170=>_0x937170[_0x39200e(0x11a)]['startsWith']('~'));},get 'envName'(){const _0x3c8c4b=_0x13dc4f;return _0x926488[_0x3c8c4b(0x128)][_0x3c8c4b(0x187)][_0x3c8c4b(0x186)][_0x3c8c4b(0x10c)]||_0x3c8c4b(0x135);},get 'totalRecords'(){const _0x12e899=_0x13dc4f;return(_0x926488[_0x12e899(0x128)][_0x12e899(0x187)][_0x12e899(0x186)]['types']||[])[_0x12e899(0x117)](_0x1cea3f=>!_0x1cea3f[_0x12e899(0x11a)]['startsWith']('~'))[_0x12e899(0x130)]((_0x1122aa,_0x386777)=>_0x1122aa+(_0x386777[_0x12e899(0x151)]||0x0),0x0);},get 'approxSize'(){const _0x3d2dde=_0x13dc4f,_0x13c82d=this[_0x3d2dde(0x10b)]?.['lastPageNumber'],_0x307351=this[_0x3d2dde(0x10b)]?.[_0x3d2dde(0x126)];if(!_0x13c82d||!_0x307351)return'--';let _0x4f6475=_0x13c82d*_0x307351;const _0x48f46d=['B','KB','MB','GB','TB'];let _0x46233f=0x0;for(;_0x4f6475>=0x400&&_0x46233f<_0x48f46d[_0x3d2dde(0x184)]-0x1;)_0x4f6475/=0x400,_0x46233f++;return _0x4f6475[_0x3d2dde(0x11c)](0x2)+'\x20'+_0x48f46d[_0x46233f];},'typeIndexCount'(_0x156bca){const _0x35b067=_0x13dc4f,_0xc269d9=this[_0x35b067(0x10b)]?.[_0x35b067(0x14e)]?.[_0x156bca]?.[_0x35b067(0x161)];return _0xc269d9?Object[_0x35b067(0x142)](_0xc269d9)[_0x35b067(0x184)]:0x0;},'typePages'(_0x1b20ef){const _0x30c293=_0x13dc4f;return this[_0x30c293(0x10b)]?.['types']?.[_0x1b20ef]?.[_0x30c293(0x15e)]?.[_0x30c293(0x127)]??null;},'select'(_0x2849fd){const _0x3ef11e=_0x13dc4f;_0x926488[_0x3ef11e(0x185)]('select',_0x2849fd);},async 'loadRecent'(){const _0x19738d=_0x13dc4f;this[_0x19738d(0x188)]=!0x0,this[_0x19738d(0x149)]=null;try{const _0x392dd7=await fetch(_0x926488[_0x19738d(0x128)][_0x19738d(0x187)]['okdb'][_0x19738d(0x100)]+_0x19738d(0x118));if(_0x392dd7['ok']){const _0x49f689=await _0x392dd7['json']();this['recentChanges']=_0x49f689[_0x19738d(0x15e)]??[];}}catch(_0x30667c){this['recentError']=_0x30667c?.[_0x19738d(0x16e)]||_0x19738d(0x150);}finally{this['recentBusy']=!0x1;}},'actionColor':_0x37e83f=>({'put':_0x13dc4f(0xfb),'remove':'var(--okdb-danger)','type_register':_0x13dc4f(0x152),'type_drop':_0x13dc4f(0x18b),'index_register':'var(--okdb-purple)','index_drop':'var(--okdb-warning)'}[_0x37e83f]||_0x13dc4f(0x13e)),'actionLabel':_0x575814=>(_0x575814||'')[_0x13dc4f(0x157)](/_/g,'\x20'),'relTime'(_0xcdea4){const _0xb8a06c=_0x13dc4f;if(!_0xcdea4)return'—';const _0x3464c4=Date[_0xb8a06c(0x134)]()-_0xcdea4;return _0x3464c4<0x1388?_0xb8a06c(0x12f):_0x3464c4<0xea60?Math['round'](_0x3464c4/0x3e8)+_0xb8a06c(0x17b):_0x3464c4<0x36ee80?Math[_0xb8a06c(0x11d)](_0x3464c4/0xea60)+'m\x20ago':_0x3464c4<0x5265c00?Math['round'](_0x3464c4/0x36ee80)+_0xb8a06c(0x14f):new Date(_0xcdea4)['toLocaleDateString']();},'fmt':_0x2a20c5=>null==_0x2a20c5?'--':Number(_0x2a20c5)[_0x13dc4f(0x11b)](),'healthColor':_0x3846ca=>_0x13dc4f(0x163)===_0x3846ca?_0x13dc4f(0xfb):'degraded'===_0x3846ca?_0x13dc4f(0x10f):_0x13dc4f(0x10e)===_0x3846ca?_0x13dc4f(0x18b):_0x13dc4f(0x18d)===_0x3846ca?_0x13dc4f(0x13e):_0x13dc4f(0x144),'statusColor':_0x58a4b2=>'running'===_0x58a4b2||_0x13dc4f(0x163)===_0x58a4b2?'var(--okdb-success)':_0x13dc4f(0x16f)===_0x58a4b2||_0x13dc4f(0x131)===_0x58a4b2?'var(--okdb-warning)':_0x13dc4f(0x10e)===_0x58a4b2?_0x13dc4f(0x18b):_0x13dc4f(0x18d)===_0x58a4b2||'idle'===_0x58a4b2?_0x13dc4f(0x13e):_0x13dc4f(0x144),'pipelineKey'(_0x5acd60){const _0x3f4dd4=_0x13dc4f;return(_0x5acd60?.['env']||this[_0x3f4dd4(0x17f)])+'::'+(_0x5acd60?.['name']||'');},'pipelineLabel':_0x38cf55=>_0x38cf55?.[_0x13dc4f(0x18a)]?.[_0x13dc4f(0x12b)]||_0x38cf55?.[_0x13dc4f(0x120)]||_0x13dc4f(0x137),'pipelineRoleSummary'(_0x4591a2){const _0x42d06f=_0x13dc4f,_0x2a6cac=Array[_0x42d06f(0x17e)](_0x4591a2?.[_0x42d06f(0x159)])?_0x4591a2[_0x42d06f(0x159)]:[];if(0x0===_0x2a6cac['length'])return _0x42d06f(0x179);const _0x74d43e=[];for(const _0x5c4f95 of _0x2a6cac){const _0x4b74b9=_0x5c4f95?.[_0x42d06f(0x17a)]||_0x5c4f95?.[_0x42d06f(0x11a)];if(_0x4b74b9&&!_0x74d43e[_0x42d06f(0x13d)](_0x4b74b9)&&(_0x74d43e[_0x42d06f(0x115)](_0x4b74b9),_0x74d43e[_0x42d06f(0x184)]>=0x3))break;}return _0x74d43e[_0x42d06f(0x145)](_0x42d06f(0x170));},'pipelineSeverity'(_0x441e54){const _0x40cfed=_0x13dc4f,_0x4ae47c=String(_0x441e54?.[_0x40cfed(0x182)]||'')[_0x40cfed(0x14d)](),_0x1981c6=String(_0x441e54?.[_0x40cfed(0x121)]||'')[_0x40cfed(0x14d)]();return _0x40cfed(0x10e)===_0x4ae47c||_0x40cfed(0x10e)===_0x1981c6?0x0:_0x40cfed(0x131)===_0x4ae47c||'degraded'===_0x1981c6||_0x40cfed(0x16f)===_0x1981c6?0x1:_0x40cfed(0x18d)===_0x4ae47c||_0x40cfed(0x18d)===_0x1981c6||_0x40cfed(0x11f)===_0x1981c6?0x2:_0x40cfed(0x163)===_0x4ae47c||_0x40cfed(0x13f)===_0x1981c6||_0x40cfed(0x163)===_0x1981c6?0x3:0x4;},get 'pipelineEngineCount'(){const _0x529155=_0x13dc4f,_0x218e55=new Set();for(const _0x4d23a5 of this[_0x529155(0x12d)])for(const _0x1a232b of _0x4d23a5?.[_0x529155(0x159)]||[]){const _0x430b04=_0x1a232b?.[_0x529155(0x139)]||(_0x1a232b?.[_0x529155(0x11a)]&&_0x1a232b?.[_0x529155(0x120)]?_0x1a232b[_0x529155(0x11a)]+'@'+_0x1a232b[_0x529155(0x120)]:_0x1a232b?.[_0x529155(0x120)])||null;_0x430b04&&_0x218e55[_0x529155(0x174)]((_0x4d23a5?.[_0x529155(0x189)]||this[_0x529155(0x17f)])+'::'+_0x430b04);}return _0x218e55['size'];},get 'pipelineHealthCounts'(){const _0x3f2808=_0x13dc4f,_0x129c47={'online':0x0,'degraded':0x0,'error':0x0,'stopped':0x0};for(const _0x1de4a of this['pipelines']){const _0x4f27c0=String(_0x1de4a?.[_0x3f2808(0x182)]||'')[_0x3f2808(0x14d)]();null!=_0x129c47[_0x4f27c0]&&(_0x129c47[_0x4f27c0]+=0x1);}return _0x129c47;},get 'pipelineSummaryText'(){const _0x2ffc1d=_0x13dc4f,_0x50d0c7=this[_0x2ffc1d(0x12d)][_0x2ffc1d(0x184)],_0xfb879d=this['pipelineEngineCount'];return _0x50d0c7+_0x2ffc1d(0x109)+(0x1===_0x50d0c7?'':'s')+'\x20·\x20'+_0xfb879d+_0x2ffc1d(0x13c)+(0x1===_0xfb879d?'':'s');},get 'pipelineHighlights'(){const _0x4a4824=_0x13dc4f;return[...this[_0x4a4824(0x12d)]]['sort']((_0x583a92,_0x225b25)=>{const _0x35562b=_0x4a4824,_0x9eb74b=this[_0x35562b(0x110)](_0x583a92)-this[_0x35562b(0x110)](_0x225b25);return 0x0!==_0x9eb74b?_0x9eb74b:this[_0x35562b(0x10d)](_0x583a92)[_0x35562b(0x116)](this[_0x35562b(0x10d)](_0x225b25));})[_0x4a4824(0x132)](0x0,0x4);},async 'loadPipelines'(){const _0x9f864=_0x13dc4f;this[_0x9f864(0x176)]=!0x0,this[_0x9f864(0x154)]=null;try{const _0x19ffad=await fetch(_0x926488['$ok'][_0x9f864(0x187)][_0x9f864(0x186)][_0x9f864(0x100)]+_0x9f864(0x155)),_0x2d3918=await _0x19ffad[_0x9f864(0x102)]()[_0x9f864(0x119)](()=>({}));if(!_0x19ffad['ok'])throw new Error(_0x2d3918?.['error']?.[_0x9f864(0x16e)]||_0x9f864(0x12c));this[_0x9f864(0x12d)]=_0x2d3918?.[_0x9f864(0x15e)]??_0x2d3918?.[_0x9f864(0x125)]??[];}catch(_0x5ccff7){this[_0x9f864(0x154)]=_0x5ccff7?.['message']||_0x9f864(0x12c),this['pipelines']=[];}finally{this[_0x9f864(0x176)]=!0x1;}},'openPipelinesWorkspace'(_0x84862e=null){const _0x5ee77f=_0x13dc4f,_0xca4400=_0x926488[_0x5ee77f(0x138)]?.[_0x5ee77f(0x141)];if(!_0xca4400?.[_0x5ee77f(0x104)]||!_0xca4400?.[_0x5ee77f(0x115)])return;const _0x482e47={'env':this['envName'],'mode':_0x5ee77f(0x12d)};_0x84862e?.[_0x5ee77f(0x120)]&&(_0x482e47['pipeline']=_0x84862e[_0x5ee77f(0x120)]),_0xca4400['push'](_0xca4400['resolve'](_0x5ee77f(0x114),_0x482e47));},async 'openDemoModal'(){const _0x3cd187=_0x13dc4f;await _0x926488['$ok'][_0x3cd187(0x16d)]['modal'][_0x3cd187(0x162)]({'owner':_0x926488,'title':'<span\x20style=\x22background:linear-gradient(135deg,var(--okdb-accent),var(--okdb-purple)\x2050%,var(--okdb-success));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;font-size:15px;\x22>✦\x20Demo\x20Environment</span>','canDrag':!0x0,'content':'<demo-env-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x3ca8f5=>({'modal':_0x3ca8f5,'onDone':async _0x55cbee=>{const _0x5614a0=_0x3cd187;_0x926488[_0x5614a0(0x128)][_0x5614a0(0x187)][_0x5614a0(0x186)]['selectEnv'](_0x55cbee),await _0x926488[_0x5614a0(0x128)][_0x5614a0(0x187)][_0x5614a0(0x186)][_0x5614a0(0x105)](),_0x926488[_0x5614a0(0x128)][_0x5614a0(0x16d)]?.[_0x5614a0(0x112)]?.[_0x5614a0(0x106)]?.('✦\x20Demo\x20environment\x20\x22'+_0x55cbee+'\x22\x20is\x20ready!');}})});},'_unsubs':[],'_reloadTimer':null,'_scheduleReload'(){const _0x1b08ec=_0x13dc4f;clearTimeout(this[_0x1b08ec(0xfe)]),this['_reloadTimer']=setTimeout(()=>this[_0x1b08ec(0x143)](),0x258);},async '_reloadTypes'(){const _0xa6add0=_0x13dc4f;await Promise[_0xa6add0(0xf9)]([_0x926488[_0xa6add0(0x128)][_0xa6add0(0x187)]['okdb'][_0xa6add0(0x160)](),_0x926488[_0xa6add0(0x128)][_0xa6add0(0x187)][_0xa6add0(0x186)][_0xa6add0(0x13a)]()]);},async 'loadViolations'(){const _0x5e75ee=_0x13dc4f;this[_0x5e75ee(0x17d)]=!0x0,this['violationsError']=null;try{const _0x5651ac=await fetch(_0x926488[_0x5e75ee(0x128)]['stores'][_0x5e75ee(0x186)][_0x5e75ee(0x100)]+_0x5e75ee(0x11e));if(0x194===_0x5651ac[_0x5e75ee(0x121)])return void(this[_0x5e75ee(0x133)]=[]);if(!_0x5651ac['ok']){const _0x561335=await _0x5651ac['json']()[_0x5e75ee(0x119)](()=>({}));throw new Error(_0x561335?.[_0x5e75ee(0x10e)]?.[_0x5e75ee(0x16e)]||_0x5e75ee(0x181));}const _0x1ce8db=await _0x5651ac[_0x5e75ee(0x102)]();this[_0x5e75ee(0x133)]=_0x1ce8db?.['data']?.[_0x5e75ee(0x133)]??_0x1ce8db?.[_0x5e75ee(0x125)]?.[_0x5e75ee(0x133)]??[];}catch(_0x309e5a){this[_0x5e75ee(0x18e)]=_0x309e5a?.['message']||'Failed\x20to\x20load\x20violations',this[_0x5e75ee(0x133)]=[];}finally{this[_0x5e75ee(0x17d)]=!0x1;}},get 'violationsByType'(){const _0x542111=_0x13dc4f,_0x238c3f=new Map();for(const _0x3b0fdc of this[_0x542111(0x133)]){const _0x50b8d3=_0x3b0fdc[_0x542111(0x11a)]||'?';_0x238c3f[_0x542111(0x140)](_0x50b8d3)||_0x238c3f[_0x542111(0x123)](_0x50b8d3,[]),_0x238c3f[_0x542111(0x165)](_0x50b8d3)[_0x542111(0x115)](_0x3b0fdc);}return[..._0x238c3f[_0x542111(0x13b)]()][_0x542111(0x103)](([_0x53137a,_0x239ec1])=>({'type':_0x53137a,'count':_0x239ec1[_0x542111(0x184)],'items':_0x239ec1}))[_0x542111(0x136)]((_0x489afb,_0x32ea90)=>_0x32ea90[_0x542111(0x151)]-_0x489afb[_0x542111(0x151)]);},get 'totalViolations'(){const _0x5d4a0a=_0x13dc4f;return this[_0x5d4a0a(0x133)][_0x5d4a0a(0x184)];},'toggleViolationGroup'(_0x8b6151){const _0x415ee8=_0x13dc4f;this['expandedViolationType']=this[_0x415ee8(0x122)]===_0x8b6151?null:_0x8b6151;},'navigateToType'(_0x46e0d7){const _0x3b9d95=_0x13dc4f;_0x926488[_0x3b9d95(0x185)]('select',{'type':_0x46e0d7});},async 'reloadOverviewData'(){const _0x4dc829=_0x13dc4f;await Promise['all']([this['loadRecent'](),this[_0x4dc829(0x12a)](),this[_0x4dc829(0x16c)]()]);},async 'loadTMStatus'(){const _0x4bf6e9=_0x13dc4f;try{const _0x5e902f=_0x926488[_0x4bf6e9(0x128)][_0x4bf6e9(0x187)][_0x4bf6e9(0x186)]['selectedEnv']||'default',_0xf41309=await fetch(__ENV__[_0x4bf6e9(0xff)]+'/env/'+encodeURIComponent(_0x5e902f)+_0x4bf6e9(0x15d));if(!_0xf41309['ok'])return void(this[_0x4bf6e9(0x167)]={'enabled':!0x1});const _0x5ac8aa=await _0xf41309['json']();this[_0x4bf6e9(0x167)]=_0x5ac8aa[_0x4bf6e9(0x125)]??_0x5ac8aa[_0x4bf6e9(0x15e)]??{'enabled':!0x1};}catch{this['tmStatus']={'enabled':!0x1};}},async 'enableTM'(){const _0x56590d=_0x13dc4f;if(!this[_0x56590d(0x166)]){this['tmBusy']=!0x0,this[_0x56590d(0x15b)]=_0x56590d(0xfd);try{const _0x40a34e=_0x926488[_0x56590d(0x128)][_0x56590d(0x187)][_0x56590d(0x186)][_0x56590d(0x10c)]||_0x56590d(0x135);await fetch(__ENV__[_0x56590d(0xff)]+_0x56590d(0x14b)+encodeURIComponent(_0x40a34e)+_0x56590d(0x14c),{'method':_0x56590d(0xfc)});const _0x156c90=Date[_0x56590d(0x134)]()+0x2710;for(;Date[_0x56590d(0x134)]()<_0x156c90&&(await new Promise(_0x4b6c57=>setTimeout(_0x4b6c57,0x3e8)),await this[_0x56590d(0x12e)](),!(this['tmStatus']?.[_0x56590d(0x129)]>0x0)););}catch{}this[_0x56590d(0x166)]=!0x1,this[_0x56590d(0x15b)]='';}},async 'disableTM'(){const _0x2b5a29=_0x13dc4f;if(!this[_0x2b5a29(0x166)]){this['tmBusy']=!0x0;try{const _0x1a2fb0=_0x926488[_0x2b5a29(0x128)][_0x2b5a29(0x187)][_0x2b5a29(0x186)]['selectedEnv']||_0x2b5a29(0x135);await fetch(__ENV__[_0x2b5a29(0xff)]+'/env/'+encodeURIComponent(_0x1a2fb0)+_0x2b5a29(0x14c),{'method':_0x2b5a29(0x16b)}),await this['loadTMStatus']();}catch{}this[_0x2b5a29(0x166)]=!0x1;}}}),'init'(_0x190c0d){const _0x243098=_0x13dc4f;this[_0x243098(0x12e)](),_0x190c0d[_0x243098(0x183)](()=>_0x190c0d[_0x243098(0x128)][_0x243098(0x187)][_0x243098(0x186)][_0x243098(0x10c)],()=>{const _0x48ab1e=_0x243098;this[_0x48ab1e(0x15a)](),this[_0x48ab1e(0x12e)]();});},'mount'(){const _0x246282=_0x13dc4f;this[_0x246282(0x15a)]();const _0x51e189=()=>this[_0x246282(0x12a)]();this[_0x246282(0x148)]=[_0x549d2d['on'](_0x246282(0x169),()=>this[_0x246282(0x15c)]()),_0x549d2d['on']('type:drop',()=>this[_0x246282(0x15c)]()),_0x549d2d['on'](_0x246282(0x171),()=>this[_0x246282(0x15c)]()),_0x549d2d['on'](_0x246282(0x168),()=>this['_reloadTypes']()),_0x549d2d['on'](_0x246282(0x153),_0x51e189),_0x549d2d['on']('engine:stopped',_0x51e189),_0x549d2d['on'](_0x246282(0x108),_0x51e189),_0x549d2d['on']('engine:installed',_0x51e189),_0x549d2d['on'](_0x246282(0x173),_0x51e189),_0x549d2d['on'](_0x246282(0x111),_0x51e189),_0x549d2d['on'](_0x246282(0x178),_0x51e189),_0x549d2d['on'](_0x246282(0x147),_0x51e189),_0x549d2d['on'](_0x246282(0x113),()=>this['_scheduleReload']()),_0x549d2d['on']('item:update',()=>this[_0x246282(0x172)]()),_0x549d2d['on'](_0x246282(0x177),()=>this[_0x246282(0x172)]()),_0x549d2d['on'](_0x246282(0xfa),()=>this['_scheduleReload']()),_0x549d2d['on'](_0x246282(0x180),()=>this[_0x246282(0x172)]()),_0x549d2d['on'](_0x246282(0x107),()=>this['_scheduleReload']())];},'unmount'(){const _0x5408c9=_0x13dc4f;clearTimeout(this[_0x5408c9(0xfe)]);for(const _0x2c0a97 of this['_unsubs'])_0x2c0a97();this[_0x5408c9(0x148)]=[];},'template':_0x13dc4f(0x164),'style':'\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(4,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2016px\x2018px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.06em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-value\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2022px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2013px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-collapse:\x20collapse;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20th\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x207px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.05em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row:hover\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#ffffff07;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20tbody\x20tr:last-child\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-headline\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-pill\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2024px\x2020px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(auto-fit,\x20minmax(240px,\x201fr));\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2011px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20tbody\x20.ov-row--sm:last-child\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group:hover\x20{\x20background:\x20#ffffff07;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-arrow\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20inline-block;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x2016px\x206px\x2038px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row:last-child\x20{\x20border-bottom:\x20none;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2030px\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Demo\x20data\x20card\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20border-color\x20.25s,\x20box-shadow\x20.25s,\x20transform\x20.2s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2053%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent),\x200\x208px\x2040px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x209%,\x20transparent),\x200\x200\x2080px\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20transform:\x20translateY(-2px);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20absolute;\x0a\x20\x20\x20\x20\x20\x20\x20\x20inset:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2020%\x2050%,\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2080%\x2030%,\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2050%\x2090%,\x20color-mix(in\x20srgb,\x20var(--okdb-success)\x204%,\x20transparent),\x20transparent\x2055%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20pointer-events:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-aurora\x208s\x20ease-in-out\x20infinite\x20alternate;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__sparkle\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2026px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-accent),\x20var(--okdb-purple)\x2040%,\x20var(--okdb-success));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-hue\x206s\x20linear\x20infinite;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2017px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-app-fg-strong),\x20var(--okdb-accent));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__desc\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20380px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.65;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__badges\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-badge\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-badge\x20{\x20transform:\x20scale(1.05);\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__cta\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-accent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.8;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20opacity\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-card__cta\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-hue\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20filter:\x20hue-rotate(0deg);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20filter:\x20hue-rotate(360deg);\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20opacity:\x20.7;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20opacity:\x201.3;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20'};
@@ -1 +1 @@
1
- const _0x37603a=_0x2c91;(function(_0x2d8c63,_0x511e7c){const _0x4fc79b=_0x2c91,_0x4aa967=_0x2d8c63();while(!![]){try{const _0x1fc6dc=-parseInt(_0x4fc79b(0x19f))/0x1+-parseInt(_0x4fc79b(0x156))/0x2+parseInt(_0x4fc79b(0x199))/0x3*(parseInt(_0x4fc79b(0x163))/0x4)+parseInt(_0x4fc79b(0x168))/0x5+parseInt(_0x4fc79b(0x19b))/0x6*(-parseInt(_0x4fc79b(0x1af))/0x7)+-parseInt(_0x4fc79b(0x167))/0x8*(parseInt(_0x4fc79b(0x155))/0x9)+parseInt(_0x4fc79b(0x134))/0xa*(parseInt(_0x4fc79b(0x135))/0xb);if(_0x1fc6dc===_0x511e7c)break;else _0x4aa967['push'](_0x4aa967['shift']());}catch(_0x13541a){_0x4aa967['push'](_0x4aa967['shift']());}}}(_0x3b1c,0x73c2a));function _0x2c91(_0x211f13,_0x3cfb50){_0x211f13=_0x211f13-0x128;const _0x3b1c14=_0x3b1c();let _0x2c912c=_0x3b1c14[_0x211f13];return _0x2c912c;}import _0x211bb2 from'../../../stores/events-store.js';import _0x42845c from'../../engines/modals/engine-modal.ok.js';function _0x3b1c(){const _0x538464=['$ok','health','select','envname','toLowerCase','49TGEkyz','state','result','$router','type','number','progress','runtime','okdb','flatMap','pipelineKey','showall','phase','load','3210UqbDzh','3641Stitfw','Start\x20failed','relatedType','search','selectedEnv','relatedEnv','role','_request','engine:stopped','storeEnv','Delete\x20failed','toast','selectedPipeline','map','isNaN','</b>\x22?<br><br>','_unsubs','status','var(--okdb-danger)','trim','isAllEnvs','<br><br>Env-owned\x20members\x20will\x20be\x20removed;\x20shared\x20members\x20will\x20be\x20preserved.','engine:error','Edit\x20Engine\x20·\x20','Stopped\x20pipeline\x20\x22','applyExternalSelection','catch','source_env','Started\x20pipeline\x20\x22','env','message','selectedKey','27657nsxgDo','1842324DhznKv','db-pipelines-panel','stringify','exists','error','selectEnv','var(--okdb-warning)','engines','config','confirm','pipelines','No\x20members','var(--okdb-sky)','263400teLjvl','sort','var(--okdb-app-fg-muted)','degraded','488GdbCBx','4324385ZLXcgy','data','\x20·\x20','string','label','localeCompare','json','DELETE','job_type','has','Deleted\x20pipeline\x20\x22','handler:','/pipelines/','busy','/start','toLocaleString','/pipelines','stores','\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-wrap\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-sub\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20560px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(240px,\x20300px)\x20minmax(0,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-card,\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row--active\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x20inset\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#10202a;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-members\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-danger-deep-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#450a0a33;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@media\x20(max-width:\x20860px)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x201fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','\x0a<div\x20class=\x22pipelines-wrap\x22>\x0a\x20\x20<div\x20class=\x22pipelines-head\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-title\x22>{{\x20isAllEnvs\x20?\x20\x27Pipelines\x20·\x20all\x20environments\x27\x20:\x20\x27Pipelines\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-sub\x22>{{\x20isAllEnvs\x20?\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20across\x20opened\x20environments.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20:\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20for\x20the\x20selected\x20environment.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27)\x22>{{\x20pipelines.length\x20}}\x20pipeline{{\x20pipelines.length\x20!==\x201\x20?\x20\x27s\x27\x20:\x20\x27\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-error\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20opacity:.25;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.75;\x22>No\x20pipelines\x20{{\x20isAllEnvs\x20?\x20\x27in\x20opened\x20environments\x27\x20:\x20\x27in\x20\x27\x20+\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20appear\x20here\x20once\x20created\x20or\x20synced\x20into\x20the\x20environment.\x0a\x20\x20\x20\x20\x20\x20\x20\x20This\x20view\x20preserves\x20member\x20order,\x20shows\x20aggregate\x20health,\x20and\x20exposes\x20lifecycle\x20controls.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22pipelines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-layout\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Filter\x20pipelines…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22search\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22filteredPipelines\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22selectPipeline(pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22selectedPipeline\x20&&\x20pipelineKey(selectedPipeline)\x20===\x20pipelineKey(pipeline)\x20?\x20\x27pipeline-row\x20pipeline-row--active\x27\x20:\x20\x27pipeline-row\x27\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\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipeline.meta?.label\x20||\x20pipeline.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x20margin-top:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22isAllEnvs\x20||\x20pipeline.env\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27,\x20true)\x22>{{\x20pipeline.env\x20||\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(healthColor(pipeline.health))\x22>{{\x20pipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20pipeline.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20pipeline.engines.length\x20}}\x20members</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-top:7px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20summaryText(pipeline)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22filteredPipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:8px;\x22>No\x20pipelines\x20match\x20the\x20current\x20filter.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-detail-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedPipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\x22>\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;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:700;\x20min-width:0;\x22>{{\x20selectedPipeline.name\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(healthColor(selectedPipeline.health))\x22>{{\x20selectedPipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20selectedPipeline.status\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\x20\x20<if\x20:=\x22selectedPipeline.meta?.label\x20&&\x20selectedPipeline.meta.label\x20!==\x20selectedPipeline.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.6;\x22>{{\x20selectedPipeline.meta.label\x20}}</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\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:620px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20is\x20the\x20global\x20grouped\x20view\x20for\x20the\x20pipeline.\x20Use\x20the\x20related\x20type\x20shortcuts\x20below\x20only\x20when\x20you\x20need\x20the\x20local\x20DB\x20drill-in.\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<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>env:\x20{{\x20selectedPipeline.env\x20||\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20selectedPipeline.engines.length\x20}}\x20ordered\x20member{{\x20selectedPipeline.engines.length\x20!==\x201\x20?\x20\x27s\x27\x20:\x20\x27\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedRelatedTypes\x22\x20let:item=\x22rel\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openType({\x20config:\x20{\x20source_type:\x20rel.type,\x20source_env:\x20rel.env\x20}\x20})\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20type\x20\x27\x20+\x20rel.type\x20+\x20\x27\x20in\x20env\x20\x27\x20+\x20rel.env\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20rel.env\x20!==\x20envName\x20?\x20rel.env\x20+\x20\x27:\x27\x20:\x20\x27\x27\x20}}{{\x20rel.type\x20}}\x20→</button>\x0a\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22startSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>▶\x20Start</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22stopSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2033%,\x20transparent);\x22>⏹\x20Stop</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22deleteSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>🗑\x20Delete</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-members\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedPipeline.engines\x22\x20let:item=\x22member\x22\x20let:index=\x22index\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\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=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\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<span\x20style=\x22font-size:11px;\x20opacity:.4;\x20min-width:18px;\x22>{{\x20index\x20+\x201\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<span\x20:style=\x22chipStyle(\x27var(--okdb-accent)\x27,\x20true)\x22>{{\x20member.role\x20||\x20member.type\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<code\x20style=\x22font-size:12px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20member.type\x20}}@{{\x20member.name\x20}}</code>\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<span\x20:style=\x22chipStyle(stateColor(member.state))\x22>{{\x20member.state\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<if\x20:=\x22member.status\x20&&\x20member.status\x20!==\x20member.state\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<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20member.status\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</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\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\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<each\x20:of=\x22memberFacts(member)\x22\x20let:item=\x22fact\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<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20fact\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</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<if\x20:=\x22member.lag\x20!=\x20null\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<span\x20:style=\x22chipStyle(\x27var(--okdb-warning)\x27,\x20true)\x22>lag:\x20{{\x20formatNumber(member.lag)\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</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:=\x22progressLabel(member)\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<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>progress:\x20{{\x20progressLabel(member)\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</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:=\x22member.cursorKey\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<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>cursor:\x20{{\x20member.cursorKey\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</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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\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:=\x22member.exists\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<button\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@click=\x22openEngineModal(member)\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\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x206%,\x20transparent);\x20cursor:pointer;\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\x20title=\x22Open\x20engine\x20editor\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>Edit\x20engine</button>\x0a\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<if\x20:=\x22relatedType(member)\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<button\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@click=\x22openType(member)\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\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\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:title=\x22\x27Open\x20type\x20\x27\x20+\x20relatedType(member)\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>Open\x20type\x20→</button>\x0a\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</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<if\x20:=\x22member.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-error\x22>{{\x20member.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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22busy\x20&&\x20pipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:4px\x200;\x22>Loading\x20pipelines…</div>\x0a\x20\x20</if>\x0a</div>','shared','55;color:','find','Stop\x20failed','missing','owned','source_type','memberOwnerEnv','engine:installed','filter','<br>','transparent','success','selectedpipeline','engine:uninstalled','online','object','actionBusy','type:','<engine-modal\x20:modal=\x22modal\x22\x20:engine=\x22engine\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','length','push','add','name','API','meta','envName','modal','var(--okdb-success)','39IhSDqu','handler','71034qMblRY','includes','filteredPipelines','$watch','161536COdBuV','info','/stop',';white-space:nowrap;',';background:','/env/','POST','$attr','store:','join','resolve'];_0x3b1c=function(){return _0x538464;};return _0x3b1c();}export default{'tag':_0x37603a(0x157),'dependencies':[_0x42845c],'attr':{'showall':{},'envname':{},'selectedpipeline':{}},'context':_0x41dfe8=>({'busy':!0x1,'error':null,'search':'','pipelines':[],'selectedKey':null,'actionBusy':!0x1,'_unsubs':[],get 'isAllEnvs'(){const _0x539f76=_0x37603a;return!0x0===_0x41dfe8['$attr'][_0x539f76(0x131)]||'true'===_0x41dfe8['$attr'][_0x539f76(0x131)];},get 'envName'(){const _0x5ad2eb=_0x37603a;return _0x41dfe8[_0x5ad2eb(0x1a6)][_0x5ad2eb(0x1ad)]||_0x41dfe8[_0x5ad2eb(0x1aa)]['stores'][_0x5ad2eb(0x12e)][_0x5ad2eb(0x139)]||'default';},get 'externalSelectedPipeline'(){const _0x38370f=_0x37603a;return String(_0x41dfe8[_0x38370f(0x1a6)][_0x38370f(0x189)]||'');},'pipelineKey'(_0x2fe036){const _0x4bb083=_0x37603a;return(_0x2fe036?.[_0x4bb083(0x152)]||this[_0x4bb083(0x196)])+'::'+(_0x2fe036?.[_0x4bb083(0x193)]||'');},get 'filteredPipelines'(){const _0xa98eab=_0x37603a,_0x512a27=this[_0xa98eab(0x138)][_0xa98eab(0x148)]()[_0xa98eab(0x1ae)](),_0x4ba8c2=[...this[_0xa98eab(0x160)]][_0xa98eab(0x164)]((_0x225f73,_0x36fc0d)=>{const _0x2becc4=_0xa98eab,_0x2cc6cb=String(_0x225f73['env']||'')[_0x2becc4(0x16d)](String(_0x36fc0d[_0x2becc4(0x152)]||''));return 0x0!==_0x2cc6cb?_0x2cc6cb:_0x225f73[_0x2becc4(0x193)]['localeCompare'](_0x36fc0d[_0x2becc4(0x193)]);});return _0x512a27?_0x4ba8c2['filter'](_0x598ed8=>[_0x598ed8[_0xa98eab(0x152)],_0x598ed8[_0xa98eab(0x193)],_0x598ed8[_0xa98eab(0x195)]?.[_0xa98eab(0x16c)],_0x598ed8[_0xa98eab(0x146)],_0x598ed8[_0xa98eab(0x1ab)],...(_0x598ed8[_0xa98eab(0x15d)]||[])[_0xa98eab(0x12f)](_0xce6ce9=>[_0xce6ce9[_0xa98eab(0x13b)],_0xce6ce9[_0xa98eab(0x12a)],_0xce6ce9['name'],_0xce6ce9[_0xa98eab(0x1b0)],_0xce6ce9[_0xa98eab(0x15e)]?.[_0xa98eab(0x182)],_0xce6ce9[_0xa98eab(0x15e)]?.[_0xa98eab(0x170)]])][_0xa98eab(0x185)](Boolean)[_0xa98eab(0x1a8)]('\x20')['toLowerCase']()[_0xa98eab(0x19c)](_0x512a27)):_0x4ba8c2;},get 'selectedPipeline'(){const _0x493de7=_0x37603a;return 0x0===this[_0x493de7(0x19d)][_0x493de7(0x190)]?null:this[_0x493de7(0x19d)][_0x493de7(0x17e)](_0x4825d6=>this[_0x493de7(0x130)](_0x4825d6)===this[_0x493de7(0x154)])??this['filteredPipelines'][0x0];},'applyExternalSelection'(){const _0xa33d1c=_0x37603a,_0x4820e5=this['externalSelectedPipeline'][_0xa33d1c(0x148)]();if(!_0x4820e5||0x0===this[_0xa33d1c(0x160)]['length'])return;const _0x542c9c=this[_0xa33d1c(0x160)][_0xa33d1c(0x17e)](_0x340f74=>this[_0xa33d1c(0x130)](_0x340f74)===_0x4820e5)??this[_0xa33d1c(0x160)][_0xa33d1c(0x17e)](_0x2702e0=>_0x2702e0?.['name']===_0x4820e5)??null;if(_0x542c9c){const _0x3da25e=this[_0xa33d1c(0x130)](_0x542c9c);this[_0xa33d1c(0x154)]!==_0x3da25e&&(this[_0xa33d1c(0x154)]=_0x3da25e);}},get 'selectedRelatedTypes'(){const _0x1be8d2=_0x37603a,_0x2893be=this[_0x1be8d2(0x141)];if(!_0x2893be)return[];const _0x2484cc=new Set(),_0x21c68f=[];for(const _0x30bfdf of _0x2893be[_0x1be8d2(0x15d)]||[]){const _0x41e3df=this[_0x1be8d2(0x137)](_0x30bfdf);_0x41e3df&&!_0x2484cc[_0x1be8d2(0x171)](_0x41e3df)&&(_0x2484cc[_0x1be8d2(0x192)](_0x41e3df),_0x21c68f[_0x1be8d2(0x191)]({'type':_0x41e3df,'env':this[_0x1be8d2(0x13a)](_0x30bfdf)}));}return _0x21c68f;},async 'load'(){const _0x200f03=_0x37603a;this[_0x200f03(0x175)]=!0x0,this[_0x200f03(0x15a)]=null;try{const _0x2a3778=this[_0x200f03(0x149)]?__ENV__[_0x200f03(0x194)]+'/pipelines':__ENV__['API']+_0x200f03(0x1a4)+encodeURIComponent(this[_0x200f03(0x196)])+_0x200f03(0x178),_0x40582e=await fetch(_0x2a3778),_0x5cfe8f=await _0x40582e[_0x200f03(0x16e)]()[_0x200f03(0x14f)](()=>({}));if(!_0x40582e['ok'])throw new Error(_0x5cfe8f?.[_0x200f03(0x15a)]?.[_0x200f03(0x153)]||'Failed\x20to\x20load\x20pipelines');this[_0x200f03(0x160)]=_0x5cfe8f[_0x200f03(0x169)]??_0x5cfe8f['result']??[],this['applyExternalSelection'](),this[_0x200f03(0x160)]['some'](_0x51a900=>this['pipelineKey'](_0x51a900)===this[_0x200f03(0x154)])||(this[_0x200f03(0x154)]=this[_0x200f03(0x160)][0x0]?this['pipelineKey'](this[_0x200f03(0x160)][0x0]):null);}catch(_0x4a98d8){this[_0x200f03(0x15a)]=_0x4a98d8?.[_0x200f03(0x153)]||String(_0x4a98d8),this['pipelines']=[],this['selectedKey']=null;}finally{this[_0x200f03(0x175)]=!0x1;}},'selectPipeline'(_0x31e7fc){const _0x2a0943=_0x37603a;this['selectedKey']=this[_0x2a0943(0x130)](_0x31e7fc),_0x41dfe8['$dispatch'](_0x2a0943(0x1ac),_0x31e7fc);},'healthColor':_0x74a08a=>_0x37603a(0x18b)===_0x74a08a?_0x37603a(0x198):'degraded'===_0x74a08a?_0x37603a(0x15c):'error'===_0x74a08a?_0x37603a(0x147):_0x37603a(0x165),'stateColor':_0x6e3492=>_0x37603a(0x18b)===_0x6e3492?_0x37603a(0x198):_0x37603a(0x166)===_0x6e3492?_0x37603a(0x15c):'error'===_0x6e3492||_0x37603a(0x180)===_0x6e3492?_0x37603a(0x147):'stopped'===_0x6e3492?_0x37603a(0x165):_0x37603a(0x162),'chipStyle':(_0x5ed53b,_0x2e33fd=!0x1)=>'font-size:10px;padding:2px\x207px;border-radius:999px;border:1px\x20solid\x20'+_0x5ed53b+_0x37603a(0x17d)+_0x5ed53b+_0x37603a(0x1a3)+(_0x2e33fd?_0x37603a(0x187):_0x5ed53b+'12')+_0x37603a(0x1a2),'summaryText'(_0x34e23e){const _0x4040b2=_0x37603a,_0x427f7c=_0x34e23e[_0x4040b2(0x15d)]||[];return 0x0===_0x427f7c[_0x4040b2(0x190)]?'No\x20members':_0x427f7c[_0x4040b2(0x142)](_0x2244ec=>_0x2244ec[_0x4040b2(0x13b)]||_0x2244ec[_0x4040b2(0x12a)])[_0x4040b2(0x1a8)](_0x4040b2(0x16a));},'formatNumber':_0x404593=>null==_0x404593||Number[_0x37603a(0x143)](Number(_0x404593))?null:Number(_0x404593)[_0x37603a(0x177)](),'progressLabel'(_0x3f185c){const _0x57f62c=_0x37603a,_0x46095b=_0x3f185c[_0x57f62c(0x12c)]??_0x3f185c[_0x57f62c(0x12d)]?.[_0x57f62c(0x12c)]??null;if(null==_0x46095b)return null;if('string'==typeof _0x46095b||_0x57f62c(0x12b)==typeof _0x46095b)return String(_0x46095b);if(_0x57f62c(0x18c)==typeof _0x46095b&&_0x57f62c(0x16b)==typeof _0x46095b[_0x57f62c(0x132)])return _0x46095b['phase'];try{return JSON[_0x57f62c(0x158)](_0x46095b);}catch{return _0x57f62c(0x12c);}},'relatedType':_0x3665a0=>_0x3665a0?.[_0x37603a(0x15e)]?.['source_type']??_0x3665a0?.[_0x37603a(0x12d)]?.['source_type']??null,'relatedEnv'(_0x5d27b9){const _0x4ba50e=_0x37603a;return _0x5d27b9?.[_0x4ba50e(0x15e)]?.[_0x4ba50e(0x150)]??_0x5d27b9?.['runtime']?.[_0x4ba50e(0x150)]??this[_0x4ba50e(0x196)];},'memberOwnerEnv'(_0x3f1376){const _0x342972=_0x37603a;return _0x3f1376?.[_0x342972(0x13e)]??_0x3f1376?.[_0x342972(0x152)]??this[_0x342972(0x13a)](_0x3f1376)??this['selectedPipeline']?.[_0x342972(0x152)]??this[_0x342972(0x196)];},'memberFacts'(_0x14c3e5){const _0x162617=_0x37603a,_0x38c221=[];return _0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x170)]&&_0x38c221[_0x162617(0x191)]('job:'+_0x14c3e5[_0x162617(0x15e)][_0x162617(0x170)]),_0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x19a)]?.[_0x162617(0x193)]&&_0x38c221['push'](_0x162617(0x173)+_0x14c3e5[_0x162617(0x15e)][_0x162617(0x19a)][_0x162617(0x193)]),_0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x182)]&&_0x38c221[_0x162617(0x191)](_0x162617(0x18e)+_0x14c3e5['config'][_0x162617(0x182)]),_0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x150)]&&_0x14c3e5[_0x162617(0x15e)][_0x162617(0x150)]!==this[_0x162617(0x196)]&&_0x38c221['push']('source\x20env:'+_0x14c3e5['config'][_0x162617(0x150)]),_0x14c3e5?.[_0x162617(0x13e)]&&_0x38c221['push'](_0x162617(0x1a7)+_0x14c3e5[_0x162617(0x13e)]),_0x14c3e5?.[_0x162617(0x181)]?_0x38c221['push'](_0x162617(0x181)):_0x14c3e5?.[_0x162617(0x159)]&&_0x38c221[_0x162617(0x191)](_0x162617(0x17c)),_0x38c221;},async '_request'(_0x1c66cc,_0x1474f5={}){const _0x22bd63=_0x37603a,_0x2d4393=await fetch(_0x1c66cc,_0x1474f5),_0x411ad9=await _0x2d4393['json']()[_0x22bd63(0x14f)](()=>({}));if(!_0x2d4393['ok'])throw new Error(_0x411ad9?.['error']?.[_0x22bd63(0x153)]||'Request\x20failed\x20('+_0x2d4393['status']+')');return _0x411ad9['data']??_0x411ad9[_0x22bd63(0x128)]??null;},async 'startSelected'(){const _0x108073=_0x37603a;if(this[_0x108073(0x141)]&&!this[_0x108073(0x18d)]){this[_0x108073(0x18d)]=!0x0;try{const _0x1691ec=this[_0x108073(0x141)][_0x108073(0x152)]||this[_0x108073(0x196)];await this[_0x108073(0x13c)](__ENV__[_0x108073(0x194)]+_0x108073(0x1a4)+encodeURIComponent(_0x1691ec)+_0x108073(0x174)+encodeURIComponent(this[_0x108073(0x141)][_0x108073(0x193)])+_0x108073(0x176),{'method':_0x108073(0x1a5)}),_0x41dfe8[_0x108073(0x1aa)]['shared']?.[_0x108073(0x140)]?.['success']?.(_0x108073(0x151)+this[_0x108073(0x141)][_0x108073(0x193)]+'\x22'),await this[_0x108073(0x133)]();}catch(_0x4db4e6){_0x41dfe8['$ok']['shared']?.[_0x108073(0x140)]?.[_0x108073(0x15a)]?.(_0x4db4e6?.[_0x108073(0x153)]||_0x108073(0x136));}finally{this['actionBusy']=!0x1;}}},async 'stopSelected'(){const _0x265a81=_0x37603a;if(this[_0x265a81(0x141)]&&!this['actionBusy']&&await _0x41dfe8[_0x265a81(0x1aa)][_0x265a81(0x17c)][_0x265a81(0x197)][_0x265a81(0x15f)]('Stop\x20pipeline\x20\x22<b>'+this['selectedPipeline'][_0x265a81(0x193)]+'</b>\x22?')){this['actionBusy']=!0x0;try{const _0x275ee2=this[_0x265a81(0x141)]['env']||this[_0x265a81(0x196)];await this[_0x265a81(0x13c)](__ENV__['API']+'/env/'+encodeURIComponent(_0x275ee2)+_0x265a81(0x174)+encodeURIComponent(this[_0x265a81(0x141)][_0x265a81(0x193)])+_0x265a81(0x1a1),{'method':_0x265a81(0x1a5)}),_0x41dfe8[_0x265a81(0x1aa)][_0x265a81(0x17c)]?.[_0x265a81(0x140)]?.[_0x265a81(0x1a0)]?.(_0x265a81(0x14d)+this[_0x265a81(0x141)][_0x265a81(0x193)]+'\x22'),await this['load']();}catch(_0x332b39){_0x41dfe8['$ok'][_0x265a81(0x17c)]?.[_0x265a81(0x140)]?.['error']?.(_0x332b39?.['message']||_0x265a81(0x17f));}finally{this[_0x265a81(0x18d)]=!0x1;}}},async 'deleteSelected'(){const _0xc10a95=_0x37603a;if(!this['selectedPipeline']||this[_0xc10a95(0x18d)])return;const _0x2464cb=this[_0xc10a95(0x141)],_0x1cb5e2=(_0x2464cb['engines']||[])['map'](_0x45964f=>'•\x20'+(_0x45964f[_0xc10a95(0x13b)]||_0x45964f[_0xc10a95(0x12a)])+':\x20'+_0x45964f[_0xc10a95(0x12a)]+'@'+_0x45964f[_0xc10a95(0x193)])['join'](_0xc10a95(0x186));if(await _0x41dfe8[_0xc10a95(0x1aa)]['shared']['modal']['confirm']('Delete\x20pipeline\x20\x22<b>'+_0x2464cb[_0xc10a95(0x193)]+_0xc10a95(0x144)+(_0x1cb5e2||_0xc10a95(0x161))+_0xc10a95(0x14a))){this[_0xc10a95(0x18d)]=!0x0;try{const _0x126e1b=_0x2464cb[_0xc10a95(0x152)]||this['envName'];await this[_0xc10a95(0x13c)](__ENV__[_0xc10a95(0x194)]+'/env/'+encodeURIComponent(_0x126e1b)+_0xc10a95(0x174)+encodeURIComponent(_0x2464cb[_0xc10a95(0x193)]),{'method':_0xc10a95(0x16f)}),_0x41dfe8[_0xc10a95(0x1aa)]['shared']?.[_0xc10a95(0x140)]?.[_0xc10a95(0x188)]?.(_0xc10a95(0x172)+_0x2464cb['name']+'\x22'),this['selectedKey']=null,await this['load']();}catch(_0x148882){_0x41dfe8[_0xc10a95(0x1aa)]['shared']?.[_0xc10a95(0x140)]?.['error']?.(_0x148882?.[_0xc10a95(0x153)]||_0xc10a95(0x13f));}finally{this[_0xc10a95(0x18d)]=!0x1;}}},'openType'(_0x106cf7){const _0x4ef1bb=_0x37603a,_0x2884ec=this[_0x4ef1bb(0x137)](_0x106cf7);if(!_0x2884ec)return;const _0x14de0f=this[_0x4ef1bb(0x13a)](_0x106cf7);_0x14de0f&&_0x14de0f!==_0x41dfe8[_0x4ef1bb(0x1aa)][_0x4ef1bb(0x179)]['okdb'][_0x4ef1bb(0x139)]&&_0x41dfe8[_0x4ef1bb(0x1aa)][_0x4ef1bb(0x179)][_0x4ef1bb(0x12e)][_0x4ef1bb(0x15b)](_0x14de0f);const _0x3bb4d0=_0x41dfe8['$vars'][_0x4ef1bb(0x129)];_0x3bb4d0?.[_0x4ef1bb(0x191)](_0x3bb4d0[_0x4ef1bb(0x1a9)]('/db',{'env':_0x14de0f,'type':_0x2884ec,'tab':_0x4ef1bb(0x160)}));},async 'openEngineModal'(_0xca055a){const _0x24380e=_0x37603a;if(!_0xca055a?.[_0x24380e(0x159)])return;const _0x58866e=this,_0x4e0ad5=this[_0x24380e(0x183)](_0xca055a);await _0x41dfe8[_0x24380e(0x1aa)][_0x24380e(0x17c)]['modal']['open']({'owner':_0x41dfe8,'title':_0x24380e(0x14c)+_0xca055a[_0x24380e(0x193)],'canDrag':!0x0,'content':_0x24380e(0x18f),'context':_0x2f0caf=>({'modal':_0x2f0caf,'engine':_0xca055a,'envName':_0x4e0ad5,'onDone':async()=>{const _0x11734c=_0x24380e;await _0x58866e[_0x11734c(0x133)]();}})});}}),async 'init'(_0x4f8211){const _0x441ac7=_0x37603a;_0x4f8211['$watch'](()=>_0x4f8211['$attr'][_0x441ac7(0x189)],()=>this[_0x441ac7(0x14e)]()),_0x4f8211[_0x441ac7(0x19e)](()=>_0x4f8211[_0x441ac7(0x1aa)]['stores'][_0x441ac7(0x12e)]['selectedEnv'],()=>{const _0x7aa9fc=_0x441ac7;this[_0x7aa9fc(0x149)]||(this[_0x7aa9fc(0x154)]=null),this[_0x7aa9fc(0x133)]();}),await this[_0x441ac7(0x133)]();const _0x206d9b=()=>this[_0x441ac7(0x133)]();this[_0x441ac7(0x145)]=[_0x211bb2['on']('engine:started',_0x206d9b),_0x211bb2['on'](_0x441ac7(0x13d),_0x206d9b),_0x211bb2['on'](_0x441ac7(0x14b),_0x206d9b),_0x211bb2['on'](_0x441ac7(0x184),_0x206d9b),_0x211bb2['on'](_0x441ac7(0x18a),_0x206d9b)];},'unmount'(){const _0x266712=_0x37603a;for(const _0x431cc4 of this[_0x266712(0x145)])_0x431cc4();this[_0x266712(0x145)]=[];},'template':_0x37603a(0x17b),'style':_0x37603a(0x17a)};
1
+ const _0xe21ad8=_0x53d2;(function(_0x3cd30d,_0x43f3fb){const _0x9c2161=_0x53d2,_0x3c7f5b=_0x3cd30d();while(!![]){try{const _0x2d3fd7=parseInt(_0x9c2161(0x1be))/0x1*(parseInt(_0x9c2161(0x1b0))/0x2)+parseInt(_0x9c2161(0x1ca))/0x3*(parseInt(_0x9c2161(0x1bb))/0x4)+-parseInt(_0x9c2161(0x238))/0x5+-parseInt(_0x9c2161(0x21c))/0x6+-parseInt(_0x9c2161(0x1f5))/0x7+-parseInt(_0x9c2161(0x1e2))/0x8*(parseInt(_0x9c2161(0x1ef))/0x9)+parseInt(_0x9c2161(0x1ed))/0xa;if(_0x2d3fd7===_0x43f3fb)break;else _0x3c7f5b['push'](_0x3c7f5b['shift']());}catch(_0x22b296){_0x3c7f5b['push'](_0x3c7f5b['shift']());}}}(_0x1ccf,0xbe690));import _0x3df25a from'../../../stores/events-store.js';function _0x53d2(_0x4c119e,_0x56bbb7){_0x4c119e=_0x4c119e-0x1ae;const _0x1ccfaa=_0x1ccf();let _0x53d2a2=_0x1ccfaa[_0x4c119e];return _0x53d2a2;}function _0x1ccf(){const _0x263630=['isNaN','data','push','trim','degraded','length','env','externalSelectedPipeline','okdb','1085076MMcZys','var(--okdb-sky)','role','engines','health','type','status','selectedEnv','db-pipelines-panel','filteredPipelines','message','/pipelines/','json','stores','engine:installed','/start','Delete\x20pipeline\x20\x22<b>','object','open','owned','var(--okdb-app-fg-muted)','Stop\x20pipeline\x20\x22<b>','online','progress','store:','source_env','number','<engine-modal\x20:modal=\x22modal\x22\x20:engine=\x22engine\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','1825760kFHVal','exists','selectedpipeline','handler:','var(--okdb-warning)','2332306VAcpSp','Failed\x20to\x20load\x20pipelines','/pipelines','actionBusy','busy','confirm','memberOwnerEnv','runtime','Stop\x20failed','Deleted\x20pipeline\x20\x22','</b>\x22?','501028GkaShZ','/db','state','1HeranT','$dispatch','Started\x20pipeline\x20\x22','result','source\x20env:','font-size:10px;padding:2px\x207px;border-radius:999px;border:1px\x20solid\x20','localeCompare','_request','info','success','</b>\x22?<br><br>','shared','30nPLUQZ','join','source_type','string','phase','pipelineKey','search','var(--okdb-success)','label','job:','Stopped\x20pipeline\x20\x22','load','$watch','toLocaleString','selectedPipeline','<br><br>Env-owned\x20members\x20will\x20be\x20removed;\x20shared\x20members\x20will\x20be\x20preserved.','$vars','meta','isAllEnvs','envName','Edit\x20Engine\x20·\x20','resolve','name','No\x20members','1434176doDDPe','toLowerCase','catch','/env/','envname','API','select','job_type','sort','<br>','var(--okdb-danger)','4913110qHXLLp','DELETE','9FzpaVC','relatedEnv','selectedKey','$ok','stopped','engine:uninstalled','9833908DUdRud','toast','true','find','flatMap','config','\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-wrap\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-sub\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20560px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(240px,\x20300px)\x20minmax(0,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-card,\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row--active\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x20inset\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#10202a;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-members\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-danger-deep-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#450a0a33;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@media\x20(max-width:\x20860px)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x201fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','$attr','some','relatedType','/stop','filter','_unsubs','includes','applyExternalSelection','storeEnv','selectEnv',';background:','modal','55;color:','pipelines','engine:stopped','has','POST','error','Delete\x20failed','map','add','type:','handler'];_0x1ccf=function(){return _0x263630;};return _0x1ccf();}import _0x21acbd from'../../engines/modals/engine-modal.ok.js';export default{'tag':_0xe21ad8(0x224),'dependencies':[_0x21acbd],'attr':{'showall':{},'envname':{},'selectedpipeline':{}},'context':_0x598328=>({'busy':!0x1,'error':null,'search':'','pipelines':[],'selectedKey':null,'actionBusy':!0x1,'_unsubs':[],get 'isAllEnvs'(){const _0x15f098=_0xe21ad8;return!0x0===_0x598328[_0x15f098(0x1fc)]['showall']||_0x15f098(0x1f7)===_0x598328['$attr']['showall'];},get 'envName'(){const _0x45baa6=_0xe21ad8;return _0x598328[_0x45baa6(0x1fc)][_0x45baa6(0x1e6)]||_0x598328[_0x45baa6(0x1f2)][_0x45baa6(0x229)][_0x45baa6(0x21b)]['selectedEnv']||'default';},get 'externalSelectedPipeline'(){const _0x40da4c=_0xe21ad8;return String(_0x598328[_0x40da4c(0x1fc)]['selectedpipeline']||'');},'pipelineKey'(_0x5bb038){const _0x5d494a=_0xe21ad8;return(_0x5bb038?.['env']||this[_0x5d494a(0x1dd)])+'::'+(_0x5bb038?.[_0x5d494a(0x1e0)]||'');},get 'filteredPipelines'(){const _0x14e2e1=_0xe21ad8,_0x5ab0a9=this[_0x14e2e1(0x1d0)][_0x14e2e1(0x216)]()[_0x14e2e1(0x1e3)](),_0x40a408=[...this['pipelines']][_0x14e2e1(0x1ea)]((_0x3fd572,_0x3fec62)=>{const _0x3eb7a1=_0x14e2e1,_0x353b85=String(_0x3fd572['env']||'')[_0x3eb7a1(0x1c4)](String(_0x3fec62[_0x3eb7a1(0x219)]||''));return 0x0!==_0x353b85?_0x353b85:_0x3fd572['name'][_0x3eb7a1(0x1c4)](_0x3fec62[_0x3eb7a1(0x1e0)]);});return _0x5ab0a9?_0x40a408[_0x14e2e1(0x200)](_0x4892e8=>[_0x4892e8[_0x14e2e1(0x219)],_0x4892e8[_0x14e2e1(0x1e0)],_0x4892e8[_0x14e2e1(0x1db)]?.[_0x14e2e1(0x1d2)],_0x4892e8[_0x14e2e1(0x222)],_0x4892e8[_0x14e2e1(0x220)],...(_0x4892e8[_0x14e2e1(0x21f)]||[])[_0x14e2e1(0x1f9)](_0x15decf=>[_0x15decf[_0x14e2e1(0x21e)],_0x15decf['type'],_0x15decf['name'],_0x15decf[_0x14e2e1(0x1bd)],_0x15decf[_0x14e2e1(0x1fa)]?.[_0x14e2e1(0x1cc)],_0x15decf[_0x14e2e1(0x1fa)]?.[_0x14e2e1(0x1e9)]])][_0x14e2e1(0x200)](Boolean)[_0x14e2e1(0x1cb)]('\x20')[_0x14e2e1(0x1e3)]()[_0x14e2e1(0x202)](_0x5ab0a9)):_0x40a408;},get 'selectedPipeline'(){const _0x56993b=_0xe21ad8;return 0x0===this[_0x56993b(0x225)]['length']?null:this['filteredPipelines'][_0x56993b(0x1f8)](_0x16ebf6=>this['pipelineKey'](_0x16ebf6)===this['selectedKey'])??this[_0x56993b(0x225)][0x0];},'applyExternalSelection'(){const _0xc4a198=_0xe21ad8,_0x30a54a=this[_0xc4a198(0x21a)][_0xc4a198(0x216)]();if(!_0x30a54a||0x0===this['pipelines'][_0xc4a198(0x218)])return;const _0x4f5435=this[_0xc4a198(0x209)]['find'](_0x3ec97f=>this['pipelineKey'](_0x3ec97f)===_0x30a54a)??this[_0xc4a198(0x209)][_0xc4a198(0x1f8)](_0x10c403=>_0x10c403?.[_0xc4a198(0x1e0)]===_0x30a54a)??null;if(_0x4f5435){const _0x5b5f10=this[_0xc4a198(0x1cf)](_0x4f5435);this[_0xc4a198(0x1f1)]!==_0x5b5f10&&(this[_0xc4a198(0x1f1)]=_0x5b5f10);}},get 'selectedRelatedTypes'(){const _0x2642cb=_0xe21ad8,_0x368d67=this[_0x2642cb(0x1d8)];if(!_0x368d67)return[];const _0xff9f59=new Set(),_0x69d81=[];for(const _0x57c26c of _0x368d67[_0x2642cb(0x21f)]||[]){const _0x36e0ce=this[_0x2642cb(0x1fe)](_0x57c26c);_0x36e0ce&&!_0xff9f59[_0x2642cb(0x20b)](_0x36e0ce)&&(_0xff9f59[_0x2642cb(0x210)](_0x36e0ce),_0x69d81[_0x2642cb(0x215)]({'type':_0x36e0ce,'env':this[_0x2642cb(0x1f0)](_0x57c26c)}));}return _0x69d81;},async 'load'(){const _0xf3c4a4=_0xe21ad8;this[_0xf3c4a4(0x1b4)]=!0x0,this[_0xf3c4a4(0x20d)]=null;try{const _0x5d27ff=this['isAllEnvs']?__ENV__['API']+_0xf3c4a4(0x1b2):__ENV__[_0xf3c4a4(0x1e7)]+'/env/'+encodeURIComponent(this[_0xf3c4a4(0x1dd)])+_0xf3c4a4(0x1b2),_0x15f13b=await fetch(_0x5d27ff),_0x50536b=await _0x15f13b[_0xf3c4a4(0x228)]()['catch'](()=>({}));if(!_0x15f13b['ok'])throw new Error(_0x50536b?.[_0xf3c4a4(0x20d)]?.[_0xf3c4a4(0x226)]||_0xf3c4a4(0x1b1));this['pipelines']=_0x50536b['data']??_0x50536b['result']??[],this[_0xf3c4a4(0x203)](),this[_0xf3c4a4(0x209)][_0xf3c4a4(0x1fd)](_0x4a917e=>this[_0xf3c4a4(0x1cf)](_0x4a917e)===this[_0xf3c4a4(0x1f1)])||(this[_0xf3c4a4(0x1f1)]=this[_0xf3c4a4(0x209)][0x0]?this[_0xf3c4a4(0x1cf)](this[_0xf3c4a4(0x209)][0x0]):null);}catch(_0x44c764){this[_0xf3c4a4(0x20d)]=_0x44c764?.[_0xf3c4a4(0x226)]||String(_0x44c764),this[_0xf3c4a4(0x209)]=[],this[_0xf3c4a4(0x1f1)]=null;}finally{this[_0xf3c4a4(0x1b4)]=!0x1;}},'selectPipeline'(_0x4311fb){const _0x443c6e=_0xe21ad8;this[_0x443c6e(0x1f1)]=this[_0x443c6e(0x1cf)](_0x4311fb),_0x598328[_0x443c6e(0x1bf)](_0x443c6e(0x1e8),_0x4311fb);},'healthColor':_0x55fa4c=>_0xe21ad8(0x232)===_0x55fa4c?'var(--okdb-success)':'degraded'===_0x55fa4c?_0xe21ad8(0x1af):_0xe21ad8(0x20d)===_0x55fa4c?_0xe21ad8(0x1ec):_0xe21ad8(0x230),'stateColor':_0x1667e3=>_0xe21ad8(0x232)===_0x1667e3?_0xe21ad8(0x1d1):_0xe21ad8(0x217)===_0x1667e3?'var(--okdb-warning)':'error'===_0x1667e3||'missing'===_0x1667e3?'var(--okdb-danger)':_0xe21ad8(0x1f3)===_0x1667e3?_0xe21ad8(0x230):_0xe21ad8(0x21d),'chipStyle':(_0x192a53,_0x5ebb64=!0x1)=>_0xe21ad8(0x1c3)+_0x192a53+_0xe21ad8(0x208)+_0x192a53+_0xe21ad8(0x206)+(_0x5ebb64?'transparent':_0x192a53+'12')+';white-space:nowrap;','summaryText'(_0x4cbe22){const _0x39d4f0=_0xe21ad8,_0x5cb08f=_0x4cbe22[_0x39d4f0(0x21f)]||[];return 0x0===_0x5cb08f['length']?_0x39d4f0(0x1e1):_0x5cb08f[_0x39d4f0(0x20f)](_0x907ec=>_0x907ec[_0x39d4f0(0x21e)]||_0x907ec['type'])[_0x39d4f0(0x1cb)]('\x20·\x20');},'formatNumber':_0x43aa6e=>null==_0x43aa6e||Number[_0xe21ad8(0x213)](Number(_0x43aa6e))?null:Number(_0x43aa6e)[_0xe21ad8(0x1d7)](),'progressLabel'(_0x44f8ac){const _0x3c3f2c=_0xe21ad8,_0x3edc83=_0x44f8ac[_0x3c3f2c(0x233)]??_0x44f8ac[_0x3c3f2c(0x1b7)]?.[_0x3c3f2c(0x233)]??null;if(null==_0x3edc83)return null;if('string'==typeof _0x3edc83||_0x3c3f2c(0x236)==typeof _0x3edc83)return String(_0x3edc83);if(_0x3c3f2c(0x22d)==typeof _0x3edc83&&_0x3c3f2c(0x1cd)==typeof _0x3edc83[_0x3c3f2c(0x1ce)])return _0x3edc83['phase'];try{return JSON['stringify'](_0x3edc83);}catch{return'progress';}},'relatedType':_0x4452da=>_0x4452da?.[_0xe21ad8(0x1fa)]?.['source_type']??_0x4452da?.[_0xe21ad8(0x1b7)]?.['source_type']??null,'relatedEnv'(_0x51d025){const _0x9d75f2=_0xe21ad8;return _0x51d025?.[_0x9d75f2(0x1fa)]?.[_0x9d75f2(0x235)]??_0x51d025?.[_0x9d75f2(0x1b7)]?.[_0x9d75f2(0x235)]??this[_0x9d75f2(0x1dd)];},'memberOwnerEnv'(_0x43b4ee){const _0x301d55=_0xe21ad8;return _0x43b4ee?.['storeEnv']??_0x43b4ee?.[_0x301d55(0x219)]??this[_0x301d55(0x1f0)](_0x43b4ee)??this[_0x301d55(0x1d8)]?.[_0x301d55(0x219)]??this[_0x301d55(0x1dd)];},'memberFacts'(_0x343735){const _0x4541f3=_0xe21ad8,_0x54655d=[];return _0x343735?.[_0x4541f3(0x1fa)]?.['job_type']&&_0x54655d[_0x4541f3(0x215)](_0x4541f3(0x1d3)+_0x343735[_0x4541f3(0x1fa)][_0x4541f3(0x1e9)]),_0x343735?.[_0x4541f3(0x1fa)]?.[_0x4541f3(0x212)]?.[_0x4541f3(0x1e0)]&&_0x54655d[_0x4541f3(0x215)](_0x4541f3(0x1ae)+_0x343735['config'][_0x4541f3(0x212)][_0x4541f3(0x1e0)]),_0x343735?.[_0x4541f3(0x1fa)]?.[_0x4541f3(0x1cc)]&&_0x54655d[_0x4541f3(0x215)](_0x4541f3(0x211)+_0x343735[_0x4541f3(0x1fa)]['source_type']),_0x343735?.[_0x4541f3(0x1fa)]?.[_0x4541f3(0x235)]&&_0x343735[_0x4541f3(0x1fa)]['source_env']!==this[_0x4541f3(0x1dd)]&&_0x54655d[_0x4541f3(0x215)](_0x4541f3(0x1c2)+_0x343735[_0x4541f3(0x1fa)][_0x4541f3(0x235)]),_0x343735?.[_0x4541f3(0x204)]&&_0x54655d[_0x4541f3(0x215)](_0x4541f3(0x234)+_0x343735[_0x4541f3(0x204)]),_0x343735?.[_0x4541f3(0x22f)]?_0x54655d[_0x4541f3(0x215)](_0x4541f3(0x22f)):_0x343735?.[_0x4541f3(0x239)]&&_0x54655d[_0x4541f3(0x215)](_0x4541f3(0x1c9)),_0x54655d;},async '_request'(_0x2a7435,_0x8be49d={}){const _0x338e38=_0xe21ad8,_0x34178b=await fetch(_0x2a7435,_0x8be49d),_0x3ecdeb=await _0x34178b[_0x338e38(0x228)]()[_0x338e38(0x1e4)](()=>({}));if(!_0x34178b['ok'])throw new Error(_0x3ecdeb?.[_0x338e38(0x20d)]?.[_0x338e38(0x226)]||'Request\x20failed\x20('+_0x34178b[_0x338e38(0x222)]+')');return _0x3ecdeb[_0x338e38(0x214)]??_0x3ecdeb[_0x338e38(0x1c1)]??null;},async 'startSelected'(){const _0x29ec5e=_0xe21ad8;if(this[_0x29ec5e(0x1d8)]&&!this[_0x29ec5e(0x1b3)]){this[_0x29ec5e(0x1b3)]=!0x0;try{const _0x58a720=this['selectedPipeline'][_0x29ec5e(0x219)]||this[_0x29ec5e(0x1dd)];await this['_request'](__ENV__['API']+_0x29ec5e(0x1e5)+encodeURIComponent(_0x58a720)+'/pipelines/'+encodeURIComponent(this[_0x29ec5e(0x1d8)][_0x29ec5e(0x1e0)])+_0x29ec5e(0x22b),{'method':_0x29ec5e(0x20c)}),_0x598328[_0x29ec5e(0x1f2)][_0x29ec5e(0x1c9)]?.[_0x29ec5e(0x1f6)]?.[_0x29ec5e(0x1c7)]?.(_0x29ec5e(0x1c0)+this[_0x29ec5e(0x1d8)][_0x29ec5e(0x1e0)]+'\x22'),await this['load']();}catch(_0x3064a8){_0x598328[_0x29ec5e(0x1f2)]['shared']?.[_0x29ec5e(0x1f6)]?.['error']?.(_0x3064a8?.[_0x29ec5e(0x226)]||'Start\x20failed');}finally{this[_0x29ec5e(0x1b3)]=!0x1;}}},async 'stopSelected'(){const _0x455486=_0xe21ad8;if(this['selectedPipeline']&&!this[_0x455486(0x1b3)]&&await _0x598328[_0x455486(0x1f2)][_0x455486(0x1c9)][_0x455486(0x207)][_0x455486(0x1b5)](_0x455486(0x231)+this[_0x455486(0x1d8)][_0x455486(0x1e0)]+_0x455486(0x1ba))){this[_0x455486(0x1b3)]=!0x0;try{const _0x1ee92b=this['selectedPipeline'][_0x455486(0x219)]||this[_0x455486(0x1dd)];await this['_request'](__ENV__[_0x455486(0x1e7)]+_0x455486(0x1e5)+encodeURIComponent(_0x1ee92b)+'/pipelines/'+encodeURIComponent(this[_0x455486(0x1d8)][_0x455486(0x1e0)])+_0x455486(0x1ff),{'method':'POST'}),_0x598328[_0x455486(0x1f2)][_0x455486(0x1c9)]?.['toast']?.[_0x455486(0x1c6)]?.(_0x455486(0x1d4)+this[_0x455486(0x1d8)][_0x455486(0x1e0)]+'\x22'),await this['load']();}catch(_0x5dc641){_0x598328['$ok']['shared']?.[_0x455486(0x1f6)]?.['error']?.(_0x5dc641?.[_0x455486(0x226)]||_0x455486(0x1b8));}finally{this['actionBusy']=!0x1;}}},async 'deleteSelected'(){const _0x545291=_0xe21ad8;if(!this[_0x545291(0x1d8)]||this[_0x545291(0x1b3)])return;const _0x3ae3cf=this[_0x545291(0x1d8)],_0x4b10cb=(_0x3ae3cf[_0x545291(0x21f)]||[])[_0x545291(0x20f)](_0x2c5293=>'•\x20'+(_0x2c5293[_0x545291(0x21e)]||_0x2c5293[_0x545291(0x221)])+':\x20'+_0x2c5293[_0x545291(0x221)]+'@'+_0x2c5293[_0x545291(0x1e0)])[_0x545291(0x1cb)](_0x545291(0x1eb));if(await _0x598328[_0x545291(0x1f2)][_0x545291(0x1c9)][_0x545291(0x207)][_0x545291(0x1b5)](_0x545291(0x22c)+_0x3ae3cf[_0x545291(0x1e0)]+_0x545291(0x1c8)+(_0x4b10cb||'No\x20members')+_0x545291(0x1d9))){this['actionBusy']=!0x0;try{const _0x3da9f4=_0x3ae3cf[_0x545291(0x219)]||this[_0x545291(0x1dd)];await this[_0x545291(0x1c5)](__ENV__['API']+_0x545291(0x1e5)+encodeURIComponent(_0x3da9f4)+_0x545291(0x227)+encodeURIComponent(_0x3ae3cf[_0x545291(0x1e0)]),{'method':_0x545291(0x1ee)}),_0x598328['$ok'][_0x545291(0x1c9)]?.['toast']?.[_0x545291(0x1c7)]?.(_0x545291(0x1b9)+_0x3ae3cf[_0x545291(0x1e0)]+'\x22'),this[_0x545291(0x1f1)]=null,await this[_0x545291(0x1d5)]();}catch(_0x15252c){_0x598328['$ok'][_0x545291(0x1c9)]?.[_0x545291(0x1f6)]?.[_0x545291(0x20d)]?.(_0x15252c?.[_0x545291(0x226)]||_0x545291(0x20e));}finally{this[_0x545291(0x1b3)]=!0x1;}}},'openType'(_0x3eb3c7){const _0x140d17=_0xe21ad8,_0x3e067e=this[_0x140d17(0x1fe)](_0x3eb3c7);if(!_0x3e067e)return;const _0x3781be=this[_0x140d17(0x1f0)](_0x3eb3c7);_0x3781be&&_0x3781be!==_0x598328[_0x140d17(0x1f2)][_0x140d17(0x229)][_0x140d17(0x21b)][_0x140d17(0x223)]&&_0x598328['$ok'][_0x140d17(0x229)]['okdb'][_0x140d17(0x205)](_0x3781be);const _0x2d07e1=_0x598328[_0x140d17(0x1da)]['$router'];_0x2d07e1?.[_0x140d17(0x215)](_0x2d07e1[_0x140d17(0x1df)](_0x140d17(0x1bc),{'env':_0x3781be,'type':_0x3e067e,'tab':'pipelines'}));},async 'openEngineModal'(_0x381802){const _0x3cb6ef=_0xe21ad8;if(!_0x381802?.[_0x3cb6ef(0x239)])return;const _0x2e09a0=this,_0x1ac68a=this[_0x3cb6ef(0x1b6)](_0x381802);await _0x598328[_0x3cb6ef(0x1f2)][_0x3cb6ef(0x1c9)][_0x3cb6ef(0x207)][_0x3cb6ef(0x22e)]({'owner':_0x598328,'title':_0x3cb6ef(0x1de)+_0x381802[_0x3cb6ef(0x1e0)],'canDrag':!0x0,'content':_0x3cb6ef(0x237),'context':_0x586063=>({'modal':_0x586063,'engine':_0x381802,'envName':_0x1ac68a,'onDone':async()=>{const _0x10660e=_0x3cb6ef;await _0x2e09a0[_0x10660e(0x1d5)]();}})});}}),async 'init'(_0x483bd5){const _0x501f9c=_0xe21ad8;_0x483bd5[_0x501f9c(0x1d6)](()=>_0x483bd5['$attr'][_0x501f9c(0x23a)],()=>this[_0x501f9c(0x203)]()),_0x483bd5[_0x501f9c(0x1d6)](()=>_0x483bd5['$ok']['stores'][_0x501f9c(0x21b)][_0x501f9c(0x223)],()=>{const _0xd441c8=_0x501f9c;this[_0xd441c8(0x1dc)]||(this[_0xd441c8(0x1f1)]=null),this[_0xd441c8(0x1d5)]();}),await this[_0x501f9c(0x1d5)]();const _0x385ad4=()=>this[_0x501f9c(0x1d5)]();this[_0x501f9c(0x201)]=[_0x3df25a['on']('engine:started',_0x385ad4),_0x3df25a['on'](_0x501f9c(0x20a),_0x385ad4),_0x3df25a['on']('engine:error',_0x385ad4),_0x3df25a['on'](_0x501f9c(0x22a),_0x385ad4),_0x3df25a['on'](_0x501f9c(0x1f4),_0x385ad4)];},'unmount'(){const _0x9c461e=_0xe21ad8;for(const _0x24ac7c of this[_0x9c461e(0x201)])_0x24ac7c();this[_0x9c461e(0x201)]=[];},'template':'\x0a<div\x20class=\x22pipelines-wrap\x22>\x0a\x20\x20<div\x20class=\x22pipelines-head\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-title\x22>{{\x20isAllEnvs\x20?\x20\x27Pipelines\x20·\x20all\x20environments\x27\x20:\x20\x27Pipelines\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-sub\x22>{{\x20isAllEnvs\x20?\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20across\x20opened\x20environments.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20:\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20for\x20the\x20selected\x20environment.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27)\x22>{{\x20pipelines.length\x20}}\x20pipeline{{\x20pipelines.length\x20!==\x201\x20?\x20\x27s\x27\x20:\x20\x27\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-error\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20opacity:.25;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.75;\x22>No\x20pipelines\x20{{\x20isAllEnvs\x20?\x20\x27in\x20opened\x20environments\x27\x20:\x20\x27in\x20\x27\x20+\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20appear\x20here\x20once\x20created\x20or\x20synced\x20into\x20the\x20environment.\x0a\x20\x20\x20\x20\x20\x20\x20\x20This\x20view\x20preserves\x20member\x20order,\x20shows\x20aggregate\x20health,\x20and\x20exposes\x20lifecycle\x20controls.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22pipelines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-layout\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Filter\x20pipelines…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22search\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22filteredPipelines\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22selectPipeline(pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22selectedPipeline\x20&&\x20pipelineKey(selectedPipeline)\x20===\x20pipelineKey(pipeline)\x20?\x20\x27pipeline-row\x20pipeline-row--active\x27\x20:\x20\x27pipeline-row\x27\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\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipeline.meta?.label\x20||\x20pipeline.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x20margin-top:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22isAllEnvs\x20||\x20pipeline.env\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27,\x20true)\x22>{{\x20pipeline.env\x20||\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(healthColor(pipeline.health))\x22>{{\x20pipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20pipeline.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20pipeline.engines.length\x20}}\x20members</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-top:7px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20summaryText(pipeline)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22filteredPipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:8px;\x22>No\x20pipelines\x20match\x20the\x20current\x20filter.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-detail-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedPipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\x22>\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;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:700;\x20min-width:0;\x22>{{\x20selectedPipeline.name\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(healthColor(selectedPipeline.health))\x22>{{\x20selectedPipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20selectedPipeline.status\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\x20\x20<if\x20:=\x22selectedPipeline.meta?.label\x20&&\x20selectedPipeline.meta.label\x20!==\x20selectedPipeline.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.6;\x22>{{\x20selectedPipeline.meta.label\x20}}</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\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:620px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20is\x20the\x20global\x20grouped\x20view\x20for\x20the\x20pipeline.\x20Use\x20the\x20related\x20type\x20shortcuts\x20below\x20only\x20when\x20you\x20need\x20the\x20local\x20DB\x20drill-in.\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<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>env:\x20{{\x20selectedPipeline.env\x20||\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20selectedPipeline.engines.length\x20}}\x20ordered\x20member{{\x20selectedPipeline.engines.length\x20!==\x201\x20?\x20\x27s\x27\x20:\x20\x27\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedRelatedTypes\x22\x20let:item=\x22rel\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openType({\x20config:\x20{\x20source_type:\x20rel.type,\x20source_env:\x20rel.env\x20}\x20})\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20type\x20\x27\x20+\x20rel.type\x20+\x20\x27\x20in\x20env\x20\x27\x20+\x20rel.env\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20rel.env\x20!==\x20envName\x20?\x20rel.env\x20+\x20\x27:\x27\x20:\x20\x27\x27\x20}}{{\x20rel.type\x20}}\x20→</button>\x0a\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22startSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>▶\x20Start</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22stopSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2033%,\x20transparent);\x22>⏹\x20Stop</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22deleteSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>🗑\x20Delete</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-members\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedPipeline.engines\x22\x20let:item=\x22member\x22\x20let:index=\x22index\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\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=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\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<span\x20style=\x22font-size:11px;\x20opacity:.4;\x20min-width:18px;\x22>{{\x20index\x20+\x201\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<span\x20:style=\x22chipStyle(\x27var(--okdb-accent)\x27,\x20true)\x22>{{\x20member.role\x20||\x20member.type\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<code\x20style=\x22font-size:12px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20member.type\x20}}@{{\x20member.name\x20}}</code>\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<span\x20:style=\x22chipStyle(stateColor(member.state))\x22>{{\x20member.state\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<if\x20:=\x22member.status\x20&&\x20member.status\x20!==\x20member.state\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<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20member.status\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</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\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\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<each\x20:of=\x22memberFacts(member)\x22\x20let:item=\x22fact\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<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20fact\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</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<if\x20:=\x22member.lag\x20!=\x20null\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<span\x20:style=\x22chipStyle(\x27var(--okdb-warning)\x27,\x20true)\x22>lag:\x20{{\x20formatNumber(member.lag)\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</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:=\x22progressLabel(member)\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<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>progress:\x20{{\x20progressLabel(member)\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</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:=\x22member.cursorKey\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<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>cursor:\x20{{\x20member.cursorKey\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</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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\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:=\x22member.exists\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<button\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@click=\x22openEngineModal(member)\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\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x206%,\x20transparent);\x20cursor:pointer;\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\x20title=\x22Open\x20engine\x20editor\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>Edit\x20engine</button>\x0a\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<if\x20:=\x22relatedType(member)\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<button\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@click=\x22openType(member)\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\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\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:title=\x22\x27Open\x20type\x20\x27\x20+\x20relatedType(member)\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>Open\x20type\x20→</button>\x0a\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</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<if\x20:=\x22member.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-error\x22>{{\x20member.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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22busy\x20&&\x20pipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:4px\x200;\x22>Loading\x20pipelines…</div>\x0a\x20\x20</if>\x0a</div>','style':_0xe21ad8(0x1fb)};