bunqueue-dashboard 1.0.4 → 1.1.0

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 (68) hide show
  1. package/README.md +173 -360
  2. package/agent/queue/validation.ts +6 -3
  3. package/dist/.vite/manifest.json +177 -82
  4. package/dist/assets/AddJob-jmrtBSrz.js +3 -0
  5. package/dist/assets/{Alerts-Lyzbq0qw.js → Alerts-DrwYvhbk.js} +1 -1
  6. package/dist/assets/{Benchmark-B4NfYkAi.js → Benchmark-7ULYlqmK.js} +1 -1
  7. package/dist/assets/{BulkAddJobs-BAN5wT8A.js → BulkAddJobs-C2sxF-St.js} +3 -3
  8. package/dist/assets/{Cron-Bz46oVXB.js → Cron-BY9EGj2n.js} +1 -1
  9. package/dist/assets/{CronManager-Cl5RW2cB.js → CronManager-CZvC_uox.js} +1 -1
  10. package/dist/assets/Database-B1Dx5OV2.js +3 -0
  11. package/dist/assets/{Diagnostics-DuzTPfyb.js → Diagnostics-D1LEl6O4.js} +1 -1
  12. package/dist/assets/{Dlq-D8s-NhV2.js → Dlq-CPxeigKg.js} +1 -1
  13. package/dist/assets/{DlqControl-DDxRMM8i.js → DlqControl-Dhcz7LY7.js} +1 -1
  14. package/dist/assets/DlqPro-CW80tQdN.js +1 -0
  15. package/dist/assets/FailureDiagnostics-DkLd6szC.js +1 -0
  16. package/dist/assets/{Fleet-BAziMWfo.js → Fleet-CsscadVQ.js} +1 -1
  17. package/dist/assets/Flows-Bzq3onQ3.js +2 -0
  18. package/dist/assets/GlobalSearch-CeCvA6Tm.js +1 -0
  19. package/dist/assets/{JobInspector-BXuXxDwR.js → JobInspector-nTUU1VOU.js} +2 -2
  20. package/dist/assets/{Jobs-pQBmffni.js → Jobs-OwKndzhg.js} +1 -1
  21. package/dist/assets/{JobsPro-k20Pas24.js → JobsPro-CSHP2AYC.js} +1 -1
  22. package/dist/assets/{Logs-DA4JFvpM.js → Logs-CiYuY8ix.js} +1 -1
  23. package/dist/assets/{LogsPro-hna5L6sP.js → LogsPro-BA-wZ8Dr.js} +1 -1
  24. package/dist/assets/{McpServer-Cqem-L3z.js → McpServer-BvOGxNnE.js} +1 -1
  25. package/dist/assets/MetricHistory-Dmu-XqaO.js +1 -0
  26. package/dist/assets/{Metrics-CJ9dW0me.js → Metrics-BF38GgYm.js} +1 -1
  27. package/dist/assets/{MetricsPro-BslYrx1A.js → MetricsPro-DHPmT4Md.js} +1 -1
  28. package/dist/assets/MonitoringSetup-60_ib3rf.js +3 -0
  29. package/dist/assets/{Overview-Cmg_2NAt.js → Overview-DBLxV_vL.js} +1 -1
  30. package/dist/assets/{Pagination-WVfHLHDS.js → Pagination-CmVnmrFt.js} +1 -1
  31. package/dist/assets/{QueueActions-BQf1-g5m.js → QueueActions-uNol2MD7.js} +1 -1
  32. package/dist/assets/QueueControl-DbQwvvtX.js +1 -0
  33. package/dist/assets/{QueueDetail-DfRY4jS4.js → QueueDetail-CA33Kebs.js} +1 -1
  34. package/dist/assets/{QueueDetailPro-CpSMSo8A.js → QueueDetailPro-AUf6FktH.js} +1 -1
  35. package/dist/assets/{Queues-C5lElTjp.js → Queues-C_KeSyQs.js} +1 -1
  36. package/dist/assets/{QueuesOverview-DRohFtuC.js → QueuesOverview-DQ6ta4wA.js} +1 -1
  37. package/dist/assets/{S3Backup-DUHmp2Xw.js → S3Backup-BgPBXJVZ.js} +1 -1
  38. package/dist/assets/{S3BackupPro-Cr2ZJZkw.js → S3BackupPro-BUzcmhnj.js} +3 -3
  39. package/dist/assets/{ServerControl-m58ooJT2.js → ServerControl-WUZjdjPX.js} +1 -1
  40. package/dist/assets/{Settings-DXsjoOqD.js → Settings-Dwh79r-B.js} +1 -1
  41. package/dist/assets/{Usage-CY2uEJEu.js → Usage-DeWofLpa.js} +1 -1
  42. package/dist/assets/{UsagePro-DtlB1dJc.js → UsagePro-BQJWWwW3.js} +1 -1
  43. package/dist/assets/{Webhooks-B_GwTCBW.js → Webhooks-DS3xmbEi.js} +1 -1
  44. package/dist/assets/{Workers-Bu8aJlZf.js → Workers-DyAVvmbR.js} +1 -1
  45. package/dist/assets/{WorkersPro-C6gNYGfo.js → WorkersPro-BJgab7of.js} +1 -1
  46. package/dist/assets/Workflows-BLXlNIxO.js +1 -0
  47. package/dist/assets/bqQueueOperationsRepository-BXoBdFQc.js +1 -0
  48. package/dist/assets/exportFile-B6puuPQx.js +2 -0
  49. package/dist/assets/index-D7iDxOBp.css +1 -0
  50. package/dist/assets/index-DwsYIYdu.js +8 -0
  51. package/dist/assets/{install-hFu5e6YM.js → install-DVeS3d31.js} +2 -2
  52. package/dist/assets/{package-Bb3FkjoS.js → package-D11d0FBn.js} +1 -1
  53. package/dist/assets/targetClient-DvzvwnGp.js +1 -0
  54. package/dist/assets/useDiscovery-BbWXsy6R.js +1 -0
  55. package/dist/assets/{useThroughputSeries-BN5QmKPt.js → useThroughputSeries-DQo7JaT-.js} +1 -1
  56. package/dist/favicon.svg +11 -22
  57. package/dist/index.html +3 -2
  58. package/package.json +1 -1
  59. package/scripts/embedded.gen.ts +146 -132
  60. package/dist/assets/AddJob-Dgjlhzn2.js +0 -3
  61. package/dist/assets/Database-CeUKS6Nf.js +0 -3
  62. package/dist/assets/DlqPro-xj-MM6u8.js +0 -1
  63. package/dist/assets/Flows-BFUMTSWv.js +0 -2
  64. package/dist/assets/QueueControl-BiMM0jLp.js +0 -1
  65. package/dist/assets/Workflows-ClF4YzhW.js +0 -1
  66. package/dist/assets/exportFile-C7xhE8Yh.js +0 -2
  67. package/dist/assets/index-DR8flo6r.css +0 -1
  68. package/dist/assets/index-X_fHGbXZ.js +0 -8
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{f as t,h as n,l as r,t as i}from"./react-vendor-08inPAVO.js";import{a}from"./connectionStore-B946Fhuv.js";import{t as o}from"./upstreamPaths-DQeKSxGc.js";import{p as s}from"./targetClient-DvzvwnGp.js";import{r as c,t as l}from"./StatusBadge-D-mexaga.js";import{F as u,I as d,O as f,_ as p,b as m,d as h,g,o as _,s as v,v as y,x as b,y as x}from"./index-DwsYIYdu.js";import{n as S,t as C}from"./controlConnectionEpoch-x9VjrWgN.js";import{t as w}from"./useControlActionGuard-Bx5MkufG.js";var T={"/workflows":{id:`overview`,label:`Overview`,description:`The complete durable command center for Bunqueue Workflow Engine.`,kind:`active`,state:``},"/workflows/executions":{id:`executions`,label:`Executions`,description:`Inspect every active execution, step record, decision, and nested run.`,kind:`active`,state:``},"/workflows/waiting":{id:`waiting`,label:`Waiting & Signals`,description:`Focus on parked executions and their durable signal payloads.`,kind:`active`,state:`waiting`,lockKind:!0,lockState:!0},"/workflows/compensation":{id:`compensation`,label:`Compensation`,description:`See running, completed, skipped, failed, and parked saga compensation outcomes.`,kind:`active`,state:`compensation`,lockKind:!0,lockState:!0},"/workflows/archive":{id:`archive`,label:`Archive`,description:`Audit terminal executions retained by Workflow Engine archival.`,kind:`archive`,state:``,lockKind:!0}};function ee(e){return T[e]??T[`/workflows`]}function te(e,t){return e?.source===`link`||e&&t.some(t=>t.id===e.id)?e:t[0]?{id:t[0].id,source:`page`}:null}var E=e(n(),1),ne=[`waiting`,`failed`,`compensation-stuck`];async function re(e,t){let[n,r]=await Promise.all([e.stats(),e.list(t)]);return{stats:n,page:r}}async function ie(e,t){let[n,...r]=await Promise.all([e.stats(),...ne.map(n=>e.list({kind:`active`,state:n,limit:t,offset:0}))]),i=r.flatMap(e=>e.executions).sort(ae).slice(0,t);return{stats:n,page:{ok:r.every(e=>e.ok),available:r.every(e=>e.available),executions:i,total:r.reduce((e,t)=>e+t.total,0),limit:t,offset:0}}}function ae(e,t){return t.createdAt-e.createdAt||t.id.localeCompare(e.id)}var D=new Set([`summary`,`history`,`payloads`]),oe=new Set([`running`,`waiting`,`completed`,`failed`,`compensating`,`compensation-stuck`,`compensation`]);function O(e,t){let n=e.get(`kind`),r=t.id===`executions`&&(n===`active`||n===`archive`)?n:t.kind,i=t.id===`overview`?``:ce(e.get(`workflow`)),a=ue(e.get(`state`),t),s=t.id===`overview`?0:le(e.get(`offset`)),c=e.get(`execution`),l=c&&o(c,`Workflow execution id`)===null?c:null,u=e.get(`tab`),d=t.id===`overview`||t.id===`executions`;return{kind:r,workflowName:i,state:a,offset:s,executionId:l,tab:l&&d&&D.has(u)?u:`summary`}}function k(e,t){let n=new URLSearchParams;return e.id===`executions`&&t.kind===`archive`&&n.set(`kind`,`archive`),e.id!==`overview`&&t.workflowName&&n.set(`workflow`,t.workflowName),j(e)&&t.state&&n.set(`state`,t.state),e.id!==`overview`&&t.offset>0&&n.set(`offset`,String(t.offset)),t.executionId&&n.set(`execution`,t.executionId),t.executionId&&t.tab!==`summary`&&(e.id===`overview`||e.id===`executions`)&&n.set(`tab`,t.tab),n}function A(e,t,n){return k(t,{...O(e,t),...n})}function se(e){return D.has(e)}function ce(e){return e&&e.length<=256?e:``}function le(e){if(!e||!/^(0|[1-9]\d*)$/.test(e))return 0;let t=Number(e);return Number.isSafeInteger(t)&&t<=1e6?Math.floor(t/25)*25:0}function ue(e,t){return j(t)?e?t.id===`archive`?e===`completed`||e===`failed`?e:``:oe.has(e)?e:``:``:t.state}function j(e){return e.id===`executions`||e.id===`archive`}var de=e=>`${e}?target=${encodeURIComponent(a())}`,M=e=>({method:`POST`,headers:e===void 0?void 0:{"Content-Type":`application/json`},body:e===void 0?void 0:JSON.stringify(e)});async function N(e,t){return(await s(de(e),t)).result}var P={status:()=>N(`/workflows/runtime`),initialize:()=>N(`/workflows/runtime/initialize`,M()),reload:()=>N(`/workflows/runtime/reload`,M()),start:async(e,t)=>(await N(`/workflows/start`,M({workflowName:e,input:t}))).run,signal:async(e,t,n)=>{await N(`/workflows/${encodeURIComponent(e)}/signal`,M({event:t,payload:n}))},recover:async()=>(await N(`/workflows/recover`,M())).recovered,resumeCompensation:async e=>{await N(`/workflows/${encodeURIComponent(e)}/resume-compensation`,M())},abandonCompensation:async e=>{await N(`/workflows/${encodeURIComponent(e)}/abandon-compensation`,M())},archive:async(e,t)=>(await N(`/workflows/archive`,M({maxAgeMs:e,states:t}))).affected,cleanup:async(e,t)=>(await N(`/workflows/cleanup`,M({maxAgeMs:e,states:t}))).affected},fe={stats:()=>d.workflows.stats(),list:e=>d.workflows.list(e),get:(e,t)=>d.workflows.get(e,t)};function pe(e){let[n,r]=t(),i=n.toString(),a=(0,E.useMemo)(()=>O(new URLSearchParams(i),e),[i,e]),o=(0,E.useMemo)(()=>k(e,a).toString(),[e,a]),s=(0,E.useRef)(null);(0,E.useEffect)(()=>{o!==i&&r(o,{replace:!0})},[o,i,r]);let c=(0,E.useCallback)((t,n=!1)=>{r(n=>A(n,e,t),{replace:n})},[e,r]),l=(0,E.useCallback)((e,t=!1)=>{s.current=e,c({executionId:e?.id??null,tab:`summary`},t)},[c]),u=a.executionId?{id:a.executionId,source:s.current?.id===a.executionId?s.current.source:`link`}:null;return{...a,selected:u,update:c,select:l}}function F(e){let t=S(),n=`workflow-command:${e.operationGroup}`,r=w(n),i=(0,E.useMemo)(()=>({local:e.scopeKey,connectionEpoch:t}),[t,e.scopeKey]),a=(0,E.useRef)(e);a.current=e;let o=(0,E.useRef)(null),s=(0,E.useRef)(!0),c=(0,E.useRef)(i),l=(0,E.useRef)(0);if(!Object.is(c.current,i)){let e=c.current.connectionEpoch!==t;c.current=i,l.current+=1,e&&(o.current=null)}let[u,d]=(0,E.useState)(()=>I(i,t));(0,E.useEffect)(()=>(s.current=!0,()=>{s.current=!1,l.current+=1,o.current=null}),[]);let f=(e,t)=>s.current&&e===l.current&&t===C(),p=async(e,c)=>{if(o.current||t!==C())return;let u=r.begin(n);if(!u)return;let p=Symbol(`workflow-command`);o.current=p;let m=l.current,h=t,{onApplied:g,onSucceeded:_}=a.current;try{d({connectionEpoch:t,scope:i,busy:e,error:``,receipt:null});let n=await c();if(!f(m,h))return;d({connectionEpoch:t,scope:i,busy:e,error:``,receipt:{label:e,value:n}});try{_?.(e,n)}catch{}try{await g?.()}catch(e){f(m,h)&&d(t=>({...t,error:`Command succeeded; refresh failed: ${L(e)}`}))}}catch(n){f(m,h)&&d({connectionEpoch:t,scope:i,busy:e,error:L(n),receipt:null})}finally{u.finish(),o.current===p&&(o.current=null,s.current&&h===C()&&d(e=>({...e,busy:``})))}},m=Object.is(u.scope,i)?u:I(i,t);return{busy:u.connectionEpoch===t?u.busy:``,error:m.error,result:m.receipt?.value,succeeded:m.receipt?.label??``,run:p,clearResult:()=>d(e=>({...e,receipt:null}))}}function I(e,t){return{connectionEpoch:t,scope:e,busy:``,error:``,receipt:null}}function L(e){return e instanceof Error?e.message:String(e)}var R=i(),z=e=>JSON.stringify(e,null,2)??`null`;function B({value:e,empty:t=`None`}){return e==null||typeof e==`object`&&Object.keys(e).length===0?(0,R.jsx)(`p`,{className:`text-xs text-faint`,children:t}):(0,R.jsx)(`pre`,{className:`max-h-80 overflow-auto whitespace-pre-wrap break-words rounded-lg border border-line bg-surface-2 p-3 font-mono text-xs leading-5 text-muted`,children:z(e)})}function V({label:e,value:t}){return(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`dt`,{className:`text-faint`,children:e}),(0,R.jsx)(`dd`,{className:`mt-0.5 break-words text-muted`,children:t})]})}var me=36e5;function he({repository:e=P,onApplied:t}){let[n,r]=(0,E.useState)(`720`),[i,a]=(0,E.useState)(!0),[o,s]=(0,E.useState)(!0),c=F({operationGroup:`maintenance`,scopeKey:(0,E.useMemo)(()=>Symbol(`workflow-maintenance:${n.length}:${i}:${o}`),[i,o,n]),onApplied:t}),l=[...i?[`completed`]:[],...o?[`failed`]:[]],u=n.trim()===``?NaN:Number(n),d=Number.isFinite(u)&&u>=0&&l.length>0,f=t=>{if(!d)return;let n=t===`archive`?`Archive ${l.join(` and `)} workflows at least ${u} hours old?`:`Permanently delete ${l.join(` and `)} workflows at least ${u} hours old from the active execution store? Archive records are not deleted.`;if(!window.confirm(n))return;let r=Math.round(u*me);c.run(t,async()=>({operation:t,affected:t===`archive`?await e.archive(r,l):await e.cleanup(r,l)}))};return(0,R.jsxs)(`section`,{className:`mb-5 rounded-lg border border-line bg-surface p-4`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:`Retention operations`}),(0,R.jsx)(`p`,{className:`mt-1 text-xs text-faint`,children:`Archive moves terminal runs into retention. Cleanup permanently deletes eligible terminal runs from the active store only; archive records remain intact.`})]}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-end gap-3`,children:[(0,R.jsxs)(`label`,{className:`text-xs text-faint`,children:[`Minimum age (hours)`,(0,R.jsx)(`input`,{"aria-label":`Workflow retention age hours`,type:`number`,min:`0`,step:`1`,value:n,onChange:e=>r(e.target.value),className:`mt-1 block h-9 w-32 rounded-lg border border-line bg-surface-2 px-3 text-sm text-fg`})]}),(0,R.jsxs)(`label`,{className:`flex h-9 items-center gap-2 text-xs text-muted`,children:[(0,R.jsx)(`input`,{type:`checkbox`,checked:i,onChange:e=>a(e.target.checked)}),`Completed`]}),(0,R.jsxs)(`label`,{className:`flex h-9 items-center gap-2 text-xs text-muted`,children:[(0,R.jsx)(`input`,{type:`checkbox`,checked:o,onChange:e=>s(e.target.checked)}),`Failed`]})]})]}),(0,R.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:[(0,R.jsx)(`button`,{type:`button`,disabled:!d||!!c.busy,onClick:()=>f(`archive`),className:`rounded-md bg-accent px-3 py-2 text-xs font-medium text-accent-fg disabled:opacity-40`,children:`Archive eligible`}),(0,R.jsx)(`button`,{type:`button`,disabled:!d||!!c.busy,onClick:()=>f(`cleanup`),className:`rounded-md border border-danger/40 px-3 py-2 text-xs text-danger disabled:opacity-40`,children:`Delete eligible`})]}),c.error&&(0,R.jsx)(`p`,{role:`alert`,className:`mt-3 text-xs text-danger`,children:c.error}),c.result!==void 0&&(0,R.jsx)(`div`,{className:`mt-3`,children:(0,R.jsx)(B,{value:c.result})})]})}var ge=[[`Active`,`activeTotal`,`text-fg`],[`Running`,`running`,`text-blue-400`],[`Waiting`,`waiting`,`text-warning`],[`Completed`,`completed`,`text-success`],[`Failed`,`failed`,`text-danger`],[`Compensating`,`compensating`,`text-violet-400`],[`Stuck`,`compensation-stuck`,`text-danger`]];function _e({stats:e}){return(0,R.jsx)(`dl`,{className:`mb-4 grid grid-cols-2 divide-x divide-y divide-line overflow-hidden rounded-lg border border-line bg-surface sm:grid-cols-4 xl:grid-cols-7 xl:divide-y-0`,children:ge.map(([t,n,r])=>(0,R.jsxs)(`div`,{className:`px-3 py-2.5 first:border-0`,children:[(0,R.jsx)(`dt`,{className:`text-[10px] font-medium uppercase tracking-wider text-faint`,children:t}),(0,R.jsx)(`dd`,{className:c(`mt-1 tnum font-mono text-lg font-semibold`,r),children:n===`activeTotal`?e.activeTotal:e.states[n]})]},n))})}function ve(e,t){let n=S(),r=(0,E.useRef)(null),i=F({operationGroup:`runtime-initialization`,scopeKey:e,onApplied:t.refetch});return(0,E.useEffect)(()=>{if(t.data?.ready&&(r.current=null),!t.data?.needsInitialization||t.error||i.busy)return;let a=JSON.stringify([n,t.data.moduleName]);(r.current?.repository!==e||r.current.key!==a)&&(r.current={repository:e,key:a},i.run(`initialize`,()=>e.initialize()))},[i,n,e,t.data,t.error]),i}function ye({repository:e=P,onApplied:t}){let[n,r]=(0,E.useState)(``),[i,a]=(0,E.useState)(`{}`),o=(0,E.useMemo)(()=>Symbol(`workflow-runtime:${n.length}:${i.length}`),[i,n]),s=f(()=>e.status(),[e],{intervalMs:5e3}),c=F({operationGroup:`runtime`,scopeKey:o,onApplied:async()=>{await s.refetch(),await t?.()}}),l=ve(e,s),u=s.data?.ready===!0;return(0,R.jsxs)(`section`,{className:`mb-5 overflow-hidden rounded-lg border border-line bg-surface`,children:[(0,R.jsxs)(`header`,{className:`flex flex-wrap items-start justify-between gap-3 border-b border-line px-4 py-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:`Workflow runtime`}),(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-faint`,children:`Registered application handlers stay in the agent-side runtime; commands never edit SQLite directly.`})]}),(0,R.jsx)(be,{ready:u,configured:s.data?.configured===!0,unavailable:!(!s.error||s.data)})]}),s.data?.configured&&(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-x-5 gap-y-1 border-b border-line px-4 py-2 text-[11px] text-faint`,children:[(0,R.jsxs)(`span`,{children:[`Module`,` `,(0,R.jsx)(`strong`,{className:`font-mono font-medium text-muted`,children:s.data.moduleName??`—`})]}),(0,R.jsxs)(`span`,{children:[`Queue`,` `,(0,R.jsx)(`strong`,{className:`font-mono font-medium text-muted`,children:s.data.queueName??`—`})]}),(0,R.jsxs)(`span`,{children:[`Concurrency`,` `,(0,R.jsx)(`strong`,{className:`font-mono font-medium text-muted`,children:s.data.concurrency??`—`})]})]}),s.error&&s.data&&(0,R.jsx)(m,{message:`Runtime status refresh failed; showing the last snapshot.`,onRetry:s.refetch}),s.error&&!s.data&&(0,R.jsx)(`div`,{className:`p-4`,children:(0,R.jsx)(y,{error:s.error,onRetry:s.refetch})}),(0,R.jsxs)(`div`,{className:`grid gap-5 p-4 lg:grid-cols-[minmax(0,1fr)_auto]`,children:[(0,R.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,R.jsxs)(`label`,{className:`text-xs text-faint`,children:[`Registered workflow`,(0,R.jsx)(`input`,{"aria-label":`Registered workflow`,list:`workflow-runtime-names`,value:n,onChange:e=>r(e.target.value),className:`mt-1 h-9 w-full rounded-lg border border-line bg-surface-2 px-3 text-sm text-fg`}),(0,R.jsx)(`datalist`,{id:`workflow-runtime-names`,children:s.data?.workflowNames.map(e=>(0,R.jsx)(`option`,{value:e},e))})]}),(0,R.jsxs)(`label`,{className:`text-xs text-faint`,children:[`Input JSON`,(0,R.jsx)(`textarea`,{"aria-label":`Workflow input JSON`,value:i,onChange:e=>a(e.target.value),className:`mt-1 min-h-20 w-full resize-y rounded-lg border border-line bg-surface-2 p-2 font-mono text-xs text-fg`})]})]}),(0,R.jsxs)(`div`,{className:`flex flex-wrap content-start gap-2 lg:w-48 lg:flex-col`,children:[(0,R.jsx)(`button`,{type:`button`,disabled:!u||!n.trim()||!!c.busy,onClick:()=>{let t;try{t=JSON.parse(i)}catch{c.run(`start`,async()=>{throw Error(`Workflow input must be valid JSON.`)});return}c.run(`start`,()=>e.start(n.trim(),t))},className:`rounded-md bg-accent px-3 py-2 text-xs font-medium text-accent-fg disabled:opacity-40`,children:c.busy===`start`?`Starting…`:`Start execution`}),(0,R.jsx)(`button`,{type:`button`,disabled:!u||!!c.busy,onClick:()=>{window.confirm(`Recover every orphaned workflow using the registered idempotent handlers?`)&&c.run(`recover`,()=>e.recover())},className:`rounded-md border border-line px-3 py-2 text-xs text-muted disabled:opacity-40`,children:`Recover orphaned`}),(0,R.jsx)(`button`,{type:`button`,disabled:!s.data?.configured||!!c.busy||!!l.busy,onClick:()=>void c.run(`reload`,()=>e.reload()),className:`rounded-md border border-line px-3 py-2 text-xs text-muted disabled:opacity-40`,children:`Reload definitions`})]})]}),!s.loading&&!s.error&&!s.data?.configured&&(0,R.jsxs)(`p`,{className:`border-t border-line px-4 py-3 text-xs text-warning`,children:[`Set `,(0,R.jsx)(`code`,{children:`BUNQUEUE_WORKFLOW_MODULE`}),` to an absolute module path in Server → Extra environment, then start the managed server.`]}),s.data?.error&&(0,R.jsx)(`p`,{role:`alert`,className:`border-t border-line px-4 py-3 text-xs text-danger`,children:s.data.error}),l.error&&!u&&(0,R.jsx)(`p`,{role:`alert`,className:`border-t border-line px-4 py-3 text-xs text-danger`,children:l.error}),c.error&&(0,R.jsx)(`p`,{role:`alert`,className:`border-t border-line px-4 py-3 text-xs text-danger`,children:c.error}),c.result!==void 0&&(0,R.jsx)(`div`,{className:`border-t border-line p-4`,children:(0,R.jsx)(B,{value:c.result})})]})}function be({ready:e,configured:t,unavailable:n}){return(0,R.jsx)(`span`,{className:e?`rounded-full bg-success/10 px-2 py-1 text-[11px] text-success`:`rounded-full bg-warning/10 px-2 py-1 text-[11px] text-warning`,children:e?`Handlers loaded`:n?`Status unavailable`:t?`Unavailable`:`Not configured`})}var xe=[``,`running`,`waiting`,`completed`,`failed`,`compensating`,`compensation-stuck`,`compensation`];function Se({section:e,kind:t,workflowName:n,state:r,stats:i,total:a,onKind:o,onWorkflowName:s,onState:c}){return(0,R.jsx)(b,{className:`mb-5`,children:(0,R.jsxs)(`div`,{className:`flex flex-wrap items-end gap-3`,children:[e.lockKind?(0,R.jsx)(H,{label:`Store`,value:`${e.kind}${e.kind===`archive`&&i?` · ${i.archiveTotal}`:``}`,capitalize:!0}):(0,R.jsx)(Ce,{kind:t,archiveTotal:i?.archiveTotal,onChange:o}),(0,R.jsxs)(`label`,{className:`text-xs text-faint`,children:[`Workflow`,(0,R.jsxs)(`select`,{value:n,onChange:e=>s(e.target.value),className:`mt-1 block h-9 min-w-48 rounded-lg border border-line bg-surface-2 px-3 text-sm text-fg`,children:[(0,R.jsx)(`option`,{value:``,children:`All workflows`}),i?.workflowNames.map(e=>(0,R.jsx)(`option`,{value:e,children:e},e))]})]}),e.lockState?(0,R.jsx)(H,{label:`State scope`,value:e.state===`compensation`?`Compensating + stuck`:e.state}):(0,R.jsx)(we,{state:r,onChange:c}),a!==void 0&&(0,R.jsxs)(`span`,{className:`ml-auto text-xs text-faint`,children:[a,` execution`,a===1?``:`s`]})]})})}function Ce({kind:e,archiveTotal:t,onChange:n}){return(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`span`,{className:`mb-1 block text-xs text-faint`,children:`Store`}),(0,R.jsx)(`div`,{className:`flex rounded-lg border border-line p-0.5`,children:[`active`,`archive`].map(r=>(0,R.jsxs)(`button`,{type:`button`,"aria-pressed":e===r,onClick:()=>n(r),className:c(`rounded-md px-3 py-1.5 text-xs capitalize`,e===r?`bg-surface-2 text-fg`:`text-muted hover:text-fg`),children:[r,r===`archive`&&t!==void 0?` (${t})`:``]},r))})]})}function we({state:e,onChange:t}){return(0,R.jsxs)(`label`,{className:`text-xs text-faint`,children:[`State`,(0,R.jsx)(`select`,{value:e,onChange:e=>t(e.target.value),className:`mt-1 block h-9 min-w-44 rounded-lg border border-line bg-surface-2 px-3 text-sm text-fg`,children:xe.map(e=>(0,R.jsx)(`option`,{value:e,children:e===`compensation`?`All compensation`:e||`All states`},e||`all`))})]})}function H({label:e,value:t,capitalize:n=!1}){return(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`span`,{className:`mb-1 block text-xs text-faint`,children:e}),(0,R.jsx)(`span`,{className:c(`inline-flex h-9 items-center rounded-lg border border-line bg-surface-2 px-3 text-xs text-fg`,n&&`capitalize`),children:t})]})}function Te({label:e=`Workflow`,value:t,stats:n,onChange:r}){return(0,R.jsxs)(`label`,{className:`text-xs text-faint`,children:[e,(0,R.jsxs)(`select`,{value:t,onChange:e=>r(e.target.value),className:`mt-1 block h-9 min-w-52 rounded-lg border border-line bg-surface-2 px-3 text-sm text-fg`,children:[(0,R.jsx)(`option`,{value:``,children:`All workflows`}),n?.workflowNames.map(e=>(0,R.jsx)(`option`,{value:e,children:e},e))]})]})}function Ee(e){return e.section.id===`overview`?null:e.section.id===`executions`?(0,R.jsx)(Se,{...e}):(0,R.jsxs)(`div`,{className:`mb-5 flex items-end gap-4 rounded-lg border border-line bg-surface px-4 py-3`,children:[(0,R.jsx)(Te,{value:e.workflowName,stats:e.stats,onChange:e.onWorkflowName}),e.section.id===`archive`&&(0,R.jsxs)(`label`,{className:`text-xs text-faint`,children:[`Outcome`,(0,R.jsxs)(`select`,{value:e.state,onChange:t=>e.onState(t.target.value),className:`mt-1 block h-9 min-w-36 rounded-lg border border-line bg-surface-2 px-3 text-sm text-fg`,children:[(0,R.jsx)(`option`,{value:``,children:`All outcomes`}),(0,R.jsx)(`option`,{value:`completed`,children:`Completed`}),(0,R.jsx)(`option`,{value:`failed`,children:`Failed`})]})]}),(0,R.jsxs)(`span`,{className:`ml-auto pb-2 text-xs text-faint`,children:[e.total??0,` `,e.section.id===`archive`?`records`:`executions`]})]})}function De(e){let t=[{id:`execution-started`,at:e.createdAt,title:`Execution started`,detail:e.workflowName,status:`running`,category:`execution`}];for(let[n,r]of Object.entries(e.steps))t.push(...Oe(n,r));for(let n of Object.keys(e.signals))t.push({id:`signal:${n}`,title:`Signal persisted: ${n}`,detail:`The store does not expose an exact signal timestamp.`,category:`signal`});return e.state!==`running`&&e.state!==`waiting`&&t.push({id:`execution-settled`,at:e.updatedAt,title:`Execution ${e.state}`,detail:e.failureReason,status:e.state,category:`execution`}),t.sort(ke)}function Oe(e,t){let n=[];return t.startedAt!==void 0&&n.push({id:`step:${e}:started`,at:t.startedAt,title:`Step started: ${e}`,detail:t.attempts?`Attempt ${t.attempts}`:void 0,status:`running`,category:`step`}),(t.completedAt!==void 0||t.status===`failed`)&&n.push({id:`step:${e}:settled`,at:t.completedAt,title:`Step ${t.status}: ${e}`,detail:t.error,status:t.status,category:`step`}),t.compensation&&n.push({id:`step:${e}:compensation`,at:t.compensation.at,title:`Compensation ${t.compensation.status}: ${e}`,detail:t.compensation.error,status:t.compensation.status,category:`compensation`}),n}function ke(e,t){return e.at===void 0&&t.at===void 0?e.id.localeCompare(t.id):e.at===void 0?1:t.at===void 0?-1:e.at-t.at||e.id.localeCompare(t.id)}function U({execution:e}){let t=De(e);return(0,R.jsx)(`ol`,{className:`divide-y divide-line/70 border-y border-line/70`,children:t.map((e,n)=>(0,R.jsxs)(`li`,{className:`grid grid-cols-[28px_minmax(0,1fr)] gap-3 py-3`,children:[(0,R.jsxs)(`div`,{className:`relative flex justify-center`,"aria-hidden":`true`,children:[(0,R.jsx)(`span`,{className:`mt-1.5 size-2 rounded-full border-2 border-surface bg-accent ring-1 ring-line`}),n<t.length-1&&(0,R.jsx)(`span`,{className:`absolute top-5 bottom-[-13px] w-px bg-line`})]}),(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,R.jsx)(`span`,{className:`break-words text-sm font-medium text-fg`,children:e.title}),e.status&&(0,R.jsx)(l,{status:e.status})]}),(0,R.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-x-3 text-xs text-faint`,children:[(0,R.jsx)(`span`,{className:`capitalize`,children:e.category}),(0,R.jsx)(`span`,{children:e.at===void 0?`Timestamp unavailable`:_(e.at)})]}),e.detail&&(0,R.jsx)(`p`,{className:`mt-1 whitespace-pre-wrap text-xs text-muted`,children:e.detail})]})]},e.id))})}var W={now:Date.now,subscribe:e=>{let t=window.setInterval(e,1e3);return()=>window.clearInterval(t)}};function Ae({since:e,clock:t=W}){let n=G(t);return(0,R.jsx)(R.Fragment,{children:v(Math.max(0,n-e))})}function G(e=W,t=!0){let[n,r]=(0,E.useState)(()=>e.now());return(0,E.useEffect)(()=>{if(r(e.now()),t)return e.subscribe(()=>r(e.now()))},[e,t]),n}function K({error:e,onRetry:t}){return e?(0,R.jsx)(m,{message:`Execution refresh failed; showing the last persisted snapshot.`,onRetry:t}):null}async function q(e,t){await Promise.all([e(),t?.()])}function je({repository:e,id:t,pollIntervalMs:n=1e4}){let{data:r,error:i,loading:a,refetch:o}=f(()=>e.get(t,`archive`),[e,t],{intervalMs:n});if(a&&!r)return(0,R.jsx)(x,{label:`Loading audit record…`});if(i&&!r)return(0,R.jsx)(y,{error:i,onRetry:o});let s=r?.execution;return s?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(K,{error:i,onRetry:o}),(0,R.jsxs)(`section`,{className:`overflow-hidden rounded-lg border border-line bg-surface`,children:[(0,R.jsxs)(`header`,{className:`flex items-start justify-between gap-3 border-b border-line px-4 py-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`text-[11px] uppercase tracking-wider text-faint`,children:`Immutable audit record`}),(0,R.jsx)(`h2`,{className:`mt-1 break-all font-mono text-sm font-semibold text-fg`,children:s.id})]}),(0,R.jsx)(l,{status:s.state})]}),(0,R.jsxs)(`dl`,{className:`grid grid-cols-2 gap-3 border-b border-line p-4 text-xs sm:grid-cols-3`,children:[(0,R.jsx)(V,{label:`Workflow`,value:s.workflowName}),(0,R.jsx)(V,{label:`Runtime`,value:v(s.updatedAt-s.createdAt)}),(0,R.jsx)(V,{label:`Archived`,value:s.archivedAt?_(s.archivedAt):`Unavailable`}),(0,R.jsx)(V,{label:`Definition hash`,value:s.definitionHash??`Unavailable`}),(0,R.jsx)(V,{label:`Final node`,value:String(s.currentNodeIndex)}),(0,R.jsx)(V,{label:`Final transition`,value:_(s.updatedAt)})]}),(0,R.jsx)(`div`,{className:`p-4`,children:(0,R.jsx)(U,{execution:s})})]})]}):null}function Me({repository:e,executionId:t,stuck:n,onApplied:r}){let i=F({operationGroup:`compensation`,scopeKey:`${t}:${n}`,onApplied:r,onSucceeded:e=>u.success(e===`resume`?`Compensation resumed`:`Compensation abandoned`,t)});return n?(0,R.jsxs)(`div`,{className:`border-t border-line p-4`,children:[(0,R.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wider text-faint`,children:`Operator decision`}),(0,R.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:`Retry after fixing the reversal, or explicitly abandon the remaining compensation steps.`}),(0,R.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,R.jsx)(`button`,{type:`button`,disabled:!!i.busy,onClick:()=>{window.confirm(`Retry the stuck compensation for ${t}? Handlers must be idempotent.`)&&i.run(`resume`,()=>e.resumeCompensation(t))},className:`rounded-md bg-accent px-3 py-2 text-xs font-medium text-accent-fg disabled:opacity-40`,children:`Resume compensation`}),(0,R.jsx)(`button`,{type:`button`,disabled:!!i.busy,onClick:()=>{window.confirm(`Abandon remaining compensation for ${t}? This is irreversible.`)&&i.run(`abandon`,()=>e.abandonCompensation(t))},className:`rounded-md border border-danger/40 px-3 py-2 text-xs text-danger disabled:opacity-40`,children:`Abandon remainder`})]}),i.error&&(0,R.jsx)(`p`,{role:`alert`,className:`mt-3 text-xs text-danger`,children:i.error}),i.succeeded&&(0,R.jsx)(`p`,{role:`status`,className:`mt-3 text-xs text-success`,children:i.succeeded===`resume`?`Resume command accepted; recovery state refreshed.`:`Abandon command accepted; recovery state refreshed.`}),i.result!==void 0&&(0,R.jsx)(`div`,{className:`mt-3`,children:(0,R.jsx)(B,{value:i.result})})]}):null}function Ne({repository:e,controlRepository:t,id:n,onApplied:r,pollIntervalMs:i=5e3}){let{data:a,error:o,loading:s,refetch:c}=f(()=>e.get(n,`active`),[e,n],{intervalMs:i});if(s&&!a)return(0,R.jsx)(x,{label:`Loading recovery plan…`});if(o&&!a)return(0,R.jsx)(y,{error:o,onRetry:c});let u=a?.execution;if(!u)return null;let d=Object.entries(u.steps).filter(([,e])=>e.compensatable||e.compensation);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(K,{error:o,onRetry:c}),(0,R.jsxs)(`section`,{className:`overflow-hidden rounded-lg border border-line bg-surface`,children:[(0,R.jsxs)(`header`,{className:`flex items-start justify-between gap-3 border-b border-line px-4 py-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`text-[11px] uppercase tracking-wider text-violet-400`,children:`Recovery plan`}),(0,R.jsx)(`h2`,{className:`mt-1 break-all font-mono text-sm font-semibold text-fg`,children:u.id})]}),(0,R.jsx)(l,{status:u.state})]}),(0,R.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 border-b border-line p-4 text-xs`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`text-faint`,children:`Compensation pivot`}),(0,R.jsx)(`div`,{className:`mt-1 text-fg`,children:u.committedAt===void 0?`Not committed`:`Node ${u.committedAt}`})]}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`text-faint`,children:`Rollback state`}),(0,R.jsx)(`div`,{className:`mt-1 text-fg`,children:u.rollbackStatus??u.state})]})]}),u.failureReason&&(0,R.jsx)(`div`,{role:`alert`,className:`border-b border-danger/30 bg-danger/[0.06] px-4 py-3 text-xs text-danger`,children:u.failureReason}),(0,R.jsxs)(`div`,{className:`p-4`,children:[(0,R.jsx)(`h3`,{className:`mb-3 text-xs font-semibold uppercase tracking-wider text-faint`,children:`Compensation ledger`}),d.length?(0,R.jsx)(`ol`,{className:`space-y-2`,children:d.reverse().map(([e,t])=>(0,R.jsxs)(`li`,{className:`grid gap-2 rounded-md border border-line px-3 py-2 text-xs sm:grid-cols-[1fr_auto]`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-mono text-fg`,children:e}),(0,R.jsx)(`div`,{className:`mt-1 text-faint`,children:t.compensation?.error??`Compensation handler registered`})]}),(0,R.jsxs)(`div`,{className:`text-right text-muted`,children:[t.compensation?t.compensation.status:`pending`,t.compensation?.at?(0,R.jsx)(`div`,{className:`mt-1 text-[10px] text-faint`,children:_(t.compensation.at)}):null]})]},e))}):(0,R.jsx)(`p`,{className:`text-sm text-muted`,children:`No compensatable step was persisted.`})]}),(0,R.jsx)(Me,{repository:t,executionId:n,stuck:u.state===`compensation-stuck`,onApplied:()=>q(c,r)},n)]})]})}function Pe({execution:e}){return(0,R.jsxs)(`div`,{className:`space-y-5`,children:[(0,R.jsx)(J,{title:`Input`,value:e.input}),(0,R.jsx)(J,{title:`Signals`,value:e.signals}),(0,R.jsx)(J,{title:`Resolved steps`,value:e.resolvedSteps}),(0,R.jsx)(J,{title:`Decisions`,value:e.decisions})]})}function J({title:e,value:t}){return(0,R.jsxs)(`section`,{children:[(0,R.jsx)(`h3`,{className:`mb-2 text-xs font-semibold uppercase tracking-wider text-faint`,children:e}),(0,R.jsx)(B,{value:t})]})}function Fe({steps:e,onSelect:t}){let n=Object.entries(e);return n.length===0?(0,R.jsx)(`p`,{className:`text-xs text-faint`,children:`No persisted step records.`}):(0,R.jsx)(`ol`,{className:`space-y-3`,children:n.map(([e,r],i)=>(0,R.jsx)(Ie,{name:e,step:r,last:i===n.length-1,onSelect:t},e))})}function Ie({name:e,step:t,last:n,onSelect:r}){let i=t.startedAt!==void 0&&t.completedAt!==void 0?t.completedAt-t.startedAt:void 0;return(0,R.jsxs)(`li`,{className:`relative grid grid-cols-[18px_1fr] gap-3`,children:[(0,R.jsxs)(`div`,{className:`flex flex-col items-center`,"aria-hidden":`true`,children:[(0,R.jsx)(`span`,{className:`mt-1 size-2.5 rounded-full bg-current text-accent`}),!n&&(0,R.jsx)(`span`,{className:`mt-1 w-px flex-1 bg-line`})]}),(0,R.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-line bg-surface-2 p-3`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,R.jsx)(`span`,{translate:`no`,className:`break-all font-mono text-sm font-medium text-fg`,children:e}),(0,R.jsx)(l,{status:t.status})]}),(0,R.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-x-4 gap-y-1 text-xs text-faint`,children:[t.attempts!==void 0&&(0,R.jsxs)(`span`,{children:[t.attempts,` attempt`,t.attempts===1?``:`s`]}),i!==void 0&&(0,R.jsx)(`span`,{children:v(i)}),t.occurrence!==void 0&&(0,R.jsxs)(`span`,{children:[`Occurrence `,t.occurrence]}),t.loopIndex!==void 0&&(0,R.jsxs)(`span`,{children:[`Loop index `,t.loopIndex]}),t.compensatable&&(0,R.jsx)(`span`,{children:`Compensatable`})]}),t.idempotencyKey&&(0,R.jsxs)(`div`,{className:`mt-2 break-all font-mono text-[11px] text-faint`,children:[`Idempotency: `,t.idempotencyKey]}),t.childExecutionId&&(0,R.jsxs)(`button`,{type:`button`,onClick:()=>r(t.childExecutionId),className:`mt-2 break-all font-mono text-xs text-accent hover:underline`,children:[`Child execution: `,t.childExecutionId]}),t.error&&(0,R.jsx)(`p`,{role:`alert`,className:`mt-2 whitespace-pre-wrap text-xs text-danger`,children:t.error}),t.compensation&&(0,R.jsxs)(`div`,{className:`mt-3 rounded-md border border-line px-3 py-2 text-xs`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`span`,{className:`text-faint`,children:`Compensation`}),(0,R.jsx)(l,{status:t.compensation.status}),(0,R.jsx)(`span`,{className:`text-faint`,children:_(t.compensation.at)})]}),t.compensation.error&&(0,R.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-danger`,children:t.compensation.error})]}),(0,R.jsx)(Le,{step:t})]})]})}function Le({step:e}){return(0,R.jsxs)(R.Fragment,{children:[Object.hasOwn(e,`result`)&&(0,R.jsx)(Y,{label:`Result`,value:e.result}),Object.hasOwn(e,`loopItem`)&&(0,R.jsx)(Y,{label:`Loop item`,value:e.loopItem})]})}function Y({label:e,value:t}){return(0,R.jsxs)(`details`,{className:`mt-3`,children:[(0,R.jsx)(`summary`,{className:`cursor-pointer text-xs text-muted`,children:e}),(0,R.jsx)(`div`,{className:`mt-2`,children:(0,R.jsx)(B,{value:t})})]})}function Re({execution:e,onSelect:t}){let n=Object.values(e.steps),r=n.filter(e=>e.status===`completed`).length;return(0,R.jsxs)(`div`,{className:`space-y-5`,children:[(0,R.jsxs)(`dl`,{className:`grid grid-cols-2 gap-x-4 gap-y-3 border-b border-line pb-5 text-xs sm:grid-cols-3`,children:[(0,R.jsx)(V,{label:`Current node`,value:String(e.currentNodeIndex)}),(0,R.jsx)(V,{label:`Step progress`,value:`${r}/${n.length} completed`}),(0,R.jsx)(V,{label:`Duration`,value:v(e.updatedAt-e.createdAt)}),(0,R.jsx)(V,{label:`Started`,value:_(e.createdAt)}),(0,R.jsx)(V,{label:`Last transition`,value:_(e.updatedAt)}),(0,R.jsx)(V,{label:`Rollback`,value:e.rollbackStatus??`Not started`})]}),e.failureReason&&(0,R.jsxs)(`div`,{role:`alert`,className:`border-l-2 border-danger bg-danger/[0.06] px-3 py-2 text-xs text-danger`,children:[(0,R.jsx)(`div`,{className:`mb-1 font-medium`,children:`Failure`}),(0,R.jsx)(`p`,{className:`whitespace-pre-wrap`,children:e.failureReason})]}),(0,R.jsx)(ze,{execution:e,onSelect:t}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h3`,{className:`mb-3 text-xs font-semibold uppercase tracking-wider text-faint`,children:`Step state`}),(0,R.jsx)(Fe,{steps:e.steps,onSelect:t})]})]})}function ze({execution:e,onSelect:t}){return!e.parentExecutionId&&!e.definitionHash&&e.committedAt===void 0?null:(0,R.jsxs)(`div`,{className:`grid gap-3 border-b border-line pb-5 text-xs sm:grid-cols-2`,children:[e.parentExecutionId&&(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`text-faint`,children:`Parent execution`}),(0,R.jsx)(`button`,{type:`button`,onClick:()=>t(e.parentExecutionId),className:`mt-1 break-all font-mono text-accent hover:underline`,children:e.parentExecutionId})]}),e.definitionHash&&(0,R.jsx)(V,{label:`Definition hash`,value:e.definitionHash}),e.committedAt!==void 0&&(0,R.jsx)(V,{label:`Compensation pivot`,value:`Node ${e.committedAt}`}),(0,R.jsx)(`div`,{className:`flex items-end`,children:(0,R.jsx)(l,{status:e.state})})]})}var Be=[{id:`summary`,label:`Summary`},{id:`history`,label:`History`},{id:`payloads`,label:`Payloads`}];function X({repository:e,id:t,kind:n,onSelect:r}){return(0,R.jsx)(Ve,{repository:e,id:t,kind:n,onSelect:r},`${n}:${t}`)}function Ve({repository:e,id:n,kind:r,onSelect:i}){let[a,o]=t(),s=a.get(`tab`),u=se(s)?s:`summary`,{data:d,error:p,loading:h,refetch:g}=f(()=>e.get(n,r),[e,n,r],{intervalMs:5e3});if(h&&!d)return(0,R.jsx)(Z,{children:(0,R.jsx)(x,{label:`Loading execution…`})});if(p&&!d)return(0,R.jsx)(Z,{children:(0,R.jsx)(y,{error:p,onRetry:g})});let _=d?.execution;return _?(0,R.jsxs)(Z,{children:[p&&(0,R.jsx)(m,{message:`Execution refresh failed. Showing the last snapshot.`,onRetry:g}),(0,R.jsx)(`header`,{className:`border-b border-line px-4 py-3`,children:(0,R.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsx)(`div`,{className:`text-[11px] uppercase tracking-wider text-faint`,children:`Execution`}),(0,R.jsx)(`h2`,{translate:`no`,className:`mt-1 break-all font-mono text-sm font-semibold text-fg`,children:_.id}),(0,R.jsx)(`div`,{className:`mt-1 text-xs text-muted`,children:_.workflowName})]}),(0,R.jsx)(l,{status:_.state})]})}),(0,R.jsx)(`nav`,{"aria-label":`Execution detail`,className:`flex border-b border-line px-2`,children:Be.map(e=>(0,R.jsx)(`button`,{type:`button`,"aria-pressed":u===e.id,onClick:()=>{o(t=>{let n=new URLSearchParams(t);return e.id===`summary`?n.delete(`tab`):n.set(`tab`,e.id),n})},className:c(`border-b-2 px-3 py-2 text-xs font-medium`,u===e.id?`border-accent text-fg`:`border-transparent text-faint hover:text-muted`),children:e.label},e.id))}),(0,R.jsxs)(`div`,{className:`p-4`,"aria-live":`polite`,children:[u===`summary`&&(0,R.jsx)(Re,{execution:_,onSelect:i}),u===`history`&&(0,R.jsx)(U,{execution:_}),u===`payloads`&&(0,R.jsx)(Pe,{execution:_})]})]}):null}function Z({children:e}){return(0,R.jsx)(`section`,{className:`min-w-0 overflow-hidden rounded-lg border border-line bg-surface`,children:e})}function Q({total:e,offset:t,pageSize:n,count:r,onPage:i}){let a=r===0?0:t+1,o=Math.min(t+r,e);return(0,R.jsxs)(`nav`,{"aria-label":`Workflow execution pages`,className:`mt-3 flex items-center justify-between`,children:[(0,R.jsx)(`button`,{type:`button`,disabled:t===0,onClick:()=>i(Math.max(0,t-n)),className:`rounded-lg border border-line px-3 py-1.5 text-xs text-muted disabled:opacity-40`,children:`Previous`}),(0,R.jsxs)(`span`,{className:`text-xs text-faint`,children:[a,`–`,o,` of `,e]}),(0,R.jsx)(`button`,{type:`button`,disabled:t+n>=e,onClick:()=>i(t+n),className:`rounded-lg border border-line px-3 py-1.5 text-xs text-muted disabled:opacity-40`,children:`Next`})]})}var He=e=>e.length>22?`${e.slice(0,12)}…${e.slice(-7)}`:e;function Ue({executions:e,total:t,offset:n,pageSize:r,selected:i,onSelect:a,onPage:o}){return(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`overflow-x-auto rounded-lg border border-line bg-surface`,children:(0,R.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,R.jsx)(`thead`,{className:`bg-surface-2/80`,children:(0,R.jsxs)(`tr`,{className:`border-b border-line text-left text-[11px] uppercase tracking-wider text-faint`,children:[(0,R.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Workflow / execution`}),(0,R.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Status`}),(0,R.jsx)(`th`,{className:`hidden px-3 py-2 font-medium md:table-cell`,children:`Node`}),(0,R.jsx)(`th`,{className:`hidden px-3 py-2 font-medium lg:table-cell`,children:`Elapsed`}),(0,R.jsx)(`th`,{className:`px-3 py-2 text-right font-medium`,children:`Updated`})]})}),(0,R.jsx)(`tbody`,{children:e.map(e=>(0,R.jsx)(We,{execution:e,selected:i?.id===e.id,onSelect:a},e.id))})]})}),(0,R.jsx)(Q,{total:t,offset:n,pageSize:r,count:e.length,onPage:o})]})}function We({execution:e,selected:t,onSelect:n}){return(0,R.jsxs)(`tr`,{className:c(`border-b border-line/70 last:border-0`,t&&`bg-surface-2`),children:[(0,R.jsx)(`td`,{className:`p-0`,children:(0,R.jsxs)(`button`,{type:`button`,onClick:()=>n({id:e.id,source:`page`}),className:`block w-full px-3 py-2.5 text-left focus-visible:outline-2 focus-visible:outline-inset focus-visible:outline-accent`,children:[(0,R.jsx)(`span`,{className:`block truncate font-medium text-fg`,children:e.workflowName}),(0,R.jsx)(`span`,{translate:`no`,title:e.id,className:`mt-0.5 block font-mono text-[11px] text-faint`,children:He(e.id)})]})}),(0,R.jsx)(`td`,{className:`px-3 py-2.5`,children:(0,R.jsx)(l,{status:e.state})}),(0,R.jsx)(`td`,{className:`hidden px-3 py-2.5 font-mono text-xs text-muted md:table-cell`,children:e.currentNodeIndex}),(0,R.jsx)(`td`,{className:`hidden whitespace-nowrap px-3 py-2.5 font-mono text-xs text-muted lg:table-cell`,children:v(e.updatedAt-e.createdAt)}),(0,R.jsx)(`td`,{title:_(e.updatedAt),className:`whitespace-nowrap px-3 py-2.5 text-right text-xs text-muted`,children:h(e.updatedAt)})]})}function Ge({mode:e,rows:t,selected:n,onSelect:r,total:i,offset:a,pageSize:o,onPage:s,clock:l=W}){let u=G(l,e===`waiting`);return(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`section`,{className:`overflow-x-auto rounded-lg border border-line bg-surface`,children:(0,R.jsxs)(`table`,{className:`w-full min-w-[560px] text-sm`,children:[(0,R.jsx)(`thead`,{className:`border-b border-line bg-surface-2/80 text-left text-[10px] uppercase tracking-wider text-faint`,children:(0,R.jsxs)(`tr`,{children:[(0,R.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:e===`archive`?`Execution record`:`Execution`}),(0,R.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:`Workflow`}),(0,R.jsx)(`th`,{className:`px-3 py-2 font-medium`,children:Ke(e)}),(0,R.jsx)(`th`,{className:`px-3 py-2 text-right font-medium`,children:qe(e)})]})}),(0,R.jsx)(`tbody`,{children:t.map(t=>(0,R.jsxs)(`tr`,{className:c(`border-b border-line last:border-0`,n?.id===t.id&&`bg-surface-2`),children:[(0,R.jsx)(`td`,{className:`p-0`,children:(0,R.jsx)(`button`,{type:`button`,className:`block w-full px-3 py-3 text-left font-mono text-xs text-fg`,onClick:()=>r({id:t.id,source:`page`}),children:t.id})}),(0,R.jsx)(`td`,{className:`px-3 py-3 text-muted`,children:t.workflowName}),(0,R.jsx)(`td`,{className:`px-3 py-3`,children:(0,R.jsx)(Je,{mode:e,row:t})}),(0,R.jsx)(`td`,{className:`whitespace-nowrap px-3 py-3 text-right text-xs text-muted`,children:$(e,t,u)})]},t.id))})]})}),(0,R.jsx)(Q,{total:i,offset:a,pageSize:o,count:t.length,onPage:s})]})}var Ke=e=>e===`waiting`?`Resume node`:e===`compensation`?`Recovery state`:`Outcome`,qe=e=>e===`archive`?`Archived`:e===`waiting`?`Waiting`:`Updated`;function Je({mode:e,row:t}){return e===`waiting`?(0,R.jsxs)(`span`,{className:`font-mono text-xs text-warning`,children:[`Node `,t.currentNodeIndex]}):(0,R.jsx)(l,{status:t.state})}function $(e,t,n){return e===`archive`?t.archivedAt?_(t.archivedAt):`Unavailable`:e===`waiting`?v(Math.max(0,n-t.updatedAt)):h(t.updatedAt)}function Ye({stats:e,page:t,repository:n,kind:r,selected:i,onSelect:a}){let o=t.executions.filter(e=>[`waiting`,`failed`,`compensation-stuck`].includes(e.state));return(0,R.jsxs)(`div`,{className:`space-y-5`,children:[(0,R.jsx)(Xe,{stats:e}),(0,R.jsxs)(`div`,{className:`grid gap-5 xl:grid-cols-[minmax(320px,0.7fr)_minmax(0,1.3fr)]`,children:[(0,R.jsxs)(`section`,{className:`rounded-lg border border-line bg-surface`,children:[(0,R.jsxs)(`header`,{className:`border-b border-line px-4 py-3`,children:[(0,R.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:`Needs attention`}),(0,R.jsxs)(`p`,{className:`mt-0.5 text-xs text-faint`,children:[`Waiting, failed, and stuck executions · showing `,o.length,` of `,t.total,`.`]})]}),(0,R.jsx)(Ze,{rows:o,selected:i,onSelect:a})]}),i&&(0,R.jsx)(X,{repository:n,id:i.id,kind:r,onSelect:e=>a({id:e,source:`link`})})]})]})}function Xe({stats:e}){let t=[[`Open executions`,e.activeTotal],[`Waiting for signal`,e.states.waiting],[`Recovery required`,e.states[`compensation-stuck`]+e.states.failed],[`Retained in archive`,e.archiveTotal]];return(0,R.jsx)(`dl`,{className:`grid overflow-hidden rounded-lg border border-line bg-surface sm:grid-cols-2 xl:grid-cols-4`,children:t.map(([e,t])=>(0,R.jsxs)(`div`,{className:`border-b border-line px-4 py-3 sm:border-r xl:border-b-0`,children:[(0,R.jsx)(`dt`,{className:`text-[10px] uppercase tracking-wider text-faint`,children:e}),(0,R.jsx)(`dd`,{className:`mt-1 font-mono text-xl font-semibold text-fg`,children:t})]},e))})}function Ze({rows:e,selected:t,onSelect:n}){return e.length?(0,R.jsx)(`ul`,{className:`divide-y divide-line`,children:e.map(e=>(0,R.jsx)(`li`,{className:t?.id===e.id?`bg-surface-2`:void 0,children:(0,R.jsxs)(`button`,{type:`button`,className:`w-full px-4 py-3 text-left`,onClick:()=>n({id:e.id,source:`page`}),children:[(0,R.jsxs)(`span`,{className:`flex items-center justify-between gap-3`,children:[(0,R.jsx)(`span`,{className:`truncate text-sm font-medium text-fg`,children:e.workflowName}),(0,R.jsx)(`span`,{className:`text-xs text-faint`,children:h(e.updatedAt)})]}),(0,R.jsxs)(`span`,{className:`mt-1 flex items-center justify-between gap-3 font-mono text-[11px] text-faint`,children:[(0,R.jsx)(`span`,{className:`truncate`,children:e.id}),(0,R.jsx)(`span`,{children:e.state})]})]})},e.id))}):(0,R.jsx)(`p`,{className:`px-4 py-8 text-center text-sm text-muted`,children:`No intervention required.`})}function Qe({repository:e,executionId:t,onApplied:n}){let[r,i]=(0,E.useState)(``),[a,o]=(0,E.useState)(`{}`),s=F({operationGroup:`signal`,scopeKey:t,onApplied:n,onSucceeded:()=>u.success(`Workflow signal accepted`,`${r.trim()} · ${t}`)});return(0,R.jsxs)(`div`,{className:`border-t border-line p-4`,children:[(0,R.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wider text-faint`,children:`Send signal`}),(0,R.jsxs)(`div`,{className:`mt-3 grid gap-3 sm:grid-cols-2`,children:[(0,R.jsxs)(`label`,{className:`text-xs text-faint`,children:[`Event name`,(0,R.jsx)(`input`,{"aria-label":`Workflow signal event`,value:r,onChange:e=>i(e.target.value),className:`mt-1 h-9 w-full rounded-lg border border-line bg-surface-2 px-3 font-mono text-sm text-fg`})]}),(0,R.jsxs)(`label`,{className:`text-xs text-faint`,children:[`Payload JSON`,(0,R.jsx)(`textarea`,{"aria-label":`Workflow signal payload`,value:a,onChange:e=>o(e.target.value),className:`mt-1 min-h-20 w-full resize-y rounded-lg border border-line bg-surface-2 p-2 font-mono text-xs text-fg`})]})]}),(0,R.jsx)(`button`,{type:`button`,disabled:!r.trim()||!!s.busy,onClick:()=>{let n;try{n=JSON.parse(a)}catch{s.run(`signal`,async()=>{throw Error(`Signal payload must be valid JSON.`)});return}window.confirm(`Send durable signal "${r.trim()}" to ${t}?`)&&s.run(`signal`,()=>e.signal(t,r.trim(),n))},className:`mt-3 rounded-md bg-accent px-3 py-2 text-xs font-medium text-accent-fg disabled:opacity-40`,children:s.busy?`Sending…`:`Send durable signal`}),s.error&&(0,R.jsx)(`p`,{role:`alert`,className:`mt-3 text-xs text-danger`,children:s.error}),s.succeeded&&(0,R.jsx)(`p`,{role:`status`,className:`mt-3 text-xs text-success`,children:`Durable signal accepted; execution and list refreshed.`}),s.result!==void 0&&(0,R.jsx)(`div`,{className:`mt-3`,children:(0,R.jsx)(B,{value:s.result})})]})}function $e({repository:e,controlRepository:t,id:n,onApplied:r,clock:i,pollIntervalMs:a=5e3}){let{data:o,error:s,loading:c,refetch:l}=f(()=>e.get(n,`active`),[e,n],{intervalMs:a});if(c&&!o)return(0,R.jsx)(x,{label:`Loading signal inbox…`});if(s&&!o)return(0,R.jsx)(y,{error:s,onRetry:l});let u=o?.execution;if(!u)return null;let d=Object.entries(u.signals);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(K,{error:s,onRetry:l}),(0,R.jsxs)(`section`,{className:`overflow-hidden rounded-lg border border-line bg-surface`,children:[(0,R.jsxs)(`header`,{className:`border-b border-line px-4 py-3`,children:[(0,R.jsx)(`div`,{className:`text-[11px] uppercase tracking-wider text-warning`,children:`Signal inbox`}),(0,R.jsx)(`h2`,{className:`mt-1 break-all font-mono text-sm font-semibold text-fg`,children:u.id})]}),(0,R.jsxs)(`dl`,{className:`grid grid-cols-2 gap-3 border-b border-line p-4 text-xs sm:grid-cols-3`,children:[(0,R.jsx)(V,{label:`Waiting at node`,value:String(u.currentNodeIndex)}),(0,R.jsx)(V,{label:`Parked for`,value:(0,R.jsx)(Ae,{since:u.updatedAt,clock:i})}),(0,R.jsx)(V,{label:`Last transition`,value:_(u.updatedAt)})]}),(0,R.jsxs)(`div`,{className:`p-4`,children:[(0,R.jsx)(`h3`,{className:`mb-3 text-xs font-semibold uppercase tracking-wider text-faint`,children:`Durable signals`}),d.length?d.map(([e,t])=>(0,R.jsxs)(`div`,{className:`mb-3 last:mb-0`,children:[(0,R.jsx)(`div`,{className:`mb-1 font-mono text-xs text-warning`,children:e}),(0,R.jsx)(B,{value:t})]},e)):(0,R.jsx)(`p`,{className:`text-sm text-muted`,children:`No signal has been persisted yet. The execution remains parked.`})]}),(0,R.jsx)(Qe,{repository:t,executionId:n,onApplied:()=>q(l,r)},n)]})]})}function et(e){return e.section.id===`overview`?(0,R.jsx)(Ye,{...e}):e.section.id===`executions`?(0,R.jsx)(tt,{...e}):(0,R.jsx)(nt,{...e})}function tt({repository:e,kind:t,page:n,selected:r,offset:i,pageSize:a,onSelect:o,onPage:s}){return(0,R.jsxs)(`div`,{className:`grid gap-5 xl:grid-cols-[minmax(390px,0.8fr)_minmax(0,1.4fr)]`,children:[(0,R.jsx)(Ue,{executions:n.executions,total:n.total,offset:i,pageSize:a,selected:r,onSelect:o,onPage:s}),r&&(0,R.jsx)(X,{repository:e,id:r.id,kind:t,onSelect:e=>o({id:e,source:`link`})})]})}function nt(e){let t=e.section.id;return(0,R.jsxs)(`div`,{className:`grid gap-5 xl:grid-cols-[minmax(420px,0.95fr)_minmax(0,1.05fr)]`,children:[(0,R.jsx)(Ge,{mode:t,rows:e.page.executions,selected:e.selected,onSelect:e.onSelect,total:e.page.total,offset:e.offset,pageSize:e.pageSize,onPage:e.onPage}),e.selected&&(0,R.jsx)(rt,{...e,id:e.selected.id})]})}function rt({section:e,repository:t,controlRepository:n,onRefresh:r,id:i}){return e.id===`waiting`?(0,R.jsx)($e,{repository:t,controlRepository:n,id:i,onApplied:r}):e.id===`compensation`?(0,R.jsx)(Ne,{repository:t,controlRepository:n,id:i,onApplied:r}):(0,R.jsx)(je,{repository:t,id:i})}function it({repository:e=fe,controlRepository:t=P}){let{pathname:n}=r(),i=ee(n),a=pe(i),{kind:o,workflowName:s,state:c,offset:l,selected:u,update:d,select:p}=a,h={kind:o,workflowName:s||void 0,state:c||void 0,limit:25,offset:l},{data:_,error:v,loading:y,refetch:b}=f(()=>i.id===`overview`?ie(e,25):re(e,h),[e,i.id,o,s,c,l],{intervalMs:5e3});(0,E.useEffect)(()=>{let e=_?.page.total;if(e===void 0||l===0)return;let t=e===0?0:Math.floor((e-1)/25)*25;l>t&&d({offset:t,executionId:null,tab:`summary`},!0)},[_?.page.total,l,d]),(0,E.useEffect)(()=>{let e=_?.page.executions;if(e){let t=i.id===`overview`?e.filter(e=>[`waiting`,`failed`,`compensation-stuck`].includes(e.state)):e,n=te(u,t);n?.id!==u?.id&&p(n,!0)}},[_?.page.executions,i.id,u,p]);let x=_?.stats,S=_?.page;return(0,R.jsxs)(`div`,{children:[(0,R.jsx)(g,{title:(0,R.jsxs)(R.Fragment,{children:[`Workflow `,(0,R.jsxs)(`span`,{className:`text-faint`,children:[`/ `,i.label]})]}),description:i.description,live:!(!_||v),actions:(0,R.jsx)(`button`,{type:`button`,onClick:()=>void b(),className:`rounded-lg border border-line px-3 py-1.5 text-sm text-muted hover:bg-surface-2 hover:text-fg`,children:`Refresh`})}),i.id===`overview`&&(0,R.jsx)(ye,{repository:t,onApplied:b}),i.id===`archive`&&(0,R.jsx)(he,{repository:t,onApplied:b}),i.id===`executions`&&x&&(0,R.jsx)(_e,{stats:x}),(0,R.jsx)(Ee,{section:i,kind:o,workflowName:s,state:c,stats:x??void 0,total:S?.total,onKind:e=>{a.update({kind:e,offset:0,executionId:null,tab:`summary`},!1)},onWorkflowName:e=>{a.update({workflowName:e,offset:0,executionId:null,tab:`summary`},!1)},onState:e=>{a.update({state:e,offset:0,executionId:null,tab:`summary`},!1)}}),v&&_&&(0,R.jsx)(m,{message:`Workflow refresh failed — showing the last snapshot.`,onRetry:b}),(0,R.jsx)(at,{repository:e,controlRepository:t,section:i,stats:x,kind:o,page:S,error:v,loading:y,dataPresent:!!_,selected:u,offset:l,onRetry:b,onSelect:e=>a.select(e),onPage:e=>{a.update({offset:e,executionId:null,tab:`summary`})}})]})}function at({repository:e,controlRepository:t,section:n,stats:r,kind:i,page:a,error:o,loading:s,dataPresent:c,selected:l,offset:u,onRetry:d,onSelect:f,onPage:m}){return o&&!c?(0,R.jsx)(y,{error:o,onRetry:d}):s&&!c?(0,R.jsx)(x,{label:`Loading workflows…`}):a?.available?a.executions.length===0&&a.total>0&&u>0?(0,R.jsx)(x,{label:`Loading workflow page…`}):a.executions.length===0?(0,R.jsx)(p,{title:`No executions match these filters`,hint:`Change the store, workflow, or state filter.`}):r?(0,R.jsx)(et,{section:n,repository:e,controlRepository:t,kind:i,stats:r,page:a,selected:l,offset:u,pageSize:25,onSelect:f,onPage:m,onRefresh:d}):null:(0,R.jsx)(p,{title:`Workflow store not initialized`,hint:`Start a Bunqueue Workflow Engine with this server dataPath; its official workflow_executions tables will appear here automatically.`})}export{it as Workflows};
@@ -0,0 +1 @@
1
+ import{I as e}from"./index-DwsYIYdu.js";var t={limits:async(t,n)=>o(await e.queueOperations.limits(t,n)),group:async(t,r,i,a,o,s)=>n(await e.queueOperations.group(t,r,i,a,o,s)),pauseGroup:async(t,n)=>i(await e.queueOperations.pauseGroup(t,n)),resumeGroup:async(t,n)=>i(await e.queueOperations.resumeGroup(t,n)),setGroupRateLimit:async(t,n,r,i)=>{a(await e.queueOperations.setGroupRateLimit(t,n,r,i))},removeGroupRateLimit:async(t,n)=>c(await e.queueOperations.removeGroupRateLimit(t,n)),setGroupConcurrency:async(t,n,r)=>{a(await e.queueOperations.setGroupConcurrency(t,n,r))},removeGroupConcurrency:async(t,n)=>c(await e.queueOperations.removeGroupConcurrency(t,n)),deduplicationJobId:async(t,n)=>s(await e.queueOperations.deduplicationJobId(t,n)),removeDeduplicationKey:async(t,n)=>c(await e.queueOperations.removeDeduplicationKey(t,n)),metrics:async(t,n,r,i)=>l(await e.queueOperations.metrics(t,n,r,i)),trimEvents:async(t,n)=>c(await e.queueOperations.trimEvents(t,n))};function n(e){let t=d(u(e,`Queue group`).group,`Queue group`),n=t.rateLimit,i=t.entries,a=t.priorityCounts;if(!m(t.jobs,0)||!m(t.active,0)||!m(t.totalGrouped,0)||typeof t.paused!=`boolean`||!Array.isArray(i)||i.length>100||!i.every(r)||!f(a)||!Object.entries(a).every(([e,t])=>/^\d+$/.test(e)&&Number(e)<=2097151&&m(t,0))||n!==null&&(!f(n)||!p(n.max)||!p(n.duration))||!m(t.rateLimitTtl,-2)||t.concurrency!==null&&!p(t.concurrency))throw h(`Queue group`);return t}function r(e){return f(e)?typeof e.id==`string`&&e.id.length>0&&typeof e.name==`string`&&e.name.length>0&&m(e.priority,0)&&e.priority<=2097151&&m(e.delay,0)&&m(e.timestamp,0):!1}function i(e){let t=u(e,`Queue group mutation`).changed;if(typeof t!=`boolean`)throw h(`Queue group mutation`);return t}function a(e){if(u(e,`Queue mutation`).applied!==!0)throw h(`Queue mutation`)}function o(e){let t=d(u(e,`Queue limits`).limits,`Queue limits`),n=t.rateLimit;if(n!==null&&(!f(n)||!p(n.max)||!p(n.duration))||t.concurrency!==null&&!p(t.concurrency)||!m(t.rateLimitTtl,-2)||typeof t.maxed!=`boolean`)throw h(`Queue limits`);return{rateLimit:n,concurrency:t.concurrency,rateLimitTtl:t.rateLimitTtl,maxed:t.maxed}}function s(e){let t=u(e,`deduplication lookup`).jobId;if(t!==null&&(typeof t!=`string`||!t))throw h(`deduplication lookup`);return t}function c(e){let t=u(e,`Queue mutation`).removed;if(!m(t,0))throw h(`Queue mutation`);return t}function l(e){let t=d(u(e,`Queue metrics`).metrics,`Queue metrics`),n=d(t.meta,`Queue metrics`);if(!m(n.count,0)||!m(n.prevTS,0)||!m(n.prevCount,0)||!m(t.count,0)||!Array.isArray(t.data)||t.data.length>10080||!t.data.every(e=>m(e,0)))throw h(`Queue metrics`);return t}function u(e,t){let n=d(e,t);if(n.ok!==!0)throw h(t);return n}function d(e,t){if(!f(e))throw h(t);return e}function f(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}var p=e=>m(e,1),m=(e,t)=>Number.isSafeInteger(e)&&e>=t,h=e=>Error(`Malformed ${e} response`);export{l as n,t};
@@ -0,0 +1,2 @@
1
+ var e=new Set([`application/octet-stream`,`application/json`,`application/yaml`,`application/yaml;charset=utf-8`,`text/csv`,`text/csv;charset=utf-8`,`text/plain`,`text/plain;charset=utf-8`]);function t(t,n,r=`application/octet-stream`){if(typeof document>`u`)return;let i=r.trim().toLowerCase(),a=e.has(i)?i:`application/octet-stream`,o=new Blob([n],{type:a}),s=URL.createObjectURL(o),c=document.createElement(`a`);c.href=s,c.download=t,document.body.appendChild(c),c.click(),c.remove(),setTimeout(()=>URL.revokeObjectURL(s),0)}function n(e,n){t(e.endsWith(`.json`)?e:`${e}.json`,JSON.stringify(n,null,2),`application/json`)}function r(e){if(e==null)return``;let t=typeof e!=`number`&&typeof e!=`boolean`,n=typeof e==`object`?JSON.stringify(e):String(e);return t&&/^[=+\-@\t\r]/.test(n)&&(n=`'${n}`),/[",\n\r]/.test(n)?`"${n.replace(/"/g,`""`)}"`:n}function i(e,t){let n=t??(()=>{let t=[],n=new Set;for(let r of e)for(let e of Object.keys(r))n.has(e)||(n.add(e),t.push(e));return t})(),i=n.map(r).join(`,`),a=e.map(e=>n.map(t=>r(e[t])).join(`,`)).join(`
2
+ `);return e.length?`${i}\n${a}`:i}function a(e,n,r){t(e.endsWith(`.csv`)?e:`${e}.csv`,i(n,r),`text/csv;charset=utf-8`)}export{t as n,n as r,a as t};
@@ -0,0 +1 @@
1
+ @font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./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(./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(./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(./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-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--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;--container-3xl:48rem;--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,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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:where(:not(iframe)){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)}.top-5{top:calc(var(--spacing) * 5)}.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)}.bottom-\[-13px\]{bottom:-13px}.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-\[44px\]{width:44px;height:44px}.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-16{height:calc(var(--spacing) * 16)}.h-48{height:calc(var(--spacing) * 48)}.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-72{max-height:calc(var(--spacing) * 72)}.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-20{min-height:calc(var(--spacing) * 20)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-32{min-height:calc(var(--spacing) * 32)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-\[44px\]{min-height:44px}.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-3xl{max-width:var(--container-3xl)}.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-36{min-width:calc(var(--spacing) * 36)}.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-52{min-width:calc(var(--spacing) * 52)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-\[44rem\]{min-width:44rem}.min-w-\[52rem\]{min-width:52rem}.min-w-\[560px\]{min-width:560px}.min-w-\[680px\]{min-width:680px}.min-w-max{min-width:max-content}.min-w-px{min-width:1px}.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:0px;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}.grid-cols-\[28px_minmax\(0\,1fr\)\]{grid-template-columns:28px minmax(0,1fr)}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.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)}.gap-px{gap:1px}: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)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * 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-3{row-gap:calc(var(--spacing) * 3)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}: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)),:where(.divide-line\/70>:not(:last-child)){border-color:var(--line)}@supports (color:color-mix(in lab, red, red)){:where(.divide-line\/70>:not(:last-child)){border-color:color-mix(in oklab, var(--line) 70%, transparent)}}.self-center{align-self:center}.self-end{align-self:flex-end}.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:2147483647px}.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-y{border-block-style:var(--tw-border-style);border-block-width:1px}.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-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent,.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-accent\/60{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/60{border-color:color-mix(in oklab, var(--accent) 60%, 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-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,.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-surface{border-color:var(--surface)}.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\/70{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/70{background-color:color-mix(in oklab, var(--accent) 70%, 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-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-danger\/\[0\.06\]{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.bg-danger\/\[0\.06\]{background-color:color-mix(in oklab, var(--danger) 6%, 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\/40{background-color:var(--surface-2)}@supports (color:color-mix(in lab, red, red)){.bg-surface-2\/40{background-color:color-mix(in oklab, var(--surface-2) 40%, 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-2\/80{background-color:var(--surface-2)}@supports (color:color-mix(in lab, red, red)){.bg-surface-2\/80{background-color:color-mix(in oklab, var(--surface-2) 80%, 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-5{padding-bottom:calc(var(--spacing) * 5)}.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}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.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,.ring-1{--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)}}.ring-line{--tw-ring-color:var(--line)}.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-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)}.first\:border-0:first-child{border-style:var(--tw-border-style);border-width:0}.last\:mb-0:last-child{margin-bottom:0}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-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\:text-muted:hover{color:var(--text-muted)}.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\:ring-accent\/50:focus{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-accent\/50:focus{--tw-ring-color:color-mix(in oklab, var(--accent) 50%, 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-35:disabled{opacity:.35}.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\:grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.sm\:grid-cols-\[1fr_auto_auto\]{grid-template-columns:1fr auto auto}.sm\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:static{position:static}.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\:mt-0{margin-top:0}.md\:grid{display:grid}.md\:hidden{display:none}.md\:table-cell{display:table-cell}.md\:size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.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))}.md\:gap-4{gap:calc(var(--spacing) * 4)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}}@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\:table-cell{display:table-cell}.lg\:w-48{width:calc(var(--spacing) * 48)}.lg\:translate-x-0{--tw-translate-x:0px;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-\[minmax\(0\,1fr\)_280px\]{grid-template-columns:minmax(0,1fr) 280px}.lg\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.lg\:flex-col{flex-direction:column}.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\:col-span-2{grid-column:span 2/span 2}.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-4{grid-template-columns:repeat(4,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-\[0\.8fr_1\.2fr\]{grid-template-columns:.8fr 1.2fr}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(300px\,0\.7fr\)\]{grid-template-columns:minmax(0,1fr) minmax(300px,.7fr)}.xl\:grid-cols-\[minmax\(320px\,0\.7fr\)_minmax\(0\,1\.3fr\)\]{grid-template-columns:minmax(320px,.7fr) minmax(0,1.3fr)}.xl\:grid-cols-\[minmax\(320px\,0\.8fr\)_minmax\(0\,1\.2fr\)\]{grid-template-columns:minmax(320px,.8fr) minmax(0,1.2fr)}.xl\:grid-cols-\[minmax\(360px\,0\.8fr\)_minmax\(0\,1\.2fr\)\]{grid-template-columns:minmax(360px,.8fr) minmax(0,1.2fr)}.xl\:grid-cols-\[minmax\(390px\,0\.8fr\)_minmax\(0\,1\.4fr\)\]{grid-template-columns:minmax(390px,.8fr) minmax(0,1.4fr)}.xl\:grid-cols-\[minmax\(420px\,0\.95fr\)_minmax\(0\,1\.05fr\)\]{grid-template-columns:minmax(420px,.95fr) minmax(0,1.05fr)}:where(.xl\:divide-y-0>: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(0px * var(--tw-divide-y-reverse));border-bottom-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)))}.xl\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.xl\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.xl\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}.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:#f472b6;--accent-fg:#18181b;--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:#be185d;--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-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@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=["./AddJob-jmrtBSrz.js","./rolldown-runtime-XKyaHtl9.js","./react-vendor-08inPAVO.js","./upstreamPaths-DQeKSxGc.js","./targetClient-DvzvwnGp.js","./connectionStore-B946Fhuv.js","./form-DBkslwzu.js","./StatusBadge-D-mexaga.js","./useServerActionGuard-uiZWD3dS.js","./responses-YgpvqWEr.js","./Benchmark-7ULYlqmK.js","./icons-BIT5aq1c.js","./AreaChart-CSP0-00u.js","./BulkAddJobs-C2sxF-St.js","./CronManager-CZvC_uox.js","./Pagination-CmVnmrFt.js","./Database-B1Dx5OV2.js","./Diagnostics-D1LEl6O4.js","./api-CCgfskjt.js","./useControlActionGuard-Bx5MkufG.js","./controlConnectionEpoch-x9VjrWgN.js","./DlqControl-Dhcz7LY7.js","./exportFile-B6puuPQx.js","./flowMutationSafety-YKTHxqKv.js","./QueueControl-DbQwvvtX.js","./bqQueueOperationsRepository-BXoBdFQc.js","./QueueActions-uNol2MD7.js","./DlqPro-CW80tQdN.js","./Flows-Bzq3onQ3.js","./flowOperationPolicy-B2Etcb3f.js","./JobInspector-nTUU1VOU.js","./JobsPro-CSHP2AYC.js","./LogsPro-BA-wZ8Dr.js","./McpServer-BvOGxNnE.js","./package-D11d0FBn.js","./MetricsPro-DHPmT4Md.js","./useThroughputSeries-DQo7JaT-.js","./QueueDetailPro-AUf6FktH.js","./QueuesOverview-DQ6ta4wA.js","./promisePool-BVfQ9n9Q.js","./S3BackupPro-BUzcmhnj.js","./ServerControl-WUZjdjPX.js","./UsagePro-BQJWWwW3.js","./Webhooks-DS3xmbEi.js","./WorkersPro-BJgab7of.js","./Workflows-BLXlNIxO.js","./Alerts-DrwYvhbk.js","./Fleet-CsscadVQ.js","./GlobalSearch-CeCvA6Tm.js","./useDiscovery-BbWXsy6R.js","./FailureDiagnostics-DkLd6szC.js","./MetricHistory-Dmu-XqaO.js","./MonitoringSetup-60_ib3rf.js","./Cron-BY9EGj2n.js","./Dlq-CPxeigKg.js","./classicJobsData-wdIr-E4y.js","./Jobs-OwKndzhg.js","./Logs-CiYuY8ix.js","./Metrics-BF38GgYm.js","./Overview-DBLxV_vL.js","./QueueDetail-CA33Kebs.js","./Queues-C_KeSyQs.js","./S3Backup-BgPBXJVZ.js","./Settings-Dwh79r-B.js","./Usage-DeWofLpa.js","./Workers-DyAVvmbR.js","./install-DVeS3d31.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{a as t,c as n,h as r,i,l as a,n as o,o as s,p as c,r as l,s as u,t as d,u as f}from"./react-vendor-08inPAVO.js";import{a as p,c as m,d as h,f as g,i as _,l as v,m as y,n as b,o as x,p as S,u as C}from"./connectionStore-B946Fhuv.js";import{a as w,n as T,r as ee,s as E}from"./upstreamPaths-DQeKSxGc.js";import{_ as te,a as ne,b as re,c as ie,d as D,f as ae,g as oe,h as se,l as ce,m as O,o as le,p as k,r as ue,s as de,t as fe,u as pe,v as me,x as A,y as he}from"./targetClient-DvzvwnGp.js";import{A as ge,D as _e,E as ve,S as ye,T as be,_ as xe,c as Se,f as Ce,g as we,h as Te,k as Ee,l as De,m as j,n as Oe,o as ke,p as M,r as Ae,s as je,t as Me,u as Ne,v as Pe,w as Fe,y as Ie}from"./icons-BIT5aq1c.js";import{n as Le,r as N}from"./StatusBadge-D-mexaga.js";import{t as Re}from"./api-CCgfskjt.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),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var P=e(r(),1),ze=c(),Be=`bq-dash-alerts`,Ve=1,He=[`email`,`webhook`,`slack`],Ue=[`error_rate`,`p99_latency`,`waiting`,`failed`,`dlq`],We=[`>=`,`>`,`<=`,`<`],Ge=128,Ke=200,qe=2048,Je=256,Ye=/^[^\s@]+@[^\s@]+\.[^\s@]+$/u,Xe=()=>`${Date.now().toString(36)}${Math.floor(Math.random()*1e6).toString(36)}`;function Ze(e){let t=new Set(e.map(e=>e.id)),n=Xe();if(!t.has(n))return n;let r=1;for(;t.has(`${n}-${r}`);)r+=1;return`${n}-${r}`}function Qe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function $e(e){return He.includes(e)}function et(e){return Ue.includes(e)}function tt(e){return We.includes(e)}function nt(e,t){let n=t.trim();if(!n||n.length>qe)return!1;if(e===`email`)return n.length<=320&&Ye.test(n);try{let e=new URL(n);return[`http:`,`https:`].includes(e.protocol)&&!e.username&&!e.password}catch{return!1}}function rt(e){if(!Qe(e)||typeof e.id!=`string`||!$e(e.type)||typeof e.target!=`string`)return null;let t=e.id.trim(),n=e.target.trim();return!t||t.length>Ge||n.length>qe||e.type===`email`&&!nt(e.type,n)?null:{id:t,type:e.type,target:e.type===`email`?n:``}}function it(e){if(!Qe(e)||typeof e.id!=`string`||typeof e.name!=`string`||!et(e.metric)||!tt(e.operator)||typeof e.threshold!=`number`||!Number.isFinite(e.threshold)||typeof e.queue!=`string`||!$e(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>Ge||!n||n.length>Ke||r.length>Je||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 at(e){let t=Qe(e)?e:{},n=[],r=new Set;if(Array.isArray(t.channels))for(let e of t.channels){if(n.length>=100)break;let t=rt(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=it(e);t&&!a.has(t.id)&&(a.add(t.id),i.push(t))}return{channels:n,rules:i}}function ot(e){return at({channels:e.channels,rules:e.rules})}var st=h({key:Be,version:Ve,sanitizeState:at}),ct=y()(S(e=>({channels:[],rules:[],addChannel:(t,n)=>{let r={ok:!1,error:`Alert destination was rejected.`};return e(e=>{let i=n.trim();return!$e(t)||!nt(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:Ze(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=it({...t,id:Ze(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:Be,version:Ve,storage:g(()=>st),partialize:ot,migrate:at,merge:(e,t)=>({...t,...at(e)})})),lt={error_rate:`error rate`,p99_latency:`p99 latency`,waiting:`waiting jobs`,failed:`failed jobs`,dlq:`DLQ size`},F=encodeURIComponent,ut={info:()=>k(`/db/info`),tables:()=>k(`/db/tables`),schema:e=>k(`/db/tables/${T(e,`Database table`)}/schema`),rows:(e,t=50,n=0,r,i=`asc`,a)=>k(`/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)=>k(`/db/tables/${T(e,`Database table`)}/cell?rowid=${F(String(t))}&column=${F(n)}`),query:e=>k(`/db/query`,O(`POST`,{sql:e}))},dt={status:()=>k(`/control/status`),start:()=>k(`/control/start`,{method:`POST`}),stop:()=>k(`/control/stop`,{method:`POST`}),restart:()=>k(`/control/restart`,{method:`POST`}),logs:()=>k(`/control/logs`),getConfig:()=>k(`/control/config`),setConfig:(e,t)=>k(`/control/config`,O(`PUT`,{...e,...t===void 0?{}:{expectedRevision:t}}))},ft={stats:()=>k(`/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)),k(`/workflows${t.size?`?${t}`:``}`)},get:(e,t=`active`)=>k(`/workflows/${T(e,`Workflow execution id`)}?kind=${t}`)},pt=2e5,mt=16777216,ht=12e4,gt=65536,_t=encodeURIComponent;async function vt(e,t,n=50,r=0,i,a=`asc`,o,s){s?.throwIfAborted();let c=await oe(e.baseUrl,`/db/tables/${T(t,`Database table`)}?limit=${n}&offset=${r}${i?`&orderBy=${_t(i)}&dir=${a}`:``}${o?.value?`&fcol=${_t(o.column)}&fop=${o.op}&fval=${_t(o.value)}`:``}`,{...ae(e)},s?{signal:s}:void 0,!0,`agent`);return s?.throwIfAborted(),c}function yt(e,t,n,r=!0){let i=e.get(t);if(!i||!/^\d+$/.test(i))throw new D(`Malformed database export response: invalid ${t} header.`,200);let a=Number(i);if(!Number.isSafeInteger(a)||a>n||!r&&a===0)throw new D(`Malformed database export response: invalid ${t} header.`,200);return a}async function bt(e){if(!e.body)return``;let t=e.body.getReader(),n=new Uint8Array(gt),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 xt(e,t,n){if(!e.body)throw new D(`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 D(`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 D(`Malformed database export response: received ${a} of ${t} declared bytes.`,200);return r}function St(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`Invalid database export request.`);if(typeof e.table!=`string`||!e.table)throw TypeError(`Database export table must not be empty.`);if(e.dir!==`asc`&&e.dir!==`desc`)throw TypeError(`Invalid database export sort direction.`);if(e.orderBy!==void 0&&(typeof e.orderBy!=`string`||!e.orderBy))throw TypeError(`Database export sort column must not be empty.`);let t=e.filter;if(t&&(typeof t!=`object`||Array.isArray(t)||typeof t.column!=`string`||!t.column||typeof t.value!=`string`||!t.value||![`contains`,`eq`,`ne`].includes(t.op)))throw TypeError(`Invalid database export filter.`);return Object.freeze({table:e.table,orderBy:e.orderBy,dir:e.dir,filter:t?Object.freeze({...t}):void 0})}async function Ct(e,t,n){e.status===401&&typeof window<`u`&&window.dispatchEvent(new CustomEvent(`auth:required`,{detail:{scope:`agent`,auth:new Headers(n).get(`Authorization`)??void 0,target:t.baseUrl}}));let r=`HTTP ${e.status}`,i=await bt(e);if(i)try{let e=JSON.parse(i);typeof e?.error==`string`&&(r=e.error)}catch{}return new D(r,e.status)}async function wt(e,t,n){n?.throwIfAborted();let r={...ae(e)},i=St(t),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(ht),c=n?AbortSignal.any([n,s]):s;try{let t=await fetch(e.baseUrl+o,{headers:r,signal:c});if(!t.ok)throw await Ct(t,e,r);if(t.headers.get(`X-Bunqueue-Db-Export-Version`)!==`1`)throw new D(`Malformed database export response: unsupported contract version.`,200);if(!/^text\/csv(?:;|$)/i.test(t.headers.get(`Content-Type`)??``))throw new D(`Malformed database export response: expected CSV content.`,200);let a;try{let e=t.headers.get(`X-Bunqueue-Db-Export-Table`);if(!e)throw Error(`missing`);a=decodeURIComponent(e)}catch{throw new D(`Malformed database export response: invalid table identity.`,200)}if(a!==i.table)throw new D(`Database export target changed: requested "${i.table}", received "${a}".`,200);let s=yt(t.headers,`X-Bunqueue-Db-Export-Rows`,pt),l=yt(t.headers,`X-Bunqueue-Db-Export-Bytes`,mt,!1);if(yt(t.headers,`Content-Length`,16777216,!1)!==l)throw new D(`Malformed database export response: Content-Length does not match X-Bunqueue-Db-Export-Bytes.`,200);let u=t.headers.get(`X-Bunqueue-Db-Export-Cap`);if(u!==`none`&&u!==`rows`&&u!==`bytes`)throw new D(`Malformed database export response: invalid export cap.`,200);if(u===`rows`&&s!==2e5)throw new D(`Malformed database export response: inconsistent row cap.`,200);let d=await xt(t,l,c);return n?.throwIfAborted(),{table:a,content:d,rowCount:s,bytes:l,cap:u===`none`?null:u}}catch(e){throw s.aborted&&!n?.aborted?new D(`Database export timed out`,0):e}}var Tt={counts:e=>A(`/queues/${E(e)}/counts`),pause:e=>A(`/queues/${E(e)}/pause`,O(`POST`)),resume:e=>A(`/queues/${E(e)}/resume`,O(`POST`)),drain:e=>A(`/queues/${E(e)}/drain`,se(`POST`),!0,[],pe),obliterate:e=>A(`/queues/${E(e)}/obliterate`,se(`POST`),!0,[],pe),clean:(e,t={})=>A(`/queues/${E(e)}/clean`,O(`POST`,t)),promoteJobs:(e,t)=>A(`/queues/${E(e)}/promote-jobs`,O(`POST`,t==null?void 0:{count:t})),retryCompleted:(e,t)=>{throw TypeError(`Completed-job requeue is unavailable in Bunqueue v2.9.3 because flow dependency registration is not rebuilt.`)},setRateLimit:(e,t,n,r)=>A(`/queues/${E(e)}/rate-limit`,O(`PUT`,{limit:t,...n===void 0?{}:{duration:n},...r===void 0?{}:{ttl:r}})),clearRateLimit:e=>A(`/queues/${E(e)}/rate-limit`,{method:`DELETE`}),setConcurrency:(e,t)=>A(`/queues/${E(e)}/concurrency`,O(`PUT`,{concurrency:t})),clearConcurrency:e=>A(`/queues/${E(e)}/concurrency`,{method:`DELETE`}),getStallConfig:e=>A(`/queues/${E(e)}/stall-config`),setStallConfig:(e,t)=>A(`/queues/${E(e)}/stall-config`,O(`PUT`,{config:t})),getDlqConfig:e=>A(`/queues/${E(e)}/dlq-config`),setDlqConfig:(e,t)=>{if(t.autoRetry===!0)throw TypeError(`DLQ auto-retry is unavailable: Bunqueue v2.9.3 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 A(`/queues/${E(e)}/dlq-config`,O(`PUT`,{config:t}))},dlq:(e,t=100,n=0)=>A(`/queues/${E(e)}/dlq?limit=${t}&offset=${n}`),dlqStats:e=>A(`/queues/${E(e)}/dlq/stats`),retryDlq:(e,t)=>{throw TypeError(`DLQ retry is unavailable in Bunqueue v2.9.3 because the endpoint has no atomic job-generation, state, or flow-topology precondition.`)},purgeDlq:e=>A(`/queues/${E(e)}/dlq/purge`,O(`POST`))},I=()=>encodeURIComponent(p()),Et={limits:(e,t)=>{let n=t===void 0?``:`&maxJobs=${t}`;return k(`/queue-operations/${E(e)}/limits?target=${I()}${n}`)},group:(e,t,n,r,i,a)=>{let o=new URLSearchParams({target:p(),groupId:t});return n!==void 0&&o.set(`maxJobs`,String(n)),r!==void 0&&o.set(`maxCount`,String(r)),i!==void 0&&o.set(`start`,String(i)),a!==void 0&&o.set(`end`,String(a)),k(`/queue-operations/${E(e)}/groups?${o}`)},setGroupRateLimit:(e,t,n,r)=>k(`/queue-operations/${E(e)}/groups/rate-limit?target=${I()}`,O(`POST`,{groupId:t,max:n,duration:r})),removeGroupRateLimit:(e,t)=>k(`/queue-operations/${E(e)}/groups/rate-limit/remove?target=${I()}`,O(`POST`,{groupId:t})),setGroupConcurrency:(e,t,n)=>k(`/queue-operations/${E(e)}/groups/concurrency?target=${I()}`,O(`POST`,{groupId:t,concurrency:n})),removeGroupConcurrency:(e,t)=>k(`/queue-operations/${E(e)}/groups/concurrency/remove?target=${I()}`,O(`POST`,{groupId:t})),pauseGroup:(e,t)=>k(`/queue-operations/${E(e)}/groups/pause?target=${I()}`,O(`POST`,{groupId:t})),resumeGroup:(e,t)=>k(`/queue-operations/${E(e)}/groups/resume?target=${I()}`,O(`POST`,{groupId:t})),deduplicationJobId:(e,t)=>k(`/queue-operations/${E(e)}/deduplication?${new URLSearchParams({target:p(),deduplicationId:t})}`),removeDeduplicationKey:(e,t)=>k(`/queue-operations/${E(e)}/deduplication/remove?target=${I()}`,O(`POST`,{deduplicationId:t})),metrics:(e,t,n,r)=>k(`/queue-operations/${E(e)}/metrics?${new URLSearchParams({target:p(),type:t,start:String(n),end:String(r)})}`),trimEvents:(e,t)=>k(`/queue-operations/${E(e)}/events/trim?target=${I()}`,O(`POST`,{maxLength:t}))},Dt={crons:()=>A(`/crons`),createCron:e=>A(`/crons`,O(`POST`,e)),deleteCron:e=>A(`/crons/${T(e,`Cron name`,256)}`,{method:`DELETE`}),webhooks:async()=>ie(await A(`/webhooks`)),addWebhook:e=>A(`/webhooks`,O(`POST`,e)),removeWebhook:e=>A(`/webhooks/${w(e)}`,{method:`DELETE`}),setWebhookEnabled:(e,t)=>A(`/webhooks/${w(e)}/enabled`,O(`PUT`,{enabled:t})),workers:async()=>ce(await A(`/workers`)),unregisterWorker:e=>A(`/workers/${w(e)}`,{method:`DELETE`}),eventsUrl:e=>p()+(e?`/events/queues/${ee(e)}`:`/events`)},Ot={overview:e=>A(`/dashboard`,e),queues:(e=500,t=0)=>A(`/dashboard/queues?limit=${e}&offset=${t}`),queuesSummary:async()=>de(await A(`/queues/summary`)),queueDetail:(e,t=!0)=>A(`/dashboard/queues/${E(e)}?includeJobs=${t}`),stats:e=>A(`/stats`,e),storage:()=>A(`/storage`,void 0,!1),health:()=>A(`/health`,void 0,!1,[503]),ping:()=>A(`/ping`),prometheusUrl:()=>`${p()}/prometheus`,gc:()=>A(`/gc`,O(`POST`)),heapStats:()=>A(`/heapstats`)},kt={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)),A(`/queues/${E(e)}/jobs/list?${i}`)},job:e=>A(`/jobs/${w(e)}`),jobByCustomId:e=>A(`/jobs/custom/${T(e,`Custom job ID`)}`),jobResult:e=>A(`/jobs/${w(e)}/result`),jobLogs:e=>A(`/jobs/${w(e)}/logs`),jobChildren:e=>A(`/jobs/${w(e)}/children`),addJob:async(e,t)=>A(`/queues/${E(e)}/jobs`,{method:`POST`,body:ne(t)}),addJobsBulk:async(e,t)=>(ue(t),A(`/queues/${E(e)}/jobs/bulk`,{method:`POST`,body:le(t)},!0,[],pe)),pullBatch:(e,t,n)=>A(`/queues/${E(e)}/jobs/pull-batch`,O(`POST`,{count:t,...n?{owner:n}:{}})),ackBatch:(e,t)=>A(`/jobs/ack-batch`,O(`POST`,{ids:e,...t?{tokens:t}:{}})),cancelJob:e=>A(`/jobs/${w(e)}`,{method:`DELETE`}),promoteJob:e=>A(`/jobs/${w(e)}/promote`,O(`POST`)),discardJob:e=>A(`/jobs/${w(e)}/discard`,O(`POST`)),retryJob:e=>A(`/jobs/${w(e)}/move-to-wait`,O(`POST`)),failJob:(e,t,n={})=>A(`/jobs/${w(e)}/fail`,O(`POST`,{error:t,...n})),updateJobData:(e,t)=>A(`/jobs/${w(e)}/data`,O(`PUT`,{data:t})),changePriority:(e,t,n)=>A(`/jobs/${w(e)}/priority`,O(`PUT`,{priority:t,...n===void 0?{}:{lifo:n}})),changeDelay:(e,t)=>A(`/jobs/${w(e)}/delay`,O(`PUT`,{delay:t})),moveToDelayed:(e,t)=>A(`/jobs/${w(e)}/move-to-delayed`,O(`POST`,{delay:t})),addJobLog:(e,t,n)=>A(`/jobs/${w(e)}/logs`,O(`POST`,{message:t,level:n})),clearJobLogs:e=>A(`/jobs/${w(e)}/logs`,{method:`DELETE`}),setJobProgress:(e,t,n)=>A(`/jobs/${w(e)}/progress`,O(`POST`,{progress:t,message:n}))},L={...Ot,captureServerRequestTarget:me,createServerTargetClient:fe,getJobAtTarget:re,captureAgentRequestTarget:te,getDbRowsAtTarget:vt,getDbExportAtTarget:wt,...kt,...Tt,queueOperations:Et,...Dt,db:ut,get agentBase(){return he()},control:dt,workflows:ft};Object.defineProperty(L,"agentBase",{configurable:!1});var At=10500,jt=500,Mt=21,Nt=e=>typeof e==`number`&&Number.isSafeInteger(e)&&e>=0;function Pt(e,t,n){return t===`>=`?e>=n:t===`>`?e>n:t===`<=`?e<=n:t===`<`&&e<n}function Ft(e){if(!Array.isArray(e)||e.length>At)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`,`prioritized`,`active`,`completed`,`failed`,`delayed`].every(e=>Nt(a[e])))return null;t.add(e.name),n.push(r)}return n}function It(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)){let t=e?.p99;if(!e||typeof e!=`object`||Array.isArray(e)||typeof t!=`number`||!Number.isFinite(t)||t<0)return null}return e}var Lt=(e,t)=>{let n=e+t;return n>0?t/n*100:null},Rt=e=>e.counts.waiting+e.counts.prioritized;function zt(e,t){let n=e.queue.trim();if(e.metric===`waiting`||e.metric===`failed`){if(!t.summary)return null;let r=e.metric===`waiting`?Rt:e=>e.counts.failed;if(n){let e=t.summary.find(e=>e.name===n);return e?r(e):null}return t.summary.reduce((e,t)=>e+r(t),0)}if(e.metric===`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;if(e.metric===`error_rate`){if(!t.summary)return null;if(n){let e=t.summary.find(e=>e.name===n);return e?Lt(e.counts.completed,e.counts.failed):null}return Lt(t.summary.reduce((e,t)=>e+t.counts.completed,0),t.summary.reduce((e,t)=>e+t.counts.failed,0))}let r=t.overview?.latency?.percentiles;if(!r)return null;let i=Object.values(r).map(e=>e.p99).filter(Number.isFinite);return i.length?Math.max(...i):null}function Bt(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return null;let r=e;if(r.ok!==!0||!Array.isArray(r.queues)||!Number.isSafeInteger(r.total)||r.total<0||r.total>At||n!==null&&r.total!==n||r.offset!==t||r.limit!==jt)return null;let i=r.total;if(r.queues.length!==Math.min(jt,i-t))return null;let a=[];for(let e of r.queues){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;if(typeof t.name!=`string`||!t.name||t.name.length>256||!/^[a-zA-Z0-9_\-.:]+$/.test(t.name)||!Nt(t.dlq))return null;a.push(e)}return{queues:a,total:i}}async function Vt(e=L){try{let t=[],n=new Set,r=null;for(let i=0;i<Mt;i++){let i=Bt(await e.queues(jt,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}}var Ht=1,R=y(e=>({toasts:[],push:({level:t,title:n,detail:r,ttlMs:i})=>{let a=Ht++,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)}))})),Ut={success:(e,t)=>R.getState().push({level:`success`,title:e,detail:t}),error:(e,t)=>R.getState().push({level:`error`,title:e,detail:t}),info:(e,t)=>R.getState().push({level:`info`,title:e,detail:t})},Wt=3,Gt=e=>`${e.queue||`All queues`}: ${e.metricLabel} ${e.operator} ${e.threshold} (now ${Math.round(e.value)})`;function Kt(e){if(globalThis.Notification?.permission===`granted`)try{new Notification(`bunqueue alert: ${e.ruleName}`,{body:Gt(e),tag:e.ruleId})}catch{}}function qt(e){if(e.length<=Wt)for(let t of e)Ut.error(`Alert: ${t.ruleName}`,Gt(t)),Kt(t);else{Ut.error(`${e.length} alert rules breaching`,e.map(e=>e.ruleName).join(`, `));for(let t of e)Kt(t)}}var Jt=3e4,Yt=(e,t)=>JSON.stringify([e,t]);function Xt(e){let t=JSON.parse(e);if(!Array.isArray(t)||t.length!==2)throw TypeError(`Invalid alert connection identity.`);let[n,r]=t,i=m(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 Zt(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(Jt)]),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 Qt=15e3,$t=6e4,z=y(e=>({breaching:[],status:`idle`,error:null,connectionIdentity:null,setBreaching:t=>e({breaching:t})}));async function en(){if(typeof Notification>`u`)return`denied`;if(Notification.permission===`granted`)return`granted`;try{return await Notification.requestPermission()}catch{return`denied`}}function tn(){let e=ct(e=>e.rules),t=x(e=>Yt(e.baseUrl,e.token)),n=(0,P.useRef)(new Map),r=(0,P.useRef)(new Map),i=(0,P.useRef)(new Map),a=(0,P.useRef)(new Map),o=(0,P.useRef)(t),s=(0,P.useRef)(0),c=JSON.stringify(e.filter(e=>e.enabled).map(e=>[e.id,e.metric,e.operator,e.threshold,e.queue]));(0,P.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(),z.setState({breaching:[],status:`idle`,error:null,connectionIdentity:t});return}let u=new Set(ct.getState().rules.filter(e=>e.enabled).map(e=>e.id)),d=l?[]:z.getState().breaching.filter(e=>u.has(e.ruleId));z.setState({breaching:d,status:`checking`,error:null,connectionIdentity:t});let f;try{f=Xt(t)}catch(e){z.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=x.getState();return Yt(e.baseUrl,e.token)===t},v=e=>{for(let t of[...n.current.keys()])e.has(t)||(n.current.delete(t),r.current.delete(t),i.current.delete(t),a.current.delete(t))},y=async()=>{if(!g){g=!0;try{let e=Zt(f,p.signal),[o,s,c]=await Promise.all([e.queuesSummary().then(Ft).catch(()=>null),Vt(e),e.overview().then(It).catch(()=>null)]);if(!_())return;let l=ct.getState().rules.filter(e=>e.enabled),u=new Set(l.map(e=>e.id));if(v(u),!c){let e=z.getState().breaching.filter(e=>u.has(e.ruleId));if(!_())return;z.setState({breaching:e,status:`degraded`,error:`The bunqueue overview endpoint is unavailable; alert results may be stale.`,connectionIdentity:t});return}let d=Date.now(),m=[],h=[],g=!1;for(let e of l){let t=zt(e,{summary:o,queues:s,overview:c});if(t==null){g=!0;let t=n.current.get(e.id)?a.current.get(e.id):void 0;t&&m.push(t);continue}let l=Pt(t,e.operator,e.threshold),u=n.current.get(e.id)??!1;if(l){let n=u?i.current.get(e.id)??d:d;i.current.set(e.id,n);let o={ruleId:e.id,ruleName:e.name,metricLabel:lt[e.metric],operator:e.operator,threshold:e.threshold,value:t,queue:e.queue,at:n};m.push(o),a.current.set(e.id,o);let s=r.current.get(e.id)??0;d-s>$t&&s<n&&(h.push(o),r.current.set(e.id,d))}else i.current.delete(e.id),a.current.delete(e.id);n.current.set(e.id,l)}if(!_())return;qt(h);let y=!o||!s||g;z.setState({breaching:m,status:y?`degraded`:`live`,error:y?`Some alert rules could not be evaluated; affected results remain unknown.`:null,connectionIdentity:t})}catch(e){if(!_())return;z.setState({status:`degraded`,error:`Alert evaluation failed: ${e.message}`,connectionIdentity:t})}finally{g=!1}}};y();let b=setInterval(y,Qt);return()=>{h=!0,s.current===m&&(s.current+=1),p.abort(),clearInterval(b)}},[c,t])}function nn(){return tn(),null}var rn={authentication:100,"command-palette":80,copilot:60,"database-row":40,"mobile-navigation":20},B=y((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=B.getState().active;return t===null||t===e}var V=d();function on(e){return{scope:e,auth:e===`agent`?b().Authorization:_().Authorization,target:e===`agent`?L.agentBase:p()}}function sn(e,t){return e?.scope===t.scope&&e.auth===t.auth&&e.target===t.target}function cn(){let[e,t]=(0,P.useState)(!1),[n,r]=(0,P.useState)(`server`),[i,a]=(0,P.useState)(``),o=x(e=>e.baseUrl),s=x(e=>e.setToken),c=x(e=>e.setAgentToken),u=(0,P.useRef)(null),d=(0,P.useRef)(null),f=(0,P.useRef)(null),p=(0,P.useRef)(null),m=B(e=>e.active),h=e&&m===`authentication`;(0,P.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,B.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,P.useEffect)(()=>()=>{B.getState().release(`authentication`)},[]),(0,P.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(()=>u.current?.focus()),i=()=>d.current?Array.from(d.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),B.getState().release(`authentication`)};return h?(0,V.jsx)(`div`,{className:`fixed inset-0 z-[60] flex items-center justify-center bg-black/60 p-4`,children:(0,V.jsxs)(`form`,{ref:d,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,V.jsx)(`h2`,{className:`text-lg font-semibold text-fg`,children:`Authentication required`}),n===`agent`?(0,V.jsxs)(`p`,{className:`mt-1 text-sm text-muted`,children:[`The control agent at `,(0,V.jsx)(`span`,{className:`break-all font-mono text-fg`,children:L.agentBase}),` `,`rejected the request (401). Enter its`,` `,(0,V.jsx)(`span`,{className:`font-mono text-fg`,children:`AGENT_TOKEN`}),` to continue.`]}):(0,V.jsxs)(`p`,{className:`mt-1 text-sm text-muted`,children:[`The server at `,(0,V.jsx)(`span`,{className:`break-all font-mono text-fg`,children:o}),` rejected the request (401). Enter its bearer token to continue.`]}),(0,V.jsx)(`input`,{ref:u,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,V.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-3`,children:[(0,V.jsx)(l,{to:`/settings`,onClick:g,className:`text-xs text-muted underline-offset-2 hover:text-fg hover:underline`,children:`Open Settings instead`}),(0,V.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 H(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:H(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 U=y()(S((e,t)=>({theme:`dark`,toggle:()=>{let n=t().theme===`dark`?`light`:`dark`;pn(n),e({theme:n})},setTheme:t=>{let n=H(t);pn(n),e({theme:n})}}),{name:ln,version:un,storage:g(()=>fn),partialize:e=>({theme:H(e.theme)}),merge:(e,t)=>{let n=e&&typeof e==`object`&&!Array.isArray(e)?e:{};return{...t,theme:H(n.theme)}},onRehydrateStorage:()=>e=>{e&&pn(H(e.theme))}}));function mn(){pn(H(U.getState().theme))}function hn(e){let t=!0;return()=>t?(t=!1,!0):!e()}function gn(e,t=[],n={}){let r=x(e=>e.refreshMs),i=x(e=>JSON.stringify([e.activeProfileId,e.baseUrl,e.agentBaseUrl,e.token,e.agentToken])),a=n.intervalMs??r,o=(0,P.useRef)(null),s=(0,P.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,P.useState)(null),[f,p]=(0,P.useState)(null),[m,h]=(0,P.useState)(!0),g=(0,P.useRef)(e);g.current=e;let _=(0,P.useRef)(!0),v=(0,P.useRef)(0),y=(0,P.useRef)(void 0),b=(0,P.useRef)(!0),S=(0,P.useRef)(!1),C=(0,P.useRef)(0),w=(0,P.useRef)(0),T=(0,P.useRef)(()=>Promise.resolve()),ee=(0,P.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&&b.current&&(b.current=!1,h(!1))}},[]),E=(0,P.useCallback)(()=>T.current(),[]);(0,P.useEffect)(()=>{_.current=!0;let e=++v.current,t=new AbortController;y.current=void 0,b.current=!0,d(null),h(!0),S.current&&(S.current=!1,p(null));let n=null,r=!1,i=!1,o=!1,s=[],c=()=>globalThis.document?.hidden??!1,u=hn(c),f=()=>{n!==null&&clearTimeout(n),n=null},m=()=>{r||(f(),n=setTimeout(()=>{n=null,x(!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=[],x(!0).finally(()=>{for(let t of e)t()})}else m()}}};function x(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=()=>x(!0);T.current=C,x(!1);let w=()=>{c()||r||i||x(!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 _n={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 vn(){let e=x(e=>e.baseUrl),t=x(e=>e.profiles),n=x(e=>e.activeProfileId),r=x(e=>e.activateProfile),{data:i,error:a,loading:o}=gn(async()=>{let e=await Re.health();if(typeof e.ok!=`boolean`)throw Error(`Malformed health response`);return{healthy:e.ok}},[],{intervalMs:15e3}),s=_n[o?`connecting`:a||!i?`offline`:i.healthy?`connected`:`degraded`],c=e.replace(/^https?:\/\//,``)||`local`;return(0,V.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,V.jsx)(`span`,{className:N(`size-1.5 rounded-full`,s.dot),title:s.label}),(0,V.jsx)(`label`,{className:`sr-only`,htmlFor:`active-bunqueue-node`,children:`Active Bunqueue node`}),(0,V.jsx)(`select`,{id:`active-bunqueue-node`,"aria-label":`Active Bunqueue node`,value:n,onChange:e=>r(e.target.value),title:`${t.length} configured node${t.length===1?``:`s`} · ${e}`,className:`min-w-0 flex-1 truncate bg-transparent text-[11px] font-medium text-muted outline-none`,children:t.map(e=>(0,V.jsx)(`option`,{value:e.id,children:e.name},e.id))}),(0,V.jsx)(`span`,{className:`sr-only`,title:e,children:c}),(0,V.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px] text-faint`,"aria-label":`${t.length} nodes`,children:[t.length,`×`]}),(0,V.jsx)(`span`,{className:`sr-only`,children:s.label})]})}function yn(e){let t=null,n=document.activeElement;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(),n?.focus?.()}}function bn({value:e,className:t}){let[n,r]=(0,P.useState)(`idle`),i=(0,P.useRef)(null);(0,P.useEffect)(()=>()=>{i.current&&clearTimeout(i.current)},[]);let a=async()=>{let t=!1;if(navigator.clipboard)try{await navigator.clipboard.writeText(e),t=!0}catch{}t||=yn(e),r(t?`copied`:`failed`),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>r(`idle`),1500)},o=n===`copied`?`Copied to clipboard`:n===`failed`?`Copy failed`:`Copy to clipboard`;return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`button`,{type:`button`,onClick:a,"aria-label":o,title:o,className:N(`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`,t),children:n===`copied`?(0,V.jsx)(Ae,{className:`size-3.5 text-success`}):n===`failed`?(0,V.jsx)(ke,{className:`size-3.5 text-danger`}):(0,V.jsx)(je,{className:`size-3.5`})}),(0,V.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:n===`idle`?``:o})]})}var xn;function Sn(){return xn===void 0&&(xn=Cn()),xn}function Cn(){if(typeof window>`u`)return!1;let{search:e,hash:t}=window.location;return new URLSearchParams(e).has(`demo`)||t.replace(/^#/,``)===`demo`}var wn=`https://github.com/egeominotti/bunqueue-dashboard`,Tn=`https://egeominotti.github.io/bunqueue-dashboard/docs/`,En=`bunx bunqueue-dashboard`;function Dn(){return(0,V.jsxs)(`div`,{className:`mx-3 mb-2 rounded-lg border border-accent/30 bg-accent/5 p-3`,children:[(0,V.jsx)(`p`,{className:`mb-2 text-[11px] font-medium leading-snug text-fg`,children:`Like it? Run it on your own bunqueue server.`}),(0,V.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,V.jsx)(`code`,{className:`min-w-0 flex-1 truncate font-mono text-[11px] text-fg`,children:En}),(0,V.jsx)(bn,{value:En})]}),(0,V.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,V.jsxs)(`a`,{href:wn,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,V.jsx)(`span`,{"aria-hidden":!0,children:`★`}),` Star`]}),(0,V.jsx)(`a`,{href:Tn,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 On(){let e=x(e=>e.baseUrl),t=x(e=>e.profiles),n=x(e=>e.activeProfileId),r=t.find(e=>e.id===n),i=e===`/api`?`localhost:6790`:e.replace(/^https?:\/\//,``);return(0,V.jsxs)(V.Fragment,{children:[Sn()&&(0,V.jsx)(Dn,{}),(0,V.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,V.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,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsx)(`div`,{className:`truncate text-xs font-medium text-fg`,children:r?.name??`bunqueue`}),(0,V.jsx)(`div`,{className:`truncate font-mono text-[10px] text-faint`,title:e,children:i}),(0,V.jsxs)(`div`,{className:`text-[9px] text-faint`,children:[t.length,` configured node`,t.length===1?``:`s`]})]}),(0,V.jsx)(l,{to:`/settings`,"aria-label":`Settings`,className:`text-faint transition-colors hover:text-fg`,children:(0,V.jsx)(ve,{className:`size-4`})})]})]})}var kn=[{section:null,items:[{to:`/`,label:`Overview`,icon:Ie,end:!0},{to:`/fleet`,label:`Fleet`,icon:ge,end:!0}]},{section:`Queues`,items:[{to:`/queues`,label:`Queues`,icon:ye,end:!0},{to:`/jobs`,label:`Jobs`,icon:M,end:!0},{to:`/search`,label:`Global search`,icon:Ce,end:!0},{to:`/failures`,label:`Failures`,icon:Ne,end:!0},{to:`/dlq`,label:`Dead Letter Queue`,icon:Ne},{to:`/cron`,label:`Cron Jobs`,icon:Se}]},{section:`Workflow`,items:[{to:`/workflows`,label:`Overview`,icon:Ie,end:!0},{to:`/flows`,label:`Job Flows`,icon:Oe,end:!0},{to:`/workflows/executions`,label:`Executions`,icon:M,end:!0},{to:`/workflows/waiting`,label:`Waiting & Signals`,icon:Se,end:!0},{to:`/workflows/compensation`,label:`Compensation`,icon:Ne,end:!0},{to:`/workflows/archive`,label:`Archive`,icon:De,end:!0}]},{section:`Monitoring`,items:[{to:`/metrics`,label:`Metrics`,icon:xe,end:!0},{to:`/metrics/history`,label:`Metric history`,icon:xe,end:!0},{to:`/monitoring`,label:`Monitoring setup`,icon:j,end:!0},{to:`/workers`,label:`Workers`,icon:ge},{to:`/logs`,label:`Logs`,icon:Te},{to:`/alerts`,label:`Alerts`,icon:Me}]},{section:`Control`,items:[{to:`/server`,label:`Server`,icon:ge},{to:`/add-job`,label:`Add Job`,icon:M},{to:`/jobs/bulk-add`,label:`Bulk Add`,icon:M},{to:`/job`,label:`Job Inspector`,icon:Ce},{to:`/queue-control`,label:`Queue Control`,icon:ye},{to:`/dlq-control`,label:`DLQ Control`,icon:Ne},{to:`/webhooks`,label:`Webhooks`,icon:j},{to:`/diagnostics`,label:`Diagnostics`,icon:xe},{to:`/benchmark`,label:`Benchmark`,icon:j}]},{section:`Management`,items:[{to:`/database`,label:`Database`,icon:De},{to:`/mcp`,label:`MCP`,icon:j},{to:`/usage`,label:`Usage`,icon:Ee},{to:`/s3`,label:`S3 Backup`,icon:Fe},{to:`/settings`,label:`Settings`,icon:ve}]}];function An(){let e=U(e=>e.theme),t=U(e=>e.toggle),n=e===`dark`;return(0,V.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,V.jsx)(_e,{className:`size-4`}):(0,V.jsx)(Pe,{className:`size-4`}),n?`Light Mode`:`Dark Mode`]})}function jn({open:e=!1,blocked:t=!1,onClose:n}){return(0,V.jsxs)(V.Fragment,{children:[e&&(0,V.jsx)(`button`,{type:`button`,"aria-label":`Close navigation`,tabIndex:-1,onClick:n,className:`fixed inset-0 z-40 bg-black/50 lg:hidden`}),(0,V.jsxs)(`div`,{id:`app-nav`,role:e?`dialog`:`complementary`,"aria-modal":e||void 0,"aria-label":e?`Navigation menu`:void 0,inert:t?!0:void 0,"aria-hidden":t||void 0,className:N(`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,V.jsxs)(`div`,{className:`flex items-center gap-2 px-5 py-5`,children:[(0,V.jsx)(`span`,{className:`text-lg font-bold tracking-tight text-fg`,children:`bunqueue`}),(0,V.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,V.jsx)(`nav`,{className:`flex-1 overscroll-contain overflow-y-auto px-3 pb-4`,children:kn.map(e=>(0,V.jsxs)(`div`,{className:`mb-4`,children:[e.section&&(0,V.jsx)(`div`,{className:`px-2 pb-2 pt-1 text-[10px] font-semibold uppercase tracking-wider text-faint`,children:e.section}),(0,V.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:e.items.map(({to:e,label:t,icon:n,end:r})=>(0,V.jsx)(i,{to:e,end:r,className:({isActive:e})=>N(`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,V.jsxs)(V.Fragment,{children:[e&&(0,V.jsx)(`span`,{className:`absolute inset-y-1.5 left-0 w-0.5 rounded-full bg-accent`}),(0,V.jsx)(n,{className:`size-[18px] shrink-0`}),(0,V.jsx)(`span`,{className:`truncate`,children:t})]})},e))})]},e.section??`root`))}),(0,V.jsx)(vn,{}),(0,V.jsx)(An,{}),(0,V.jsx)(On,{})]})]})}var Mn=`https://egeominotti.github.io/bunqueue-dashboard/docs/`,Nn=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`;function Pn(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 Fn(){let[e,t]=(0,P.useState)(``),[n,r]=(0,P.useState)(0),i=B(e=>e.active===`command-palette`),a=B(e=>e.release),o=f(),s=U(e=>e.toggle),c=(0,P.useRef)(null),l=(0,P.useRef)(null),u=(0,P.useRef)(null),d=(0,P.useRef)(null),p=(0,P.useCallback)(()=>a(`command-palette`),[a]),m=(0,P.useMemo)(()=>{let e=kn.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(Mn,`_blank`,`noopener`)}];return[...e,...t]},[o,s]),h=(0,P.useMemo)(()=>{let t=e.trim().toLowerCase();return t?m.filter(e=>`${e.label} ${e.hint}`.toLowerCase().includes(t)):m},[m,e]);(0,P.useEffect)(()=>{let e=e=>{if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`){e.preventDefault();let t=B.getState();t.active===`command-palette`?t.release(`command-palette`):t.request(`command-palette`)}},t=()=>B.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,P.useEffect)(()=>{if(!i)return;let e=document.activeElement;t(``),r(0);let n=u.current&&!document.getElementById(`app-shell`)?Pn(u.current):()=>{},a=requestAnimationFrame(()=>c.current?.focus()),o=e=>{if(e.key===`Escape`){e.preventDefault(),p();return}if(e.key!==`Tab`)return;let t=d.current;if(!t)return;let n=Array.from(t.querySelectorAll(Nn));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,p]),(0,P.useEffect)(()=>{l.current?.querySelector(`[data-idx="${n}"]`)?.scrollIntoView({block:`nearest`})},[n]);let g=(0,P.useCallback)(e=>{e&&(e.run(),p())},[p]);return i?(0,V.jsxs)(`div`,{ref:u,className:`fixed inset-0 z-50 flex items-start justify-center p-4 pt-[12vh]`,children:[(0,V.jsx)(`button`,{type:`button`,tabIndex:-1,"aria-label":`Close command palette`,onClick:p,className:`fixed inset-0 bg-black/50`}),(0,V.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,V.jsx)(`input`,{ref:c,role:`combobox`,value:e,onChange:e=>{t(e.target.value),r(0)},onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),p()):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,V.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,V.jsx)(`div`,{role:`presentation`,className:`px-4 py-6 text-center text-sm text-faint`,children:`No matches`}),h.map((e,t)=>(0,V.jsx)(`div`,{role:`presentation`,children:(0,V.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,V.jsx)(`span`,{className:`truncate`,children:e.label}),(0,V.jsx)(`span`,{className:`shrink-0 text-xs text-faint`,children:e.hint})]})},e.id))]}),(0,V.jsxs)(`div`,{className:`flex items-center justify-between border-t border-line px-4 py-2 text-xs text-faint`,children:[(0,V.jsx)(`span`,{children:`↑↓ navigate · ↵ open · esc close`}),(0,V.jsx)(`span`,{className:`font-mono`,children:`⌘K`})]})]})]}):null}var In=`bq-dash-copilot`,Ln=1,Rn=new Set([`anthropic`,`openai`,`google`,`zai`,`openrouter`,`custom`]),W={provider:`anthropic`,baseURL:``,model:`claude-opus-4-8`,apiKey:``};function zn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Bn(e,t){return typeof e==`string`?e:t}function Vn(e){return typeof e==`string`&&Rn.has(e)?e:W.provider}function Hn(e,t=``){let n=zn(e)?e:{},r=Vn(n.provider);return{provider:r,baseURL:r===`custom`?Bn(n.baseURL,W.baseURL):W.baseURL,model:Bn(n.model,W.model),apiKey:t}}function G(e){let t=Hn((zn(e)?e:{}).config);return{config:{provider:t.provider,baseURL:t.baseURL,model:t.model}}}var Un=0,Wn=()=>globalThis.crypto?.randomUUID?.()??`${Date.now()}-${(Un++).toString(36)}-${Math.random().toString(36).slice(2,8)}`,K=new Map,Gn=(e,t,n)=>e.map(e=>e.id===t?n(e):e);function Kn(e){return G(e)}var qn=h({key:In,version:Ln,sanitizeState:G});y()(S(e=>({open:!1,config:{...W},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:Hn(n,Bn(n.apiKey,``))}}),clear:()=>{for(let e of K.values())e(!1);K.clear(),e({messages:[],pending:[]})},cancelPending:()=>{for(let e of K.values())e(!1);K.clear(),e({pending:[]})},setBusy:t=>e({busy:t}),addUser:t=>e(e=>({messages:[...e.messages,{id:Wn(),role:`user`,content:t}]})),startAssistant:()=>{let t=Wn();return e(e=>({messages:[...e.messages,{id:t,role:`assistant`,content:``,tools:[]}]})),t},appendAssistant:(t,n)=>e(e=>({messages:Gn(e.messages,t,e=>({...e,content:e.content+n}))})),finishAssistant:(t,n)=>e(e=>({messages:Gn(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:Gn(e.messages,t,e=>({...e,tools:[...e.tools??[],n]}))})),updateTool:(t,n,r)=>e(e=>({messages:Gn(e.messages,t,e=>({...e,tools:(e.tools??[]).map(e=>e.id===n?{...e,...r}:e)}))})),requestConfirm:t=>new Promise(n=>{let r=Wn();K.set(r,n),e(e=>({pending:[...e.pending,{...t,id:r}]}))}),resolveConfirm:(t,n)=>{let r=K.get(t);r&&(K.delete(t),r(n)),e(e=>({pending:e.pending.filter(e=>e.id!==t)}))}}),{name:In,version:Ln,storage:g(()=>qn),partialize:e=>Kn(e),migrate:G,merge:(e,t)=>{let n=G(e);return{...t,config:{...n.config,apiKey:``}}}}));var Jn=new Set;function Yn(){for(let e of[...Jn])e()}function q(e){let t=(0,P.lazy)(r);function n(){Jn.delete(n),t=(0,P.lazy)(r)}function r(){return e().catch(e=>{throw Jn.add(n),e})}function i(e){return(0,P.createElement)(t,e)}return i}var Xn=`modulepreload`,Zn=function(e,t){return new URL(e,t).href},Qn={},$n=function(e){return e.pathname.endsWith(`.css`)},er=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},J=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=Zn(t,n);let r=s(t),i=$n(r);return er(Qn,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:Xn,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},tr={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`},nr={sm:`h-8 px-3 text-xs gap-1.5`,md:`h-9 px-4 text-sm gap-2`};function rr({children:e,variant:t=`default`,size:n=`md`,className:r,...i}){return(0,V.jsx)(`button`,{type:`button`,className:N(`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`,tr[t],nr[n],r),...i,children:e})}function ir({children:e,className:t,variant:n=`ghost`,...r}){return(0,V.jsx)(`button`,{type:`button`,className:N(`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`,tr[n],t),...r,children:e})}function ar({children:e,className:t,padded:n=!0}){return(0,V.jsx)(`div`,{className:N(`rounded-xl border border-line bg-surface`,n&&`p-5`,t),children:e})}function or({title:e,action:t,icon:n,headingLevel:r=2}){let i=`h${r}`;return(0,V.jsxs)(`div`,{className:`mb-4 flex items-center justify-between gap-3`,children:[(0,V.jsxs)(i,{className:`flex items-center gap-2 text-base font-semibold text-fg`,children:[n,e]}),t]})}function sr({className:e,decorative:t=!1}){let n=N(`inline-block size-4 animate-spin rounded-full border-2 border-current border-t-transparent`,e);return t?(0,V.jsx)(`span`,{className:n,"aria-hidden":`true`}):(0,V.jsx)(`span`,{className:n,role:`status`,"aria-label":`Loading`})}function cr({label:e=`Loading…`}){return(0,V.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,V.jsx)(sr,{decorative:!0}),e]})}function lr({icon:e,title:t,hint:n,action:r}){return(0,V.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,V.jsx)(`div`,{className:`text-faint [&>svg]:size-8`,children:e}),(0,V.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:t}),n&&(0,V.jsx)(`div`,{className:`max-w-sm text-xs text-faint`,children:n}),r&&(0,V.jsx)(`div`,{className:`mt-2`,children:r})]})}function ur({onRetry:e,message:t=`Could not refresh bunqueue data — the view may be unavailable or stale.`}){return(0,V.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,V.jsx)(`span`,{className:`size-2 shrink-0 rounded-full bg-amber-400`,"aria-hidden":`true`}),(0,V.jsx)(`span`,{className:`text-amber-300/90 light:text-amber-700`,children:t}),e&&(0,V.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 dr({error:e,onRetry:t}){return(0,V.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,V.jsx)(`div`,{className:`text-sm font-medium text-danger`,children:`Something went wrong`}),(0,V.jsx)(`div`,{className:`max-w-md text-xs text-faint`,children:e.message}),t&&(0,V.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 fr=class extends P.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&&(Yn(),this.setState({error:null}))}render(){let{error:e}=this.state;return e?(0,V.jsx)(`div`,{className:`flex min-h-screen items-center justify-center p-6`,children:(0,V.jsxs)(ar,{className:`w-full max-w-lg`,children:[(0,V.jsx)(dr,{error:e}),(0,V.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,V.jsx)(rr,{onClick:()=>window.location.reload(),children:`Reload`})})]})}):this.props.children}},pr={success:{bar:`bg-emerald-500`,title:`text-success`},error:{bar:`bg-red-500`,title:`text-danger`},info:{bar:`bg-accent`,title:`text-accent`}};function mr({toast:e,dismiss:t}){(0,P.useEffect)(()=>{let n=window.setTimeout(()=>t(e.id),e.ttlMs);return()=>window.clearTimeout(n)},[e.id,e.ttlMs,t]);let n=pr[e.level];return(0,V.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,V.jsx)(`span`,{className:N(`w-1 shrink-0`,n.bar),"aria-hidden":`true`}),(0,V.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3 px-3 py-2.5`,children:[(0,V.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,V.jsx)(`div`,{className:N(`text-sm font-medium`,n.title),children:e.title}),e.detail&&(0,V.jsx)(`div`,{className:`mt-0.5 break-words text-xs text-muted`,children:e.detail})]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>t(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,V.jsx)(ke,{className:`size-4`})})]})]})}function hr(){let e=R(e=>e.toasts),t=R(e=>e.dismiss);return(0,V.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,V.jsx)(mr,{toast:e,dismiss:t},e.id))})}function gr(e,t){(0,P.useLayoutEffect)(()=>{let t=e.current;t&&(t.scrollTop=0,t.scrollLeft=0)},[t,e])}var _r={"/":`Overview`,"/fleet":`Fleet`,"/queues":`Queues`,"/jobs":`Jobs`,"/search":`Global search`,"/failures":`Failure diagnostics`,"/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`,"/metrics/history":`Native metric history`,"/monitoring":`Monitoring setup`,"/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 vr(e){let t=e.length>1?e.replace(/\/+$/,``):e,n=t.toLowerCase();if(_r[n])return _r[n];let r=n.startsWith(`/queues-classic/`);if(r||n.startsWith(`/queues/`)){let e=t.slice(r?16:8);try{e=decodeURIComponent(e)}catch{}return`${e} · Queue${r?` (classic)`:``}`}return`Page not found`}function yr(e){(0,P.useEffect)(()=>{document.title=`${e} · bunqueue`},[e])}var br=Sn();function xr({onMenu:e,navOpen:t=!1}){let{pathname:n}=a(),r=vr(n);return yr(r),(0,V.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,V.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,V.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,V.jsx)(we,{className:`size-5`})}),(0,V.jsxs)(`div`,{className:`truncate text-sm text-muted`,children:[(0,V.jsx)(`span`,{className:`text-faint`,children:r}),(0,V.jsx)(`span`,{className:`mx-2 hidden text-faint sm:inline`,children:`·`}),(0,V.jsx)(`span`,{className:`hidden text-faint sm:inline`,children:`bunqueue`})]})]}),(0,V.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[br&&(0,V.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,V.jsx)(`span`,{className:`size-1.5 rounded-full bg-accent`}),`Live demo`]}),(0,V.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,V.jsx)(be,{className:`size-5`})}),(0,V.jsxs)(`button`,{type:`button`,onClick:()=>window.dispatchEvent(new Event(`command-palette:open`)),title:`Command palette (⌘K)`,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,V.jsx)(`span`,{children:`Search`}),(0,V.jsx)(`kbd`,{className:`rounded border border-line bg-surface-2 px-1 font-mono text-[10px]`,children:`⌘K`})]}),(0,V.jsx)(l,{to:`/settings`,title:`Settings`,"aria-label":`bq 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 Sr(){let[e,t]=(0,P.useState)(!1),{pathname:n,key:r}=a(),i=(0,P.useRef)(null),o=(0,P.useRef)(null),c=B(e=>e.active),l=B(e=>e.request),u=B(e=>e.release),d=e&&c===`mobile-navigation`,f=(0,P.useCallback)(()=>{t(!1),u(`mobile-navigation`)},[u]);return gr(i,r),(0,P.useEffect)(()=>f(),[n,f]),(0,P.useEffect)(()=>{let e=window.matchMedia(`(min-width: 1024px)`),t=()=>e.matches&&f();return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[f]),(0,P.useEffect)(()=>{if(!d)return;let e=e=>{e.key===`Escape`&&f()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[d,f]),(0,P.useEffect)(()=>{if(!d)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=o.current;an(`mobile-navigation`)&&e?.isConnected&&e.focus()}},[d]),(0,P.useEffect)(()=>{e&&c!==`mobile-navigation`&&t(!1)},[e,c]),(0,P.useEffect)(()=>{let e=()=>f();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)}},[f]),(0,P.useEffect)(()=>()=>{B.getState().release(`mobile-navigation`)},[]),(0,V.jsx)(fr,{children:(0,V.jsxs)(`div`,{id:`app-shell`,className:`flex h-screen overflow-hidden bg-bg text-fg`,children:[(0,V.jsx)(`a`,{href:`#main`,onClick:e=>{e.preventDefault(),i.current?.focus()},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,V.jsx)(jn,{open:d,blocked:c!==null&&c!==`mobile-navigation`,onClose:f}),(0,V.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,V.jsx)(xr,{navOpen:d,onMenu:e=>{l(`mobile-navigation`)&&(o.current=e,t(!0))}}),(0,V.jsx)(`main`,{ref:i,id:`main`,tabIndex:-1,className:N(`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`,d?`overflow-hidden`:`overflow-y-auto`),children:(0,V.jsx)(P.Suspense,{fallback:(0,V.jsx)(`div`,{className:`p-2 text-sm text-muted`,children:`Loading…`}),children:(0,V.jsx)(fr,{resetKey:r,children:(0,V.jsx)(s,{})})})})]}),(0,V.jsx)(Fn,{}),(0,V.jsx)(cn,{}),!1,(0,V.jsx)(hr,{}),(0,V.jsx)(nn,{})]})})}function Cr({title:e,description:t,live:n,actions:r,back:i}){return(0,V.jsxs)(`div`,{className:`mb-6 flex flex-wrap items-start justify-between gap-4`,children:[(0,V.jsxs)(`div`,{className:`flex items-start gap-3`,children:[i,(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,V.jsx)(`h1`,{className:`text-2xl font-bold tracking-tight text-fg`,children:e}),n&&(0,V.jsx)(Le,{label:`Live`,tone:`green`})]}),t&&(0,V.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:t})]})]}),r&&(0,V.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:r})]})}var wr={default:`text-fg`,green:`text-success`,red:`text-danger`,blue:`text-blue-400 light:text-blue-700`,amber:`text-warning`,accent:`text-accent`};function Y({label:e,value:t,tone:n=`default`,hint:r,compact:i}){return(0,V.jsxs)(`div`,{className:N(`rounded-xl border border-line bg-surface`,i?`px-4 py-3`:`px-5 py-4`),children:[(0,V.jsx)(`div`,{className:`text-[11px] font-medium uppercase tracking-wider text-faint`,children:e}),(0,V.jsx)(`div`,{className:N(`mt-2 font-semibold tnum`,i?`text-xl`:`text-3xl`,wr[n]),children:t}),r!=null&&(0,V.jsx)(`div`,{className:`mt-1 text-xs text-faint`,children:r})]})}var Tr=new Intl.NumberFormat(`de-DE`),Er=new Intl.DateTimeFormat(`it-IT`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`});function X(e){return e==null||!Number.isFinite(e)?`0`:Tr.format(e)}function Dr(e,t=2){return e==null||!Number.isFinite(e)?`0%`:`${(e*100).toFixed(t)}%`}function Or(e,t){let n=e+t;return n>0?t/n:null}function kr(e){if(e==null||!Number.isFinite(e))return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:Er.format(t)}function Ar(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 jr(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 Mr(e,t){if(e==null||t==null)return;let n=t-e;return n>=0?n:void 0}function Nr(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 Pr(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 Fr(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 Ir=/(?:\u001b\[[0-9;?]*[ -/]*[@-~]|\u001b[@-Z\\^_])/g;function Lr(e){return e.replace(Ir,``)}function Rr(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 zr={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};function Br(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Vr(e,t){return Br(e)&&t.every(t=>typeof e[t]==`number`&&Number.isFinite(e[t]))}function Hr(e){if(!Br(e)||!Vr(e.stats,[`waiting`,`active`,`completed`,`dlq`,`totalPushed`,`totalPulled`,`uptime`])||!Vr(e.throughput,[`pushPerSec`,`pullPerSec`])||!Vr(e.memory,[`rss`])||!Vr(e.crons,[`total`]))throw Error(`Malformed /dashboard response: required overview metrics are missing or non-numeric.`)}var Ur=class extends Error{status;lastEventIdSent;constructor(e,t,n=!1){super(e),this.status=t,this.lastEventIdSent=n,this.name=`SseConnectError`}},Wr=new Set([400,409,413,431]);function Gr(e){return e instanceof Ur&&e.lastEventIdSent&&Wr.has(e.status)}function Kr(e){return!e.includes(`\0`)&&e.length<=4096}function qr(e){return!0}function Jr(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`&&Kr(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 Yr=45e3,Xr=262144;async function Zr(e,t,n,r=Yr,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`,..._()}),r=!1;if(i&&Kr(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 Ur(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 Ur(`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 ${Xr}-character limit`);break}if(r>262144)throw Error(`SSE frame exceeds the ${Xr}-character limit`);let a=d.slice(0,r);d=d.slice(r+i);let o=Jr(a.replace(/\r/g,``));o&&t(o)}}}finally{l.releaseLock()}}finally{clearTimeout(s),n.removeEventListener(`abort`,o),a.abort()}}var Z={total:0,completed:0,failed:0,waiting:0,active:0},Qr=250,$r=()=>typeof performance<`u`?performance.now():Date.now();function ei(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ti(e,t){return typeof e==`string`&&e.length<=t?e:void 0}function ni(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function ri(e,t){let n=ni(e);return n!==void 0&&Math.abs(n)<=864e13?n:Number.isFinite(t)&&Math.abs(t)<=864e13?t:0}function ii(e){let t=ei(e)?e:{},n=Date.now();return{queue:ti(t.queue,256),jobId:ti(t.jobId,1024),name:ti(t.name,512),timestamp:ri(t.timestamp,n),error:ti(t.error,4096),progress:ni(t.progress)}}function ai(e){let t=e.includes(`:`)?e.split(`:`)[1]:e;switch(t){case`pushed`:case`added`:return`waiting`;case`pulled`:case`progress`:return`active`;default:return t}}function oi(e){let t=x(e=>e.baseUrl),n=x(e=>e.token),[r,i]=(0,P.useState)([]),[a,o]=(0,P.useState)(Z),[s,c]=(0,P.useState)(0),[l,u]=(0,P.useState)(!1),[d,f]=(0,P.useState)(null),p=(0,P.useRef)([]),m=(0,P.useRef)(0),h=JSON.stringify([t,n,e??null]),g=(0,P.useRef)(h),_=g.current===h,v=_?r:[],y=_?a:Z,b=_?s:0,S=_?l:!1,C=_?d:null;return(0,P.useEffect)(()=>{let t=new AbortController,n=++m.current,r=0,a=!1,s=[],l={...Z},d,_=()=>!a&&m.current===n;g.current=h,i([]),o(Z),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),qr(e)&&(u(e=>_()?!0:e),f(e=>_()?null:e)),!e.event.startsWith(`job:`)))return;let t=ii(e.data),n=ai(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`&&e.event!==`job:progress`&&(a.active+=1),p.current.push($r())};(async()=>{let n=0;for(;!a;){let r=null,i=d,a=!1;try{await Zr(Re.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&&Gr(r)&&(d=void 0),!_())break;u(e=>!_()&&e),f(e=>_()?r:e),n=r?Math.min((a?0: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,Qr):t)}let e=l;e.total&&(l={...Z},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,P.useEffect)(()=>{let e=setInterval(()=>{let e=$r();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:b,connected:S,error:C}}function si(){let{events:e,connected:t,error:n}=oi();return(0,V.jsxs)(`div`,{className:`mt-8`,children:[(0,V.jsx)(ci,{title:`Recent Activity`,to:`/logs`}),(0,V.jsxs)(ar,{padded:!1,children:[n&&e.length>0&&(0,V.jsxs)(`p`,{className:`border-b border-line px-5 py-2 text-xs text-warning`,children:[`Event stream unavailable — `,n.message,`. Reconnecting…`]}),e.length===0?(0,V.jsx)(`p`,{role:n?`alert`:void 0,className:N(`py-8 text-center text-sm`,n?`text-warning`:`text-faint`),children:n?`Event stream unavailable — ${n.message}. Reconnecting…`:t?`Waiting for live activity…`:`Connecting to the event stream…`}):(0,V.jsx)(`ul`,{className:`divide-y divide-line`,children:e.slice(0,8).map(e=>(0,V.jsxs)(`li`,{className:`flex items-center justify-between px-5 py-3`,children:[(0,V.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,V.jsx)(`span`,{className:N(`size-2 rounded-full`,li(e.status))}),(0,V.jsxs)(`div`,{className:`text-sm`,children:[(0,V.jsx)(`span`,{className:`font-mono font-medium text-fg`,children:e.queue||`—`}),(0,V.jsx)(`span`,{className:`text-faint`,children:` · `}),(0,V.jsx)(`span`,{className:`font-mono text-xs text-faint`,children:e.jobId?e.jobId.slice(0,8):`—`}),(0,V.jsx)(`span`,{className:`text-faint`,children:` · `}),(0,V.jsx)(`span`,{className:`capitalize text-muted`,children:e.status})]})]}),(0,V.jsx)(`span`,{className:`text-xs text-faint`,children:Ar(e.timestamp)})]},e.seq))})]})]})}function ci({title:e,to:t}){return(0,V.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,V.jsx)(`h2`,{className:`text-lg font-semibold text-fg`,children:e}),(0,V.jsxs)(l,{to:t,className:`flex items-center gap-1 text-sm text-muted hover:text-fg`,children:[`View All `,(0,V.jsx)(Oe,{className:`size-3.5`})]})]})}function Q({label:e,value:t,tone:n}){return(0,V.jsxs)(`span`,{children:[e,` `,(0,V.jsx)(`span`,{className:N(`tnum font-semibold`,n),children:t==null?`—`:X(t)})]})}function li(e){return e===`completed`?`bg-emerald-400`:e===`failed`?`bg-red-400`:e===`active`?`bg-blue-400`:e===`waiting`?`bg-amber-400`:`bg-accent`}function ui(){let e=x(e=>e.baseUrl),t=(0,P.useRef)(null),{data:n,error:r,loading:i,refetch:a}=gn(async()=>{let[e,n]=await Promise.all([L.overview(),L.queuesSummary()]);Hr(e);let r=[...n].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=n.reduce((e,t)=>e+(t.counts?.failed??0),0),a=n.reduce((e,t)=>e+t.counts.waiting+t.counts.prioritized,0);return t.current=Date.now(),{overview:e,queuesTotal:n.length,details:r,failedTotal:i,readyTotal:a}},[]);if(i&&!n&&!r)return(0,V.jsx)(cr,{label:`Loading overview…`});if(r&&!n)return(0,V.jsxs)(`div`,{children:[(0,V.jsx)(Cr,{title:`Overview`,description:`Real-time system health is unavailable.`}),(0,V.jsx)(dr,{error:r,onRetry:a})]});let{overview:o,queuesTotal:s,details:c,failedTotal:u,readyTotal:d}=n??zr,{stats:f,throughput:p,memory:m,crons:h}=o,g=Or(f.completed,u),_=e===`/api`?`localhost:6790`:e.replace(/^https?:\/\//,``),v=f.uptime?Nr(f.uptime/1e3):`—`,y=Rr(m.rss*1024*1024),b=!!r;return(0,V.jsxs)(`div`,{children:[(0,V.jsx)(Cr,{title:`Overview`,description:`Real-time system health at a glance.`,live:!!n&&!r}),r&&(0,V.jsx)(ur,{message:`Connection lost — showing the last successful overview snapshot.`,onRetry:a}),(0,V.jsxs)(`div`,{className:N(`mb-6 flex flex-wrap items-center justify-between gap-y-2 rounded-xl border px-5 py-4`,b?`border-amber-500/25 bg-amber-500/[0.06]`:`border-emerald-500/25 bg-emerald-500/[0.06]`),children:[(0,V.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,V.jsxs)(`span`,{className:`relative flex size-2.5`,children:[!b&&(0,V.jsx)(`span`,{className:`absolute inline-flex size-full animate-ping rounded-full bg-emerald-400 opacity-60`}),(0,V.jsx)(`span`,{className:N(`relative inline-flex size-2.5 rounded-full`,b?`bg-amber-400`:`bg-emerald-400`)})]}),(0,V.jsxs)(`div`,{className:`min-w-0`,children:[(0,V.jsx)(`div`,{className:N(`font-semibold`,b?`text-warning`:`text-success`),children:b?`Connection lost — showing last known data`:`bunqueue server connected`}),(0,V.jsxs)(`div`,{className:`truncate font-mono text-xs text-muted`,children:[_,` · uptime `,v,` · `,y,` RAM`,b&&(0,V.jsxs)(V.Fragment,{children:[` `,`· last updated `,t.current?Ar(t.current):`never`]})]})]})]}),(0,V.jsx)(`span`,{className:N(`rounded-full px-3 py-1 text-xs font-medium`,b?`bg-amber-500/15 text-warning`:`bg-emerald-500/15 text-success`),children:b?`Stale`:`Online`})]}),(0,V.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-3`,children:[(0,V.jsx)(Y,{label:`Error Rate`,value:g==null?`—`:Dr(g),tone:g==null?`default`:g>.05?`red`:`green`,hint:`failed / processed`}),(0,V.jsx)(Y,{label:`Failed`,value:X(u),tone:u?`red`:`default`,hint:`recorded across queues`}),(0,V.jsx)(Y,{label:`DLQ`,value:X(f.dlq),tone:f.dlq?`red`:`default`,hint:`dead-lettered jobs`})]}),(0,V.jsxs)(`div`,{className:`mt-4 grid grid-cols-2 gap-4 md:grid-cols-3 xl:grid-cols-6`,children:[(0,V.jsx)(Y,{label:`Completed`,value:X(f.completed),tone:`green`,compact:!0}),(0,V.jsx)(Y,{label:`Active`,value:X(f.active),tone:`blue`,compact:!0}),(0,V.jsx)(Y,{label:`Ready backlog`,value:X(d),tone:d>100?`amber`:`default`,hint:`waiting + prioritized`,compact:!0}),(0,V.jsx)(Y,{label:`Push/sec`,value:p.pushPerSec.toFixed(1),tone:`accent`,hint:`${Pr(f.totalPushed)} since restart`,compact:!0}),(0,V.jsx)(Y,{label:`Pull/sec`,value:p.pullPerSec.toFixed(1),tone:`accent`,hint:`${Pr(f.totalPulled)} since restart`,compact:!0}),(0,V.jsx)(Y,{label:`Queues`,value:X(s),hint:`${h.total} cron active`,compact:!0})]}),(0,V.jsxs)(`div`,{className:`mt-8`,children:[(0,V.jsx)(ci,{title:`Queue Health — most loaded`,to:`/queues`}),c.length===0?(0,V.jsx)(ar,{children:(0,V.jsx)(`p`,{className:`py-4 text-center text-sm text-faint`,children:`No queues yet.`})}):(0,V.jsx)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3`,children:c.map(e=>(0,V.jsxs)(l,{to:`/queues/${encodeURIComponent(e.name)}`,className:`rounded-xl border border-line bg-surface p-4 transition-colors hover:border-line-strong`,children:[(0,V.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,V.jsx)(`span`,{className:`truncate font-mono text-sm font-medium text-accent`,children:e.name}),(0,V.jsx)(`span`,{className:N(`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,V.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 font-mono text-xs text-faint`,children:[(0,V.jsx)(Q,{label:`W`,value:e.counts?.waiting,tone:`text-warning`}),(0,V.jsx)(Q,{label:`P`,value:e.counts?.prioritized,tone:`text-orange-400`}),(0,V.jsx)(Q,{label:`A`,value:e.counts?.active,tone:`text-blue-400`}),(0,V.jsx)(Q,{label:`C`,value:e.counts?.completed,tone:`text-success`}),(0,V.jsx)(Q,{label:`F`,value:e.counts?.failed,tone:`text-danger`})]})]},e.name))})]}),(0,V.jsx)(si,{})]})}function di(){return(0,V.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-3 py-24 text-center`,children:[(0,V.jsx)(`h1`,{className:`text-5xl font-bold text-faint`,children:`404`}),(0,V.jsx)(`p`,{className:`text-sm text-muted`,children:`This page does not exist.`}),(0,V.jsx)(l,{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 fi=q(()=>J(()=>import(`./AddJob-jmrtBSrz.js`).then(e=>e.t).then(e=>({default:e.AddJob})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]),import.meta.url)),pi=q(()=>J(()=>import(`./Benchmark-7ULYlqmK.js`).then(e=>({default:e.Benchmark})),__vite__mapDeps([10,1,2,5,11,7,6,12]),import.meta.url)),mi=q(()=>J(()=>import(`./BulkAddJobs-C2sxF-St.js`).then(e=>({default:e.BulkAddJobs})),__vite__mapDeps([13,1,2,3,4,5,6,7,8,9]),import.meta.url)),hi=q(()=>J(()=>import(`./CronManager-CZvC_uox.js`).then(e=>({default:e.CronManager})),__vite__mapDeps([14,1,2,3,11,7,6,15,8,5,9,0,4]),import.meta.url)),gi=q(()=>J(()=>import(`./Database-B1Dx5OV2.js`).then(e=>({default:e.Database})),__vite__mapDeps([16,1,2,5,4,3,11,7,6,15]),import.meta.url)),_i=q(()=>J(()=>import(`./Diagnostics-D1LEl6O4.js`).then(e=>({default:e.Diagnostics})),__vite__mapDeps([17,1,2,7,18,5,3,19,20]),import.meta.url)),vi=q(()=>J(()=>import(`./DlqControl-Dhcz7LY7.js`).then(e=>({default:e.DlqControl})),__vite__mapDeps([21,1,2,11,7,6,22,15,23,24,20,5,25,8,19,26]),import.meta.url)),yi=q(()=>J(()=>import(`./DlqPro-CW80tQdN.js`).then(e=>({default:e.DlqPro})),__vite__mapDeps([27,1,2,11,7,6,22,15,23,24,20,5,25,8,19,26]),import.meta.url)),bi=q(()=>J(()=>import(`./Flows-Bzq3onQ3.js`).then(e=>({default:e.Flows})),__vite__mapDeps([28,1,2,5,3,4,7,20,19,29]),import.meta.url)),xi=q(()=>J(()=>import(`./JobInspector-nTUU1VOU.js`).then(e=>({default:e.JobInspector})),__vite__mapDeps([30,1,2,5,3,4,11,7,6,22,23,29]),import.meta.url)),Si=q(()=>J(()=>import(`./JobsPro-CSHP2AYC.js`).then(e=>({default:e.JobsPro})),__vite__mapDeps([31,1,2,11,7,6,20,5,22,15,8,29]),import.meta.url)),Ci=q(()=>J(()=>import(`./LogsPro-BA-wZ8Dr.js`).then(e=>({default:e.LogsPro})),__vite__mapDeps([32,1,2,5,11,7,6,15,24,20,25,8,19,26,23]),import.meta.url)),wi=q(()=>J(()=>import(`./McpServer-BvOGxNnE.js`).then(e=>({default:e.McpServer})),__vite__mapDeps([33,2,1,34]),import.meta.url)),Ti=q(()=>J(()=>import(`./MetricsPro-DHPmT4Md.js`).then(e=>({default:e.MetricsPro})),__vite__mapDeps([35,1,2,7,15,12,36,5]),import.meta.url)),Ei=q(()=>J(()=>import(`./QueueControl-DbQwvvtX.js`).then(e=>({default:e.QueueControl})),__vite__mapDeps([24,1,2,7,6,20,5,25,8,19,26,23]),import.meta.url)),Di=q(()=>J(()=>import(`./QueueDetailPro-AUf6FktH.js`).then(e=>({default:e.QueueDetailPro})),__vite__mapDeps([37,1,2,11,7,20,5,8,23,12,26,6,36]),import.meta.url)),Oi=q(()=>J(()=>import(`./QueuesOverview-DQ6ta4wA.js`).then(e=>({default:e.QueuesOverview})),__vite__mapDeps([38,1,2,11,7,15,8,5,39]),import.meta.url)),ki=q(()=>J(()=>import(`./S3BackupPro-BUzcmhnj.js`).then(e=>({default:e.S3BackupPro})),__vite__mapDeps([40,1,2,5,4,3,11,6,7]),import.meta.url)),Ai=q(()=>J(()=>import(`./ServerControl-WUZjdjPX.js`).then(e=>({default:e.ServerControl})),__vite__mapDeps([41,1,2,11,7,6,34,19,20,5]),import.meta.url)),ji=q(()=>J(()=>import(`./UsagePro-BQJWWwW3.js`).then(e=>({default:e.UsagePro})),__vite__mapDeps([42,2,1]),import.meta.url)),Mi=q(()=>J(()=>import(`./Webhooks-DS3xmbEi.js`).then(e=>({default:e.Webhooks})),__vite__mapDeps([43,1,2,11,6,7,15,8,5]),import.meta.url)),Ni=q(()=>J(()=>import(`./WorkersPro-BJgab7of.js`).then(e=>({default:e.WorkersPro})),__vite__mapDeps([44,1,2,11,7,15,8,5]),import.meta.url)),$=q(()=>J(()=>import(`./Workflows-BLXlNIxO.js`).then(e=>({default:e.Workflows})),__vite__mapDeps([45,1,2,5,3,4,7,20,19]),import.meta.url)),Pi=q(()=>J(()=>import(`./Alerts-DrwYvhbk.js`).then(e=>({default:e.Alerts})),__vite__mapDeps([46,1,2,5,11,6,7]),import.meta.url)),Fi=q(()=>J(()=>import(`./Fleet-CsscadVQ.js`).then(e=>({default:e.Fleet})),__vite__mapDeps([47,1,2,5,20]),import.meta.url)),Ii=q(()=>J(()=>import(`./GlobalSearch-CeCvA6Tm.js`).then(e=>({default:e.GlobalSearch})),__vite__mapDeps([48,1,2,6,7,49,5,4,3]),import.meta.url)),Li=q(()=>J(()=>import(`./FailureDiagnostics-DkLd6szC.js`).then(e=>({default:e.FailureDiagnostics})),__vite__mapDeps([50,2,1,49,5,4,3,6,7]),import.meta.url)),Ri=q(()=>J(()=>import(`./MetricHistory-Dmu-XqaO.js`).then(e=>({default:e.MetricHistory})),__vite__mapDeps([51,1,2,5,3,4,6,7,20,25]),import.meta.url)),zi=q(()=>J(()=>import(`./MonitoringSetup-60_ib3rf.js`).then(e=>({default:e.MonitoringSetup})),__vite__mapDeps([52,1,2,5,6,7,22]),import.meta.url)),Bi=q(()=>J(()=>import(`./Cron-BY9EGj2n.js`).then(e=>({default:e.Cron})),__vite__mapDeps([53,1,2,11,18,5,3,15,8]),import.meta.url)),Vi=q(()=>J(()=>import(`./Dlq-CPxeigKg.js`).then(e=>({default:e.Dlq})),__vite__mapDeps([54,1,2,11,18,5,3,6,7,15,23,55,56,39]),import.meta.url)),Hi=q(()=>J(()=>import(`./Jobs-OwKndzhg.js`).then(e=>({default:e.Jobs})),__vite__mapDeps([56,1,2,11,7,18,5,3,6,23,39,55]),import.meta.url)),Ui=q(()=>J(()=>import(`./Logs-CiYuY8ix.js`).then(e=>({default:e.Logs})),__vite__mapDeps([57,1,2,11,7,6,15,55,18,5,3,56,23,39]),import.meta.url)),Wi=q(()=>J(()=>import(`./Metrics-BF38GgYm.js`).then(e=>({default:e.Metrics})),__vite__mapDeps([58,2,1,18,5,3]),import.meta.url)),Gi=q(()=>J(()=>import(`./Overview-DBLxV_vL.js`).then(e=>({default:e.Overview})),__vite__mapDeps([59,2,1,11,18,5,3]),import.meta.url)),Ki=q(()=>J(()=>import(`./QueueDetail-CA33Kebs.js`).then(e=>({default:e.QueueDetail})),__vite__mapDeps([60,1,2,11,7,18,5,3,6,8,23,55]),import.meta.url)),qi=q(()=>J(()=>import(`./Queues-C_KeSyQs.js`).then(e=>({default:e.Queues})),__vite__mapDeps([61,1,2,11,7,18,5,3,15]),import.meta.url)),Ji=q(()=>J(()=>import(`./S3Backup-BgPBXJVZ.js`).then(e=>({default:e.S3Backup})),__vite__mapDeps([62,2,1,18,5,3]),import.meta.url)),Yi=q(()=>J(()=>import(`./Settings-Dwh79r-B.js`).then(e=>({default:e.Settings})),__vite__mapDeps([63,1,2,5,11,6,7]),import.meta.url)),Xi=q(()=>J(()=>import(`./Usage-DeWofLpa.js`).then(e=>({default:e.Usage})),__vite__mapDeps([64,2,1,18,5,3]),import.meta.url)),Zi=q(()=>J(()=>import(`./Workers-DyAVvmbR.js`).then(e=>({default:e.Workers})),__vite__mapDeps([65,1,2,11,18,5,3,15]),import.meta.url));function Qi(){return(0,V.jsx)(n,{children:(0,V.jsxs)(u,{element:(0,V.jsx)(Sr,{}),children:[(0,V.jsx)(u,{path:`/`,element:(0,V.jsx)(ui,{})}),(0,V.jsx)(u,{path:`/fleet`,element:(0,V.jsx)(Fi,{})}),(0,V.jsx)(u,{path:`/overview-classic`,element:(0,V.jsx)(Gi,{})}),(0,V.jsx)(u,{path:`/queues`,element:(0,V.jsx)(Oi,{})}),(0,V.jsx)(u,{path:`/queues-classic`,element:(0,V.jsx)(qi,{})}),(0,V.jsx)(u,{path:`/queues/:name`,element:(0,V.jsx)(Di,{})}),(0,V.jsx)(u,{path:`/queues-classic/:name`,element:(0,V.jsx)(Ki,{})}),(0,V.jsx)(u,{path:`/jobs`,element:(0,V.jsx)(Si,{})}),(0,V.jsx)(u,{path:`/search`,element:(0,V.jsx)(Ii,{})}),(0,V.jsx)(u,{path:`/failures`,element:(0,V.jsx)(Li,{})}),(0,V.jsx)(u,{path:`/jobs-classic`,element:(0,V.jsx)(Hi,{})}),(0,V.jsx)(u,{path:`/dlq`,element:(0,V.jsx)(yi,{})}),(0,V.jsx)(u,{path:`/dlq-classic`,element:(0,V.jsx)(Vi,{})}),(0,V.jsx)(u,{path:`/cron`,element:(0,V.jsx)(hi,{})}),(0,V.jsx)(u,{path:`/cron-classic`,element:(0,V.jsx)(Bi,{})}),(0,V.jsx)(u,{path:`/flows`,element:(0,V.jsx)(bi,{})}),(0,V.jsx)(u,{path:`/workflows`,element:(0,V.jsx)($,{})}),(0,V.jsx)(u,{path:`/workflows/executions`,element:(0,V.jsx)($,{})}),(0,V.jsx)(u,{path:`/workflows/waiting`,element:(0,V.jsx)($,{})}),(0,V.jsx)(u,{path:`/workflows/compensation`,element:(0,V.jsx)($,{})}),(0,V.jsx)(u,{path:`/workflows/archive`,element:(0,V.jsx)($,{})}),(0,V.jsx)(u,{path:`/metrics`,element:(0,V.jsx)(Ti,{})}),(0,V.jsx)(u,{path:`/metrics/history`,element:(0,V.jsx)(Ri,{})}),(0,V.jsx)(u,{path:`/monitoring`,element:(0,V.jsx)(zi,{})}),(0,V.jsx)(u,{path:`/metrics-classic`,element:(0,V.jsx)(Wi,{})}),(0,V.jsx)(u,{path:`/workers`,element:(0,V.jsx)(Ni,{})}),(0,V.jsx)(u,{path:`/workers-classic`,element:(0,V.jsx)(Zi,{})}),(0,V.jsx)(u,{path:`/logs`,element:(0,V.jsx)(Ci,{})}),(0,V.jsx)(u,{path:`/logs-classic`,element:(0,V.jsx)(Ui,{})}),(0,V.jsx)(u,{path:`/server`,element:(0,V.jsx)(Ai,{})}),(0,V.jsx)(u,{path:`/add-job`,element:(0,V.jsx)(fi,{})}),(0,V.jsx)(u,{path:`/jobs/bulk-add`,element:(0,V.jsx)(mi,{})}),(0,V.jsx)(u,{path:`/job`,element:(0,V.jsx)(xi,{})}),(0,V.jsx)(u,{path:`/queue-control`,element:(0,V.jsx)(Ei,{})}),(0,V.jsx)(u,{path:`/cron-manager`,element:(0,V.jsx)(t,{to:`/cron`,replace:!0})}),(0,V.jsx)(u,{path:`/dlq-control`,element:(0,V.jsx)(vi,{})}),(0,V.jsx)(u,{path:`/webhooks`,element:(0,V.jsx)(Mi,{})}),(0,V.jsx)(u,{path:`/diagnostics`,element:(0,V.jsx)(_i,{})}),(0,V.jsx)(u,{path:`/alerts`,element:(0,V.jsx)(Pi,{})}),(0,V.jsx)(u,{path:`/benchmark`,element:(0,V.jsx)(pi,{})}),(0,V.jsx)(u,{path:`/database`,element:(0,V.jsx)(gi,{})}),(0,V.jsx)(u,{path:`/mcp`,element:(0,V.jsx)(wi,{})}),(0,V.jsx)(u,{path:`/usage`,element:(0,V.jsx)(ji,{})}),(0,V.jsx)(u,{path:`/usage-classic`,element:(0,V.jsx)(Xi,{})}),(0,V.jsx)(u,{path:`/s3`,element:(0,V.jsx)(ki,{})}),(0,V.jsx)(u,{path:`/s3-classic`,element:(0,V.jsx)(Ji,{})}),(0,V.jsx)(u,{path:`/settings`,element:(0,V.jsx)(Yi,{})}),(0,V.jsx)(u,{path:`*`,element:(0,V.jsx)(di,{})})]})})}var $i=new WeakMap;function ea(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 ta({root:e,demo:t,loadDemo:n,render:r,reportError:i=e=>console.error(`[demo] failed to load the demo backend`,e)}){let a=$i.get(e);if(a)return a===!0?void 0:a;if(!t){$i.set(e,!0);try{r()}catch(t){throw $i.delete(e),t}return}let o=Promise.resolve().then(async()=>{let t;try{t=await n(),t.installDemo()}catch(t){try{i(t)}catch{}ea(e,t);return}r()});return $i.set(e,o),o}mn();var na=document.getElementById(`root`);if(!na)throw Error(`Root element #root not found`);function ra(){(0,ze.createRoot)(na).render((0,V.jsx)(P.StrictMode,{children:(0,V.jsx)(o,{basename:v(C(`__BUNQUEUE_BASE_PATH__`),`./`),children:(0,V.jsx)(Qi,{})})}))}ta({root:na,demo:Sn(),loadDemo:()=>J(()=>import(`./install-DVeS3d31.js`),__vite__mapDeps([66,34]),import.meta.url),render:ra});export{an as A,rr as C,hn as D,bn as E,Ut as F,L as I,mt as L,en as M,z as N,gn as O,Yt as P,lt as R,or as S,Sn as T,lr as _,Pr as a,ur as b,Fr as c,Ar as d,Nr as f,Cr as g,Y as h,Rr as i,B as j,U as k,X as l,Lr as m,Hr as n,kr as o,Mr as p,Or as r,jr as s,oi as t,Dr as u,dr as v,ir as w,ar as x,cr as y,ct as z};