@coreplane/switchboard 1.229.0 → 1.231.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 (32) hide show
  1. package/dist/assets/config/config.example.yaml +10 -0
  2. package/dist/assets/deploy/cloudflare-memory/worker.ts +56 -29
  3. package/dist/assets/deploy/cloudflare-resident/worker.ts +39 -20
  4. package/dist/assets/package-lock.json +6 -3
  5. package/dist/assets/package.json +2 -1
  6. package/dist/assets/source.json +3 -3
  7. package/dist/assets/src/core/authz/actor.ts +24 -6
  8. package/dist/assets/src/core/coordinator/contract.ts +41 -14
  9. package/dist/assets/src/core/coordinator/driver.ts +4 -0
  10. package/dist/assets/src/core/runEvents.ts +22 -5
  11. package/dist/assets/src/core/runFriction.ts +4 -3
  12. package/dist/assets/src/core/runLedger/sessionLog.ts +13 -0
  13. package/dist/assets/src/core/runRecord.ts +33 -0
  14. package/dist/assets/src/core/ship/contract.ts +35 -29
  15. package/dist/assets/src/core/ship/coordinator.ts +89 -4
  16. package/dist/assets/src/core/trace/attrs.ts +3 -0
  17. package/dist/assets/src/core/trace/streamSpans.ts +4 -1
  18. package/dist/assets/src/execution/residentRebind.ts +27 -4
  19. package/dist/assets/web/dist/.vite/manifest.json +19 -19
  20. package/dist/assets/web/dist/assets/CostsPage-D-v8am88.js +2 -0
  21. package/dist/assets/web/dist/assets/{ResidentDetailPage-CkVYktwT.js → ResidentDetailPage-Df6D2emM.js} +1 -1
  22. package/dist/assets/web/dist/assets/{ResidentsIndexPage-BLanxf27.js → ResidentsIndexPage-B0yECe2z.js} +1 -1
  23. package/dist/assets/web/dist/assets/{RunRoutePage-U3nwL8Df.js → RunRoutePage-D4FG8JbC.js} +4 -4
  24. package/dist/assets/web/dist/assets/{RunsIndexPage-DrIVxmpl.js → RunsIndexPage-qxjCAVwQ.js} +1 -1
  25. package/dist/assets/web/dist/assets/{ScheduledPage-DpqubmIm.js → ScheduledPage-B0xQSZIS.js} +1 -1
  26. package/dist/assets/web/dist/assets/{StatusDot-BpD9MRge.js → StatusDot-D-h9p7Iv.js} +1 -1
  27. package/dist/assets/web/dist/assets/{Tooltip-BYv0WSrA.js → Tooltip-BuDnXjL7.js} +1 -1
  28. package/dist/assets/web/dist/assets/{dist-BZmA5qTt.js → dist-BjLBNLkl.js} +1 -1
  29. package/dist/assets/web/dist/assets/{main-C4GOEklV.js → main-BRrMt0Kr.js} +2 -2
  30. package/dist/cli.js +1895 -1039
  31. package/package.json +1 -1
  32. package/dist/assets/web/dist/assets/CostsPage-DQg30mHr.js +0 -2
