@coreplane/switchboard 1.200.0 → 1.202.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 (47) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/deploy/cloudflare-resident/refresh.ts +238 -0
  3. package/dist/assets/deploy/cloudflare-resident/shared.ts +80 -0
  4. package/dist/assets/deploy/cloudflare-resident/tsconfig.json +1 -1
  5. package/dist/assets/deploy/cloudflare-resident/worker.ts +67 -285
  6. package/dist/assets/deploy/cloudflare-resident/wrangler.template.jsonc +2 -1
  7. package/dist/assets/package-lock.json +482 -3
  8. package/dist/assets/package.json +1 -1
  9. package/dist/assets/project.json +1 -1
  10. package/dist/assets/source.json +3 -3
  11. package/dist/assets/src/core/authz/policy.ts +3 -0
  12. package/dist/assets/src/execution/residentRefresh.ts +29 -0
  13. package/dist/assets/web/dist/.vite/manifest.json +104 -67
  14. package/dist/assets/web/dist/assets/{AppShell-Bk2gbvet.js → AppShell-CJLPO_aI.js} +1 -1
  15. package/dist/assets/web/dist/assets/CostsPage-C6ZvnAmH.js +1 -0
  16. package/dist/assets/web/dist/assets/NotFoundPage-BdLcY60r.js +1 -0
  17. package/dist/assets/web/dist/assets/ResidentDetailPage-hXWrr8T6.js +1 -0
  18. package/dist/assets/web/dist/assets/ResidentsIndexPage-YLu4JwxJ.js +1 -0
  19. package/dist/assets/web/dist/assets/{RunRoutePage-C1TGcPCl.js → RunRoutePage-BDhHRJVO.js} +4 -4
  20. package/dist/assets/web/dist/assets/{RunRoutePage-XVFj0XDc.css → RunRoutePage-CdbrbqU2.css} +1 -1
  21. package/dist/assets/web/dist/assets/RunsIndexPage-D7zZ5a0l.js +1 -0
  22. package/dist/assets/web/dist/assets/{RunsTabs-C4krAL9o.js → RunsTabs-BOUlSa2W.js} +1 -1
  23. package/dist/assets/web/dist/assets/ScheduledPage-BciOQcC-.js +1 -0
  24. package/dist/assets/web/dist/assets/StatusDot-CTDLBv92.js +1 -0
  25. package/dist/assets/web/dist/assets/{Tooltip-C7yR095Y.js → Tooltip-DD2v9Gxx.js} +1 -1
  26. package/dist/assets/web/dist/assets/{favicon-DL1rdWJt.js → favicon-C4Q8cRsP.js} +1 -1
  27. package/dist/assets/web/dist/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2 +0 -0
  28. package/dist/assets/web/dist/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2 +0 -0
  29. package/dist/assets/web/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  30. package/dist/assets/web/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  31. package/dist/assets/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  32. package/dist/assets/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  33. package/dist/assets/web/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  34. package/dist/assets/web/dist/assets/main-DoTjwE-G.css +1 -0
  35. package/dist/assets/web/dist/assets/{main-DDu3Ig6S.js → main-DrSlUcMg.js} +3 -3
  36. package/dist/assets/web/dist/assets/{seed-BglCRKLA.js → seed-B8mQEhhw.js} +1 -1
  37. package/dist/assets/web/dist/assets/{wallClock-Ckv3sKoR.js → wallClock-DI4HIEN5.js} +1 -1
  38. package/dist/cli.js +629 -207
  39. package/package.json +1 -1
  40. package/dist/assets/web/dist/assets/CostsPage-CzutIHUw.js +0 -1
  41. package/dist/assets/web/dist/assets/NotFoundPage-C-BuaSm8.js +0 -1
  42. package/dist/assets/web/dist/assets/ResidentDetailPage-Dw3e9u1u.js +0 -1
  43. package/dist/assets/web/dist/assets/ResidentsIndexPage-D8NN4AFS.js +0 -1
  44. package/dist/assets/web/dist/assets/RunsIndexPage-D9iLpfAr.js +0 -1
  45. package/dist/assets/web/dist/assets/ScheduledPage-BJCtMp7H.js +0 -1
  46. package/dist/assets/web/dist/assets/StatusDot-DvV0z_-s.js +0 -1
  47. package/dist/assets/web/dist/assets/main-BsBGUyMH.css +0 -2
