bunqueue-dashboard 0.0.33 → 0.0.35

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 (60) hide show
  1. package/README.md +2 -2
  2. package/agent/manager.ts +3 -3
  3. package/agent/server.ts +72 -0
  4. package/agent/workflows.ts +491 -0
  5. package/dist/.vite/manifest.json +93 -81
  6. package/dist/assets/AddJob-CG28MSxU.js +3 -0
  7. package/dist/assets/{Alerts-C39RrGbQ.js → Alerts-D9JojJrj.js} +1 -1
  8. package/dist/assets/{Benchmark-CM60tHbf.js → Benchmark-BVjUH9dG.js} +1 -1
  9. package/dist/assets/{BulkAddJobs-BjL-xcQy.js → BulkAddJobs-BHzUCMj_.js} +1 -1
  10. package/dist/assets/{CopilotPanel-BGK1rw-V.js → CopilotPanel-COLw-atS.js} +1 -1
  11. package/dist/assets/{Cron-s1e-jgOo.js → Cron-DoEHDHwy.js} +1 -1
  12. package/dist/assets/CronManager-vulcesqJ.js +1 -0
  13. package/dist/assets/{Database-ZluStWMz.js → Database-DlB_t04Z.js} +1 -1
  14. package/dist/assets/{Diagnostics-C0N5z5j-.js → Diagnostics-DddCUgeR.js} +1 -1
  15. package/dist/assets/{Dlq-CtcLzs-b.js → Dlq-DMKrsSMP.js} +1 -1
  16. package/dist/assets/{DlqControl-B_Z8KKn5.js → DlqControl-9m0Re_TH.js} +1 -1
  17. package/dist/assets/{DlqPro-B68en6AG.js → DlqPro-Dmw-0wta.js} +1 -1
  18. package/dist/assets/{Flows-CD_bkCBM.js → Flows-C3-9nXW4.js} +1 -1
  19. package/dist/assets/JobInspector-DwIfABmI.js +2 -0
  20. package/dist/assets/{Jobs-BUtcBKKk.js → Jobs-j8tTS3NC.js} +1 -1
  21. package/dist/assets/JobsPro-CS__CJJl.js +1 -0
  22. package/dist/assets/{Logs-CmVODYCI.js → Logs-BB-VDPA1.js} +1 -1
  23. package/dist/assets/{LogsPro-CJ-Il3LP.js → LogsPro-RNtSQZRT.js} +1 -1
  24. package/dist/assets/{McpServer-dMjyJKgT.js → McpServer-CbaU52l2.js} +2 -2
  25. package/dist/assets/{Metrics-Dsbeplz-.js → Metrics-ivcddPwT.js} +1 -1
  26. package/dist/assets/{MetricsPro-BqxurxrJ.js → MetricsPro-xjZno4vg.js} +1 -1
  27. package/dist/assets/{Overview-DH9C2dsf.js → Overview-D84aD2ph.js} +1 -1
  28. package/dist/assets/{Pagination-DpxiBnt8.js → Pagination-Bfi4vkpp.js} +1 -1
  29. package/dist/assets/{QueueActions-D_QGBaVm.js → QueueActions-DTbD6uek.js} +1 -1
  30. package/dist/assets/{QueueControl-V0DJ6qk6.js → QueueControl-B5xK_SQ-.js} +1 -1
  31. package/dist/assets/{QueueDetail-BgKAMJqf.js → QueueDetail-BH59kwm9.js} +1 -1
  32. package/dist/assets/{QueueDetailPro-BkHYzGiq.js → QueueDetailPro-DoN25ndy.js} +1 -1
  33. package/dist/assets/{Queues-2_v7DcNi.js → Queues-CKMJqFHX.js} +1 -1
  34. package/dist/assets/{QueuesOverview-BySSkmB4.js → QueuesOverview-BX1lzojl.js} +1 -1
  35. package/dist/assets/{S3Backup-CPADzKQE.js → S3Backup-Bz3GfoZ9.js} +1 -1
  36. package/dist/assets/{S3BackupPro-CSrQYIDL.js → S3BackupPro-BC_6-uX-.js} +1 -1
  37. package/dist/assets/{ServerControl-C0tI1VDx.js → ServerControl-CSSrN8G5.js} +2 -2
  38. package/dist/assets/{Settings-CSzoM5up.js → Settings-DkqmZUIS.js} +1 -1
  39. package/dist/assets/{Usage-B4B7tmrc.js → Usage-Ba20p0xd.js} +1 -1
  40. package/dist/assets/{UsagePro-CCBpgSDy.js → UsagePro-C2pQwjN9.js} +1 -1
  41. package/dist/assets/{Webhooks-aJz-GisQ.js → Webhooks-CVuuvb0L.js} +1 -1
  42. package/dist/assets/{Workers-Bg8xKjkg.js → Workers-C1wPU6CS.js} +1 -1
  43. package/dist/assets/{WorkersPro-BOOCrXf8.js → WorkersPro-B0vEkC0T.js} +1 -1
  44. package/dist/assets/Workflows-C8Qmkflf.js +1 -0
  45. package/dist/assets/{flowMutationSafety-DVD1IMr-.js → flowMutationSafety-CoOp94wS.js} +1 -1
  46. package/dist/assets/index-BCNzbhhD.css +1 -0
  47. package/dist/assets/index-CAtsVmyh.js +8 -0
  48. package/dist/assets/install-D0eRLf9F.js +3 -0
  49. package/dist/assets/{upstreamPaths-nG8N1XAz.js → upstreamPaths-D_LPsv7b.js} +1 -1
  50. package/dist/assets/{useThroughputSeries-tb26_lkb.js → useThroughputSeries-DjxGN8ob.js} +1 -1
  51. package/dist/index.html +3 -3
  52. package/package.json +4 -1
  53. package/scripts/embedded.gen.ts +122 -120
  54. package/dist/assets/AddJob-ytpBLTCJ.js +0 -3
  55. package/dist/assets/CronManager-BostU7BX.js +0 -1
  56. package/dist/assets/JobInspector-DwRtyMz0.js +0 -2
  57. package/dist/assets/JobsPro-BK_xd4ji.js +0 -1
  58. package/dist/assets/index-BWoUj86M.css +0 -1
  59. package/dist/assets/index-Bn2R06qm.js +0 -8
  60. package/dist/assets/install-CUS8Kijb.js +0 -3