@@ -1 +1 @@
1
- import{a as e,n as t,t as n}from"./AppShell-lYVcj-k7.js";import{Ci as r,Lr as i,Mr as a,Qn as o,Xt as s,_n as c,a as l,ci as u,cn as d,gn as f,i as p,ir as m,ln as h,nr as g,oi as _,on as v,r as y,sn as b,un as x,ur as S,vi as C,wi as w,xi as T,yn as E}from"./seed-DeKSHrt2.js";import{t as D}from"./Tooltip-BYv0WSrA.js";import{t as O}from"./wallClock-61NpVkY6.js";import{t as k}from"./RunsTabs-DEICQ4FY.js";import{t as A}from"./StatusDot-BpD9MRge.js";import{n as j,r as M,t as N}from"./indexFormat-B-pd4r7Y.js";import{C as P,E as F,O as I,S as L,T as R,_ as z,a as B,b as V,c as H,d as U,f as W,g as G,h as K,i as q,j as J,k as Y,l as ee,m as te,n as X,o as Z,p as Q,s as ne,t as $,u as re,v as ie,w as ae,x as oe,y as se}from"./favicon-CWPcvWvp.js";import{t as ce}from"./localIso-L06jV29p.js";var le={class:`flex items-baseline gap-1.5 whitespace-pre-line px-2 py-1 text-xs`},ue={key:1,class:`text-dimmed`},de=[`data-kind`,`aria-label`,`href`],fe=[`data-kind`,`aria-label`],pe=E({__name:`SourceMark`,props:{kind:{},tip:{},url:{}},setup(e){let t=e,n=()=>q[t.kind]??`○`,r=()=>B[t.kind]??t.kind;return(t,a)=>{let o=D;return m(),d(o,null,{content:i(()=>[b(`span`,le,[e.kind===`slack`?(m(),d(J,{key:0})):C(q)[e.kind]?(m(),x(`span`,ue,w(n()),1)):h(``,!0),b(`span`,null,w(e.tip),1)])]),default:i(()=>[e.url?(m(),x(`a`,{key:0,class:`source linked pointer-events-auto w-[1.6em] shrink-0 rounded border border-transparent text-center text-[0.8rem] text-toned opacity-0 transition-opacity hover:border-primary/30 hover:bg-primary/10 hover:text-primary focus-visible:opacity-100 group-hover:opacity-100 group-focus-within:opacity-100 motion-reduce:transition-none`,"data-kind":e.kind,"aria-label":`open the ${r()} thread (new tab)`,href:e.url,target:`_blank`,rel:`noopener noreferrer`},`↗`,8,de)):(m(),x(`span`,{key:1,class:T([`source pointer-events-auto w-[1.6em] shrink-0 text-center text-[0.8rem] text-dimmed opacity-0 transition-opacity focus-visible:opacity-100 group-hover:opacity-100 group-focus-within:opacity-100 motion-reduce:transition-none`,e.kind===`cli`?`text-[0.7rem]`:``]),"data-kind":e.kind,"aria-label":`source: ${r()}`},w(n()),11,fe))]),_:1})}}}),me=[`data-run-id`,`data-started-at`,`data-persisted`,`data-expires-at`],he=[`href`,`aria-label`],ge={class:`pointer-events-auto flex items-center max-sm:order-1`},_e=[`data-agent-hue`],ve=[`href`],ye={key:3,class:`snippet min-w-0 truncate text-muted max-sm:order-6 max-sm:basis-full max-sm:whitespace-normal max-sm:pl-5 max-sm:text-[0.8rem] max-sm:leading-snug max-sm:line-clamp-2 sm:flex-1`},be={class:`hidden sm:contents`},xe={class:`expires pointer-events-auto shrink-0 font-mono text-xs tabular-nums text-warn max-sm:order-11`},Se=[`data-heat`],Ce={class:`count shrink-0 text-right font-mono text-xs tabular-nums max-sm:order-9 max-sm:text-dimmed sm:min-w-[6em] sm:text-muted`},we={class:`actions hidden min-w-[7.6em] shrink-0 justify-end gap-1.5 whitespace-nowrap sm:flex`},Te=E({__name:`RunRow`,props:{run:{},now:{},retentionMs:{}},setup(n){let a=n,o=v(()=>M(a.run.label||z(a.run.id))),u=v(()=>te(a.run,o.value.scope)),f=v(()=>se(a.run)),p=v(()=>K(a.run)),g=v(()=>ae(a.run)),y=v(()=>G(a.run)),S=v(()=>U(a.run,a.retentionMs)),E=v(()=>S.value!==void 0&&S.value-a.now<=864e5),O=v(()=>!a.run.finished&&!a.run.stop),k=v(()=>I(a.run.finished&&typeof a.run.finishedAt==`number`?a.run.finishedAt-a.run.startedAt:void 0,`run`)),F=v(()=>Y(k.value)),W=v(()=>a.run.finished&&a.run.status&&a.run.status!==`completed`?V(a.run.status):``),q=v(()=>a.run.stop&&!(a.run.finished&&a.run.status)?P(a.run.stop):``),J={coding:`text-ok bg-ok/8 border-ok/25`,review:`text-review bg-review/8 border-review/25`,research:`text-research bg-research/8 border-research/25`,general:`text-info bg-info/8 border-info/25`,other:`text-toned bg-accented/60 border-accented`},X=_({soft:!1,hard:!1}),Q=v(()=>[...y.value?[{label:`Open ${B[g.value.kind]??g.value.kind} thread`,icon:`i-lucide-external-link`,to:y.value,target:`_blank`}]:[],...O.value?[{label:`Stop (soft)`,icon:`i-lucide-octagon-pause`,onSelect:()=>$(`soft`)},{label:`Kill (hard)`,icon:`i-lucide-octagon-x`,color:`error`,onSelect:()=>$(`hard`)}]:[]]);function $(e){(e!==`hard`||t.confirm(`Hard stop: abort this run now with no summary and free its sandbox?`))&&(X[e]=!0,fetch(L(a.run,e),{method:`POST`,credentials:`same-origin`}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`)}).catch(()=>{X[e]=!1}))}function le(e){e.target?.closest(`a, button`)||t.navigate(p.value)}return(t,a)=>{let _=D,v=l,M=e;return m(),x(`li`,{class:T([`run group relative rounded-md border-b border-muted hover:bg-(--ui-bg-muted) focus-within:bg-(--ui-bg-muted)`,[n.run.finished?`finished`:`live`,E.value?`leaving`:``]]),"data-run-id":n.run.id,"data-started-at":String(n.run.startedAt),"data-persisted":n.run.persisted?`1`:void 0,"data-expires-at":S.value===void 0?void 0:String(S.value),onClick:le},[b(`a`,{class:`row absolute inset-0 rounded-md focus-visible:outline-2 focus-visible:outline-primary`,href:p.value,"aria-label":`open run ${n.run.label||C(z)(n.run.id)}`},null,8,he),b(`div`,{class:T([`body pointer-events-none relative z-[1] flex min-w-0 flex-wrap items-center gap-x-2.5 px-2 max-sm:gap-y-1.5 max-sm:py-3 sm:flex-nowrap sm:py-2`,[n.run.finished?`text-muted`:``,E.value?`opacity-85`:``]])},[b(`span`,ge,[c(A,{tone:f.value,label:C(oe)(n.run),tip:C(ee)(n.run),pulse:!n.run.finished},null,8,[`tone`,`label`,`tip`,`pulse`])]),c(_,{text:C(R)(n.run),ui:{text:`whitespace-pre-line`}},{default:i(()=>[b(`span`,{class:T([`when pointer-events-auto shrink-0 font-mono tabular-nums max-sm:order-7 max-sm:pl-5 max-sm:text-xs max-sm:text-dimmed sm:min-w-[8.5em] sm:text-[0.8rem]`,n.run.finished?`text-dimmed`:`text-muted`])},w(C(j)(n.run.startedAt,n.now)),3)]),_:1},8,[`text`]),o.value.agent?(m(),x(`span`,{key:0,class:T([`agent shrink-0 rounded border px-1.5 font-mono text-[0.68rem] font-medium uppercase tracking-wider max-sm:order-2`,[J[C(Z)(o.value.agent)],n.run.finished?`opacity-55`:``]]),"data-agent-hue":C(Z)(o.value.agent)},w(o.value.agent),11,_e)):h(``,!0),u.value?(m(),d(_,{key:1,text:u.value},{default:i(()=>[b(`a`,{class:`repo pointer-events-auto min-w-0 shrink-0 rounded border border-accented bg-accented/50 px-1.5 font-mono text-[0.72rem] font-medium leading-normal text-toned no-underline hover:border-(--ui-text-dimmed) hover:text-highlighted max-sm:order-3`,href:`https://github.com/${u.value}`,target:`_blank`,rel:`noopener noreferrer`},w(u.value.slice(u.value.indexOf(`/`)+1)),9,ve)]),_:1},8,[`text`])):(m(),x(`span`,{key:2,class:T([`scope min-w-0 shrink-0 truncate font-medium max-sm:order-3`,n.run.finished?`text-toned`:`text-highlighted`])},w(o.value.scope),3)),o.value.snippet===void 0?h(``,!0):(m(),x(`span`,ye,w(o.value.snippet),1)),W.value?(m(),x(`span`,{key:4,class:T([`outcome shrink-0 rounded border px-1.5 font-mono text-[0.7rem] max-sm:order-10`,f.value===`red`?`border-bad/30 text-bad`:`border-warn/30 text-warn`])},w(W.value),3)):h(``,!0),q.value?(m(),x(`span`,{key:5,class:T([`stopbadge shrink-0 rounded border px-1.5 font-mono text-[0.7rem] max-sm:order-10`,n.run.stop?.state===`stopped`?`border-accented text-muted`:`border-warn/30 text-warn`])},w(q.value),3)):h(``,!0),b(`span`,be,[c(pe,{kind:g.value.kind,tip:C(ie)(n.run),url:y.value||void 0},null,8,[`kind`,`tip`,`url`])]),E.value&&S.value!==void 0?(m(),d(_,{key:6,text:`removed at ${C(ce)(S.value)}`},{default:i(()=>[b(`span`,xe,`gone `+w(C(N)(S.value,n.now)),1)]),_:1},8,[`text`])):h(``,!0),c(_,{text:n.run.finished?`start to finish`:`running for`},{default:i(()=>[b(`span`,{class:T([`elapsed pointer-events-auto ml-auto shrink-0 text-right font-mono text-xs tabular-nums max-sm:order-4 sm:min-w-[4.5em]`,n.run.finished?[F.value?`heat`:`text-muted`,k.value.level>=2?`font-medium`:``]:`text-ok`]),style:r(n.run.finished?F.value:void 0),"data-heat":n.run.finished?k.value.level:void 0},w(C(re)(n.run,n.now)),15,Se)]),_:1},8,[`text`]),a[2]||=b(`span`,{class:`hidden text-xs text-dimmed max-sm:order-8 max-sm:inline`,"aria-hidden":`true`},`·`,-1),c(_,{text:C(H)(n.run)},{default:i(()=>[b(`span`,Ce,w(C(ne)(n.run)),1)]),_:1},8,[`text`]),b(`span`,we,[O.value?(m(),x(s,{key:0},[c(_,{text:`Soft stop: no new steps, the agent writes up what it has`},{default:i(()=>[c(v,{class:`pointer-events-auto`,size:`xs`,color:`neutral`,variant:`outline`,label:`Stop`,disabled:X.soft,onClick:a[0]||=e=>$(`soft`)},null,8,[`disabled`])]),_:1}),c(_,{text:`Hard stop: abort now, no summary, free the sandbox`},{default:i(()=>[c(v,{class:`pointer-events-auto`,size:`xs`,color:`error`,variant:`outline`,label:`Kill`,disabled:X.hard,onClick:a[1]||=e=>$(`hard`)},null,8,[`disabled`])]),_:1})],64)):h(``,!0)]),Q.value.length>0?(m(),d(M,{key:7,items:Q.value,content:{align:`end`}},{default:i(()=>[c(v,{class:`pointer-events-auto -my-1.5 -mr-1 max-sm:order-5 sm:hidden`,size:`md`,color:`neutral`,variant:`ghost`,icon:`i-lucide-ellipsis-vertical`,"aria-label":`Run actions`})]),_:1},8,[`items`])):h(``,!0)],2)],10,me)}}}),Ee={class:`conn flex items-center gap-1.5`},De={id:`state`,class:`text-xs text-muted`},Oe={class:`toolbar mb-1.5 flex items-center gap-4 px-2 text-xs text-muted`},ke={id:`livecount`,class:`count font-mono tabular-nums`},Ae={class:`filter ml-auto inline-flex items-center gap-1.5`},je={class:`toggle inline-flex cursor-pointer select-none items-center gap-1.5 text-toned hover:text-highlighted`},Me=[`checked`],Ne={id:`retention`,class:`sr-only`},Pe={key:0,class:`banner mb-3 rounded-md border border-warn px-2.5 py-1.5 text-[0.8rem] text-warn`,role:`status`},Fe={id:`runs`,class:`m-0 list-none border-t border-muted p-0`},Ie={key:0,id:`leaving`,class:`divider flex items-baseline gap-2 border-b border-dashed border-warn/40 px-2 pb-1.5 pt-3 font-mono text-[0.72rem] uppercase tracking-wider text-warn`,role:`separator`},Le={key:1,id:`empty`,class:`empty px-2 py-2 text-muted`},Re={key:1,class:`pager mt-3 flex items-baseline gap-2 px-2 text-[0.8rem] text-muted`,"aria-label":`Completed runs pages`},ze={class:`range font-mono tabular-nums text-dimmed`},Be=[`href`],Ve=E({__name:`RunsIndexPage`,setup(e){let r=y(`runs`),l=r?.all??!1,T=r?.olderThan!==void 0,E=r?.retentionDays??null,j=E===null?void 0:E*864e5,M=p(E),P=_(new Map);for(let e of r?.rows??[])P.set(e.id,e);let I=O(r?.now),L=u({tone:`amber`,text:`connecting…`}),R=v(()=>[...P.values()].sort((e,t)=>t.startedAt-e.startedAt)),z=v(()=>R.value.filter(e=>!e.finished).length),B=v(()=>j===void 0?-1:R.value.findIndex(e=>{let t=U(e,j);return t!==void 0&&t-I.value<=864e5})),V=v(()=>B.value===-1?R.value:R.value.slice(0,B.value)),H=v(()=>B.value===-1?[]:R.value.slice(B.value)),G=l?`All runs`:`Live runs`;a(z,e=>{t.setTitle((e>0?`(${e}) `:``)+G),t.setFavicon(e>0?X:$)},{immediate:!0});function K(e){t.navigate(e.target.checked?`/runs?all=1`:`/runs`)}let q=v(()=>r?.olderThan===void 0?``:N(r.olderThan,I.value)),J=F(),Y=null;return o(()=>{Y=J(l?`/runs?stream=1&all=1`:`/runs?stream=1`);let e=!1;Y.onopen=()=>{if(e){t.reload();return}e=!0,L.value={tone:`green`,text:`connected`}},Y.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}let n=t.type===`removed`?t.id:t.run?.id,r=n?P.get(n):void 0;if(T&&!r)return;let i=W(t,l,r?.persisted===!0);i.op===`upsert`?P.set(i.run.id,Q(P.get(i.run.id),i.run)):i.op===`remove`&&P.delete(i.id)},Y.onerror=()=>{Y&&Y.readyState===2?L.value={tone:`red`,text:`disconnected`}:L.value={tone:`amber`,text:`connecting…`}}}),g(()=>{Y?.close()}),(e,t)=>{let a=D;return m(),d(n,{title:C(G),nav:`runs`},{status:i(()=>[b(`span`,Ee,[c(A,{tone:L.value.tone,label:L.value.text},null,8,[`tone`,`label`]),b(`span`,De,w(L.value.text),1)])]),default:i(()=>[c(k,{current:`runs`}),b(`div`,Oe,[b(`span`,ke,w(z.value)+` running`,1),b(`span`,Ae,[b(`label`,je,[b(`input`,{id:`showdone`,type:`checkbox`,class:`accent-(--ui-bg-inverted)`,checked:C(l),"aria-describedby":`retention`,onChange:K},null,40,Me),t[0]||=f(` Show completed `,-1)]),c(a,{text:C(M)},{default:i(()=>[...t[1]||=[b(`span`,{class:`help inline-flex size-[1.1em] cursor-help items-center justify-center rounded-full border border-accented text-[0.7rem] leading-none text-dimmed hover:border-(--ui-text-dimmed) hover:text-toned`,tabindex:`0`},`?`,-1)]]),_:1},8,[`text`]),b(`span`,Ne,w(C(M)),1)])]),C(r)?.storeUnavailable?(m(),x(`p`,Pe,w(C(r).storeUnavailable),1)):h(``,!0),b(`ul`,Fe,[(m(!0),x(s,null,S(V.value,e=>(m(),d(Te,{key:e.id,run:e,now:C(I),"retention-ms":C(j)},null,8,[`run`,`now`,`retention-ms`]))),128)),H.value.length>0?(m(),x(`li`,Ie,[...t[2]||=[b(`span`,{"aria-hidden":`true`,class:`text-sm tracking-normal`},`⏳`,-1),b(`span`,{class:`whitespace-nowrap`},`Leaving within a day`,-1),b(`span`,{class:`normal-case tracking-normal text-dimmed max-sm:hidden`},`— each row says when it is removed`,-1)]])):h(``,!0),(m(!0),x(s,null,S(H.value,e=>(m(),d(Te,{key:e.id,run:e,now:C(I),"retention-ms":C(j)},null,8,[`run`,`now`,`retention-ms`]))),128)),R.value.length===0?(m(),x(`li`,Le,w(C(l)?`No runs.`:`No active runs.`),1)):h(``,!0)]),C(l)&&(C(r)?.olderHref||C(r)?.olderThan!==void 0)?(m(),x(`nav`,Re,[C(r)?.olderThan===void 0?h(``,!0):(m(),x(s,{key:0},[t[3]||=b(`a`,{class:`text-primary hover:underline`,href:`/runs?all=1`},`← Newest runs`,-1),b(`span`,ze,`· runs finished before `+w(q.value),1)],64)),C(r)?.olderHref?(m(),x(`a`,{key:1,class:`older ml-auto text-primary hover:underline`,href:C(r).olderHref},`Older runs →`,8,Be)):h(``,!0)])):h(``,!0)]),_:1},8,[`title`])}}});export{Ve as default};
1
+ import{a as e,n as t,t as n}from"./AppShell-lYVcj-k7.js";import{Ci as r,Lr as i,Mr as a,Qn as o,Xt as s,_n as c,a as l,ci as u,cn as d,gn as f,i as p,ir as m,ln as h,nr as g,oi as _,on as v,r as y,sn as b,un as x,ur as S,vi as C,wi as w,xi as T,yn as E}from"./seed-DeKSHrt2.js";import{t as D}from"./Tooltip-BuDnXjL7.js";import{t as O}from"./wallClock-61NpVkY6.js";import{t as k}from"./RunsTabs-DEICQ4FY.js";import{t as A}from"./StatusDot-D-h9p7Iv.js";import{n as j,r as M,t as N}from"./indexFormat-B-pd4r7Y.js";import{C as P,E as F,O as I,S as L,T as R,_ as z,a as B,b as V,c as H,d as U,f as W,g as G,h as K,i as q,j as J,k as Y,l as ee,m as te,n as X,o as Z,p as Q,s as ne,t as $,u as re,v as ie,w as ae,x as oe,y as se}from"./favicon-CWPcvWvp.js";import{t as ce}from"./localIso-L06jV29p.js";var le={class:`flex items-baseline gap-1.5 whitespace-pre-line px-2 py-1 text-xs`},ue={key:1,class:`text-dimmed`},de=[`data-kind`,`aria-label`,`href`],fe=[`data-kind`,`aria-label`],pe=E({__name:`SourceMark`,props:{kind:{},tip:{},url:{}},setup(e){let t=e,n=()=>q[t.kind]??`○`,r=()=>B[t.kind]??t.kind;return(t,a)=>{let o=D;return m(),d(o,null,{content:i(()=>[b(`span`,le,[e.kind===`slack`?(m(),d(J,{key:0})):C(q)[e.kind]?(m(),x(`span`,ue,w(n()),1)):h(``,!0),b(`span`,null,w(e.tip),1)])]),default:i(()=>[e.url?(m(),x(`a`,{key:0,class:`source linked pointer-events-auto w-[1.6em] shrink-0 rounded border border-transparent text-center text-[0.8rem] text-toned opacity-0 transition-opacity hover:border-primary/30 hover:bg-primary/10 hover:text-primary focus-visible:opacity-100 group-hover:opacity-100 group-focus-within:opacity-100 motion-reduce:transition-none`,"data-kind":e.kind,"aria-label":`open the ${r()} thread (new tab)`,href:e.url,target:`_blank`,rel:`noopener noreferrer`},`↗`,8,de)):(m(),x(`span`,{key:1,class:T([`source pointer-events-auto w-[1.6em] shrink-0 text-center text-[0.8rem] text-dimmed opacity-0 transition-opacity focus-visible:opacity-100 group-hover:opacity-100 group-focus-within:opacity-100 motion-reduce:transition-none`,e.kind===`cli`?`text-[0.7rem]`:``]),"data-kind":e.kind,"aria-label":`source: ${r()}`},w(n()),11,fe))]),_:1})}}}),me=[`data-run-id`,`data-started-at`,`data-persisted`,`data-expires-at`],he=[`href`,`aria-label`],ge={class:`pointer-events-auto flex items-center max-sm:order-1`},_e=[`data-agent-hue`],ve=[`href`],ye={key:3,class:`snippet min-w-0 truncate text-muted max-sm:order-6 max-sm:basis-full max-sm:whitespace-normal max-sm:pl-5 max-sm:text-[0.8rem] max-sm:leading-snug max-sm:line-clamp-2 sm:flex-1`},be={class:`hidden sm:contents`},xe={class:`expires pointer-events-auto shrink-0 font-mono text-xs tabular-nums text-warn max-sm:order-11`},Se=[`data-heat`],Ce={class:`count shrink-0 text-right font-mono text-xs tabular-nums max-sm:order-9 max-sm:text-dimmed sm:min-w-[6em] sm:text-muted`},we={class:`actions hidden min-w-[7.6em] shrink-0 justify-end gap-1.5 whitespace-nowrap sm:flex`},Te=E({__name:`RunRow`,props:{run:{},now:{},retentionMs:{}},setup(n){let a=n,o=v(()=>M(a.run.label||z(a.run.id))),u=v(()=>te(a.run,o.value.scope)),f=v(()=>se(a.run)),p=v(()=>K(a.run)),g=v(()=>ae(a.run)),y=v(()=>G(a.run)),S=v(()=>U(a.run,a.retentionMs)),E=v(()=>S.value!==void 0&&S.value-a.now<=864e5),O=v(()=>!a.run.finished&&!a.run.stop),k=v(()=>I(a.run.finished&&typeof a.run.finishedAt==`number`?a.run.finishedAt-a.run.startedAt:void 0,`run`)),F=v(()=>Y(k.value)),W=v(()=>a.run.finished&&a.run.status&&a.run.status!==`completed`?V(a.run.status):``),q=v(()=>a.run.stop&&!(a.run.finished&&a.run.status)?P(a.run.stop):``),J={coding:`text-ok bg-ok/8 border-ok/25`,review:`text-review bg-review/8 border-review/25`,research:`text-research bg-research/8 border-research/25`,general:`text-info bg-info/8 border-info/25`,other:`text-toned bg-accented/60 border-accented`},X=_({soft:!1,hard:!1}),Q=v(()=>[...y.value?[{label:`Open ${B[g.value.kind]??g.value.kind} thread`,icon:`i-lucide-external-link`,to:y.value,target:`_blank`}]:[],...O.value?[{label:`Stop (soft)`,icon:`i-lucide-octagon-pause`,onSelect:()=>$(`soft`)},{label:`Kill (hard)`,icon:`i-lucide-octagon-x`,color:`error`,onSelect:()=>$(`hard`)}]:[]]);function $(e){(e!==`hard`||t.confirm(`Hard stop: abort this run now with no summary and free its sandbox?`))&&(X[e]=!0,fetch(L(a.run,e),{method:`POST`,credentials:`same-origin`}).then(e=>{if(!e.ok)throw Error(`HTTP ${e.status}`)}).catch(()=>{X[e]=!1}))}function le(e){e.target?.closest(`a, button`)||t.navigate(p.value)}return(t,a)=>{let _=D,v=l,M=e;return m(),x(`li`,{class:T([`run group relative rounded-md border-b border-muted hover:bg-(--ui-bg-muted) focus-within:bg-(--ui-bg-muted)`,[n.run.finished?`finished`:`live`,E.value?`leaving`:``]]),"data-run-id":n.run.id,"data-started-at":String(n.run.startedAt),"data-persisted":n.run.persisted?`1`:void 0,"data-expires-at":S.value===void 0?void 0:String(S.value),onClick:le},[b(`a`,{class:`row absolute inset-0 rounded-md focus-visible:outline-2 focus-visible:outline-primary`,href:p.value,"aria-label":`open run ${n.run.label||C(z)(n.run.id)}`},null,8,he),b(`div`,{class:T([`body pointer-events-none relative z-[1] flex min-w-0 flex-wrap items-center gap-x-2.5 px-2 max-sm:gap-y-1.5 max-sm:py-3 sm:flex-nowrap sm:py-2`,[n.run.finished?`text-muted`:``,E.value?`opacity-85`:``]])},[b(`span`,ge,[c(A,{tone:f.value,label:C(oe)(n.run),tip:C(ee)(n.run),pulse:!n.run.finished},null,8,[`tone`,`label`,`tip`,`pulse`])]),c(_,{text:C(R)(n.run),ui:{text:`whitespace-pre-line`}},{default:i(()=>[b(`span`,{class:T([`when pointer-events-auto shrink-0 font-mono tabular-nums max-sm:order-7 max-sm:pl-5 max-sm:text-xs max-sm:text-dimmed sm:min-w-[8.5em] sm:text-[0.8rem]`,n.run.finished?`text-dimmed`:`text-muted`])},w(C(j)(n.run.startedAt,n.now)),3)]),_:1},8,[`text`]),o.value.agent?(m(),x(`span`,{key:0,class:T([`agent shrink-0 rounded border px-1.5 font-mono text-[0.68rem] font-medium uppercase tracking-wider max-sm:order-2`,[J[C(Z)(o.value.agent)],n.run.finished?`opacity-55`:``]]),"data-agent-hue":C(Z)(o.value.agent)},w(o.value.agent),11,_e)):h(``,!0),u.value?(m(),d(_,{key:1,text:u.value},{default:i(()=>[b(`a`,{class:`repo pointer-events-auto min-w-0 shrink-0 rounded border border-accented bg-accented/50 px-1.5 font-mono text-[0.72rem] font-medium leading-normal text-toned no-underline hover:border-(--ui-text-dimmed) hover:text-highlighted max-sm:order-3`,href:`https://github.com/${u.value}`,target:`_blank`,rel:`noopener noreferrer`},w(u.value.slice(u.value.indexOf(`/`)+1)),9,ve)]),_:1},8,[`text`])):(m(),x(`span`,{key:2,class:T([`scope min-w-0 shrink-0 truncate font-medium max-sm:order-3`,n.run.finished?`text-toned`:`text-highlighted`])},w(o.value.scope),3)),o.value.snippet===void 0?h(``,!0):(m(),x(`span`,ye,w(o.value.snippet),1)),W.value?(m(),x(`span`,{key:4,class:T([`outcome shrink-0 rounded border px-1.5 font-mono text-[0.7rem] max-sm:order-10`,f.value===`red`?`border-bad/30 text-bad`:`border-warn/30 text-warn`])},w(W.value),3)):h(``,!0),q.value?(m(),x(`span`,{key:5,class:T([`stopbadge shrink-0 rounded border px-1.5 font-mono text-[0.7rem] max-sm:order-10`,n.run.stop?.state===`stopped`?`border-accented text-muted`:`border-warn/30 text-warn`])},w(q.value),3)):h(``,!0),b(`span`,be,[c(pe,{kind:g.value.kind,tip:C(ie)(n.run),url:y.value||void 0},null,8,[`kind`,`tip`,`url`])]),E.value&&S.value!==void 0?(m(),d(_,{key:6,text:`removed at ${C(ce)(S.value)}`},{default:i(()=>[b(`span`,xe,`gone `+w(C(N)(S.value,n.now)),1)]),_:1},8,[`text`])):h(``,!0),c(_,{text:n.run.finished?`start to finish`:`running for`},{default:i(()=>[b(`span`,{class:T([`elapsed pointer-events-auto ml-auto shrink-0 text-right font-mono text-xs tabular-nums max-sm:order-4 sm:min-w-[4.5em]`,n.run.finished?[F.value?`heat`:`text-muted`,k.value.level>=2?`font-medium`:``]:`text-ok`]),style:r(n.run.finished?F.value:void 0),"data-heat":n.run.finished?k.value.level:void 0},w(C(re)(n.run,n.now)),15,Se)]),_:1},8,[`text`]),a[2]||=b(`span`,{class:`hidden text-xs text-dimmed max-sm:order-8 max-sm:inline`,"aria-hidden":`true`},`·`,-1),c(_,{text:C(H)(n.run)},{default:i(()=>[b(`span`,Ce,w(C(ne)(n.run)),1)]),_:1},8,[`text`]),b(`span`,we,[O.value?(m(),x(s,{key:0},[c(_,{text:`Soft stop: no new steps, the agent writes up what it has`},{default:i(()=>[c(v,{class:`pointer-events-auto`,size:`xs`,color:`neutral`,variant:`outline`,label:`Stop`,disabled:X.soft,onClick:a[0]||=e=>$(`soft`)},null,8,[`disabled`])]),_:1}),c(_,{text:`Hard stop: abort now, no summary, free the sandbox`},{default:i(()=>[c(v,{class:`pointer-events-auto`,size:`xs`,color:`error`,variant:`outline`,label:`Kill`,disabled:X.hard,onClick:a[1]||=e=>$(`hard`)},null,8,[`disabled`])]),_:1})],64)):h(``,!0)]),Q.value.length>0?(m(),d(M,{key:7,items:Q.value,content:{align:`end`}},{default:i(()=>[c(v,{class:`pointer-events-auto -my-1.5 -mr-1 max-sm:order-5 sm:hidden`,size:`md`,color:`neutral`,variant:`ghost`,icon:`i-lucide-ellipsis-vertical`,"aria-label":`Run actions`})]),_:1},8,[`items`])):h(``,!0)],2)],10,me)}}}),Ee={class:`conn flex items-center gap-1.5`},De={id:`state`,class:`text-xs text-muted`},Oe={class:`toolbar mb-1.5 flex items-center gap-4 px-2 text-xs text-muted`},ke={id:`livecount`,class:`count font-mono tabular-nums`},Ae={class:`filter ml-auto inline-flex items-center gap-1.5`},je={class:`toggle inline-flex cursor-pointer select-none items-center gap-1.5 text-toned hover:text-highlighted`},Me=[`checked`],Ne={id:`retention`,class:`sr-only`},Pe={key:0,class:`banner mb-3 rounded-md border border-warn px-2.5 py-1.5 text-[0.8rem] text-warn`,role:`status`},Fe={id:`runs`,class:`m-0 list-none border-t border-muted p-0`},Ie={key:0,id:`leaving`,class:`divider flex items-baseline gap-2 border-b border-dashed border-warn/40 px-2 pb-1.5 pt-3 font-mono text-[0.72rem] uppercase tracking-wider text-warn`,role:`separator`},Le={key:1,id:`empty`,class:`empty px-2 py-2 text-muted`},Re={key:1,class:`pager mt-3 flex items-baseline gap-2 px-2 text-[0.8rem] text-muted`,"aria-label":`Completed runs pages`},ze={class:`range font-mono tabular-nums text-dimmed`},Be=[`href`],Ve=E({__name:`RunsIndexPage`,setup(e){let r=y(`runs`),l=r?.all??!1,T=r?.olderThan!==void 0,E=r?.retentionDays??null,j=E===null?void 0:E*864e5,M=p(E),P=_(new Map);for(let e of r?.rows??[])P.set(e.id,e);let I=O(r?.now),L=u({tone:`amber`,text:`connecting…`}),R=v(()=>[...P.values()].sort((e,t)=>t.startedAt-e.startedAt)),z=v(()=>R.value.filter(e=>!e.finished).length),B=v(()=>j===void 0?-1:R.value.findIndex(e=>{let t=U(e,j);return t!==void 0&&t-I.value<=864e5})),V=v(()=>B.value===-1?R.value:R.value.slice(0,B.value)),H=v(()=>B.value===-1?[]:R.value.slice(B.value)),G=l?`All runs`:`Live runs`;a(z,e=>{t.setTitle((e>0?`(${e}) `:``)+G),t.setFavicon(e>0?X:$)},{immediate:!0});function K(e){t.navigate(e.target.checked?`/runs?all=1`:`/runs`)}let q=v(()=>r?.olderThan===void 0?``:N(r.olderThan,I.value)),J=F(),Y=null;return o(()=>{Y=J(l?`/runs?stream=1&all=1`:`/runs?stream=1`);let e=!1;Y.onopen=()=>{if(e){t.reload();return}e=!0,L.value={tone:`green`,text:`connected`}},Y.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}let n=t.type===`removed`?t.id:t.run?.id,r=n?P.get(n):void 0;if(T&&!r)return;let i=W(t,l,r?.persisted===!0);i.op===`upsert`?P.set(i.run.id,Q(P.get(i.run.id),i.run)):i.op===`remove`&&P.delete(i.id)},Y.onerror=()=>{Y&&Y.readyState===2?L.value={tone:`red`,text:`disconnected`}:L.value={tone:`amber`,text:`connecting…`}}}),g(()=>{Y?.close()}),(e,t)=>{let a=D;return m(),d(n,{title:C(G),nav:`runs`},{status:i(()=>[b(`span`,Ee,[c(A,{tone:L.value.tone,label:L.value.text},null,8,[`tone`,`label`]),b(`span`,De,w(L.value.text),1)])]),default:i(()=>[c(k,{current:`runs`}),b(`div`,Oe,[b(`span`,ke,w(z.value)+` running`,1),b(`span`,Ae,[b(`label`,je,[b(`input`,{id:`showdone`,type:`checkbox`,class:`accent-(--ui-bg-inverted)`,checked:C(l),"aria-describedby":`retention`,onChange:K},null,40,Me),t[0]||=f(` Show completed `,-1)]),c(a,{text:C(M)},{default:i(()=>[...t[1]||=[b(`span`,{class:`help inline-flex size-[1.1em] cursor-help items-center justify-center rounded-full border border-accented text-[0.7rem] leading-none text-dimmed hover:border-(--ui-text-dimmed) hover:text-toned`,tabindex:`0`},`?`,-1)]]),_:1},8,[`text`]),b(`span`,Ne,w(C(M)),1)])]),C(r)?.storeUnavailable?(m(),x(`p`,Pe,w(C(r).storeUnavailable),1)):h(``,!0),b(`ul`,Fe,[(m(!0),x(s,null,S(V.value,e=>(m(),d(Te,{key:e.id,run:e,now:C(I),"retention-ms":C(j)},null,8,[`run`,`now`,`retention-ms`]))),128)),H.value.length>0?(m(),x(`li`,Ie,[...t[2]||=[b(`span`,{"aria-hidden":`true`,class:`text-sm tracking-normal`},`⏳`,-1),b(`span`,{class:`whitespace-nowrap`},`Leaving within a day`,-1),b(`span`,{class:`normal-case tracking-normal text-dimmed max-sm:hidden`},`— each row says when it is removed`,-1)]])):h(``,!0),(m(!0),x(s,null,S(H.value,e=>(m(),d(Te,{key:e.id,run:e,now:C(I),"retention-ms":C(j)},null,8,[`run`,`now`,`retention-ms`]))),128)),R.value.length===0?(m(),x(`li`,Le,w(C(l)?`No runs.`:`No active runs.`),1)):h(``,!0)]),C(l)&&(C(r)?.olderHref||C(r)?.olderThan!==void 0)?(m(),x(`nav`,Re,[C(r)?.olderThan===void 0?h(``,!0):(m(),x(s,{key:0},[t[3]||=b(`a`,{class:`text-primary hover:underline`,href:`/runs?all=1`},`← Newest runs`,-1),b(`span`,ze,`· runs finished before `+w(q.value),1)],64)),C(r)?.olderHref?(m(),x(`a`,{key:1,class:`older ml-auto text-primary hover:underline`,href:C(r).olderHref},`Older runs →`,8,Be)):h(``,!0)])):h(``,!0)]),_:1},8,[`title`])}}});export{Ve as default};
@@ -1 +1 @@
1
- import{t as e}from"./AppShell-lYVcj-k7.js";import{Lr as t,Xt as n,_n as r,cn as i,gn as a,ir as o,ln as s,on as c,r as l,sn as u,un as d,ur as f,vi as p,wi as m,xi as h,yn as g}from"./seed-DeKSHrt2.js";import{t as ee}from"./Tooltip-BYv0WSrA.js";import{n as te}from"./wallClock-61NpVkY6.js";import{t as _}from"./RunsTabs-DEICQ4FY.js";import{t as v}from"./indexFormat-B-pd4r7Y.js";import{t as y}from"./localIso-L06jV29p.js";function b(e,t){return{kind:`schedule`,id:`schedule:${e}`,grants:t}}b(`self-improvement`,Object.freeze({actions:new Set([`friction:read`,`friction:write`]),channels:`all`,repos:new Set}));function x(e,t){let n=e-t,r=Math.floor(Math.abs(n)/6e4),i=Math.floor(r/60),a=Math.floor(i/24),o=a>0?`${a}d ${i%24}h`:i>0?`${i}h ${r%60}m`:r>0?`${r}m`:`<1m`;return n>=0?`in ${o}`:`${o} ago`}var S={healthz:`container health check`,watchdog:`resident watchdog`},C={completed:`succeeded`,failed:`failed`,stopped_soft:`stopped early`,stopped_hard:`killed`,"no-run":`no run created`,"ingress-error":`ingress error`,misconfigured:`misconfigured — nothing ran`},w={completed:`ok`,failed:`bad`,stopped_soft:`warn`,stopped_hard:`warn`,"no-run":`warn`,"ingress-error":`bad`,misconfigured:`bad`},T=120;function E(e){let t=e.replace(/\s+/g,` `).trim();return t=t.replace(/^[^\p{L}\p{N}*_`<[(]+/u,``),t=t.replace(/^\*[^*]{1,60}\*\s+[—–-]\s+/,``),t=t.replace(/^[^\p{L}\p{N}]+/u,``).trim(),t.length>T?`${t.slice(0,T)}…`:t}var D={key:0,class:`px-2 py-1.5 text-muted`},O={key:1,id:`scheduled`,"aria-label":`Scheduled jobs`},k={class:`m-0 list-none p-0`},A=[`data-schedule`],j={class:`def flex flex-wrap items-baseline gap-x-2 gap-y-1.5 text-[0.8rem] text-toned`},M={class:`name font-medium text-highlighted max-sm:text-[0.9rem]`},N={class:`max-sm:ml-auto`},P={class:`rounded-xs bg-accented px-1.5 py-0.5 text-toned`},F={class:`max-sm:flex max-sm:basis-full max-sm:flex-wrap max-sm:items-baseline max-sm:gap-2 sm:contents`},I={class:`rounded-xs bg-accented px-1.5 py-0.5 text-toned`},L={class:`rounded-xs bg-accented px-1.5 py-0.5 text-toned`},R={key:1,class:`text-dimmed`},z={class:`max-sm:flex max-sm:basis-full max-sm:flex-wrap max-sm:items-baseline max-sm:gap-2 sm:contents`},B={class:`rounded-xs bg-accented px-1.5 py-0.5 text-toned`},V=[`title`],H={class:`max-sm:hidden`},U={class:`font-medium text-highlighted`},W={class:`text-dimmed`},G={class:`text-toned sm:hidden`},K={key:1,class:`text-dimmed`},q={class:`fire mt-1.5 font-mono text-xs text-muted max-sm:flex max-sm:flex-wrap max-sm:items-baseline max-sm:gap-x-1.5 max-sm:gap-y-1 sm:overflow-hidden sm:text-ellipsis sm:whitespace-nowrap`},J=[`title`],Y=[`href`],X=[`title`],Z=[`title`],Q={key:1,class:`text-dimmed`},ne={key:0,class:`mt-2.5 px-2 text-xs text-muted`},$=g({__name:`ScheduledPage`,setup(g){let b=l(`scheduled`),T=c(()=>b?.now??te()),$=c(()=>b?.rows??null),re={ok:`text-ok`,bad:`text-bad`,warn:`text-warn`};return(c,l)=>{let g=ee;return o(),i(e,{title:`Scheduled runs`,nav:`runs`},{default:t(()=>[r(_,{current:`scheduled`}),$.value===null?(o(),d(`p`,D,`No schedule registry configured.`)):(o(),d(`section`,O,[u(`ul`,k,[(o(!0),d(n,null,f($.value,e=>(o(),d(`li`,{key:e.name,class:`border-b border-muted px-2 pb-3 pt-2.5`,"data-schedule":e.name},[u(`div`,j,[r(g,{text:e.description},{default:t(()=>[u(`span`,M,m(e.name),1)]),_:2},1032,[`text`]),l[5]||=u(`span`,{class:`hidden text-accented sm:inline`,"aria-hidden":`true`},`·`,-1),u(`span`,N,[l[0]||=u(`span`,{class:`mr-1 font-mono text-[0.62rem] uppercase tracking-wider text-dimmed`},`on`,-1),u(`code`,P,m(e.worker),1)]),l[6]||=u(`span`,{class:`hidden text-accented sm:inline`,"aria-hidden":`true`},`·`,-1),u(`span`,F,[e.action.type===`run`?(o(),d(n,{key:0},[u(`code`,I,m(e.action.command),1),l[1]||=u(`span`,{class:`text-dimmed`},`as`,-1),u(`code`,L,m(e.action.identity),1)],64)):(o(),d(`span`,R,m(p(S)[e.action.type])+` — not a run`,1))]),l[7]||=u(`span`,{class:`hidden text-accented sm:inline`,"aria-hidden":`true`},`·`,-1),u(`span`,z,[u(`code`,B,m(e.cron),1),l[3]||=u(`span`,{class:`text-dimmed`},`UTC`,-1),l[4]||=u(`span`,{class:`hidden text-accented sm:inline`,"aria-hidden":`true`},`·`,-1),u(`span`,{class:`next font-mono tabular-nums max-sm:ml-auto`,title:e.nextFireAt===void 0?void 0:p(y)(e.nextFireAt)},[l[2]||=u(`span`,{class:`mr-1 font-mono text-[0.62rem] uppercase tracking-wider text-dimmed`},`next`,-1),e.nextFireAt===void 0?(o(),d(`span`,K,`never`)):(o(),d(n,{key:0},[u(`span`,H,[u(`b`,U,m(p(v)(e.nextFireAt,T.value)),1),u(`span`,W,` (`+m(p(x)(e.nextFireAt,T.value))+`)`,1)]),u(`span`,G,m(p(x)(e.nextFireAt,T.value)),1)],64))],8,V)])]),u(`div`,q,[l[12]||=u(`span`,{class:`mr-1 font-mono text-[0.62rem] uppercase tracking-wider text-dimmed`},`last`,-1),e.last?(o(),d(n,{key:0},[u(`span`,{class:h([`outcome`,re[p(w)[e.last.outcome]]])},m(p(C)[e.last.outcome]),3),l[11]||=u(`span`,{class:`mx-1.5 text-accented max-sm:mx-0`,"aria-hidden":`true`},`·`,-1),u(`span`,{class:`when text-toned`,title:p(y)(e.last.firedAt)},m(p(x)(e.last.firedAt,T.value)),9,J),e.last.runId?(o(),d(n,{key:0},[l[8]||=u(`span`,{class:`mx-1.5 text-accented max-sm:mx-0`,"aria-hidden":`true`},`·`,-1),e.last.runHref?(o(),d(`a`,{key:0,class:`text-primary hover:underline`,href:e.last.runHref},`run `+m(e.last.runId.slice(0,8)),9,Y)):(o(),d(n,{key:1},[a(`run `+m(e.last.runId.slice(0,8)),1)],64))],64)):s(``,!0),e.last.traceId?(o(),d(n,{key:1},[l[9]||=u(`span`,{class:`mx-1.5 text-accented max-sm:mx-0`,"aria-hidden":`true`},`·`,-1),u(`span`,{class:`trace text-dimmed`,title:`trace ${e.last.traceId}`},`trace `+m(e.last.traceId.slice(0,8)),9,X)],64)):s(``,!0),e.last.detail&&p(E)(e.last.detail)?(o(),d(n,{key:2},[l[10]||=u(`span`,{class:`mx-1.5 text-accented max-sm:hidden`,"aria-hidden":`true`},`·`,-1),u(`span`,{class:`detail font-sans max-sm:line-clamp-2 max-sm:basis-full max-sm:whitespace-normal`,title:e.last.detail},m(p(E)(e.last.detail)),9,Z)],64)):s(``,!0)],64)):(o(),d(`span`,Q,m(p(b)?.firingsUnavailable?`unknown`:`never fired`),1))])],8,A))),128))]),p(b)?.firingsUnavailable?(o(),d(`p`,ne,` Firing history unavailable: `+m(p(b).firingsUnavailable),1)):s(``,!0)]))]),_:1})}}});export{$ as default};
1
+ import{t as e}from"./AppShell-lYVcj-k7.js";import{Lr as t,Xt as n,_n as r,cn as i,gn as a,ir as o,ln as s,on as c,r as l,sn as u,un as d,ur as f,vi as p,wi as m,xi as h,yn as g}from"./seed-DeKSHrt2.js";import{t as ee}from"./Tooltip-BuDnXjL7.js";import{n as te}from"./wallClock-61NpVkY6.js";import{t as _}from"./RunsTabs-DEICQ4FY.js";import{t as v}from"./indexFormat-B-pd4r7Y.js";import{t as y}from"./localIso-L06jV29p.js";function b(e,t){return{kind:`schedule`,id:`schedule:${e}`,grants:t}}b(`self-improvement`,Object.freeze({actions:new Set([`friction:read`,`friction:write`]),channels:`all`,repos:new Set}));function x(e,t){let n=e-t,r=Math.floor(Math.abs(n)/6e4),i=Math.floor(r/60),a=Math.floor(i/24),o=a>0?`${a}d ${i%24}h`:i>0?`${i}h ${r%60}m`:r>0?`${r}m`:`<1m`;return n>=0?`in ${o}`:`${o} ago`}var S={healthz:`container health check`,watchdog:`resident watchdog`},C={completed:`succeeded`,failed:`failed`,stopped_soft:`stopped early`,stopped_hard:`killed`,"no-run":`no run created`,"ingress-error":`ingress error`,misconfigured:`misconfigured — nothing ran`},w={completed:`ok`,failed:`bad`,stopped_soft:`warn`,stopped_hard:`warn`,"no-run":`warn`,"ingress-error":`bad`,misconfigured:`bad`},T=120;function E(e){let t=e.replace(/\s+/g,` `).trim();return t=t.replace(/^[^\p{L}\p{N}*_`<[(]+/u,``),t=t.replace(/^\*[^*]{1,60}\*\s+[—–-]\s+/,``),t=t.replace(/^[^\p{L}\p{N}]+/u,``).trim(),t.length>T?`${t.slice(0,T)}…`:t}var D={key:0,class:`px-2 py-1.5 text-muted`},O={key:1,id:`scheduled`,"aria-label":`Scheduled jobs`},k={class:`m-0 list-none p-0`},A=[`data-schedule`],j={class:`def flex flex-wrap items-baseline gap-x-2 gap-y-1.5 text-[0.8rem] text-toned`},M={class:`name font-medium text-highlighted max-sm:text-[0.9rem]`},N={class:`max-sm:ml-auto`},P={class:`rounded-xs bg-accented px-1.5 py-0.5 text-toned`},F={class:`max-sm:flex max-sm:basis-full max-sm:flex-wrap max-sm:items-baseline max-sm:gap-2 sm:contents`},I={class:`rounded-xs bg-accented px-1.5 py-0.5 text-toned`},L={class:`rounded-xs bg-accented px-1.5 py-0.5 text-toned`},R={key:1,class:`text-dimmed`},z={class:`max-sm:flex max-sm:basis-full max-sm:flex-wrap max-sm:items-baseline max-sm:gap-2 sm:contents`},B={class:`rounded-xs bg-accented px-1.5 py-0.5 text-toned`},V=[`title`],H={class:`max-sm:hidden`},U={class:`font-medium text-highlighted`},W={class:`text-dimmed`},G={class:`text-toned sm:hidden`},K={key:1,class:`text-dimmed`},q={class:`fire mt-1.5 font-mono text-xs text-muted max-sm:flex max-sm:flex-wrap max-sm:items-baseline max-sm:gap-x-1.5 max-sm:gap-y-1 sm:overflow-hidden sm:text-ellipsis sm:whitespace-nowrap`},J=[`title`],Y=[`href`],X=[`title`],Z=[`title`],Q={key:1,class:`text-dimmed`},ne={key:0,class:`mt-2.5 px-2 text-xs text-muted`},$=g({__name:`ScheduledPage`,setup(g){let b=l(`scheduled`),T=c(()=>b?.now??te()),$=c(()=>b?.rows??null),re={ok:`text-ok`,bad:`text-bad`,warn:`text-warn`};return(c,l)=>{let g=ee;return o(),i(e,{title:`Scheduled runs`,nav:`runs`},{default:t(()=>[r(_,{current:`scheduled`}),$.value===null?(o(),d(`p`,D,`No schedule registry configured.`)):(o(),d(`section`,O,[u(`ul`,k,[(o(!0),d(n,null,f($.value,e=>(o(),d(`li`,{key:e.name,class:`border-b border-muted px-2 pb-3 pt-2.5`,"data-schedule":e.name},[u(`div`,j,[r(g,{text:e.description},{default:t(()=>[u(`span`,M,m(e.name),1)]),_:2},1032,[`text`]),l[5]||=u(`span`,{class:`hidden text-accented sm:inline`,"aria-hidden":`true`},`·`,-1),u(`span`,N,[l[0]||=u(`span`,{class:`mr-1 font-mono text-[0.62rem] uppercase tracking-wider text-dimmed`},`on`,-1),u(`code`,P,m(e.worker),1)]),l[6]||=u(`span`,{class:`hidden text-accented sm:inline`,"aria-hidden":`true`},`·`,-1),u(`span`,F,[e.action.type===`run`?(o(),d(n,{key:0},[u(`code`,I,m(e.action.command),1),l[1]||=u(`span`,{class:`text-dimmed`},`as`,-1),u(`code`,L,m(e.action.identity),1)],64)):(o(),d(`span`,R,m(p(S)[e.action.type])+` — not a run`,1))]),l[7]||=u(`span`,{class:`hidden text-accented sm:inline`,"aria-hidden":`true`},`·`,-1),u(`span`,z,[u(`code`,B,m(e.cron),1),l[3]||=u(`span`,{class:`text-dimmed`},`UTC`,-1),l[4]||=u(`span`,{class:`hidden text-accented sm:inline`,"aria-hidden":`true`},`·`,-1),u(`span`,{class:`next font-mono tabular-nums max-sm:ml-auto`,title:e.nextFireAt===void 0?void 0:p(y)(e.nextFireAt)},[l[2]||=u(`span`,{class:`mr-1 font-mono text-[0.62rem] uppercase tracking-wider text-dimmed`},`next`,-1),e.nextFireAt===void 0?(o(),d(`span`,K,`never`)):(o(),d(n,{key:0},[u(`span`,H,[u(`b`,U,m(p(v)(e.nextFireAt,T.value)),1),u(`span`,W,` (`+m(p(x)(e.nextFireAt,T.value))+`)`,1)]),u(`span`,G,m(p(x)(e.nextFireAt,T.value)),1)],64))],8,V)])]),u(`div`,q,[l[12]||=u(`span`,{class:`mr-1 font-mono text-[0.62rem] uppercase tracking-wider text-dimmed`},`last`,-1),e.last?(o(),d(n,{key:0},[u(`span`,{class:h([`outcome`,re[p(w)[e.last.outcome]]])},m(p(C)[e.last.outcome]),3),l[11]||=u(`span`,{class:`mx-1.5 text-accented max-sm:mx-0`,"aria-hidden":`true`},`·`,-1),u(`span`,{class:`when text-toned`,title:p(y)(e.last.firedAt)},m(p(x)(e.last.firedAt,T.value)),9,J),e.last.runId?(o(),d(n,{key:0},[l[8]||=u(`span`,{class:`mx-1.5 text-accented max-sm:mx-0`,"aria-hidden":`true`},`·`,-1),e.last.runHref?(o(),d(`a`,{key:0,class:`text-primary hover:underline`,href:e.last.runHref},`run `+m(e.last.runId.slice(0,8)),9,Y)):(o(),d(n,{key:1},[a(`run `+m(e.last.runId.slice(0,8)),1)],64))],64)):s(``,!0),e.last.traceId?(o(),d(n,{key:1},[l[9]||=u(`span`,{class:`mx-1.5 text-accented max-sm:mx-0`,"aria-hidden":`true`},`·`,-1),u(`span`,{class:`trace text-dimmed`,title:`trace ${e.last.traceId}`},`trace `+m(e.last.traceId.slice(0,8)),9,X)],64)):s(``,!0),e.last.detail&&p(E)(e.last.detail)?(o(),d(n,{key:2},[l[10]||=u(`span`,{class:`mx-1.5 text-accented max-sm:hidden`,"aria-hidden":`true`},`·`,-1),u(`span`,{class:`detail font-sans max-sm:line-clamp-2 max-sm:basis-full max-sm:whitespace-normal`,title:e.last.detail},m(p(E)(e.last.detail)),9,Z)],64)):s(``,!0)],64)):(o(),d(`span`,Q,m(p(b)?.firingsUnavailable?`unknown`:`never fired`),1))])],8,A))),128))]),p(b)?.firingsUnavailable?(o(),d(`p`,ne,` Firing history unavailable: `+m(p(b).firingsUnavailable),1)):s(``,!0)]))]),_:1})}}});export{$ as default};
@@ -1 +1 @@
1
- import{Lr as e,cn as t,ir as n,sn as r,un as i,xi as a,yn as o}from"./seed-DeKSHrt2.js";import{t as s}from"./Tooltip-BYv0WSrA.js";var c=[`aria-label`,`data-tone`],l=[`aria-label`,`data-tone`],u=o({__name:`StatusDot`,props:{tone:{},label:{},tip:{},pulse:{type:Boolean}},setup(o){let u={green:`bg-ok`,amber:`bg-warn`,red:`bg-bad`,grey:`bg-(--ui-text-dimmed)`};return(d,f)=>{let p=s;return o.tip?(n(),t(p,{key:0,text:o.tip},{default:e(()=>[r(`span`,{class:a([`inline-block size-[0.6em] shrink-0 rounded-full`,[u[o.tone],o.pulse?`motion-safe:animate-pulse`:``]]),role:`img`,"aria-label":o.label,"data-tone":o.tone},null,10,c)]),_:1},8,[`text`])):(n(),i(`span`,{key:1,class:a([`inline-block size-[0.6em] shrink-0 rounded-full`,[u[o.tone],o.pulse?`motion-safe:animate-pulse`:``]]),role:`img`,"aria-label":o.label,"data-tone":o.tone},null,10,l))}}});export{u as t};
1
+ import{Lr as e,cn as t,ir as n,sn as r,un as i,xi as a,yn as o}from"./seed-DeKSHrt2.js";import{t as s}from"./Tooltip-BuDnXjL7.js";var c=[`aria-label`,`data-tone`],l=[`aria-label`,`data-tone`],u=o({__name:`StatusDot`,props:{tone:{},label:{},tip:{},pulse:{type:Boolean}},setup(o){let u={green:`bg-ok`,amber:`bg-warn`,red:`bg-bad`,grey:`bg-(--ui-text-dimmed)`};return(d,f)=>{let p=s;return o.tip?(n(),t(p,{key:0,text:o.tip},{default:e(()=>[r(`span`,{class:a([`inline-block size-[0.6em] shrink-0 rounded-full`,[u[o.tone],o.pulse?`motion-safe:animate-pulse`:``]]),role:`img`,"aria-label":o.label,"data-tone":o.tone},null,10,c)]),_:1},8,[`text`])):(n(),i(`span`,{key:1,class:a([`inline-block size-[0.6em] shrink-0 rounded-full`,[u[o.tone],o.pulse?`motion-safe:animate-pulse`:``]]),role:`img`,"aria-label":o.label,"data-tone":o.tone},null,10,l))}}});export{u as t};
@@ -1 +1 @@
1
- import{d as e,f as t,l as n,o as r,u as i,v as a,x as o,y as s}from"./AppShell-lYVcj-k7.js";import{A as c,B as l,Dr as u,J as d,Lr as f,M as p,Mr as m,N as h,Nr as g,Qn as _,Si as v,Wn as y,Wt as b,Xt as x,_ as S,_n as C,_t as ee,at as w,ci as T,cn as E,dr as D,ft as O,g as te,gn as ne,h as re,ht as k,ir as A,j,kn as M,ln as N,mi as P,mr as ie,on as F,ot as I,pt as L,q as R,tt as z,u as B,un as V,ur as H,vi as U,wi as W,x as G,xi as K,xr as q,y as J,yn as Y}from"./seed-DeKSHrt2.js";import{n as X,r as ae}from"./main-C4GOEklV.js";function oe(e,t){let n=L(!1,300);k(()=>{n.value=!1});let r=T(null),i=I();function a(){r.value=null,n.value=!1}function o(e,t){if(!t)return;let i=e.currentTarget,a={x:e.clientX,y:e.clientY},o=ce(a,se(a,i.getBoundingClientRect()),1),s=le(t.getBoundingClientRect()),c=de([...o,...s]);r.value=c,n.value=!0}return g(n=>{if(e.value&&t.value){let r=e=>o(e,t.value),i=t=>o(t,e.value);e.value.addEventListener(`pointerleave`,r),t.value.addEventListener(`pointerleave`,i),n(()=>{e.value?.removeEventListener(`pointerleave`,r),t.value?.removeEventListener(`pointerleave`,i)})}}),g(n=>{if(r.value){let o=n=>{if(!r.value||!(n.target instanceof Element))return;let o=n.target,s={x:n.clientX,y:n.clientY},c=e.value?.contains(o)||t.value?.contains(o),l=!ue(s,r.value),u=!!o.closest(`[data-grace-area-trigger]`);c?a():(l||u)&&(a(),i.trigger())};e.value?.ownerDocument.addEventListener(`pointermove`,o),n(()=>e.value?.ownerDocument.removeEventListener(`pointermove`,o))}}),{isPointerInTransit:n,onPointerExit:i.on}}function se(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function ce(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}function le(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function ue(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e].x,s=t[e].y,c=t[a].x,l=t[a].y;s>r!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function de(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),fe(t)}function fe(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t.at(-1),n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n.at(-1),t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var pe=Y({__name:`TooltipArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e;return h(),(e,r)=>(A(),E(U(n),v(M(t)),{default:f(()=>[D(e.$slots,`default`)]),_:3},16))}}),Z=`tooltip.open`,[Q,me]=l(`TooltipRoot`),he=Y({__name:`TooltipRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:n}){let r=e,i=n;h();let a=X(),o=F(()=>r.disableHoverableContent??a.disableHoverableContent.value),s=F(()=>r.disableClosingTrigger??a.disableClosingTrigger.value),c=F(()=>r.disabled??a.disabled.value),l=F(()=>r.delayDuration??a.delayDuration.value),u=F(()=>r.ignoreNonKeyboardFocus??a.ignoreNonKeyboardFocus.value),d=w(r,`open`,i,{defaultValue:r.defaultOpen,passive:r.open===void 0});m(d,e=>{a.onClose&&(e?(a.onOpen(),document.dispatchEvent(new CustomEvent(Z))):a.onClose())});let p=T(!1),g=T(),_=F(()=>d.value?p.value?`delayed-open`:`instant-open`:`closed`),{start:v,stop:y}=ee(()=>{p.value=!0,d.value=!0},l,{immediate:!1});function b(){y(),p.value=!1,d.value=!0}function x(){y(),d.value=!1}function S(){v()}return me({contentId:``,open:d,stateAttribute:_,trigger:g,onTriggerChange(e){g.value=e},onTriggerEnter(){a.isOpenDelayed.value?S():b()},onTriggerLeave(){o.value?x():y()},onOpen:b,onClose:x,disableHoverableContent:o,disableClosingTrigger:s,disabled:c,ignoreNonKeyboardFocus:u}),(e,n)=>(A(),E(U(t),null,{default:f(()=>[D(e.$slots,`default`,{open:U(d)})]),_:3}))}}),$=Y({__name:`TooltipContentImpl`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,o=Q(),s=X(),{forwardRef:c,currentElement:l}=h(),u=F(()=>n.ariaLabel||l.value?.textContent),d=F(()=>{let{ariaLabel:e,...t}=n;return R(t,s.content.value??{},{side:`top`,sideOffset:0,align:`center`,avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:`partial`,hideWhenDetached:!1})});return _(()=>{z(window,`scroll`,e=>{e.target?.contains(o.trigger.value)&&o.onClose()},{capture:!0}),z(document,Z,o.onClose)}),(e,t)=>(A(),E(U(a),{"as-child":``,"disable-outside-pointer-events":!1,onEscapeKeyDown:t[0]||=e=>r(`escapeKeyDown`,e),onPointerDownOutside:t[1]||=e=>{U(o).disableClosingTrigger.value&&U(o).trigger.value?.contains(e.target)&&e.preventDefault(),r(`pointerDownOutside`,e)},onFocusOutside:t[2]||=b(()=>{},[`prevent`]),onDismiss:t[3]||=e=>U(o).onClose()},{default:f(()=>[C(U(i),y({ref:U(c),"data-state":U(o).stateAttribute.value},{...e.$attrs,...d.value},{style:{"--reka-tooltip-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-tooltip-content-available-width":`var(--reka-popper-available-width)`,"--reka-tooltip-content-available-height":`var(--reka-popper-available-height)`,"--reka-tooltip-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-tooltip-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:f(()=>[D(e.$slots,`default`),C(U(ae),{id:U(o).contentId,role:`tooltip`},{default:f(()=>[ne(W(u.value),1)]),_:1},8,[`id`])]),_:3},16,[`data-state`])]),_:3}))}}),ge=Y({__name:`TooltipContentHoverable`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){let t=p(e),{forwardRef:n,currentElement:r}=h(),{trigger:i,onClose:a}=Q(),o=X(),{isPointerInTransit:s,onPointerExit:c}=oe(i,r);return o.isPointerInTransitRef=s,c(()=>{a()}),(e,r)=>(A(),E($,y({ref:U(n)},U(t)),{default:f(()=>[D(e.$slots,`default`)]),_:3},16))}}),_e=Y({__name:`TooltipContent`,props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,i=Q(),a=o(n,r),{forwardRef:s}=h();return(e,t)=>(A(),E(U(j),{present:e.forceMount||U(i).open.value},{default:f(()=>[(A(),E(ie(U(i).disableHoverableContent.value?$:ge),y({ref:U(s)},U(a)),{default:f(()=>[D(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),ve=Y({__name:`TooltipPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(A(),E(U(G),v(M(t)),{default:f(()=>[D(e.$slots,`default`)]),_:3},16))}}),ye=Y({__name:`TooltipTrigger`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(t){let n=t,r=Q(),i=X();r.contentId||=s(void 0,`reka-tooltip-content`);let{forwardRef:a,currentElement:o}=h(),l=T(!1),u=T(!1),d=F(()=>r.disabled.value?{}:{click:S,focus:b,pointermove:g,pointerleave:v,pointerdown:m,blur:x});_(()=>{r.onTriggerChange(o.value)});function p(){setTimeout(()=>{l.value=!1},1)}function m(){r.open&&!r.disableClosingTrigger.value&&r.onClose(),l.value=!0,document.addEventListener(`pointerup`,p,{once:!0})}function g(e){e.pointerType!==`touch`&&!u.value&&!i.isPointerInTransitRef.value&&(r.onTriggerEnter(),u.value=!0)}function v(){r.onTriggerLeave(),u.value=!1}function b(e){l.value||(!r.ignoreNonKeyboardFocus.value||e.target.matches?.(`:focus-visible`))&&r.onOpen()}function x(){r.onClose()}function S(){r.disableClosingTrigger.value||r.onClose()}return(t,i)=>(A(),E(U(e),{"as-child":``,reference:t.reference},{default:f(()=>[C(U(c),y({ref:U(a),"aria-describedby":U(r).open.value?U(r).contentId:void 0,"data-state":U(r).stateAttribute.value,as:t.as,"as-child":n.asChild,"data-grace-area-trigger":``},q(d.value)),{default:f(()=>[D(t.$slots,`default`)]),_:3},16,[`aria-describedby`,`data-state`,`as`,`as-child`])]),_:3},8,[`reference`]))}}),be={slots:{content:`flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto`,arrow:`fill-bg stroke-default`,text:`truncate`,kbds:`hidden lg:inline-flex items-center shrink-0 gap-0.5 not-first-of-type:before:content-['·'] not-first-of-type:before:me-0.5`,kbdsSize:`sm`}},xe={__name:`Tooltip`,props:{text:{type:String,required:!1},kbds:{type:Array,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},reference:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},delayDuration:{type:Number,required:!1},disableHoverableContent:{type:Boolean,required:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=e,i=t,a=u(),o=S(`tooltip`,n),s=d(),c=X(),l=te(O(o,`defaultOpen`,`open`,`delayDuration`,`disableHoverableContent`,`disableClosingTrigger`,`ignoreNonKeyboardFocus`),i),p=J(P(()=>o.portal)),m=P(()=>R(o.content,c.content.value,{side:`bottom`,sideOffset:8,collisionPadding:8})),h=P(()=>R(o.arrow,{rounded:!0})),g=F(()=>re({extend:be,...s.ui?.tooltip||{}})({side:m.value.side}));return(e,t)=>(A(),E(U(he),y(U(l),{disabled:!(U(o).text||U(o).kbds?.length||a.content)||U(o).disabled}),{default:f(({open:t})=>[a.default||U(o).reference?(A(),E(U(ye),y({key:0},e.$attrs,{"as-child":``,reference:U(o).reference,class:U(o).class}),{default:f(()=>[D(e.$slots,`default`,{open:t})]),_:2},1040,[`reference`,`class`])):N(``,!0),C(U(ve),v(M(U(p))),{default:f(()=>[C(U(B),null,{default:f(()=>[C(U(_e),y(m.value,{"data-slot":`content`,class:g.value.content({class:[!a.default&&U(o).class,U(o).ui?.content]})}),{default:f(()=>[D(e.$slots,`content`,{ui:g.value},()=>[U(o).text?(A(),V(`span`,{key:0,"data-slot":`text`,class:K(g.value.text({class:U(o).ui?.text}))},W(U(o).text),3)):N(``,!0),U(o).kbds?.length?(A(),V(`span`,{key:1,"data-slot":`kbds`,class:K(g.value.kbds({class:U(o).ui?.kbds}))},[(A(!0),V(x,null,H(U(o).kbds,(e,t)=>(A(),E(r,y({key:t,size:U(o).ui?.kbdsSize||g.value.kbdsSize()},{ref_for:!0},typeof e==`string`?{value:e}:e),null,16,[`size`]))),128))],2)):N(``,!0)]),U(o).arrow?(A(),E(U(pe),y({key:0},h.value,{"data-slot":`arrow`,class:g.value.arrow({class:U(o).ui?.arrow})}),null,16,[`class`])):N(``,!0)]),_:3},16,[`class`])]),_:3})]),_:3},16)]),_:3},16,[`disabled`]))}};export{xe as t};
1
+ import{d as e,f as t,l as n,o as r,u as i,v as a,x as o,y as s}from"./AppShell-lYVcj-k7.js";import{A as c,B as l,Dr as u,J as d,Lr as f,M as p,Mr as m,N as h,Nr as g,Qn as _,Si as v,Wn as y,Wt as b,Xt as x,_ as S,_n as C,_t as ee,at as w,ci as T,cn as E,dr as D,ft as O,g as te,gn as ne,h as re,ht as k,ir as A,j,kn as M,ln as N,mi as P,mr as ie,on as F,ot as I,pt as L,q as R,tt as z,u as B,un as V,ur as H,vi as U,wi as W,x as G,xi as K,xr as q,y as J,yn as Y}from"./seed-DeKSHrt2.js";import{n as X,r as ae}from"./main-BRrMt0Kr.js";function oe(e,t){let n=L(!1,300);k(()=>{n.value=!1});let r=T(null),i=I();function a(){r.value=null,n.value=!1}function o(e,t){if(!t)return;let i=e.currentTarget,a={x:e.clientX,y:e.clientY},o=ce(a,se(a,i.getBoundingClientRect()),1),s=le(t.getBoundingClientRect()),c=de([...o,...s]);r.value=c,n.value=!0}return g(n=>{if(e.value&&t.value){let r=e=>o(e,t.value),i=t=>o(t,e.value);e.value.addEventListener(`pointerleave`,r),t.value.addEventListener(`pointerleave`,i),n(()=>{e.value?.removeEventListener(`pointerleave`,r),t.value?.removeEventListener(`pointerleave`,i)})}}),g(n=>{if(r.value){let o=n=>{if(!r.value||!(n.target instanceof Element))return;let o=n.target,s={x:n.clientX,y:n.clientY},c=e.value?.contains(o)||t.value?.contains(o),l=!ue(s,r.value),u=!!o.closest(`[data-grace-area-trigger]`);c?a():(l||u)&&(a(),i.trigger())};e.value?.ownerDocument.addEventListener(`pointermove`,o),n(()=>e.value?.ownerDocument.removeEventListener(`pointermove`,o))}}),{isPointerInTransit:n,onPointerExit:i.on}}function se(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function ce(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}function le(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function ue(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e].x,s=t[e].y,c=t[a].x,l=t[a].y;s>r!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function de(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),fe(t)}function fe(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t.at(-1),n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n.at(-1),t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var pe=Y({__name:`TooltipArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e;return h(),(e,r)=>(A(),E(U(n),v(M(t)),{default:f(()=>[D(e.$slots,`default`)]),_:3},16))}}),Z=`tooltip.open`,[Q,me]=l(`TooltipRoot`),he=Y({__name:`TooltipRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:n}){let r=e,i=n;h();let a=X(),o=F(()=>r.disableHoverableContent??a.disableHoverableContent.value),s=F(()=>r.disableClosingTrigger??a.disableClosingTrigger.value),c=F(()=>r.disabled??a.disabled.value),l=F(()=>r.delayDuration??a.delayDuration.value),u=F(()=>r.ignoreNonKeyboardFocus??a.ignoreNonKeyboardFocus.value),d=w(r,`open`,i,{defaultValue:r.defaultOpen,passive:r.open===void 0});m(d,e=>{a.onClose&&(e?(a.onOpen(),document.dispatchEvent(new CustomEvent(Z))):a.onClose())});let p=T(!1),g=T(),_=F(()=>d.value?p.value?`delayed-open`:`instant-open`:`closed`),{start:v,stop:y}=ee(()=>{p.value=!0,d.value=!0},l,{immediate:!1});function b(){y(),p.value=!1,d.value=!0}function x(){y(),d.value=!1}function S(){v()}return me({contentId:``,open:d,stateAttribute:_,trigger:g,onTriggerChange(e){g.value=e},onTriggerEnter(){a.isOpenDelayed.value?S():b()},onTriggerLeave(){o.value?x():y()},onOpen:b,onClose:x,disableHoverableContent:o,disableClosingTrigger:s,disabled:c,ignoreNonKeyboardFocus:u}),(e,n)=>(A(),E(U(t),null,{default:f(()=>[D(e.$slots,`default`,{open:U(d)})]),_:3}))}}),$=Y({__name:`TooltipContentImpl`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,o=Q(),s=X(),{forwardRef:c,currentElement:l}=h(),u=F(()=>n.ariaLabel||l.value?.textContent),d=F(()=>{let{ariaLabel:e,...t}=n;return R(t,s.content.value??{},{side:`top`,sideOffset:0,align:`center`,avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:`partial`,hideWhenDetached:!1})});return _(()=>{z(window,`scroll`,e=>{e.target?.contains(o.trigger.value)&&o.onClose()},{capture:!0}),z(document,Z,o.onClose)}),(e,t)=>(A(),E(U(a),{"as-child":``,"disable-outside-pointer-events":!1,onEscapeKeyDown:t[0]||=e=>r(`escapeKeyDown`,e),onPointerDownOutside:t[1]||=e=>{U(o).disableClosingTrigger.value&&U(o).trigger.value?.contains(e.target)&&e.preventDefault(),r(`pointerDownOutside`,e)},onFocusOutside:t[2]||=b(()=>{},[`prevent`]),onDismiss:t[3]||=e=>U(o).onClose()},{default:f(()=>[C(U(i),y({ref:U(c),"data-state":U(o).stateAttribute.value},{...e.$attrs,...d.value},{style:{"--reka-tooltip-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-tooltip-content-available-width":`var(--reka-popper-available-width)`,"--reka-tooltip-content-available-height":`var(--reka-popper-available-height)`,"--reka-tooltip-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-tooltip-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:f(()=>[D(e.$slots,`default`),C(U(ae),{id:U(o).contentId,role:`tooltip`},{default:f(()=>[ne(W(u.value),1)]),_:1},8,[`id`])]),_:3},16,[`data-state`])]),_:3}))}}),ge=Y({__name:`TooltipContentHoverable`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(e){let t=p(e),{forwardRef:n,currentElement:r}=h(),{trigger:i,onClose:a}=Q(),o=X(),{isPointerInTransit:s,onPointerExit:c}=oe(i,r);return o.isPointerInTransitRef=s,c(()=>{a()}),(e,r)=>(A(),E($,y({ref:U(n)},U(t)),{default:f(()=>[D(e.$slots,`default`)]),_:3},16))}}),_e=Y({__name:`TooltipContent`,props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let n=e,r=t,i=Q(),a=o(n,r),{forwardRef:s}=h();return(e,t)=>(A(),E(U(j),{present:e.forceMount||U(i).open.value},{default:f(()=>[(A(),E(ie(U(i).disableHoverableContent.value?$:ge),y({ref:U(s)},U(a)),{default:f(()=>[D(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),ve=Y({__name:`TooltipPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(A(),E(U(G),v(M(t)),{default:f(()=>[D(e.$slots,`default`)]),_:3},16))}}),ye=Y({__name:`TooltipTrigger`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(t){let n=t,r=Q(),i=X();r.contentId||=s(void 0,`reka-tooltip-content`);let{forwardRef:a,currentElement:o}=h(),l=T(!1),u=T(!1),d=F(()=>r.disabled.value?{}:{click:S,focus:b,pointermove:g,pointerleave:v,pointerdown:m,blur:x});_(()=>{r.onTriggerChange(o.value)});function p(){setTimeout(()=>{l.value=!1},1)}function m(){r.open&&!r.disableClosingTrigger.value&&r.onClose(),l.value=!0,document.addEventListener(`pointerup`,p,{once:!0})}function g(e){e.pointerType!==`touch`&&!u.value&&!i.isPointerInTransitRef.value&&(r.onTriggerEnter(),u.value=!0)}function v(){r.onTriggerLeave(),u.value=!1}function b(e){l.value||(!r.ignoreNonKeyboardFocus.value||e.target.matches?.(`:focus-visible`))&&r.onOpen()}function x(){r.onClose()}function S(){r.disableClosingTrigger.value||r.onClose()}return(t,i)=>(A(),E(U(e),{"as-child":``,reference:t.reference},{default:f(()=>[C(U(c),y({ref:U(a),"aria-describedby":U(r).open.value?U(r).contentId:void 0,"data-state":U(r).stateAttribute.value,as:t.as,"as-child":n.asChild,"data-grace-area-trigger":``},q(d.value)),{default:f(()=>[D(t.$slots,`default`)]),_:3},16,[`aria-describedby`,`data-state`,`as`,`as-child`])]),_:3},8,[`reference`]))}}),be={slots:{content:`flex items-center gap-1 bg-default text-highlighted shadow-sm rounded-sm ring ring-default h-6 px-2.5 py-1 text-xs select-none data-[state=delayed-open]:animate-[scale-in_100ms_var(--ease-out)] data-[state=closed]:animate-[scale-out_100ms_var(--ease-out)] origin-(--reka-tooltip-content-transform-origin) pointer-events-auto`,arrow:`fill-bg stroke-default`,text:`truncate`,kbds:`hidden lg:inline-flex items-center shrink-0 gap-0.5 not-first-of-type:before:content-['·'] not-first-of-type:before:me-0.5`,kbdsSize:`sm`}},xe={__name:`Tooltip`,props:{text:{type:String,required:!1},kbds:{type:Array,required:!1},content:{type:Object,required:!1},arrow:{type:[Boolean,Object],required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},reference:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},delayDuration:{type:Number,required:!1},disableHoverableContent:{type:Boolean,required:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1}},emits:[`update:open`],setup(e,{emit:t}){let n=e,i=t,a=u(),o=S(`tooltip`,n),s=d(),c=X(),l=te(O(o,`defaultOpen`,`open`,`delayDuration`,`disableHoverableContent`,`disableClosingTrigger`,`ignoreNonKeyboardFocus`),i),p=J(P(()=>o.portal)),m=P(()=>R(o.content,c.content.value,{side:`bottom`,sideOffset:8,collisionPadding:8})),h=P(()=>R(o.arrow,{rounded:!0})),g=F(()=>re({extend:be,...s.ui?.tooltip||{}})({side:m.value.side}));return(e,t)=>(A(),E(U(he),y(U(l),{disabled:!(U(o).text||U(o).kbds?.length||a.content)||U(o).disabled}),{default:f(({open:t})=>[a.default||U(o).reference?(A(),E(U(ye),y({key:0},e.$attrs,{"as-child":``,reference:U(o).reference,class:U(o).class}),{default:f(()=>[D(e.$slots,`default`,{open:t})]),_:2},1040,[`reference`,`class`])):N(``,!0),C(U(ve),v(M(U(p))),{default:f(()=>[C(U(B),null,{default:f(()=>[C(U(_e),y(m.value,{"data-slot":`content`,class:g.value.content({class:[!a.default&&U(o).class,U(o).ui?.content]})}),{default:f(()=>[D(e.$slots,`content`,{ui:g.value},()=>[U(o).text?(A(),V(`span`,{key:0,"data-slot":`text`,class:K(g.value.text({class:U(o).ui?.text}))},W(U(o).text),3)):N(``,!0),U(o).kbds?.length?(A(),V(`span`,{key:1,"data-slot":`kbds`,class:K(g.value.kbds({class:U(o).ui?.kbds}))},[(A(!0),V(x,null,H(U(o).kbds,(e,t)=>(A(),E(r,y({key:t,size:U(o).ui?.kbdsSize||g.value.kbdsSize()},{ref_for:!0},typeof e==`string`?{value:e}:e),null,16,[`size`]))),128))],2)):N(``,!0)]),U(o).arrow?(A(),E(U(pe),y({key:0},h.value,{"data-slot":`arrow`,class:g.value.arrow({class:U(o).ui?.arrow})}),null,16,[`class`])):N(``,!0)]),_:3},16,[`class`])]),_:3})]),_:3},16)]),_:3},16,[`disabled`]))}};export{xe as t};