@@ -0,0 +1 @@
1
+ import{t as e}from"./AppShell-CJLPO_aI.js";import{Pr as t,an as n,bi as r,gn as i,hi as a,in as o,mn as s,on as c,pn as l,qt as u,r as d,rn as f,sn as p,sr as m,tr as h,vi as g,xi as _}from"./seed-B8mQEhhw.js";var v=`Durable Objects`,y=`Workers · storage · R2`,b=`LLM (Anthropic)`,x=(e,t=2)=>`$${e.toFixed(t)}`,S=e=>e.workersUsd+e.doRowsUsd+e.doStorageUsd+e.r2Usd+e.workflowsUsd;function ee(e){let t=[];for(let n of e.days)for(let e of Object.keys(n.containers))t.includes(e)||t.push(e);return e.days.some(e=>Object.keys(e.durableObjects).length>0)&&t.push(v),e.days.some(e=>S(e)>0)&&t.push(y),e.llmAvailable&&t.push(b),t}function C(e,t){return t===`Durable Objects`?Object.values(e.durableObjects).reduce((e,t)=>e+t,0)+e.doRequestsUsd:t===`Workers · storage · R2`?S(e):t===`LLM (Anthropic)`?e.llmUsd:e.containers[t]?.total??0}function w(e){let t=e.range.partialLastDay?e.days.slice(0,-1):e.days,n=t[t.length-1],r=t.slice(-7),i=r.length?r.reduce((e,t)=>e+t.total,0)/r.length:0,a=e.totals.total>0?Math.round(e.totals.llmUsd/e.totals.total*100):0,o=e.account.cloudUsd>0?Math.round(e.totals.cloudUsd/e.account.cloudUsd*100):0;return{...n?{yesterday:{date:n.date,total:n.total}}:{},avg7:i,projectedMonth:i*30.4,llmShare:a,accountShare:o}}function T(e,t){let n={t:12,r:12,b:30,l:48},r=960-n.l-n.r,i=260-n.t-n.b,a=e.days,o=Math.max(1e-9,...a.map(e=>e.total))*1.08,s=r/Math.max(1,a.length),c=Math.min(10,s*.28),l=e=>n.t+i-e/o*i,u=Array.from({length:5},(e,t)=>{let n=o/4*t;return{y:Number(l(n).toFixed(1)),label:x(n)}}),d=[],f=[];return a.forEach((e,r)=>{let i=0,o=n.l+r*s+c/2,u=s-c;t.forEach((t,n)=>{let r=C(e,t);if(r<=0)return;let a=l(i+r),s=l(i),c=Math.max(0,s-a-2);d.push({seriesIndex:n,x:Number(o.toFixed(1)),y:Number(a.toFixed(1)),width:Number(u.toFixed(1)),height:Number(c.toFixed(1)),title:`${e.date} · ${t} · ${x(r)}`}),i+=r}),(a.length<=16||r%Math.ceil(a.length/16)===0)&&f.push({x:Number((o+u/2).toFixed(1)),label:e.date.slice(5)})}),{width:960,height:260,gridLines:u,segments:d,dayLabels:f,axisY:Number(l(0).toFixed(1)),marginLeft:n.l,marginRight:n.r}}function E(e){let t=e.totals.byResource,n=[[`Memory (provisioned while awake)`,t.memory],[`vCPU (active use only)`,t.cpu],[`Durable Object duration + requests`,t.durableObjects],[`Disk (provisioned while awake)`,t.disk],[`Workers requests + CPU`,t.workers],[`Durable Object SQLite rows`,t.doRows],[`Durable Object SQLite storage`,t.doStorage],[`R2 storage + operations`,t.r2],[`Workflow steps + state`,t.workflows]],r=n.reduce((e,t)=>e+t[1],0)||1;return n.map(([e,t])=>({label:e,usd:t,percent:t/r*100}))}var D=[`fill-[#4478b8] dark:fill-[#7aa7e0]`,`fill-[#c8823b] dark:fill-[#e0a95a]`,`fill-[#4c8c57] dark:fill-[#6fae7a]`,`fill-[#b8963e] dark:fill-[#d4b45a]`,`fill-[#b0568c] dark:fill-[#d489b8]`,`fill-[#6b7bcc] dark:fill-[#98a5e6]`,`fill-[#d05252] dark:fill-[#e07a74]`,`fill-[#3e8e96] dark:fill-[#6fb9c0]`],O=[`bg-[#4478b8] dark:bg-[#7aa7e0]`,`bg-[#c8823b] dark:bg-[#e0a95a]`,`bg-[#4c8c57] dark:bg-[#6fae7a]`,`bg-[#b8963e] dark:bg-[#d4b45a]`,`bg-[#b0568c] dark:bg-[#d489b8]`,`bg-[#6b7bcc] dark:bg-[#98a5e6]`,`bg-[#d05252] dark:bg-[#e07a74]`,`bg-[#3e8e96] dark:bg-[#6fb9c0]`],k={class:`overflow-x-auto`},A=[`viewBox`],j=[`x1`,`x2`,`y1`,`y2`],M=[`x`,`y`],N=[`x`,`y`,`width`,`height`],P=[`x`,`y`],F=[`x1`,`x2`,`y1`,`y2`],I=i({__name:`CostChart`,props:{report:{},series:{}},setup(e){let t=e,n=f(()=>T(t.report,t.series));return(e,t)=>(h(),p(`div`,k,[(h(),p(`svg`,{class:`block h-auto w-full font-mono`,viewBox:`0 0 ${n.value.width} ${n.value.height}`,role:`img`,"aria-label":`Daily cost, stacked by component`},[(h(!0),p(u,null,m(n.value.gridLines,(e,t)=>(h(),p(u,{key:`g${t}`},[o(`line`,{class:`stroke-(--ui-border-muted)`,x1:n.value.marginLeft,x2:n.value.width-n.value.marginRight,y1:e.y,y2:e.y},null,8,j),o(`text`,{class:`fill-(--ui-text-dimmed) text-[11px] tabular-nums`,x:n.value.marginLeft-8,y:e.y+4,"text-anchor":`end`},_(e.label),9,M)],64))),128)),(h(!0),p(u,null,m(n.value.segments,(e,t)=>(h(),p(`rect`,{key:`s${t}`,class:g([`seg hover:opacity-85`,a(D)[e.seriesIndex%a(D).length]]),x:e.x,y:e.y,width:e.width,height:e.height},[o(`title`,null,_(e.title),1)],10,N))),128)),(h(!0),p(u,null,m(n.value.dayLabels,(e,t)=>(h(),p(`text`,{key:`d${t}`,class:`fill-(--ui-text-dimmed) text-[11px]`,x:e.x,y:n.value.height-10,"text-anchor":`middle`},_(e.label),9,P))),128)),o(`line`,{class:`stroke-(--ui-border)`,x1:n.value.marginLeft,x2:n.value.width-n.value.marginRight,y1:n.value.axisY,y2:n.value.axisY},null,8,F)],8,A))]))}}),L={class:`text-xs text-muted`},R={key:1,class:`text-highlighted`},z=[`href`],B={class:`mb-4 flex flex-wrap items-center gap-x-4 gap-y-2`},V={key:0,class:`flex items-center gap-1`,"aria-label":`Cost groups`},H={key:0,class:`rounded-md bg-accented px-2.5 py-1 text-xs font-medium text-highlighted`,"aria-current":`page`},U=[`href`],W={class:`font-mono text-sm tabular-nums text-muted`},G={class:`mb-5 grid grid-cols-[repeat(auto-fit,minmax(190px,1fr))] gap-3`},K={class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},q={class:`font-mono text-2xl font-medium tabular-nums`},J={class:`text-xs text-muted`},Y={class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},X={class:`font-mono text-2xl font-medium tabular-nums`},Z={class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},Q={class:`font-mono text-2xl font-medium tabular-nums`},te={class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},ne={class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},re={class:`font-mono text-2xl font-medium tabular-nums`},ie={class:`text-xs text-muted`},ae={class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},oe={class:`font-mono text-2xl font-medium tabular-nums`},se={class:`text-xs text-muted`},ce={class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},le={class:`flex flex-wrap items-baseline justify-between gap-x-4 gap-y-2`},ue={class:`legend flex flex-wrap gap-x-4 gap-y-1.5 text-xs text-muted`},de={key:0,class:`text-xs text-warn`},fe={class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},pe={class:`w-full border-collapse font-mono text-[0.8125rem] tabular-nums`},me={class:`px-2.5 py-1.5`},he={class:`px-2.5 py-1.5 text-right`},ge={class:`px-2.5 py-1.5 text-right`},_e={class:`w-2/5 px-2.5 py-1.5`},ve={class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},ye={open:``},be={class:`mt-2.5 overflow-x-auto`},$={class:`data w-full min-w-[38rem] border-collapse whitespace-nowrap font-mono text-[0.8125rem] tabular-nums`},xe=[`title`],Se={key:0,class:`text-xs text-dimmed`},Ce={class:`border-b border-muted px-2.5 py-1.5 text-right font-medium`},we={class:`text-xs text-muted`},Te={class:`rounded bg-accented px-1 py-0.5`},Ee={class:`border-t border-default pt-3.5 text-xs text-dimmed`},De={class:`mt-2 grid gap-1.5`},Oe=i({__name:`CostsPage`,setup(i){let v=d(`costs`),y=f(()=>v?.report??null),b=f(()=>v?.groups??[]),S=f(()=>y.value?ee(y.value):[]),T=f(()=>y.value?w(y.value):null),D=f(()=>y.value?E(y.value):[]),k=[7,30,90];function A(e){let t=new Date(`${e}T00:00:00Z`);return Number.isNaN(t.getTime())?e:`${[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`][t.getUTCMonth()]} ${t.getUTCDate()}`}return(i,d)=>y.value&&T.value?(h(),n(e,{key:0,title:`${y.value.label} spend`,nav:`costs`},{actions:t(()=>[o(`span`,L,[(h(),p(u,null,m(k,(e,t)=>(h(),p(u,{key:e},[t>0?(h(),p(u,{key:0},[l(` · `)],64)):c(``,!0),e===y.value.range.days?(h(),p(`b`,R,_(e)+`d`,1)):(h(),p(`a`,{key:2,class:`text-primary hover:underline`,href:`/costs/${y.value.group}?days=${e}`},_(e)+`d`,9,z))],64))),64))])]),default:t(()=>[o(`div`,B,[b.value.length>1?(h(),p(`nav`,V,[(h(!0),p(u,null,m(b.value,e=>(h(),p(u,{key:e},[e===y.value.group?(h(),p(`span`,H,_(e),1)):(h(),p(`a`,{key:1,class:`rounded-md px-2.5 py-1 text-xs text-muted no-underline hover:bg-elevated hover:text-highlighted`,href:`/costs/${e}`},_(e),9,U))],64))),128))])):c(``,!0),o(`p`,W,[l(_(A(y.value.range.from))+` → `+_(A(y.value.range.to))+` · `+_(y.value.range.days)+`d`,1),y.value.range.partialLastDay?(h(),p(u,{key:0},[l(` · today partial`)],64)):c(``,!0)])]),o(`section`,G,[o(`div`,K,[d[0]||=o(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`Yesterday`,-1),o(`span`,q,_(T.value.yesterday?a(x)(T.value.yesterday.total):`—`),1),o(`span`,J,_(T.value.yesterday?`${T.value.yesterday.date} · last full day`:`no full day in range`),1)]),o(`div`,Y,[d[1]||=o(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`7-day average`,-1),o(`span`,X,_(a(x)(T.value.avg7)),1),d[2]||=o(`span`,{class:`text-xs text-muted`},`per day, full days only`,-1)]),o(`div`,Z,[d[3]||=o(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`Projected month`,-1),o(`span`,Q,_(a(x)(T.value.projectedMonth,0)),1),d[4]||=o(`span`,{class:`text-xs text-muted`},`7-day rate × 30.4, before plan fees and included allowances`,-1)]),o(`div`,te,[o(`span`,ne,_(y.value.llmAvailable?`LLM share`:`LLM spend`),1),o(`span`,re,_(y.value.llmAvailable?`${T.value.llmShare}%`:`—`),1),o(`span`,ie,_(y.value.llmAvailable?`of the range total`:`LLM spend not configured`),1)]),o(`div`,ae,[d[5]||=o(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`Share of account`,-1),o(`span`,oe,_(T.value.accountShare)+`%`,1),o(`span`,se,_(a(x)(y.value.totals.cloudUsd))+` of `+_(a(x)(y.value.account.cloudUsd))+` Cloudflare spend in range`,1)])]),o(`section`,ce,[o(`div`,le,[d[6]||=o(`div`,null,[o(`h2`,{class:`text-[0.9375rem] font-medium`},`Daily cost`),o(`p`,{class:`text-sm text-muted`},`Stacked by component · USD list price`)],-1),o(`div`,ue,[(h(!0),p(u,null,m(S.value,(e,t)=>(h(),p(`span`,{key:e,class:`inline-flex items-center gap-1.5`},[o(`i`,{class:g([`inline-block size-2.5 rounded-xs`,a(O)[t%a(O).length]])},null,2),l(_(e),1)]))),128))])]),s(I,{report:y.value,series:S.value},null,8,[`report`,`series`]),y.value.llmAvailable?c(``,!0):(h(),p(`p`,de,[...d[7]||=[l(` LLM spend not configured — set `,-1),o(`code`,null,`ANTHROPIC_ADMIN_KEY`,-1),l(` and the group's `,-1),o(`code`,null,`anthropicWorkspaceId`,-1),l(` to layer it in. `,-1)]]))]),o(`section`,fe,[d[8]||=o(`div`,null,[o(`h2`,{class:`text-[0.9375rem] font-medium`},`What each cloud dollar buys`)],-1),o(`table`,pe,[o(`tbody`,null,[(h(!0),p(u,null,m(D.value,e=>(h(),p(`tr`,{key:e.label,class:`border-b border-muted`},[o(`td`,me,_(e.label),1),o(`td`,he,_(a(x)(e.usd)),1),o(`td`,ge,_(Math.round(e.percent))+`%`,1),o(`td`,_e,[o(`i`,{class:`block h-2.5 rounded-xs bg-primary opacity-75`,style:r({width:`${e.percent.toFixed(1)}%`})},null,4)])]))),128))])])]),o(`section`,ve,[o(`details`,ye,[d[11]||=o(`summary`,{class:`cursor-pointer text-sm text-muted`},`Table view — daily cost by component (USD)`,-1),o(`div`,be,[o(`table`,$,[o(`thead`,null,[o(`tr`,null,[d[9]||=o(`th`,{class:`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-left text-xs font-medium text-muted`},` Date `,-1),(h(!0),p(u,null,m(S.value,e=>(h(),p(`th`,{key:e,class:`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-right text-xs font-medium text-muted`},_(e),1))),128)),d[10]||=o(`th`,{class:`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-right text-xs font-medium text-muted`},` Total `,-1)])]),o(`tbody`,null,[(h(!0),p(u,null,m(y.value.days,e=>(h(),p(`tr`,{key:e.date},[o(`td`,{class:`border-b border-muted px-2.5 py-1.5`,title:e.date},[l(_(A(e.date))+` `,1),y.value.range.partialLastDay&&e.date===y.value.range.to?(h(),p(`span`,Se,`(partial day)`)):c(``,!0)],8,xe),(h(!0),p(u,null,m(S.value,t=>(h(),p(`td`,{key:t,class:`border-b border-muted px-2.5 py-1.5 text-right`},_(a(x)(a(C)(e,t),3)),1))),128)),o(`td`,Ce,_(a(x)(e.total,3)),1)]))),128))])])])]),o(`p`,we,[d[12]||=l(` Machine-readable twin: `,-1),o(`code`,Te,`GET /costs/`+_(y.value.group)+`.json`,1),d[13]||=l(` (same Access gate). `,-1)])]),o(`footer`,Ee,[o(`details`,null,[d[18]||=o(`summary`,{class:`cursor-pointer text-muted`},`How these numbers are computed`,-1),o(`div`,De,[d[16]||=o(`div`,null,[o(`b`,null,`Live.`),l(` Both billing sources are read live from this page — nothing cached, nothing stored. Cloudflare bills vCPU on active use only; memory and disk bill on the provisioned size for every second a container is awake. LLM spend is the Anthropic Admin API cost report for this group's workspace (gross, USD). `)],-1),d[17]||=o(`div`,null,[o(`b`,null,`Method.`),l(` Cloudflare GraphQL Analytics, every meter a Workers deployment is billed on: `),o(`code`,null,`containersUsageAdaptiveGroups`),l(` (cpuTimeSec, allocatedMemory, allocatedDisk per app per UTC day), `),o(`code`,null,`durableObjectsPeriodicGroups`),l(` (billable `),o(`code`,null,`duration`),l(` GB-s and SQLite rows read and written per namespace), `),o(`code`,null,`durableObjectsInvocationsAdaptiveGroups`),l(` (requests per namespace), `),o(`code`,null,`durableObjectsSqlStorageGroups`),l(` (bytes stored), `),o(`code`,null,`workersInvocationsAdaptive`),l(` (requests, CPU time), `),o(`code`,null,`r2StorageAdaptiveGroups`),l(` and `),o(`code`,null,`r2OperationsAdaptiveGroups`),l(` (bytes stored, class A/B operations). Prices: vCPU $0.000020/s, memory $0.0000025/GiB-s, disk $0.00000007/GB-s, DO duration $12.50 per million GB-s, DO requests $0.15/M, SQLite rows $0.001/M read and $1.00/M written, DO storage $0.20/GB-month, Workers $0.30/M requests and $0.02/M CPU-ms, R2 $0.015/GB-month, $4.50/M class A and $0.36/M class B (deletes free). Storage is the day's peak, prorated over a 30.44-day month. Gross list price — plan fees and included allowances are not subtracted; Workers Logs volume has no analytics dataset and is not priced. `)],-1),o(`div`,null,[d[14]||=o(`b`,null,`Scope.`,-1),d[15]||=l(` Attributed to this group: the Workers `,-1),o(`code`,null,_(y.value.attribution.workers.join(`, `)),1),l(`, every Durable Object namespace they host (`+_(Object.keys(y.value.attribution.durableObjectNamespaces).length)+`), the R2 buckets named after them (`+_(Object.keys(y.value.attribution.r2Buckets).length)+`), and the container apps mapped in `,1),o(`code`,null,`costs.groups.`+_(y.value.group),1),l(` (`+_(Object.keys(y.value.attribution.containerApps).length)+`). Everything else in the account is priced the same way into the account total, which is what "share of account" divides by. `,1)])])])])]),_:1},8,[`title`])):c(``,!0)}});export{Oe as default};
@@ -0,0 +1 @@
1
+ import{t as e,y as t}from"./AppShell-CJLPO_aI.js";import{Pr as n,a as r,an as i,gn as a,hi as o,i as s,in as c,mn as l,r as u,tr as d,xi as f}from"./seed-B8mQEhhw.js";import{t as p}from"./RunsTabs-BOUlSa2W.js";var m={class:`notfound mx-auto my-12 max-w-xl text-center text-toned`},h={class:`why text-[0.8rem] text-muted`},g=a({__name:`NotFoundPage`,setup(t){let a=u(`runNotFound`),g=s(a?.retentionDays??null);return(t,a)=>{let s=r;return d(),i(e,{title:`Run not found`,nav:`runs`},{default:n(()=>[l(p,{current:`runs`}),c(`section`,m,[a[0]||=c(`p`,{class:`code mb-3 font-mono text-4xl font-medium tracking-wide text-dimmed`},`404`,-1),a[1]||=c(`h2`,{class:`mb-3 text-lg font-medium tracking-tight text-highlighted`},`That run isn't here.`,-1),a[2]||=c(`p`,{class:`mb-2.5 leading-relaxed`},` It may have finished and aged out, the link may be missing its token, or it never existed — this page says the same thing in every case. `,-1),c(`p`,h,f(o(g)),1),l(s,{class:`back mt-4`,color:`neutral`,variant:`outline`,to:`/runs`,label:`← All runs`})])]),_:1})}}}),_=t({default:()=>v}),v=g;export{_ as n,v as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./AppShell-CJLPO_aI.js";import{Pr as t,an as n,gn as r,hi as i,in as a,mn as o,on as ee,pn as s,qt as c,r as l,rn as u,sn as d,sr as f,tr as p,xi as m}from"./seed-B8mQEhhw.js";import{t as h}from"./StatusDot-CTDLBv92.js";import{a as te,c as ne,d as re,f as g,i as _,l as ie,n as ae,o as oe,r as se,s as v,t as ce,u as le}from"./residentDiskBudget-BMBKlYRH.js";var ue={class:`mt-4 first:mt-0`},de={class:`w-full border-collapse font-mono text-[0.8125rem]`},fe={class:`border-t border-muted`},pe={class:`px-2 py-1 align-top`},me={class:`ml-1.5 font-medium`},y={class:`border-t border-muted`},b={class:`break-all px-2 py-1 align-top`},x={key:0},S={key:1,class:`text-dimmed`},C={class:`border-t border-muted`},w={class:`break-all px-2 py-1 align-top`},T={key:0},E={key:1,class:`text-dimmed`},D={class:`border-t border-muted`},O={class:`break-all px-2 py-1 align-top`},k={key:0},A={key:1,class:`text-dimmed`},j={class:`border-t border-muted`},M={class:`break-all px-2 py-1 align-top`},N={key:0},P={key:1,class:`text-dimmed`},F={class:`border-t border-muted`},I={class:`break-all px-2 py-1 align-top`},L={key:1,class:`text-dimmed`},R={class:`mt-4`},z={class:`w-full border-collapse font-mono text-[0.8125rem]`},he={class:`border-t border-muted`},ge={class:`break-all px-2 py-1 align-top`},_e=[`href`],ve={key:1},ye={class:`border-t border-muted`},be={class:`break-all px-2 py-1 align-top`},xe={class:`border-t border-muted`},Se={class:`break-all px-2 py-1 align-top`},Ce=[`href`],we={key:1},Te={key:2,class:`text-dimmed`},Ee={class:`border-t border-muted`},De={class:`break-all px-2 py-1 align-top`},Oe={key:0},ke={key:1,class:`text-dimmed`},Ae={class:`border-t border-muted`},je={class:`break-all px-2 py-1 align-top`},Me={key:0},Ne={key:1,class:`text-dimmed`},Pe={class:`border-t border-muted`},Fe={class:`break-all px-2 py-1 align-top`},Ie={key:0},Le={key:1,class:`text-dimmed`},Re={class:`mt-4`},ze={class:`w-full border-collapse font-mono text-[0.8125rem]`},Be={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Ve={class:`break-all px-2 py-1 align-top`},He={class:`w-full border-collapse font-mono text-[0.8125rem]`},Ue={class:`w-32 break-all px-2 py-1 align-top text-muted sm:w-96 sm:break-words`},We={class:`px-2 py-1 align-top`},Ge={key:1,class:`text-xs text-muted`},Ke={class:`mt-4`},qe={key:0,class:`w-full border-collapse font-mono text-[0.8125rem]`},Je={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Ye={class:`break-all px-2 py-1 align-top`},Xe={key:0},Ze={key:1,class:`text-dimmed`},B={key:1,class:`text-xs text-muted`},Qe={class:`mt-4`},$e={class:`mb-1 text-xs text-muted`},et={class:`overflow-x-auto`},tt={class:`w-full border-collapse font-mono text-[0.8125rem]`},nt={class:`break-all px-2 py-1 align-top`},rt={key:0,class:`text-xs text-muted`},it={class:`break-all px-2 py-1 align-top`},at=[`href`],ot={key:1},st={key:2,class:`text-dimmed`},ct={class:`break-all px-2 py-1 align-top`},lt={key:0},ut={key:1,class:`text-dimmed`},dt={key:2},ft={key:3,class:`text-dimmed`},pt={class:`break-all px-2 py-1 align-top`},mt={key:0},ht={key:1,class:`text-dimmed`},gt={key:2},_t={key:3,class:`text-dimmed`},vt={key:1,class:`text-xs text-muted`},yt={class:`mt-4`},bt={class:`w-full border-collapse font-mono text-[0.8125rem]`},xt={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},St={class:`px-2 py-1 align-top`},Ct={class:`mt-4`},wt={key:0,class:`w-full border-collapse font-mono text-[0.8125rem]`},Tt={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Et={class:`break-all px-2 py-1 align-top`},Dt={class:`text-xs text-muted`},Ot={key:1,class:`text-xs text-muted`},kt={class:`mt-4`},At={class:`w-full border-collapse font-mono text-[0.8125rem]`},jt={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Mt={class:`break-all px-2 py-1 align-top`},Nt={key:0},Pt={key:1,class:`text-dimmed`},Ft={class:`mt-4 text-xs text-muted`},It={class:`rounded bg-elevated px-1 py-0.5`},Lt={class:`rounded bg-elevated px-1 py-0.5`},Rt={class:`rounded bg-elevated px-1 py-0.5`},V=r({__name:`ResidentDetailPage`,setup(r){let V=l(`resident`),H=u(()=>V?.record??{}),U=u(()=>ie(H.value)),W=u(()=>le(H.value)||(V?.slug??``)),G=u(()=>g(U.value.sha)),K=u(()=>oe.test(W.value)?`https://github.com/${W.value}`:void 0),q=u(()=>K.value&&/^[0-9a-f]{7,40}$/.test(G.value)?`${K.value}/commit/${G.value}`:void 0),J=u(()=>{let e=U.value.snapshot;return e&&typeof e==`object`?v(e):void 0}),zt=u(()=>v(U.value.schedules)),Y=u(()=>{let e=v(H.value.commands),t=v(H.value.effects);return Object.keys(e).sort().map(n=>({name:n,command:g(e[n]),effect:g(t[n])||`readonly`}))}),X=u(()=>{let e=U.value.threads;return(Array.isArray(e)?e.map(v):[]).map(e=>{let t=g(e.sha);return{threadKey:g(e.threadKey)||`?`,ref:g(e.ref)||`?`,sha:t?t.slice(0,8):``,commitHref:K.value&&/^[0-9a-f]{7,40}$/.test(t)?`${K.value}/commit/${t}`:void 0,user:g(e.user),deps:g(e.deps),boundAt:g(e.boundAt),lastAttachAt:g(e.lastAttachAt),evicted:e.evicted===!0,evictedAt:g(e.evictedAt),evictedWhy:g(e.evictedWhy)}}).sort((e,t)=>t.lastAttachAt.localeCompare(e.lastAttachAt))}),Z=u(()=>X.value.filter(e=>!e.evicted).length),Q=u(()=>{let e=U.value.lastRestore;return e?JSON.stringify(e):``}),$=u(()=>ne(H.value)),Bt=u(()=>typeof H.value.diskBudgetMb==`number`?H.value.diskBudgetMb:void 0),Vt=u(()=>{let e=$.value;if(!e)return[];let t=ce(e),{freeKiB:n,capped:r,capacityKiB:i}=ae(e,Bt.value),a=n-t.totalKiB,o=t=>{let n=te(e.parts,t);return n===null?`? (checkout not measured)`:n===0?`?`:`${Math.max(0,Math.floor(a/n))} more (${_(n)} each)`};return[[`used / total`,se(e)],[`free`,`${_(n)}${r?` under the ${_(i)} diskBudgetMb cap`:``}`],[`reserve`,`${_(t.totalKiB)} (snapshot staging ${_(t.stagingKiB)} + floor ${_(t.floorKiB)})`],[`headroom`,`${_(Math.max(0,a))} — room for ${o(`hardlink`)} hardlinked trees, ${o(`reconcile`)} lockfile-diverged (reconciling)`],[`measured`,e.at||`—`]]}),Ht=u(()=>{let e=$.value;if(!e)return[];let t=[[`mirror`,_(e.parts.mirror)],[`checkout deps (node_modules)`,_(e.parts.deps)],[`checkout (history + tree + build)`,_(e.parts.checkout)]];for(let[n,r]of Object.entries(e.parts.threads).sort((e,t)=>t[1]-e[1]))t.push([`thread ${n}`,_(r)]);for(let[n,r]of Object.entries(e.parts.homes).sort((e,t)=>t[1]-e[1]))r>=1024&&t.push([`home ${n}`,_(r)]);return t.push([`other (image, /tmp, …)`,_(e.parts.other)]),t});return(r,l)=>(p(),n(e,{title:W.value||`Resident`,nav:`residents`},{leading:t(()=>[...l[0]||=[a(`a`,{class:`back text-sm text-muted no-underline hover:text-primary`,href:`/residents`},`← All residents`,-1)]]),default:t(()=>[a(`section`,ue,[l[8]||=a(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Lifecycle`,-1),a(`table`,de,[a(`tbody`,null,[a(`tr`,fe,[l[1]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`state`,-1),a(`td`,pe,[o(h,{tone:i(re)(U.value.state),label:U.value.state},null,8,[`tone`,`label`]),a(`span`,me,m(U.value.state),1)])]),a(`tr`,y,[l[2]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`reason`,-1),a(`td`,b,[U.value.reason?(p(),d(`span`,x,m(U.value.reason),1)):(p(),d(`span`,S,`—`))])]),a(`tr`,C,[l[3]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last refresh error`,-1),a(`td`,w,[i(g)(U.value.lastRefreshError)?(p(),d(`span`,T,m(i(g)(U.value.lastRefreshError)),1)):(p(),d(`span`,E,`—`))])]),a(`tr`,D,[l[4]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last restore`,-1),a(`td`,O,[Q.value?(p(),d(`span`,k,m(Q.value),1)):(p(),d(`span`,A,`—`))])]),a(`tr`,j,[l[5]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`state updated`,-1),a(`td`,M,[i(g)(U.value.updatedAt)?(p(),d(`span`,N,m(i(g)(U.value.updatedAt)),1)):(p(),d(`span`,P,`—`))])]),a(`tr`,F,[l[7]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`idle since`,-1),a(`td`,I,[i(g)(U.value.idleSince)?(p(),d(c,{key:0},[s(m(i(g)(U.value.idleSince))+` `,1),l[6]||=a(`span`,{class:`text-xs text-muted`},`(refresh parked; container may sleep)`,-1)],64)):(p(),d(`span`,L,`awake`))])])])])]),a(`section`,R,[l[15]||=a(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Pinned facts`,-1),a(`table`,z,[a(`tbody`,null,[a(`tr`,he,[l[9]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`repository`,-1),a(`td`,ge,[K.value?(p(),d(`a`,{key:0,class:`text-primary`,href:K.value},m(K.value),9,_e)):(p(),d(`span`,ve,m(i(g)(H.value.resource)||`—`),1))])]),a(`tr`,ye,[l[10]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`default ref`,-1),a(`td`,be,m(i(g)(U.value.defaultRef)||i(g)(H.value.defaultRef)||`—`),1)]),a(`tr`,xe,[l[11]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`pinned sha`,-1),a(`td`,Se,[q.value?(p(),d(`a`,{key:0,class:`text-primary`,href:q.value},m(G.value),9,Ce)):G.value?(p(),d(`span`,we,m(G.value),1)):(p(),d(`span`,Te,`—`))])]),a(`tr`,Ee,[l[12]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`lockfile hash`,-1),a(`td`,De,[i(g)(U.value.lockfileHash)?(p(),d(`span`,Oe,m(i(g)(U.value.lockfileHash)),1)):(p(),d(`span`,ke,`—`))])]),a(`tr`,Ae,[l[13]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`provisioned`,-1),a(`td`,je,[i(g)(U.value.provisionedAt)?(p(),d(`span`,Me,m(i(g)(U.value.provisionedAt)),1)):(p(),d(`span`,Ne,`—`))])]),a(`tr`,Pe,[l[14]||=a(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last refresh`,-1),a(`td`,Fe,[i(g)(U.value.lastRefreshAt)?(p(),d(`span`,Ie,m(i(g)(U.value.lastRefreshAt)),1)):(p(),d(`span`,Le,`—`))])])])])]),a(`section`,Re,[l[17]||=a(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Disk`,-1),$.value?(p(),d(c,{key:0},[a(`table`,ze,[a(`tbody`,null,[(p(!0),d(c,null,f(Vt.value,([e,t])=>(p(),d(`tr`,{key:e,class:`border-t border-muted`},[a(`td`,Be,m(e),1),a(`td`,Ve,m(t),1)]))),128))])]),l[16]||=a(`p`,{class:`mb-1 mt-2 text-xs text-muted`},` components (one du, hardlinks counted once — a thread tree shows only what it does not share with the checkout) `,-1),a(`table`,He,[a(`tbody`,null,[(p(!0),d(c,null,f(Ht.value,([e,t])=>(p(),d(`tr`,{key:e,class:`border-t border-muted`},[a(`td`,Ue,m(e),1),a(`td`,We,m(t),1)]))),128))])])],64)):(p(),d(`p`,Ge,` not measured yet — the first refresh cycle or attach of this container measures it `))]),a(`section`,Ke,[l[18]||=a(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Snapshot stamp`,-1),J.value?(p(),d(`table`,qe,[a(`tbody`,null,[(p(),d(c,null,f([`ref`,`sha`,`lockfileHash`,`createdAt`,`mirrorBackupId`,`checkoutBackupId`],e=>a(`tr`,{key:e,class:`border-t border-muted`},[a(`td`,Je,m(e),1),a(`td`,Ye,[i(g)(J.value[e])?(p(),d(`span`,Xe,m(i(g)(J.value[e])),1)):(p(),d(`span`,Ze,`—`))])])),64))])])):(p(),d(`p`,B,`no snapshot recorded`))]),a(`section`,Qe,[l[22]||=a(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Thread worktrees`,-1),X.value.length>0?(p(),d(c,{key:0},[a(`p`,$e,m(Z.value)+` live · `+m(X.value.length-Z.value)+` evicted`,1),a(`div`,et,[a(`table`,tt,[a(`tbody`,null,[l[21]||=a(`tr`,{class:`text-xs text-muted`},[a(`td`,{class:`px-2 py-1`},`thread`),a(`td`,{class:`px-2 py-1`},`ref · sha`),a(`td`,{class:`px-2 py-1`},`user · deps`),a(`td`,{class:`px-2 py-1`},`bound · last attach`)],-1),(p(!0),d(c,null,f(X.value,e=>(p(),d(`tr`,{key:e.threadKey,class:`border-t border-muted`},[a(`td`,nt,[e.evicted?(p(),d(`span`,rt,[s(`evicted `+m(e.evictedAt||`—`),1),e.evictedWhy?(p(),d(c,{key:0},[s(` · `+m(e.evictedWhy),1)],64)):ee(``,!0)])):(p(),n(h,{key:1,tone:`green`,label:`live`,tip:`live`})),s(` `+m(e.threadKey),1)]),a(`td`,it,[s(m(e.ref)+` · `,1),e.commitHref?(p(),d(`a`,{key:0,class:`text-primary`,href:e.commitHref},m(e.sha),9,at)):e.sha?(p(),d(`span`,ot,m(e.sha),1)):(p(),d(`span`,st,`—`))]),a(`td`,ct,[e.user?(p(),d(`span`,lt,m(e.user),1)):(p(),d(`span`,ut,`—`)),l[19]||=s(` · `,-1),e.deps?(p(),d(`span`,dt,m(e.deps),1)):(p(),d(`span`,ft,`—`))]),a(`td`,pt,[e.boundAt?(p(),d(`span`,mt,m(e.boundAt),1)):(p(),d(`span`,ht,`—`)),l[20]||=s(` · `,-1),e.lastAttachAt?(p(),d(`span`,gt,m(e.lastAttachAt),1)):(p(),d(`span`,_t,`—`))])]))),128))])])])],64)):(p(),d(`p`,vt,`no thread worktrees`))]),a(`section`,yt,[l[23]||=a(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Pending schedules`,-1),a(`table`,bt,[a(`tbody`,null,[(p(),d(c,null,f([[`refresh`,`refresh`],[`provision run`,`provisionRun`],[`provision deadline`,`provisionDeadline`]],([e,t])=>a(`tr`,{key:t,class:`border-t border-muted`},[a(`td`,xt,m(e),1),a(`td`,St,m(i(g)(zt.value[t]??0)||`0`),1)])),64))])])]),a(`section`,Ct,[l[25]||=a(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Command table`,-1),Y.value.length>0?(p(),d(`table`,wt,[a(`tbody`,null,[(p(!0),d(c,null,f(Y.value,e=>(p(),d(`tr`,{key:e.name,class:`border-t border-muted`},[a(`td`,Tt,m(e.name),1),a(`td`,Et,[a(`code`,null,m(e.command),1),l[24]||=s(),a(`span`,Dt,m(e.effect),1)])]))),128))])])):(p(),d(`p`,Ot,`no command table`))]),a(`section`,kt,[l[26]||=a(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Registry settings`,-1),a(`table`,At,[a(`tbody`,null,[(p(!0),d(c,null,f([[`onboarded`,i(g)(H.value.onboardedAt)],[`record updated`,i(g)(H.value.updatedAt)],[`provisioning timeout (ms)`,i(g)(H.value.provisioningTimeoutMs)],[`disk budget (MB)`,i(g)(H.value.diskBudgetMb)],[`worktree TTL (days)`,i(g)(H.value.worktreeTtlDays??7)]],([e,t])=>(p(),d(`tr`,{key:e,class:`border-t border-muted`},[a(`td`,jt,m(e),1),a(`td`,Mt,[t?(p(),d(`span`,Nt,m(t),1)):(p(),d(`span`,Pt,`—`))])]))),128))])])]),a(`p`,Ft,[l[27]||=s(` Manage from chat: `,-1),a(`code`,It,`repo rebuild `+m(W.value),1),l[28]||=s(` · `,-1),a(`code`,Lt,`repo reconfigure `+m(W.value)+` …`,1),l[29]||=s(` · `,-1),a(`code`,Rt,`repo offboard `+m(W.value)+` --dry-run`,1)])]),_:1},8,[`title`]))}});export{V as default};
@@ -0,0 +1 @@
1
+ import{t as e}from"./AppShell-CJLPO_aI.js";import{Pr as t,an as n,dr as r,gn as i,in as a,mn as o,on as s,pn as c,qt as l,r as u,rn as d,sn as f,sr as p,tr as m,vi as h,xi as g}from"./seed-B8mQEhhw.js";import{t as _}from"./StatusDot-CTDLBv92.js";import{c as v,d as y,f as b,l as x,o as S,r as C,u as w}from"./residentDiskBudget-BMBKlYRH.js";import{i as T,n as E}from"./wallClock-DI4HIEN5.js";var D={class:`mb-2 text-xs text-muted`},O={class:`m-0 list-none p-0`},k={class:`font-mono font-medium text-primary`},A={class:`font-medium`},j=[`title`],M=[`title`],N={key:0,class:`basis-full pl-5 text-xs text-warn`},P={key:1,class:`px-2 py-1.5 text-muted`},F=i({__name:`ResidentsIndexPage`,setup(i){let F=u(`residents`),I=E(),L=d(()=>(F?.residents??[]).map((e,t)=>{let n=e,r=w(n),i=x(n),a=b(i.sha),o=b(i.lastRefreshAt),s=o?Date.parse(o):NaN,c=v(n);return{key:`${r||`?`}-${t}`,display:r||b(n.resource)||`?`,state:i.state,tone:y(i.state),reason:i.reason,ref:b(n.defaultRef)||`?`,sha:a?a.slice(0,8):``,refreshed:o,refreshedLabel:Number.isFinite(s)?T(s,I):o,disk:c?C(c):``,diskAt:c?.at??``,href:S.test(r)?`/residents/${r}`:null}})),R=d(()=>b(F?.cap)||`?`),z=d(()=>b(F?.count)||String(L.value.length));return(i,u)=>(m(),n(e,{title:`Resident repos`,nav:`residents`},{default:t(()=>[L.value.length>0?(m(),f(l,{key:0},[a(`p`,D,g(z.value)+`/`+g(R.value)+` resident slots in use · live registry read, not cached `,1),a(`ul`,O,[(m(!0),f(l,null,p(L.value,e=>(m(),f(`li`,{key:e.key,class:`border-b border-muted first:border-t`},[(m(),n(r(e.href?`a`:`span`),{class:h([`row flex flex-wrap items-center gap-2.5 rounded-md px-2 py-1.5 text-inherit no-underline`,e.href?`hover:bg-elevated`:``]),href:e.href??void 0},{default:t(()=>[o(_,{tone:e.tone,label:e.state,tip:e.state},null,8,[`tone`,`label`,`tip`]),a(`span`,k,g(e.display),1),a(`span`,A,g(e.state),1),a(`span`,{class:`font-mono text-xs text-muted max-sm:basis-full max-sm:pl-5`,title:e.refreshed||void 0},[c(` ref `+g(e.ref),1),e.sha?(m(),f(l,{key:0},[c(` · sha `+g(e.sha),1)],64)):s(``,!0),e.refreshedLabel?(m(),f(l,{key:1},[c(` · refreshed `+g(e.refreshedLabel),1)],64)):s(``,!0),e.disk?(m(),f(l,{key:2},[u[0]||=c(` · `,-1),a(`span`,{title:e.diskAt?`measured ${e.diskAt}`:void 0},`disk `+g(e.disk),9,M)],64)):s(``,!0)],8,j),e.reason?(m(),f(`span`,N,g(e.reason),1)):s(``,!0)]),_:2},1032,[`class`,`href`]))]))),128))])],64)):(m(),f(`p`,P,[c(` No repos onboarded (0/`+g(R.value)+`). Onboard one from chat: `,1),u[1]||=a(`code`,{class:`rounded bg-elevated px-1.5 py-0.5`},`repo onboard <owner/name>`,-1),u[2]||=c(`. `,-1)]))]),_:1}))}});export{F as default};