@@ -0,0 +1 @@
1
+ @font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:"Inter Variable", ui-sans-serif, system-ui, sans-serif;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-700:oklch(52% .105 223.128);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-700:oklch(49.1% .27 292.581);--color-fuchsia-600:oklch(59.1% .293 322.896);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Inter Variable", ui-sans-serif, system-ui, sans-serif;--default-mono-font-family:"JetBrains Mono Variable", ui-monospace, "SF Mono", Menlo, monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--line)}html,body,#root{height:100%}html{font-size:clamp(13.5px,12.7px + .28vw,16px)}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);letter-spacing:-.005em;font-optical-sizing:auto;font-feature-settings:"cv11", "ss01";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;line-height:1.55}h1,h2{letter-spacing:-.02em}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--surface-2);border:2px solid var(--bg);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--line-strong)}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.inset-y-1\.5{inset-block:calc(var(--spacing) * 1.5)}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.right-0{right:0}.right-0\.5{right:calc(var(--spacing) * .5)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.right-5{right:calc(var(--spacing) * 5)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-0{left:0}.left-1{left:var(--spacing)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.isolate{isolation:isolate}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[55\]{z-index:55}.z-\[60\]{z-index:60}.order-42{order:42}.order-99{order:99}.order-first{order:-9999}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.-mt-3{margin-top:calc(var(--spacing) * -3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-auto{margin-right:auto}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\[18px\]{width:18px;height:18px}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-14{height:calc(var(--spacing) * 14)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-52{max-height:calc(var(--spacing) * 52)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[28rem\]{max-height:28rem}.max-h-\[70vh\]{max-height:70vh}.min-h-0{min-height:0}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-screen{min-height:100vh}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-2\/5{width:40%}.w-4{width:calc(var(--spacing) * 4)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-80{width:calc(var(--spacing) * 80)}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-\[14rem\]{max-width:14rem}.max-w-\[16rem\]{max-width:16rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[85\%\]{max-width:85%}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-28{min-width:calc(var(--spacing) * 28)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-\[44rem\]{min-width:44rem}.min-w-\[52rem\]{min-width:52rem}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-6{--tw-translate-x:calc(var(--spacing) * 6);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[18px_1fr\]{grid-template-columns:18px 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-line>:not(:last-child)){border-color:var(--line)}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.overscroll-x-contain{overscroll-behavior-x:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-br-sm{border-bottom-right-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent\/30{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/30{border-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.border-accent\/40{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/40{border-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.border-accent\/50{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/50{border-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/20{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.border-amber-500\/25{border-color:#f99c0040}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/25{border-color:color-mix(in oklab, var(--color-amber-500) 25%, transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/30{border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)}}.border-blue-400\/60{border-color:#54a2ff99}@supports (color:color-mix(in lab, red, red)){.border-blue-400\/60{border-color:color-mix(in oklab, var(--color-blue-400) 60%, transparent)}}.border-blue-500\/20{border-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.border-blue-500\/20{border-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.border-current{border-color:currentColor}.border-cyan-400\/60{border-color:#00d2ef99}@supports (color:color-mix(in lab, red, red)){.border-cyan-400\/60{border-color:color-mix(in oklab, var(--color-cyan-400) 60%, transparent)}}.border-danger\/30{border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.border-danger\/30{border-color:color-mix(in oklab, var(--danger) 30%, transparent)}}.border-danger\/40{border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.border-danger\/40{border-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.border-danger\/50{border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.border-danger\/50{border-color:color-mix(in oklab, var(--danger) 50%, transparent)}}.border-emerald-500\/25{border-color:#00bb7f40}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\/25{border-color:color-mix(in oklab, var(--color-emerald-500) 25%, transparent)}}.border-line{border-color:var(--line)}.border-line-strong{border-color:var(--line-strong)}.border-line\/60{border-color:var(--line)}@supports (color:color-mix(in lab, red, red)){.border-line\/60{border-color:color-mix(in oklab, var(--line) 60%, transparent)}}.border-line\/70{border-color:var(--line)}@supports (color:color-mix(in lab, red, red)){.border-line\/70{border-color:color-mix(in oklab, var(--line) 70%, transparent)}}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.border-red-500\/20{border-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.border-red-500\/25{border-color:#fb2c3640}@supports (color:color-mix(in lab, red, red)){.border-red-500\/25{border-color:color-mix(in oklab, var(--color-red-500) 25%, transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab, red, red)){.border-red-500\/30{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)}}.border-success\/40{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.border-success\/40{border-color:color-mix(in oklab, var(--success) 40%, transparent)}}.border-success\/50{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.border-success\/50{border-color:color-mix(in oklab, var(--success) 50%, transparent)}}.border-transparent{border-color:#0000}.border-warning\/30{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/30{border-color:color-mix(in oklab, var(--warning) 30%, transparent)}}.border-warning\/40{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/40{border-color:color-mix(in oklab, var(--warning) 40%, transparent)}}.border-warning\/50{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/50{border-color:color-mix(in oklab, var(--warning) 50%, transparent)}}.border-t-transparent{border-top-color:#0000}.bg-accent,.bg-accent\/5{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/5{background-color:color-mix(in oklab, var(--accent) 5%, transparent)}}.bg-accent\/10{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab, var(--accent) 10%, transparent)}}.bg-accent\/15{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/15{background-color:color-mix(in oklab, var(--accent) 15%, transparent)}}.bg-accent\/\[0\.06\]{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/\[0\.06\]{background-color:color-mix(in oklab, var(--accent) 6%, transparent)}}.bg-amber-400{background-color:var(--color-amber-400)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/5{background-color:color-mix(in oklab, var(--color-amber-500) 5%, transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/15{background-color:color-mix(in oklab, var(--color-amber-500) 15%, transparent)}}.bg-amber-500\/\[0\.06\]{background-color:#f99c000f}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/\[0\.06\]{background-color:color-mix(in oklab, var(--color-amber-500) 6%, transparent)}}.bg-bg,.bg-bg\/80{background-color:var(--bg)}@supports (color:color-mix(in lab, red, red)){.bg-bg\/80{background-color:color-mix(in oklab, var(--bg) 80%, transparent)}}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.bg-black\/30{background-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-400\/10{background-color:color-mix(in oklab, var(--color-blue-400) 10%, transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/10{background-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.bg-blue-500\/\[0\.06\]{background-color:#3080ff0f}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/\[0\.06\]{background-color:color-mix(in oklab, var(--color-blue-500) 6%, transparent)}}.bg-current{background-color:currentColor}.bg-cyan-400\/10{background-color:#00d2ef1a}@supports (color:color-mix(in lab, red, red)){.bg-cyan-400\/10{background-color:color-mix(in oklab, var(--color-cyan-400) 10%, transparent)}}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\/10{background-color:color-mix(in oklab, var(--color-cyan-500) 10%, transparent)}}.bg-danger\/5{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/5{background-color:color-mix(in oklab, var(--danger) 5%, transparent)}}.bg-danger\/10{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/10{background-color:color-mix(in oklab, var(--danger) 10%, transparent)}}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/10{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)}}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/15{background-color:color-mix(in oklab, var(--color-emerald-500) 15%, transparent)}}.bg-emerald-500\/\[0\.06\]{background-color:#00bb7f0f}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\/\[0\.06\]{background-color:color-mix(in oklab, var(--color-emerald-500) 6%, transparent)}}.bg-line{background-color:var(--line)}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab, red, red)){.bg-orange-500\/10{background-color:color-mix(in oklab, var(--color-orange-500) 10%, transparent)}}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/5{background-color:color-mix(in oklab, var(--color-red-500) 5%, transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/15{background-color:color-mix(in oklab, var(--color-red-500) 15%, transparent)}}.bg-red-500\/40{background-color:#fb2c3666}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/40{background-color:color-mix(in oklab, var(--color-red-500) 40%, transparent)}}.bg-red-500\/\[0\.06\]{background-color:#fb2c360f}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/\[0\.06\]{background-color:color-mix(in oklab, var(--color-red-500) 6%, transparent)}}.bg-sidebar{background-color:var(--sidebar)}.bg-success\/10{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--success) 10%, transparent)}}.bg-surface{background-color:var(--surface)}.bg-surface-2,.bg-surface-2\/30{background-color:var(--surface-2)}@supports (color:color-mix(in lab, red, red)){.bg-surface-2\/30{background-color:color-mix(in oklab, var(--surface-2) 30%, transparent)}}.bg-surface-2\/50{background-color:var(--surface-2)}@supports (color:color-mix(in lab, red, red)){.bg-surface-2\/50{background-color:color-mix(in oklab, var(--surface-2) 50%, transparent)}}.bg-surface\/60{background-color:var(--surface)}@supports (color:color-mix(in lab, red, red)){.bg-surface\/60{background-color:color-mix(in oklab, var(--surface) 60%, transparent)}}.bg-transparent{background-color:#0000}.bg-violet-500\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab, red, red)){.bg-violet-500\/10{background-color:color-mix(in oklab, var(--color-violet-500) 10%, transparent)}}.bg-warning\/5{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/5{background-color:color-mix(in oklab, var(--warning) 5%, transparent)}}.bg-warning\/10{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--warning) 10%, transparent)}}.bg-warning\/15{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/15{background-color:color-mix(in oklab, var(--warning) 15%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-zinc-400{background-color:var(--color-zinc-400)}.bg-zinc-500{background-color:var(--color-zinc-500)}.bg-zinc-500\/10{background-color:#71717b1a}@supports (color:color-mix(in lab, red, red)){.bg-zinc-500\/10{background-color:color-mix(in oklab, var(--color-zinc-500) 10%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-accent{--tw-gradient-from:var(--accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-amber-400\/80{--tw-gradient-from:#fcbb00cc}@supports (color:color-mix(in lab, red, red)){.from-amber-400\/80{--tw-gradient-from:color-mix(in oklab, var(--color-amber-400) 80%, transparent)}}.from-amber-400\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-emerald-400\/80{--tw-gradient-from:#00d294cc}@supports (color:color-mix(in lab, red, red)){.from-emerald-400\/80{--tw-gradient-from:color-mix(in oklab, var(--color-emerald-400) 80%, transparent)}}.from-emerald-400\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-red-400\/70{--tw-gradient-from:#ff6568b3}@supports (color:color-mix(in lab, red, red)){.from-red-400\/70{--tw-gradient-from:color-mix(in oklab, var(--color-red-400) 70%, transparent)}}.from-red-400\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-amber-400\/25{--tw-gradient-via:#fcbb0040}@supports (color:color-mix(in lab, red, red)){.via-amber-400\/25{--tw-gradient-via:color-mix(in oklab, var(--color-amber-400) 25%, transparent)}}.via-amber-400\/25{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-emerald-400\/25{--tw-gradient-via:#00d29440}@supports (color:color-mix(in lab, red, red)){.via-emerald-400\/25{--tw-gradient-via:color-mix(in oklab, var(--color-emerald-400) 25%, transparent)}}.via-emerald-400\/25{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-red-400\/20{--tw-gradient-via:#ff656833}@supports (color:color-mix(in lab, red, red)){.via-red-400\/20{--tw-gradient-via:color-mix(in oklab, var(--color-red-400) 20%, transparent)}}.via-red-400\/20{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-fuchsia-600{--tw-gradient-to:var(--color-fuchsia-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-14{padding-block:calc(var(--spacing) * 14)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-24{padding-block:calc(var(--spacing) * 24)}.pt-1{padding-top:var(--spacing)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-\[12vh\]{padding-top:12vh}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-0\.5{padding-left:calc(var(--spacing) * .5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:JetBrains Mono Variable,ui-monospace,SF Mono,Menlo,monospace}.font-sans{font-family:Inter Variable,ui-sans-serif,system-ui,sans-serif}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--accent)}.text-accent-fg{color:var(--accent-fg)}.text-accent\/80{color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.text-accent\/80{color:color-mix(in oklab, var(--accent) 80%, transparent)}}.text-accent\/90{color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.text-accent\/90{color:color-mix(in oklab, var(--accent) 90%, transparent)}}.text-amber-200{color:var(--color-amber-200)}.text-amber-300\/90{color:#ffd236e6}@supports (color:color-mix(in lab, red, red)){.text-amber-300\/90{color:color-mix(in oklab, var(--color-amber-300) 90%, transparent)}}.text-amber-400{color:var(--color-amber-400)}.text-amber-400\/90{color:#fcbb00e6}@supports (color:color-mix(in lab, red, red)){.text-amber-400\/90{color:color-mix(in oklab, var(--color-amber-400) 90%, transparent)}}.text-blue-400{color:var(--color-blue-400)}.text-cyan-400{color:var(--color-cyan-400)}.text-danger,.text-danger\/70{color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.text-danger\/70{color:color-mix(in oklab, var(--danger) 70%, transparent)}}.text-danger\/80{color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.text-danger\/80{color:color-mix(in oklab, var(--danger) 80%, transparent)}}.text-danger\/90{color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.text-danger\/90{color:color-mix(in oklab, var(--danger) 90%, transparent)}}.text-emerald-400{color:var(--color-emerald-400)}.text-faint,.text-faint\/60{color:var(--text-faint)}@supports (color:color-mix(in lab, red, red)){.text-faint\/60{color:color-mix(in oklab, var(--text-faint) 60%, transparent)}}.text-faint\/70{color:var(--text-faint)}@supports (color:color-mix(in lab, red, red)){.text-faint\/70{color:color-mix(in oklab, var(--text-faint) 70%, transparent)}}.text-fg{color:var(--text)}.text-line{color:var(--line)}.text-muted{color:var(--text-muted)}.text-orange-400{color:var(--color-orange-400)}.text-red-400{color:var(--color-red-400)}.text-red-400\/90{color:#ff6568e6}@supports (color:color-mix(in lab, red, red)){.text-red-400\/90{color:color-mix(in oklab, var(--color-red-400) 90%, transparent)}}.text-success{color:var(--success)}.text-violet-400{color:var(--color-violet-400)}.text-warning{color:var(--warning)}.text-white{color:var(--color-white)}.text-zinc-400{color:var(--color-zinc-400)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.accent-accent{accent-color:var(--accent)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-accent,.ring-accent\/50{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.ring-accent\/50{--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,visibility\]{transition-property:transform,visibility;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-faint::placeholder{color:var(--text-faint)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\:border-accent\/50:hover{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/50:hover{border-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.hover\:border-amber-400\/50:hover{border-color:#fcbb0080}@supports (color:color-mix(in lab, red, red)){.hover\:border-amber-400\/50:hover{border-color:color-mix(in oklab, var(--color-amber-400) 50%, transparent)}}.hover\:border-amber-500\/50:hover{border-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.hover\:border-amber-500\/50:hover{border-color:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.hover\:border-line-strong:hover{border-color:var(--line-strong)}.hover\:border-red-500\/50:hover{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.hover\:border-red-500\/50:hover{border-color:color-mix(in oklab, var(--color-red-500) 50%, transparent)}}.hover\:bg-amber-500\/10:hover{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-amber-500\/10:hover{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.hover\:bg-emerald-500\/90:hover{background-color:#00bb7fe6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-emerald-500\/90:hover{background-color:color-mix(in oklab, var(--color-emerald-500) 90%, transparent)}}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.hover\:bg-surface-2:hover,.hover\:bg-surface-2\/40:hover{background-color:var(--surface-2)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-2\/40:hover{background-color:color-mix(in oklab, var(--surface-2) 40%, transparent)}}.hover\:bg-surface-2\/50:hover{background-color:var(--surface-2)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-2\/50:hover{background-color:color-mix(in oklab, var(--surface-2) 50%, transparent)}}.hover\:bg-surface-2\/60:hover{background-color:var(--surface-2)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-2\/60:hover{background-color:color-mix(in oklab, var(--surface-2) 60%, transparent)}}.hover\:bg-surface-2\/70:hover{background-color:var(--surface-2)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-2\/70:hover{background-color:color-mix(in oklab, var(--surface-2) 70%, transparent)}}.hover\:text-accent:hover{color:var(--accent)}.hover\:text-danger:hover{color:var(--danger)}.hover\:text-fg:hover{color:var(--text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:absolute:focus{position:absolute}.focus\:top-3:focus{top:calc(var(--spacing) * 3)}.focus\:left-4:focus{left:calc(var(--spacing) * 4)}.focus\:z-50:focus{z-index:50}.focus\:border-accent\/60:focus{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus\:border-accent\/60:focus{border-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-accent\/30:focus{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-accent\/30:focus{--tw-ring-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-accent:focus-visible{border-color:var(--accent)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-accent\/40:focus-visible{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-accent\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.focus-visible\:ring-accent\/50:focus-visible{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-accent\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.focus-visible\:ring-accent\/70:focus-visible{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-accent\/70:focus-visible{--tw-ring-color:color-mix(in oklab, var(--accent) 70%, transparent)}}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-offset-\[-2px\]:focus-visible{outline-offset:-2px}.focus-visible\:outline-accent:focus-visible{outline-color:var(--accent)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media (hover:hover){.disabled\:hover\:text-faint:disabled:hover{color:var(--text-faint)}}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-ping{animation:var(--animate-ping)}}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}@media (width>=40rem){.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:max-w-xs{max-width:var(--container-xs)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (width>=64rem){.lg\:visible{visibility:visible}.lg\:static{position:static}.lg\:z-auto{z-index:auto}.lg\:order-none{order:0}.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:hidden{display:none}.lg\:translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-\[1fr_260px\]{grid-template-columns:1fr 260px}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-between{justify-content:space-between}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}.lg\:pt-6{padding-top:calc(var(--spacing) * 6)}}@media (width>=80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(390px\,0\.8fr\)_minmax\(0\,1\.4fr\)\]{grid-template-columns:minmax(390px,.8fr) minmax(0,1.4fr)}}.light\:text-amber-700:where([data-theme=light],[data-theme=light] *){color:var(--color-amber-700)}.light\:text-blue-700:where([data-theme=light],[data-theme=light] *){color:var(--color-blue-700)}.light\:text-cyan-700:where([data-theme=light],[data-theme=light] *){color:var(--color-cyan-700)}.light\:text-orange-700:where([data-theme=light],[data-theme=light] *){color:var(--color-orange-700)}.light\:text-violet-700:where([data-theme=light],[data-theme=light] *){color:var(--color-violet-700)}.light\:text-zinc-600:where([data-theme=light],[data-theme=light] *){color:var(--color-zinc-600)}.\[\&\>svg\]\:size-8>svg{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}}:root,[data-theme=dark]{--bg:#08080a;--surface:#0e0e12;--surface-2:#17171c;--line:#ffffff12;--line-strong:#ffffff1f;--text:#f4f4f5;--text-muted:#a8a8b3;--text-faint:#868c98;--sidebar:#09090b;--accent:#db2777;--accent-fg:#fff;--success:#34d399;--warning:#fbbf24;--danger:#f87171}[data-theme=light]{--bg:#fafafa;--surface:#fff;--surface-2:#f4f4f5;--line:#00000014;--line-strong:#00000024;--text:#18181b;--text-muted:#52525b;--text-faint:#71717a;--sidebar:#fff;--accent:#db2777;--accent-fg:#fff;--success:#047857;--warning:#b45309;--danger:#dc2626}@media (width<=639px){input,select,textarea{font-size:16px!important}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CopilotPanel-COLw-atS.js","assets/cn-CMFYpumL.js","assets/react-vendor-Bjui4wS4.js","assets/dist-DZL8soAh.js","assets/form-DsUq0w8s.js","assets/AddJob-CG28MSxU.js","assets/upstreamPaths-D_LPsv7b.js","assets/useServerActionGuard-CItj3hvh.js","assets/connectionStore-Cd9-3Fw0.js","assets/Benchmark-BVjUH9dG.js","assets/AreaChart-REK4ZsTC.js","assets/BulkAddJobs-BHzUCMj_.js","assets/CronManager-vulcesqJ.js","assets/Pagination-Bfi4vkpp.js","assets/Database-DlB_t04Z.js","assets/Diagnostics-DddCUgeR.js","assets/DlqControl-9m0Re_TH.js","assets/flowMutationSafety-CoOp94wS.js","assets/exportFile-C7xhE8Yh.js","assets/QueueControl-B5xK_SQ-.js","assets/QueueActions-DTbD6uek.js","assets/DlqPro-Dmw-0wta.js","assets/Flows-C3-9nXW4.js","assets/JobInspector-DwIfABmI.js","assets/jobActions-LQD4KfCc.js","assets/JobsPro-CS__CJJl.js","assets/LogsPro-RNtSQZRT.js","assets/McpServer-CbaU52l2.js","assets/MetricsPro-xjZno4vg.js","assets/useThroughputSeries-DjxGN8ob.js","assets/QueueDetailPro-DoN25ndy.js","assets/QueuesOverview-BX1lzojl.js","assets/promisePool-BVfQ9n9Q.js","assets/S3BackupPro-BC_6-uX-.js","assets/ServerControl-CSSrN8G5.js","assets/UsagePro-C2pQwjN9.js","assets/Webhooks-CVuuvb0L.js","assets/WorkersPro-B0vEkC0T.js","assets/Workflows-C8Qmkflf.js","assets/Alerts-D9JojJrj.js","assets/Cron-DoEHDHwy.js","assets/Dlq-DMKrsSMP.js","assets/Jobs-j8tTS3NC.js","assets/Logs-BB-VDPA1.js","assets/Metrics-ivcddPwT.js","assets/Overview-D84aD2ph.js","assets/QueueDetail-BH59kwm9.js","assets/Queues-CKMJqFHX.js","assets/S3Backup-Bz3GfoZ9.js","assets/Settings-DkqmZUIS.js","assets/Usage-Ba20p0xd.js","assets/Workers-C1wPU6CS.js"])))=>i.map(i=>d[i]);
2
+ import{r as e,t}from"./cn-CMFYpumL.js";import{a as n,c as r,g as i,i as a,l as o,m as s,n as c,o as l,p as u,r as d,s as f,t as p,u as m}from"./react-vendor-Bjui4wS4.js";import{a as h,c as g,i as _,l as v,n as y,o as b,r as x,s as S}from"./connectionStore-Cd9-3Fw0.js";import{a as C,i as w,n as T,r as ee,s as E}from"./upstreamPaths-D_LPsv7b.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var D=e(i(),1),te=s(),ne=`bq-dash-alerts`,re=1,ie=[`email`,`webhook`,`slack`],ae=[`error_rate`,`p99_latency`,`waiting`,`failed`,`dlq`],oe=[`>=`,`>`,`<=`,`<`],se=128,ce=200,le=2048,ue=256,de=/^[^\s@]+@[^\s@]+\.[^\s@]+$/u,fe=()=>`${Date.now().toString(36)}${Math.floor(Math.random()*1e6).toString(36)}`;function pe(e){let t=new Set(e.map(e=>e.id)),n=fe();if(!t.has(n))return n;let r=1;for(;t.has(`${n}-${r}`);)r+=1;return`${n}-${r}`}function me(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function he(e){return ie.includes(e)}function ge(e){return ae.includes(e)}function _e(e){return oe.includes(e)}function ve(e,t){let n=t.trim();if(!n||n.length>le)return!1;if(e===`email`)return n.length<=320&&de.test(n);try{let e=new URL(n);return[`http:`,`https:`].includes(e.protocol)&&!e.username&&!e.password}catch{return!1}}function ye(e){if(!me(e)||typeof e.id!=`string`||!he(e.type)||typeof e.target!=`string`)return null;let t=e.id.trim(),n=e.target.trim();return!t||t.length>se||n.length>le||e.type===`email`&&!ve(e.type,n)?null:{id:t,type:e.type,target:e.type===`email`?n:``}}function be(e){if(!me(e)||typeof e.id!=`string`||typeof e.name!=`string`||!ge(e.metric)||!_e(e.operator)||typeof e.threshold!=`number`||!Number.isFinite(e.threshold)||typeof e.queue!=`string`||!he(e.channel)||typeof e.enabled!=`boolean`)return null;let t=e.id.trim(),n=e.name.trim(),r=e.queue.trim();return!t||t.length>se||!n||n.length>ce||r.length>ue||e.threshold<0||e.metric===`error_rate`&&e.threshold>100?null:{id:t,name:n,metric:e.metric,operator:e.operator,threshold:e.threshold,queue:r,channel:e.channel,enabled:e.enabled}}function xe(e){let t=me(e)?e:{},n=[],r=new Set;if(Array.isArray(t.channels))for(let e of t.channels){if(n.length>=100)break;let t=ye(e);!t||r.has(t.id)||(r.add(t.id),n.push(t))}let i=[],a=new Set;if(Array.isArray(t.rules))for(let e of t.rules){if(i.length>=500)break;let t=be(e);!t||a.has(t.id)||(a.add(t.id),i.push(t))}return{channels:n,rules:i}}function Se(e){return xe({channels:e.channels,rules:e.rules})}function Ce(){try{return globalThis.localStorage??null}catch{return null}}function we(e){try{let t=JSON.parse(e),n=me(t)?t:{},r=xe(`state`in n?n.state:n),i=typeof n.version==`number`?n.version:void 0;return{hydration:JSON.stringify({state:r,...i===void 0?{}:{version:i}}),canonical:JSON.stringify({state:r,version:re})}}catch{return null}}var Te={getItem(e){let t=Ce();if(!t)return null;let n;try{n=t.getItem(e)}catch{return null}if(n===null||e!==`bq-dash-alerts`)return n;let r=we(n);if(!r){try{t.removeItem(e)}catch{}return null}if(n!==r.canonical)try{t.setItem(e,r.canonical)}catch{try{t.removeItem(e)}catch{}}return r.hydration},setItem(e,t){try{Ce()?.setItem(e,t)}catch{}},removeItem(e){try{Ce()?.removeItem(e)}catch{}}},Ee=v()(g(e=>({channels:[],rules:[],addChannel:(t,n)=>{let r={ok:!1,error:`Alert destination was rejected.`};return e(e=>{let i=n.trim();return!he(t)||!ve(t,i)?(r={ok:!1,error:`Alert destination is invalid.`},e):e.channels.length>=100?(r={ok:!1,error:`A maximum of 100 alert destinations can be stored in this browser.`},e):(r={ok:!0},{channels:[...e.channels,{id:pe(e.channels),type:t,target:i}]})}),r},removeChannel:t=>e(e=>({channels:e.channels.filter(e=>e.id!==t)})),addRule:t=>{let n={ok:!1,error:`Alert rule was rejected.`};return e(e=>{if(e.rules.length>=500)return n={ok:!1,error:`A maximum of 500 alert rules can be stored in this browser.`},e;let r=be({...t,id:pe(e.rules)});return r?(n={ok:!0},{rules:[...e.rules,r]}):(n={ok:!1,error:`Alert rule contains invalid fields.`},e)}),n},removeRule:t=>e(e=>({rules:e.rules.filter(e=>e.id!==t)})),toggleRule:t=>e(e=>({rules:e.rules.map(e=>e.id===t?{...e,enabled:!e.enabled}:e)}))}),{name:ne,version:re,storage:S(()=>Te),partialize:Se,migrate:xe,merge:(e,t)=>({...t,...xe(e)})})),De={error_rate:`error rate`,p99_latency:`p99 latency`,waiting:`waiting jobs`,failed:`failed jobs`,dlq:`DLQ size`},Oe=1,ke=v(e=>({toasts:[],push:({level:t,title:n,detail:r,ttlMs:i})=>{let a=Oe++,o=i??(t===`error`?8e3:4e3);return e(e=>({toasts:[...e.toasts,{id:a,level:t,title:n,detail:r,ttlMs:o}].slice(-5)})),a},dismiss:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)}))})),Ae={success:(e,t)=>ke.getState().push({level:`success`,title:e,detail:t}),error:(e,t)=>ke.getState().push({level:`error`,title:e,detail:t}),info:(e,t)=>ke.getState().push({level:`info`,title:e,detail:t})},je=1e4,Me=1e3,Ne=864e13,Pe=new Set([`job.pushed`,`job.started`,`job.completed`,`job.failed`,`job.progress`,`job.stalled`]);function O(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function k(e,t,n=!1){if(typeof e!=`string`||e.length>t||!n&&e.length===0)return!1;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<32||n===127)return!1}return!0}function A(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function Fe(e){return typeof e==`number`&&Number.isFinite(e)}function Ie(e){return A(e)&&e<=Ne}function Le(e,t){return e===null||k(e,t)}function Re(e,t,n){if(!Array.isArray(e)||e.length>t)return!1;let r=new Set;for(let t of e){if(!k(t,n)||r.has(t))return!1;r.add(t)}return!0}function ze(e,t){let n=O(e),r=n&&O(n.data);if(n?.ok!==!0||!r)throw Error(`Malformed ${t} response.`);return r}function Be(e){if(!Array.isArray(e))throw Error(`Malformed queue summary response.`);let t=new Set,n=[];for(let r of e){let e=O(r),i=e&&O(e.counts);if(!e||!k(e.name,256)||t.has(e.name)||typeof e.paused!=`boolean`||!i||!A(i.waiting)||!A(i.prioritized)||!A(i.active)||!A(i.completed)||!A(i.failed)||!A(i.delayed))throw Error(`Malformed queue summary response.`);t.add(e.name),n.push(r)}return n}function Ve(e){let t=ze(e,`workers`);if(!Array.isArray(t.workers)||t.workers.length>je)throw Error(`Malformed workers response.`);let n=new Set,r=[],i=[];for(let e=0;e<t.workers.length;e++){let a=t.workers[e],o=O(a),s=o&&typeof o.id==`string`?o.id:null,c=[];if(o?(k(o.id,1024)?n.has(o.id)&&c.push(`duplicate id`):c.push(`id`),k(o.name,512,!0)||c.push(`name`),Re(o.queues,Me,256)||c.push(`queues`),(!A(o.concurrency)||o.concurrency<1)&&c.push(`concurrency`),k(o.hostname,512,!0)||c.push(`hostname`),A(o.pid)||c.push(`pid`),o.status!==`active`&&o.status!==`stale`&&c.push(`status`),Ie(o.registeredAt)||c.push(`registeredAt`),Ie(o.lastSeen)||c.push(`lastSeen`),A(o.activeJobs)||c.push(`activeJobs`),A(o.processedJobs)||c.push(`processedJobs`),A(o.failedJobs)||c.push(`failedJobs`),Le(o.currentJob,1024)||c.push(`currentJob`),Fe(o.uptime)||c.push(`uptime`)):c.push(`entry is not an object`),s&&n.add(s),c.length>0){i.push({index:e,id:s,reason:c.join(`, `)});continue}r.push(a)}return{ok:!0,data:{workers:r,quarantinedWorkers:i,...Object.hasOwn(t,`stats`)?{stats:t.stats}:{}}}}function He(e){if(!k(e,2048))return!1;try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}function Ue(e){let t=ze(e,`webhooks`);if(!Array.isArray(t.webhooks)||t.webhooks.length>je)throw Error(`Malformed webhooks response.`);let n=new Set,r=[];for(let e of t.webhooks){let t=O(e);if(!t||!k(t.id,1024)||n.has(t.id)||!He(t.url)||!Array.isArray(t.events)||!t.events.every(e=>Pe.has(e))||!(t.queue===null||typeof t.queue==`string`)||!Ie(t.createdAt)||!(t.lastTriggered===null||Ie(t.lastTriggered))||!A(t.successCount)||!A(t.failureCount)||typeof t.enabled!=`boolean`)throw Error(`Malformed webhooks response.`);n.add(t.id),r.push(e)}return{ok:!0,data:{webhooks:r,...Object.hasOwn(t,`stats`)?{stats:t.stats}:{}}}}var We=2e5,Ge=16*1024*1024,Ke=12e4,qe=64*1024,j=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`BqError`}},Je=3e4;async function M(e,t,n,r,i=!0,a=`server`,o=[],s=Je){let c=AbortSignal.timeout(s),l=r?.signal?AbortSignal.any([r.signal,c]):c,u=new Headers(n);r?.headers&&new Headers(r.headers).forEach((e,t)=>{u.set(t,e)}),r?.body!=null&&!u.has(`Content-Type`)&&u.set(`Content-Type`,`application/json`);let d;try{d=await fetch(e+t,{...r,headers:u,signal:l})}catch(e){throw c.aborted&&!r?.signal?.aborted||e?.name===`TimeoutError`?new j(`Request timed out`,0):e}if(!d.ok&&!o.includes(d.status)){let t=`HTTP ${d.status}`;try{let e=await d.json();e?.error&&(t=e.error)}catch{}throw d.status===401&&typeof window<`u`&&window.dispatchEvent(new CustomEvent(`auth:required`,{detail:{scope:a,auth:u.get(`Authorization`)??void 0,target:e}})),new j(t,d.status)}if(d.status===204)return;let f;try{f=await d.text()}catch(e){throw c.aborted&&!r?.signal?.aborted?new j(`Request timed out`,0):e}if(!f)return;let p;try{p=JSON.parse(f)}catch{throw new j(`Invalid JSON response (HTTP ${d.status})`,d.status)}if(i&&p&&typeof p==`object`&&p.ok===!1){let e=p.error;throw new j(e??`Operation failed`,d.status)}return p}var N=(e,t,n=!0,r=[],i=Je)=>M(_(),e,x(),t,n,`server`,r,i);function Ye(e,t){return h(e)??h(t)??`http://localhost:6800`}function Xe(){try{return globalThis.__BUNQUEUE_AGENT_URL__}catch{return}}var Ze=Ye(Xe(),void 0),P=(e,t)=>M(Ze,e,y(),t,!0,`agent`),F=e=>encodeURIComponent(e),Qe=new WeakMap,$e=new WeakMap;function et(){let e=Object.freeze({baseUrl:_()});return Qe.set(e,Object.freeze({...x()})),e}function tt(e,t){let n=Object.entries(e),r=Object.entries(t);return n.length===r.length&&n.every(([e,n])=>t[e]===n)}function nt(e){let t=Qe.get(e);if(!t)throw TypeError(`Invalid server request target.`);if(e.baseUrl!==_()||!tt(t,x()))throw Error(`Server connection changed after confirmation was requested for ${e.baseUrl}; action refused.`)}function rt(){let e=Object.freeze({baseUrl:Ze});return $e.set(e,Object.freeze({...y()})),e}async function it(e,t,n){n?.throwIfAborted();let r=Qe.get(e);if(!r)throw TypeError(`Invalid server request target.`);let i=await M(e.baseUrl,`/jobs/${C(t)}`,{...r},n?{signal:n}:void 0);return n?.throwIfAborted(),i}async function at(e,t,n=50,r=0,i,a=`asc`,o,s){s?.throwIfAborted();let c=$e.get(e);if(!c)throw TypeError(`Invalid agent request target.`);let l=await M(e.baseUrl,`/db/tables/${T(t,`Database table`)}?limit=${n}&offset=${r}`+(i?`&orderBy=${F(i)}&dir=${a}`:``)+(o?.value?`&fcol=${F(o.column)}&fop=${o.op}&fval=${F(o.value)}`:``),{...c},s?{signal:s}:void 0,!0,`agent`);return s?.throwIfAborted(),l}function ot(e,t,n,r=!0){let i=e.get(t);if(!i||!/^\d+$/.test(i))throw new j(`Malformed database export response: invalid ${t} header.`,200);let a=Number(i);if(!Number.isSafeInteger(a)||a>n||!r&&a===0)throw new j(`Malformed database export response: invalid ${t} header.`,200);return a}async function st(e){if(!e.body)return``;let t=e.body.getReader(),n=new Uint8Array(qe),r=0;try{for(;;){let e=await t.read();if(e.done)break;if(r+e.value.byteLength>n.byteLength)return t.cancel().catch(()=>void 0),``;n.set(e.value,r),r+=e.value.byteLength}}finally{t.releaseLock()}return new TextDecoder().decode(n.subarray(0,r))}async function ct(e,t,n){if(!e.body)throw new j(`Malformed database export response: missing CSV body.`,200);let r=new Uint8Array(t),i=e.body.getReader(),a=0;try{for(;;){n?.throwIfAborted();let e=await i.read();if(e.done)break;if(a+e.value.byteLength>t)throw i.cancel().catch(()=>void 0),new j(`Malformed database export response: body exceeds declared ${t} bytes.`,200);r.set(e.value,a),a+=e.value.byteLength}}finally{i.releaseLock()}if(n?.throwIfAborted(),a!==t)throw new j(`Malformed database export response: received ${a} of ${t} declared bytes.`,200);return r}async function lt(e,t,n){n?.throwIfAborted();let r=$e.get(e);if(!r)throw TypeError(`Invalid agent request target.`);if(!t||typeof t!=`object`||Array.isArray(t))throw TypeError(`Invalid database export request.`);if(typeof t.table!=`string`||!t.table)throw TypeError(`Database export table must not be empty.`);if(t.dir!==`asc`&&t.dir!==`desc`)throw TypeError(`Invalid database export sort direction.`);if(t.orderBy!==void 0&&(typeof t.orderBy!=`string`||!t.orderBy))throw TypeError(`Database export sort column must not be empty.`);if(t.filter&&(typeof t.filter!=`object`||Array.isArray(t.filter)||typeof t.filter.column!=`string`||!t.filter.column||typeof t.filter.value!=`string`||!t.filter.value||t.filter.op!==`contains`&&t.filter.op!==`eq`&&t.filter.op!==`ne`))throw TypeError(`Invalid database export filter.`);let i=Object.freeze({table:t.table,orderBy:t.orderBy,dir:t.dir,filter:t.filter?Object.freeze({...t.filter}):void 0}),a=new URLSearchParams;i.orderBy&&a.set(`orderBy`,i.orderBy),a.set(`dir`,i.dir),i.filter&&(a.set(`fcol`,i.filter.column),a.set(`fop`,i.filter.op),a.set(`fval`,i.filter.value));let o=`/db/tables/${T(i.table,`Database table`)}/export?${a}`,s=AbortSignal.timeout(Ke),c=n?AbortSignal.any([n,s]):s,l={...r};try{let t=await fetch(e.baseUrl+o,{headers:l,signal:c});if(!t.ok){t.status===401&&typeof window<`u`&&window.dispatchEvent(new CustomEvent(`auth:required`,{detail:{scope:`agent`,auth:new Headers(l).get(`Authorization`)??void 0,target:e.baseUrl}}));let n=`HTTP ${t.status}`,r=await st(t);if(r)try{let e=JSON.parse(r);typeof e==`object`&&e&&!Array.isArray(e)&&typeof e.error==`string`&&(n=e.error)}catch{}throw new j(n,t.status)}if(t.headers.get(`X-Bunqueue-Db-Export-Version`)!==`1`)throw new j(`Malformed database export response: unsupported contract version.`,200);let r=t.headers.get(`Content-Type`)??``;if(!/^text\/csv(?:;|$)/i.test(r))throw new j(`Malformed database export response: expected CSV content.`,200);let a=t.headers.get(`X-Bunqueue-Db-Export-Table`),s;try{if(!a)throw Error(`missing`);s=decodeURIComponent(a)}catch{throw new j(`Malformed database export response: invalid table identity.`,200)}if(s!==i.table)throw new j(`Database export target changed: requested "${i.table}", received "${s}".`,200);let u=ot(t.headers,`X-Bunqueue-Db-Export-Rows`,We),d=ot(t.headers,`X-Bunqueue-Db-Export-Bytes`,Ge,!1);if(ot(t.headers,`Content-Length`,16777216,!1)!==d)throw new j(`Malformed database export response: Content-Length does not match X-Bunqueue-Db-Export-Bytes.`,200);let f=t.headers.get(`X-Bunqueue-Db-Export-Cap`);if(f!==`none`&&f!==`rows`&&f!==`bytes`)throw new j(`Malformed database export response: invalid export cap.`,200);if(f===`rows`&&u!==2e5)throw new j(`Malformed database export response: inconsistent row cap.`,200);let p=await ct(t,d,c);return n?.throwIfAborted(),{table:s,content:p,rowCount:u,bytes:d,cap:f===`none`?null:f}}catch(e){throw s.aborted&&!n?.aborted?new j(`Database export timed out`,0):e}}var I=(e,t)=>({method:e,body:t===void 0?void 0:JSON.stringify(t)}),ut=3e5,dt=(e,t)=>I(e,t),ft=365*24*60*60*1e3;function pt(e){if(e===void 0)return;if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`Repeat must be an object with a positive "every" interval`);let t=Object.keys(e).filter(e=>e!==`every`&&e!==`limit`);if(t.length>0)throw TypeError(`Unsupported repeat option(s): ${t.join(`, `)}. bunqueue v2.8.57 pattern repeats are unsafe; use the Cron API instead.`);if(!Number.isSafeInteger(e.every)||e.every<1||e.every>ft)throw TypeError(`Repeat "every" must be a whole number from 1 to ${ft} ms`);if(e.limit!==void 0&&(!Number.isSafeInteger(e.limit)||e.limit<1))throw TypeError(`Repeat "limit" must be a whole number of at least 1`)}function mt(e){let t=[...e.jobId===void 0?[]:[[`jobId`,e.jobId]],...(e.dependsOn??[]).map(e=>[`dependsOn`,e])];for(let[e,n]of t){let t=w(n);if(t)throw TypeError(`${e}: ${t}. The job would not be manageable through v2.8.57 HTTP.`)}}function ht(e){if(e!==void 0&&(typeof e!=`string`||e.length===0||e.length>256))throw TypeError(`Job name must be a non-empty string of at most 256 characters`)}var gt=[`childrenIds`,`parentId`,`failParentOnFailure`,`removeDependencyOnFailure`,`continueParentOnFailure`,`ignoreDependencyOnFailure`,`keepLogs`,`sizeLimit`,`debounceId`,`debounceTtl`];function _t(e){let t=e,n=gt.filter(e=>t[e]!==void 0);if(n.length>0)throw TypeError(`Unsupported Bunqueue v2.8.57 enqueue option(s): ${n.join(`, `)}. Flow topology must use the atomic flow API; inert compatibility fields are not sent.`)}function vt(e){let t;try{t=JSON.stringify(e)}catch{throw TypeError(`Job payload must be JSON serializable`)}if(t===void 0)throw TypeError(`Job payload must be JSON serializable`);let n;try{n=JSON.parse(t)}catch{throw TypeError(`Job payload encoding failed`)}if(typeof n!=`object`||!n||Array.isArray(n))throw TypeError(`Job payload must serialize to a JSON object`);let r=n;if(ht(r.name),pt(r.repeat),_t(r),r.dependsOn!==void 0&&(!Array.isArray(r.dependsOn)||!r.dependsOn.every(e=>typeof e==`string`)))throw TypeError(`dependsOn must be an array of job ID strings`);return mt(r),t}function yt({jobId:e,...t}){return e===void 0?t:{...t,customId:e}}function bt(e){let t=JSON.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))throw TypeError(`must serialize to a JSON object`);let n=t;if(n.jobId!==void 0)throw TypeError(`serialized jobId is invalid; the bulk transport requires customId`);if(ht(n.name),pt(n.repeat),_t(n),n.customId!==void 0){if(typeof n.customId!=`string`)throw TypeError(`customId must be a string`);let e=w(n.customId);if(e)throw TypeError(`customId: ${e}. The job would not be manageable through v2.8.57 HTTP.`)}if(n.dependsOn!==void 0){if(!Array.isArray(n.dependsOn)||!n.dependsOn.every(e=>typeof e==`string`))throw TypeError(`dependsOn must be an array of job ID strings`);for(let e of n.dependsOn){let t=w(e);if(t)throw TypeError(`dependsOn: ${t}. The job would not be manageable through v2.8.57 HTTP.`)}}}var xt=64*1024*1024,St=1e4;function Ct(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);if(i<=127?n+=1:i<=2047?n+=2:i>=55296&&i<=56319&&r+1<e.length&&e.charCodeAt(r+1)>=56320&&e.charCodeAt(r+1)<=57343?(n+=4,r+=1):n+=3,n>t)return n}return n}function wt(e,t,n){if(!Array.isArray(e)||e.length>1e4)return{ok:!1,error:`Bulk request must contain at most ${St} jobs`};if(!Number.isSafeInteger(t)||t<0)return{ok:!1,error:`Bulk request payload limit is invalid`};let r=e.length,i=11,a=n?Array(r):null;for(let o=0;o<r;o++){if(o>0&&(i+=1),i>t)return{ok:!1,error:`Bulk request payload exceeds the 64 MiB UTF-8 safety limit`};let r;try{r=JSON.stringify(yt(e[o]))}catch{return{ok:!1,error:`Bulk request payload must be JSON serializable`}}if(r===void 0)return{ok:!1,error:`Bulk request payload must be JSON serializable`};let s=Ct(r,t-i);if(i+=s,i>t)return{ok:!1,error:`Bulk request payload exceeds the 64 MiB UTF-8 safety limit`};if(n)try{bt(r)}catch(e){let t=e instanceof Error?e.message:String(e);return{ok:!1,error:`Bulk job ${o+1}: ${t}`}}a&&(a[o]=r)}return{ok:!0,bytes:i,body:a?`{"jobs":[${a.join(`,`)}]}`:void 0}}function Tt(e,t=xt){let n=wt(e,t,!1);return n.ok?null:n.error}function Et(e){let t=wt(e,xt,!0);if(!t.ok)throw TypeError(t.error);if(t.body===void 0)throw TypeError(`Bulk request payload encoding failed`);return t.body}function Dt(e){if(!Array.isArray(e)||e.length>1e4)throw TypeError(`Bulk request must contain at most ${St} jobs`)}function L(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw new j(`Malformed ${t} response.`,200);return e}function R(e,t){let n=L(e,t);if(n.ok!==!0)throw new j(`Malformed ${t} response.`,200);return n}function Ot(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function kt(e,t){if(e!==void 0)return R(e,t)}function At(e,t){let n=Qe.get(e);if(!n)throw TypeError(`Invalid server request target.`);let r={...n},i=(n,i,a=Je)=>{let o=t?{...i,signal:i?.signal?AbortSignal.any([i.signal,t]):t}:i;return M(e.baseUrl,n,r,o,!0,`server`,[],a)};return Object.freeze({queuesSummary:async()=>Be(await i(`/queues/summary`)),overview:()=>i(`/dashboard`),counts:async e=>{let t=L(R(await i(`/queues/${E(e)}/counts`),`queue counts`).counts,`queue counts`);if(!Object.values(t).every(Ot))throw new j(`Malformed queue counts response.`,200);return{ok:!0,counts:t}},jobsList:async(e,t,n=50,r=0)=>{let a=new URLSearchParams;t?.length&&a.set(`states`,t.join(`,`)),a.set(`limit`,String(n)),a.set(`offset`,String(r));let o=R(await i(`/queues/${E(e)}/jobs/list?${a}`),`jobs list`);if(!Array.isArray(o.jobs)||!o.jobs.every(t=>{let n=t;return typeof n==`object`&&!!n&&!Array.isArray(n)&&typeof n.id==`string`&&n.id.length>0&&(n.queue===void 0||n.queue===e)}))throw new j(`Malformed jobs list response.`,200);return{ok:!0,jobs:o.jobs}},job:async e=>{let t=L(R(await i(`/jobs/${C(e)}`),`job`).job,`job`);if(t.id!==e)throw new j(`Malformed job response.`,200);return{ok:!0,job:t}},dlqStats:async e=>{let t=L(R(await i(`/queues/${E(e)}/dlq/stats`),`DLQ stats`).stats,`DLQ stats`);if(!Ot(t.total))throw new j(`Malformed DLQ stats response.`,200);return{ok:!0,stats:t}},dlq:async(e,t=100,n=0)=>{let r=R(await i(`/queues/${E(e)}/dlq?limit=${t}&offset=${n}`),`DLQ list`);if(!Array.isArray(r.entries)||!Ot(r.total))throw new j(`Malformed DLQ list response.`,200);for(let e of r.entries){let t=L(L(e,`DLQ list`).job,`DLQ list`);if(typeof t.id!=`string`||t.id.length===0)throw new j(`Malformed DLQ list response.`,200)}return{ok:!0,entries:r.entries,total:r.total}},health:async()=>L(await M(e.baseUrl,`/health`,r,t?{signal:t}:void 0,!1,`server`,[503]),`health`),stats:async()=>{let e=await i(`/stats`);return L(R(e,`server stats`).stats,`server stats`),e},workers:async()=>Ve(await i(`/workers`)),crons:async()=>{let e=R(await i(`/crons`),`crons`);if(!Array.isArray(e.crons)||!e.crons.every(e=>{let t=e;return typeof t==`object`&&!!t&&!Array.isArray(t)&&typeof t.name==`string`&&t.name.length>0&&typeof t.queue==`string`&&t.queue.length>0}))throw new j(`Malformed crons response.`,200);return{ok:!0,crons:e.crons}},addJobsBulk:async(e,t)=>{Dt(t);let n=Et(t);return i(`/queues/${E(e)}/jobs/bulk`,{method:`POST`,body:n},ut)},pullBatch:(e,t)=>i(`/queues/${E(e)}/jobs/pull-batch`,I(`POST`,{count:t})),heartbeatBatch:e=>i(`/jobs/heartbeat-batch`,I(`POST`,{ids:e})),ackBatch:e=>i(`/jobs/ack-batch`,I(`POST`,{ids:e})),retryJob:e=>i(`/jobs/${C(e)}/move-to-wait`,I(`POST`)),promoteJob:async e=>kt(await i(`/jobs/${C(e)}/promote`,I(`POST`)),`promote job`),pause:async e=>kt(await i(`/queues/${E(e)}/pause`,I(`POST`)),`pause queue`),resume:async e=>kt(await i(`/queues/${E(e)}/resume`,I(`POST`)),`resume queue`),clean:(e,t={})=>i(`/queues/${E(e)}/clean`,I(`POST`,t))})}var jt=[`job.pushed`,`job.started`,`job.completed`,`job.failed`,`job.progress`],z={overview:e=>N(`/dashboard`,e),queues:(e=500,t=0)=>N(`/dashboard/queues?limit=${e}&offset=${t}`),queuesSummary:async()=>Be(await N(`/queues/summary`)),queueDetail:(e,t=!0)=>N(`/dashboard/queues/${E(e)}?includeJobs=${t}`),stats:e=>N(`/stats`,e),storage:()=>N(`/storage`,void 0,!1),health:()=>N(`/health`,void 0,!1,[503]),ping:()=>N(`/ping`),captureServerRequestTarget:et,createServerTargetClient:At,getJobAtTarget:it,captureAgentRequestTarget:rt,getDbRowsAtTarget:at,getDbExportAtTarget:lt,prometheusUrl:()=>`${_()}/prometheus`,gc:()=>N(`/gc`,I(`POST`)),heapStats:()=>N(`/heapstats`),jobsList:(e,t,n=50,r=0)=>{let i=new URLSearchParams;return t?.length&&i.set(`states`,t.join(`,`)),i.set(`limit`,String(n)),i.set(`offset`,String(r)),N(`/queues/${E(e)}/jobs/list?${i}`)},job:e=>N(`/jobs/${C(e)}`),jobByCustomId:e=>N(`/jobs/custom/${T(e,`Custom job ID`)}`),jobResult:e=>N(`/jobs/${C(e)}/result`),jobLogs:e=>N(`/jobs/${C(e)}/logs`),jobChildren:e=>N(`/jobs/${C(e)}/children`),addJob:async(e,t)=>{let n=vt(t);return N(`/queues/${E(e)}/jobs`,{method:`POST`,body:n})},addJobsBulk:async(e,t)=>{Dt(t);let n=Et(t);return N(`/queues/${E(e)}/jobs/bulk`,{method:`POST`,body:n},!0,[],ut)},pullBatch:(e,t)=>N(`/queues/${E(e)}/jobs/pull-batch`,I(`POST`,{count:t})),ackBatch:e=>N(`/jobs/ack-batch`,I(`POST`,{ids:e})),cancelJob:e=>N(`/jobs/${C(e)}`,{method:`DELETE`}),promoteJob:e=>N(`/jobs/${C(e)}/promote`,I(`POST`)),discardJob:e=>N(`/jobs/${C(e)}/discard`,I(`POST`)),retryJob:e=>N(`/jobs/${C(e)}/move-to-wait`,I(`POST`)),failJob:(e,t,n={})=>N(`/jobs/${C(e)}/fail`,I(`POST`,{error:t,...n})),updateJobData:(e,t)=>N(`/jobs/${C(e)}/data`,I(`PUT`,{data:t})),changePriority:(e,t,n)=>N(`/jobs/${C(e)}/priority`,I(`PUT`,{priority:t,...n===void 0?{}:{lifo:n}})),changeDelay:(e,t)=>N(`/jobs/${C(e)}/delay`,I(`PUT`,{delay:t})),moveToDelayed:(e,t)=>N(`/jobs/${C(e)}/move-to-delayed`,I(`POST`,{delay:t})),addJobLog:(e,t,n)=>N(`/jobs/${C(e)}/logs`,I(`POST`,{message:t,level:n})),clearJobLogs:e=>N(`/jobs/${C(e)}/logs`,{method:`DELETE`}),setJobProgress:(e,t,n)=>N(`/jobs/${C(e)}/progress`,I(`POST`,{progress:t,message:n})),counts:e=>N(`/queues/${E(e)}/counts`),pause:e=>N(`/queues/${E(e)}/pause`,I(`POST`)),resume:e=>N(`/queues/${E(e)}/resume`,I(`POST`)),drain:e=>N(`/queues/${E(e)}/drain`,dt(`POST`),!0,[],ut),obliterate:e=>N(`/queues/${E(e)}/obliterate`,dt(`POST`),!0,[],ut),clean:(e,t={})=>N(`/queues/${E(e)}/clean`,I(`POST`,t)),promoteJobs:(e,t)=>N(`/queues/${E(e)}/promote-jobs`,I(`POST`,t==null?void 0:{count:t})),retryCompleted:(e,t)=>{throw TypeError(`Completed-job requeue is unavailable in Bunqueue v2.8.57 because flow dependency registration is not rebuilt.`)},setRateLimit:(e,t,n,r)=>N(`/queues/${E(e)}/rate-limit`,I(`PUT`,{limit:t,...n===void 0?{}:{duration:n},...r===void 0?{}:{ttl:r}})),clearRateLimit:e=>N(`/queues/${E(e)}/rate-limit`,{method:`DELETE`}),setConcurrency:(e,t)=>N(`/queues/${E(e)}/concurrency`,I(`PUT`,{concurrency:t})),clearConcurrency:e=>N(`/queues/${E(e)}/concurrency`,{method:`DELETE`}),getStallConfig:e=>N(`/queues/${E(e)}/stall-config`),setStallConfig:(e,t)=>N(`/queues/${E(e)}/stall-config`,I(`PUT`,{config:t})),getDlqConfig:e=>N(`/queues/${E(e)}/dlq-config`),setDlqConfig:(e,t)=>{if(t.autoRetry===!0)throw TypeError(`DLQ auto-retry is unavailable: Bunqueue v2.8.57 does not rebuild flow dependency registration.`);if(t.maxAge!==void 0||t.maxEntries!==void 0)throw TypeError(`DLQ retention is read-only: maxAge/maxEntries can destructively expire or evict flow jobs without an atomic dependency check.`);return N(`/queues/${E(e)}/dlq-config`,I(`PUT`,{config:t}))},dlq:(e,t=100,n=0)=>N(`/queues/${E(e)}/dlq?limit=${t}&offset=${n}`),dlqStats:e=>N(`/queues/${E(e)}/dlq/stats`),retryDlq:(e,t)=>{throw TypeError(`DLQ retry is unavailable in Bunqueue v2.8.57 because the endpoint has no atomic job-generation, state, or flow-topology precondition.`)},purgeDlq:e=>N(`/queues/${E(e)}/dlq/purge`,I(`POST`)),crons:()=>N(`/crons`),createCron:e=>N(`/crons`,I(`POST`,e)),deleteCron:e=>N(`/crons/${T(e,`Cron name`,256)}`,{method:`DELETE`}),webhooks:async()=>Ue(await N(`/webhooks`)),addWebhook:e=>N(`/webhooks`,I(`POST`,e)),removeWebhook:e=>N(`/webhooks/${C(e)}`,{method:`DELETE`}),setWebhookEnabled:(e,t)=>N(`/webhooks/${C(e)}/enabled`,I(`PUT`,{enabled:t})),workers:async()=>Ve(await N(`/workers`)),unregisterWorker:e=>N(`/workers/${C(e)}`,{method:`DELETE`}),eventsUrl:e=>_()+(e?`/events/queues/${ee(e)}`:`/events`),db:{info:()=>P(`/db/info`),tables:()=>P(`/db/tables`),schema:e=>P(`/db/tables/${T(e,`Database table`)}/schema`),rows:(e,t=50,n=0,r,i=`asc`,a)=>P(`/db/tables/${T(e,`Database table`)}?limit=${t}&offset=${n}`+(r?`&orderBy=${F(r)}&dir=${i}`:``)+(a?.value?`&fcol=${F(a.column)}&fop=${a.op}&fval=${F(a.value)}`:``)),cell:(e,t,n)=>P(`/db/tables/${T(e,`Database table`)}/cell?rowid=${F(String(t))}&column=${F(n)}`),query:e=>P(`/db/query`,I(`POST`,{sql:e}))},get agentBase(){return Ze},control:{status:()=>P(`/control/status`),start:()=>P(`/control/start`,{method:`POST`}),stop:()=>P(`/control/stop`,{method:`POST`}),restart:()=>P(`/control/restart`,{method:`POST`}),logs:()=>P(`/control/logs`),getConfig:()=>P(`/control/config`),setConfig:e=>P(`/control/config`,I(`PUT`,e))},workflows:{stats:()=>P(`/workflows/stats`),list:(e={})=>{let t=new URLSearchParams;return e.kind&&t.set(`kind`,e.kind),e.workflowName&&t.set(`workflowName`,e.workflowName),e.state&&t.set(`state`,e.state),e.limit!==void 0&&t.set(`limit`,String(e.limit)),e.offset!==void 0&&t.set(`offset`,String(e.offset)),P(`/workflows${t.size?`?${t}`:``}`)},get:(e,t=`active`)=>P(`/workflows/${T(e,`Workflow execution id`)}?kind=${t}`)}};Object.defineProperty(z,"agentBase",{configurable:!1});var Mt=15e3,Nt=6e4,Pt=3,B=v(e=>({breaching:[],status:`idle`,error:null,connectionIdentity:null,setBreaching:t=>e({breaching:t})})),Ft=(e,t)=>JSON.stringify([e,t]);async function It(){if(typeof Notification>`u`)return`denied`;if(Notification.permission===`granted`)return`granted`;try{return await Notification.requestPermission()}catch{return`denied`}}function Lt(e,t,n){switch(t){case`>=`:return e>=n;case`>`:return e>n;case`<=`:return e<=n;case`<`:return e<n;default:return!1}}var Rt=3e4;function zt(e){let t=JSON.parse(e);if(!Array.isArray(t)||t.length!==2)throw TypeError(`Invalid alert connection identity.`);let[n,r]=t,i=h(n);if(!i||typeof r!=`string`)throw TypeError(`Invalid alert server target.`);let a=r.trim();return Object.freeze({baseUrl:i,...a?{authorization:`Bearer ${a}`}:{}})}function Bt(e,t){let n=new Headers({Accept:`application/json`});e.authorization&&n.set(`Authorization`,e.authorization);let r=async r=>{t.throwIfAborted();let i=AbortSignal.any([t,AbortSignal.timeout(Rt)]),a=await fetch(e.baseUrl+r,{headers:n,signal:i});if(t.throwIfAborted(),!a.ok)throw await a.body?.cancel().catch(()=>{}),a.status===401&&typeof window<`u`&&window.dispatchEvent(new CustomEvent(`auth:required`,{detail:{scope:`server`,auth:e.authorization,target:e.baseUrl}})),Error(`Alert metrics request failed: HTTP ${a.status}`);let o=await a.text();if(t.throwIfAborted(),!o)throw Error(`Alert metrics request returned an empty response.`);try{return JSON.parse(o)}catch{throw Error(`Alert metrics request returned invalid JSON (HTTP ${a.status}).`)}};return Object.freeze({queuesSummary:()=>r(`/queues/summary`),queues:(e=500,t=0)=>r(`/dashboard/queues?limit=${e}&offset=${t}`),overview:()=>r(`/dashboard`)})}var Vt=10500;function Ht(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function Ut(e){if(!Array.isArray(e)||e.length>Vt)return null;let t=new Set,n=[];for(let r of e){if(!r||typeof r!=`object`||Array.isArray(r))return null;let e=r,i=e.counts;if(typeof e.name!=`string`||!e.name||e.name.length>256||!/^[a-zA-Z0-9_\-.:]+$/.test(e.name)||t.has(e.name)||typeof e.paused!=`boolean`||!i||typeof i!=`object`||Array.isArray(i))return null;let a=i;if(![`waiting`,`active`,`completed`,`failed`,`delayed`].every(e=>Ht(a[e])))return null;t.add(e.name),n.push(r)}return n}function Wt(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;if(t.ok!==!0||!t.latency||typeof t.latency!=`object`||Array.isArray(t.latency))return null;let n=t.latency.percentiles;if(!n||typeof n!=`object`||Array.isArray(n))return null;for(let e of Object.values(n))if(!e||typeof e!=`object`||Array.isArray(e)||typeof e.p99!=`number`||!Number.isFinite(e.p99)||e.p99<0)return null;return e}var Gt=(e,t)=>{let n=e+t;return n>0?t/n*100:null};function Kt(e,t){let n=e.queue.trim();switch(e.metric){case`waiting`:return t.summary?n?t.summary.find(e=>e.name===n)?.counts.waiting??null:t.summary.reduce((e,t)=>e+t.counts.waiting,0):null;case`failed`:return t.summary?n?t.summary.find(e=>e.name===n)?.counts.failed??null:t.summary.reduce((e,t)=>e+t.counts.failed,0):null;case`dlq`:return t.queues?n?t.queues.find(e=>e.name===n)?.dlq??null:t.queues.reduce((e,t)=>e+(t.dlq??0),0):null;case`error_rate`:if(!t.summary)return null;if(n){let e=t.summary.find(e=>e.name===n);return e?Gt(e.counts.completed,e.counts.failed):null}return Gt(t.summary.reduce((e,t)=>e+t.counts.completed,0),t.summary.reduce((e,t)=>e+t.counts.failed,0));case`p99_latency`:{let e=t.overview?.latency?.percentiles;if(!e)return null;let n=Object.values(e).map(e=>e.p99).filter(e=>Number.isFinite(e));return n.length?Math.max(...n):null}default:return null}}var qt=e=>`${e.queue||`All queues`}: ${e.metricLabel} ${e.operator} ${e.threshold} (now ${Math.round(e.value)})`;function Jt(e){if(typeof Notification<`u`&&Notification.permission===`granted`)try{new Notification(`bunqueue alert: ${e.ruleName}`,{body:qt(e),tag:e.ruleId})}catch{}}function Yt(e){Ae.error(`Alert: ${e.ruleName}`,qt(e)),Jt(e)}function Xt(e){if(e.length<=Pt){for(let t of e)Yt(t);return}Ae.error(`${e.length} alert rules breaching`,e.map(e=>e.ruleName).join(`, `));for(let t of e)Jt(t)}var Zt=500,Qt=21;function $t(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return null;let r=e;if(r.ok!==!0||!Array.isArray(r.queues)||typeof r.total!=`number`||!Number.isSafeInteger(r.total)||r.total<0||r.total>Vt||n!==null&&r.total!==n||r.offset!==t||r.limit!==Zt)return null;let i=Math.min(Zt,r.total-t);if(i<0||r.queues.length!==i)return null;let a=[];for(let e of r.queues){if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=e;if(typeof t.name!=`string`||t.name.length===0||t.name.length>256||!/^[a-zA-Z0-9_\-.:]+$/.test(t.name)||typeof t.dlq!=`number`||!Number.isSafeInteger(t.dlq)||t.dlq<0)return null;a.push(e)}return{queues:a,total:r.total}}async function en(e=z){try{let t=[],n=new Set,r=null;for(let i=0;i<Qt;i++){let i=$t(await e.queues(Zt,t.length),t.length,r);if(!i)return null;r??=i.total;for(let e of i.queues){if(n.has(e.name))return null;n.add(e.name),t.push(e)}if(t.length===r)return t}return null}catch{return null}}function tn(){let e=Ee(e=>e.rules),t=b(e=>Ft(e.baseUrl,e.token)),n=(0,D.useRef)(new Map),r=(0,D.useRef)(new Map),i=(0,D.useRef)(new Map),a=(0,D.useRef)(new Map),o=(0,D.useRef)(t),s=(0,D.useRef)(0),c=JSON.stringify(e.filter(e=>e.enabled).map(e=>[e.id,e.metric,e.operator,e.threshold,e.queue]));(0,D.useEffect)(()=>{let e=()=>{n.current.clear(),r.current.clear(),i.current.clear(),a.current.clear()},l=o.current!==t;if(l&&(o.current=t,e()),c===`[]`){e(),B.setState({breaching:[],status:`idle`,error:null,connectionIdentity:t});return}let u=new Set(Ee.getState().rules.filter(e=>e.enabled).map(e=>e.id)),d=l?[]:B.getState().breaching.filter(e=>u.has(e.ruleId));B.setState({breaching:d,status:`checking`,error:null,connectionIdentity:t});let f;try{f=zt(t)}catch(e){B.setState({breaching:[],status:`degraded`,error:`Alert evaluation failed: ${e.message}`,connectionIdentity:t});return}let p=new AbortController,m=++s.current,h=!1,g=!1,_=()=>{if(h||s.current!==m)return!1;let e=b.getState();return Ft(e.baseUrl,e.token)===t},v=async()=>{if(!g){g=!0;try{let e=Bt(f,p.signal),[o,s,c]=await Promise.all([e.queuesSummary().then(Ut).catch(()=>null),en(e),e.overview().then(Wt).catch(()=>null)]);if(!_())return;let l=Ee.getState().rules.filter(e=>e.enabled),u=new Set(l.map(e=>e.id));for(let e of[...n.current.keys()])u.has(e)||(n.current.delete(e),r.current.delete(e),i.current.delete(e),a.current.delete(e));if(!c){let e=B.getState().breaching.filter(e=>u.has(e.ruleId));if(!_())return;B.setState({breaching:e,status:`degraded`,error:`The bunqueue overview endpoint is unavailable; alert results may be stale.`,connectionIdentity:t});return}let d={summary:o,queues:s,overview:c},m=Date.now(),h=[],g=[],v=!1;for(let e of l){let t=Kt(e,d);if(t==null){v=!0;let t=n.current.get(e.id)?a.current.get(e.id):void 0;t&&h.push(t);continue}let o=Lt(t,e.operator,e.threshold),s=n.current.get(e.id)??!1;if(o){let n=s?i.current.get(e.id)??m:m;i.current.set(e.id,n);let o={ruleId:e.id,ruleName:e.name,metricLabel:De[e.metric],operator:e.operator,threshold:e.threshold,value:t,queue:e.queue,at:n};h.push(o),a.current.set(e.id,o);let c=r.current.get(e.id)??0;m-c>Nt&&c<n&&(g.push(o),r.current.set(e.id,m))}else i.current.delete(e.id),a.current.delete(e.id);n.current.set(e.id,o)}if(!_())return;Xt(g);let y=!o||!s||v;B.setState({breaching:h,status:y?`degraded`:`live`,error:y?`Some alert rules could not be evaluated; affected results remain unknown.`:null,connectionIdentity:t})}catch(e){if(!_())return;B.setState({status:`degraded`,error:`Alert evaluation failed: ${e.message}`,connectionIdentity:t})}finally{g=!1}}};v();let y=setInterval(v,Mt);return()=>{h=!0,s.current===m&&(s.current+=1),p.abort(),clearInterval(y)}},[c,t])}function nn(){return tn(),null}var rn={authentication:100,"command-palette":80,copilot:60,"database-row":40,"mobile-navigation":20},V=v((e,t)=>({active:null,request(n){let r=t().active;return r===n?!0:r&&rn[r]>rn[n]?!1:(e({active:n}),!0)},release(n){t().active===n&&e({active:null})},reset(){e({active:null})}}));function an(e){let t=V.getState().active;return t===null||t===e}var H=p();function on(e){return{scope:e,auth:e===`agent`?y().Authorization:x().Authorization,target:e===`agent`?z.agentBase:_()}}function sn(e,t){return e?.scope===t.scope&&e.auth===t.auth&&e.target===t.target}function cn(){let[e,t]=(0,D.useState)(!1),[n,r]=(0,D.useState)(`server`),[i,a]=(0,D.useState)(``),o=b(e=>e.baseUrl),s=b(e=>e.setToken),c=b(e=>e.setAgentToken),l=(0,D.useRef)(null),u=(0,D.useRef)(null),f=(0,D.useRef)(null),p=(0,D.useRef)(null),m=V(e=>e.active),h=e&&m===`authentication`;(0,D.useEffect)(()=>{let e=e=>{let n=e.detail;if(n?.scope!==`server`&&n?.scope!==`agent`)return;let i=on(n.scope);n.auth!==i.auth||n.target!==i.target||(sn(f.current,i)||(p.current=null,a(``)),f.current=i,V.getState().request(`authentication`),r(i.scope),t(!0),window.dispatchEvent(new window.Event(`auth:gate-opened`)))};return window.addEventListener(`auth:required`,e),()=>window.removeEventListener(`auth:required`,e)},[]),(0,D.useEffect)(()=>()=>{V.getState().release(`authentication`)},[]),(0,D.useEffect)(()=>{if(!h)return;let e=document.activeElement,t=document.getElementById(`app-shell`)?[]:[`app-nav`,`app-content`].map(e=>document.getElementById(e)).filter(e=>e!==null),n=t.map(e=>({element:e,inert:e.inert,ariaHidden:e.getAttribute(`aria-hidden`)}));for(let e of t)e.inert=!0,e.setAttribute(`aria-hidden`,`true`);let r=window.requestAnimationFrame(()=>l.current?.focus()),i=()=>u.current?Array.from(u.current.querySelectorAll(`a[href], button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])`)):[],a=e=>{if(e.key!==`Tab`)return;let t=i();if(!t.length){e.preventDefault();return}let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())};return window.addEventListener(`keydown`,a),()=>{window.cancelAnimationFrame(r),window.removeEventListener(`keydown`,a);for(let e of n)e.element.inert=e.inert,e.ariaHidden===null?e.element.removeAttribute(`aria-hidden`):e.element.setAttribute(`aria-hidden`,e.ariaHidden);an(`authentication`)&&e?.isConnected&&e.focus()}},[h]);let g=()=>{f.current=null,p.current=null,a(``),t(!1),V.getState().release(`authentication`)};return h?(0,H.jsx)(`div`,{className:`fixed inset-0 z-[60] flex items-center justify-center bg-black/60 p-4`,children:(0,H.jsxs)(`form`,{ref:u,onSubmit:e=>{e.preventDefault();let t=f.current,n=p.current;if(!t||!n||!sn(n.identity,t)||!sn(t,on(t.scope))){g();return}let r=n.value.trim();r&&(t.scope===`agent`?c(r):s(r),g())},role:`dialog`,"aria-modal":`true`,"aria-label":`Authentication required`,className:`w-full max-w-sm rounded-xl border border-line-strong bg-surface p-6 shadow-2xl`,children:[(0,H.jsx)(`h2`,{className:`text-lg font-semibold text-fg`,children:`Authentication required`}),n===`agent`?(0,H.jsxs)(`p`,{className:`mt-1 text-sm text-muted`,children:[`The control agent at `,(0,H.jsx)(`span`,{className:`break-all font-mono text-fg`,children:z.agentBase}),` `,`rejected the request (401). Enter its`,` `,(0,H.jsx)(`span`,{className:`font-mono text-fg`,children:`AGENT_TOKEN`}),` to continue.`]}):(0,H.jsxs)(`p`,{className:`mt-1 text-sm text-muted`,children:[`The server at `,(0,H.jsx)(`span`,{className:`break-all font-mono text-fg`,children:o}),` rejected the request (401). Enter its bearer token to continue.`]}),(0,H.jsx)(`input`,{ref:l,type:`password`,value:i,onInput:e=>{let t=e.currentTarget.value;a(t);let n=f.current;p.current=n?{identity:n,value:t}:null},placeholder:n===`agent`?`AGENT_TOKEN`:`Bearer token`,"aria-label":n===`agent`?`Agent token`:`Bearer token`,name:n===`agent`?`agent-token`:`server-token`,autoComplete:`current-password`,className:`mt-4 w-full rounded-lg border border-line bg-surface-2 px-3 py-2 text-sm text-fg outline-none placeholder:text-faint focus-visible:ring-2 focus-visible:ring-accent/50`}),(0,H.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-3`,children:[(0,H.jsx)(d,{to:`/settings`,onClick:g,className:`text-xs text-muted underline-offset-2 hover:text-fg hover:underline`,children:`Open Settings instead`}),(0,H.jsx)(`button`,{type:`submit`,disabled:!i.trim(),className:`rounded-lg bg-accent px-4 py-2 text-sm font-medium text-accent-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 disabled:opacity-50`,children:`Unlock`})]})]})}):null}var ln=`bq-dash-theme`,un=1;function U(e){return e===`light`?`light`:`dark`}function dn(){try{return globalThis.localStorage??null}catch{return null}}var fn={getItem(e){let t=dn();if(!t)return null;try{let n=t.getItem(e);if(n===null||e!==ln)return n;let r=JSON.parse(n),i=r&&typeof r==`object`&&!Array.isArray(r)?r:{},a=i.state&&typeof i.state==`object`&&!Array.isArray(i.state)?i.state:{},o=JSON.stringify({state:{theme:U(a.theme)},version:un});if(n!==o)try{t.setItem(e,o)}catch{}return o}catch{try{t.removeItem(e)}catch{}return null}},setItem(e,t){try{dn()?.setItem(e,t)}catch{}},removeItem(e){try{dn()?.removeItem(e)}catch{}}};function pn(e){typeof document<`u`&&(document.documentElement.dataset.theme=e,document.documentElement.style.colorScheme=e)}var W=v()(g((e,t)=>({theme:`dark`,toggle:()=>{let n=t().theme===`dark`?`light`:`dark`;pn(n),e({theme:n})},setTheme:t=>{let n=U(t);pn(n),e({theme:n})}}),{name:ln,version:un,storage:S(()=>fn),partialize:e=>({theme:U(e.theme)}),merge:(e,t)=>{let n=e&&typeof e==`object`&&!Array.isArray(e)?e:{};return{...t,theme:U(n.theme)}},onRehydrateStorage:()=>e=>{e&&pn(U(e.theme))}}));function mn(){pn(U(W.getState().theme))}function G({children:e,...t}){return(0,H.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`24`,height:`24`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,...t,children:e})}var hn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`path`,{d:`M3 3v18h18`}),(0,H.jsx)(`rect`,{x:`7`,y:`12`,width:`3`,height:`6`}),(0,H.jsx)(`rect`,{x:`12`,y:`8`,width:`3`,height:`10`}),(0,H.jsx)(`rect`,{x:`17`,y:`5`,width:`3`,height:`13`})]}),gn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`line`,{x1:`8`,y1:`6`,x2:`21`,y2:`6`}),(0,H.jsx)(`line`,{x1:`8`,y1:`12`,x2:`21`,y2:`12`}),(0,H.jsx)(`line`,{x1:`8`,y1:`18`,x2:`21`,y2:`18`}),(0,H.jsx)(`line`,{x1:`3`,y1:`6`,x2:`3.01`,y2:`6`}),(0,H.jsx)(`line`,{x1:`3`,y1:`12`,x2:`3.01`,y2:`12`}),(0,H.jsx)(`line`,{x1:`3`,y1:`18`,x2:`3.01`,y2:`18`})]}),_n=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`rect`,{x:`2`,y:`7`,width:`20`,height:`14`,rx:`2`}),(0,H.jsx)(`path`,{d:`M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2`})]}),vn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`path`,{d:`M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z`}),(0,H.jsx)(`line`,{x1:`12`,y1:`9`,x2:`12`,y2:`13`}),(0,H.jsx)(`line`,{x1:`12`,y1:`17`,x2:`12.01`,y2:`17`})]}),yn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,H.jsx)(`polyline`,{points:`12 7 12 12 15 14`})]}),bn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`path`,{d:`M3 3v18h18`}),(0,H.jsx)(`path`,{d:`m19 9-5 5-4-4-3 3`})]}),xn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`rect`,{x:`4`,y:`4`,width:`16`,height:`8`,rx:`2`}),(0,H.jsx)(`rect`,{x:`4`,y:`14`,width:`16`,height:`6`,rx:`2`}),(0,H.jsx)(`line`,{x1:`8`,y1:`8`,x2:`8.01`,y2:`8`}),(0,H.jsx)(`line`,{x1:`8`,y1:`17`,x2:`8.01`,y2:`17`})]}),Sn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`path`,{d:`M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9`}),(0,H.jsx)(`path`,{d:`M13.73 21a2 2 0 0 1-3.46 0`})]}),Cn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`line`,{x1:`8`,y1:`6`,x2:`21`,y2:`6`}),(0,H.jsx)(`line`,{x1:`8`,y1:`12`,x2:`21`,y2:`12`}),(0,H.jsx)(`line`,{x1:`8`,y1:`18`,x2:`21`,y2:`18`}),(0,H.jsx)(`path`,{d:`M3 6h.01M3 12h.01M3 18h.01`})]}),wn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`path`,{d:`M12 20V10`}),(0,H.jsx)(`path`,{d:`M18 20V4`}),(0,H.jsx)(`path`,{d:`M6 20v-4`})]}),Tn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`ellipse`,{cx:`12`,cy:`5`,rx:`8`,ry:`3`}),(0,H.jsx)(`path`,{d:`M4 5v6c0 1.66 3.58 3 8 3s8-1.34 8-3V5`}),(0,H.jsx)(`path`,{d:`M4 11v6c0 1.66 3.58 3 8 3s8-1.34 8-3v-6`})]}),En=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`rect`,{x:`3`,y:`4`,width:`18`,height:`16`,rx:`2`}),(0,H.jsx)(`path`,{d:`M3 10h18`}),(0,H.jsx)(`path`,{d:`M9 10v10`})]}),Dn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,H.jsx)(`path`,{d:`M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1Z`})]}),On=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`circle`,{cx:`12`,cy:`12`,r:`4`}),(0,H.jsx)(`path`,{d:`M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41`})]}),kn=e=>(0,H.jsx)(G,{...e,children:(0,H.jsx)(`path`,{d:`M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z`})}),An=e=>(0,H.jsx)(G,{...e,children:(0,H.jsx)(`polyline`,{points:`15 18 9 12 15 6`})}),jn=e=>(0,H.jsx)(G,{...e,children:(0,H.jsx)(`polyline`,{points:`9 18 15 12 9 6`})}),Mn=e=>(0,H.jsx)(G,{...e,children:(0,H.jsx)(`polygon`,{points:`5 3 19 12 5 21 5 3`})}),Nn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`rect`,{x:`6`,y:`4`,width:`4`,height:`16`}),(0,H.jsx)(`rect`,{x:`14`,y:`4`,width:`4`,height:`16`})]}),Pn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`polyline`,{points:`3 6 5 6 21 6`}),(0,H.jsx)(`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`})]}),Fn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`polyline`,{points:`23 4 23 10 17 10`}),(0,H.jsx)(`polyline`,{points:`1 20 1 14 7 14`}),(0,H.jsx)(`path`,{d:`M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15`})]}),In=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,H.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),Ln=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`path`,{d:`M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8Z`}),(0,H.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]}),Rn=e=>(0,H.jsx)(G,{...e,children:(0,H.jsx)(`polygon`,{points:`13 2 3 14 12 14 11 22 21 10 12 10 13 2`})}),zn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),(0,H.jsx)(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})]}),Bn=e=>(0,H.jsx)(G,{...e,children:(0,H.jsx)(`polyline`,{points:`20 6 9 17 4 12`})}),Vn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,H.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]}),Hn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`}),(0,H.jsx)(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})]}),Un=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`line`,{x1:`3`,y1:`6`,x2:`21`,y2:`6`}),(0,H.jsx)(`line`,{x1:`3`,y1:`12`,x2:`21`,y2:`12`}),(0,H.jsx)(`line`,{x1:`3`,y1:`18`,x2:`21`,y2:`18`})]}),Wn=e=>(0,H.jsxs)(G,{...e,children:[(0,H.jsx)(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),(0,H.jsx)(`polyline`,{points:`7 10 12 15 17 10`}),(0,H.jsx)(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})]}),K=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`ApiError`}},Gn=3e4;async function q(e,t,n=!0,r=[]){let i=AbortSignal.timeout(Gn),a=t?.signal?AbortSignal.any([t.signal,i]):i,o=new Headers(x());t?.headers&&new Headers(t.headers).forEach((e,t)=>{o.set(t,e)}),t?.body!=null&&!o.has(`Content-Type`)&&o.set(`Content-Type`,`application/json`);let s;try{s=await fetch(_()+e,{...t,headers:o,signal:a})}catch(e){throw i.aborted&&!t?.signal?.aborted||e?.name===`TimeoutError`?new K(`Request timed out`,0):e}if(!s.ok&&!r.includes(s.status)){let e=`HTTP ${s.status}`;try{let t=await s.json();t?.error&&(e=t.error)}catch{}throw new K(e,s.status)}if(s.status===204)return;let c;try{c=await s.text()}catch(e){throw i.aborted&&!t?.signal?.aborted?new K(`Request timed out`,0):e}if(!c)return;let l;try{l=JSON.parse(c)}catch{throw new K(`Invalid JSON response (HTTP ${s.status})`,s.status)}if(n&&l&&typeof l==`object`&&l.ok===!1){let e=l.error;throw new K(e??`Operation failed`,s.status)}return l}var J=E,Y=(e,t)=>q(e,{method:`POST`,body:t?JSON.stringify(t):void 0}),Kn=(e,t)=>q(e,{method:`PUT`,body:t?JSON.stringify(t):void 0}),qn=e=>q(e,{method:`DELETE`}),Jn={overview:()=>q(`/dashboard`),queues:(e=200,t=0)=>q(`/dashboard/queues?limit=${e}&offset=${t}`),queueDetail:(e,t=!0)=>q(`/dashboard/queues/${J(e)}?includeJobs=${t}`),stats:()=>q(`/stats`),storage:()=>q(`/storage`,void 0,!1),health:()=>q(`/health`,void 0,!1,[503]),jobsList:(e,t={})=>{let n=new URLSearchParams;return t.states?.length&&n.set(`states`,t.states.join(`,`)),n.set(`limit`,String(t.limit??50)),n.set(`offset`,String(t.offset??0)),q(`/queues/${J(e)}/jobs/list?${n.toString()}`)},job:e=>q(`/jobs/${C(e)}`),cancelJob:e=>qn(`/jobs/${C(e)}`),promoteJob:e=>Y(`/jobs/${C(e)}/promote`),retryJob:e=>Y(`/jobs/${C(e)}/move-to-wait`),pause:e=>Y(`/queues/${J(e)}/pause`),resume:e=>Y(`/queues/${J(e)}/resume`),drain:e=>Y(`/queues/${J(e)}/drain`),obliterate:e=>Y(`/queues/${J(e)}/obliterate`),clean:(e,t=0,n=1e3)=>Y(`/queues/${J(e)}/clean`,{grace:t,limit:n}),retryCompleted:e=>{throw TypeError(`Completed-job requeue is unavailable in Bunqueue v2.8.57 because flow dependency registration is not rebuilt.`)},setRateLimit:(e,t)=>Kn(`/queues/${J(e)}/rate-limit`,{limit:t}),clearRateLimit:e=>qn(`/queues/${J(e)}/rate-limit`),setConcurrency:(e,t)=>Kn(`/queues/${J(e)}/concurrency`,{concurrency:t}),clearConcurrency:e=>qn(`/queues/${J(e)}/concurrency`),dlq:(e,t=50,n=0)=>q(`/queues/${J(e)}/dlq?limit=${t}&offset=${n}`),dlqStats:e=>q(`/queues/${J(e)}/dlq/stats`),retryDlq:e=>{throw TypeError(`DLQ retry is unavailable in Bunqueue v2.8.57 because the endpoint has no atomic flow-safety precondition.`)},purgeDlq:e=>Y(`/queues/${J(e)}/dlq/purge`),crons:()=>q(`/crons`),deleteCron:e=>qn(`/crons/${T(e,`Cron name`,256)}`),workers:()=>q(`/workers`),eventsUrl:e=>_()+(e?`/events/queues/${ee(e)}`:`/events`)};function Yn(e){let t=!0;return()=>t?(t=!1,!0):!e()}function Xn(e,t=[],n={}){let r=b(e=>e.refreshMs),i=b(e=>JSON.stringify([e.baseUrl,e.token,e.agentToken])),a=n.intervalMs??r,o=(0,D.useRef)(null),s=(0,D.useRef)(0),c=[i,...t];(o.current===null||o.current.length!==c.length||o.current.some((e,t)=>!Object.is(e,c[t])))&&(o.current=c,s.current+=1);let l=s.current,[u,d]=(0,D.useState)(null),[f,p]=(0,D.useState)(null),[m,h]=(0,D.useState)(!0),g=(0,D.useRef)(e);g.current=e;let _=(0,D.useRef)(!0),v=(0,D.useRef)(0),y=(0,D.useRef)(void 0),x=(0,D.useRef)(!0),S=(0,D.useRef)(!1),C=(0,D.useRef)(0),w=(0,D.useRef)(0),T=(0,D.useRef)(()=>Promise.resolve()),ee=(0,D.useCallback)(async(e,t,n)=>{try{let r=await g.current(n);if(!_.current||e!==v.current)return;let i;try{i=JSON.stringify(r)}catch{i=String(Math.random())}i===y.current?C.current=t:(y.current=i,C.current=t,d(r)),S.current&&(S.current=!1,w.current=0,p(null))}catch(n){if(!_.current||e!==v.current)return;S.current=!0,w.current=t,p(n)}finally{_.current&&e===v.current&&x.current&&(x.current=!1,h(!1))}},[]),E=(0,D.useCallback)(()=>T.current(),[]);(0,D.useEffect)(()=>{_.current=!0;let e=++v.current,t=new AbortController;y.current=void 0,x.current=!0,d(null),h(!0),S.current&&(S.current=!1,p(null));let n=null,r=!1,i=!1,o=!1,s=[],c=()=>typeof document<`u`&&document.hidden,u=Yn(c),f=()=>{n!==null&&clearTimeout(n),n=null},m=()=>{r||(f(),n=setTimeout(()=>{n=null,b(!1)},a))},g=async()=>{i=!0;try{await ee(e,l,t.signal)}finally{if(i=!1,!r)if(o){o=!1;let e=s;s=[],b(!0).finally(()=>{for(let t of e)t()})}else m()}};function b(e){return r?Promise.resolve():i?e?(o=!0,new Promise(e=>s.push(e))):Promise.resolve():(f(),!e&&!u()?(m(),Promise.resolve()):g())}let C=()=>b(!0);T.current=C,b(!1);let w=()=>{c()||r||i||b(!0)};return typeof document<`u`&&document.addEventListener(`visibilitychange`,w),()=>{r=!0,_.current=!1,t.abort(),f();for(let e of s)e();s=[],T.current===C&&(T.current=()=>Promise.resolve()),v.current===e&&(v.current+=1),typeof document<`u`&&document.removeEventListener(`visibilitychange`,w)}},[a,l,ee]);let te=C.current===l,ne=w.current===l;return{data:te?u:null,error:ne?f:null,loading:te||ne?m:!0,refetch:E}}var Zn={connecting:{dot:`bg-zinc-500`,label:`connecting`},connected:{dot:`bg-emerald-400`,label:`connected`},degraded:{dot:`bg-amber-400`,label:`reachable, degraded`},offline:{dot:`bg-red-400`,label:`offline`}};function Qn(){let e=b(e=>e.baseUrl),{data:n,error:r,loading:i}=Xn(async()=>{let e=await Jn.health();if(typeof e.ok!=`boolean`)throw Error(`Malformed health response`);return{healthy:e.ok}},[],{intervalMs:15e3}),a=Zn[i?`connecting`:r||!n?`offline`:n.healthy?`connected`:`degraded`],o=e.replace(/^https?:\/\//,``)||`local`;return(0,H.jsxs)(`div`,{className:`mx-3 mb-4 flex items-center gap-2 rounded-lg border border-line bg-surface px-3 py-1.5`,children:[(0,H.jsx)(`span`,{className:t(`size-1.5 rounded-full`,a.dot),title:a.label}),(0,H.jsx)(`span`,{className:`truncate font-mono text-[11px] text-muted`,title:e,children:o}),(0,H.jsx)(`span`,{className:`sr-only`,children:a.label})]})}function $n(e){let t=null;try{return t=document.createElement(`textarea`),t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select(),document.execCommand(`copy`)}catch{return!1}finally{t?.remove()}}function er({value:e,className:n}){let[r,i]=(0,D.useState)(`idle`),a=(0,D.useRef)(null);(0,D.useEffect)(()=>()=>{a.current&&clearTimeout(a.current)},[]);let o=async()=>{let t=!1;if(navigator.clipboard)try{await navigator.clipboard.writeText(e),t=!0}catch{}t||=$n(e),i(t?`copied`:`failed`),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>i(`idle`),1500)},s=r===`copied`?`Copied to clipboard`:r===`failed`?`Copy failed`:`Copy to clipboard`;return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`button`,{type:`button`,onClick:o,"aria-label":s,title:s,className:t(`inline-flex size-6 shrink-0 items-center justify-center rounded-md text-faint transition-colors hover:bg-surface-2 hover:text-fg`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent`,n),children:r===`copied`?(0,H.jsx)(Bn,{className:`size-3.5 text-success`}):r===`failed`?(0,H.jsx)(zn,{className:`size-3.5 text-danger`}):(0,H.jsx)(Hn,{className:`size-3.5`})}),(0,H.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:r===`idle`?``:s})]})}var tr;function nr(){return tr===void 0&&(tr=rr()),tr}function rr(){if(typeof window>`u`)return!1;let{search:e,hash:t}=window.location;return new URLSearchParams(e).has(`demo`)||t.replace(/^#/,``)===`demo`}var ir=`https://github.com/egeominotti/bunqueue-dashboard`,ar=`https://egeominotti.github.io/bunqueue-dashboard/docs/`,or=`bunx bunqueue-dashboard`;function sr(){return(0,H.jsxs)(`div`,{className:`mx-3 mb-2 rounded-lg border border-accent/30 bg-accent/5 p-3`,children:[(0,H.jsx)(`p`,{className:`mb-2 text-[11px] font-medium leading-snug text-fg`,children:`Like it? Run it on your own bunqueue server.`}),(0,H.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5 rounded-md border border-line bg-surface-2 px-2 py-1`,children:[(0,H.jsx)(`code`,{className:`min-w-0 flex-1 truncate font-mono text-[11px] text-fg`,children:or}),(0,H.jsx)(er,{value:or})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsxs)(`a`,{href:ir,target:`_blank`,rel:`noreferrer`,className:`flex flex-1 items-center justify-center gap-1 rounded-md bg-accent px-2 py-1.5 text-[11px] font-semibold text-accent-fg transition-opacity hover:opacity-90`,children:[(0,H.jsx)(`span`,{"aria-hidden":!0,children:`★`}),` Star`]}),(0,H.jsx)(`a`,{href:ar,target:`_blank`,rel:`noreferrer`,className:`flex flex-1 items-center justify-center rounded-md border border-line px-2 py-1.5 text-[11px] font-medium text-muted transition-colors hover:bg-surface-2 hover:text-fg`,children:`Docs`})]})]})}function cr(){let e=b(e=>e.baseUrl),t=e===`/api`?`localhost:6790`:e.replace(/^https?:\/\//,``);return(0,H.jsxs)(H.Fragment,{children:[nr()&&(0,H.jsx)(sr,{}),(0,H.jsxs)(`div`,{className:`mx-3 mb-3 flex items-center gap-2.5 rounded-lg border border-line bg-surface px-3 py-2`,children:[(0,H.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-accent to-fuchsia-600 text-[11px] font-bold text-white`,children:`bq`}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`truncate text-xs font-medium text-fg`,children:`bunqueue`}),(0,H.jsx)(`div`,{className:`truncate font-mono text-[10px] text-faint`,title:e,children:t})]}),(0,H.jsx)(d,{to:`/settings`,"aria-label":`Settings`,className:`text-faint transition-colors hover:text-fg`,children:(0,H.jsx)(Dn,{className:`size-4`})})]})]})}var lr=[{section:null,items:[{to:`/`,label:`Overview`,icon:hn,end:!0}]},{section:`Queues`,items:[{to:`/queues`,label:`Queues`,icon:gn,end:!0},{to:`/jobs`,label:`Jobs`,icon:_n,end:!0},{to:`/dlq`,label:`Dead Letter Queue`,icon:vn},{to:`/cron`,label:`Cron Jobs`,icon:yn}]},{section:`Workflow`,items:[{to:`/workflows`,label:`Overview`,icon:hn,end:!0},{to:`/flows`,label:`Job Flows`,icon:Vn,end:!0},{to:`/workflows/executions`,label:`Executions`,icon:_n,end:!0},{to:`/workflows/waiting`,label:`Waiting & Signals`,icon:yn,end:!0},{to:`/workflows/compensation`,label:`Compensation`,icon:vn,end:!0},{to:`/workflows/archive`,label:`Archive`,icon:En,end:!0}]},{section:`Monitoring`,items:[{to:`/metrics`,label:`Metrics`,icon:bn},{to:`/workers`,label:`Workers`,icon:xn},{to:`/logs`,label:`Logs`,icon:Cn},{to:`/alerts`,label:`Alerts`,icon:Sn}]},{section:`Control`,items:[{to:`/server`,label:`Server`,icon:xn},{to:`/add-job`,label:`Add Job`,icon:_n},{to:`/jobs/bulk-add`,label:`Bulk Add`,icon:_n},{to:`/job`,label:`Job Inspector`,icon:Ln},{to:`/queue-control`,label:`Queue Control`,icon:gn},{to:`/dlq-control`,label:`DLQ Control`,icon:vn},{to:`/webhooks`,label:`Webhooks`,icon:Rn},{to:`/diagnostics`,label:`Diagnostics`,icon:bn},{to:`/benchmark`,label:`Benchmark`,icon:Rn}]},{section:`Management`,items:[{to:`/database`,label:`Database`,icon:En},{to:`/mcp`,label:`MCP`,icon:Rn},{to:`/usage`,label:`Usage`,icon:wn},{to:`/s3`,label:`S3 Backup`,icon:Tn},{to:`/settings`,label:`Settings`,icon:Dn}]}];function ur(){let e=W(e=>e.theme),t=W(e=>e.toggle),n=e===`dark`;return(0,H.jsxs)(`button`,{type:`button`,onClick:t,className:`mx-3 mb-3 flex items-center gap-3 rounded-lg px-3 py-2 text-sm text-muted transition-colors hover:bg-surface-2 hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,children:[n?(0,H.jsx)(On,{className:`size-4`}):(0,H.jsx)(kn,{className:`size-4`}),n?`Light Mode`:`Dark Mode`]})}function dr({open:e=!1,blocked:n=!1,onClose:r}){return(0,H.jsxs)(H.Fragment,{children:[e&&(0,H.jsx)(`button`,{type:`button`,"aria-label":`Close navigation`,tabIndex:-1,onClick:r,className:`fixed inset-0 z-40 bg-black/50 lg:hidden`}),(0,H.jsxs)(`div`,{id:`app-nav`,role:e?`dialog`:`complementary`,"aria-modal":e||void 0,"aria-label":e?`Navigation menu`:void 0,inert:n?!0:void 0,"aria-hidden":n||void 0,className:t(`flex w-60 shrink-0 flex-col border-r border-line bg-sidebar`,`fixed inset-y-0 left-0 z-50 transition-[transform,visibility] lg:static lg:z-auto lg:translate-x-0`,e?`translate-x-0`:`-translate-x-full lg:translate-x-0 invisible lg:visible`),children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 px-5 py-5`,children:[(0,H.jsx)(`span`,{className:`text-lg font-bold tracking-tight text-fg`,children:`bunqueue`}),(0,H.jsx)(`span`,{className:`rounded-md bg-accent/15 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-accent`,children:`dash`}),(0,H.jsx)(`span`,{title:`Beta — under active development`,className:`rounded-md bg-amber-500/15 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-warning`,children:`beta`})]}),(0,H.jsx)(`nav`,{className:`flex-1 overscroll-contain overflow-y-auto px-3 pb-4`,children:lr.map(e=>(0,H.jsxs)(`div`,{className:`mb-4`,children:[e.section&&(0,H.jsx)(`div`,{className:`px-2 pb-2 pt-1 text-[10px] font-semibold uppercase tracking-wider text-faint`,children:e.section}),(0,H.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:e.items.map(({to:e,label:n,icon:r,end:i})=>(0,H.jsx)(a,{to:e,end:i,className:({isActive:e})=>t(`group relative flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,e?`bg-surface-2 text-fg`:`text-muted hover:bg-surface-2/60 hover:text-fg`),children:({isActive:e})=>(0,H.jsxs)(H.Fragment,{children:[e&&(0,H.jsx)(`span`,{className:`absolute inset-y-1.5 left-0 w-0.5 rounded-full bg-accent`}),(0,H.jsx)(r,{className:`size-[18px] shrink-0`}),(0,H.jsx)(`span`,{className:`truncate`,children:n})]})},e))})]},e.section??`root`))}),(0,H.jsx)(Qn,{}),(0,H.jsx)(ur,{}),(0,H.jsx)(cr,{})]})]})}var fr=`https://egeominotti.github.io/bunqueue-dashboard/docs/`,pr=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`;function mr(e){let t=e.parentElement;if(!t)return()=>{};let n=Array.from(t.children).filter(t=>t!==e),r=n.map(e=>({node:e,inert:e.inert,ariaHidden:e.getAttribute(`aria-hidden`)}));for(let e of n)e.inert=!0,e.setAttribute(`aria-hidden`,`true`);return()=>{for(let{node:e,inert:t,ariaHidden:n}of r)e.inert=t,n==null?e.removeAttribute(`aria-hidden`):e.setAttribute(`aria-hidden`,n)}}function hr(){let[e,t]=(0,D.useState)(``),[n,r]=(0,D.useState)(0),i=V(e=>e.active===`command-palette`),a=V(e=>e.release),o=m(),s=W(e=>e.toggle),c=(0,D.useRef)(null),l=(0,D.useRef)(null),u=(0,D.useRef)(null),d=(0,D.useRef)(null),f=(0,D.useCallback)(()=>a(`command-palette`),[a]),p=(0,D.useMemo)(()=>{let e=lr.flatMap(e=>e.items.map(t=>({id:`nav:${t.to}`,label:t.label,hint:e.section??`Home`,run:()=>o(t.to)}))),t=[{id:`act:theme`,label:`Toggle theme (dark / light)`,hint:`Action`,run:s},{id:`act:docs`,label:`Open documentation`,hint:`Action`,run:()=>window.open(fr,`_blank`,`noopener`)}];return[...e,...t]},[o,s]),h=(0,D.useMemo)(()=>{let t=e.trim().toLowerCase();return t?p.filter(e=>`${e.label} ${e.hint}`.toLowerCase().includes(t)):p},[p,e]);(0,D.useEffect)(()=>{let e=e=>{if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`){e.preventDefault();let t=V.getState();t.active===`command-palette`?t.release(`command-palette`):t.request(`command-palette`)}},t=()=>V.getState().request(`command-palette`);return window.addEventListener(`keydown`,e),window.addEventListener(`command-palette:open`,t),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`command-palette:open`,t)}},[]),(0,D.useEffect)(()=>{if(!i)return;let e=document.activeElement;t(``),r(0);let n=u.current&&!document.getElementById(`app-shell`)?mr(u.current):()=>{},a=requestAnimationFrame(()=>c.current?.focus()),o=e=>{if(e.key===`Escape`){e.preventDefault(),f();return}if(e.key!==`Tab`)return;let t=d.current;if(!t)return;let n=Array.from(t.querySelectorAll(pr));if(n.length===0){e.preventDefault(),t.focus();return}let r=n[0],i=n[n.length-1],a=document.activeElement;e.shiftKey&&(a===r||!t.contains(a))?(e.preventDefault(),i.focus()):!e.shiftKey&&(a===i||!t.contains(a))&&(e.preventDefault(),r.focus())};return document.addEventListener(`keydown`,o),()=>{cancelAnimationFrame(a),document.removeEventListener(`keydown`,o),n(),an(`command-palette`)&&e?.isConnected&&e.focus()}},[i,f]),(0,D.useEffect)(()=>{l.current?.querySelector(`[data-idx="${n}"]`)?.scrollIntoView({block:`nearest`})},[n]);let g=(0,D.useCallback)(e=>{e&&(e.run(),f())},[f]);return i?(0,H.jsxs)(`div`,{ref:u,className:`fixed inset-0 z-50 flex items-start justify-center p-4 pt-[12vh]`,children:[(0,H.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-label":`Close command palette`,onClick:f,className:`fixed inset-0 bg-black/50`}),(0,H.jsxs)(`div`,{ref:d,tabIndex:-1,role:`dialog`,"aria-modal":`true`,"aria-label":`Command palette`,className:`relative z-10 w-full max-w-lg overflow-hidden rounded-xl border border-line-strong bg-surface shadow-2xl`,children:[(0,H.jsx)(`input`,{ref:c,role:`combobox`,value:e,onChange:e=>{t(e.target.value),r(0)},onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),f()):e.key===`ArrowDown`?(e.preventDefault(),r(e=>Math.min(e+1,Math.max(0,h.length-1)))):e.key===`ArrowUp`?(e.preventDefault(),r(e=>Math.max(e-1,0))):e.key===`Enter`&&(e.preventDefault(),g(h[n]))},placeholder:`Search pages and actions…`,"aria-label":`Search pages and actions`,"aria-autocomplete":`list`,"aria-expanded":`true`,"aria-controls":`command-palette-results`,"aria-activedescendant":h[n]?`command-palette-option-${n}`:void 0,autoComplete:`off`,name:`command-palette-search`,className:`w-full border-b border-line bg-transparent px-4 py-3 text-sm text-fg outline-none placeholder:text-faint focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-accent/50`}),(0,H.jsxs)(`div`,{ref:l,id:`command-palette-results`,role:`listbox`,className:`max-h-80 overflow-y-auto overscroll-contain py-2`,"aria-label":`Results`,children:[h.length===0&&(0,H.jsx)(`div`,{role:`presentation`,className:`px-4 py-6 text-center text-sm text-faint`,children:`No matches`}),h.map((e,t)=>(0,H.jsx)(`div`,{role:`presentation`,children:(0,H.jsxs)(`button`,{type:`button`,id:`command-palette-option-${t}`,role:`option`,"aria-selected":t===n,tabIndex:-1,"data-idx":t,onMouseEnter:()=>r(t),onClick:()=>g(e),className:`flex w-full items-center justify-between gap-3 px-4 py-2 text-left text-sm transition-colors ${t===n?`bg-accent/15 text-fg`:`text-muted`}`,children:[(0,H.jsx)(`span`,{className:`truncate`,children:e.label}),(0,H.jsx)(`span`,{className:`shrink-0 text-xs text-faint`,children:e.hint})]})},e.id))]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between border-t border-line px-4 py-2 text-xs text-faint`,children:[(0,H.jsx)(`span`,{children:`↑↓ navigate · ↵ open · esc close`}),(0,H.jsx)(`span`,{className:`font-mono`,children:`⌘K`})]})]})]}):null}var gr=`bq-dash-copilot`,_r=1,vr=new Set([`anthropic`,`openai`,`google`,`zai`,`openrouter`,`custom`]),X={provider:`anthropic`,baseURL:``,model:`claude-opus-4-8`,apiKey:``};function yr(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function br(e,t){return typeof e==`string`?e:t}function xr(e){return typeof e==`string`&&vr.has(e)?e:X.provider}function Sr(e,t=``){let n=yr(e)?e:{},r=xr(n.provider);return{provider:r,baseURL:r===`custom`?br(n.baseURL,X.baseURL):X.baseURL,model:br(n.model,X.model),apiKey:t}}function Cr(e){let t=Sr((yr(e)?e:{}).config);return{config:{provider:t.provider,baseURL:t.baseURL,model:t.model}}}var wr=0,Tr=()=>typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${(wr++).toString(36)}-${Math.random().toString(36).slice(2,8)}`,Z=new Map,Er=(e,t,n)=>e.map(e=>e.id===t?n(e):e);function Dr(e){return Cr(e)}function Or(){try{return globalThis.localStorage??null}catch{return null}}function kr(e){try{let t=JSON.parse(e),n=yr(t)?t:{},r=Cr(`state`in n?n.state:n),i=typeof n.version==`number`?n.version:void 0;return{hydration:JSON.stringify({state:r,...i===void 0?{}:{version:i}}),canonical:JSON.stringify({state:r,version:_r})}}catch{return null}}var Ar={getItem(e){let t=Or();if(!t)return null;let n;try{n=t.getItem(e)}catch{return null}if(n===null||e!==`bq-dash-copilot`)return n;let r=kr(n);if(!r){try{t.removeItem(e)}catch{}return null}if(n!==r.canonical)try{t.setItem(e,r.canonical)}catch{try{t.removeItem(e)}catch{}}return r.hydration},setItem(e,t){try{Or()?.setItem(e,t)}catch{}},removeItem(e){try{Or()?.removeItem(e)}catch{}}},jr=v()(g(e=>({open:!1,config:{...X},messages:[],pending:[],busy:!1,setOpen:t=>e({open:t}),toggle:()=>e(e=>({open:!e.open})),setConfig:t=>e(e=>{let n={...e.config,...t};return{config:Sr(n,br(n.apiKey,``))}}),clear:()=>{for(let e of Z.values())e(!1);Z.clear(),e({messages:[],pending:[]})},cancelPending:()=>{for(let e of Z.values())e(!1);Z.clear(),e({pending:[]})},setBusy:t=>e({busy:t}),addUser:t=>e(e=>({messages:[...e.messages,{id:Tr(),role:`user`,content:t}]})),startAssistant:()=>{let t=Tr();return e(e=>({messages:[...e.messages,{id:t,role:`assistant`,content:``,tools:[]}]})),t},appendAssistant:(t,n)=>e(e=>({messages:Er(e.messages,t,e=>({...e,content:e.content+n}))})),finishAssistant:(t,n)=>e(e=>({messages:Er(e.messages,t,e=>({...e,done:!0,error:!!n?.error,content:n?.error?e.content?`${e.content}\n\n${n.error}`:n.error:e.content}))})),addTool:(t,n)=>e(e=>({messages:Er(e.messages,t,e=>({...e,tools:[...e.tools??[],n]}))})),updateTool:(t,n,r)=>e(e=>({messages:Er(e.messages,t,e=>({...e,tools:(e.tools??[]).map(e=>e.id===n?{...e,...r}:e)}))})),requestConfirm:t=>new Promise(n=>{let r=Tr();Z.set(r,n),e(e=>({pending:[...e.pending,{...t,id:r}]}))}),resolveConfirm:(t,n)=>{let r=Z.get(t);r&&(Z.delete(t),r(n)),e(e=>({pending:e.pending.filter(e=>e.id!==t)}))}}),{name:gr,version:_r,storage:S(()=>Ar),partialize:e=>Dr(e),migrate:Cr,merge:(e,t)=>{let n=Cr(e);return{...t,config:{...n.config,apiKey:``}}}})),Mr=(0,D.lazy)(()=>u(()=>import(`./CopilotPanel-COLw-atS.js`).then(e=>({default:e.CopilotPanel})),__vite__mapDeps([0,1,2,3,4]))),Nr=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`;function Pr(e){let t=[],n=e;for(;n?.parentElement&&n.parentElement!==document.documentElement;){let e=n.parentElement;for(let r of Array.from(e.children))r===n||!(r instanceof window.HTMLElement)||(t.push({node:r,inert:r.inert,ariaHidden:r.getAttribute(`aria-hidden`)}),r.inert=!0,r.setAttribute(`aria-hidden`,`true`));n=e}return()=>{for(let{node:e,inert:n,ariaHidden:r}of t)e.inert=n,r==null?e.removeAttribute(`aria-hidden`):e.setAttribute(`aria-hidden`,r)}}function Fr({className:e}){return(0,H.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`,children:[(0,H.jsx)(`path`,{d:`M12 3l1.9 4.6L18.5 9.5 13.9 11.4 12 16l-1.9-4.6L5.5 9.5l4.6-1.9L12 3z`,fill:`currentColor`}),(0,H.jsx)(`path`,{d:`M19 14l.8 2 2 .8-2 .8-.8 2-.8-2-2-.8 2-.8.8-2z`,fill:`currentColor`,opacity:`0.7`})]})}var Ir=class extends D.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?(0,H.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":`Copilot failed to load`,tabIndex:-1,className:`fixed inset-y-0 right-0 z-[60] flex w-full max-w-md flex-col items-center justify-center gap-3 border-l border-line bg-surface px-6 text-center`,children:[(0,H.jsx)(`p`,{className:`text-sm text-fg`,children:`Copilot failed to load.`}),(0,H.jsx)(`p`,{className:`text-xs text-muted`,children:`The panel is loaded on demand; the request failed. If the dashboard was just redeployed, reload the page. The rest of the dashboard is unaffected.`}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>{this.setState({failed:!1}),this.props.onClose()},className:`rounded-lg border border-line px-3 py-1.5 text-sm text-muted hover:bg-surface-2 hover:text-fg`,children:`Close`})]}):this.props.children}};function Lr(){let e=jr(e=>e.open),t=jr(e=>e.setOpen),n=V(e=>e.active),r=e&&n===`copilot`,i=(0,D.useRef)(null),a=(0,D.useRef)(null),o=(0,D.useRef)(null);return(0,D.useEffect)(()=>{let r=V.getState();if(e){if(n===`copilot`)return;r.request(`copilot`)||t(!1);return}r.release(`copilot`)},[e,n,t]),(0,D.useEffect)(()=>()=>{V.getState().release(`copilot`)},[]),(0,D.useEffect)(()=>{if(!r||!i.current)return;let e=i.current,n=document.getElementById(`app-shell`)?()=>{}:Pr(e),s=requestAnimationFrame(()=>{let t=e.querySelector(Nr),n=e.querySelector(`[role="dialog"]`);(t??n??e).focus()}),c=n=>{if(n.key===`Escape`){n.preventDefault(),t(!1);return}if(n.key!==`Tab`)return;let r=Array.from(e.querySelectorAll(Nr));if(r.length===0){n.preventDefault(),(e.querySelector(`[role="dialog"]`)??e).focus();return}let i=r[0],a=r[r.length-1],o=document.activeElement;n.shiftKey&&(o===i||!e.contains(o))?(n.preventDefault(),a.focus()):!n.shiftKey&&(o===a||!e.contains(o))&&(n.preventDefault(),i.focus())};return document.addEventListener(`keydown`,c),()=>{cancelAnimationFrame(s),document.removeEventListener(`keydown`,c),n();let e=a.current;requestAnimationFrame(()=>{an(`copilot`)&&(e?.isConnected?e.focus():o.current?.focus())})}},[r,t]),(0,H.jsxs)(H.Fragment,{children:[!r&&(0,H.jsxs)(`button`,{ref:o,type:`button`,onClick:e=>{a.current=e.currentTarget,V.getState().request(`copilot`)&&t(!0)},className:`fixed bottom-5 right-5 z-40 flex items-center gap-2 rounded-full border border-line bg-surface px-4 py-2.5 text-sm font-medium text-fg shadow-lg transition-colors hover:border-accent/50 hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,"aria-label":`Open Copilot`,children:[(0,H.jsx)(Fr,{className:`size-4 text-accent`}),`Copilot`,(0,H.jsx)(`span`,{className:`rounded bg-accent/15 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-accent`,children:`beta`})]}),r&&(0,H.jsx)(`div`,{ref:i,tabIndex:-1,className:`contents`,children:(0,H.jsx)(Ir,{onClose:()=>t(!1),children:(0,H.jsx)(D.Suspense,{fallback:(0,H.jsx)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":`Loading Copilot`,tabIndex:-1,className:`fixed inset-y-0 right-0 z-[60] flex w-full max-w-md items-center justify-center border-l border-line bg-surface text-sm text-muted`,children:`Loading Copilot…`}),children:(0,H.jsx)(Mr,{})})})})]})}var Rr={default:`border border-line bg-surface-2 text-fg hover:bg-surface-2/70 hover:border-line-strong`,ghost:`text-muted hover:text-fg hover:bg-surface-2`,accent:`bg-accent text-accent-fg hover:opacity-90 border border-transparent`,danger:`border border-red-500/30 text-danger hover:bg-red-500/10 hover:border-red-500/50`,warning:`border border-amber-500/30 text-warning hover:bg-amber-500/10 hover:border-amber-500/50`,success:`bg-emerald-500 text-white hover:bg-emerald-500/90 border border-transparent`},zr={sm:`h-8 px-3 text-xs gap-1.5`,md:`h-9 px-4 text-sm gap-2`};function Br({children:e,variant:n=`default`,size:r=`md`,className:i,...a}){return(0,H.jsx)(`button`,{type:`button`,className:t(`inline-flex items-center justify-center rounded-lg font-medium transition-colors`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent`,`disabled:cursor-not-allowed disabled:opacity-50`,Rr[n],zr[r],i),...a,children:e})}function Vr({children:e,className:n,variant:r=`ghost`,...i}){return(0,H.jsx)(`button`,{type:`button`,className:t(`inline-flex size-8 items-center justify-center rounded-lg transition-colors`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent`,`disabled:cursor-not-allowed disabled:opacity-50`,Rr[r],n),...i,children:e})}function Hr({children:e,className:n,padded:r=!0}){return(0,H.jsx)(`div`,{className:t(`rounded-xl border border-line bg-surface`,r&&`p-5`,n),children:e})}function Ur({title:e,action:t,icon:n,headingLevel:r=2}){return(0,H.jsxs)(`div`,{className:`mb-4 flex items-center justify-between gap-3`,children:[(0,H.jsxs)(`h${r}`,{className:`flex items-center gap-2 text-base font-semibold text-fg`,children:[n,e]}),t]})}function Wr({className:e,decorative:n=!1}){let r=t(`inline-block size-4 animate-spin rounded-full border-2 border-current border-t-transparent`,e);return n?(0,H.jsx)(`span`,{className:r,"aria-hidden":`true`}):(0,H.jsx)(`span`,{className:r,role:`status`,"aria-label":`Loading`})}function Gr({label:e=`Loading…`}){return(0,H.jsxs)(`div`,{role:`status`,"aria-live":`polite`,"aria-atomic":`true`,className:`flex items-center justify-center gap-3 py-16 text-sm text-muted`,children:[(0,H.jsx)(Wr,{decorative:!0}),e]})}function Kr({icon:e,title:t,hint:n,action:r}){return(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 rounded-xl border border-dashed border-line py-14 text-center`,children:[e&&(0,H.jsx)(`div`,{className:`text-faint [&>svg]:size-8`,children:e}),(0,H.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:t}),n&&(0,H.jsx)(`div`,{className:`max-w-sm text-xs text-faint`,children:n}),r&&(0,H.jsx)(`div`,{className:`mt-2`,children:r})]})}function qr({onRetry:e,message:t=`Could not refresh bunqueue data — the view may be unavailable or stale.`}){return(0,H.jsxs)(`div`,{role:`status`,"aria-live":`polite`,"aria-atomic":`true`,className:`mb-4 flex flex-wrap items-center gap-3 rounded-lg border border-amber-500/25 bg-amber-500/[0.06] px-4 py-2.5 text-sm`,children:[(0,H.jsx)(`span`,{className:`size-2 shrink-0 rounded-full bg-amber-400`,"aria-hidden":`true`}),(0,H.jsx)(`span`,{className:`text-amber-300/90 light:text-amber-700`,children:t}),e&&(0,H.jsx)(`button`,{type:`button`,onClick:e,className:`ml-auto shrink-0 rounded-md border border-amber-500/30 px-2.5 py-1 text-xs font-medium text-amber-200 light:text-amber-700 hover:border-amber-400/50 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent`,children:`Retry`})]})}function Jr({error:e,onRetry:t}){return(0,H.jsxs)(`div`,{role:`alert`,"aria-atomic":`true`,className:`flex flex-col items-center justify-center gap-3 rounded-xl border border-red-500/20 bg-red-500/5 py-14 text-center`,children:[(0,H.jsx)(`div`,{className:`text-sm font-medium text-danger`,children:`Something went wrong`}),(0,H.jsx)(`div`,{className:`max-w-md text-xs text-faint`,children:e.message}),t&&(0,H.jsx)(`button`,{type:`button`,onClick:t,className:`mt-1 rounded-lg border border-line bg-surface-2 px-3 py-1.5 text-xs font-medium text-fg hover:border-line-strong focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent`,children:`Retry`})]})}var Yr=class extends D.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`ErrorBoundary caught an error`,e,t.componentStack)}componentDidUpdate(e){this.state.error&&e.resetKey!==this.props.resetKey&&this.setState({error:null})}render(){let{error:e}=this.state;return e?(0,H.jsx)(`div`,{className:`flex min-h-screen items-center justify-center p-6`,children:(0,H.jsxs)(Hr,{className:`w-full max-w-lg`,children:[(0,H.jsx)(Jr,{error:e}),(0,H.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,H.jsx)(Br,{onClick:()=>window.location.reload(),children:`Reload`})})]})}):this.props.children}},Xr={success:{bar:`bg-emerald-500`,title:`text-success`},error:{bar:`bg-red-500`,title:`text-danger`},info:{bar:`bg-accent`,title:`text-accent`}};function Zr({toast:e,dismiss:n}){(0,D.useEffect)(()=>{let t=window.setTimeout(()=>n(e.id),e.ttlMs);return()=>window.clearTimeout(t)},[e.id,e.ttlMs,n]);let r=Xr[e.level];return(0,H.jsxs)(`div`,{className:`pointer-events-auto flex w-80 max-w-[calc(100vw-2rem)] overflow-hidden rounded-lg border border-line bg-surface shadow-lg`,children:[(0,H.jsx)(`span`,{className:t(`w-1 shrink-0`,r.bar),"aria-hidden":`true`}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3 px-3 py-2.5`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:t(`text-sm font-medium`,r.title),children:e.title}),e.detail&&(0,H.jsx)(`div`,{className:`mt-0.5 break-words text-xs text-muted`,children:e.detail})]}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>n(e.id),"aria-label":`Dismiss notification`,className:`-mr-1 shrink-0 rounded p-0.5 text-faint hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,children:(0,H.jsx)(zn,{className:`size-4`})})]})]})}function Qr(){let e=ke(e=>e.toasts),t=ke(e=>e.dismiss);return e.length===0?null:(0,H.jsx)(`section`,{className:`pointer-events-none fixed bottom-4 right-4 z-[60] flex flex-col gap-2`,"aria-label":`Notifications`,"aria-live":`polite`,children:e.map(e=>(0,H.jsx)(Zr,{toast:e,dismiss:t},e.id))})}function $r(e,t){(0,D.useLayoutEffect)(()=>{let t=e.current;t&&(t.scrollTop=0,t.scrollLeft=0)},[t,e])}var ei={"/":`Overview`,"/queues":`Queues`,"/jobs":`Jobs`,"/dlq":`Dead Letter Queue`,"/cron":`Cron Jobs`,"/flows":`Flows`,"/workflows":`Workflow · Overview`,"/workflows/executions":`Workflow · Executions`,"/workflows/waiting":`Workflow · Waiting & Signals`,"/workflows/compensation":`Workflow · Compensation`,"/workflows/archive":`Workflow · Archive`,"/metrics":`Metrics`,"/workers":`Workers`,"/logs":`Logs`,"/server":`Server`,"/add-job":`Add Job`,"/jobs/bulk-add":`Bulk Add Jobs`,"/job":`Job Inspector`,"/queue-control":`Queue Control`,"/dlq-control":`DLQ Control`,"/webhooks":`Webhooks`,"/diagnostics":`Diagnostics`,"/alerts":`Alerts`,"/benchmark":`Benchmark`,"/database":`Database`,"/mcp":`MCP`,"/usage":`Usage`,"/s3":`S3 Backup`,"/settings":`Settings`,"/overview-classic":`Overview (classic)`,"/queues-classic":`Queues (classic)`,"/jobs-classic":`Jobs (classic)`,"/dlq-classic":`DLQ (classic)`,"/cron-classic":`Cron Jobs (classic)`,"/metrics-classic":`Metrics (classic)`,"/workers-classic":`Workers (classic)`,"/logs-classic":`Logs (classic)`,"/usage-classic":`Usage (classic)`,"/s3-classic":`S3 Backup (classic)`};function ti(e){let t=e.length>1?e.replace(/\/+$/,``):e;if(ei[t])return ei[t];let n=t.startsWith(`/queues-classic/`);if(n||t.startsWith(`/queues/`)){let e=t.slice(n?16:8);try{e=decodeURIComponent(e)}catch{}return`${e} · Queue${n?` (classic)`:``}`}return`Page not found`}function ni(e){(0,D.useEffect)(()=>{document.title=`${e} · bunqueue`},[e])}var ri=nr();function ii({onMenu:e,navOpen:t=!1}){let{pathname:n}=o(),r=ti(n);return ni(r),(0,H.jsxs)(`header`,{className:`sticky top-0 z-10 flex h-14 items-center justify-between gap-3 border-b border-line bg-bg/80 px-4 backdrop-blur sm:px-6 lg:px-8`,children:[(0,H.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,H.jsx)(`button`,{type:`button`,"aria-label":`Open navigation`,"aria-expanded":t,"aria-controls":`app-nav`,onClick:t=>e?.(t.currentTarget),className:`-ml-1 flex size-9 shrink-0 items-center justify-center rounded-lg text-muted hover:bg-surface-2 hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 lg:hidden`,children:(0,H.jsx)(Un,{className:`size-5`})}),(0,H.jsxs)(`div`,{className:`truncate text-sm text-muted`,children:[(0,H.jsx)(`span`,{className:`text-faint`,children:r}),(0,H.jsx)(`span`,{className:`mx-2 hidden text-faint sm:inline`,children:`·`}),(0,H.jsx)(`span`,{className:`hidden text-faint sm:inline`,children:`bunqueue`})]})]}),(0,H.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[ri&&(0,H.jsxs)(`span`,{title:`Showing canned sample data. No real bunqueue server is connected.`,className:`hidden items-center gap-1.5 rounded-full border border-accent/40 bg-accent/10 px-2.5 py-1 text-xs font-medium text-accent sm:inline-flex`,children:[(0,H.jsx)(`span`,{className:`size-1.5 rounded-full bg-accent`}),`Live demo`]}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>window.dispatchEvent(new Event(`command-palette:open`)),title:`Command palette`,"aria-label":`Open command palette`,className:`flex size-9 shrink-0 items-center justify-center rounded-lg text-muted hover:bg-surface-2 hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 sm:hidden`,children:(0,H.jsx)(In,{className:`size-5`})}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>window.dispatchEvent(new Event(`command-palette:open`)),title:`Command palette (⌘K)`,"aria-label":`Open command palette`,className:`hidden items-center gap-2 rounded-lg border border-line px-2.5 py-1.5 text-xs text-muted hover:bg-surface-2 hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 sm:flex`,children:[(0,H.jsx)(`span`,{children:`Search`}),(0,H.jsx)(`kbd`,{className:`rounded border border-line bg-surface-2 px-1 font-mono text-[10px]`,children:`⌘K`})]}),(0,H.jsx)(d,{to:`/settings`,title:`Settings`,"aria-label":`Open settings`,className:`flex size-8 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-accent to-fuchsia-600 text-xs font-bold text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,children:`bq`})]})]})}function ai(){let[e,n]=(0,D.useState)(!1),{pathname:r,key:i}=o(),a=(0,D.useRef)(null),s=(0,D.useRef)(null),c=V(e=>e.active),u=V(e=>e.request),d=V(e=>e.release),f=e&&c===`mobile-navigation`,p=(0,D.useCallback)(()=>{n(!1),d(`mobile-navigation`)},[d]);return $r(a,i),(0,D.useEffect)(()=>p(),[r,p]),(0,D.useEffect)(()=>{let e=window.matchMedia(`(min-width: 1024px)`),t=()=>e.matches&&p();return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[p]),(0,D.useEffect)(()=>{if(!f)return;let e=e=>{e.key===`Escape`&&p()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[f,p]),(0,D.useEffect)(()=>{if(!f)return;let e=document.getElementById(`app-nav`),t=()=>e?Array.from(e.querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)):[],n=()=>t()[0]?.focus(),r=setTimeout(n,0),i=setTimeout(()=>{e?.contains(document.activeElement)||n()},200),a=n=>{if(n.key!==`Tab`)return;let r=t();if(!r.length)return;let i=r[0],a=r[r.length-1];e?.contains(document.activeElement)?n.shiftKey&&document.activeElement===i?(n.preventDefault(),a.focus()):!n.shiftKey&&document.activeElement===a&&(n.preventDefault(),i.focus()):(n.preventDefault(),(n.shiftKey?a:i).focus())};return window.addEventListener(`keydown`,a),()=>{clearTimeout(r),clearTimeout(i),window.removeEventListener(`keydown`,a);let e=s.current;an(`mobile-navigation`)&&e?.isConnected&&e.focus()}},[f]),(0,D.useEffect)(()=>{e&&c!==`mobile-navigation`&&n(!1)},[e,c]),(0,D.useEffect)(()=>{let e=()=>p();return window.addEventListener(`auth:gate-opened`,e),window.addEventListener(`command-palette:open`,e),()=>{window.removeEventListener(`auth:gate-opened`,e),window.removeEventListener(`command-palette:open`,e)}},[p]),(0,D.useEffect)(()=>()=>{V.getState().release(`mobile-navigation`)},[]),(0,H.jsx)(Yr,{children:(0,H.jsxs)(`div`,{id:`app-shell`,className:`flex h-screen overflow-hidden bg-bg text-fg`,children:[(0,H.jsx)(`a`,{href:`#main`,inert:c!==null||void 0,tabIndex:c===null?void 0:-1,className:`sr-only rounded-md bg-accent px-3 py-2 text-sm font-medium text-accent-fg shadow-lg focus:not-sr-only focus:absolute focus:left-4 focus:top-3 focus:z-50`,children:`Skip to content`}),(0,H.jsx)(dr,{open:f,blocked:c!==null&&c!==`mobile-navigation`,onClose:p}),(0,H.jsxs)(`div`,{id:`app-content`,className:`flex min-w-0 flex-1 flex-col`,inert:c!==null||void 0,"aria-hidden":c!==null||void 0,children:[(0,H.jsx)(ii,{navOpen:f,onMenu:e=>{u(`mobile-navigation`)&&(s.current=e,n(!0))}}),(0,H.jsx)(`main`,{ref:a,id:`main`,tabIndex:-1,className:t(`flex-1 px-4 pt-5 pb-24 focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-accent sm:px-6 lg:px-8 lg:pt-6`,f?`overflow-hidden`:`overflow-y-auto`),children:(0,H.jsx)(D.Suspense,{fallback:(0,H.jsx)(`div`,{className:`p-2 text-sm text-muted`,children:`Loading…`}),children:(0,H.jsx)(Yr,{resetKey:i,children:(0,H.jsx)(l,{})})})})]}),(0,H.jsx)(hr,{}),(0,H.jsx)(cn,{}),(0,H.jsx)(`div`,{id:`copilot-layer`,inert:c!==null&&c!==`copilot`||void 0,"aria-hidden":c!==null&&c!==`copilot`||void 0,children:(0,H.jsx)(Lr,{})}),(0,H.jsx)(Qr,{}),(0,H.jsx)(nn,{})]})})}var oi={completed:`text-success bg-emerald-500/10`,active:`text-blue-400 light:text-blue-700 bg-blue-500/10`,failed:`text-danger bg-red-500/10`,waiting:`text-zinc-400 light:text-zinc-600 bg-zinc-500/10`,prioritized:`text-violet-400 light:text-violet-700 bg-violet-500/10`,delayed:`text-warning bg-amber-500/10`,paused:`text-orange-400 light:text-orange-700 bg-orange-500/10`,"waiting-children":`text-cyan-400 light:text-cyan-700 bg-cyan-500/10`,stalled:`text-orange-400 light:text-orange-700 bg-orange-500/10`,running:`text-blue-400 light:text-blue-700 bg-blue-500/10`,compensating:`text-violet-400 light:text-violet-700 bg-violet-500/10`,"compensation-stuck":`text-danger bg-red-500/10`,compensated:`text-success bg-emerald-500/10`,"compensation-failed":`text-danger bg-red-500/10`,"compensation-skipped":`text-warning bg-amber-500/10`,enqueued:`text-zinc-400 light:text-zinc-600 bg-zinc-500/10`,started:`text-blue-400 light:text-blue-700 bg-blue-500/10`,finished:`text-success bg-emerald-500/10`,retry:`text-warning bg-amber-500/10`,cancelled:`text-zinc-400 light:text-zinc-600 bg-zinc-500/10`,default:`text-zinc-400 light:text-zinc-600 bg-zinc-500/10`};function si({status:e}){let n=(e||``).toLowerCase();return(0,H.jsxs)(`span`,{className:t(`inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-xs font-medium capitalize`,oi[n]??oi.default),children:[(0,H.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`}),e||`unknown`]})}function ci({label:e,tone:n=`green`}){return(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs font-medium text-muted`,children:[(0,H.jsx)(`span`,{className:t(`size-1.5 rounded-full`,n===`green`?`bg-emerald-400`:n===`amber`?`bg-amber-400`:n===`red`?`bg-red-400`:`bg-zinc-400`)}),e]})}function li({title:e,description:t,live:n,actions:r,back:i}){return(0,H.jsxs)(`div`,{className:`mb-6 flex flex-wrap items-start justify-between gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-start gap-3`,children:[i,(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(`h1`,{className:`text-2xl font-bold tracking-tight text-fg`,children:e}),n&&(0,H.jsx)(ci,{label:`Live`,tone:`green`})]}),t&&(0,H.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:t})]})]}),r&&(0,H.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:r})]})}var ui={default:`text-fg`,green:`text-success`,red:`text-danger`,blue:`text-blue-400 light:text-blue-700`,amber:`text-warning`,accent:`text-accent`};function Q({label:e,value:n,tone:r=`default`,hint:i,compact:a}){return(0,H.jsxs)(`div`,{className:t(`rounded-xl border border-line bg-surface`,a?`px-4 py-3`:`px-5 py-4`),children:[(0,H.jsx)(`div`,{className:`text-[11px] font-medium uppercase tracking-wider text-faint`,children:e}),(0,H.jsx)(`div`,{className:t(`mt-2 font-semibold tnum`,a?`text-xl`:`text-3xl`,ui[r]),children:n}),i!=null&&(0,H.jsx)(`div`,{className:`mt-1 text-xs text-faint`,children:i})]})}var di=new Intl.NumberFormat(`de-DE`),fi=new Intl.DateTimeFormat(`it-IT`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`});function $(e){return e==null||!Number.isFinite(e)?`0`:di.format(e)}function pi(e,t=2){return e==null||!Number.isFinite(e)?`0%`:`${(e*100).toFixed(t)}%`}function mi(e,t){let n=e+t;return n>0?t/n:null}function hi(e){if(e==null||!Number.isFinite(e))return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:fi.format(t)}function gi(e,t=Date.now()){if(e==null||!Number.isFinite(e))return`—`;let n=Math.max(0,t-e),r=Math.floor(n/1e3);if(r<60)return`${r}s ago`;let i=Math.floor(r/60);if(i<60)return`${i}m ago`;let a=Math.floor(i/60);return a<24?`${a}h ago`:`${Math.floor(a/24)}d ago`}function _i(e){if(e==null||!Number.isFinite(e)||e<0)return`—`;let t=Math.round(e);if(t<1e3)return`${t}ms`;let n=e/1e3;if(n<59.95)return`${n.toFixed(1)}s`;let r=Math.round(n);return`${Math.floor(r/60)}m ${r%60}s`}function vi(e,t){if(e==null||t==null)return;let n=t-e;return n>=0?n:void 0}function yi(e){if(e==null||!Number.isFinite(e))return`—`;let t=Math.max(0,Math.floor(e)),n=Math.floor(t/86400),r=Math.floor(t%86400/3600),i=Math.floor(t%3600/60),a=[];return n&&a.push(`${n}d`),(r||n)&&a.push(`${r}h`),a.push(`${i}m`),a.join(` `)}function bi(e){return e==null||!Number.isFinite(e)?`0`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?Number((e/1e3).toFixed(1))>=1e3?`${(e/1e6).toFixed(1)}M`:`${(e/1e3).toFixed(1)}K`:String(Math.round(e))}function xi(e){if(e==null||!Number.isFinite(e))return`—`;if(e>=1e3)return`${(e/1e3).toFixed(2)}s`;let t=+(e<10);return Number(e.toFixed(t))>=1e3?`${(e/1e3).toFixed(2)}s`:`${e.toFixed(t)}ms`}var Si=/(?:\u001b\[[0-9;?]*[ -/]*[@-~]|\u001b[@-Z\\^_])/g;function Ci(e){return e.replace(Si,``)}function wi(e){if(e==null||!Number.isFinite(e))return`—`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return r<t.length-1&&Number(n.toFixed(r===0?0:1))>=1024&&(n/=1024,r++),`${n.toFixed(r===0?0:1)} ${t[r]}`}var Ti=class extends Error{status;lastEventIdSent;constructor(e,t,n=!1){super(e),this.status=t,this.lastEventIdSent=n,this.name=`SseConnectError`}},Ei=new Set([400,409,413,431]);function Di(e){return e instanceof Ti&&e.lastEventIdSent&&Ei.has(e.status)}function Oi(e){return!e.includes(`\0`)&&e.length<=4096}function ki(e){return!0}function Ai(e){let t=`message`,n,r=[];for(let i of e.split(`
3
+ `)){if(!i||i.startsWith(`:`))continue;let e=i.indexOf(`:`),a=e===-1?i:i.slice(0,e),o=e===-1?``:i.slice(e+1).replace(/^ /,``);a===`event`?t=o:a===`data`?r.push(o):a===`id`&&Oi(o)&&(n=o)}if(r.length===0)return null;let i=r.join(`
4
+ `),a=i;try{a=JSON.parse(i)}catch{}return{id:n,event:t,data:a}}var ji=45e3,Mi=256*1024;async function Ni(e,t,n,r=ji,i){let a=new AbortController,o=()=>a.abort(n.reason);n.aborted?a.abort(n.reason):n.addEventListener(`abort`,o,{once:!0});let s,c=()=>{clearTimeout(s),s=setTimeout(()=>a.abort(Error(`SSE idle timeout`)),r)};try{c();let n=new Headers({Accept:`text/event-stream`,...x()}),r=!1;if(i&&Oi(i))try{n.set(`Last-Event-ID`,i),r=!0}catch{n.delete(`Last-Event-ID`)}let o=await fetch(e,{headers:n,signal:a.signal});if(!o.ok||!o.body)throw await o.body?.cancel().catch(()=>{}),new Ti(o.ok?`SSE connect failed: empty response body`:`SSE connect failed: HTTP ${o.status}`,o.status,r);let s=o.headers.get(`content-type`)?.split(`;`,1)[0]?.trim().toLowerCase();if(s!==`text/event-stream`)throw await o.body.cancel().catch(()=>{}),new Ti(`SSE connect failed: expected text/event-stream, received ${s||`no Content-Type`}`,o.status,r);let l=o.body.getReader(),u=new TextDecoder,d=``;try{for(;;){let{done:e,value:n}=await l.read();if(e)break;for(c(),d+=u.decode(n,{stream:!0});;){let e=d.indexOf(`
5
+
6
+ `),n=d.indexOf(`\r
7
+ \r
8
+ `),r,i;if(e!==-1&&(n===-1||e<=n))r=e,i=2;else if(n!==-1)r=n,i=4;else{if(d.length>262144)throw Error(`SSE frame exceeds the ${Mi}-character limit`);break}if(r>262144)throw Error(`SSE frame exceeds the ${Mi}-character limit`);let a=d.slice(0,r);d=d.slice(r+i);let o=Ai(a.replace(/\r/g,``));o&&t(o)}}}finally{l.releaseLock()}}finally{clearTimeout(s),n.removeEventListener(`abort`,o),a.abort()}}var Pi={total:0,completed:0,failed:0,waiting:0,active:0},Fi=250,Ii=()=>typeof performance<`u`?performance.now():Date.now();function Li(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ri(e,t){return typeof e==`string`&&e.length<=t?e:void 0}function zi(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function Bi(e,t){let n=zi(e);return n!==void 0&&Math.abs(n)<=864e13?n:Number.isFinite(t)&&Math.abs(t)<=864e13?t:0}function Vi(e){let t=Li(e)?e:{},n=Date.now();return{queue:Ri(t.queue,256),jobId:Ri(t.jobId,1024),name:Ri(t.name,512),timestamp:Bi(t.timestamp,n),error:Ri(t.error,4096),progress:zi(t.progress)}}function Hi(e){let t=e.includes(`:`)?e.split(`:`)[1]:e;switch(t){case`pushed`:case`added`:return`waiting`;case`pulled`:return`active`;case`progress`:return`active`;default:return t}}function Ui(e){let t=b(e=>e.baseUrl),n=b(e=>e.token),[r,i]=(0,D.useState)([]),[a,o]=(0,D.useState)(Pi),[s,c]=(0,D.useState)(0),[l,u]=(0,D.useState)(!1),[d,f]=(0,D.useState)(null),p=(0,D.useRef)([]),m=(0,D.useRef)(0),h=JSON.stringify([t,n,e??null]),g=(0,D.useRef)(h),_=g.current===h,v=_?r:[],y=_?a:Pi,x=_?s:0,S=_?l:!1,C=_?d:null;return(0,D.useEffect)(()=>{let t=new AbortController,n=++m.current,r=0,a=!1,s=[],l={...Pi},d,_=()=>!a&&m.current===n;g.current=h,i([]),o(Pi),c(0),u(!1),f(null),p.current=[];let v=e=>new Promise(n=>{let r=()=>{clearTimeout(i),n()},i=setTimeout(()=>{t.signal.removeEventListener(`abort`,r),n()},e);t.signal.addEventListener(`abort`,r,{once:!0})}),y=e=>{if(!_()||(e.id!==void 0&&(d=e.id||void 0),ki(e)&&(u(e=>_()?!0:e),f(e=>_()?null:e)),!e.event.startsWith(`job:`)))return;let t=Vi(e.data),n=Hi(e.event),i={seq:++r,event:e.event,queue:t.queue,jobId:t.jobId,name:t.name,status:n,timestamp:t.timestamp,error:t.error,progress:t.progress};s.push(i);let a=l;a.total+=1,n===`completed`?a.completed+=1:n===`failed`?a.failed+=1:n===`waiting`?a.waiting+=1:n===`active`&&(a.active+=1),p.current.push(Ii())};(async()=>{let n=0;for(;!a;){let r=null,i=d,a=!1;try{await Ni(Jn.eventsUrl(e),e=>{a=!0,y(e)},t.signal,void 0,i)}catch(e){r=e instanceof Error?e:Error(String(e))}if(i&&!a&&d===i&&Di(r)&&(d=void 0),!_())break;u(e=>!_()&&e),f(e=>_()?r:e),n=r?Math.min(n+1,8):0,await v(2e3*Math.max(1,n))}})();let b=setInterval(()=>{if(!_())return;if(s.length){let e=s;s=[],e.reverse(),i(t=>_()?[...e,...t].slice(0,Fi):t)}let e=l;e.total&&(l={...Pi},o(t=>_()?{total:t.total+e.total,completed:t.completed+e.completed,failed:t.failed+e.failed,waiting:t.waiting+e.waiting,active:t.active+e.active}:t))},150);return()=>{a=!0,m.current===n&&(m.current+=1),t.abort(),clearInterval(b)}},[e,t,n,h]),(0,D.useEffect)(()=>{let e=setInterval(()=>{let e=Ii();p.current=p.current.filter(t=>t<=e&&e-t<5e3),c(p.current.length/5)},1e3);return()=>clearInterval(e)},[]),{events:v,counters:y,throughput:x,connected:S,error:C}}var Wi={overview:{stats:{waiting:0,active:0,delayed:0,completed:0,dlq:0,totalPushed:0,totalPulled:0,totalCompleted:0,totalFailed:0,uptime:0},throughput:{pushPerSec:0,pullPerSec:0,completePerSec:0,failPerSec:0},memory:{heapUsed:0,heapTotal:0,rss:0},crons:{total:0}},queuesTotal:0,details:[],failedTotal:0,readyTotal:0},Gi=100;function Ki(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qi(e,t){return Ki(e)&&t.every(t=>typeof e[t]==`number`&&Number.isFinite(e[t]))}function Ji(e){if(!Ki(e)||!qi(e.stats,[`waiting`,`active`,`completed`,`dlq`,`totalPushed`,`totalPulled`,`uptime`])||!qi(e.throughput,[`pushPerSec`,`pullPerSec`])||!qi(e.memory,[`rss`])||!qi(e.crons,[`total`]))throw Error(`Malformed /dashboard response: required overview metrics are missing or non-numeric.`)}function Yi(){let e=b(e=>e.baseUrl),n=(0,D.useRef)(null),{data:r,error:i,loading:a,refetch:o}=Xn(async()=>{let[e,t]=await Promise.all([z.overview(),z.queuesSummary()]);Ji(e);let r=[...t].sort((e,t)=>(t.counts?.failed??0)-(e.counts?.failed??0)||(t.counts?.waiting??0)+(t.counts?.prioritized??0)-((e.counts?.waiting??0)+(e.counts?.prioritized??0))).slice(0,6).map(e=>({name:e.name,paused:e.paused,counts:e.counts})),i=t.reduce((e,t)=>e+(t.counts?.failed??0),0),a=t.reduce((e,t)=>e+t.counts.waiting+t.counts.prioritized,0);return n.current=Date.now(),{overview:e,queuesTotal:t.length,details:r,failedTotal:i,readyTotal:a}},[]);if(a&&!r&&!i)return(0,H.jsx)(Gr,{label:`Loading overview…`});if(i&&!r)return(0,H.jsxs)(`div`,{children:[(0,H.jsx)(li,{title:`Overview`,description:`Real-time system health is unavailable.`}),(0,H.jsx)(Jr,{error:i,onRetry:o})]});let{overview:s,queuesTotal:c,details:l,failedTotal:u,readyTotal:f}=r??Wi,{stats:p,throughput:m,memory:h,crons:g}=s,_=mi(p.completed,u),v=e===`/api`?`localhost:6790`:e.replace(/^https?:\/\//,``),y=p.uptime?yi(p.uptime/1e3):`—`,x=wi(h.rss*1024*1024),S=!!i;return(0,H.jsxs)(`div`,{children:[(0,H.jsx)(li,{title:`Overview`,description:`Real-time system health at a glance.`,live:!!r&&!i}),i&&(0,H.jsx)(qr,{message:`Connection lost — showing the last successful overview snapshot.`,onRetry:o}),(0,H.jsxs)(`div`,{className:t(`mb-6 flex flex-wrap items-center justify-between gap-y-2 rounded-xl border px-5 py-4`,S?`border-amber-500/25 bg-amber-500/[0.06]`:`border-emerald-500/25 bg-emerald-500/[0.06]`),children:[(0,H.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,H.jsxs)(`span`,{className:`relative flex size-2.5`,children:[!S&&(0,H.jsx)(`span`,{className:`absolute inline-flex size-full animate-ping rounded-full bg-emerald-400 opacity-60`}),(0,H.jsx)(`span`,{className:t(`relative inline-flex size-2.5 rounded-full`,S?`bg-amber-400`:`bg-emerald-400`)})]}),(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`div`,{className:t(`font-semibold`,S?`text-warning`:`text-success`),children:S?`Connection lost — showing last known data`:`bunqueue server connected`}),(0,H.jsxs)(`div`,{className:`truncate font-mono text-xs text-muted`,children:[v,` · uptime `,y,` · `,x,` RAM`,S&&(0,H.jsxs)(H.Fragment,{children:[` `,`· last updated `,n.current?gi(n.current):`never`]})]})]})]}),(0,H.jsx)(`span`,{className:t(`rounded-full px-3 py-1 text-xs font-medium`,S?`bg-amber-500/15 text-warning`:`bg-emerald-500/15 text-success`),children:S?`Stale`:`Online`})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-3`,children:[(0,H.jsx)(Q,{label:`Error Rate`,value:_==null?`—`:pi(_),tone:_==null?`default`:_>.05?`red`:`green`,hint:`failed / processed`}),(0,H.jsx)(Q,{label:`Failed`,value:$(u),tone:u?`red`:`default`,hint:`recorded across queues`}),(0,H.jsx)(Q,{label:`DLQ`,value:$(p.dlq),tone:p.dlq?`red`:`default`,hint:`dead-lettered jobs`})]}),(0,H.jsxs)(`div`,{className:`mt-4 grid grid-cols-2 gap-4 md:grid-cols-3 xl:grid-cols-6`,children:[(0,H.jsx)(Q,{label:`Completed`,value:$(p.completed),tone:`green`,compact:!0}),(0,H.jsx)(Q,{label:`Active`,value:$(p.active),tone:`blue`,compact:!0}),(0,H.jsx)(Q,{label:`Ready backlog`,value:$(f),tone:f>Gi?`amber`:`default`,hint:`waiting + prioritized`,compact:!0}),(0,H.jsx)(Q,{label:`Push/sec`,value:m.pushPerSec.toFixed(1),tone:`accent`,hint:`${bi(p.totalPushed)} since restart`,compact:!0}),(0,H.jsx)(Q,{label:`Pull/sec`,value:m.pullPerSec.toFixed(1),tone:`accent`,hint:`${bi(p.totalPulled)} since restart`,compact:!0}),(0,H.jsx)(Q,{label:`Queues`,value:$(c),hint:`${g.total} cron active`,compact:!0})]}),(0,H.jsxs)(`div`,{className:`mt-8`,children:[(0,H.jsx)(Zi,{title:`Queue Health — most loaded`,to:`/queues`}),l.length===0?(0,H.jsx)(Hr,{children:(0,H.jsx)(`p`,{className:`py-4 text-center text-sm text-faint`,children:`No queues yet.`})}):(0,H.jsx)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3`,children:l.map(e=>(0,H.jsxs)(d,{to:`/queues/${encodeURIComponent(e.name)}`,className:`rounded-xl border border-line bg-surface p-4 transition-colors hover:border-line-strong`,children:[(0,H.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate font-mono text-sm font-medium text-accent`,children:e.name}),(0,H.jsx)(`span`,{className:t(`shrink-0 rounded-full px-2 py-0.5 text-[11px] font-medium`,e.paused?`bg-orange-500/10 text-orange-400`:`bg-emerald-500/10 text-success`),children:e.paused?`paused`:`active`})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 font-mono text-xs text-faint`,children:[(0,H.jsx)(Qi,{label:`W`,value:e.counts?.waiting,tone:`text-warning`}),(0,H.jsx)(Qi,{label:`P`,value:e.counts?.prioritized,tone:`text-orange-400`}),(0,H.jsx)(Qi,{label:`A`,value:e.counts?.active,tone:`text-blue-400`}),(0,H.jsx)(Qi,{label:`C`,value:e.counts?.completed,tone:`text-success`}),(0,H.jsx)(Qi,{label:`F`,value:e.counts?.failed,tone:`text-danger`})]})]},e.name))})]}),(0,H.jsx)(Xi,{})]})}function Xi(){let{events:e,connected:n,error:r}=Ui();return(0,H.jsxs)(`div`,{className:`mt-8`,children:[(0,H.jsx)(Zi,{title:`Recent Activity`,to:`/logs`}),(0,H.jsxs)(Hr,{padded:!1,children:[r&&e.length>0&&(0,H.jsxs)(`p`,{className:`border-b border-line px-5 py-2 text-xs text-warning`,children:[`Event stream unavailable — `,r.message,`. Reconnecting…`]}),e.length===0?(0,H.jsx)(`p`,{role:r?`alert`:void 0,className:t(`py-8 text-center text-sm`,r?`text-warning`:`text-faint`),children:r?`Event stream unavailable — ${r.message}. Reconnecting…`:n?`Waiting for live activity…`:`Connecting to the event stream…`}):(0,H.jsx)(`ul`,{className:`divide-y divide-line`,children:e.slice(0,8).map(e=>(0,H.jsxs)(`li`,{className:`flex items-center justify-between px-5 py-3`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(`span`,{className:t(`size-2 rounded-full`,$i(e.status))}),(0,H.jsxs)(`div`,{className:`text-sm`,children:[(0,H.jsx)(`span`,{className:`font-mono font-medium text-fg`,children:e.queue||`—`}),(0,H.jsx)(`span`,{className:`text-faint`,children:` · `}),(0,H.jsx)(`span`,{className:`font-mono text-xs text-faint`,children:e.jobId?e.jobId.slice(0,8):`—`}),(0,H.jsx)(`span`,{className:`text-faint`,children:` · `}),(0,H.jsx)(`span`,{className:`capitalize text-muted`,children:e.status})]})]}),(0,H.jsx)(`span`,{className:`text-xs text-faint`,children:gi(e.timestamp)})]},e.seq))})]})]})}function Zi({title:e,to:t}){return(0,H.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,H.jsx)(`h2`,{className:`text-lg font-semibold text-fg`,children:e}),(0,H.jsxs)(d,{to:t,className:`flex items-center gap-1 text-sm text-muted hover:text-fg`,children:[`View All `,(0,H.jsx)(Vn,{className:`size-3.5`})]})]})}function Qi({label:e,value:n,tone:r}){return(0,H.jsxs)(`span`,{children:[e,` `,(0,H.jsx)(`span`,{className:t(`tnum font-semibold`,r),children:n==null?`—`:$(n)})]})}function $i(e){switch(e){case`completed`:return`bg-emerald-400`;case`failed`:return`bg-red-400`;case`active`:return`bg-blue-400`;case`waiting`:return`bg-amber-400`;default:return`bg-accent`}}function ea(){return(0,H.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-3 py-24 text-center`,children:[(0,H.jsx)(`h1`,{className:`text-5xl font-bold text-faint`,children:`404`}),(0,H.jsx)(`p`,{className:`text-sm text-muted`,children:`This page does not exist.`}),(0,H.jsx)(d,{to:`/`,className:`rounded-lg border border-line bg-surface-2 px-4 py-2 text-sm font-medium text-fg hover:border-line-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50`,children:`Back to Overview`})]})}var ta=(0,D.lazy)(()=>u(()=>import(`./AddJob-CG28MSxU.js`).then(e=>({default:e.AddJob})),__vite__mapDeps([5,1,2,6,4,7,8]))),na=(0,D.lazy)(()=>u(()=>import(`./Benchmark-BVjUH9dG.js`).then(e=>({default:e.Benchmark})),__vite__mapDeps([9,1,2,8,4,10]))),ra=(0,D.lazy)(()=>u(()=>import(`./BulkAddJobs-BHzUCMj_.js`).then(e=>({default:e.BulkAddJobs})),__vite__mapDeps([11,1,2,6,4,7,8,5]))),ia=(0,D.lazy)(()=>u(()=>import(`./CronManager-vulcesqJ.js`).then(e=>({default:e.CronManager})),__vite__mapDeps([12,1,2,6,4,13,7,8,5]))),aa=(0,D.lazy)(()=>u(()=>import(`./Database-DlB_t04Z.js`).then(e=>({default:e.Database})),__vite__mapDeps([14,1,2,8,4,13]))),oa=(0,D.lazy)(()=>u(()=>import(`./Diagnostics-DddCUgeR.js`).then(e=>({default:e.Diagnostics})),__vite__mapDeps([15,1,2]))),sa=(0,D.lazy)(()=>u(()=>import(`./DlqControl-9m0Re_TH.js`).then(e=>({default:e.DlqControl})),__vite__mapDeps([16,1,2,4,13,17,18,19,7,8,20]))),ca=(0,D.lazy)(()=>u(()=>import(`./DlqPro-Dmw-0wta.js`).then(e=>({default:e.DlqPro})),__vite__mapDeps([21,1,2,4,13,17,18,19,7,8,20]))),la=(0,D.lazy)(()=>u(()=>import(`./Flows-C3-9nXW4.js`).then(e=>({default:e.Flows})),__vite__mapDeps([22,1,2,8,6]))),ua=(0,D.lazy)(()=>u(()=>import(`./JobInspector-DwIfABmI.js`).then(e=>({default:e.JobInspector})),__vite__mapDeps([23,1,2,8,6,4,17,18,24]))),da=(0,D.lazy)(()=>u(()=>import(`./JobsPro-CS__CJJl.js`).then(e=>({default:e.JobsPro})),__vite__mapDeps([25,1,2,4,13,7,8,18,24]))),fa=(0,D.lazy)(()=>u(()=>import(`./LogsPro-RNtSQZRT.js`).then(e=>({default:e.LogsPro})),__vite__mapDeps([26,1,2,8,4,13,19,7,20,17]))),pa=(0,D.lazy)(()=>u(()=>import(`./McpServer-CbaU52l2.js`).then(e=>({default:e.McpServer})),__vite__mapDeps([27,2,1]))),ma=(0,D.lazy)(()=>u(()=>import(`./MetricsPro-xjZno4vg.js`).then(e=>({default:e.MetricsPro})),__vite__mapDeps([28,1,2,13,10,29,8]))),ha=(0,D.lazy)(()=>u(()=>import(`./QueueControl-B5xK_SQ-.js`).then(e=>({default:e.QueueControl})),__vite__mapDeps([19,1,2,4,7,8,20,17]))),ga=(0,D.lazy)(()=>u(()=>import(`./QueueDetailPro-DoN25ndy.js`).then(e=>({default:e.QueueDetailPro})),__vite__mapDeps([30,1,2,7,8,17,10,20,4,29]))),_a=(0,D.lazy)(()=>u(()=>import(`./QueuesOverview-BX1lzojl.js`).then(e=>({default:e.QueuesOverview})),__vite__mapDeps([31,1,2,13,7,8,32]))),va=(0,D.lazy)(()=>u(()=>import(`./S3BackupPro-BC_6-uX-.js`).then(e=>({default:e.S3BackupPro})),__vite__mapDeps([33,1,2,8,4]))),ya=(0,D.lazy)(()=>u(()=>import(`./ServerControl-CSSrN8G5.js`).then(e=>({default:e.ServerControl})),__vite__mapDeps([34,1,2,4]))),ba=(0,D.lazy)(()=>u(()=>import(`./UsagePro-C2pQwjN9.js`).then(e=>({default:e.UsagePro})),__vite__mapDeps([35,2,1]))),xa=(0,D.lazy)(()=>u(()=>import(`./Webhooks-CVuuvb0L.js`).then(e=>({default:e.Webhooks})),__vite__mapDeps([36,1,2,4,13,7,8]))),Sa=(0,D.lazy)(()=>u(()=>import(`./WorkersPro-B0vEkC0T.js`).then(e=>({default:e.WorkersPro})),__vite__mapDeps([37,1,2,7,8]))),Ca=(0,D.lazy)(()=>u(()=>import(`./Workflows-C8Qmkflf.js`).then(e=>({default:e.Workflows})),__vite__mapDeps([38,1,2]))),wa=(0,D.lazy)(()=>u(()=>import(`./Alerts-D9JojJrj.js`).then(e=>({default:e.Alerts})),__vite__mapDeps([39,1,2,8,4]))),Ta=(0,D.lazy)(()=>u(()=>import(`./Cron-DoEHDHwy.js`).then(e=>({default:e.Cron})),__vite__mapDeps([40,1,2,13,7,8]))),Ea=(0,D.lazy)(()=>u(()=>import(`./Dlq-DMKrsSMP.js`).then(e=>({default:e.Dlq})),__vite__mapDeps([41,1,2,4,13,17,42,32]))),Da=(0,D.lazy)(()=>u(()=>import(`./Jobs-j8tTS3NC.js`).then(e=>({default:e.Jobs})),__vite__mapDeps([42,1,2,4,17,32]))),Oa=(0,D.lazy)(()=>u(()=>import(`./Logs-BB-VDPA1.js`).then(e=>({default:e.Logs})),__vite__mapDeps([43,1,2,4,13,42,17,32]))),ka=(0,D.lazy)(()=>u(()=>import(`./Metrics-ivcddPwT.js`).then(e=>({default:e.Metrics})),__vite__mapDeps([44,2,1]))),Aa=(0,D.lazy)(()=>u(()=>import(`./Overview-D84aD2ph.js`).then(e=>({default:e.Overview})),__vite__mapDeps([45,2,1]))),ja=(0,D.lazy)(()=>u(()=>import(`./QueueDetail-BH59kwm9.js`).then(e=>({default:e.QueueDetail})),__vite__mapDeps([46,1,2,4,7,8,17]))),Ma=(0,D.lazy)(()=>u(()=>import(`./Queues-CKMJqFHX.js`).then(e=>({default:e.Queues})),__vite__mapDeps([47,1,2,13]))),Na=(0,D.lazy)(()=>u(()=>import(`./S3Backup-Bz3GfoZ9.js`).then(e=>({default:e.S3Backup})),__vite__mapDeps([48,2,1]))),Pa=(0,D.lazy)(()=>u(()=>import(`./Settings-DkqmZUIS.js`).then(e=>({default:e.Settings})),__vite__mapDeps([49,1,2,8,4]))),Fa=(0,D.lazy)(()=>u(()=>import(`./Usage-Ba20p0xd.js`).then(e=>({default:e.Usage})),__vite__mapDeps([50,2,1]))),Ia=(0,D.lazy)(()=>u(()=>import(`./Workers-C1wPU6CS.js`).then(e=>({default:e.Workers})),__vite__mapDeps([51,1,2,13])));function La(){return(0,H.jsx)(r,{children:(0,H.jsxs)(f,{element:(0,H.jsx)(ai,{}),children:[(0,H.jsx)(f,{path:`/`,element:(0,H.jsx)(Yi,{})}),(0,H.jsx)(f,{path:`/overview-classic`,element:(0,H.jsx)(Aa,{})}),(0,H.jsx)(f,{path:`/queues`,element:(0,H.jsx)(_a,{})}),(0,H.jsx)(f,{path:`/queues-classic`,element:(0,H.jsx)(Ma,{})}),(0,H.jsx)(f,{path:`/queues/:name`,element:(0,H.jsx)(ga,{})}),(0,H.jsx)(f,{path:`/queues-classic/:name`,element:(0,H.jsx)(ja,{})}),(0,H.jsx)(f,{path:`/jobs`,element:(0,H.jsx)(da,{})}),(0,H.jsx)(f,{path:`/jobs-classic`,element:(0,H.jsx)(Da,{})}),(0,H.jsx)(f,{path:`/dlq`,element:(0,H.jsx)(ca,{})}),(0,H.jsx)(f,{path:`/dlq-classic`,element:(0,H.jsx)(Ea,{})}),(0,H.jsx)(f,{path:`/cron`,element:(0,H.jsx)(ia,{})}),(0,H.jsx)(f,{path:`/cron-classic`,element:(0,H.jsx)(Ta,{})}),(0,H.jsx)(f,{path:`/flows`,element:(0,H.jsx)(la,{})}),(0,H.jsx)(f,{path:`/workflows`,element:(0,H.jsx)(Ca,{})}),(0,H.jsx)(f,{path:`/workflows/executions`,element:(0,H.jsx)(Ca,{})}),(0,H.jsx)(f,{path:`/workflows/waiting`,element:(0,H.jsx)(Ca,{})}),(0,H.jsx)(f,{path:`/workflows/compensation`,element:(0,H.jsx)(Ca,{})}),(0,H.jsx)(f,{path:`/workflows/archive`,element:(0,H.jsx)(Ca,{})}),(0,H.jsx)(f,{path:`/metrics`,element:(0,H.jsx)(ma,{})}),(0,H.jsx)(f,{path:`/metrics-classic`,element:(0,H.jsx)(ka,{})}),(0,H.jsx)(f,{path:`/workers`,element:(0,H.jsx)(Sa,{})}),(0,H.jsx)(f,{path:`/workers-classic`,element:(0,H.jsx)(Ia,{})}),(0,H.jsx)(f,{path:`/logs`,element:(0,H.jsx)(fa,{})}),(0,H.jsx)(f,{path:`/logs-classic`,element:(0,H.jsx)(Oa,{})}),(0,H.jsx)(f,{path:`/server`,element:(0,H.jsx)(ya,{})}),(0,H.jsx)(f,{path:`/add-job`,element:(0,H.jsx)(ta,{})}),(0,H.jsx)(f,{path:`/jobs/bulk-add`,element:(0,H.jsx)(ra,{})}),(0,H.jsx)(f,{path:`/job`,element:(0,H.jsx)(ua,{})}),(0,H.jsx)(f,{path:`/queue-control`,element:(0,H.jsx)(ha,{})}),(0,H.jsx)(f,{path:`/cron-manager`,element:(0,H.jsx)(n,{to:`/cron`,replace:!0})}),(0,H.jsx)(f,{path:`/dlq-control`,element:(0,H.jsx)(sa,{})}),(0,H.jsx)(f,{path:`/webhooks`,element:(0,H.jsx)(xa,{})}),(0,H.jsx)(f,{path:`/diagnostics`,element:(0,H.jsx)(oa,{})}),(0,H.jsx)(f,{path:`/alerts`,element:(0,H.jsx)(wa,{})}),(0,H.jsx)(f,{path:`/benchmark`,element:(0,H.jsx)(na,{})}),(0,H.jsx)(f,{path:`/database`,element:(0,H.jsx)(aa,{})}),(0,H.jsx)(f,{path:`/mcp`,element:(0,H.jsx)(pa,{})}),(0,H.jsx)(f,{path:`/usage`,element:(0,H.jsx)(ba,{})}),(0,H.jsx)(f,{path:`/usage-classic`,element:(0,H.jsx)(Fa,{})}),(0,H.jsx)(f,{path:`/s3`,element:(0,H.jsx)(va,{})}),(0,H.jsx)(f,{path:`/s3-classic`,element:(0,H.jsx)(Na,{})}),(0,H.jsx)(f,{path:`/settings`,element:(0,H.jsx)(Pa,{})}),(0,H.jsx)(f,{path:`*`,element:(0,H.jsx)(ea,{})})]})})}var Ra=new WeakMap;function za(e,t){let n=document.createElement(`div`);n.setAttribute(`role`,`alert`),n.style.cssText=`padding:2rem;font:14px/1.6 system-ui,sans-serif;max-width:44rem;margin:auto`;let r=document.createElement(`h1`);r.style.cssText=`font-size:1.1rem;font-weight:600;margin-bottom:.5rem`,r.textContent=`Demo data failed to load`;let i=document.createElement(`p`);i.textContent=`This build serves canned data from a bundled chunk that could not be fetched, so there is no backend to talk to. Reload the page (a hard refresh clears a stale cached index.html).`;let a=document.createElement(`p`);a.style.cssText=`margin-top:.75rem;opacity:.7;font-family:ui-monospace,monospace`,a.textContent=t instanceof Error?t.message:String(t),n.append(r,i,a),e.replaceChildren(n)}function Ba({root:e,demo:t,loadDemo:n,render:r,reportError:i=e=>console.error(`[demo] failed to load the demo backend`,e)}){let a=Ra.get(e);if(a)return a===!0?void 0:a;if(!t){Ra.set(e,!0);try{r()}catch(t){throw Ra.delete(e),t}return}let o=Promise.resolve().then(async()=>{let t;try{t=await n(),t.installDemo()}catch(t){try{i(t)}catch{}za(e,t);return}r()});return Ra.set(e,o),o}mn();var Va=document.getElementById(`root`);if(!Va)throw Error(`Root element #root not found`);function Ha(){(0,te.createRoot)(Va).render((0,H.jsx)(D.StrictMode,{children:(0,H.jsx)(c,{basename:`/`,children:(0,H.jsx)(La,{})})}))}Ba({root:Va,demo:nr(),loadDemo:()=>u(()=>import(`./install-D0eRLf9F.js`),[]),render:Ha});export{V as $,Xn as A,Ln as B,Ur as C,nr as D,jr as E,jn as F,gn as G,Cn as H,zn as I,In as J,Fn as K,yn as L,Vn as M,Bn as N,er as O,An as P,an as Q,vn as R,Hr as S,Vr as T,Nn as U,Rn as V,Mn as W,xn as X,Pn as Y,W as Z,ci as _,hi as a,jt as at,Gr as b,$ as c,Tt as ct,yi as d,it as dt,Ft as et,vi as f,Ae as ft,si as g,li as h,bi as i,Ge as it,Jn as j,Yn as k,pi as l,et as lt,Q as m,Ee as mt,mi as n,B as nt,_i as o,nt as ot,Ci as p,De as pt,Tn as q,wi as r,j as rt,xi as s,z as st,Ui as t,It as tt,gi as u,At as ut,Kr as v,Br as w,qr as x,Jr as y,Wn as z};
@@ -0,0 +1,3 @@
1
+ var e={health:{ok:!0,status:`healthy`,uptime:133,version:`2.8.57`,queues:{waiting:13,active:2,delayed:6,completed:4,dlq:2},connections:{tcp:0,ws:0,sse:0},memory:{heapUsed:3,heapTotal:4,rss:68}},ping:{ok:!0,data:{pong:!0,time:1783035131368}},stats:{ok:!0,stats:{waiting:13,prioritized:7,delayed:6,active:2,dlq:2,completed:4,"waiting-children":0,totalPushed:34,totalPulled:8,totalCompleted:4,totalFailed:0,uptime:133882,cronJobs:2,cronPending:2,pushPerSec:.25,pullPerSec:.06,completePerSec:.03,failPerSec:0},memory:{heapUsed:3,heapTotal:4,rss:69,external:1,arrayBuffers:0},collections:{jobIndex:34,completedJobs:4,jobResults:0,jobLogs:0,customIdMap:0,jobLocks:0,clientJobs:0,clientJobsTotal:0,pendingDepChecks:0,stalledCandidates:0,processingTotal:2,queuedTotal:26,waitingDepsTotal:0,temporalIndexTotal:34,delayedHeapTotal:6}},storage:{ok:!0,data:{diskFull:!1,error:null,since:null}},dashboard:{ok:!0,stats:{waiting:13,active:2,delayed:6,completed:4,dlq:2,totalPushed:34,totalPulled:8,totalCompleted:4,totalFailed:0,uptime:133882},throughput:{pushPerSec:.25,pullPerSec:.06,completePerSec:.03,failPerSec:0},latency:{averages:{pushMs:.07645341176470588,pullMs:.3890205,ackMs:1.03645825},percentiles:{push:{p50:.1,p95:.5,p99:1},pull:{p50:.1,p95:1,p99:1},ack:{p50:2.5,p95:2.5,p99:2.5}}},memory:{heapUsed:3,heapTotal:4,rss:70},collections:{jobIndex:34,completedJobs:4,jobResults:0,jobLogs:0,customIdMap:0,jobLocks:0,clientJobs:0,clientJobsTotal:0,pendingDepChecks:0,stalledCandidates:0,processingTotal:2,queuedTotal:26,waitingDepsTotal:0,temporalIndexTotal:34,delayedHeapTotal:6},workers:{total:0,active:0,list:[],truncated:!1},crons:{total:2,list:[{name:`nightly-report`,jobName:`generate-report`,queue:`reports`,schedule:`0 2 * * *`,repeatEvery:null,nextRun:17830368e5,executions:0},{name:`heartbeat`,jobName:`send-heartbeat`,queue:`notifications`,schedule:null,repeatEvery:6e4,nextRun:1783035191362,executions:0}],truncated:!1},storage:{diskFull:!1,error:null,since:null},timestamp:1783035131369},dashboardQueues:{ok:!0,queues:[{name:`emails`,waiting:2,delayed:0,active:0,dlq:2,paused:!1},{name:`image-processing`,waiting:7,delayed:0,active:2,dlq:0,paused:!1},{name:`reports`,waiting:0,delayed:6,active:0,dlq:0,paused:!1},{name:`notifications`,waiting:4,delayed:0,active:0,dlq:0,paused:!1}],total:4,limit:100,offset:0,timestamp:1783035131370},queuesSummary:[{name:`emails`,paused:!1,counts:{waiting:2,prioritized:7,active:0,completed:4,failed:2,delayed:0}},{name:`image-processing`,paused:!1,counts:{waiting:7,prioritized:0,active:2,completed:0,failed:0,delayed:0}},{name:`reports`,paused:!1,counts:{waiting:0,prioritized:0,active:0,completed:0,failed:0,delayed:6}},{name:`notifications`,paused:!1,counts:{waiting:4,prioritized:0,active:0,completed:0,failed:0,delayed:0}}],crons:{ok:!0,crons:[{name:`nightly-report`,jobName:`generate-report`,queue:`reports`,schedule:`0 2 * * *`,repeatEvery:null,nextRun:17830368e5,executions:0,maxLimit:null,timezone:null},{name:`heartbeat`,jobName:`send-heartbeat`,queue:`notifications`,schedule:null,repeatEvery:6e4,nextRun:1783035191362,executions:0,maxLimit:null,timezone:null}]},webhooks:{ok:!0,data:{webhooks:[{id:`019f252c-f5e3-7000-883c-28cc5dc157a0`,url:`https://hooks.example.com/bunqueue`,events:[`job.completed`,`job.failed`],queue:null,createdAt:1783035131363,lastTriggered:178303512e4,successCount:42,failureCount:3,enabled:!0}],stats:{total:1,enabled:1}}},workers:{ok:!0,data:{workers:[],stats:{total:0,active:0,totalProcessed:0,totalFailed:0,activeJobs:0}}},dlqStats:{ok:!0,total:2,byQueue:{emails:2}},counts_emails:{ok:!0,counts:{waiting:2,prioritized:7,delayed:0,active:0,completed:4,failed:2,"waiting-children":0,paused:0}},dlq_emails:{ok:!0,entries:[{job:{id:`019f252b-8716-7000-bbec-d8c65e09f340`,queue:`emails`,data:{to:`user8@example.com`,subject:`Welcome 8`},createdAt:1783035037462,runAt:1783035037462,startedAt:1783035131364,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:3,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037462},{state:`active`,timestamp:1783035131364}]},enteredAt:1783035131367,reason:`timeout`,error:`Job exceeded its 30000 ms timeout while connecting to smtp.example.com`,attempts:[{attempt:0,startedAt:1783035131364,failedAt:1783035131367,reason:`timeout`,error:`Job exceeded its 30000 ms timeout while connecting to smtp.example.com`,duration:3}],retryCount:0,lastRetryAt:null,nextRetryAt:null,expiresAt:1783639931367},{job:{id:`019f252b-8750-7000-afa1-767720d8f433`,queue:`emails`,data:{to:`user13@example.com`,subject:`Welcome 13`},createdAt:1783035037520,runAt:1783035037520,startedAt:1783035131364,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:3,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037520},{state:`active`,timestamp:1783035131364}]},enteredAt:1783035131368,reason:`max_attempts`,error:`SMTP 550: mailbox unavailable (user13@example.com) — 3 of 3 attempts failed`,attempts:[{attempt:0,startedAt:1783035131364,failedAt:1783035131368,reason:`max_attempts`,error:`SMTP 550: mailbox unavailable (user13@example.com) — 3 of 3 attempts failed`,duration:4}],retryCount:0,lastRetryAt:null,nextRetryAt:null,expiresAt:1783639931368}],total:2},detail_emails:{ok:!0,name:`emails`,counts:{waiting:2,prioritized:7,delayed:0,active:0,completed:4,failed:2,"waiting-children":0,totalCompleted:4,totalFailed:0,paused:0},paused:!1,priorityCounts:{0:2,1:3,2:4},dlqPreview:[{id:`019f252b-8716-7000-bbec-d8c65e09f340`,data:{to:`user8@example.com`,subject:`Welcome 8`},attempts:0,createdAt:1783035037462},{id:`019f252b-8750-7000-afa1-767720d8f433`,data:{to:`user13@example.com`,subject:`Welcome 13`},attempts:0,createdAt:1783035037520}],timestamp:1783035131373,jobs:{waiting:[{id:`019f252b-86f2-7000-a45d-6e5e3dd4abf0`,priority:0,createdAt:1783035037426,runAt:1783035037426,attempts:0,progress:0},{id:`019f252b-872e-7000-91af-f820da905a23`,priority:0,createdAt:1783035037486,runAt:1783035037486,attempts:0,progress:0}],active:[],delayed:[],paused:[]}},"counts_image-processing":{ok:!0,counts:{waiting:7,prioritized:0,delayed:0,active:2,completed:0,failed:0,"waiting-children":0,paused:0}},"dlq_image-processing":{ok:!0,entries:[],total:0},"detail_image-processing":{ok:!0,name:`image-processing`,counts:{waiting:7,prioritized:0,delayed:0,active:2,completed:0,failed:0,"waiting-children":0,totalCompleted:0,totalFailed:0,paused:0},paused:!1,priorityCounts:{0:7},dlqPreview:[],timestamp:1783035131374,jobs:{waiting:[{id:`019f252b-8780-7000-9066-7f3a95bbb309`,priority:0,createdAt:1783035037568,runAt:1783035037568,attempts:0,progress:0},{id:`019f252b-878d-7000-9396-88a9de934b0c`,priority:0,createdAt:1783035037581,runAt:1783035037581,attempts:0,progress:0},{id:`019f252b-8799-7000-8433-2f4d874dfa3f`,priority:0,createdAt:1783035037593,runAt:1783035037593,attempts:0,progress:0},{id:`019f252b-87a5-7000-b3d2-48c6816be571`,priority:0,createdAt:1783035037605,runAt:1783035037605,attempts:0,progress:0}],active:[{id:`019f252b-8769-7000-bc44-cfc168232f53`,priority:0,createdAt:1783035037545,runAt:1783035037545,attempts:0,progress:0},{id:`019f252b-8775-7000-884a-63456175f48c`,priority:0,createdAt:1783035037557,runAt:1783035037557,attempts:0,progress:0}],delayed:[],paused:[]}},counts_reports:{ok:!0,counts:{waiting:0,prioritized:0,delayed:6,active:0,completed:0,failed:0,"waiting-children":0,paused:0}},dlq_reports:{ok:!0,entries:[],total:0},detail_reports:{ok:!0,name:`reports`,counts:{waiting:0,prioritized:0,delayed:6,active:0,completed:0,failed:0,"waiting-children":0,totalCompleted:0,totalFailed:0,paused:0},paused:!1,priorityCounts:{0:6},dlqPreview:[],timestamp:1783035131374,jobs:{waiting:[],active:[],delayed:[{id:`019f252b-87d8-7000-8f0c-e8ca5fec7d18`,priority:0,createdAt:1783035037656,runAt:1783035637656,attempts:0,progress:0},{id:`019f252b-87e3-7000-b0dc-18aac125e1ce`,priority:0,createdAt:1783035037667,runAt:1783035637667,attempts:0,progress:0},{id:`019f252b-87ee-7000-bb98-e9997d218441`,priority:0,createdAt:1783035037678,runAt:1783035637678,attempts:0,progress:0},{id:`019f252b-87fa-7000-9eb8-5b7a6d7aa7b4`,priority:0,createdAt:1783035037690,runAt:1783035637690,attempts:0,progress:0}],paused:[]}},counts_notifications:{ok:!0,counts:{waiting:4,prioritized:0,delayed:0,active:0,completed:0,failed:0,"waiting-children":0,paused:0}},dlq_notifications:{ok:!0,entries:[],total:0},detail_notifications:{ok:!0,name:`notifications`,counts:{waiting:4,prioritized:0,delayed:0,active:0,completed:0,failed:0,"waiting-children":0,totalCompleted:0,totalFailed:0,paused:0},paused:!1,priorityCounts:{0:4},dlqPreview:[],timestamp:1783035131375,jobs:{waiting:[{id:`019f252b-8823-7000-9455-de9cff6a56e2`,priority:0,createdAt:1783035037731,runAt:1783035037731,attempts:0,progress:0},{id:`019f252b-882e-7000-ae38-9c7fe01639d5`,priority:0,createdAt:1783035037742,runAt:1783035037742,attempts:0,progress:0},{id:`019f252b-883b-7000-8789-839b741a1011`,priority:0,createdAt:1783035037755,runAt:1783035037755,attempts:0,progress:0},{id:`019f252b-884d-7000-b703-96a357151ef4`,priority:0,createdAt:1783035037773,runAt:1783035037773,attempts:0,progress:0}],active:[],delayed:[],paused:[]}},emailsWaiting:{ok:!0,jobs:[{id:`019f252b-86c0-7000-a54e-3816c968ebf0`,queue:`emails`,data:{to:`user1@example.com`,subject:`Welcome 1`},createdAt:1783035037376,runAt:1783035037376,startedAt:null,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035037376,stallCount:0,priority:1,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037376}],_state:`prioritized`,state:`prioritized`},{id:`019f252b-86ce-7000-adfc-613a9495a6ef`,queue:`emails`,data:{to:`user2@example.com`,subject:`Welcome 2`},createdAt:1783035037390,runAt:1783035037390,startedAt:null,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035037390,stallCount:0,priority:2,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037390}],_state:`prioritized`,state:`prioritized`},{id:`019f252b-86fe-7000-894d-fe3ad935cc36`,queue:`emails`,data:{to:`user6@example.com`,subject:`Welcome 6`},createdAt:1783035037438,runAt:1783035037438,startedAt:null,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035037438,stallCount:0,priority:1,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037438}],_state:`prioritized`,state:`prioritized`},{id:`019f252b-870a-7000-91d2-ca4070505abe`,queue:`emails`,data:{to:`user7@example.com`,subject:`Welcome 7`},createdAt:1783035037450,runAt:1783035037450,startedAt:null,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035037450,stallCount:0,priority:2,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037450}],_state:`prioritized`,state:`prioritized`}]},emailsCompleted:{ok:!0,jobs:[{id:`019f252b-86da-7000-a9e3-6b1b74944d70`,queue:`emails`,data:{to:`user3@example.com`,subject:`Welcome 3`},createdAt:1783035037402,runAt:1783035037402,startedAt:1783035131364,completedAt:1783035131367,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:3,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037402},{state:`active`,timestamp:1783035131364},{state:`completed`,timestamp:1783035131367}],_state:`completed`,state:`completed`},{id:`019f252b-86e6-7000-a51e-e65a7cd2ce85`,queue:`emails`,data:{to:`user4@example.com`,subject:`Welcome 4`},createdAt:1783035037414,runAt:1783035037414,startedAt:1783035131364,completedAt:1783035131366,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:4,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037414},{state:`active`,timestamp:1783035131364},{state:`completed`,timestamp:1783035131366}],_state:`completed`,state:`completed`},{id:`019f252b-8722-7000-9270-14be63598def`,queue:`emails`,data:{to:`user9@example.com`,subject:`Welcome 9`},createdAt:1783035037474,runAt:1783035037474,startedAt:1783035131364,completedAt:1783035131366,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:4,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037474},{state:`active`,timestamp:1783035131364},{state:`completed`,timestamp:1783035131366}],_state:`completed`,state:`completed`},{id:`019f252b-875b-7000-8f4b-3d571d84663d`,queue:`emails`,data:{to:`user14@example.com`,subject:`Welcome 14`},createdAt:1783035037531,runAt:1783035037531,startedAt:1783035131364,completedAt:1783035131367,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:4,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037531},{state:`active`,timestamp:1783035131364},{state:`completed`,timestamp:1783035131367}],_state:`completed`,state:`completed`}]},oneJob:{ok:!0,job:{id:`019f252b-8716-7000-bbec-d8c65e09f340`,queue:`emails`,data:{to:`user8@example.com`,subject:`Welcome 8`},createdAt:1783035037462,runAt:1783035037462,startedAt:1783035131364,completedAt:null,attempts:0,backoff:1e3,backoffConfig:null,dependsOn:[],childrenIds:[],childrenCompleted:0,tags:[],progress:0,progressMessage:null,stacktrace:null,repeat:null,lastHeartbeat:1783035131364,stallCount:0,priority:3,lifo:!1,maxAttempts:3,removeOnComplete:!1,removeOnFail:!1,ttl:null,timeout:null,uniqueKey:null,customId:null,parentId:null,groupId:null,stallTimeout:null,stackTraceLimit:10,keepLogs:null,sizeLimit:null,failParentOnFailure:!1,removeDependencyOnFailure:!1,continueParentOnFailure:!1,ignoreDependencyOnFailure:!1,deduplicationTtl:null,deduplicationExtend:!1,deduplicationReplace:!1,debounceId:null,debounceTtl:null,timeline:[{state:`prioritized`,timestamp:1783035037462},{state:`active`,timestamp:1783035131364}],state:`failed`}}},t={ok:!0,sqliteVersion:`3.45.1`,pageSize:4096,pageCount:640,journalMode:`wal`,freelistPages:8,tables:6,indexes:11,fileSize:2621440,walSize:49152},n={jobs:{columns:[`id`,`queue`,`state`,`priority`,`attempts`,`created_at`],types:{id:`TEXT`,queue:`TEXT`,state:`TEXT`,priority:`INTEGER`,attempts:`INTEGER`,created_at:`INTEGER`},rows:[[`019f252b-86c0-7000-a54e-3816c968ebf0`,`emails`,`prioritized`,1,0,1783035037376],[`019f252b-8769-7000-bc44-cfc168232f53`,`image-processing`,`active`,0,0,1783035037545],[`019f252b-86da-7000-a9e3-6b1b74944d70`,`emails`,`completed`,3,0,1783035037402],[`019f252b-8716-7000-bbec-d8c65e09f340`,`emails`,`failed`,3,0,1783035037462],[`019f252b-87d8-7000-8f0c-e8ca5fec7d18`,`reports`,`delayed`,0,0,1783035037656]]},queues:{columns:[`name`,`paused`,`concurrency`,`rate_limit`],types:{name:`TEXT`,paused:`INTEGER`,concurrency:`INTEGER`,rate_limit:`INTEGER`},rows:[[`emails`,0,10,0],[`image-processing`,0,4,100],[`reports`,0,2,0],[`notifications`,0,8,0]]},dlq:{columns:[`id`,`queue`,`reason`,`attempts`,`entered_at`],types:{id:`TEXT`,queue:`TEXT`,reason:`TEXT`,attempts:`INTEGER`,entered_at:`INTEGER`},rows:[[`019f252b-8716-7000-bbec-d8c65e09f340`,`emails`,`max attempts reached`,3,1783035037462],[`019f252b-8a02-7000-9b21-4c1f0b7e2a55`,`reports`,`handler threw`,5,1783035039101]]},crons:{columns:[`name`,`queue`,`pattern`,`tz`,`next_run`],types:{name:`TEXT`,queue:`TEXT`,pattern:`TEXT`,tz:`TEXT`,next_run:`INTEGER`},rows:[[`nightly-report`,`reports`,`0 2 * * *`,`UTC`,17830944e5],[`digest-email`,`emails`,`*/15 * * * *`,`UTC`,17830359e5]]},webhooks:{columns:[`id`,`url`,`events`,`active`,`failures`,`created_at`],types:{id:`TEXT`,url:`TEXT`,events:`TEXT`,active:`INTEGER`,failures:`INTEGER`,created_at:`INTEGER`},rows:[[`wh_9c31`,`https://hooks.example.com/bunqueue`,`job:completed,job:failed`,1,0,1783034e6]]},job_results:{columns:[`job_id`,`result`,`stored_at`],types:{job_id:`TEXT`,result:`TEXT`,stored_at:`INTEGER`},rows:[[`019f252b-86da-7000-a9e3-6b1b74944d70`,`{"messageId":"smtp-7712"}`,1783035037999],[`019f252b-8769-7000-bc44-cfc168232f53`,`{"bytes":184320}`,1783035038220],[`019f252b-87d8-7000-8f0c-e8ca5fec7d18`,`{"rows":128}`,1783035038511],[`019f252b-8a02-7000-9b21-4c1f0b7e2a55`,`{"error":"handler threw"}`,1783035039300],[`demo-csv-formula`,`=SUM(1,2)`,1783035039400]]}};function r(e){return Object.hasOwn(n,e)?n[e]:void 0}var i={ok:!0,tables:Object.entries(n).map(([e,t])=>({name:e,rows:t.rows.length,columns:t.columns.length}))};function a(e){let t=r(e),n=t?.columns??[`id`,`data`],i=t?.types??{};return{ok:!0,table:e,columns:n.map((e,t)=>({name:e,type:i[e]??`TEXT`,notNull:t===0,defaultValue:null,primaryKey:t===0})),indexes:[{name:`idx_${e}_${n[0]}`,unique:!0,columns:[n[0]]}],sql:`CREATE TABLE ${e} (${n.map(e=>`${e} ${i[e]??`TEXT`}`).join(`, `)})`,rowCount:t?.rows.length??0}}var o={"flow-order-9a3f":{id:`flow-order-9a3f`,queue:`orders`,data:{name:`process-order`,orderId:`demo-9a3f`,__childrenIds:[`flow-charge-1`,`flow-ship-2`,`flow-notify-3`]},state:`waiting-children`,priority:1,parentId:null,childrenIds:[`flow-charge-1`,`flow-ship-2`,`flow-notify-3`],dependsOn:[`flow-charge-1`,`flow-ship-2`,`flow-notify-3`]},"flow-charge-1":{id:`flow-charge-1`,queue:`payments`,data:{name:`charge-payment`,__parentId:`flow-order-9a3f`,__parentQueue:`orders`},state:`completed`,priority:2,parentId:`flow-order-9a3f`,childrenIds:[],dependsOn:[]},"flow-ship-2":{id:`flow-ship-2`,queue:`shipping`,data:{name:`ship-order`,__parentId:`flow-order-9a3f`,__parentQueue:`orders`,__childrenIds:[`flow-label-4`]},state:`waiting-children`,priority:1,parentId:`flow-order-9a3f`,childrenIds:[`flow-label-4`],dependsOn:[`flow-label-4`]},"flow-label-4":{id:`flow-label-4`,queue:`shipping`,data:{name:`create-label`,__parentId:`flow-ship-2`,__parentQueue:`shipping`},state:`waiting`,priority:0,parentId:`flow-ship-2`,childrenIds:[],dependsOn:[]},"flow-notify-3":{id:`flow-notify-3`,queue:`emails`,data:{name:`notify-customer`,__parentId:`flow-order-9a3f`,__parentQueue:`orders`},state:`delayed`,priority:0,parentId:`flow-order-9a3f`,childrenIds:[],dependsOn:[`flow-charge-1`]}},s=[{id:`wf-order-2026-0804`,workflowName:`order-fulfillment`,state:`running`,currentNodeIndex:3,createdAt:178583892e4,updatedAt:178583904e4,definitionHash:`sha256:8a03c8e91db4d8f5`,input:{orderId:`ord_9a3f`,customerId:`cus_417`,total:129.9},steps:{validate:{status:`completed`,attempts:1,startedAt:1785838920100,completedAt:1785838920210,result:{valid:!0}},charge:{status:`completed`,attempts:1,startedAt:1785838920300,completedAt:1785838921120,compensatable:!0,idempotencyKey:`charge:ord_9a3f`,result:{paymentId:`pay_802`}},reserveInventory:{status:`completed`,attempts:2,startedAt:1785838921200,completedAt:1785838930600,compensatable:!0,result:{reservationId:`res_551`}},ship:{status:`running`,attempts:1,startedAt:178583904e4,childExecutionId:`wf-shipping-0804`}},resolvedSteps:[`validate`,`charge`,`reserveInventory`,`ship`],signals:{},decisions:{"branch:payment":`card`}},{id:`wf-refund-2026-0803`,workflowName:`refund-order`,state:`compensation-stuck`,currentNodeIndex:4,createdAt:17857512e5,updatedAt:178575132e4,rollbackStatus:`stuck`,failureReason:`Refund provider unavailable after 3 attempts`,definitionHash:`sha256:cc89ab41c1b2f011`,input:{orderId:`ord_772`,reason:`customer_request`},steps:{loadOrder:{status:`completed`,attempts:1,result:{paymentId:`pay_331`}},revokeShipment:{status:`completed`,attempts:1,compensatable:!0,compensation:{status:`compensated`,at:1785751300100}},refundPayment:{status:`failed`,attempts:3,compensatable:!0,error:`Provider timeout`,compensation:{status:`compensation-failed`,at:178575132e4,error:`Provider unavailable`}}},resolvedSteps:[`loadOrder`,`revokeShipment`,`refundPayment`],signals:{approved:{actor:`ops@example.com`}},decisions:{"branch:refund-method":`original-payment`}},{id:`wf-signup-2026-0802`,workflowName:`customer-onboarding`,state:`waiting`,currentNodeIndex:2,createdAt:17856648e5,updatedAt:178566492e4,input:{customerId:`cus_881`,plan:`pro`},steps:{createAccount:{status:`completed`,attempts:1,result:{accountId:`acc_881`}},sendVerification:{status:`completed`,attempts:1,result:{messageId:`msg_194`}}},resolvedSteps:[`createAccount`,`sendVerification`],signals:{}}],c=[{id:`wf-month-close-2026-07`,workflowName:`month-end-close`,state:`completed`,currentNodeIndex:4,createdAt:17855784e5,updatedAt:1785578465e3,archivedAt:17856648e5,rollbackStatus:`not-applicable`,definitionHash:`sha256:78b6fd851d8b32a1`,input:{period:`2026-07`},steps:{lockPeriod:{status:`completed`,attempts:1,result:{locked:!0}},aggregate:{status:`completed`,attempts:1,result:{entries:1842}},publish:{status:`completed`,attempts:1,result:{reportId:`rep_2026_07`}}},resolvedSteps:[`lockPeriod`,`aggregate`,`publish`],signals:{},decisions:{}},{id:`wf-import-legacy-441`,workflowName:`legacy-import`,state:`failed`,currentNodeIndex:1,createdAt:1785492e6,updatedAt:1785492009e3,archivedAt:17856648e5,rollbackStatus:`not-applicable`,failureReason:`Input schema rejected row 441`,input:{batch:`legacy-2026-07`},steps:{validate:{status:`failed`,attempts:1,error:`Invalid customer reference at row 441`}},resolvedSteps:[`validate`],signals:{},decisions:{}}];function l(e,t){if(e[1]===`stats`){let e={running:0,waiting:0,completed:0,failed:0,compensating:0,"compensation-stuck":0};for(let t of s){let n=t.state;e[n]++}return{ok:!0,available:!0,activeTotal:s.length,archiveTotal:c.length,states:e,workflowNames:[...new Set([...s,...c].map(e=>String(e.workflowName)))].sort()}}let n=new URLSearchParams(t),r=n.get(`kind`)===`archive`?c:s;if(e[1]){let t=r.find(t=>t.id===decodeURIComponent(e[1]));return t?{ok:!0,execution:t}:{ok:!1,error:`Workflow execution not found`}}let i=n.get(`workflowName`),a=n.get(`state`),o=Number(n.get(`offset`)??0),l=Number(n.get(`limit`)??50),u=r.filter(e=>(!i||e.workflowName===i)&&(!a||e.state===a||a===`compensation`&&(e.state===`compensating`||e.state===`compensation-stuck`)));return{ok:!0,available:!0,executions:u.slice(o,o+l).map(({input:e,steps:t,resolvedSteps:n,signals:r,decisions:i,...a})=>a),total:u.length,limit:l,offset:o}}var u=t=>e[t]?.jobs??[],d=e.oneJob.job,f=[...u(`emailsWaiting`),...u(`emailsCompleted`),...d?[d]:[]],p=[`emails`,`image-processing`,`reports`,`notifications`];function m(e,t,n){let r={...e,name:typeof e.name==`string`?e.name:`${t}-job`,...e.state===`completed`&&!Object.hasOwn(e,`returnvalue`)?{returnvalue:{ok:!0}}:{},...e.state===`failed`&&!Object.hasOwn(e,`failedReason`)?{failedReason:`Demo job exhausted its retries`}:{}};return t===`emails`?r:{...r,id:`${t}-${String(e.id).slice(-12)}-${n}`,queue:t}}function h(e){if(o[e])return o[e];let t=f.find(t=>t.id===e);if(t)return m(t,`emails`,0);for(let t of p){let n=f.map((e,n)=>m(e,t,n)).find(t=>t.id===e);if(n)return n}return{...d??{queue:`emails`,state:`failed`},id:e,customId:e.startsWith(`demo-custom:`)?e.slice(12):null}}var g={command:`bunx bunqueue@2.8.57 start`,httpPort:6790,tcpPort:6791,dataPath:`./data/bunqueue.db`,extraEnv:{LOG_LEVEL:`info`}},_=()=>({status:`running`,pid:42317,startedAt:Date.now()-36e5,exitCode:null,healthy:!0,version:`2.8.57`,config:g,runningConfig:g,db:{path:g.dataPath,exists:!0,size:2621440,walSize:49152,shmSize:32768,totalSize:2703360,mtimeMs:Date.now()-12e3}}),v=()=>{let e=Date.now();return{ok:!0,data:{workers:[{id:`wrk-9f21c3d0`,name:`worker-emails-1`,queues:[`emails`,`notifications`],concurrency:10,hostname:`worker-01`,pid:3411,status:`active`,registeredAt:e-54e5,lastSeen:e-4e3,activeJobs:0,processedJobs:1284,failedJobs:6,currentJob:null,uptime:54e5},{id:`wrk-4b77aa19`,name:`worker-media-1`,queues:[`image-processing`],concurrency:4,hostname:`worker-02`,pid:3987,status:`active`,registeredAt:e-51e5,lastSeen:e-2e3,activeJobs:2,processedJobs:342,failedJobs:1,currentJob:`019f252b-8769-7000-bc44-cfc168232f53`,uptime:51e5},{id:`wrk-c05e881f`,name:`worker-batch-1`,queues:[`reports`],concurrency:2,hostname:`worker-02`,pid:4102,status:`stale`,registeredAt:e-9e6,lastSeen:e-12e5,activeJobs:0,processedJobs:57,failedJobs:0,currentJob:null,uptime:78e5}],stats:{total:3,active:2,totalProcessed:1683,totalFailed:7,activeJobs:2}}}},y=()=>{let e=Date.now(),t=(t,n,r,i)=>({seq:t,ts:e-n,stream:r,line:i});return{lines:[t(1,8e3,`sys`,`starting: bunx bunqueue@2.8.57 start`),t(2,7800,`stdout`,`bunqueue v2.8.57 — HTTP :6790, TCP :6791`),t(3,7600,`stdout`,`SQLite ready (WAL) at ./data/bunqueue.db`),t(4,5e3,`stdout`,`worker registered: image-processing`),t(5,1200,`stdout`,`health ok — 4 queues, 34 jobs`)]}},b=e=>e.replace(/[A-Z]/g,e=>e.toLowerCase());function x(e,t,n=!1){let i=r(e);if(n&&!i)throw Error(`No such table: ${e}`);let a=i?.columns??[`id`,`data`],o=i?.rows??[],s=new URLSearchParams(t);if(n){let e=new Set([`orderBy`,`dir`,`fcol`,`fop`,`fval`]);for(let t of s.keys()){if(!e.has(t))throw Error(`Unknown database export option: ${t}`);if(s.getAll(t).length!==1)throw Error(`Duplicate database export option: ${t}`)}}let c=s.get(`orderBy`);if(n&&c===``)throw Error(`Database export orderBy must not be empty`);let l=c||null,u=s.get(`dir`);if(n&&u!==null&&u!==`asc`&&u!==`desc`)throw Error(`Database export dir must be "asc" or "desc"`);let d=u===`desc`?`desc`:`asc`,f=s.get(`fcol`),p=s.get(`fop`),m=s.get(`fval`);if(n&&(f!==null||p!==null||m!==null)&&(!f||!m||p!==`contains`&&p!==`eq`&&p!==`ne`))throw Error(`Database export filter requires valid fcol, fop and fval values`);let h=f&&m?{column:f,op:p===`eq`?`eq`:p===`ne`?`ne`:`contains`,value:m}:null,g=h?a.indexOf(h.column):-1;if(h&&g<0&&n)throw Error(`No such column: ${h.column}`);let _=h&&g>=0?o.filter(e=>{let t=e[g];if(t==null)return!1;let n=String(t);return h.op===`eq`?n===h.value:h.op===`ne`?n!==h.value:b(n).includes(b(h.value))}):o,v=l?a.indexOf(l):-1;if(l&&v<0&&n)throw Error(`No such column: ${l}`);return{table:e,columns:a,rows:v>=0?[..._].sort((e,t)=>{let n=e[v],r=t[v],i=n==null?r==null?0:-1:r==null?1:n<r?-1:+(n>r);return d===`desc`?-i:i}):_,orderBy:v>=0?l:null,dir:d,filter:g>=0?h:null}}function S(e,t){let n=x(e,t),{columns:r,orderBy:i,dir:a,filter:o}=n,s=new URLSearchParams(t),c=(e,t)=>{let n=Number(e);return e!==null&&Number.isFinite(n)&&n>=0?n:t},l=c(s.get(`limit`),50),u=c(s.get(`offset`),0),d=n.rows.slice(u,u+(l>0?l:n.rows.length));return{ok:!0,table:e,columns:r,rows:d,rowids:d.map((e,t)=>u+t+1),truncatedCells:d.map(e=>e.map(()=>!1)),total:n.rows.length,limit:l,offset:u,orderBy:i,dir:a,filter:o}}var C=2e5,w=16*1024*1024,T=2e3,E=2e3;function D(e){let t,n=!1;if(e==null)t=``;else if(typeof e==`string`)t=new TextEncoder().encode(e).byteLength>T?`${[...e].slice(0,E).join(``)}…`:e,n=!0;else if(typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`)t=String(e);else if(e instanceof Uint8Array)t=`<blob ${e.byteLength} B>`,n=!0;else throw Error(`Database export produced an unsupported SQLite value`);let r=n&&/^[=+\-@\t\r]/.test(t)?`'${t}`:t;return/[",\r\n]/.test(r)?`"${r.replaceAll(`"`,`""`)}"`:r}function O(e,t){try{let n=x(e,t,!0),r=new TextEncoder,i=[],a=0,o=0,s=null,c=e=>{let t=r.encode(e);return a+t.byteLength>w?!1:(i.push(t),a+=t.byteLength,!0)};if(!c(n.columns.map(D).join(`,`)))throw Error(`Database export header exceeds the ${w}-byte export limit`);for(let e of n.rows){if(o>=C){s=`rows`;break}if(!c(`\r\n${e.map(D).join(`,`)}`)){s=`bytes`;break}o++}let l=new Uint8Array(a),u=0;for(let e of i)l.set(e,u),u+=e.byteLength;return new Response(l,{status:200,headers:{"Content-Type":`text/csv; charset=utf-8`,"Content-Length":String(a),"Cache-Control":`no-store`,"X-Content-Type-Options":`nosniff`,"X-Bunqueue-Db-Export-Version":`1`,"X-Bunqueue-Db-Export-Table":encodeURIComponent(n.table),"X-Bunqueue-Db-Export-Rows":String(o),"X-Bunqueue-Db-Export-Bytes":String(a),"X-Bunqueue-Db-Export-Cap":s??`none`,"Access-Control-Expose-Headers":`Content-Length, X-Bunqueue-Db-Export-Version, X-Bunqueue-Db-Export-Table, X-Bunqueue-Db-Export-Rows, X-Bunqueue-Db-Export-Bytes, X-Bunqueue-Db-Export-Cap`}})}catch(e){return new Response(JSON.stringify({ok:!1,error:e instanceof Error?e.message:String(e)}),{status:400,headers:{"Content-Type":`application/json`}})}}var k=new Set([`events`,`health`,`ping`,`stats`,`storage`,`dashboard`,`queues`,`jobs`,`crons`,`webhooks`,`workers`,`dlq`,`control`,`db`,`workflows`,`gc`,`heapstats`]);function A(n,r,o){let s=n.replace(/\/+$/,``)||`/`,c=s.split(`/`).filter(Boolean);if(c[0]===`control`)return c[1]===`logs`?y():c[1]===`config`?g:_();if(c[0]===`workflows`)return l(c,o);if(r!==`GET`)return s===`/gc`?{ok:!0,before:{heapUsed:118,heapTotal:176,rss:214},after:{heapUsed:94,heapTotal:150,rss:181}}:s.endsWith(`/db/query`)?{ok:!0,columns:[`note`],rows:[[`This is the demo. Queries run against a static in-memory sample.`]],rowCount:1,truncated:!1,ms:.4}:s.endsWith(`/jobs`)||s.endsWith(`/jobs/bulk`)?{ok:!0,id:`demo-${c.join(`-`)}`,ids:[`demo-1`]}:{ok:!0};if(s===`/workers`)return v();if(s===`/heapstats`)return{ok:!0,memory:{heapUsed:94,heapTotal:150,rss:181},heap:{objectCount:486204,protectedCount:1284,globalCount:312},collections:{},topObjectTypes:[{type:`Structure`,count:42118},{type:`Object`,count:31064},{type:`Function`,count:18902},{type:`string`,count:12447},{type:`Array`,count:8021}]};let u={"/health":`health`,"/ping":`ping`,"/stats":`stats`,"/storage":`storage`,"/dashboard":`dashboard`,"/dashboard/queues":`dashboardQueues`,"/queues/summary":`queuesSummary`,"/crons":`crons`,"/webhooks":`webhooks`,"/dlq/stats":`dlqStats`};if(u[s])return e[u[s]];if(c[0]===`dashboard`&&c[1]===`queues`&&c[2])return e[`detail_${c[2]}`]??e.detail_emails;if(c[0]===`queues`&&c[1]){let t=decodeURIComponent(c[1]);if(c[2]===`counts`)return e[`counts_${t}`]??{ok:!0,counts:{}};if(c[2]===`dlq`&&c[3]===`stats`)return{ok:!0,stats:t===`emails`?{total:2,byReason:{timeout:1,max_attempts:1}}:{total:0,byReason:{}}};if(c[2]===`dlq`)return e[`dlq_${t}`]??{ok:!0,entries:[],total:0};if(c[2]===`stall-config`)return{ok:!0,config:{enabled:!0,stallInterval:3e4,maxStalls:3,gracePeriod:5e3}};if(c[2]===`dlq-config`)return{ok:!0,config:{autoRetry:!1,autoRetryInterval:6e4,maxAutoRetries:3,maxAge:null,maxEntries:1e3}};if(c[2]===`jobs`&&c[3]===`list`){let e=new URLSearchParams(o),n=(e.get(`states`)??e.get(`state`)??``).split(`,`).map(e=>e.trim()).filter(Boolean),r=e=>n.length===0||n.includes(String(e))||n.includes(`waiting`)&&e===`prioritized`;return{ok:!0,jobs:f.filter(e=>r(e.state)).map((e,n)=>m(e,t,n))}}}if(c[0]===`jobs`&&c[1]){let e=decodeURIComponent(c[1]);if(c[1]===`custom`&&c[2])return{ok:!0,job:h(`demo-custom:${decodeURIComponent(c[2])}`)};if(c[2]===`result`)return{ok:!0,id:e,result:{sent:!0,provider:`demo`}};if(c[2]===`logs`){let e=[`[info] picked up by worker-emails-1`,`[info] connecting to smtp.example.com:587`,`[error] SMTP 550: mailbox unavailable — will retry with backoff`];return{ok:!0,data:{logs:e,count:e.length}}}if(!c[2])return{ok:!0,job:h(e)}}if(c[0]===`db`){if(c[1]===`info`)return t;if(c[1]===`tables`&&!c[2])return i;if(c[1]===`tables`&&c[2]){let e=decodeURIComponent(c[2]);return c[3]===`schema`?a(e):c[3]===`cell`?{ok:!0,value:`demo cell value`}:S(e,o)}}return{ok:!0}}var j=e=>new Response(JSON.stringify(e),{status:200,headers:{"Content-Type":`application/json`}});function M(e){let t=new TextEncoder,n=[`emails`,`image-processing`,`reports`,`notifications`],r=[`job:active`,`job:completed`,`job:completed`,`job:waiting`,`job:failed`,`job:active`],i=new ReadableStream({start(i){let a=0,o=!1,s,c=()=>{if(!o){o=!0,clearInterval(s);try{i.close()}catch{}}};i.enqueue(t.encode(`data: {"connected":true}
2
+
3
+ `)),s=setInterval(()=>{if(o)return;let e=r[a%r.length],s=n[a%n.length],l=JSON.stringify({queue:s,jobId:`demo-${a}`,name:s,timestamp:Date.now()});try{i.enqueue(t.encode(`event: ${e}\ndata: ${l}\n\n`))}catch{c()}a+=1},1400),e?.aborted?c():e?.addEventListener(`abort`,c,{once:!0})}});return new Response(i,{status:200,headers:{"Content-Type":`text/event-stream`}})}var N=!1;function P(){if(N||typeof window>`u`)return()=>void 0;N=!0;let e=window.fetch,t=e.bind(window),n=`/`.replace(/\/+$/,``),r=(e,r)=>{let i=e instanceof Request?e:null,a=typeof e==`string`?e:e instanceof URL?e.href:i?.url??``,o=(r?.method??i?.method??`GET`).toUpperCase(),s;try{s=new URL(a,window.location.origin)}catch{return t(e,r)}let c=s.pathname;n&&(c===n||c.startsWith(`${n}/`))&&(c=c.slice(n.length)||`/`),(c===`/api`||c.startsWith(`/api/`))&&(c=c.slice(4)||`/`);let l=c.split(`/`).filter(Boolean)[0];if(!l||!k.has(l))return t(e,r);if(l===`events`)return Promise.resolve(M(r?.signal??i?.signal));if(o===`GET`){let e=c.replace(/\/+$/,``).split(`/`).filter(Boolean);if(e.length===4&&e[0]===`db`&&e[1]===`tables`&&e[3]===`export`)return Promise.resolve(O(decodeURIComponent(e[2]),s.search))}return Promise.resolve(j(A(c,o,s.search)))};window.fetch=r;let i=!1;return()=>{i||(i=!0,window.fetch===r&&(window.fetch=e),N=!1)}}export{P as installDemo};
@@ -1 +1 @@
1
- var e=/^[a-zA-Z0-9_\-.:]+$/;function t(t){return typeof t!=`string`||!t?`Queue name must not be empty`:t.length>256?`Queue name must be 256 characters or fewer`:e.test(t)?t===`.`||t===`..`?`Queue name must not be "." or ".." because URL parsers treat it as a path traversal segment`:null:`Queue names may contain only letters, numbers, underscore, hyphen, dot, and colon`}function n(e){let n=t(e);if(n)throw TypeError(n);return encodeURIComponent(e)}function r(e,t=`Resource ID`,n=1024){return typeof e!=`string`||!e?`${t} must not be empty`:e.length>n?`${t} must be ${n} characters or fewer`:e===`.`||e===`..`?`${t} must not be "." or ".." because URL parsers treat it as a path traversal segment`:null}function i(e,t=`Resource ID`,n=1024){let i=r(e,t,n);if(i)throw TypeError(i);return encodeURIComponent(e)}var a=/^[A-Za-z0-9._~!$&'()*+,;=:@%[\]|-]+$/,o=/^(?:\.|%2e){1,2}$/i;function s(e){return typeof e!=`string`||!e?`ID must not be empty`:e.length>1024?`ID must be 1024 characters or fewer`:a.test(e)?o.test(e)?`ID must not resolve to "." or ".." because URL parsers treat it as a path traversal segment`:null:`Bunqueue v2.8.55 HTTP can address only opaque path-safe IDs (letters, numbers, and . _ ~ ! $ & ' ( ) * + , ; = : @ % [ ] | -); spaces, slash, backslash, ? and # are unsupported`}function c(e){let t=s(e);if(t)throw TypeError(t);return e}function l(e){let n=t(e);if(n)throw TypeError(`Invalid Bunqueue queue name for the event stream: ${n}`);return e}export{c as a,s as i,i as n,t as o,l as r,n as s,r as t};
1
+ var e=/^[a-zA-Z0-9_\-.:]+$/;function t(t){return typeof t!=`string`||!t?`Queue name must not be empty`:t.length>256?`Queue name must be 256 characters or fewer`:e.test(t)?t===`.`||t===`..`?`Queue name must not be "." or ".." because URL parsers treat it as a path traversal segment`:null:`Queue names may contain only letters, numbers, underscore, hyphen, dot, and colon`}function n(e){let n=t(e);if(n)throw TypeError(n);return encodeURIComponent(e)}function r(e,t=`Resource ID`,n=1024){return typeof e!=`string`||!e?`${t} must not be empty`:e.length>n?`${t} must be ${n} characters or fewer`:e===`.`||e===`..`?`${t} must not be "." or ".." because URL parsers treat it as a path traversal segment`:null}function i(e,t=`Resource ID`,n=1024){let i=r(e,t,n);if(i)throw TypeError(i);return encodeURIComponent(e)}var a=/^[A-Za-z0-9._~!$&'()*+,;=:@%[\]|-]+$/,o=/^(?:\.|%2e){1,2}$/i;function s(e){return typeof e!=`string`||!e?`ID must not be empty`:e.length>1024?`ID must be 1024 characters or fewer`:a.test(e)?o.test(e)?`ID must not resolve to "." or ".." because URL parsers treat it as a path traversal segment`:null:`Bunqueue v2.8.57 HTTP can address only opaque path-safe IDs (letters, numbers, and . _ ~ ! $ & ' ( ) * + , ; = : @ % [ ] | -); spaces, slash, backslash, ? and # are unsupported`}function c(e){let t=s(e);if(t)throw TypeError(t);return e}function l(e){let n=t(e);if(n)throw TypeError(`Invalid Bunqueue queue name for the event stream: ${n}`);return e}export{c as a,s as i,i as n,t as o,l as r,n as s,r as t};
@@ -1 +1 @@
1
- import{r as e}from"./cn-CMFYpumL.js";import{g as t}from"./react-vendor-Bjui4wS4.js";import{o as n}from"./connectionStore-Cd9-3Fw0.js";import{k as r,st as i}from"./index-Bn2R06qm.js";var a=e(t(),1),o=1e3,s={push:[],complete:[],fail:[],depth:[]},c=()=>typeof performance<`u`?performance.now():Date.now(),l=(e,t)=>`${e}\u0000${t}`;function u(e=60){let t=l(n(e=>e.baseUrl),n(e=>e.token)),[u,d]=(0,a.useState)(s),[f,p]=(0,a.useState)(null),[m,h]=(0,a.useState)(null),g=(0,a.useRef)(0),_=(0,a.useRef)(0),v=(0,a.useRef)(t),y=v.current===t;return(0,a.useEffect)(()=>{let n=++g.current,a=new AbortController,l=!1;v.current!==t&&(v.current=t,d(s),p(null),h(null),_.current=0);let u=r(()=>typeof document<`u`&&document.hidden),f=async()=>{if(l||!u())return;l=!0;let t=c();try{let[r,c]=await Promise.all([i.overview({signal:a.signal}),i.stats({signal:a.signal})]);if(a.signal.aborted||g.current!==n)return;let l=r?.stats,u=r?.throughput,f=c?.stats;if(!l||!u||!f)throw Error(`malformed telemetry body`);if(![l.waiting,l.active,l.delayed,l.completed,l.dlq,l.totalPushed,l.totalPulled,l.totalCompleted,l.totalFailed,l.uptime,u.pushPerSec,u.completePerSec,u.failPerSec,f.waiting,f.prioritized,f.active,f.delayed,f[`waiting-children`]].every(e=>typeof e==`number`&&Number.isFinite(e)))throw Error(`malformed telemetry numeric metrics`);let m=u.pushPerSec,v=u.completePerSec,y=u.failPerSec,b=f.waiting+f.prioritized+f.active+f.delayed+f[`waiting-children`],x=_.current>0&&t-_.current>4*o;_.current=t,p(r),h(null),d(t=>{let n=x?s:t;return{push:[...n.push,m].slice(-e),complete:[...n.complete,v].slice(-e),fail:[...n.fail,y].slice(-e),depth:[...n.depth,b].slice(-e)}})}catch(e){!a.signal.aborted&&g.current===n&&h(e)}finally{l=!1}};f();let m=setInterval(f,o);return()=>{clearInterval(m),a.abort(),g.current===n&&(g.current+=1)}},[e,t]),y?{...u,latest:f,error:m}:{...s,latest:null,error:null}}function d(e,t=o){if(e.length<2)return{slope:0,label:`steady`,draining:!1};let n=e.length,r=(n-1)/2,i=e.reduce((e,t)=>e+t,0)/n,a=0,s=0;for(let t=0;t<n;t++)a+=(t-r)*(e[t]-i),s+=(t-r)**2;let c=s===0?0:a/s,l=t>0?o/t*c:c,u=l<-.05;return{slope:l,label:u?`draining`:l>.05?`accumulating`:`steady`,draining:u}}export{u as n,d as t};
1
+ import{r as e}from"./cn-CMFYpumL.js";import{g as t}from"./react-vendor-Bjui4wS4.js";import{o as n}from"./connectionStore-Cd9-3Fw0.js";import{k as r,st as i}from"./index-CAtsVmyh.js";var a=e(t(),1),o=1e3,s={push:[],complete:[],fail:[],depth:[]},c=()=>typeof performance<`u`?performance.now():Date.now(),l=(e,t)=>`${e}\u0000${t}`;function u(e=60){let t=l(n(e=>e.baseUrl),n(e=>e.token)),[u,d]=(0,a.useState)(s),[f,p]=(0,a.useState)(null),[m,h]=(0,a.useState)(null),g=(0,a.useRef)(0),_=(0,a.useRef)(0),v=(0,a.useRef)(t),y=v.current===t;return(0,a.useEffect)(()=>{let n=++g.current,a=new AbortController,l=!1;v.current!==t&&(v.current=t,d(s),p(null),h(null),_.current=0);let u=r(()=>typeof document<`u`&&document.hidden),f=async()=>{if(l||!u())return;l=!0;let t=c();try{let[r,c]=await Promise.all([i.overview({signal:a.signal}),i.stats({signal:a.signal})]);if(a.signal.aborted||g.current!==n)return;let l=r?.stats,u=r?.throughput,f=c?.stats;if(!l||!u||!f)throw Error(`malformed telemetry body`);if(![l.waiting,l.active,l.delayed,l.completed,l.dlq,l.totalPushed,l.totalPulled,l.totalCompleted,l.totalFailed,l.uptime,u.pushPerSec,u.completePerSec,u.failPerSec,f.waiting,f.prioritized,f.active,f.delayed,f[`waiting-children`]].every(e=>typeof e==`number`&&Number.isFinite(e)))throw Error(`malformed telemetry numeric metrics`);let m=u.pushPerSec,v=u.completePerSec,y=u.failPerSec,b=f.waiting+f.prioritized+f.active+f.delayed+f[`waiting-children`],x=_.current>0&&t-_.current>4*o;_.current=t,p(r),h(null),d(t=>{let n=x?s:t;return{push:[...n.push,m].slice(-e),complete:[...n.complete,v].slice(-e),fail:[...n.fail,y].slice(-e),depth:[...n.depth,b].slice(-e)}})}catch(e){!a.signal.aborted&&g.current===n&&h(e)}finally{l=!1}};f();let m=setInterval(f,o);return()=>{clearInterval(m),a.abort(),g.current===n&&(g.current+=1)}},[e,t]),y?{...u,latest:f,error:m}:{...s,latest:null,error:null}}function d(e,t=o){if(e.length<2)return{slope:0,label:`steady`,draining:!1};let n=e.length,r=(n-1)/2,i=e.reduce((e,t)=>e+t,0)/n,a=0,s=0;for(let t=0;t<n;t++)a+=(t-r)*(e[t]-i),s+=(t-r)**2;let c=s===0?0:a/s,l=t>0?o/t*c:c,u=l<-.05;return{slope:l,label:u?`draining`:l>.05?`accumulating`:`steady`,draining:u}}export{u as n,d as t};
package/dist/index.html CHANGED
@@ -46,12 +46,12 @@
46
46
  content="Fully drive a bunqueue server from one UI: queues, jobs, DLQ, cron, webhooks, workers, and start/stop/restart. Live demo, no signup."
47
47
  />
48
48
  <meta name="twitter:image" content="https://egeominotti.github.io/bunqueue-dashboard/og.png" />
49
- <script type="module" crossorigin src="/assets/index-Bn2R06qm.js"></script>
49
+ <script type="module" crossorigin src="/assets/index-CAtsVmyh.js"></script>
50
50
  <link rel="modulepreload" crossorigin href="/assets/cn-CMFYpumL.js">
51
51
  <link rel="modulepreload" crossorigin href="/assets/react-vendor-Bjui4wS4.js">
52
52
  <link rel="modulepreload" crossorigin href="/assets/connectionStore-Cd9-3Fw0.js">
53
- <link rel="modulepreload" crossorigin href="/assets/upstreamPaths-nG8N1XAz.js">
54
- <link rel="stylesheet" crossorigin href="/assets/index-BWoUj86M.css">
53
+ <link rel="modulepreload" crossorigin href="/assets/upstreamPaths-D_LPsv7b.js">
54
+ <link rel="stylesheet" crossorigin href="/assets/index-BCNzbhhD.css">
55
55
  </head>
56
56
  <body>
57
57
  <div id="root"></div>