@coreplane/switchboard 1.235.0 → 1.236.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 (132) hide show
  1. package/dist/assets/Dockerfile +11 -0
  2. package/dist/assets/config/config.example.yaml +9 -4
  3. package/dist/assets/deploy/cloudflare-memory/worker.ts +12 -0
  4. package/dist/assets/deploy/cloudflare-resident/Dockerfile +18 -0
  5. package/dist/assets/deploy/cloudflare-resident/worker.ts +115 -56
  6. package/dist/assets/deploy/cloudflare-sandbox/Dockerfile +11 -0
  7. package/dist/assets/deploy/cloudflare-sandbox/worker.ts +68 -7
  8. package/dist/assets/package-lock.json +212 -3
  9. package/dist/assets/package.json +4 -1
  10. package/dist/assets/source.json +3 -3
  11. package/dist/assets/src/core/coordinator/contract.ts +24 -4
  12. package/dist/assets/src/core/coordinator/driver.ts +31 -3
  13. package/dist/assets/src/core/runEvents.ts +36 -1
  14. package/dist/assets/src/core/runFriction.ts +1 -0
  15. package/dist/assets/src/core/ship/contract.ts +3 -1
  16. package/dist/assets/src/core/ship/coordinator.ts +213 -29
  17. package/dist/assets/src/core/trace/types.ts +5 -0
  18. package/dist/assets/src/execution/residentDisk.ts +21 -10
  19. package/dist/assets/src/execution/sandboxErrors.ts +72 -0
  20. package/dist/assets/src/execution/sandboxStart.ts +90 -0
  21. package/dist/assets/web/dist/.vite/manifest.json +437 -423
  22. package/dist/assets/web/dist/assets/{AppShell-lYVcj-k7.js → AppShell-DZdz_sl7.js} +1 -1
  23. package/dist/assets/web/dist/assets/{CostsPage-D-v8am88.js → CostsPage-BfJsol9y.js} +1 -1
  24. package/dist/assets/web/dist/assets/{DeliveryPage-CvlWP7Eq.js → DeliveryPage-CvInfu7y.js} +1 -1
  25. package/dist/assets/web/dist/assets/{NotFoundPage-BzWS4Ca1.js → NotFoundPage-d37EP8hS.js} +1 -1
  26. package/dist/assets/web/dist/assets/ResidentDetailPage-DQSD0SZD.js +1 -0
  27. package/dist/assets/web/dist/assets/ResidentsIndexPage-CZUGLen6.js +1 -0
  28. package/dist/assets/web/dist/assets/RunFoldRow-Bngn4GjF.js +9 -0
  29. package/dist/assets/web/dist/assets/{RunRoutePage-oN9GkVEA.js → RunRoutePage-a-tMrirB.js} +3 -3
  30. package/dist/assets/web/dist/assets/RunsIndexPage-s0VKmRda.js +1 -0
  31. package/dist/assets/web/dist/assets/{RunsTabs-DEICQ4FY.js → RunsTabs-CyCdOhJ2.js} +1 -1
  32. package/dist/assets/web/dist/assets/ScheduledPage-ByCmyrDs.js +1 -0
  33. package/dist/assets/web/dist/assets/SettingsPage-DhKEokGK.js +1 -0
  34. package/dist/assets/web/dist/assets/{StatusDot-D14iJMy7.js → StatusDot-D-BPSPpw.js} +1 -1
  35. package/dist/assets/web/dist/assets/{Tooltip-B0Ob5MQ4.js → Tooltip-DPDx5tXT.js} +1 -1
  36. package/dist/assets/web/dist/assets/UnitRoutePage-0eiekTHQ.js +1 -0
  37. package/dist/assets/web/dist/assets/{angular-html-Cw130Zyi.js → angular-html-Ni1Xil2G.js} +1 -1
  38. package/dist/assets/web/dist/assets/{angular-ts-DY1m4C2s.js → angular-ts-oCgo6p05.js} +1 -1
  39. package/dist/assets/web/dist/assets/{apl-W6Ty7v05.js → apl-CiWYl0gh.js} +1 -1
  40. package/dist/assets/web/dist/assets/{astro-DlLVHwVk.js → astro-B-VeKZ_J.js} +1 -1
  41. package/dist/assets/web/dist/assets/{blade-Bco3tDh4.js → blade-BIWEISKd.js} +1 -1
  42. package/dist/assets/web/dist/assets/{c-1LaFY_cj.js → c-DHxA5Byp.js} +1 -1
  43. package/dist/assets/web/dist/assets/{chapel-B-OvrOL5.js → chapel-D4qGLw-Q.js} +1 -1
  44. package/dist/assets/web/dist/assets/{cobol-Ch3EPlHu.js → cobol-BznX5Q-u.js} +1 -1
  45. package/dist/assets/web/dist/assets/{coffee-hZuITnto.js → coffee-CVr8Idlj.js} +1 -1
  46. package/dist/assets/web/dist/assets/{cpp-B8iRVo8m.js → cpp-wrk6NfW4.js} +1 -1
  47. package/dist/assets/web/dist/assets/{crystal-DKveI7lr.js → crystal-CGYWMeH1.js} +1 -1
  48. package/dist/assets/web/dist/assets/{css-_2_CD-rr.js → css-BgGytMsy.js} +1 -1
  49. package/dist/assets/web/dist/assets/{dist-pOdUzj6D.js → dist-DSkVB16z.js} +2 -2
  50. package/dist/assets/web/dist/assets/durationTone-DYogEPEk.js +1 -0
  51. package/dist/assets/web/dist/assets/{edge-BenMDPct.js → edge-CdR6AU9v.js} +1 -1
  52. package/dist/assets/web/dist/assets/{elixir-CBbdEqG6.js → elixir-CQRb3PZx.js} +1 -1
  53. package/dist/assets/web/dist/assets/{elm-DMub_2lY.js → elm-CpuA6W8B.js} +1 -1
  54. package/dist/assets/web/dist/assets/{erb-CI9He_Up.js → erb-CvlrblqH.js} +1 -1
  55. package/dist/assets/web/dist/assets/{favicon-BQsePYv5.js → favicon-CSt-qDvc.js} +1 -1
  56. package/dist/assets/web/dist/assets/{git-rebase-BBfhnyF8.js → git-rebase-COnovCVc.js} +1 -1
  57. package/dist/assets/web/dist/assets/{glimmer-js-CR9Fxrau.js → glimmer-js-C-DS4g_J.js} +1 -1
  58. package/dist/assets/web/dist/assets/{glimmer-ts-CwFwX_XS.js → glimmer-ts-DTkorWRI.js} +1 -1
  59. package/dist/assets/web/dist/assets/{glsl-Daiodp1r.js → glsl-CH51-JW7.js} +1 -1
  60. package/dist/assets/web/dist/assets/{graphql-DZvrsEkB.js → graphql-BO-XymNv.js} +1 -1
  61. package/dist/assets/web/dist/assets/{hack-BaXOzdg7.js → hack-C-N0oicf.js} +1 -1
  62. package/dist/assets/web/dist/assets/{haml-CMskq_VA.js → haml-BfmdtWoP.js} +1 -1
  63. package/dist/assets/web/dist/assets/{handlebars-Dhw_f7jD.js → handlebars-BqhO_te-.js} +1 -1
  64. package/dist/assets/web/dist/assets/{html-C9k99z0z.js → html-DUEZlTKV.js} +1 -1
  65. package/dist/assets/web/dist/assets/{html-derivative-VckPItXN.js → html-derivative-DOUJTS8A.js} +1 -1
  66. package/dist/assets/web/dist/assets/{http-DXU_3h9v.js → http-j7UH0Cqv.js} +1 -1
  67. package/dist/assets/web/dist/assets/{hurl-KU24JNdp.js → hurl-D6ZaBLJk.js} +1 -1
  68. package/dist/assets/web/dist/assets/indexRow-BjXBzI5Z.js +1 -0
  69. package/dist/assets/web/dist/assets/{java-BbZjTNgf.js → java-dugWx3wi.js} +1 -1
  70. package/dist/assets/web/dist/assets/{javascript-DXCdqcZZ.js → javascript-CK4GC4JO.js} +1 -1
  71. package/dist/assets/web/dist/assets/{jinja-pDlsjTVp.js → jinja-DrLKIyKG.js} +1 -1
  72. package/dist/assets/web/dist/assets/{jison-DsXDk66e.js → jison-CS1Th-TO.js} +1 -1
  73. package/dist/assets/web/dist/assets/{json-tCxXfRgG.js → json-CkBqdVys.js} +1 -1
  74. package/dist/assets/web/dist/assets/{jsx-B0ZYkCmi.js → jsx-CCxdg7n3.js} +1 -1
  75. package/dist/assets/web/dist/assets/{julia-BLzzeI6x.js → julia-BalKW2hA.js} +1 -1
  76. package/dist/assets/web/dist/assets/{just-DvD2_60c.js → just-BKw1G40D.js} +1 -1
  77. package/dist/assets/web/dist/assets/{latex-511zn3h7.js → latex-Dfad6ZN-.js} +1 -1
  78. package/dist/assets/web/dist/assets/{liquid-BD0BkMox.js → liquid-f_CMGBvd.js} +1 -1
  79. package/dist/assets/web/dist/assets/{indexFormat-B-pd4r7Y.js → localIso-CNA-bhS-.js} +1 -1
  80. package/dist/assets/web/dist/assets/{lua-NFicKm6N.js → lua-BcMK_uKM.js} +1 -1
  81. package/dist/assets/web/dist/assets/main-B77vAZVg.css +1 -0
  82. package/dist/assets/web/dist/assets/main-DR8iKpNt.js +28 -0
  83. package/dist/assets/web/dist/assets/{marko-1-G_nEXK.js → marko-B0oNLx2i.js} +1 -1
  84. package/dist/assets/web/dist/assets/{mdc-DUe3AQLp.js → mdc-Bc_MmIyq.js} +1 -1
  85. package/dist/assets/web/dist/assets/{nginx-Dg379_bA.js → nginx-Cmxv8RIt.js} +1 -1
  86. package/dist/assets/web/dist/assets/{nim-BnFq97ZO.js → nim-BtgRfaY0.js} +1 -1
  87. package/dist/assets/web/dist/assets/{org-F0uiwGvq.js → org-Dl9EzlHh.js} +1 -1
  88. package/dist/assets/web/dist/assets/{perl-B0euczkl.js → perl-BmF7x7BB.js} +1 -1
  89. package/dist/assets/web/dist/assets/{php-DkL3k_n7.js → php-rH6CVptQ.js} +1 -1
  90. package/dist/assets/web/dist/assets/{pug-L_OjjZP4.js → pug-CIN5Ccck.js} +1 -1
  91. package/dist/assets/web/dist/assets/{qml-BMjB00Zz.js → qml-BpLS3RFr.js} +1 -1
  92. package/dist/assets/web/dist/assets/{r-DoeLdnqR.js → r-BUMF3B-H.js} +1 -1
  93. package/dist/assets/web/dist/assets/{razor-BzYNkAWy.js → razor-B7sTBPdT.js} +1 -1
  94. package/dist/assets/web/dist/assets/{regexp-CPmElMk3.js → regexp-h2SvwrsJ.js} +1 -1
  95. package/dist/assets/web/dist/assets/residentsModel-VSJEepL1.js +1 -0
  96. package/dist/assets/web/dist/assets/{rst-DrsjgfI7.js → rst-DLOWEsD2.js} +1 -1
  97. package/dist/assets/web/dist/assets/{ruby-cB42ppvx.js → ruby-Cl_-I4k3.js} +1 -1
  98. package/dist/assets/web/dist/assets/{sas-R5Y3NM_I.js → sas-Cm4M-BvV.js} +1 -1
  99. package/dist/assets/web/dist/assets/{scss-C-zWxV9s.js → scss-CEFCEQUF.js} +1 -1
  100. package/dist/assets/web/dist/assets/{shellscript-oJF96aAU.js → shellscript-CE6zb5eS.js} +1 -1
  101. package/dist/assets/web/dist/assets/{shellsession-CznECKyi.js → shellsession-B4fDVzrM.js} +1 -1
  102. package/dist/assets/web/dist/assets/{soy-wjHLSRag.js → soy-DwXCMpjE.js} +1 -1
  103. package/dist/assets/web/dist/assets/{sql-C_BM8IOW.js → sql-DrnAKnyD.js} +1 -1
  104. package/dist/assets/web/dist/assets/{stata-D31HO8aQ.js → stata-BzlwPWD6.js} +1 -1
  105. package/dist/assets/web/dist/assets/{surrealql-CKCLyplA.js → surrealql-CeUieZXd.js} +1 -1
  106. package/dist/assets/web/dist/assets/{svelte-3geWk2iu.js → svelte-BERIpIKR.js} +1 -1
  107. package/dist/assets/web/dist/assets/{templ-DiJr_hTD.js → templ-6FSuUDwg.js} +1 -1
  108. package/dist/assets/web/dist/assets/{tex-BEJGWyeF.js → tex-SWCyMwNX.js} +1 -1
  109. package/dist/assets/web/dist/assets/{ts-tags-C8Mzdpxx.js → ts-tags-VWj7gWgY.js} +1 -1
  110. package/dist/assets/web/dist/assets/{tsx-UQiSm_p3.js → tsx-B6dzfL8L.js} +1 -1
  111. package/dist/assets/web/dist/assets/{twig-_Pvzkeo9.js → twig-BDXsr482.js} +1 -1
  112. package/dist/assets/web/dist/assets/{typescript-BWMkINKK.js → typescript-s100Dt8y.js} +1 -1
  113. package/dist/assets/web/dist/assets/{typst-Bdg9m-e7.js → typst-WfyEAUdt.js} +1 -1
  114. package/dist/assets/web/dist/assets/{vue-CDZrrAZ8.js → vue-CkXOOJ-6.js} +1 -1
  115. package/dist/assets/web/dist/assets/{vue-html-tAlpNhfN.js → vue-html-CEpzdcau.js} +1 -1
  116. package/dist/assets/web/dist/assets/{vue-vine-C27UF_rh.js → vue-vine-D9dsfiFA.js} +1 -1
  117. package/dist/assets/web/dist/assets/{xml-CxeDr9Zh.js → xml-iBDofbJq.js} +1 -1
  118. package/dist/assets/web/dist/assets/{xsl-Bpi0uUnM.js → xsl-CqbJF4hD.js} +1 -1
  119. package/dist/assets/web/dist/assets/{yaml-BtUgZ1GN.js → yaml-D9i6OxYe.js} +1 -1
  120. package/dist/cli.js +2255 -1170
  121. package/package.json +1 -1
  122. package/dist/assets/web/dist/assets/ResidentDetailPage-DSpsye5e.js +0 -1
  123. package/dist/assets/web/dist/assets/ResidentsIndexPage-CT8fI1M3.js +0 -1
  124. package/dist/assets/web/dist/assets/RunFoldRow-Cqh8pTXC.js +0 -9
  125. package/dist/assets/web/dist/assets/RunsIndexPage-sjXr8iCV.js +0 -1
  126. package/dist/assets/web/dist/assets/ScheduledPage-Tz__zLzi.js +0 -1
  127. package/dist/assets/web/dist/assets/UnitRoutePage-CbKCL58v.js +0 -1
  128. package/dist/assets/web/dist/assets/indexRow-Bnj883ii.js +0 -1
  129. package/dist/assets/web/dist/assets/localIso-L06jV29p.js +0 -1
  130. package/dist/assets/web/dist/assets/main-D3lG-yQ9.js +0 -28
  131. package/dist/assets/web/dist/assets/main-Dm11o0hc.css +0 -1
  132. package/dist/assets/web/dist/assets/residentDiskBudget-BMBKlYRH.js +0 -1
@@ -1,2 +1,2 @@
1
- import{t as e}from"./AppShell-lYVcj-k7.js";import{Ci as t,Lr as n,Lt as r,Vt as i,Xt as a,_n as o,ci as s,cn as c,gn as l,ir as u,ln as d,on as f,r as p,sn as m,un as h,ur as g,vi as _,wi as v,xi as y,yn as b,zr as x}from"./seed-DeKSHrt2.js";var S=`Durable Objects`,C=`Workers · storage · R2`,w=`LLM (Anthropic)`,T=(e,t=2)=>`$${e.toFixed(t)}`,E=e=>e.workersUsd+e.doRowsUsd+e.doStorageUsd+e.r2Usd+e.workflowsUsd;function D(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(S),e.days.some(e=>E(e)>0)&&t.push(C),e.llmAvailable&&t.push(w),t}function O(e,t){return t===`Durable Objects`?Object.values(e.durableObjects).reduce((e,t)=>e+t,0)+e.doRequestsUsd:t===`Workers · storage · R2`?E(e):t===`LLM (Anthropic)`?e.llmUsd:e.containers[t]?.total??0}var k=30.4;function ee(e){let t=e.range.partialLastDay?e.days.slice(0,-1):e.days,n=e.range.partialLastDay?e.days[e.days.length-1]:void 0,r=t[t.length-1],i=t.slice(-7),a=i.length?i.reduce((e,t)=>e+t.total,0)/i.length:void 0,o=e.account.cloudUsd>0?Math.round(e.totals.cloudUsd/e.account.cloudUsd*100):0;return{...r?{yesterday:{date:r.date,total:r.total}}:{},...n?{today:{date:n.date,total:n.total}}:{},...a===void 0?{}:{avg7:a},projection:M(e,t,n),llm:{range:e.totals.llmUsd,...r?{yesterday:r.llmUsd}:{},...n?{today:{usd:n.llmUsd,estimated:n.llmEstimated}}:{}},accountShare:o}}var A=e=>e.reduce((e,t)=>e+t,0)/e.length;function j(e,t){let n=Date.parse(`${t.date}T00:00:00Z`),r=(e.generatedAt-n)/864e5;return Math.min(1,Math.max(1/24,Number.isFinite(r)?r:1))}function M(e,t,n){let r=n?j(e,n):1,i=t.slice(-7),a=0,o=`full-days`;i.length?a=A(i.map(e=>e.cloudUsd)):n&&(a=n.cloudUsd/r,o=`today`);let s=0,c=`none`,l=0;if(e.llmAvailable){let e=t.findIndex(e=>e.llmUsd>0),i=e===-1?[]:t.slice(e).slice(-7);i.length?(s=A(i.map(e=>e.llmUsd)),c=`closed-days`,l=i.length):n&&n.llmUsd>0&&(s=n.llmUsd/r,c=`today`)}return{monthUsd:(a+s)*k,cloudRate:a,llmRate:s,cloudBasis:o,llmBasis:c,llmClosedDays:l}}function te(e){let t=`https://dash.cloudflare.com/${e.account.id}`;return{account:t,billing:`${t}/billing`,containers:`${t}/workers/containers`,durableObjects:`${t}/workers/durable-objects`,workers:`${t}/workers-and-pages`,r2:`${t}/r2/overview`,workflows:`${t}/workers/workflows`,worker:e=>`${t}/workers/services/view/${encodeURIComponent(e)}/production/metrics`,bucket:e=>`${t}/r2/default/buckets/${encodeURIComponent(e)}`,anthropic:`https://platform.claude.com/cost`}}var ne=e=>e.account.name??`${e.account.id.slice(0,8)}…`;function N(e,t,n){let r=[`${e.date} · total ${T(e.total)}${n?` (partial day)`:``}`];for(let n of t){let t=O(e,n);t<=0||r.push(`${n} ${T(t)}${n===`LLM (Anthropic)`&&e.llmEstimated?` (estimate)`:``}`)}return r.join(`
1
+ import{t as e}from"./AppShell-DZdz_sl7.js";import{Ci as t,Lr as n,Lt as r,Vt as i,Xt as a,_n as o,ci as s,cn as c,gn as l,ir as u,ln as d,on as f,r as p,sn as m,un as h,ur as g,vi as _,wi as v,xi as y,yn as b,zr as x}from"./seed-DeKSHrt2.js";var S=`Durable Objects`,C=`Workers · storage · R2`,w=`LLM (Anthropic)`,T=(e,t=2)=>`$${e.toFixed(t)}`,E=e=>e.workersUsd+e.doRowsUsd+e.doStorageUsd+e.r2Usd+e.workflowsUsd;function D(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(S),e.days.some(e=>E(e)>0)&&t.push(C),e.llmAvailable&&t.push(w),t}function O(e,t){return t===`Durable Objects`?Object.values(e.durableObjects).reduce((e,t)=>e+t,0)+e.doRequestsUsd:t===`Workers · storage · R2`?E(e):t===`LLM (Anthropic)`?e.llmUsd:e.containers[t]?.total??0}var k=30.4;function ee(e){let t=e.range.partialLastDay?e.days.slice(0,-1):e.days,n=e.range.partialLastDay?e.days[e.days.length-1]:void 0,r=t[t.length-1],i=t.slice(-7),a=i.length?i.reduce((e,t)=>e+t.total,0)/i.length:void 0,o=e.account.cloudUsd>0?Math.round(e.totals.cloudUsd/e.account.cloudUsd*100):0;return{...r?{yesterday:{date:r.date,total:r.total}}:{},...n?{today:{date:n.date,total:n.total}}:{},...a===void 0?{}:{avg7:a},projection:M(e,t,n),llm:{range:e.totals.llmUsd,...r?{yesterday:r.llmUsd}:{},...n?{today:{usd:n.llmUsd,estimated:n.llmEstimated}}:{}},accountShare:o}}var A=e=>e.reduce((e,t)=>e+t,0)/e.length;function j(e,t){let n=Date.parse(`${t.date}T00:00:00Z`),r=(e.generatedAt-n)/864e5;return Math.min(1,Math.max(1/24,Number.isFinite(r)?r:1))}function M(e,t,n){let r=n?j(e,n):1,i=t.slice(-7),a=0,o=`full-days`;i.length?a=A(i.map(e=>e.cloudUsd)):n&&(a=n.cloudUsd/r,o=`today`);let s=0,c=`none`,l=0;if(e.llmAvailable){let e=t.findIndex(e=>e.llmUsd>0),i=e===-1?[]:t.slice(e).slice(-7);i.length?(s=A(i.map(e=>e.llmUsd)),c=`closed-days`,l=i.length):n&&n.llmUsd>0&&(s=n.llmUsd/r,c=`today`)}return{monthUsd:(a+s)*k,cloudRate:a,llmRate:s,cloudBasis:o,llmBasis:c,llmClosedDays:l}}function te(e){let t=`https://dash.cloudflare.com/${e.account.id}`;return{account:t,billing:`${t}/billing`,containers:`${t}/workers/containers`,durableObjects:`${t}/workers/durable-objects`,workers:`${t}/workers-and-pages`,r2:`${t}/r2/overview`,workflows:`${t}/workers/workflows`,worker:e=>`${t}/workers/services/view/${encodeURIComponent(e)}/production/metrics`,bucket:e=>`${t}/r2/default/buckets/${encodeURIComponent(e)}`,anthropic:`https://platform.claude.com/cost`}}var ne=e=>e.account.name??`${e.account.id.slice(0,8)}…`;function N(e,t,n){let r=[`${e.date} · total ${T(e.total)}${n?` (partial day)`:``}`];for(let n of t){let t=O(e,n);t<=0||r.push(`${n} ${T(t)}${n===`LLM (Anthropic)`&&e.llmEstimated?` (estimate)`:``}`)}return r.join(`
2
2
  `)}function P(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()}`}function F(e,t,n){let r=t.map(t=>({series:t,usd:O(e,t),estimated:t===`LLM (Anthropic)`&&e.llmEstimated})).filter(e=>e.usd>0).sort((e,t)=>t.usd-e.usd);return{date:e.date,label:P(e.date),partial:n,total:e.total,rows:r}}function I(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:T(n)}}),d=[],f=[],p=[];return a.forEach((r,o)=>{let u=0,m=n.l+o*s+c/2,h=s-c;f.push({x:Number((n.l+o*s).toFixed(1)),y:n.t,width:Number(s.toFixed(1)),height:i,title:N(r,t,e.range.partialLastDay&&o===a.length-1),tip:F(r,t,e.range.partialLastDay&&o===a.length-1)}),t.forEach((e,t)=>{let n=O(r,e);if(n<=0)return;let i=l(u+n),a=l(u),o=Math.max(0,a-i-2);d.push({seriesIndex:t,x:Number(m.toFixed(1)),y:Number(i.toFixed(1)),width:Number(h.toFixed(1)),height:Number(o.toFixed(1))}),u+=n}),(a.length<=16||o%Math.ceil(a.length/16)===0)&&p.push({x:Number((m+h/2).toFixed(1)),label:r.date.slice(5)})}),{width:960,height:260,gridLines:u,segments:d,dayHovers:f,dayLabels:p,axisY:Number(l(0).toFixed(1)),marginLeft:n.l,marginRight:n.r}}function re(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 L=[`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]`],R=[`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]`],z={class:`overflow-x-auto`},B=[`viewBox`],V=[`x1`,`x2`,`y1`,`y2`],H=[`x`,`y`],U=[`x`,`y`,`width`,`height`],W=[`aria-label`,`x`,`y`,`width`,`height`,`onPointerenter`,`onPointermove`],G=[`x`,`y`],K=[`x1`,`x2`,`y1`,`y2`],q={class:`tip-head mb-1.5 flex items-baseline justify-between gap-3 border-b border-muted pb-1.5`},J={class:`font-medium text-highlighted`},Y={key:0,class:`ml-1.5 font-normal text-dimmed`},X={class:`font-medium text-highlighted`},ie={class:`tip-name truncate text-muted`},ae={class:`text-highlighted`},oe={class:`tip-usd`},se={key:0,class:`ml-1 text-dimmed`},Z=256,Q=12,ce=b({__name:`CostChart`,props:{report:{},series:{}},setup(e){let n=e,r=f(()=>I(n.report,n.series)),i=e=>44+e*20,o=s(null),c=s(null);function p(e,t){let n=c.value,r=n?.getBoundingClientRect(),a=t.clientX-(r?.left??0),s=t.clientY-(r?.top??0),l=n?.clientWidth??0,u=n?.clientHeight??0,d=i(e.tip.rows.length),f=l>0&&a+Q+Z>l,p=u>0&&s+Q+d>u;o.value={x:Math.max(0,f?a-Q-Z:a+Q),y:Math.max(0,p?s-Q-d:s+Q),data:e.tip}}return(e,n)=>(u(),h(`div`,{ref_key:`host`,ref:c,class:`chart-host relative`},[m(`div`,z,[(u(),h(`svg`,{class:`block h-auto w-full font-mono`,viewBox:`0 0 ${r.value.width} ${r.value.height}`,role:`img`,"aria-label":`Daily cost, stacked by component`},[(u(!0),h(a,null,g(r.value.gridLines,(e,t)=>(u(),h(a,{key:`g${t}`},[m(`line`,{class:`stroke-(--ui-border-muted)`,x1:r.value.marginLeft,x2:r.value.width-r.value.marginRight,y1:e.y,y2:e.y},null,8,V),m(`text`,{class:`fill-(--ui-text-dimmed) text-[11px] tabular-nums`,x:r.value.marginLeft-8,y:e.y+4,"text-anchor":`end`},v(e.label),9,H)],64))),128)),(u(!0),h(a,null,g(r.value.segments,(e,t)=>(u(),h(`rect`,{key:`s${t}`,class:y([`seg hover:opacity-85`,_(L)[e.seriesIndex%_(L).length]]),x:e.x,y:e.y,width:e.width,height:e.height},null,10,U))),128)),(u(!0),h(a,null,g(r.value.dayHovers,(e,t)=>(u(),h(`rect`,{key:`h${t}`,class:`day fill-transparent`,role:`img`,"aria-label":e.title,x:e.x,y:e.y,width:e.width,height:e.height,onPointerenter:t=>p(e,t),onPointermove:t=>p(e,t),onPointerleave:n[0]||=e=>o.value=null},null,40,W))),128)),(u(!0),h(a,null,g(r.value.dayLabels,(e,t)=>(u(),h(`text`,{key:`d${t}`,class:`fill-(--ui-text-dimmed) text-[11px]`,x:e.x,y:r.value.height-10,"text-anchor":`middle`},v(e.label),9,G))),128)),m(`line`,{class:`stroke-(--ui-border)`,x1:r.value.marginLeft,x2:r.value.width-r.value.marginRight,y1:r.value.axisY,y2:r.value.axisY},null,8,K)],8,B))]),o.value?(u(),h(`div`,{key:0,class:`chart-tip pointer-events-none absolute z-10 w-64 rounded-md border border-default bg-elevated px-3 py-2 font-mono text-xs tabular-nums whitespace-nowrap shadow-lg`,role:`tooltip`,style:t({left:`${o.value.x}px`,top:`${o.value.y}px`})},[m(`div`,q,[m(`span`,J,[l(v(o.value.data.label),1),o.value.data.partial?(u(),h(`span`,Y,`partial day`)):d(``,!0)]),m(`span`,X,v(_(T)(o.value.data.total)),1)]),(u(!0),h(a,null,g(o.value.data.rows,e=>(u(),h(`div`,{key:e.series,class:`tip-row flex items-baseline justify-between gap-3 leading-5`},[m(`span`,ie,v(e.series),1),m(`span`,ae,[m(`span`,oe,v(_(T)(e.usd)),1),e.estimated?(u(),h(`span`,se,`est.`)):d(``,!0)])]))),128))],4)):d(``,!0)],512))}}),le={class:`by-user grid gap-3`},ue={class:`flex flex-wrap items-center gap-x-4 gap-y-2`},de={class:`flex items-center gap-2 text-sm text-muted`},fe=[`title`],pe=[`disabled`,`aria-describedby`],me={key:0,id:`me-hint`,class:`me-hint text-xs text-dimmed`},he={class:`coverage font-mono text-xs tabular-nums text-muted`},ge={class:`overflow-x-auto`},_e={class:`users w-full min-w-[40rem] border-collapse whitespace-nowrap font-mono text-[0.8125rem] tabular-nums`},ve=[`title`],ye={class:`text-highlighted`},be={class:`ml-1.5 text-xs text-dimmed`},xe={key:0,class:`ml-1.5 rounded-xs bg-accented px-1 text-xs text-highlighted`},Se=[`title`],Ce={class:`border-b border-muted px-2.5 py-1.5 text-right`},we={class:`border-b border-muted px-2.5 py-1.5 text-right`},Te={class:`border-b border-muted px-2.5 py-1.5 text-right`},Ee={class:`border-b border-muted px-2.5 py-1.5 text-right font-medium text-highlighted`},De={class:`border-b border-muted px-2.5 py-1.5 text-right`},Oe={key:0},ke={class:`empty px-2.5 py-3 text-sm text-muted`,colspan:`6`},Ae={key:0},je={class:`px-2.5 py-1.5 text-right text-xs text-muted`},Me={class:`px-2.5 py-1.5 text-right text-xs text-muted`},Ne={class:`reconciliation font-mono text-xs tabular-nums text-muted`},Pe=b({__name:`CostsByUser`,props:{report:{}},setup(e){let t=e,n=s(``),o=s(!1),c=f(()=>t.report.viewer.userIds.length>0),p=f(()=>{let e=n.value.trim().toLowerCase(),r=new Set(t.report.viewer.userIds);return t.report.users.filter(t=>o.value&&!r.has(t.userId)?!1:!e||t.userId.toLowerCase().includes(e)||(t.userName??``).toLowerCase().includes(e))}),b=f(()=>t.report.users.reduce((e,t)=>e+t.totalUsd,0)),S=f(()=>p.value.reduce((e,t)=>e+t.totalUsd,0)),C=e=>t.report.viewer.userIds.includes(e.userId),w=e=>e.userName??e.userId.replace(/^[a-z]+:/,``),E=e=>e.userId.split(`:`)[0]??``,D=e=>`${e} day${e===1?``:`s`}`;return(t,s)=>(u(),h(`section`,le,[m(`div`,ue,[m(`label`,de,[s[2]||=m(`span`,null,`Filter`,-1),x(m(`input`,{"onUpdate:modelValue":s[0]||=e=>n.value=e,class:`user-filter rounded-md border border-default bg-elevated px-2.5 py-1 font-mono text-xs text-highlighted`,type:`search`,placeholder:`name or id`,"aria-label":`Filter users`},null,512),[[i,n.value]])]),m(`label`,{class:y([`me-toggle flex items-center gap-2 text-sm`,c.value?`text-muted`:`text-dimmed`]),title:c.value?`Only your own runs`:void 0},[x(m(`input`,{"onUpdate:modelValue":s[1]||=e=>o.value=e,type:`checkbox`,disabled:!c.value,"aria-label":`Only me`,"aria-describedby":c.value?void 0:`me-hint`},null,8,pe),[[r,o.value]]),s[3]||=m(`span`,null,`me`,-1),c.value?d(``,!0):(u(),h(`span`,me,`— your sign-in email matched no Slack user in this range`))],10,fe),m(`p`,he,[e.report.coverage.historyOn?(u(),h(a,{key:1},[l(` runs from `+v(_(P)(e.report.coverage.from))+` to `+v(_(P)(e.report.range.to)),1),e.report.coverage.clamped?(u(),h(a,{key:0},[l(` · earlier days are past the history's `+v(e.report.coverage.retentionDays)+`-day window`,1)],64)):d(``,!0),e.report.pending>0?(u(),h(a,{key:1},[l(` · `+v(e.report.pending)+` run`+v(e.report.pending===1?``:`s`)+` still being priced`,1)],64)):d(``,!0)],64)):(u(),h(a,{key:0},[l(`run history is off — no runs to attribute`)],64))])]),m(`div`,ge,[m(`table`,_e,[s[5]||=m(`thead`,null,[m(`tr`,null,[m(`th`,{class:`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-left text-xs font-medium text-muted`},` User `),m(`th`,{class:`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-right text-xs font-medium text-muted`},` Runs `),m(`th`,{class:`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-right text-xs font-medium text-muted`},` LLM `),m(`th`,{class:`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-right text-xs font-medium text-muted`},[l(` Cloud `),m(`span`,{class:`font-normal text-dimmed`},`allocated`)]),m(`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 `),m(`th`,{class:`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-right text-xs font-medium text-muted`},` Share `)])],-1),m(`tbody`,null,[(u(!0),h(a,null,g(p.value,e=>(u(),h(`tr`,{key:e.userId,class:y([`user-row`,C(e)?`is-me`:``])},[m(`td`,{class:`border-b border-muted px-2.5 py-1.5`,title:e.userId},[m(`span`,ye,v(w(e)),1),m(`span`,be,v(E(e)),1),C(e)?(u(),h(`span`,xe,`me`)):d(``,!0),e.unpricedTokens>0?(u(),h(`span`,{key:1,class:`ml-1.5 text-xs text-warn`,title:`${e.unpricedTokens} tokens ran under a model with no list price`},`unpriced tokens`,8,Se)):d(``,!0)],8,ve),m(`td`,Ce,v(e.runs),1),m(`td`,we,v(_(T)(e.llmUsd)),1),m(`td`,Te,v(_(T)(e.cloudUsd)),1),m(`td`,Ee,v(_(T)(e.totalUsd)),1),m(`td`,De,v(b.value>0?Math.round(e.totalUsd/b.value*100):0)+`% `,1)],2))),128)),p.value.length===0?(u(),h(`tr`,Oe,[m(`td`,ke,v(e.report.users.length===0?`no runs in this range`:`no user matches`),1)])):d(``,!0)]),p.value.length>0&&p.value.length<e.report.users.length?(u(),h(`tfoot`,Ae,[m(`tr`,null,[s[4]||=m(`td`,{class:`px-2.5 py-1.5 text-xs text-muted`,colspan:`4`},`shown`,-1),m(`td`,je,v(_(T)(S.value)),1),m(`td`,Me,v(b.value>0?Math.round(S.value/b.value*100):0)+`% `,1)])])):d(``,!0)])]),m(`p`,Ne,[e.report.reconciliation.comparedDays>0?(u(),h(a,{key:0},[l(` LLM attributed `+v(_(T)(e.report.reconciliation.attributedLlmUsd))+` of `+v(_(T)(e.report.reconciliation.workspaceLlmUsd))+` on the workspace over `+v(D(e.report.reconciliation.comparedDays))+` · `,1),e.report.reconciliation.unattributedLlmUsd>=0?(u(),h(a,{key:0},[l(v(_(T)(e.report.reconciliation.unattributedLlmUsd))+` unattributed (router, review abridges, runs without a record, list vs invoice) `,1)],64)):(u(),h(a,{key:1},[l(v(_(T)(-e.report.reconciliation.unattributedLlmUsd))+` more attributed than the workspace figure (list vs invoice, or spend billed outside this workspace on a compared day) `,1)],64))],64)):(u(),h(a,{key:1},[l(`no day in range has a workspace LLM figure to compare against`)],64)),e.report.reconciliation.uncomparedDays>0?(u(),h(a,{key:2},[l(` · `+v(D(e.report.reconciliation.uncomparedDays))+` with `+v(_(T)(e.report.reconciliation.uncomparedLlmUsd))+` of run tokens but no workspace figure (billed outside this workspace) not compared`,1)],64)):d(``,!0),l(` · cloud allocated `+v(_(T)(e.report.reconciliation.cloudAllocatedUsd)),1),e.report.reconciliation.cloudUnallocatedUsd>0?(u(),h(a,{key:3},[l(` · `+v(_(T)(e.report.reconciliation.cloudUnallocatedUsd))+` on days with no runs`,1)],64)):d(``,!0)]),s[6]||=m(`p`,{class:`text-xs text-dimmed`},` A user's LLM is their runs' tokens at Anthropic list (cache writes at the 5-minute rate); a child run bills to whoever started its parent. Cloud is each day's Cloudflare spend split by share of run wall-clock — an allocation, not a meter. `,-1)]))}}),Fe={class:`mb-4 flex flex-wrap items-center gap-x-4 gap-y-2`},Ie={class:`flex items-center gap-1`,"aria-label":`Range`},Le={key:0,class:`rounded-md bg-accented px-2.5 py-1 font-mono text-xs font-medium tabular-nums text-highlighted`,"aria-current":`page`},Re=[`href`],ze={key:0,class:`flex items-center gap-1`,"aria-label":`Cost groups`},Be={key:0,class:`rounded-md bg-accented px-2.5 py-1 text-xs font-medium text-highlighted`,"aria-current":`page`},Ve=[`href`],He={class:`font-mono text-sm tabular-nums text-muted`},Ue={class:`mb-5 grid grid-cols-[repeat(auto-fit,minmax(190px,1fr))] gap-3`},We={key:0,class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},Ge={class:`font-mono text-2xl font-medium tabular-nums`},Ke={class:`text-xs text-muted`},qe={key:1,class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},Je={class:`font-mono text-2xl font-medium tabular-nums`},Ye={class:`text-xs text-muted`},Xe={class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},Ze={class:`font-mono text-2xl font-medium tabular-nums`},Qe={class:`text-xs text-muted`},$e={class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},et={class:`font-mono text-2xl font-medium tabular-nums`},tt={class:`text-xs text-muted`},nt={class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},rt={class:`font-mono text-2xl font-medium tabular-nums`},it={class:`text-xs text-muted`},at={class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},ot={class:`font-mono text-2xl font-medium tabular-nums`},st={class:`text-xs text-muted`},ct=[`href`,`title`],lt=[`href`],ut={class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},dt={class:`flex flex-wrap items-baseline justify-between gap-x-4 gap-y-2`},ft={class:`legend flex flex-wrap gap-x-4 gap-y-1.5 text-xs text-muted`},pt=[`href`,`title`],mt={key:0,class:`text-xs text-warn`},ht={key:1,class:`text-xs text-muted`},gt={class:`mb-3 flex items-center gap-1 border-b border-default`,"aria-label":`View`},_t={key:0,class:`-mb-px border-b-2 border-primary px-3 py-1.5 text-sm font-medium text-highlighted`,"aria-current":`page`},vt=[`href`],yt={key:0,class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},bt={key:1,class:`text-sm text-warn`},xt={class:`text-xs text-muted`},St={class:`rounded bg-accented px-1 py-0.5`},Ct={key:1,class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},wt={class:`w-full border-collapse font-mono text-[0.8125rem] tabular-nums`},Tt={class:`px-2.5 py-1.5`},Et=[`href`],Dt={class:`px-2.5 py-1.5 text-right`},Ot={class:`px-2.5 py-1.5 text-right`},kt={class:`w-2/5 px-2.5 py-1.5`},At={key:2,class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},jt={open:``},Mt={class:`mt-2.5 overflow-x-auto`},Nt={class:`data w-full min-w-[38rem] border-collapse whitespace-nowrap font-mono text-[0.8125rem] tabular-nums`},$=[`title`],Pt={key:0,class:`text-xs text-dimmed`},Ft={key:1,class:`text-xs text-dimmed`},It={class:`border-b border-muted px-2.5 py-1.5 text-right font-medium`},Lt={class:`text-xs text-muted`},Rt={class:`rounded bg-accented px-1 py-0.5`},zt={class:`border-t border-default pt-3.5 text-xs text-dimmed`},Bt={class:`mt-2 grid gap-1.5`},Vt=[`href`],Ht={key:2},Ut=[`href`],Wt={key:2},Gt=[`href`],Kt=[`href`],qt=b({__name:`CostsPage`,setup(r){let i=p(`costs`),s=f(()=>i?.report??null),b=f(()=>i?.groups??[]),x=f(()=>i?.view??`daily`),S=f(()=>x.value===`users`?i?.users??null:null);function C(e,t,n){let r=[`days=${t}`];return n===`users`&&r.push(`view=users`),`/costs/${e}?${r.join(`&`)}`}let w=f(()=>s.value?D(s.value):[]),E=f(()=>s.value?ee(s.value):null),k=f(()=>s.value?re(s.value):[]),A=f(()=>s.value?te(s.value):null),j=f(()=>s.value?ne(s.value):``);function M(e){let t=A.value;if(t){if(/^(Memory|vCPU|Disk)/.test(e))return t.containers;if(e.startsWith(`Durable Object`))return t.durableObjects;if(e.startsWith(`Workers`))return t.workers;if(e.startsWith(`R2`))return t.r2;if(e.startsWith(`Workflow`))return t.workflows}}function N(e){let t=A.value;if(t)return e===`LLM (Anthropic)`?t.anthropic:e===`Durable Objects`?t.durableObjects:e===`Workers · storage · R2`?t.workers:t.containers}let P=f(()=>{let e=s.value,t=E.value;if(!e||!t)return``;let n=t.projection,r=`cloud ${T(n.cloudRate)}/day`,i=n.cloudBasis===`today`?`cloud from today so far`:`cloud from the last 7 full days`;if(!e.llmAvailable)return`${r} × 30.4 · ${i} · before plan fees and included allowances`;let a=`LLM ${T(n.llmRate)}/day`,o=n.llmBasis===`closed-days`?`LLM from ${n.llmClosedDays} closed day${n.llmClosedDays===1?``:`s`}`:n.llmBasis===`today`?`LLM from today so far`:`no LLM spend in range`;return`${r} + ${a} · × 30.4 · ${n.cloudBasis===`today`&&n.llmBasis===`today`?`both from today so far`:`${i} · ${o}`}`}),F=f(()=>s.value?[...s.value.days].reverse():[]),I=[1,7,30,90],L=e=>e===1?`today`:`${e}d`,z=f(()=>{let e=s.value,t=E.value;if(!e||!t)return``;if(!e.llmAvailable)return`LLM spend not configured`;let n=[];return t.llm.yesterday!==void 0&&n.push(`yesterday ${T(t.llm.yesterday)}`),t.llm.today&&n.push(`today ${T(t.llm.today.usd)}${t.llm.today.estimated?` (estimate)`:``}`),n.length?n.join(` · `):`in range`});function B(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(r,i)=>s.value&&E.value?(u(),c(e,{key:0,title:`${s.value.label} spend`,nav:`costs`},{default:n(()=>[m(`div`,Fe,[m(`nav`,Ie,[(u(),h(a,null,g(I,e=>(u(),h(a,{key:e},[e===s.value.range.days?(u(),h(`span`,Le,v(L(e)),1)):(u(),h(`a`,{key:1,class:`rounded-md px-2.5 py-1 font-mono text-xs tabular-nums text-muted no-underline hover:bg-elevated hover:text-highlighted`,href:C(s.value.group,e,x.value)},v(L(e)),9,Re))],64))),64))]),b.value.length>1?(u(),h(`nav`,ze,[(u(!0),h(a,null,g(b.value,e=>(u(),h(a,{key:e},[e===s.value.group?(u(),h(`span`,Be,v(e),1)):(u(),h(`a`,{key:1,class:`rounded-md px-2.5 py-1 text-xs text-muted no-underline hover:bg-elevated hover:text-highlighted`,href:C(e,s.value.range.days,x.value)},v(e),9,Ve))],64))),128))])):d(``,!0),m(`p`,He,[l(v(B(s.value.range.from))+` → `+v(B(s.value.range.to))+` · `+v(s.value.range.days)+`d`,1),s.value.range.partialLastDay?(u(),h(a,{key:0},[l(` · today partial`)],64)):d(``,!0)])]),m(`section`,Ue,[E.value.yesterday?(u(),h(`div`,We,[i[0]||=m(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`Yesterday`,-1),m(`span`,Ge,v(_(T)(E.value.yesterday.total)),1),m(`span`,Ke,v(E.value.yesterday.date)+` · last full day`,1)])):(u(),h(`div`,qe,[i[1]||=m(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`Today so far`,-1),m(`span`,Je,v(E.value.today?_(T)(E.value.today.total):`—`),1),m(`span`,Ye,v(E.value.today?`${E.value.today.date} · partial day, UTC`:`no day in range`),1)])),m(`div`,Xe,[i[2]||=m(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`7-day average`,-1),m(`span`,Ze,v(E.value.avg7===void 0?`—`:_(T)(E.value.avg7)),1),m(`span`,Qe,v(E.value.avg7===void 0?`no full day yet in this range`:`per day, full days only`),1)]),m(`div`,$e,[i[3]||=m(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`Projected month`,-1),m(`span`,et,v(_(T)(E.value.projection.monthUsd,0)),1),m(`span`,tt,v(P.value),1)]),m(`div`,nt,[i[4]||=m(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`LLM spend`,-1),m(`span`,rt,v(s.value.llmAvailable?_(T)(E.value.llm.range):`—`),1),m(`span`,it,v(z.value),1)]),m(`div`,at,[i[6]||=m(`span`,{class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},`Share of account`,-1),m(`span`,ot,v(E.value.accountShare)+`%`,1),m(`span`,st,[l(v(_(T)(s.value.totals.cloudUsd))+` of `+v(_(T)(s.value.account.cloudUsd))+` on `,1),A.value?(u(),h(`a`,{key:0,class:`text-primary hover:underline`,href:A.value.account,target:`_blank`,rel:`noopener noreferrer`,title:`Cloudflare account ${s.value.account.id}`},v(j.value),9,ct)):d(``,!0),i[5]||=l(` · Cloudflare spend in range · `,-1),A.value?(u(),h(`a`,{key:1,class:`text-primary hover:underline`,href:A.value.billing,target:`_blank`,rel:`noopener noreferrer`},`billing`,8,lt)):d(``,!0)])])]),m(`section`,ut,[m(`div`,dt,[i[7]||=m(`div`,null,[m(`h2`,{class:`text-[0.9375rem] font-medium`},`Daily cost`),m(`p`,{class:`text-sm text-muted`},`Stacked by component · USD list price`)],-1),m(`div`,ft,[(u(!0),h(a,null,g(w.value,(e,t)=>(u(),h(`a`,{key:e,class:`inline-flex items-center gap-1.5 no-underline hover:text-highlighted hover:underline`,href:N(e),target:`_blank`,rel:`noopener noreferrer`,title:`Open where ${e} is billed`},[m(`i`,{class:y([`inline-block size-2.5 rounded-xs`,_(R)[t%_(R).length]])},null,2),l(v(e),1)],8,pt))),128))])]),o(ce,{report:s.value,series:w.value},null,8,[`report`,`series`]),s.value.llmAvailable?s.value.days.some(e=>e.llmEstimated)?(u(),h(`p`,ht,[i[9]||=l(` A day the Anthropic cost report has not closed yet (today, and yesterday until a few hours after midnight UTC) shows its LLM figure as an estimate: the hourly usage report priced at list. The closed days are the cost report itself. `,-1),s.value.days.some(e=>e.llmUnpricedTokens>0)?(u(),h(a,{key:0},[l(` Some tokens ran under a model this page has no price for and are not in the estimate. `)],64)):d(``,!0)])):d(``,!0):(u(),h(`p`,mt,[...i[8]||=[l(` LLM spend not configured — set `,-1),m(`code`,null,`ANTHROPIC_ADMIN_KEY`,-1),l(` and the group's `,-1),m(`code`,null,`anthropicWorkspaceId`,-1),l(` to layer it in. `,-1)]]))]),m(`nav`,gt,[(u(),h(a,null,g([`daily`,`users`],e=>(u(),h(a,{key:e},[e===x.value?(u(),h(`span`,_t,v(e===`daily`?`Daily`:`By user`),1)):(u(),h(`a`,{key:1,class:`-mb-px border-b-2 border-transparent px-3 py-1.5 text-sm text-muted no-underline hover:border-muted hover:text-highlighted`,href:C(s.value.group,s.value.range.days,e)},v(e===`daily`?`Daily`:`By user`),9,vt))],64))),64))]),x.value===`users`?(u(),h(`section`,yt,[i[12]||=m(`div`,null,[m(`h2`,{class:`text-[0.9375rem] font-medium`},`Cost by user`),m(`p`,{class:`text-sm text-muted`},` Who started the runs · LLM at list from their tokens · cloud allocated by wall-clock `)],-1),S.value?(u(),c(Pe,{key:0,report:S.value},null,8,[`report`])):(u(),h(`p`,bt,`The by-user report did not load with this page.`)),m(`p`,xt,[i[10]||=l(` Machine-readable twin: `,-1),m(`code`,St,`GET /costs/`+v(s.value.group)+`/users.json`,1),i[11]||=l(` (same Access gate). `,-1)])])):d(``,!0),x.value===`daily`?(u(),h(`section`,Ct,[i[13]||=m(`div`,null,[m(`h2`,{class:`text-[0.9375rem] font-medium`},`What each cloud dollar buys`)],-1),m(`table`,wt,[m(`tbody`,null,[(u(!0),h(a,null,g(k.value,e=>(u(),h(`tr`,{key:e.label,class:`border-b border-muted`},[m(`td`,Tt,[M(e.label)?(u(),h(`a`,{key:0,class:`no-underline hover:text-highlighted hover:underline`,href:M(e.label),target:`_blank`,rel:`noopener noreferrer`,title:`Open where this is billed on Cloudflare`},v(e.label),9,Et)):(u(),h(a,{key:1},[l(v(e.label),1)],64))]),m(`td`,Dt,v(_(T)(e.usd)),1),m(`td`,Ot,v(Math.round(e.percent))+`%`,1),m(`td`,kt,[m(`i`,{class:`block h-2.5 rounded-xs bg-primary opacity-75`,style:t({width:`${e.percent.toFixed(1)}%`})},null,4)])]))),128))])])])):d(``,!0),x.value===`daily`?(u(),h(`section`,At,[m(`details`,jt,[i[16]||=m(`summary`,{class:`cursor-pointer text-sm text-muted`},`Table view — daily cost by component (USD)`,-1),m(`div`,Mt,[m(`table`,Nt,[m(`thead`,null,[m(`tr`,null,[i[14]||=m(`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),(u(!0),h(a,null,g(w.value,e=>(u(),h(`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`},v(e),1))),128)),i[15]||=m(`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)])]),m(`tbody`,null,[(u(!0),h(a,null,g(F.value,e=>(u(),h(`tr`,{key:e.date},[m(`td`,{class:`border-b border-muted px-2.5 py-1.5`,title:e.date},[l(v(B(e.date))+` `,1),s.value.range.partialLastDay&&e.date===s.value.range.to?(u(),h(`span`,Pt,`(partial day`+v(e.llmEstimated?` · LLM estimated`:``)+`)`,1)):e.llmEstimated?(u(),h(`span`,Ft,`(LLM estimated)`)):d(``,!0)],8,$),(u(!0),h(a,null,g(w.value,t=>(u(),h(`td`,{key:t,class:`border-b border-muted px-2.5 py-1.5 text-right`},v(_(T)(_(O)(e,t),3)),1))),128)),m(`td`,It,v(_(T)(e.total,3)),1)]))),128))])])])]),m(`p`,Lt,[i[17]||=l(` Machine-readable twin: `,-1),m(`code`,Rt,`GET /costs/`+v(s.value.group)+`.json`,1),i[18]||=l(` (same Access gate). `,-1)])])):d(``,!0),m(`footer`,zt,[m(`details`,null,[i[26]||=m(`summary`,{class:`cursor-pointer text-muted`},`How these numbers are computed`,-1),m(`div`,Bt,[i[24]||=m(`div`,null,[m(`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); a day the cost report has not closed is the Admin API usage report, hourly, priced at Anthropic list per model (input, output, cache writes, cache reads) and marked as an estimate. `)],-1),i[25]||=m(`div`,null,[m(`b`,null,`Method.`),l(` Cloudflare GraphQL Analytics, every meter a Workers deployment is billed on: `),m(`code`,null,`containersUsageAdaptiveGroups`),l(` (cpuTimeSec, allocatedMemory, allocatedDisk per app per UTC day), `),m(`code`,null,`durableObjectsPeriodicGroups`),l(` (billable `),m(`code`,null,`duration`),l(` GB-s and SQLite rows read and written per namespace), `),m(`code`,null,`durableObjectsInvocationsAdaptiveGroups`),l(` (requests per namespace), `),m(`code`,null,`durableObjectsSqlStorageGroups`),l(` (bytes stored), `),m(`code`,null,`workersInvocationsAdaptive`),l(` (requests, CPU time), `),m(`code`,null,`r2StorageAdaptiveGroups`),l(` and `),m(`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),m(`div`,null,[i[19]||=m(`b`,null,`Scope.`,-1),i[20]||=l(` Attributed to this group: the Workers `,-1),(u(!0),h(a,null,g(s.value.attribution.workers,(e,t)=>(u(),h(a,{key:e},[t>0?(u(),h(a,{key:0},[l(`, `)],64)):d(``,!0),A.value?(u(),h(`a`,{key:1,class:`font-mono hover:underline`,href:A.value.worker(e),target:`_blank`,rel:`noopener noreferrer`},v(e),9,Vt)):(u(),h(`code`,Ht,v(e),1))],64))),128)),l(`, every Durable Object namespace they host (`+v(Object.keys(s.value.attribution.durableObjectNamespaces).length)+`), the R2 buckets named after them (`,1),(u(!0),h(a,null,g(Object.keys(s.value.attribution.r2Buckets),(e,t)=>(u(),h(a,{key:e},[t>0?(u(),h(a,{key:0},[l(`, `)],64)):d(``,!0),A.value?(u(),h(`a`,{key:1,class:`font-mono hover:underline`,href:A.value.bucket(e),target:`_blank`,rel:`noopener noreferrer`},v(e),9,Ut)):(u(),h(`code`,Wt,v(e),1))],64))),128)),Object.keys(s.value.attribution.r2Buckets).length===0?(u(),h(a,{key:0},[l(`none`)],64)):d(``,!0),i[21]||=l(`), and the container apps mapped in `,-1),m(`code`,null,`costs.groups.`+v(s.value.group),1),l(` (`+v(Object.keys(s.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. Every figure above links to where it is billed: the `,1),A.value?(u(),h(`a`,{key:1,class:`hover:underline`,href:A.value.account,target:`_blank`,rel:`noopener noreferrer`},`Cloudflare dashboard`,8,Gt)):d(``,!0),i[22]||=l(` for the account `,-1),m(`code`,null,v(s.value.account.id),1),l(v(s.value.account.name?` (${s.value.account.name})`:``)+`, and `,1),A.value?(u(),h(`a`,{key:2,class:`hover:underline`,href:A.value.anthropic,target:`_blank`,rel:`noopener noreferrer`},`Anthropic's cost page`,8,Kt)):d(``,!0),i[23]||=l(` for the LLM line. `,-1)])])])])]),_:1},8,[`title`])):d(``,!0)}});export{qt as default};
@@ -1 +1 @@
1
- import{t as e}from"./AppShell-lYVcj-k7.js";import{Lr as t,Xt as n,cn as r,gn as i,ir as a,ln as o,on as s,r as c,sn as l,un as u,ur as d,vi as f,wi as p,xi as m,yn as h}from"./seed-DeKSHrt2.js";import{t as ee}from"./wallClock-61NpVkY6.js";function te(e,t){return e.truncated&&e.completeFrom!==void 0&&Date.parse(`${t}T00:00:00Z`)<Date.parse(e.completeFrom)}Object.freeze({reviewers:[],agentLogins:[],agentCoauthors:[]});function ne(e,t){let n=Math.max(0,Math.floor((t-Date.parse(e))/6e4));if(!Number.isFinite(n))return``;let r=(e,t)=>`${e} ${t}${e===1?``:`s`} ago`;if(n<1)return`just now`;if(n<90)return r(n,`minute`);let i=Math.round(n/60);return i<48?r(i,`hour`):r(Math.round(i/24),`day`)}Object.freeze({default:60,min:5,max:1440});var g=e=>e===null?`—`:`${Math.round(e*100)}%`;function _(e){return e===null?`—`:e<1?`${Math.round(e*60)} min`:e<48?`${e.toFixed(1)} h`:`${(e/24).toFixed(1)} d`}var v=(e,t=2)=>e===null?`—`:e.toFixed(t);function y(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()}`}function b(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${y(t.toISOString().slice(0,10))}, ${n(t.getUTCHours())}:${n(t.getUTCMinutes())} UTC`}function re(e){let t=new URLSearchParams(e);return t.set(`fresh`,`1`),`?${t.toString()}`}var x=e=>`the newest ${e.totals.prsMerged} pull requests`;function S(e){if(!e.truncated)return;let t=e.completeFrom===void 0?`the read stopped at its page cap before the range began`:`the read is complete from ${b(e.completeFrom)}; the weeks before that hold what it reached, not the week`;return`The tiles cover ${x(e)} only — ${t}.`}function ie(e){let t=e.totals;return[{label:`Merged`,value:String(t.prsMerged),note:e.truncated?`${x(e)} · ${t.agentAuthoredPrs} agent-authored`:`${t.agentAuthoredPrs} agent-authored · ${e.range.weeks} week${e.range.weeks===1?``:`s`}`},{label:`Issue → merge`,value:_(t.leadTimeHours.median),note:t.leadTimeHours.mean===null?`no merges in range`:`median · mean ${_(t.leadTimeHours.mean)}`},{label:`First-pass CI`,value:g(t.firstPassCi.share),note:t.firstPassCi.known===0?`no CI facts in range`:`${t.firstPassCi.passed} of ${t.firstPassCi.known} green at the first attempt`},{label:`Review rounds`,value:v(t.reviewRounds.perPr),note:`per PR · ${t.reviewRounds.verdicts} verdicts, ${t.reviewRounds.fixRounds} fix round${t.reviewRounds.fixRounds===1?``:`s`}`},{label:`No human edit`,value:g(t.findings.noHumanEditShare),note:t.findings.total===0?`no findings in range`:`of ${t.findings.total} findings resolved by an agent alone`},{label:`Blocking caught`,value:String(t.findings.blocking),note:`${t.findings.major} major · ${t.findings.minor} minor · ${t.findings.nit} nit`}]}function C(e){return e.findings.total===0?`0`:`${e.findings.total}${e.findings.blocking>0?` (${e.findings.blocking} blocking)`:``}`}function w(e){return e.firstPassCi.known===0?`—`:`${e.firstPassCi.passed}/${e.firstPassCi.known}`}var ae={class:`text-xs text-muted`},T={key:1,class:`text-highlighted`},E=[`href`],D={class:`mb-4 flex flex-wrap items-center gap-x-4 gap-y-2`},O={key:0,class:`flex items-center gap-1`,"aria-label":`Repositories`},k={key:0,class:`rounded-md bg-accented px-2.5 py-1 text-xs font-medium text-highlighted`,"aria-current":`page`},A=[`href`],j={class:`font-mono text-sm tabular-nums text-muted`},M={class:`mb-5 grid gap-3`},N={key:0,class:`text-sm text-muted`},P={class:`grid grid-cols-[repeat(auto-fit,minmax(190px,1fr))] gap-3`},F={class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},I={class:`font-mono text-2xl font-medium tabular-nums`},L={class:`text-xs text-muted`},R={class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},z={class:`overflow-x-auto`},B={class:`weeks w-full min-w-[52rem] border-collapse whitespace-nowrap font-mono text-[0.8125rem] tabular-nums`},V=[`title`],H={key:0,class:`ml-1 text-xs`},U={key:0,class:`text-xs text-muted`},oe={class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},W={key:0,class:`text-sm text-muted`},G={key:1,class:`overflow-x-auto`},K={class:`units w-full min-w-[52rem] border-collapse font-mono text-[0.8125rem] tabular-nums`},q=[`href`],se={key:1,class:`text-dimmed`},ce=[`title`],le=[`href`],ue={class:`text-xs text-muted`},de={class:`rounded bg-accented px-1 py-0.5`},fe={class:`border-t border-default pt-3.5 text-xs text-dimmed`},pe={key:0,class:`mb-2 font-mono tabular-nums text-muted`},me=[`href`],he={class:`mt-2 grid gap-1.5`},J=`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-xs font-medium text-muted whitespace-nowrap`,Y=`border-b border-muted px-2.5 py-1.5`,X=h({__name:`DeliveryPage`,setup(h){let x=c(`delivery`),X=s(()=>x?.report??null),Z=s(()=>x?.repos??[]),ge=s(()=>X.value?ie(X.value):[]),Q=s(()=>X.value?S(X.value):void 0),$=e=>X.value?te(X.value,e):!1,_e=s(()=>X.value?.weeks.some(e=>$(e.week))??!1),ve=[1,2,4,8,13],ye=ee(void 0,6e4),be=typeof window>`u`?``:window.location.search;return(s,c)=>X.value?(a(),r(e,{key:0,title:`${X.value.repo} delivery`,nav:`delivery`},{actions:t(()=>[l(`span`,ae,[(a(),u(n,null,d(ve,(e,t)=>(a(),u(n,{key:e},[t>0?(a(),u(n,{key:0},[i(` · `)],64)):o(``,!0),e===X.value.range.weeks?(a(),u(`b`,T,p(e)+`w`,1)):(a(),u(`a`,{key:2,class:`text-primary hover:underline`,href:`/delivery/${X.value.repo}?weeks=${e}`},p(e)+`w`,9,E))],64))),64))])]),default:t(()=>[l(`div`,D,[Z.value.length>1?(a(),u(`nav`,O,[(a(!0),u(n,null,d(Z.value,e=>(a(),u(n,{key:e},[e===X.value.repo?(a(),u(`span`,k,p(e),1)):(a(),u(`a`,{key:1,class:`rounded-md px-2.5 py-1 text-xs text-muted no-underline hover:bg-elevated hover:text-highlighted`,href:`/delivery/${e}`},p(e),9,A))],64))),128))])):o(``,!0),l(`p`,j,p(f(y)(X.value.range.since))+` → `+p(f(y)(X.value.range.until))+` · `+p(X.value.range.weeks)+`w · weeks start Monday, UTC `,1)]),l(`section`,M,[Q.value?(a(),u(`p`,N,p(Q.value),1)):o(``,!0),l(`div`,P,[(a(!0),u(n,null,d(ge.value,e=>(a(),u(`div`,{key:e.label,class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},[l(`span`,F,p(e.label),1),l(`span`,I,p(e.value),1),l(`span`,L,p(e.note),1)]))),128))])]),l(`section`,R,[c[0]||=l(`div`,null,[l(`h2`,{class:`text-[0.9375rem] font-medium`},`By week`),l(`p`,{class:`text-sm text-muted`},`One row per Monday-start week · merged pull requests only`)],-1),l(`div`,z,[l(`table`,B,[l(`thead`,null,[l(`tr`,null,[l(`th`,{class:m([J,`text-left`])},`Week`,2),l(`th`,{class:m([J,`text-right`])},`Merged`,2),l(`th`,{class:m([J,`text-right`])},`Agent-authored`,2),l(`th`,{class:m([J,`text-right`])},`Issue → merge`,2),l(`th`,{class:m([J,`text-right`])},`First-pass CI`,2),l(`th`,{class:m([J,`text-right`])},`Rounds / PR`,2),l(`th`,{class:m([J,`text-right`])},`Findings`,2),l(`th`,{class:m([J,`text-right`])},`No human edit`,2),l(`th`,{class:m([J,`text-right`])},`Agent run min`,2)])]),l(`tbody`,null,[(a(!0),u(n,null,d(X.value.weeks,e=>(a(),u(`tr`,{key:e.week,class:m($(e.week)?`text-dimmed`:``)},[l(`td`,{class:m(Y),title:`${e.week} → ${e.until}`},[i(p(f(y)(e.week))+` – `+p(f(y)(e.until))+` `,1),$(e.week)?(a(),u(`span`,H,`(incomplete)`)):o(``,!0)],8,V),l(`td`,{class:m([Y,`text-right font-medium`])},p(e.prsMerged),3),l(`td`,{class:m([Y,`text-right`])},p(e.agentAuthoredPrs),3),l(`td`,{class:m([Y,`text-right`])},p(f(_)(e.leadTimeHours.median)),3),l(`td`,{class:m([Y,`text-right`])},p(f(w)(e)),3),l(`td`,{class:m([Y,`text-right`])},p(f(v)(e.reviewRounds.perPr)),3),l(`td`,{class:m([Y,`text-right`])},p(f(C)(e)),3),l(`td`,{class:m([Y,`text-right`])},p(f(g)(e.findings.noHumanEditShare)),3),l(`td`,{class:m([Y,`text-right`])},p(e.agentRuns.minutes.toFixed(0)),3)],2))),128))])])]),_e.value&&X.value.completeFrom?(a(),u(`p`,U,` Incomplete weeks hold the newest pull requests the read reached — it is complete from `+p(f(b)(X.value.completeFrom))+` — so their numbers are a floor on the merges, not the week's. `,1)):o(``,!0)]),l(`section`,oe,[c[3]||=l(`div`,null,[l(`h2`,{class:`text-[0.9375rem] font-medium`},`By unit`),l(`p`,{class:`text-sm text-muted`},` One row per board issue the pull requests link · the issue's opening starts the clock `)],-1),X.value.units.length===0?(a(),u(`p`,W,`Nothing merged in range.`)):(a(),u(`div`,G,[l(`table`,K,[l(`thead`,null,[l(`tr`,null,[l(`th`,{class:m([J,`text-left`])},`Issue`,2),l(`th`,{class:m([J,`text-left`])},`Unit`,2),l(`th`,{class:m([J,`text-left`])},`PRs`,2),l(`th`,{class:m([J,`text-right`])},`Issue → merge`,2),l(`th`,{class:m([J,`text-right`])},`First-pass CI`,2),l(`th`,{class:m([J,`text-right`])},`Rounds`,2),l(`th`,{class:m([J,`text-right`])},`Findings`,2),l(`th`,{class:m([J,`text-right`])},`No human edit`,2)])]),l(`tbody`,null,[(a(!0),u(n,null,d(X.value.units,e=>(a(),u(`tr`,{key:e.issue??`none`},[l(`td`,{class:m([Y,`whitespace-nowrap`])},[e.issue===null?(a(),u(`span`,se,`—`)):(a(),u(`a`,{key:0,class:`text-primary hover:underline`,href:`https://github.com/${X.value.repo}/issues/${e.issue}`},`#`+p(e.issue),9,q))],2),l(`td`,{class:m([Y,`max-w-[28rem] truncate font-sans`]),title:e.title},p(e.title),11,ce),l(`td`,{class:m([Y,`whitespace-nowrap`])},[(a(!0),u(n,null,d(e.prs,(e,t)=>(a(),u(n,{key:e},[t>0?(a(),u(n,{key:0},[i(`, `)],64)):o(``,!0),l(`a`,{class:`text-primary hover:underline`,href:`https://github.com/${X.value.repo}/pull/${e}`},p(e),9,le)],64))),128))],2),l(`td`,{class:m([Y,`text-right`])},p(f(_)(e.leadTimeHours.median)),3),l(`td`,{class:m([Y,`text-right`])},p(f(w)(e)),3),l(`td`,{class:m([Y,`text-right`])},p(e.reviewRounds.verdicts),3),l(`td`,{class:m([Y,`text-right`])},p(f(C)(e)),3),l(`td`,{class:m([Y,`text-right`])},p(f(g)(e.findings.noHumanEditShare)),3)]))),128))])])])),l(`p`,ue,[c[1]||=i(` Machine-readable twin: `,-1),l(`code`,de,`GET /delivery/`+p(X.value.repo)+`.json`,1),c[2]||=i(` (same gate). `,-1)])]),l(`footer`,fe,[X.value.snapshotAt?(a(),u(`p`,pe,[i(` As of `+p(f(b)(X.value.snapshotAt))+`, `+p(f(ne)(X.value.snapshotAt,f(ye)))+` · `,1),l(`a`,{class:`text-primary hover:underline`,href:f(re)(f(be))},`read GitHub now`,8,me)])):o(``,!0),l(`details`,null,[c[13]||=l(`summary`,{class:`cursor-pointer text-muted`},`How these numbers are computed`,-1),l(`div`,he,[c[11]||=l(`div`,null,[l(`b`,null,`Snapshot.`),i(` GitHub's record of the merged pull requests (each one's timeline and its branch's workflow runs, the board issue its body links) is read on an interval and kept as a snapshot the page, its JSON twin and `),l(`code`,null,`delivery report`),i(` serve; `),l(`code`,null,`?fresh=1`),i(` reads GitHub now. The run history you may see joins on every load. `)],-1),c[12]||=l(`div`,null,[l(`b`,null,`Issue → merge`),i(` runs from the linked board issue's opening (a closing keyword or a `),l(`code`,null,`board item`),i(` reference in the body) to the merge; a pull request that links no issue counts from its own opening. `),l(`b`,null,`First-pass CI`),i(` is green when every pull-request-triggered workflow run (`),l(`code`,null,`pull_request`),i(`, `),l(`code`,null,`pull_request_target`),i(`) on the first head succeeded at its first attempt — a rerun or a red run fails it; a head with no such run is not counted. `),l(`b`,null,`Review rounds`),i(` are the review agent's verdicts; a `),l(`i`,null,`fix round`),i(` is a verdict that followed a push. `),l(`b`,null,`No human edit`),i(` is the share of the agent's findings on pull requests where every push after the first verdict was an agent's: a bot login, or a commit co-authored by an agent. `),l(`b`,null,`Agent run minutes`),i(` are the finished runs of this repository that named a pull request. `)],-1),l(`div`,null,[c[5]||=l(`b`,null,`Identities.`,-1),c[6]||=i(` Verdicts by `,-1),l(`code`,null,p(X.value.identities.reviewers.join(`, `)||`(none configured)`),1),c[7]||=i(`; agent logins end in `,-1),c[8]||=l(`code`,null,`[bot]`,-1),X.value.identities.agentLogins.length?(a(),u(n,{key:0},[c[4]||=i(`, plus `,-1),l(`code`,null,p(X.value.identities.agentLogins.join(`, `)),1)],64)):o(``,!0),c[9]||=i(`; agent co-authors named `,-1),l(`code`,null,p(X.value.identities.agentCoauthors.join(`, `)||`(none)`),1),c[10]||=i(`. `,-1)])])])])]),_:1},8,[`title`])):o(``,!0)}});export{X as default};
1
+ import{t as e}from"./AppShell-DZdz_sl7.js";import{Lr as t,Xt as n,cn as r,gn as i,ir as a,ln as o,on as s,r as c,sn as l,un as u,ur as d,vi as f,wi as p,xi as m,yn as h}from"./seed-DeKSHrt2.js";import{t as ee}from"./wallClock-61NpVkY6.js";function te(e,t){return e.truncated&&e.completeFrom!==void 0&&Date.parse(`${t}T00:00:00Z`)<Date.parse(e.completeFrom)}Object.freeze({reviewers:[],agentLogins:[],agentCoauthors:[]});function ne(e,t){let n=Math.max(0,Math.floor((t-Date.parse(e))/6e4));if(!Number.isFinite(n))return``;let r=(e,t)=>`${e} ${t}${e===1?``:`s`} ago`;if(n<1)return`just now`;if(n<90)return r(n,`minute`);let i=Math.round(n/60);return i<48?r(i,`hour`):r(Math.round(i/24),`day`)}Object.freeze({default:60,min:5,max:1440});var g=e=>e===null?`—`:`${Math.round(e*100)}%`;function _(e){return e===null?`—`:e<1?`${Math.round(e*60)} min`:e<48?`${e.toFixed(1)} h`:`${(e/24).toFixed(1)} d`}var v=(e,t=2)=>e===null?`—`:e.toFixed(t);function y(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()}`}function b(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${y(t.toISOString().slice(0,10))}, ${n(t.getUTCHours())}:${n(t.getUTCMinutes())} UTC`}function re(e){let t=new URLSearchParams(e);return t.set(`fresh`,`1`),`?${t.toString()}`}var x=e=>`the newest ${e.totals.prsMerged} pull requests`;function S(e){if(!e.truncated)return;let t=e.completeFrom===void 0?`the read stopped at its page cap before the range began`:`the read is complete from ${b(e.completeFrom)}; the weeks before that hold what it reached, not the week`;return`The tiles cover ${x(e)} only — ${t}.`}function ie(e){let t=e.totals;return[{label:`Merged`,value:String(t.prsMerged),note:e.truncated?`${x(e)} · ${t.agentAuthoredPrs} agent-authored`:`${t.agentAuthoredPrs} agent-authored · ${e.range.weeks} week${e.range.weeks===1?``:`s`}`},{label:`Issue → merge`,value:_(t.leadTimeHours.median),note:t.leadTimeHours.mean===null?`no merges in range`:`median · mean ${_(t.leadTimeHours.mean)}`},{label:`First-pass CI`,value:g(t.firstPassCi.share),note:t.firstPassCi.known===0?`no CI facts in range`:`${t.firstPassCi.passed} of ${t.firstPassCi.known} green at the first attempt`},{label:`Review rounds`,value:v(t.reviewRounds.perPr),note:`per PR · ${t.reviewRounds.verdicts} verdicts, ${t.reviewRounds.fixRounds} fix round${t.reviewRounds.fixRounds===1?``:`s`}`},{label:`No human edit`,value:g(t.findings.noHumanEditShare),note:t.findings.total===0?`no findings in range`:`of ${t.findings.total} findings resolved by an agent alone`},{label:`Blocking caught`,value:String(t.findings.blocking),note:`${t.findings.major} major · ${t.findings.minor} minor · ${t.findings.nit} nit`}]}function C(e){return e.findings.total===0?`0`:`${e.findings.total}${e.findings.blocking>0?` (${e.findings.blocking} blocking)`:``}`}function w(e){return e.firstPassCi.known===0?`—`:`${e.firstPassCi.passed}/${e.firstPassCi.known}`}var ae={class:`text-xs text-muted`},T={key:1,class:`text-highlighted`},E=[`href`],D={class:`mb-4 flex flex-wrap items-center gap-x-4 gap-y-2`},O={key:0,class:`flex items-center gap-1`,"aria-label":`Repositories`},k={key:0,class:`rounded-md bg-accented px-2.5 py-1 text-xs font-medium text-highlighted`,"aria-current":`page`},A=[`href`],j={class:`font-mono text-sm tabular-nums text-muted`},M={class:`mb-5 grid gap-3`},N={key:0,class:`text-sm text-muted`},P={class:`grid grid-cols-[repeat(auto-fit,minmax(190px,1fr))] gap-3`},F={class:`font-mono text-[0.6875rem] font-medium uppercase tracking-widest text-dimmed`},I={class:`font-mono text-2xl font-medium tabular-nums`},L={class:`text-xs text-muted`},R={class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},z={class:`overflow-x-auto`},B={class:`weeks w-full min-w-[52rem] border-collapse whitespace-nowrap font-mono text-[0.8125rem] tabular-nums`},V=[`title`],H={key:0,class:`ml-1 text-xs`},U={key:0,class:`text-xs text-muted`},oe={class:`mb-5 grid gap-3 rounded-lg border border-default bg-elevated px-5 py-4`},W={key:0,class:`text-sm text-muted`},G={key:1,class:`overflow-x-auto`},K={class:`units w-full min-w-[52rem] border-collapse font-mono text-[0.8125rem] tabular-nums`},q=[`href`],se={key:1,class:`text-dimmed`},ce=[`title`],le=[`href`],ue={class:`text-xs text-muted`},de={class:`rounded bg-accented px-1 py-0.5`},fe={class:`border-t border-default pt-3.5 text-xs text-dimmed`},pe={key:0,class:`mb-2 font-mono tabular-nums text-muted`},me=[`href`],he={class:`mt-2 grid gap-1.5`},J=`border-b border-muted bg-(--ui-bg-muted) px-2.5 py-1.5 text-xs font-medium text-muted whitespace-nowrap`,Y=`border-b border-muted px-2.5 py-1.5`,X=h({__name:`DeliveryPage`,setup(h){let x=c(`delivery`),X=s(()=>x?.report??null),Z=s(()=>x?.repos??[]),ge=s(()=>X.value?ie(X.value):[]),Q=s(()=>X.value?S(X.value):void 0),$=e=>X.value?te(X.value,e):!1,_e=s(()=>X.value?.weeks.some(e=>$(e.week))??!1),ve=[1,2,4,8,13],ye=ee(void 0,6e4),be=typeof window>`u`?``:window.location.search;return(s,c)=>X.value?(a(),r(e,{key:0,title:`${X.value.repo} delivery`,nav:`delivery`},{actions:t(()=>[l(`span`,ae,[(a(),u(n,null,d(ve,(e,t)=>(a(),u(n,{key:e},[t>0?(a(),u(n,{key:0},[i(` · `)],64)):o(``,!0),e===X.value.range.weeks?(a(),u(`b`,T,p(e)+`w`,1)):(a(),u(`a`,{key:2,class:`text-primary hover:underline`,href:`/delivery/${X.value.repo}?weeks=${e}`},p(e)+`w`,9,E))],64))),64))])]),default:t(()=>[l(`div`,D,[Z.value.length>1?(a(),u(`nav`,O,[(a(!0),u(n,null,d(Z.value,e=>(a(),u(n,{key:e},[e===X.value.repo?(a(),u(`span`,k,p(e),1)):(a(),u(`a`,{key:1,class:`rounded-md px-2.5 py-1 text-xs text-muted no-underline hover:bg-elevated hover:text-highlighted`,href:`/delivery/${e}`},p(e),9,A))],64))),128))])):o(``,!0),l(`p`,j,p(f(y)(X.value.range.since))+` → `+p(f(y)(X.value.range.until))+` · `+p(X.value.range.weeks)+`w · weeks start Monday, UTC `,1)]),l(`section`,M,[Q.value?(a(),u(`p`,N,p(Q.value),1)):o(``,!0),l(`div`,P,[(a(!0),u(n,null,d(ge.value,e=>(a(),u(`div`,{key:e.label,class:`grid gap-0.5 rounded-lg border border-default bg-elevated px-4 py-3.5`},[l(`span`,F,p(e.label),1),l(`span`,I,p(e.value),1),l(`span`,L,p(e.note),1)]))),128))])]),l(`section`,R,[c[0]||=l(`div`,null,[l(`h2`,{class:`text-[0.9375rem] font-medium`},`By week`),l(`p`,{class:`text-sm text-muted`},`One row per Monday-start week · merged pull requests only`)],-1),l(`div`,z,[l(`table`,B,[l(`thead`,null,[l(`tr`,null,[l(`th`,{class:m([J,`text-left`])},`Week`,2),l(`th`,{class:m([J,`text-right`])},`Merged`,2),l(`th`,{class:m([J,`text-right`])},`Agent-authored`,2),l(`th`,{class:m([J,`text-right`])},`Issue → merge`,2),l(`th`,{class:m([J,`text-right`])},`First-pass CI`,2),l(`th`,{class:m([J,`text-right`])},`Rounds / PR`,2),l(`th`,{class:m([J,`text-right`])},`Findings`,2),l(`th`,{class:m([J,`text-right`])},`No human edit`,2),l(`th`,{class:m([J,`text-right`])},`Agent run min`,2)])]),l(`tbody`,null,[(a(!0),u(n,null,d(X.value.weeks,e=>(a(),u(`tr`,{key:e.week,class:m($(e.week)?`text-dimmed`:``)},[l(`td`,{class:m(Y),title:`${e.week} → ${e.until}`},[i(p(f(y)(e.week))+` – `+p(f(y)(e.until))+` `,1),$(e.week)?(a(),u(`span`,H,`(incomplete)`)):o(``,!0)],8,V),l(`td`,{class:m([Y,`text-right font-medium`])},p(e.prsMerged),3),l(`td`,{class:m([Y,`text-right`])},p(e.agentAuthoredPrs),3),l(`td`,{class:m([Y,`text-right`])},p(f(_)(e.leadTimeHours.median)),3),l(`td`,{class:m([Y,`text-right`])},p(f(w)(e)),3),l(`td`,{class:m([Y,`text-right`])},p(f(v)(e.reviewRounds.perPr)),3),l(`td`,{class:m([Y,`text-right`])},p(f(C)(e)),3),l(`td`,{class:m([Y,`text-right`])},p(f(g)(e.findings.noHumanEditShare)),3),l(`td`,{class:m([Y,`text-right`])},p(e.agentRuns.minutes.toFixed(0)),3)],2))),128))])])]),_e.value&&X.value.completeFrom?(a(),u(`p`,U,` Incomplete weeks hold the newest pull requests the read reached — it is complete from `+p(f(b)(X.value.completeFrom))+` — so their numbers are a floor on the merges, not the week's. `,1)):o(``,!0)]),l(`section`,oe,[c[3]||=l(`div`,null,[l(`h2`,{class:`text-[0.9375rem] font-medium`},`By unit`),l(`p`,{class:`text-sm text-muted`},` One row per board issue the pull requests link · the issue's opening starts the clock `)],-1),X.value.units.length===0?(a(),u(`p`,W,`Nothing merged in range.`)):(a(),u(`div`,G,[l(`table`,K,[l(`thead`,null,[l(`tr`,null,[l(`th`,{class:m([J,`text-left`])},`Issue`,2),l(`th`,{class:m([J,`text-left`])},`Unit`,2),l(`th`,{class:m([J,`text-left`])},`PRs`,2),l(`th`,{class:m([J,`text-right`])},`Issue → merge`,2),l(`th`,{class:m([J,`text-right`])},`First-pass CI`,2),l(`th`,{class:m([J,`text-right`])},`Rounds`,2),l(`th`,{class:m([J,`text-right`])},`Findings`,2),l(`th`,{class:m([J,`text-right`])},`No human edit`,2)])]),l(`tbody`,null,[(a(!0),u(n,null,d(X.value.units,e=>(a(),u(`tr`,{key:e.issue??`none`},[l(`td`,{class:m([Y,`whitespace-nowrap`])},[e.issue===null?(a(),u(`span`,se,`—`)):(a(),u(`a`,{key:0,class:`text-primary hover:underline`,href:`https://github.com/${X.value.repo}/issues/${e.issue}`},`#`+p(e.issue),9,q))],2),l(`td`,{class:m([Y,`max-w-[28rem] truncate font-sans`]),title:e.title},p(e.title),11,ce),l(`td`,{class:m([Y,`whitespace-nowrap`])},[(a(!0),u(n,null,d(e.prs,(e,t)=>(a(),u(n,{key:e},[t>0?(a(),u(n,{key:0},[i(`, `)],64)):o(``,!0),l(`a`,{class:`text-primary hover:underline`,href:`https://github.com/${X.value.repo}/pull/${e}`},p(e),9,le)],64))),128))],2),l(`td`,{class:m([Y,`text-right`])},p(f(_)(e.leadTimeHours.median)),3),l(`td`,{class:m([Y,`text-right`])},p(f(w)(e)),3),l(`td`,{class:m([Y,`text-right`])},p(e.reviewRounds.verdicts),3),l(`td`,{class:m([Y,`text-right`])},p(f(C)(e)),3),l(`td`,{class:m([Y,`text-right`])},p(f(g)(e.findings.noHumanEditShare)),3)]))),128))])])])),l(`p`,ue,[c[1]||=i(` Machine-readable twin: `,-1),l(`code`,de,`GET /delivery/`+p(X.value.repo)+`.json`,1),c[2]||=i(` (same gate). `,-1)])]),l(`footer`,fe,[X.value.snapshotAt?(a(),u(`p`,pe,[i(` As of `+p(f(b)(X.value.snapshotAt))+`, `+p(f(ne)(X.value.snapshotAt,f(ye)))+` · `,1),l(`a`,{class:`text-primary hover:underline`,href:f(re)(f(be))},`read GitHub now`,8,me)])):o(``,!0),l(`details`,null,[c[13]||=l(`summary`,{class:`cursor-pointer text-muted`},`How these numbers are computed`,-1),l(`div`,he,[c[11]||=l(`div`,null,[l(`b`,null,`Snapshot.`),i(` GitHub's record of the merged pull requests (each one's timeline and its branch's workflow runs, the board issue its body links) is read on an interval and kept as a snapshot the page, its JSON twin and `),l(`code`,null,`delivery report`),i(` serve; `),l(`code`,null,`?fresh=1`),i(` reads GitHub now. The run history you may see joins on every load. `)],-1),c[12]||=l(`div`,null,[l(`b`,null,`Issue → merge`),i(` runs from the linked board issue's opening (a closing keyword or a `),l(`code`,null,`board item`),i(` reference in the body) to the merge; a pull request that links no issue counts from its own opening. `),l(`b`,null,`First-pass CI`),i(` is green when every pull-request-triggered workflow run (`),l(`code`,null,`pull_request`),i(`, `),l(`code`,null,`pull_request_target`),i(`) on the first head succeeded at its first attempt — a rerun or a red run fails it; a head with no such run is not counted. `),l(`b`,null,`Review rounds`),i(` are the review agent's verdicts; a `),l(`i`,null,`fix round`),i(` is a verdict that followed a push. `),l(`b`,null,`No human edit`),i(` is the share of the agent's findings on pull requests where every push after the first verdict was an agent's: a bot login, or a commit co-authored by an agent. `),l(`b`,null,`Agent run minutes`),i(` are the finished runs of this repository that named a pull request. `)],-1),l(`div`,null,[c[5]||=l(`b`,null,`Identities.`,-1),c[6]||=i(` Verdicts by `,-1),l(`code`,null,p(X.value.identities.reviewers.join(`, `)||`(none configured)`),1),c[7]||=i(`; agent logins end in `,-1),c[8]||=l(`code`,null,`[bot]`,-1),X.value.identities.agentLogins.length?(a(),u(n,{key:0},[c[4]||=i(`, plus `,-1),l(`code`,null,p(X.value.identities.agentLogins.join(`, `)),1)],64)):o(``,!0),c[9]||=i(`; agent co-authors named `,-1),l(`code`,null,p(X.value.identities.agentCoauthors.join(`, `)||`(none)`),1),c[10]||=i(`. `,-1)])])])])]),_:1},8,[`title`])):o(``,!0)}});export{X as default};
@@ -1 +1 @@
1
- import{t as e,w as t}from"./AppShell-lYVcj-k7.js";import{Lr as n,_n as r,a as i,cn as a,i as o,ir as s,r as c,sn as l,vi as u,wi as d,yn as f}from"./seed-DeKSHrt2.js";import{t as p}from"./RunsTabs-DEICQ4FY.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=f({__name:`NotFoundPage`,setup(t){let f=c(`runNotFound`),g=o(f?.retentionDays??null);return(t,o)=>{let c=i;return s(),a(e,{title:`Run not found`,nav:`runs`},{default:n(()=>[r(p,{current:`runs`}),l(`section`,m,[o[0]||=l(`p`,{class:`code mb-3 font-mono text-4xl font-medium tracking-wide text-dimmed`},`404`,-1),o[1]||=l(`h2`,{class:`mb-3 text-lg font-medium tracking-tight text-highlighted`},`That run isn't here.`,-1),o[2]||=l(`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),l(`p`,h,d(u(g)),1),r(c,{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};
1
+ import{t as e,w as t}from"./AppShell-DZdz_sl7.js";import{Lr as n,_n as r,a as i,cn as a,i as o,ir as s,r as c,sn as l,vi as u,wi as d,yn as f}from"./seed-DeKSHrt2.js";import{t as p}from"./RunsTabs-CyCdOhJ2.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=f({__name:`NotFoundPage`,setup(t){let f=c(`runNotFound`),g=o(f?.retentionDays??null);return(t,o)=>{let c=i;return s(),a(e,{title:`Run not found`,nav:`runs`},{default:n(()=>[r(p,{current:`runs`}),l(`section`,m,[o[0]||=l(`p`,{class:`code mb-3 font-mono text-4xl font-medium tracking-wide text-dimmed`},`404`,-1),o[1]||=l(`h2`,{class:`mb-3 text-lg font-medium tracking-tight text-highlighted`},`That run isn't here.`,-1),o[2]||=l(`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),l(`p`,h,d(u(g)),1),r(c,{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-DZdz_sl7.js";import{Lr as t,Xt as n,_n as r,cn as i,gn as a,ir as o,ln as ee,on as s,r as c,sn as l,un as u,ur as d,vi as f,wi as p,yn as te}from"./seed-DeKSHrt2.js";import{t as m}from"./StatusDot-D-BPSPpw.js";import{_ as h,a as g,c as ne,g as _,h as re,i as ie,l as ae,o as oe,p as v,s as se,t as ce,u as le}from"./residentsModel-VSJEepL1.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`},B={key:0},Xe={key:1,class:`text-dimmed`},Ze={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=te({__name:`ResidentDetailPage`,setup(te){let V=c(`resident`),H=s(()=>V?.record??{}),U=s(()=>se(H.value)),W=s(()=>ne(H.value)||(V?.slug??``)),G=s(()=>v(U.value.sha)),K=s(()=>ce.test(W.value)?`https://github.com/${W.value}`:void 0),q=s(()=>K.value&&/^[0-9a-f]{7,40}$/.test(G.value)?`${K.value}/commit/${G.value}`:void 0),J=s(()=>{let e=U.value.snapshot;return e&&typeof e==`object`?g(e):void 0}),zt=s(()=>g(U.value.schedules)),Y=s(()=>{let e=g(H.value.commands),t=g(H.value.effects);return Object.keys(e).sort().map(n=>({name:n,command:v(e[n]),effect:v(t[n])||`readonly`}))}),X=s(()=>le(H.value).map(e=>({...e,threadKey:e.threadKey||`?`,ref:e.ref||`?`,sha:e.sha?e.sha.slice(0,8):``,commitHref:K.value&&/^[0-9a-f]{7,40}$/.test(e.sha)?`${K.value}/commit/${e.sha}`:void 0}))),Z=s(()=>X.value.filter(e=>!e.evicted).length),Q=s(()=>{let e=U.value.lastRestore;return e?JSON.stringify(e):``}),$=s(()=>oe(H.value)),Bt=s(()=>typeof H.value.diskBudgetMb==`number`?H.value.diskBudgetMb:void 0),Vt=s(()=>{let e=$.value;if(!e)return[];let t=ie(e,Bt.value),n=n=>{let r=t.room[n];return r===null?h(e.parts,n)===null?`? (checkout not measured)`:`?`:`${r} more (${_(h(e.parts,n))} each)`};return[[`used / total`,re(e)],[`free`,`${_(t.freeKiB)}${t.capped?` under the ${_(t.capacityKiB)} diskBudgetMb cap`:``}`],[`reserve`,`${_(t.reserve.totalKiB)} (snapshot staging ${_(t.reserve.stagingKiB)} + floor ${_(t.reserve.floorKiB)})`],[`headroom`,`${_(t.headroomKiB)} — room for ${n(`hardlink`)} hardlinked trees, ${n(`reconcile`)} lockfile-diverged (reconciling)`],[`measured`,e.at||`—`]]}),Ht=s(()=>{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(s,c)=>(o(),i(e,{title:W.value||`Resident`,nav:`residents`},{leading:t(()=>[...c[0]||=[l(`a`,{class:`back text-sm text-muted no-underline hover:text-primary`,href:`/residents`},`← All residents`,-1)]]),default:t(()=>[l(`section`,ue,[c[8]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Lifecycle`,-1),l(`table`,de,[l(`tbody`,null,[l(`tr`,fe,[c[1]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`state`,-1),l(`td`,pe,[r(m,{tone:f(ae)(U.value.state),label:U.value.state},null,8,[`tone`,`label`]),l(`span`,me,p(U.value.state),1)])]),l(`tr`,y,[c[2]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`reason`,-1),l(`td`,b,[U.value.reason?(o(),u(`span`,x,p(U.value.reason),1)):(o(),u(`span`,S,`—`))])]),l(`tr`,C,[c[3]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last refresh error`,-1),l(`td`,w,[f(v)(U.value.lastRefreshError)?(o(),u(`span`,T,p(f(v)(U.value.lastRefreshError)),1)):(o(),u(`span`,E,`—`))])]),l(`tr`,D,[c[4]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last restore`,-1),l(`td`,O,[Q.value?(o(),u(`span`,k,p(Q.value),1)):(o(),u(`span`,A,`—`))])]),l(`tr`,j,[c[5]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`state updated`,-1),l(`td`,M,[f(v)(U.value.updatedAt)?(o(),u(`span`,N,p(f(v)(U.value.updatedAt)),1)):(o(),u(`span`,P,`—`))])]),l(`tr`,F,[c[7]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`idle since`,-1),l(`td`,I,[f(v)(U.value.idleSince)?(o(),u(n,{key:0},[a(p(f(v)(U.value.idleSince))+` `,1),c[6]||=l(`span`,{class:`text-xs text-muted`},`(refresh parked; container may sleep)`,-1)],64)):(o(),u(`span`,L,`awake`))])])])])]),l(`section`,R,[c[15]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Pinned facts`,-1),l(`table`,z,[l(`tbody`,null,[l(`tr`,he,[c[9]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`repository`,-1),l(`td`,ge,[K.value?(o(),u(`a`,{key:0,class:`text-primary`,href:K.value},p(K.value),9,_e)):(o(),u(`span`,ve,p(f(v)(H.value.resource)||`—`),1))])]),l(`tr`,ye,[c[10]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`default ref`,-1),l(`td`,be,p(f(v)(U.value.defaultRef)||f(v)(H.value.defaultRef)||`—`),1)]),l(`tr`,xe,[c[11]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`pinned sha`,-1),l(`td`,Se,[q.value?(o(),u(`a`,{key:0,class:`text-primary`,href:q.value},p(G.value),9,Ce)):G.value?(o(),u(`span`,we,p(G.value),1)):(o(),u(`span`,Te,`—`))])]),l(`tr`,Ee,[c[12]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`lockfile hash`,-1),l(`td`,De,[f(v)(U.value.lockfileHash)?(o(),u(`span`,Oe,p(f(v)(U.value.lockfileHash)),1)):(o(),u(`span`,ke,`—`))])]),l(`tr`,Ae,[c[13]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`provisioned`,-1),l(`td`,je,[f(v)(U.value.provisionedAt)?(o(),u(`span`,Me,p(f(v)(U.value.provisionedAt)),1)):(o(),u(`span`,Ne,`—`))])]),l(`tr`,Pe,[c[14]||=l(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last refresh`,-1),l(`td`,Fe,[f(v)(U.value.lastRefreshAt)?(o(),u(`span`,Ie,p(f(v)(U.value.lastRefreshAt)),1)):(o(),u(`span`,Le,`—`))])])])])]),l(`section`,Re,[c[17]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Disk`,-1),$.value?(o(),u(n,{key:0},[l(`table`,ze,[l(`tbody`,null,[(o(!0),u(n,null,d(Vt.value,([e,t])=>(o(),u(`tr`,{key:e,class:`border-t border-muted`},[l(`td`,Be,p(e),1),l(`td`,Ve,p(t),1)]))),128))])]),c[16]||=l(`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),l(`table`,He,[l(`tbody`,null,[(o(!0),u(n,null,d(Ht.value,([e,t])=>(o(),u(`tr`,{key:e,class:`border-t border-muted`},[l(`td`,Ue,p(e),1),l(`td`,We,p(t),1)]))),128))])])],64)):(o(),u(`p`,Ge,` not measured yet — the first refresh cycle or attach of this container measures it `))]),l(`section`,Ke,[c[18]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Snapshot stamp`,-1),J.value?(o(),u(`table`,qe,[l(`tbody`,null,[(o(),u(n,null,d([`ref`,`sha`,`lockfileHash`,`createdAt`,`mirrorBackupId`,`checkoutBackupId`],e=>l(`tr`,{key:e,class:`border-t border-muted`},[l(`td`,Je,p(e),1),l(`td`,Ye,[f(v)(J.value[e])?(o(),u(`span`,B,p(f(v)(J.value[e])),1)):(o(),u(`span`,Xe,`—`))])])),64))])])):(o(),u(`p`,Ze,`no snapshot recorded`))]),l(`section`,Qe,[c[22]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Thread worktrees`,-1),X.value.length>0?(o(),u(n,{key:0},[l(`p`,$e,p(Z.value)+` live · `+p(X.value.length-Z.value)+` evicted`,1),l(`div`,et,[l(`table`,tt,[l(`tbody`,null,[c[21]||=l(`tr`,{class:`text-xs text-muted`},[l(`td`,{class:`px-2 py-1`},`thread`),l(`td`,{class:`px-2 py-1`},`ref · sha`),l(`td`,{class:`px-2 py-1`},`user · deps`),l(`td`,{class:`px-2 py-1`},`bound · last attach`)],-1),(o(!0),u(n,null,d(X.value,e=>(o(),u(`tr`,{key:e.threadKey,class:`border-t border-muted`},[l(`td`,nt,[e.evicted?(o(),u(`span`,rt,[a(`evicted `+p(e.evictedAt||`—`),1),e.evictedWhy?(o(),u(n,{key:0},[a(` · `+p(e.evictedWhy),1)],64)):ee(``,!0)])):(o(),i(m,{key:1,tone:`green`,label:`live`,tip:`live`})),a(` `+p(e.threadKey),1)]),l(`td`,it,[a(p(e.ref)+` · `,1),e.commitHref?(o(),u(`a`,{key:0,class:`text-primary`,href:e.commitHref},p(e.sha),9,at)):e.sha?(o(),u(`span`,ot,p(e.sha),1)):(o(),u(`span`,st,`—`))]),l(`td`,ct,[e.user?(o(),u(`span`,lt,p(e.user),1)):(o(),u(`span`,ut,`—`)),c[19]||=a(` · `,-1),e.deps?(o(),u(`span`,dt,p(e.deps),1)):(o(),u(`span`,ft,`—`))]),l(`td`,pt,[e.boundAt?(o(),u(`span`,mt,p(e.boundAt),1)):(o(),u(`span`,ht,`—`)),c[20]||=a(` · `,-1),e.lastAttachAt?(o(),u(`span`,gt,p(e.lastAttachAt),1)):(o(),u(`span`,_t,`—`))])]))),128))])])])],64)):(o(),u(`p`,vt,`no thread worktrees`))]),l(`section`,yt,[c[23]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Pending schedules`,-1),l(`table`,bt,[l(`tbody`,null,[(o(),u(n,null,d([[`refresh`,`refresh`],[`provision run`,`provisionRun`],[`provision deadline`,`provisionDeadline`]],([e,t])=>l(`tr`,{key:t,class:`border-t border-muted`},[l(`td`,xt,p(e),1),l(`td`,St,p(f(v)(zt.value[t]??0)||`0`),1)])),64))])])]),l(`section`,Ct,[c[25]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Command table`,-1),Y.value.length>0?(o(),u(`table`,wt,[l(`tbody`,null,[(o(!0),u(n,null,d(Y.value,e=>(o(),u(`tr`,{key:e.name,class:`border-t border-muted`},[l(`td`,Tt,p(e.name),1),l(`td`,Et,[l(`code`,null,p(e.command),1),c[24]||=a(),l(`span`,Dt,p(e.effect),1)])]))),128))])])):(o(),u(`p`,Ot,`no command table`))]),l(`section`,kt,[c[26]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Registry settings`,-1),l(`table`,At,[l(`tbody`,null,[(o(!0),u(n,null,d([[`onboarded`,f(v)(H.value.onboardedAt)],[`record updated`,f(v)(H.value.updatedAt)],[`provisioning timeout (ms)`,f(v)(H.value.provisioningTimeoutMs)],[`disk budget (MB)`,f(v)(H.value.diskBudgetMb)],[`worktree TTL (days)`,f(v)(H.value.worktreeTtlDays??7)]],([e,t])=>(o(),u(`tr`,{key:e,class:`border-t border-muted`},[l(`td`,jt,p(e),1),l(`td`,Mt,[t?(o(),u(`span`,Nt,p(t),1)):(o(),u(`span`,Pt,`—`))])]))),128))])])]),l(`p`,Ft,[c[27]||=a(` Manage from chat: `,-1),l(`code`,It,`repo rebuild `+p(W.value),1),c[28]||=a(` · `,-1),l(`code`,Lt,`repo reconfigure `+p(W.value)+` …`,1),c[29]||=a(` · `,-1),l(`code`,Rt,`repo offboard `+p(W.value)+` --dry-run`,1)])]),_:1},8,[`title`]))}});export{V as default};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./AppShell-DZdz_sl7.js";import{Lr as n,Mr as r,Qn as i,Wt as ee,Xt as a,_n as o,ci as s,cn as c,gn as l,ir as u,ln as d,nr as f,oi as p,on as m,r as h,sn as g,un as _,ur as v,vi as y,wi as b,xi as x,yn as S}from"./seed-DeKSHrt2.js";import{t as C}from"./Tooltip-DPDx5tXT.js";import{t as w}from"./wallClock-61NpVkY6.js";import{t as T}from"./StatusDot-D-BPSPpw.js";import{c as E,d as D,f as O,g as k,h as A,i as j,l as M,m as N,n as P,o as F,p as I,r as L,s as R,t as z,u as te}from"./residentsModel-VSJEepL1.js";import{i as ne,r as B}from"./localIso-CNA-bhS-.js";import{C as re,a as ie,b as V,c as ae,g as H,h as oe,i as se,l as ce,m as le,t as ue}from"./indexRow-BjXBzI5Z.js";import{i as U,t as W}from"./favicon-CSt-qDvc.js";var de=[`data-slug`,`data-running`],fe=[`open`],pe={class:`row flex cursor-pointer list-none flex-wrap items-center gap-2.5 rounded-md px-2 py-1.5 hover:bg-elevated [&::-webkit-details-marker]:hidden`},me={class:`font-mono font-medium text-primary`},he={class:`font-medium`},ge={key:0,class:`running shrink-0 rounded border border-ok/25 bg-ok/8 px-1.5 font-mono text-[0.7rem] font-medium tabular-nums text-ok`},_e=[`title`],ve=[`title`],ye=[`href`],be={key:2,class:`basis-full pl-5 text-xs text-warn`},xe={class:`fold pb-3 pl-7 pr-2 pt-1`},Se={class:`mb-1 font-mono text-[0.7rem] uppercase tracking-wider text-muted`},Ce={class:`tabular-nums`},we={key:0,class:`m-0 list-none p-0`},Te=[`data-run-id`],Ee={class:`text min-w-0 flex-1 truncate text-toned`},De={class:`elapsed shrink-0 font-mono text-xs tabular-nums text-ok`,title:`running for`},Oe=[`href`,`aria-label`],ke={class:`tree basis-full pl-5 font-mono text-xs text-muted`},Ae=[`href`],je={key:1},Me={key:3},Ne={key:4,class:`text-dimmed`},Pe={key:1,class:`text-dimmed`},Fe=[`href`],Ie={key:4},Le={key:1,class:`text-xs text-dimmed`},Re={class:`mb-1 mt-2 font-mono text-[0.7rem] uppercase tracking-wider text-muted`},ze={class:`tabular-nums`},Be={class:`m-0 list-none p-0`},Ve=[`data-thread`],He=[`href`],Ue={key:1},We={key:3},Ge={key:4,class:`text-dimmed`},Ke={class:`disk mt-2 font-mono text-xs text-muted`},G={key:1,class:`text-dimmed`},K=S({__name:`ResidentRow`,props:{record:{},runs:{},now:{},open:{type:Boolean}},setup(e){let t=e,n=s(t.open===!0);r(()=>t.open,e=>{e&&(n.value=!0)});function i(e){n.value=e.target.open}let c=m(()=>E(t.record)),f=m(()=>c.value||I(t.record.resource)||`?`),p=m(()=>R(t.record)),h=m(()=>M(p.value.state)),S=m(()=>z.test(c.value)?`/residents/${c.value}`:null),C=m(()=>z.test(c.value)?`https://github.com/${c.value}`:void 0),w=e=>C.value&&/^[0-9a-f]{7,40}$/.test(e)?`${C.value}/commit/${e}`:void 0,D=m(()=>I(t.record.defaultRef)||`?`),O=m(()=>I(p.value.sha).slice(0,8)),P=m(()=>I(p.value.lastRefreshAt)),U=m(()=>{let e=P.value?Date.parse(P.value):NaN;return Number.isFinite(e)?B(e,t.now):P.value}),W=e=>{let n=e?Date.parse(e):NaN;return Number.isFinite(n)?B(n,t.now):e||`—`},K=m(()=>F(t.record)),q=m(()=>K.value?A(K.value):``),J=m(()=>{let e=K.value;if(!e)return null;let n=typeof t.record.diskBudgetMb==`number`?t.record.diskBudgetMb:void 0;return j(e,n)}),Y=m(()=>te(t.record)),X=m(()=>t.runs.map(e=>{let n=ne(e.label||H(e.id)),r=L(Y.value,e.threadKey),i=re(e);return{run:e,agent:n.agent,text:n.snippet??n.scope,elapsed:ce(e,t.now),since:B(e.startedAt,t.now),who:i.identity,surface:se[i.kind]??i.kind,href:le(e),threadUrl:oe(e),binding:r,treeKiB:r?N(K.value,r.threadKey):null}})),Z=m(()=>{let e=new Set(t.runs.map(e=>e.threadKey));return Y.value.filter(t=>!t.evicted&&!e.has(t.threadKey))}),Q=m(()=>{let e=J.value;return e?e.room.hardlink===null?`room not projected (checkout not measured)`:`room for ${e.room.hardlink} more ${e.room.hardlink===1?`tree`:`trees`}`:``});return(t,r)=>(u(),_(`li`,{class:`resident border-b border-muted first:border-t`,"data-slug":c.value,"data-running":e.runs.length},[g(`details`,{class:`group/fold`,open:n.value,onToggle:i},[g(`summary`,pe,[r[2]||=g(`span`,{class:`chev select-none text-xs text-dimmed transition-transform group-open/fold:rotate-90 motion-reduce:transition-none`,"aria-hidden":`true`},`❯`,-1),o(T,{tone:h.value,label:p.value.state,tip:p.value.state},null,8,[`tone`,`label`,`tip`]),g(`span`,me,b(f.value),1),g(`span`,he,b(p.value.state),1),e.runs.length>0?(u(),_(`span`,ge,b(e.runs.length)+` running`,1)):d(``,!0),g(`span`,{class:`facts font-mono text-xs text-muted max-sm:basis-full max-sm:pl-5`,title:P.value||void 0},[l(` ref `+b(D.value),1),O.value?(u(),_(a,{key:0},[l(` · sha `+b(O.value),1)],64)):d(``,!0),U.value?(u(),_(a,{key:1},[l(` · refreshed `+b(U.value),1)],64)):d(``,!0),q.value?(u(),_(a,{key:2},[r[1]||=l(` · `,-1),g(`span`,{title:K.value?.at?`measured ${K.value.at}`:void 0},`disk `+b(q.value),9,ve)],64)):d(``,!0)],8,_e),S.value?(u(),_(`a`,{key:1,class:`detail ml-auto shrink-0 font-mono text-xs text-primary no-underline hover:underline`,href:S.value,onClick:r[0]||=ee(()=>{},[`stop`])},`detail ↗`,8,ye)):d(``,!0),p.value.reason?(u(),_(`span`,be,b(p.value.reason),1)):d(``,!0)]),g(`div`,xe,[g(`p`,Se,[r[3]||=l(` running `,-1),g(`span`,Ce,b(e.runs.length),1)]),X.value.length>0?(u(),_(`ul`,we,[(u(!0),_(a,null,v(X.value,e=>(u(),_(`li`,{key:e.run.id,class:`run flex flex-wrap items-center gap-x-2.5 gap-y-1 py-1`,"data-run-id":e.run.id},[o(T,{tone:`green`,label:y(V)(e.run),tip:y(ae)(e.run),pulse:``},null,8,[`label`,`tip`]),e.agent?(u(),_(`span`,{key:0,class:x([`agent shrink-0 rounded border px-1.5 font-mono text-[0.68rem] font-medium uppercase tracking-wider`,y(ue)[y(ie)(e.agent)]])},b(e.agent),3)):d(``,!0),g(`span`,Ee,b(e.text),1),g(`span`,De,b(e.elapsed),1),g(`a`,{class:`open shrink-0 font-mono text-xs text-primary no-underline hover:underline`,href:e.href,"aria-label":`open run ${e.run.label||y(H)(e.run.id)}`},`open ↗`,8,Oe),g(`span`,ke,[e.binding?(u(),_(a,{key:0},[l(` worktree `+b(e.binding.ref||`?`)+` `,1),e.binding.sha?(u(),_(a,{key:0},[r[4]||=l(` @ `,-1),w(e.binding.sha)?(u(),_(`a`,{key:0,class:`text-primary`,href:w(e.binding.sha)},b(e.binding.sha.slice(0,8)),9,Ae)):(u(),_(`span`,je,b(e.binding.sha.slice(0,8)),1))],64)):d(``,!0),e.binding.user?(u(),_(a,{key:1},[l(` · `+b(e.binding.user),1)],64)):d(``,!0),e.binding.deps?(u(),_(a,{key:2},[l(` · deps `+b(e.binding.deps),1)],64)):d(``,!0),r[5]||=l(` · `,-1),e.treeKiB===null?(u(),_(`span`,Ne,`size not measured yet`)):(u(),_(`span`,Me,b(y(k)(e.treeKiB))+` on disk`,1))],64)):(u(),_(`span`,Pe,`no worktree bound yet`)),l(` · started `+b(e.since),1),e.who?(u(),_(a,{key:2},[l(` by `+b(e.who),1)],64)):d(``,!0),r[6]||=l(` · `,-1),e.threadUrl?(u(),_(`a`,{key:3,class:`text-primary no-underline hover:underline`,href:e.threadUrl,target:`_blank`,rel:`noopener noreferrer`},b(e.surface)+` thread ↗`,9,Fe)):(u(),_(`span`,Ie,`via `+b(e.surface),1))])],8,Te))),128))])):(u(),_(`p`,Le,`nothing running on this resident`)),Z.value.length>0?(u(),_(a,{key:2},[g(`p`,Re,[r[7]||=l(` idle worktrees `,-1),g(`span`,ze,b(Z.value.length),1)]),g(`ul`,Be,[(u(!0),_(a,null,v(Z.value,e=>(u(),_(`li`,{key:e.threadKey,class:`idle py-0.5 font-mono text-xs text-muted`,"data-thread":e.threadKey},[l(b(e.ref||`?`)+` `,1),e.sha?(u(),_(a,{key:0},[r[8]||=l(` @ `,-1),w(e.sha)?(u(),_(`a`,{key:0,class:`text-primary`,href:w(e.sha)},b(e.sha.slice(0,8)),9,He)):(u(),_(`span`,Ue,b(e.sha.slice(0,8)),1))],64)):d(``,!0),e.user?(u(),_(a,{key:1},[l(` · `+b(e.user),1)],64)):d(``,!0),e.deps?(u(),_(a,{key:2},[l(` · deps `+b(e.deps),1)],64)):d(``,!0),r[9]||=l(` · `,-1),y(N)(K.value,e.threadKey)===null?(u(),_(`span`,Ge,`size not measured yet`)):(u(),_(`span`,We,b(y(k)(y(N)(K.value,e.threadKey)))+` on disk`,1)),l(` · last used `+b(W(e.lastAttachAt)),1)],8,Ve))),128))])],64)):d(``,!0),g(`p`,Ke,[K.value&&J.value?(u(),_(a,{key:0},[l(` disk `+b(q.value)+` · `+b(y(k)(J.value.freeKiB))+` free`,1),J.value.capped?(u(),_(a,{key:0},[l(` under the `+b(y(k)(J.value.capacityKiB))+` cap`,1)],64)):d(``,!0),l(` · `+b(Q.value)+` · measured `+b(W(K.value.at)),1)],64)):(u(),_(`span`,G,`disk not measured yet`))])])],40,fe)],8,de))}}),q={class:`conn flex items-center gap-1.5`},J={id:`state`,class:`text-xs text-muted`},Y={class:`mb-2 text-xs text-muted`},X={id:`running`,class:`font-mono tabular-nums`},Z={id:`residents`,class:`m-0 list-none p-0`},Q={key:1,class:`px-2 py-1.5 text-muted`},$=`Resident repos`,qe=S({__name:`ResidentsIndexPage`,setup(ee){let d=h(`residents`),x=p({cap:d?.cap,count:d?.count,residents:d?.residents??[],runs:new Map((d?.runs??[]).map(e=>[e.id,e]))}),S=w(d?.now),k=s({tone:`amber`,text:`connecting…`}),A=typeof window<`u`?new URLSearchParams(window.location.search).get(`open`):null,j=m(()=>x.residents.map((e,t)=>{let n=e,r=E(n);return{key:`${r||`?`}-${t}`,record:n,slug:r,runs:O(x.runs.values(),r)}})),M=m(()=>I(x.cap)||`?`),N=m(()=>I(x.count)||String(j.value.length)),F=m(()=>j.value.reduce((e,t)=>e+t.runs.length,0));r([F,()=>x.residents],([t,n])=>{e.setTitle((t>0?`(${t}) `:``)+$),e.setFavicon(W[D(n)])},{immediate:!0});let L=U(),R=null;return i(()=>{R=L(`/residents?stream=1`);let t=!1;R.onopen=()=>{if(t){e.reload();return}t=!0,k.value={tone:`green`,text:`live`}},R.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}P(x,t)},R.onerror=()=>{R&&R.readyState===2?k.value={tone:`red`,text:`disconnected`}:k.value={tone:`amber`,text:`connecting…`}}}),f(()=>{R?.close()}),(e,r)=>{let i=C;return u(),c(t,{title:$,nav:`residents`},{status:n(()=>[o(i,{text:`runs arrive from the registry feed; the listing is re-read when a run attaches or ends`},{default:n(()=>[g(`span`,q,[o(T,{tone:k.value.tone,label:k.value.text},null,8,[`tone`,`label`]),g(`span`,J,b(k.value.text),1)])]),_:1})]),default:n(()=>[j.value.length>0?(u(),_(a,{key:0},[g(`p`,Y,[l(b(N.value)+`/`+b(M.value)+` resident slots in use · `,1),g(`span`,X,b(F.value)+` running`,1)]),g(`ul`,Z,[(u(!0),_(a,null,v(j.value,e=>(u(),c(K,{key:e.key,record:e.record,runs:e.runs,now:y(S),open:y(A)!==null&&y(A)===e.slug},null,8,[`record`,`runs`,`now`,`open`]))),128))])],64)):(u(),_(`p`,Q,[l(` No repos onboarded (0/`+b(M.value)+`). Onboard one from chat: `,1),r[0]||=g(`code`,{class:`rounded bg-elevated px-1.5 py-0.5`},`repo onboard <owner/name>`,-1),r[1]||=l(`. `,-1)]))]),_:1})}}});export{qe as default};
@@ -0,0 +1,9 @@
1
+ import{n as e,r as t}from"./AppShell-DZdz_sl7.js";import{Ci as n,Gn as r,Mr as i,Qn as a,Rn as o,Wt as s,Xt as c,_n as l,ci as u,cn as d,gn as f,ir as p,ln as m,oi as h,on as g,sn as _,un as v,ur as y,vi as b,wi as x,xi as S,yn as C}from"./seed-DeKSHrt2.js";import{n as w}from"./wallClock-61NpVkY6.js";import{t as T}from"./StatusDot-D-BPSPpw.js";import{i as E,n as D,t as O}from"./localIso-CNA-bhS-.js";import{E as k,T as A,a as j,b as M,c as N,g as P,l as F,m as ee,o as I,t as L,v as te,w as R,y as ne}from"./indexRow-BjXBzI5Z.js";import{n as z,r as re,t as B}from"./durationTone-DYogEPEk.js";function ie(e){let t=new Date(e),n=t.getHours(),r=e=>String(e).padStart(2,`0`),i=new Intl.DateTimeFormat(void 0,{timeZoneName:`short`}).formatToParts(t).find(e=>e.type===`timeZoneName`)?.value;return`${n%12==0?12:n%12}:${r(t.getMinutes())}:${r(t.getSeconds())} ${n<12?`AM`:`PM`}${i?` ${i}`:``}`}function V(e){return e>0?e<1024?`${e} B`:e<1048576?`${(Math.round(e/102.4)/10).toFixed(1)} KB`:e<1073741824?`${(Math.round(e/104857.6)/10).toFixed(1)} MB`:`${(Math.round(e/107374182.4)/10).toFixed(1)} GB`:`0 B`}function ae(e,t){let n=e.ownerDocument;e.textContent=``;let r=String(t??``).replace(/\r\n?/g,`
2
+ `).split(`
3
+ `),i=/^(\s*)([-*]|\d+[.)])\s+(.*)$/,a=/^(```|#{1,6}\s|>)/;function o(e,t){let r=n.createElement(t);return e.appendChild(r),r}function s(e,t){t&&e.appendChild(n.createTextNode(t))}function c(e){let t=e.trim();return t[0]===`|`&&(t=t.slice(1)),t[t.length-1]===`|`&&(t=t.slice(0,-1)),t.split(`|`).map(e=>e.trim())}function l(e){let t=e.trim();return t.indexOf(`|`)<0||!/^[\s:|-]+$/.test(t)?!1:c(t).every(e=>/^:?-+:?$/.test(e))}function u(e,t){let n=e[t];return n.indexOf(`|`)<0||l(n)||t+1>=e.length||!l(e[t+1])?!1:c(n).length===c(e[t+1]).length}function d(e,t){let n=0,r=``,i=()=>{s(e,r),r=``};for(;n<t.length;){let a=t[n];if(a==="`"){let r=t.indexOf("`",n+1);if(r>n+1){i(),o(e,`code`).textContent=t.slice(n+1,r),n=r+1;continue}}else if(a===`*`&&t[n+1]===`*`){let r=t.indexOf(`**`,n+2);if(r>n+2){i(),d(o(e,`strong`),t.slice(n+2,r)),n=r+2;continue}}else if(a===`*`||a===`_`){let r=n>0?t[n-1]:``;if(/\S/.test(t[n+1]||``)&&!/\w/.test(r)){let r=-1;for(let e=n+2;e<t.length;e++)if(t[e]===a&&/\S/.test(t[e-1])&&!/\w/.test(t[e+1]||``)){r=e;break}if(r>0){i(),d(o(e,`em`),t.slice(n+1,r)),n=r+1;continue}}}else if(a===`[`){let r=/^\[([^\]\n]+)\]\(([^)\s]+)\)/.exec(t.slice(n));if(r&&/^https?:\/\//i.test(r[2])){i();let t=o(e,`a`);t.setAttribute(`href`,r[2]),t.setAttribute(`rel`,`noopener noreferrer`),t.setAttribute(`target`,`_blank`),d(t,r[1]),n+=r[0].length;continue}}r+=a,n++}i()}function f(e,t,n=0){let r=0;for(;r<t.length;){let s=t[r];if(/^\s*$/.test(s)){r++;continue}if(/^```/.test(s)){let n=[];for(r++;r<t.length&&!/^```\s*$/.test(t[r]);)n.push(t[r++]);r++,o(o(e,`pre`),`code`).textContent=n.join(`
4
+ `);continue}let l=/^(#{1,6})\s+(\S.*?)\s*$/.exec(s);if(l){d(o(e,`h`+l[1].length),l[2]),r++;continue}if(s[0]===`>`&&n<8){let i=[];for(;r<t.length&&t[r][0]===`>`;)i.push(t[r++].replace(/^>\s?/,``));f(o(e,`blockquote`),i,n+1);continue}if(u(t,r)){let n=c(s),i=o(e,`table`),a=o(o(i,`thead`),`tr`);for(let e of n)d(o(a,`th`),e);r+=2;let l=null;for(;r<t.length&&t[r].indexOf(`|`)>=0&&!u(t,r);){l||=o(i,`tbody`);let e=c(t[r]),a=o(l,`tr`);for(let t=0;t<n.length;t++)d(o(a,`td`),t<e.length?e[t]:``);r++}continue}if(i.test(s)){let n=[],a;for(;r<t.length&&(a=i.exec(t[r]))!==null;)n.push({indent:a[1].length,ordered:/^\d/.test(a[2]),text:a[3]}),r++;let s=n[0].indent,c=o(e,n[0].ordered?`ol`:`ul`),l=null,u=null;for(let e of n)e.indent>s&&l?(u||=o(l,e.ordered?`ol`:`ul`),d(o(u,`li`),e.text)):(l=o(c,`li`),u=null,d(l,e.text));continue}let p=[];for(;r<t.length&&!/^\s*$/.test(t[r])&&!a.test(t[r])&&!i.test(t[r])&&!u(t,r);)p.push(t[r++]);p.length===0&&p.push(t[r++]),d(o(e,`p`),p.join(`
5
+ `))}}f(e,r)}var H=C({__name:`MarkdownText`,props:{text:{}},setup(e){let t=e,n=u(null);function r(){let e=n.value;if(e)try{ae(e,t.text)}catch{e.textContent=t.text}}return a(r),i(()=>t.text,r),(e,t)=>(p(),v(`div`,{ref_key:`root`,ref:n,class:`md prose prose-sm prose-neutral dark:prose-invert min-w-0 max-w-none flex-1 whitespace-pre-wrap break-words font-sans text-[0.875rem] leading-normal [&_a]:font-medium [&_a]:decoration-(--ui-text-dimmed) [&_a]:underline-offset-[3px] [&_a:hover]:decoration-current [&_blockquote]:my-1.5 [&_h1]:font-medium [&_h1]:tracking-tight [&_h2]:font-medium [&_h2]:tracking-tight [&_h3]:font-medium [&_h3]:tracking-tight [&_h4]:font-medium [&_strong]:font-medium [&_li>ol]:my-0.5 [&_li>ul]:my-0.5 [&_li]:my-0.5 [&_li]:whitespace-pre-wrap [&_ol]:my-1.5 [&_ol]:whitespace-normal [&_p]:my-1.5 [&_pre]:my-2 [&_pre]:whitespace-pre [&_table]:whitespace-normal [&_ul]:my-1.5 [&_ul]:whitespace-normal`},null,512))}}),oe={},se={viewBox:`0 0 16 16`,class:`inline-block size-[1em] shrink-0`,"aria-hidden":`true`};function ce(e,t){return p(),v(`svg`,se,[...t[0]||=[_(`path`,{fill:`currentColor`,d:`M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z`},null,-1)]])}var le=t(oe,[[`render`,ce]]);function ue(){let e=[],t=null,n=0,r=[];function i(e){return typeof e==`number`&&isFinite(e)?e:void 0}function a(e){return typeof e==`string`?e:``}function o(n){let r={index:e.length,calls:[]};return n&&(r.narration=n),e.push(r),t=r,r}function s(e){return e<1e3?String(e):e<1e6?(Math.round(e/100)/10).toFixed(1)+`k`:(Math.round(e/1e5)/10).toFixed(1)+`M`}function c(e){let t=/\((\d+) chars(?:, (\d+) lines)?\)$/.exec(e.summary);if(t)return t[2]?Number(t[2]):1;if(e.output)return e.output.split(`
6
+ `).length}function l(e){let t=[],n=e.result;if(!n)return t;n.infra?t.push(`sandbox error`):e.shell?t.push(n.exitCode===void 0?n.ok?`exit 0`:`error`:`exit `+n.exitCode):n.ok||t.push(`error`);let r=c(n);return r!==void 0&&r>1&&t.push(r+` lines`),e.durationMs!==void 0&&t.push(k(e.durationMs,`precise`)),t}function u(e,t){let n={ok:t.ok===!0,infra:t.infra===!0,summary:a(t.summary),output:a(t.output),at:i(t.at)},o=i(t.exitCode);o!==void 0&&(n.exitCode=o),e.result=n;let s=r.indexOf(e);s!==-1&&r.splice(s,1),e.status=n.infra?`infra`:n.ok?`ok`:`failed`,e.status!==`ok`&&(e.tags=e.tags.concat(e.status)),e.startedAt!==void 0&&n.at!==void 0&&n.at>=e.startedAt&&(e.durationMs=n.at-e.startedAt),e.facts=l(e)}let d=[[`tests`,/\b(npm|pnpm|yarn|bun)\s+(run\s+)?test\b|\b(vitest|jest|pytest|mocha|go test|cargo test)\b/],[`build`,/\b(npm|pnpm|yarn|bun)\s+run\s+(build|typecheck|lint)\b|\b(tsc|make|cargo build|go build|eslint|prettier)\b/],[`install`,/\b(npm|pnpm|yarn|bun)\s+(i|install|ci|add)\b|\bpip3?\s+install\b|\bapt(-get)?\s+install\b|\bbrew\s+install\b/],[`git`,/(^|[\s;&|(])(git|gh)\s/],[`network`,/(^|[\s;&|(])(curl|wget)\s/],[`read`,/(^|[\s;&|(])(cat|sed|head|tail|less|ls|find|grep|rg|wc|tree|pwd|echo|env|which|stat|file|diff)\b/]];function f(e){let t=e.replace(/^(\s*cd\s+("[^"]*"|'[^']*'|\S+)\s*(&&|;)\s*)+/,``);return t.trim()?t:e}function p(e){let t=f(e);for(let[e,n]of d)if(n.test(t))return e;return`shell`}function m(e,t){let n=t?f(e):e,r=n.indexOf(`
7
+ `),i=r===-1?n:n.slice(0,r).trimEnd();return i.length<e.length?i+` …`:i}function h(e,t){let o=a(e.tool),s=o===`bash`,c=t||o,l=s&&c.startsWith(`$ `)?c.slice(2):!s&&c.startsWith(o+` `)?c.slice(o.length+1):c,u={id:a(e.callId)||`c`+ ++n,tool:o,title:l,headline:m(l,s),shell:s,quiet:o===`update_status`,tags:[s?p(l):o],status:`running`,startedAt:i(e.at),facts:[]};return r.push(u),u}function g(t){for(let n=e.length-1;n>=0;n--)for(let r of e[n].calls)if(r.id===t)return{step:e[n],call:r};return null}function _(t){let n=a(t.callId);if(!n)return null;for(let t=e.length-1;t>=0;t--)for(let r of e[t].calls)if(r.id===n&&!r.result)return{step:e[t],call:r};return null}function v(e){if(!e||typeof e!=`object`)return[];let n=e;switch(n.type){case`input`:{let e={kind:`input`,text:a(n.text),messageId:a(n.messageId),at:i(n.at)},t=n.source;if(t&&typeof t==`object`){let n=t,r={};a(n.url)&&(r.url=a(n.url)),a(n.channel)&&(r.channel=a(n.channel)),a(n.user)&&(r.user=a(n.user)),a(n.run)&&(r.run=a(n.run)),Object.keys(r).length>0&&(e.source=r)}return[e]}case`answer`:return[{kind:`answer`,text:a(n.text),at:i(n.at)}];case`pr_opened`:{let e=i(n.number);return!a(n.url)||e===void 0||!Number.isInteger(e)||e<=0?[]:[{kind:`pr_opened`,url:a(n.url),number:e,created:n.created===!0,at:i(n.at)}]}case`run_meta`:{if(!a(n.agent))return[];let e={kind:`meta`,agent:a(n.agent),model:a(n.model),at:i(n.at)};return a(n.effort)&&(e.effort=a(n.effort)),a(n.repo)&&(e.repo=a(n.repo)),a(n.ref)&&(e.ref=a(n.ref)),i(n.pr)!==void 0&&Number.isInteger(n.pr)&&n.pr>0&&(e.pr=n.pr),/^[0-9a-f]{7,40}$/i.test(a(n.headSha))&&(e.headSha=a(n.headSha)),[e]}case`context`:return[{kind:`context`,text:a(n.text),at:i(n.at)}];case`reference`:{let e=i(n.messages);return!a(n.url)||!a(n.channelName)||e===void 0?[]:[{kind:`reference`,url:a(n.url),channelName:a(n.channelName),messages:e,text:a(n.text),at:i(n.at)}]}case`notes`:return[{kind:`note`,text:a(n.text),noteKind:`notes`,at:i(n.at)}];case`replay_note`:return[{kind:`replay_note`,text:a(n.summary)}];case`run_note`:return[{kind:`note`,text:a(n.summary),noteKind:a(n.kind),mode:a(n.mode)||void 0,at:i(n.at)}];case`assistant`:return[{kind:`step`,step:o({text:a(n.text),at:i(n.at)})}];case`review_artifact`:return[];case`span_start`:{let e=a(n.name),t=a(n.spanId);return!e||!t||e.startsWith(`tool.`)||e.startsWith(`mcp.`)||e===`model.turn`?[]:[{kind:`span`,spanId:t,name:e,open:!0,at:i(n.at)}]}case`span_end`:{let e=a(n.name),r=a(n.spanId),o=i(n.durationMs);if(!e||!r||o===void 0)return[];let c=n.status===`error`?`error`:`ok`,u=typeof n.attrs==`object`&&n.attrs!==null?n.attrs:{};if(e===`model.turn`){t=null;let e=[],c=i(u.inputTokens),l=i(u.outputTokens),d=i(u.cacheReadTokens);c!==void 0&&e.push(s(c)+` in`),l!==void 0&&e.push(s(l)+` out`),d!==void 0&&e.push(s(d)+` cached`);let f=i(u.ttftMs);f!==void 0&&e.push(`first token `+k(f,`precise`));let p=i(u.thinkingMs);p!==void 0&&e.push(`thinking `+k(p,`precise`));let m=i(u.textMs);m!==void 0&&e.push(`writing `+k(m,`precise`));let h=a(u.model);return[{kind:`turn`,spanId:r,label:`Thought for `+k(o,`precise`),facts:e,durationMs:o,...h?{model:h}:{},at:i(n.at)}]}if(e.startsWith(`tool.`)||e.startsWith(`mcp.`)){if(!e.startsWith(`tool.`))return[];let t=a(u.callId);if(!t)return[];let n=g(t);return!n||n.call.durationMs!==void 0?[]:(n.call.durationMs=o,n.call.facts=l(n.call),[{kind:`result`,step:n.step,call:n.call}])}let d=i(n.startedAt);return[{kind:`span`,spanId:r,name:e,open:!1,durationMs:o,status:c,at:i(n.at),...d===void 0?{}:{startedAt:d}}]}case`artifact`:{let e=a(n.key),t=a(n.name);if(!e||!t)return[];let r={key:e,name:t,size:i(n.size)??0,contentType:a(n.contentType),at:i(n.at)},o=a(n.messageId),s=a(n.callId),c=n.direction===`in`&&o?{...r,direction:`in`,messageId:o}:n.direction===`out`&&s?{...r,direction:`out`,callId:s}:void 0;return c?[{kind:`artifact`,artifact:c}]:[]}case`skill_use`:{let e=a(n.skill);if(!e)return[];let r=[];t||r.push({kind:`step`,step:o()});let s=a(n.source),c={name:e,description:a(n.description),agent:a(n.agent),bodyBytes:i(n.bodyBytes)??0,at:i(n.at)};return/^https?:\/\//.test(s)&&(c.source=s),r.push({kind:`skill`,step:t,skill:c}),r}case`tool_call`:{let e=[];t||e.push({kind:`step`,step:o()});let r=h(n,a(n.summary));return t.calls.push(r),e.push({kind:`call`,step:t,call:r}),e}case`tool_result`:{let e=_(n);if(e)return u(e.call,n),[{kind:`result`,step:e.step,call:e.call}];let r=[];t||r.push({kind:`step`,step:o()});let i=h(n,``);return i.startedAt=void 0,u(i,n),t.calls.push(i),r.push({kind:`call`,step:t,call:i}),r}default:return[]}}function y(){return r.length>0?r[0]:null}return{push:v,pending:y,steps:()=>e}}new Set(`request,slack.receive,dispatch.history,dispatch.admission,dispatch.ack_card,dispatch.gate.repo,dispatch.gate.pr_head,dispatch.workspace.attach,dispatch.gate.attached_head,dispatch.mcp_discovery,dispatch.compose,dispatch.channel_visibility,dispatch.repo_context,dispatch.memory_read,dispatch.refuse,dispatch.ship_preflight,dispatch.ledger_claim,dispatch.route,run.agent,run.command,run.reading_diff,run.settle_reviewed_head,run.description_turn,run.verdict_turn,run.observe_workspace,run.pr_post_step,run.review_post_step,run.reading_diff_join,run.pr_description_join,model.turn,ship.round,post.card_close,post.reply`.split(`,`));var de=new Set([`slack.receive`,`dispatch.history`,`dispatch.admission`,`dispatch.ack_card`,`dispatch.gate.repo`,`dispatch.gate.pr_head`,`dispatch.workspace.attach`,`dispatch.gate.attached_head`,`dispatch.mcp_discovery`,`dispatch.compose`,`dispatch.channel_visibility`,`dispatch.repo_context`,`dispatch.memory_read`,`dispatch.refuse`,`dispatch.ship_preflight`,`dispatch.ledger_claim`,`dispatch.route`]),fe=new Set([`run.observe_workspace`,`run.pr_post_step`,`run.review_post_step`,`run.reading_diff_join`,`run.pr_description_join`]),pe=new Set([`request`,`run.agent`,`ship.round`,`run.settle_reviewed_head`,`run.description_turn`,`run.verdict_turn`,`post.card_close`,`post.reply`]),me=new Set([`run.reading_diff`]);function U(e,t){if(me.has(e))return{kind:`background`};if(pe.has(e))return{kind:`uncounted`};if(e===`model.turn`)return{kind:`counted`,bucket:`thinking`};if(e===`run.command`||e.startsWith(`run.command.`))return{kind:`counted`,bucket:t===`command`?`tools`:`getting_ready`};if(de.has(e)||e.startsWith(`dispatch.workspace.attach.`))return{kind:`counted`,bucket:`getting_ready`};if(fe.has(e))return{kind:`counted`,bucket:`finishing_up`};if(e.startsWith(`tool.`)||e.startsWith(`mcp.`))return{kind:`counted`,bucket:`tools`}}var W={clone:`cloning the repo`,"checkout-clone":`cloning the checkout`,"worktree-clone":`cloning the worktree`,"worktree-detach":`checking out the expected commit`,"op-clone":`cloning the op tree`,fetch:`fetching the branch`,"wake-fetch":`fetching the latest commits`,"reclaim-fetch":`fetching to reclaim the mirror`,"for-each-ref":`listing the branches`,checkout:`checking out the branch`,"checkout-update":`updating the checkout`,"rev-parse":`reading the commit`,"cat-file":`checking the mirror for the commit`,"show-ref":`reading the branch tip`,"detect-default-branch":`detecting the default branch`,git:`a git command`,"git-setup":`configuring git`,"stage-perms":`securing the credential stage`,install:`installing dependencies`,build:`building`,test:`running the tests`,"clear-markers":`clearing the build markers`,"lockfile-key":`hashing the lockfile`,"deps-store-dir":`preparing the dependency store`,"deps-scratch":`cloning a scratch tree for the dependency install`,"deps-install":`installing the dependency store`,"deps-harden":`locking down the installed dependencies`,"deps-commit":`recording the installed dependencies`,"deps-adopt":`adopting the dependency store`,"deps-restore-scratch":`restoring dependencies to scratch`,"deps-restore-chown":`setting the restored dependencies' owner`,"deps-restore-commit":`recording the restored dependencies`,"deps-scratch-chown":`setting the dependency scratch owner`,"deps-evict":`evicting an old dependency store`,"unlink-deps-view":`unlinking the dependency view`,"clear-installing-marker":`clearing the install marker`,chown:`setting the workspace owner`,"worktree-chown":`setting the worktree owner`,"op-chown":`setting the op tree's owner`,"worktree-clean":`cleaning the worktree`,"clean-workspace":`cleaning the workspace`,"clean-before-restore":`cleaning before the restore`,"unmount-restores":`unmounting earlier restores`,"mirror-restore-extract":`extracting the mirror snapshot`,"checkout-restore-extract":`extracting the checkout snapshot`,"deps-restore-extract":`extracting the dependency snapshot`,evict:`evicting a stale tree`,"thread-dir":`preparing a directory`,"threads-dir":`preparing a directory`,"op-dir":`preparing a directory`,"ops-dir":`preparing a directory`,"stage-dir":`preparing a directory`,stat:`checking a file`,"boot-id":`reading the container's identity`,touch:`touching a marker`,nproc:`counting CPUs`,mutex_wait:`waiting for the workspace`,kill:`stopping the previous step`};Object.keys(W);function he(e){return Object.prototype.hasOwnProperty.call(W,e)?e:void 0}function ge(e){let t=he(e);if(t!==void 0)return W[t];if(e.endsWith(`-stale-sweep`)){let t=he(e.slice(0,-12));if(t!==void 0)return`clearing leftovers before ${W[t]}`}}var _e={request:`the request`,"slack.receive":`receiving`,"dispatch.history":`reading the thread`,"dispatch.admission":`checking the thread`,"dispatch.ack_card":`posting the status card`,"dispatch.gate.repo":`checking the repo`,"dispatch.gate.pr_head":`checking the PR`,"dispatch.workspace.attach":`attaching the workspace`,"dispatch.gate.attached_head":`checking out the branch`,"dispatch.mcp_discovery":`loading tools`,"dispatch.compose":`preparing the prompt`,"dispatch.channel_visibility":`checking the channel`,"dispatch.repo_context":`reading the repo's context`,"dispatch.memory_read":`recalling memory`,"dispatch.refuse":`refusing`,"dispatch.ship_preflight":`checking the ship request`,"dispatch.ledger_claim":`claiming the run's row`,"dispatch.route":`picking the preset`,"run.agent":`the agent loop`,"run.command":`the command`,"run.reading_diff":`reading the diff (in parallel)`,"run.settle_reviewed_head":`re-checking the moved branch`,"run.description_turn":`asking for the PR description`,"run.verdict_turn":`asking for the verdict`,"run.observe_workspace":`checking the workspace`,"run.pr_post_step":`posting the PR`,"run.review_post_step":`posting the review`,"run.reading_diff_join":`waiting for the diff`,"run.pr_description_join":`waiting for the PR description`,"model.turn":`a model turn`,"ship.round":`a ship round`,"post.card_close":`closing the card`,"post.reply":`posting the reply`},ve=`a Switchboard step`;function G(e){if(e in _e)return _e[e];if(e.startsWith(`tool.`))return e.slice(5)||`a Switchboard step`;if(e.startsWith(`mcp.`)){let t=e.slice(e.lastIndexOf(`.`)+1);return t&&t!==`mcp`?t:ve}for(let t of[`dispatch.workspace.attach.`,`run.command.`])if(e.startsWith(t))return ge(e.slice(t.length))??`a Switchboard step`;return ve}var ye=`A-Za-z0-9:@._-`;RegExp(`^[${ye}]{1,128}$`),RegExp(`[^${ye}]`,`g`);function K(e){return e.type===`span_start`||e.type===`span_end`}function be(e,t){return/^[A-Za-z0-9_-]{1,64}$/.test(e)?`synth:${e}`:`synth:${t}`}function xe(e){let t=[];for(let n of e)n.type===`span_end`&&n.name===`run.agent`&&t.push({spanId:n.spanId,startedAt:n.startedAt,endedAt:n.startedAt+n.durationMs});return t}function q(e,t){let n;for(let r of e)r.startedAt<=t&&t<=r.endedAt&&(!n||r.endedAt-r.startedAt<n.endedAt-n.startedAt)&&(n=r);return n?.spanId}function Se(e){let t=xe(e),n=new Set;for(let t of e){if(!K(t))continue;let e=t.attrs??{};t.name.startsWith(`tool.`)&&typeof e.callId==`string`&&n.add(e.callId)}let r=[],i=new Map;return e.forEach((e,a)=>{switch(e.type){case`tool_call`:{let o=e.callId;if(o===void 0||e.at===void 0||n.has(o)){r.push(e);return}let s=be(o,a);r.push(Ce(s,`tool.${e.tool}`,e.at,q(t,e.at),{callId:o}),e),i.set(o,{spanId:s,startedAt:e.at});return}case`tool_result`:{if(r.push(e),e.callId===void 0)return;let n=i.get(e.callId);if(!n)return;i.delete(e.callId);let a=e.at??n.startedAt,o={ok:e.ok,callId:e.callId};e.exitCode!==void 0&&(o.exitCode=e.exitCode),e.infra&&(o.infra=!0),r.push(we(n.spanId,`tool.${e.tool}`,n.startedAt,Math.max(0,a-n.startedAt),q(t,n.startedAt),o,e.ok?`ok`:`error`));return}default:r.push(e)}}),r}function Ce(e,t,n,r,i){return{type:`span_start`,spanId:e,...r===void 0?{}:{parentSpanId:r},name:t,...i?{attrs:i}:{},at:n}}function we(e,t,n,r,i,a,o=`ok`){return{type:`span_end`,spanId:e,...i===void 0?{}:{parentSpanId:i},name:t,startedAt:n,durationMs:r,status:o,...a?{attrs:a}:{},at:n+r}}function Te(e,t,n){let r=e.get(t.spanId);if(t.type===`span_start`){if(r)return;e.set(t.spanId,{traceId:n,spanId:t.spanId,...t.parentSpanId===void 0?{}:{parentSpanId:t.parentSpanId},name:t.name,startedAt:t.at??0,attrs:t.attrs??{}});return}e.set(t.spanId,{traceId:n,spanId:t.spanId,...t.parentSpanId===void 0?r?.parentSpanId===void 0?{}:{parentSpanId:r.parentSpanId}:{parentSpanId:t.parentSpanId},name:t.name,startedAt:t.startedAt,endedAt:t.startedAt+t.durationMs,durationMs:t.durationMs,status:t.status,...t.error===void 0?{}:{errorMessage:t.error},attrs:{...r?.attrs??{},...t.attrs??{}}})}function Ee(){let e,t,n=[];return{push(r){e?t&&r.seq!==void 0&&t.seq!==void 0&&r.seq>t.seq+1&&t.at!==void 0&&r.at!==void 0&&n.push({kind:`gap`,fromSeq:t.seq+1,toSeq:r.seq-1,from:Math.min(t.at,r.at),to:Math.max(t.at,r.at)}):e={seq:r.seq??1,at:r.at},r.type===`run_note`&&r.kind===`spans_dropped`&&r.from!==void 0&&r.to!==void 0&&r.to>=r.from&&n.push({kind:`note`,from:r.from,to:r.to}),t={seq:r.seq,at:r.at}},losses(t={}){let r=t.elided??[],i=(e,t)=>r.some(n=>n.fromSeq<=e&&t<=n.toSeq),a=[];e&&e.seq>1&&t.windowStart!==void 0&&e.at!==void 0&&e.at>t.windowStart&&a.push({from:t.windowStart,to:e.at,kind:`lost`});for(let e of n)a.push(e.kind===`note`?{from:e.from,to:e.to,kind:`lost`}:{from:e.from,to:e.to,kind:i(e.fromSeq,e.toSeq)?`elided`:`lost`});return a}}}var De=[/\bslack[\s-]?only\b/i,/\bpost\s*[:=]\s*(?:off|no|false|none)\b/i,/\bno[\s-]post\b/i,/\b(?:don['’]?t|do\s+not|never|skip|without)\s+(?:\w+\s+){0,2}?(?:post|comment)(?:ing|s)?\b/i,/\bno\s+need\s+to\s+(?:post|comment)\b/i];function Oe(e){return De.some(t=>t.test(e))}var ke=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/,Ae=/^[0-9a-f]{7,40}$/,je=/^(?![.-])(?!.*\.\.)(?!.*\/\/)(?!.*@\{)(?!.*\.lock$)(?!.*[./]$)[\w][\w./-]*$/;function J(e){return e&&ke.test(e)?`https://github.com/${e}`:void 0}function Y(e,t){let n=J(e);if(!(!n||t===void 0||!Number.isInteger(t)||t<=0))return`${n}/pull/${t}`}function Me(e,t){let n=J(e);if(n&&t&&je.test(t))return`${n}/tree/${t.split(`/`).map(encodeURIComponent).join(`/`)}`}function Ne(e,t){let n=J(e);if(n&&t&&Ae.test(t))return`${n}/commit/${t}`}function Pe(e){return e.slice(0,7)}function Fe(e){if(e===`slack.receive`||e.startsWith(`dispatch.`))return`getting_ready`;let t=U(e,`agent`);return t?.kind===`counted`&&t.bucket===`finishing_up`?`finishing_up`:void 0}function Ie(e){return e===`request`||e===`run.agent`}var Le={getting_ready:`Getting ready`,finishing_up:`Finishing up`};function Re(e){let t=e.rows.length,n=`${t} step${t===1?``:`s`}`,r=Le[e.phase];if(t===0||e.rows.some(e=>e.open||e.at===void 0||e.durationMs===void 0))return`${r} · ${n}`;let i=Math.min(...e.rows.map(e=>e.at)),a=Math.max(...e.rows.map(e=>e.at+e.durationMs));return`${r} · ${n} · ${k(Math.max(0,a-i),`precise`)}`}function ze(e){let t=e.split(`
8
+ `),n=t.indexOf(`<<<UNTRUSTED`),r=t.lastIndexOf(`UNTRUSTED>>>`);return(n>=0&&r>n?t.slice(n+1,r):t.slice(1)).filter(e=>e.length>0)}function Be(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`${e.urlBase}${n}${e.token?`?t=${encodeURIComponent(e.token)}`:``}`}function Ve(e){if(typeof e!=`string`)return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t)return null;let{fromSeq:n,toSeq:r}=t,i=e=>typeof e==`number`&&Number.isInteger(e)&&e>0;return!i(n)||!i(r)||n>r?null:{fromSeq:n,toSeq:r}}function He(e){let t=e.toSeq-e.fromSeq+1,n=t===1?`event ${e.fromSeq}`:`events ${e.fromSeq}–${e.toSeq}`;return`${t} ${t===1?`event`:`events`} not loaded (${n}) — the record has them`}function Ue(e,t,n){let r=!!e.model&&t!==null&&tt(e.model,t),i=r?t:e.model??t??void 0,a=!!e.model&&t!==null&&!r;return{spanId:e.spanId,label:e.label,chip:e.label.replace(/^Thought for /,``),quick:e.durationMs<6e4,durationMs:e.durationMs,facts:e.facts,...i?{model:i}:{},switched:a,showModel:!!i&&(!n||a),at:e.at}}function We(e){let t=`${e.n} tool call${e.n===1?``:`s`}`;if(e.n===0)return`no tool calls`;if(e.ok===e.n)return`${t}, all succeeded`;if(e.running===e.n)return`${t}, all running`;let n=[];return e.bad&&n.push(`${e.bad} failed`),e.infra&&n.push(`${e.infra} sandbox error${e.infra===1?``:`s`}`),e.running&&n.push(`${e.running} still running`),`${t}, ${n.join(`, `)}`}function Ge(e){let{meta:t,prOpened:n}=e,r=t?.repo&&J(t.repo)?t.repo:void 0;if(t?.agent===`review`){if(Oe(e.requestText))return{text:`verdict, Slack only`};if(r&&t.pr!==void 0){let e=Y(r,t.pr);return e?{text:`verdict for ${r}#${t.pr}`,href:e}:{text:`verdict`}}return{text:`verdict`}}if(t?.agent===`coding`&&n){let e=n.created?`pull request opened`:`pull request updated`,t=r?Y(r,n.number):void 0;return t?{text:`${e} ${r}#${n.number}`,href:t}:{text:e}}return t?.agent===`command`?{text:`output`}:{text:`answer`}}function Ke(e,t){return{id:e.id,tool:e.tool,title:e.title,headline:e.headline,shell:e.shell,status:e.status,facts:[...e.facts],startedAt:e.startedAt,output:e.result?e.result.output||e.result.summary:``,hasResult:e.result!==void 0,chipOnly:!e.shell&&e.title===e.tool,durationMs:e.durationMs,exitCode:e.result?.exitCode,timedOut:re(e.result?.exitCode),open:t}}function X(e={}){let t=e.openTags&&e.openTags.length>0?e.openTags:[`failed`,`infra`],n=ue(),r=h({request:null,meta:null,context:[],references:[],log:[],reply:null,prOpened:null,placeholder:!0,allOpen:!1,stopMode:null,model:null,firstAt:null,lastAt:null,lastAtWall:null,elided:[],traceVersion:0}),i=Ee(),a=new Map,o=new Map,s=new Map,c=new Map,l=new Map,u=new Map,d=new Map,f=new Map,p=new Set,m=null,g=!1,_=-1,v=0,y=e=>`${e}-${v++}`;function b(e){return t.includes(`all`)?!0:e.some(e=>t.includes(e))}function x(e){let t=0,n=0,r=0;for(let i of e.items)i.kind===`call`&&(i.call.status===`failed`?t++:i.call.status===`infra`?n++:i.call.status===`running`&&r++);return{bad:t,infra:n,running:r}}function S(e){let{bad:t,infra:n,running:r}=x(e);(t||n||r)&&(e.groupOpen=!0)}function C(e){let t=o.get(_);t&&(t.live=!1),_=e.index;let n=m;m=null;let i=h({kind:`step`,key:y(`step`),index:e.index,at:e.narration?e.narration.at:n?.at,turn:n,narration:e.narration?e.narration.text:null,note:`no commentary`,items:[],live:!0,manual:!1,groupOpen:!0});return o.set(e.index,i),r.log.push(i),i}function T(e){return o.get(e.index)??C(e)}function E(e,t){let n=T(e);if(t.quiet){p.add(t.id),n.items.push({kind:`quiet`,at:t.startedAt,text:`✎ ${t.tool===`update_status`?`status checklist updated`:t.title}`}),S(n);return}let i=h(Ke(t,r.allOpen||b(t.tags)));u.set(t.id,i),d.set(t.id,n),n.items.push({kind:`call`,call:i}),S(n)}function D(e,t){if(p.has(t.id)){let t=o.get(e.index);t&&S(t);return}let n=u.get(t.id);if(!n){E(e,t);return}Object.assign(n,Ke(t,n.open)),b(t.tags)&&(n.open=!0);let r=o.get(e.index);r&&S(r)}function O(e,t){m&&=(r.log.push({kind:`turn`,key:y(`turn`),turn:m,note:e,...t===void 0?{}:{noteHref:t}}),null)}let k=new Map,A=h([]);function j(e){if(e.direction===`in`){k.get(e.messageId)?.files.push(e);return}A.push(e);let t=u.get(e.callId);t&&((t.files??=[]).push(e),t.open=!0)}function M(e){switch(r.placeholder=!1,e.kind){case`input`:{let t={text:e.text,messageId:e.messageId,at:e.at,...e.source?{source:e.source}:{},files:[]};r.request?r.log.push({kind:`followup`,key:y(`followup`),input:t}):r.request=t,k.set(t.messageId,t);return}case`step`:C(e.step);return;case`call`:E(e.step,e.call);return;case`result`:D(e.step,e.call);return;case`turn`:O(``),m=Ue(e,r.model,g),m.model&&(g=!0),e.model&&!(r.model!==null&&tt(e.model,r.model))&&(r.model=e.model);return;case`meta`:r.model===null&&e.model&&(r.model=e.model),r.meta={agent:e.agent,model:e.model,...e.effort?{effort:e.effort}:{},...e.repo?{repo:e.repo}:{},...e.ref?{ref:e.ref}:{},...e.pr===void 0?{}:{pr:e.pr},...e.headSha?{headSha:e.headSha}:{}};return;case`pr_opened`:r.prOpened={url:e.url,number:e.number,created:e.created};return;case`skill`:T(e.step).items.push({kind:`skill`,skill:e.skill});return;case`artifact`:j(e.artifact);return;case`context`:r.context.push({key:y(`ctx`),at:e.at,text:e.text});return;case`reference`:r.references.push({key:y(`ref`),at:e.at,url:e.url,channelName:e.channelName,messages:e.messages,text:e.text});return;case`note`:if(e.noteKind===`follow_up`)return;r.log.push({kind:`note`,key:y(`note`),at:e.at,replay:!1,text:e.text,noteKind:e.noteKind}),(e.noteKind===`stop_requested`||e.noteKind===`stopped`)&&(e.mode===`soft`||e.mode===`hard`)&&R(e.mode);return;case`replay_note`:r.log.push({kind:`note`,key:y(`note`),replay:!0,text:e.text});return;case`span`:{if(Ie(e.name)){e.name===`run.agent`&&e.open&&N(`getting_ready`);return}e.name.startsWith(`post.`)&&e.open&&N(`finishing_up`);let t=s.get(e.spanId);if(t){t.open=e.open,e.durationMs!==void 0&&(t.durationMs=e.durationMs),e.status&&(t.status=e.status);return}let n=h({kind:`span`,key:y(`span`),spanId:e.spanId,text:G(e.name),open:e.open,...e.durationMs===void 0?{}:{durationMs:e.durationMs},...e.status?{status:e.status}:{},at:e.open?e.at:e.startedAt??e.at});s.set(e.spanId,n);let i=Fe(e.name);if(i){let t=l.get(i);t||(t={group:h({kind:`phase`,phase:i,key:y(i),rows:[],open:!0}),toggled:!1},l.set(i,t),r.log.push(t.group)),t.group.rows.push(n),c.set(e.spanId,t.group);return}r.log.push(n);return}case`answer`:O(`wrote the reply`,`#reply`),r.reply={text:e.text,at:e.at,files:A};return}}function N(e){let t=l.get(e);t&&!t.toggled&&(t.group.open=!1)}function P(e){let t=e,s=t?.type===`span_start`||t?.type===`span_end`;if(t&&typeof t.type==`string`){let t=e;i.push(t),K(t)&&Te(a,t,``),r.traceVersion++}t&&!s&&typeof t.at==`number`&&((r.firstAt===null||t.at<r.firstAt)&&(r.firstAt=t.at),(r.lastAt===null||t.at>=r.lastAt)&&(r.lastAt=t.at,r.lastAtWall=w()));for(let t of n.push(e))M(t);let c=e;if((c?.type===`tool_call`||c?.type===`tool_result`)&&typeof c.logIndex==`number`&&!f.has(c.logIndex)){let e=(typeof c.callId==`string`?d.get(c.callId):void 0)??o.get(_);e&&f.set(c.logIndex,e)}}function F(e){if(e.turn)return`span-${e.turn.spanId}`;let t=e.items.find(e=>e.kind===`call`);return t?.kind===`call`?`call-${t.call.id}`:void 0}function ee(e){let t=f.get(e);if(!t){let n=-1;for(let[r,i]of f)r<e&&r>n&&(n=r,t=i)}if(!t)return;let n=F(t);return n===void 0?void 0:{step:t,anchor:n}}function I(){for(let e of u.values())if(e.status===`running`)return e;return null}function L(e){r.allOpen=e;for(let t of l.values())t.group.open=e,t.toggled=!0;for(let t of u.values())t.open=e}function te(e){if(e.startsWith(`call-`)){let t=e.slice(5),n=d.get(t);return!n||!u.has(t)?!1:(n.manual=!0,n.groupOpen=!0,!0)}if(e.startsWith(`span-`)){let t=e.slice(5),n=c.get(t);if(n){n.open=!0;let e=l.get(n.phase);return e&&(e.toggled=!0),!0}if(s.has(t))return!0;for(let e of r.log)if(e.kind===`step`&&e.turn?.spanId===t||e.kind===`turn`&&e.turn.spanId===t)return!0}return!1}function R(e){r.stopMode=e}function ne(e){r.elided.push(e),r.log.push({kind:`note`,key:y(`note`),replay:!0,text:He(e)}),r.placeholder=!1,r.traceVersion++}return{state:r,handle:P,noteElided:ne,spanSet:()=>[...a.values()],losses:e=>i.losses({windowStart:e,elided:r.elided}),pendingCall:I,flushPendingTurn:O,closePhases(){N(`getting_ready`),N(`finishing_up`)},setAllOpen:L,togglePhase(e){e.open=!e.open;let t=l.get(e.phase);t&&(t.toggled=!0)},reveal:te,landing:ee,callHeadline:e=>u.get(e)?.headline,toggleGroup(e){e.manual=!0,e.groupOpen=!e.groupOpen},toggleCall(e){e.open=!e.open},markStopping:R,opensByDefault:b}}function qe(e,t){return e.lastAt===null||e.lastAtWall===null?null:e.lastAt+(t-e.lastAtWall)}function Je(e,t){return{now:n=>e.serverNow+(n-t),elapsedMs(t){return A(e,this.now(t))??0},elapsedAt(t){return A({receivedAt:e.receivedAt,startedAt:e.startedAt,finishedAt:t})??0}}}function Ye(e){if(typeof e!=`string`)return{};let t;try{t=JSON.parse(e)}catch{return{}}if(typeof t!=`object`||!t)return{};let{sealedAt:n,replyOk:r}=t;return{...typeof n==`number`&&Number.isFinite(n)&&n>0?{sealedAt:n}:{},...typeof r==`boolean`?{replyOk:r}:{}}}function Xe(e){return e.replyOk===!1?`reply failed`:e.replyOk!==!0||e.finishedAt===void 0||e.sealedAt===void 0?``:`delivered in ${k(Math.max(0,e.sealedAt-e.finishedAt),`clock`)}`}function Ze(e){if(typeof e!=`string`)return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t)return null;let{finishedAt:n}=t;return typeof n==`number`&&Number.isFinite(n)&&n>0?{finishedAt:n}:null}var Qe=Symbol(`sb-runner-clock`),$e=Symbol(`sb-artifact-links`),et=Symbol(`sb-reply-landed`);function tt(e,t){return e===t||!e.includes(`/`)!=!t.includes(`/`)&&Z(e)===Z(t)}function Z(e){if(!e)return`model`;let t=e.lastIndexOf(`/`);return(t===-1?e:e.slice(t+1))||e}var nt=6e4;function rt(e,t,n){let r=qe(e,n);if(r===null||e.lastAt===null)return{kind:`starting`};if(t)return{kind:`call`,call:t,elapsedMs:Math.max(0,r-(t.startedAt??e.lastAt))};let i=Math.max(0,r-e.lastAt);return{kind:`thinking`,elapsedMs:i,slow:i>=nt}}var it=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),at=65536,ot=new Set([`application/json`,`application/x-ndjson`,`application/xml`,`application/yaml`]);function st(e){return it.has(e)?`image`:e.startsWith(`video/`)?`video`:e.startsWith(`audio/`)?`audio`:e.startsWith(`text/`)||ot.has(e)?`text`:`other`}var ct=[`data-open-images`],lt={class:`mb-1.5 flex items-baseline gap-2 font-mono text-[0.68rem] font-medium uppercase tracking-wider text-dimmed`},ut={class:`count font-normal normal-case tracking-normal`},dt={class:`m-0 flex list-none flex-col gap-1.5 p-0`},ft=[`data-direction`,`data-kind`,`data-open`,`data-expired`],pt={class:`flex flex-wrap items-baseline gap-x-2.5 gap-y-0.5 font-mono text-xs`},mt=[`title`],ht=[`aria-expanded`,`aria-controls`,`onClick`],gt={key:1,class:`name font-medium text-toned`},_t={class:`fact text-dimmed`},vt={class:`fact text-dimmed`},yt={key:2,class:`expired text-warn`},bt=[`id`,`aria-hidden`],xt={class:`min-h-0 overflow-hidden`},St=[`src`,`alt`,`onError`],Ct=[`src`,`onError`],wt=[`src`,`onError`],Tt={key:3,class:`mt-1.5`},Et={key:0,class:`text max-h-96 overflow-auto rounded border border-(--ui-border) bg-elevated p-2.5 font-mono text-xs whitespace-pre-wrap break-words text-toned`},Dt={key:1,class:`text-xs text-bad`},Ot={key:2,class:`mt-1 text-xs text-dimmed`},kt={key:4,class:`other mt-1.5 flex flex-wrap items-baseline gap-x-3 gap-y-1 font-mono text-xs text-dimmed`},At=[`href`,`download`],jt=0,Mt=C({__name:`MessageFiles`,props:{files:{},openImages:{type:Boolean,default:!0}},setup(e){let t=e,r=o($e,null),a=h(new Set),s=h(new Set),l=h(new Set),u=h(new Map);function d(){for(let e of t.files)t.openImages&&st(e.contentType)===`image`&&!s.has(e.key)&&!l.has(e.key)&&(s.add(e.key),l.add(e.key))}d(),i(()=>[t.files,t.files.length],d),jt+=1;let f=`files-${jt}`,C=g(()=>t.files.map((e,t)=>({...e,href:r?Be(r,e.key):null,kind:st(e.contentType),open:s.has(e.key),mounted:l.has(e.key),expired:a.has(e.key),panelId:`${f}-file-${t}`})));function w(e){if(e.href&&!e.expired){if(s.has(e.key)){s.delete(e.key);return}s.add(e.key),l.add(e.key),e.kind===`text`&&!u.has(e.key)&&T(e.key,e.href)}}async function T(e,t){u.set(e,{text:``,truncated:!1});try{let n=await fetch(t,{credentials:`same-origin`});if(n.status===410){a.add(e),u.delete(e);return}if(!n.ok||!n.body)throw Error(`HTTP ${n.status}`);let r=n.body.getReader(),i=new TextDecoder,o=``,s=0,c=!1;for(;;){let{value:e,done:t}=await r.read();if(t)break;let n=at-s,a=e.byteLength>n?e.subarray(0,n):e;if(o+=i.decode(a,{stream:!0}),s+=a.byteLength,s>=65536){c=e.byteLength>n||!(await r.read()).done,await r.cancel();break}}u.set(e,{text:o,truncated:c})}catch(t){u.set(e,{text:``,truncated:!1,error:t instanceof Error?t.message:String(t)})}}function E(e){a.add(e),s.delete(e)}let D=e=>e===`out`?`↑ sent`:`↓ received`,O=e=>e===`out`?`sent by the run`:`received from the thread`;return(t,i)=>(p(),v(`div`,{class:`files mt-3 border-t border-(--ui-border) pt-2`,"data-open-images":e.openImages?`1`:`0`},[_(`h3`,lt,[i[0]||=_(`span`,null,`Files`,-1),_(`span`,ut,`· `+x(e.files.length)+` file`+x(e.files.length===1?``:`s`),1)]),_(`ul`,dt,[(p(!0),v(c,null,y(C.value,e=>(p(),v(`li`,{key:e.key,class:`artifact`,"data-direction":e.direction,"data-kind":e.kind,"data-open":e.open?`1`:`0`,"data-expired":e.expired?`1`:`0`},[_(`div`,pt,[_(`span`,{class:`dir shrink-0 select-none text-dimmed`,title:O(e.direction)},x(D(e.direction)),9,mt),e.href&&!e.expired?(p(),v(`button`,{key:0,type:`button`,class:`name flex cursor-pointer items-baseline gap-1.5 border-0 bg-transparent p-0 font-mono text-xs font-medium text-primary hover:underline focus-visible:outline-2 focus-visible:outline-primary`,"aria-expanded":e.open?`true`:`false`,"aria-controls":e.panelId,onClick:t=>w(e)},[_(`span`,{class:S([`chev inline-block select-none text-[0.65rem] text-dimmed transition-transform motion-reduce:transition-none`,e.open?`rotate-90`:``]),"aria-hidden":`true`},`❯`,2),_(`span`,null,x(e.name),1)],8,ht)):(p(),v(`span`,gt,x(e.name),1)),_(`span`,_t,x(b(V)(e.size)),1),_(`span`,vt,x(e.contentType),1),e.expired&&b(r)?(p(),v(`span`,yt,`expired after `+x(b(r).retentionDays)+` days`,1)):m(``,!0)]),e.href&&!e.expired?(p(),v(`div`,{key:0,id:e.panelId,class:`panel grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none`,style:n({gridTemplateRows:e.open?`1fr`:`0fr`}),"aria-hidden":e.open?`false`:`true`},[_(`div`,xt,[e.mounted?(p(),v(c,{key:0},[e.kind===`image`?(p(),v(`img`,{key:0,class:`preview mt-1.5 max-h-96 max-w-full rounded border border-(--ui-border)`,src:e.href,alt:e.name,loading:`lazy`,onError:t=>E(e.key)},null,40,St)):e.kind===`video`?(p(),v(`video`,{key:1,class:`preview mt-1.5 max-h-96 max-w-full rounded border border-(--ui-border) bg-black`,src:e.href,controls:``,playsinline:``,preload:`auto`,onError:t=>E(e.key)},null,40,Ct)):e.kind===`audio`?(p(),v(`audio`,{key:2,class:`preview mt-1.5 w-full max-w-xl`,src:e.href,controls:``,preload:`auto`,onError:t=>E(e.key)},null,40,wt)):e.kind===`text`?(p(),v(`div`,Tt,[u.get(e.key)&&!u.get(e.key).error?(p(),v(`pre`,Et,x(u.get(e.key).text),1)):m(``,!0),u.get(e.key)?.error?(p(),v(`p`,Dt,` could not read the file: `+x(u.get(e.key).error),1)):u.get(e.key)?.truncated?(p(),v(`p`,Ot,` showing the first `+x(b(V)(b(at)))+` of `+x(b(V)(e.size)),1)):m(``,!0)])):(p(),v(`div`,kt,[_(`span`,null,`no preview for `+x(e.contentType),1),_(`a`,{class:`download inline-block rounded border border-default px-2 py-0.5 font-medium text-toned no-underline hover:bg-accented hover:text-primary focus-visible:outline-2 focus-visible:outline-primary`,href:e.href,download:e.name},`Download `+x(b(V)(e.size)),9,At)]))],64)):m(``,!0)])],12,bt)):m(``,!0)],8,ft))),128))])],8,ct))}}),Nt=[`id`,`open`,`title`,`data-status`,`data-heat`],Pt={key:0,class:`spin inline-block size-[0.7em] shrink-0 animate-spin self-center rounded-full border-2 border-accented border-t-info motion-reduce:animate-none`,role:`img`,"aria-label":`running`},Ft={key:2,class:`dollar shrink-0 select-none text-dimmed`},It={key:3,class:`tool shrink-0 rounded bg-accented px-1.5 text-xs leading-normal text-muted`},Lt={key:0,class:`cmd brief min-w-0 flex-1 truncate text-info`},Rt={key:1,class:`cmd full min-w-0 flex-1 whitespace-pre-wrap break-words text-info max-sm:order-last max-sm:basis-full`},zt={key:5,class:`cmd min-w-0 flex-1`},Bt={class:`facts ml-auto flex shrink-0 gap-2.5 text-xs tabular-nums text-muted`},Vt={key:0,class:`fact elapsed`,title:`since this call started (runner clock)`},Ht={key:0,class:`over rounded bg-bad/15 px-1 font-medium text-bad`},Ut={key:1,class:`over rounded bg-bad/15 px-1 font-medium text-bad`},Wt={class:`body`},Gt={key:1,class:`none px-3 py-1.5 text-xs italic text-dimmed`},Kt={key:2,class:`none px-3 py-1.5 text-xs italic text-dimmed`},qt=C({__name:`CallCard`,props:{call:{}},setup(e){let t=e,r=o(Qe,null),i=o(et,null),a=g(()=>{let e=r?.value;return t.call.status!==`running`||typeof e!=`number`||t.call.startedAt===void 0?``:k(Math.max(0,e-t.call.startedAt),`clock`)}),l=g(()=>B(t.call.durationMs,`tool`,t.call.timedOut)),u=g(()=>z(l.value)),f=g(()=>t.call.durationMs===void 0?-1:t.call.facts.length-1);function h(){t.call.open=!t.call.open}return(t,r)=>(p(),v(`details`,{id:`call-${e.call.id}`,class:S([`call rounded-lg border border-default bg-elevated font-mono open:bg-accented`,e.call.status]),open:e.call.open,title:typeof e.call.startedAt==`number`?`started ${b(O)(e.call.startedAt)}`:void 0,"data-status":e.call.status,"data-heat":l.value.level},[_(`summary`,{class:S([`flex min-w-0 cursor-pointer list-none items-baseline gap-3 rounded-lg pl-3 pr-[calc(var(--sb-gutter)-1px)] py-2 hover:bg-accented/60 focus-visible:outline-2 focus-visible:outline-primary max-sm:flex-wrap [&::-webkit-details-marker]:hidden`,e.call.open?`rounded-b-none border-b border-default`:``]),onClick:s(h,[`prevent`])},[_(`span`,{class:S([`chev shrink-0 select-none text-xs text-dimmed transition-transform motion-reduce:transition-none`,e.call.open?`rotate-90`:``])},`❯`,2),e.call.status===`running`?(p(),v(`span`,Pt)):(p(),v(`span`,{key:1,class:S([`glyph w-[1em] shrink-0 text-center font-medium`,e.call.status===`ok`?`text-ok`:e.call.status===`failed`?`text-bad`:`text-warn`])},x(e.call.status===`ok`?`✓`:e.call.status===`failed`?`✗`:`⚠`),3)),e.call.shell?(p(),v(`span`,Ft,`$`)):(p(),v(`span`,It,x(e.call.tool),1)),e.call.chipOnly?(p(),v(`span`,zt)):(p(),v(c,{key:4},[e.call.open?(p(),v(`code`,Rt,x(e.call.title),1)):(p(),v(`code`,Lt,x(e.call.headline),1))],64)),_(`span`,Bt,[a.value?(p(),v(`span`,Vt,x(a.value),1)):m(``,!0),(p(!0),v(c,null,y(e.call.facts,(t,r)=>(p(),v(c,{key:r},[r===f.value&&l.value.over?(p(),v(`span`,Ht,`timed out`)):m(``,!0),_(`span`,{class:S([`fact`,[e.call.status!==`ok`&&r===0?`text-bad`:``,r===f.value&&l.value.over?`font-medium text-bad`:``,r===f.value&&u.value?`heat`:``,r===f.value&&l.value.level>=2&&!l.value.over?`font-medium`:``]]),style:n(r===f.value?u.value:void 0)},x(t),7)],64))),128)),l.value.over&&f.value===-1?(p(),v(`span`,Ut,`timed out`)):m(``,!0)])],2),_(`div`,Wt,[e.call.hasResult&&e.call.output?(p(),v(`pre`,{key:0,class:S([`out max-h-[28rem] overflow-auto whitespace-pre-wrap break-words px-3.5 py-2.5 font-mono leading-normal`,e.call.status===`failed`?`text-bad`:`text-toned`])},x(e.call.output),3)):e.call.hasResult?(p(),v(`div`,Gt,`no output`)):(p(),v(`div`,Kt,`no output yet`)),e.call.files&&e.call.files.length>0?(p(),d(Mt,{key:3,class:`mx-3.5 mb-2.5`,files:e.call.files,"open-images":!b(i)},null,8,[`files`,`open-images`])):m(``,!0)])],10,Nt))}}),Jt=[`title`],Yt=[`title`],Xt={class:`skillname whitespace-nowrap font-mono font-medium text-skill`},Zt={key:0,class:`skilldesc min-w-0 flex-1 truncate text-xs text-muted`},Qt={class:`facts ml-auto flex shrink-0 gap-2.5 font-mono text-xs text-muted`},$t=[`href`],en={class:`fact`},tn=C({__name:`StepItems`,props:{items:{}},setup(e){return(t,n)=>(p(!0),v(c,null,y(e.items,(e,t)=>(p(),v(c,{key:t},[e.kind===`call`?(p(),d(qt,{key:0,call:e.call},null,8,[`call`])):e.kind===`quiet`?(p(),v(`div`,{key:1,class:`quiet flex items-baseline gap-3 pl-3 pr-(--sb-gutter) py-0.5 font-mono text-xs text-dimmed`,title:e.at===void 0?void 0:b(O)(e.at)},[_(`span`,null,x(e.text),1)],8,Jt)):(p(),v(`div`,{key:2,class:`skill flex items-baseline gap-2.5 pl-3 pr-(--sb-gutter) py-0.5`,title:e.skill.at===void 0?void 0:b(O)(e.skill.at)},[n[0]||=_(`span`,{class:`skillmark shrink-0 select-none text-xs`},`📚`,-1),_(`span`,Xt,`skill `+x(e.skill.name),1),e.skill.description?(p(),v(`span`,Zt,x(e.skill.description),1)):m(``,!0),_(`span`,Qt,[e.skill.source?(p(),v(`a`,{key:0,class:`fact text-primary hover:underline`,href:e.skill.source,target:`_blank`,rel:`noopener noreferrer`},`source`,8,$t)):m(``,!0),_(`span`,en,x(b(V)(e.skill.bodyBytes))+` into context`,1)])],8,Yt))],64))),128))}}),nn=[`id`,`data-live`],rn={class:`head flex items-baseline gap-x-6 pb-1.5 pr-(--sb-gutter)`},an={class:`min-w-0 flex-1`},on={key:0,class:`meta flex flex-wrap items-baseline gap-x-2.5 gap-y-0.5 font-mono text-xs tabular-nums text-dimmed`},sn=[`data-heat`,`title`],cn=[`title`],ln=[`title`],un={key:2,class:`nonar font-sans text-sm italic text-dimmed`},dn=[`title`],fn={key:0,class:`narration flex items-baseline gap-3 pb-1.5 pr-(--sb-gutter)`},pn={key:1,class:`narration flex items-baseline gap-3 pb-1.5 pr-(--sb-gutter)`},mn={class:`nonar flex-1 font-sans text-sm italic text-dimmed`},hn={class:`calls flex flex-col gap-2`},gn=[`open`,`data-group-open`],_n=[`title`],vn=[`data-ok`,`data-bad`,`data-infra`,`data-running`],yn=[`data-heat`],bn={class:`gbody flex flex-col gap-2 pb-1 pt-1.5`},xn=C({__name:`StepBlock`,props:{step:{}},emits:[`toggleGroup`],setup(e,{emit:t}){let r=e,i=t,a=g(()=>r.step.items.filter(e=>e.kind===`call`)),o=g(()=>a.value.length>=2),u=g(()=>{let e=0,t=0,n=0,r=0,i=0;for(let o of a.value){if(o.kind!==`call`)continue;let a=o.call;a.status===`ok`?e++:a.status===`failed`?t++:a.status===`infra`?n++:r++,typeof a.durationMs==`number`&&(i+=a.durationMs)}return{n:e+t+n+r,ok:e,bad:t,infra:n,running:r,ms:i}}),h=g(()=>We(u.value)),C=g(()=>a.value.some(e=>e.kind===`call`&&e.call.timedOut)),w=g(()=>B(u.value.ms,`tool`,C.value)),T=g(()=>z(w.value)),E=g(()=>r.step.turn?B(r.step.turn.durationMs,`turn`):void 0),D=g(()=>E.value?z(E.value):void 0),A=g(()=>{let e=a.value[0];return e?.kind===`call`?e.call.startedAt:void 0});return(t,r)=>(p(),v(`li`,{id:e.step.turn?`span-${e.step.turn.spanId}`:void 0,class:S([`step relative border-l-2 pb-3 pl-3 pt-2`,e.step.live?`border-ok/40`:`border-(--ui-border-accented)/50`]),"data-live":e.step.live?`1`:void 0},[_(`div`,rn,[_(`div`,an,[e.step.turn?(p(),v(`div`,on,[_(`span`,{class:S([`thought`,[D.value?`heat`:``,E.value&&E.value.level>=2?`font-medium`:``]]),style:n(D.value),"data-heat":E.value?.level,title:e.step.turn.label},`thought `+x(e.step.turn.chip),15,sn),e.step.turn.switched?(p(),v(`span`,{key:0,class:`model-switch order-first rounded border border-warn/40 bg-warn/10 px-1.5 font-medium text-warn`,title:`model changed: this turn ran on ${e.step.turn.model}`},`⇄ `+x(b(Z)(e.step.turn.model)),9,cn)):e.step.turn.showModel?(p(),v(`span`,{key:1,class:`model-badge order-first rounded bg-accented px-1.5 text-[0.68rem] font-medium leading-normal tracking-wider text-muted`,title:e.step.turn.model},x(b(Z)(e.step.turn.model)),9,ln)):m(``,!0),(p(!0),v(c,null,y(e.step.turn.facts,(e,t)=>(p(),v(`span`,{key:t,class:`fact`},x(e),1))),128))])):e.step.narration===null?(p(),v(`span`,un,x(e.step.note),1)):(p(),d(H,{key:1,text:e.step.narration},null,8,[`text`]))]),e.step.at===void 0?m(``,!0):(p(),v(`span`,{key:0,class:`ts shrink-0 select-none font-mono text-xs tabular-nums text-dimmed`,title:b(O)(e.step.at)},x(b(ie)(e.step.at)),9,dn))]),e.step.turn&&e.step.narration!==null?(p(),v(`div`,fn,[l(H,{text:e.step.narration},null,8,[`text`])])):e.step.turn&&e.step.narration===null&&!e.step.turn.facts.length?(p(),v(`div`,pn,[_(`span`,mn,x(e.step.note),1)])):m(``,!0),_(`div`,hn,[o.value?(p(),v(`details`,{key:1,class:`grp`,open:e.step.groupOpen,"data-group-open":e.step.groupOpen?`1`:`0`},[_(`summary`,{class:`gsummary flex cursor-pointer list-none items-baseline gap-3 rounded-md pl-3 pr-(--sb-gutter) py-1 font-mono text-xs text-dimmed hover:bg-accented/40 hover:text-muted focus-visible:outline-2 focus-visible:outline-primary [&::-webkit-details-marker]:hidden`,title:typeof A.value==`number`?`calls began ${b(O)(A.value)}`:void 0,onClick:r[0]||=s(e=>i(`toggleGroup`),[`prevent`])},[_(`span`,{class:S([`gchev shrink-0 select-none transition-transform motion-reduce:transition-none`,e.step.groupOpen?`rotate-90`:``])},`❯`,2),_(`span`,{class:S([`gcount`,u.value.bad||u.value.infra?`text-bad`:``]),"data-ok":u.value.ok,"data-bad":u.value.bad,"data-infra":u.value.infra,"data-running":u.value.running},x(h.value),11,vn),u.value.ms>0?(p(),v(`span`,{key:0,class:S([`gtime ml-auto tabular-nums`,[T.value?`heat`:``,w.value.over?`font-medium text-bad`:w.value.level>=2?`font-medium`:``]]),style:n(T.value),"data-heat":w.value.level},[w.value.over?(p(),v(c,{key:0},[f(`timed out · `)],64)):m(``,!0),f(x(b(k)(u.value.ms,`clock`)),1)],14,yn)):m(``,!0)],8,_n),_(`div`,bn,[l(tn,{items:e.step.items},null,8,[`items`])])],8,gn)):(p(),d(tn,{key:0,items:e.step.items},null,8,[`items`]))])],10,nn))}}),Q={"getting ready":`paint-ready`,thinking:`paint-thinking`,"in tools":`paint-tools`,"finishing up":`paint-finishing`,"Switchboard overhead":`paint-overhead`,"not recorded":`paint-lost`,"not loaded":`paint-elided`},Sn={getting_ready:`getting ready`,finishing_up:`finishing up`};function Cn(e){return Q[Sn[e]]}var wn={id:`timeline`,class:`block mb-4 rounded-lg border border-default bg-(--ui-bg-muted) px-(--sb-gutter) py-3`,"data-testid":`timeline`},Tn={class:`mb-2 flex items-baseline gap-2.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},En={class:`ml-auto flex items-baseline gap-3 font-normal normal-case tracking-normal`},Dn=[`href`],On={class:`lede font-mono text-sm text-toned`},kn={class:`shape tabular-nums`},An={key:0,class:`current text-muted`},jn={key:0,class:`note mt-0.5 text-xs text-muted`},Mn=[`aria-label`],Nn=[`title`,`data-term`],Pn={class:`legend mt-2 flex flex-wrap gap-x-4 gap-y-1 font-mono text-xs`},Fn=[`title`,`data-term`],In={class:`term text-muted`},Ln={class:`ms tabular-nums text-toned`},Rn=[`title`],zn={class:`ranked mt-1 flex flex-col gap-1 font-mono text-xs`},Bn={class:`ms w-14 shrink-0 tabular-nums text-toned`},Vn=[`href`,`data-anchor`,`onClick`],Hn=C({__name:`TimelineSection`,props:{vm:{},eventsHref:{}},emits:[`reveal`],setup(t,{emit:r}){let i=t,a=r;function o(e){return`${k(e.ms,`clock`)} ${e.term}${e.hatched?` (in flight)`:``}`}function l(){e.copyText(JSON.stringify(i.vm.debug,null,2))}return(e,r)=>(p(),v(`section`,wn,[_(`h2`,Tn,[r[0]||=_(`span`,null,`Where the time went`,-1),_(`span`,En,[t.eventsHref?(p(),v(`a`,{key:0,class:`text-dimmed no-underline hover:text-primary hover:underline`,href:t.eventsHref,title:`the stored events, as JSON lines`},`raw events`,8,Dn)):m(``,!0),_(`button`,{type:`button`,class:`debug cursor-pointer text-dimmed hover:text-toned`,title:`the partition and the raw span names, for a bug report`,onClick:l},` Copy debug JSON `)])]),_(`p`,On,[_(`span`,kn,x(t.vm.shown?t.vm.total:t.vm.lede),1),t.vm.current?(p(),v(`span`,An,` · `+x(t.vm.current),1)):m(``,!0)]),(p(!0),v(c,null,y(t.vm.captions,e=>(p(),v(`p`,{key:e,class:`caption mt-0.5 text-xs text-muted`},x(e),1))),128)),t.vm.note?(p(),v(`p`,jn,x(t.vm.note),1)):m(``,!0),t.vm.shown?(p(),v(c,{key:1},[_(`div`,{class:`bar mt-2.5 flex h-2 w-full overflow-hidden rounded-sm`,role:`img`,"aria-label":t.vm.lede},[(p(!0),v(c,null,y(t.vm.bar,(e,t)=>(p(),v(`div`,{key:t,class:S([`seg h-full`,[b(Q)[e.term],e.hatched?`paint-hatched hatched`:``]]),style:n({width:`${e.pct}%`}),title:o(e),"data-term":e.term},null,14,Nn))),128))],8,Mn),_(`ul`,Pn,[(p(!0),v(c,null,y(t.vm.legend,e=>(p(),v(`li`,{key:e.term,class:`flex items-baseline gap-1.5 cursor-help`,title:e.definition,"data-term":e.term},[_(`span`,{class:S([`swatch inline-block size-2 shrink-0 self-center rounded-[2px]`,b(Q)[e.term]])},null,2),_(`span`,In,x(e.term),1),_(`span`,Ln,x(e.text),1)],8,Fn))),128))]),t.vm.ranked.length>0?(p(),v(c,{key:0},[_(`h3`,{class:`ranked-head mt-3 inline-block cursor-help text-xs font-medium text-muted underline decoration-dotted decoration-(--ui-border-accented) underline-offset-2`,title:t.vm.rankedNote},` Longest steps `,8,Rn),_(`ol`,zn,[(p(!0),v(c,null,y(t.vm.ranked,(e,t)=>(p(),v(`li`,{key:t,class:`flex items-baseline gap-2`},[_(`span`,Bn,x(b(k)(e.ms,`clock`)),1),_(`a`,{class:`label min-w-0 truncate text-muted no-underline hover:text-primary hover:underline`,href:`#${e.anchor}`,"data-anchor":e.anchor,title:`scroll to this step`,onClick:s(t=>a(`reveal`,e.anchor),[`prevent`])},x(e.label),9,Vn),(p(!0),v(c,null,y(e.facts,e=>(p(),v(`span`,{key:e,class:`fact shrink-0 rounded border border-accented px-1 text-dimmed`},x(e),1))),128))]))),128))])],64)):m(``,!0)],64)):m(``,!0)]))}});function Un(e,t){let{window:n,owner:r,finished:i}=t,a=Math.max(0,n.end-n.start),o=new Map(e.map(e=>[e.spanId,e])),s=new Map,c=e=>{let t=s.get(e.spanId);if(t!==void 0)return t;s.set(e.spanId,1);let n=e.parentSpanId?o.get(e.parentSpanId):void 0,r=n?c(n)+1:1;return s.set(e.spanId,r),r},l=e=>{let t=e,n=new Set;for(;t&&!n.has(t.spanId);){if(n.add(t.spanId),U(t.name,r)?.kind===`background`)return!0;t=t.parentSpanId?o.get(t.parentSpanId):void 0}return!1},u=t.losses.map(e=>Math.max(n.start,e.from)).sort((e,t)=>e-t),d=e=>{if(e.endedAt!==void 0)return Math.min(n.end,e.endedAt);if(!i)return n.end;let t=u.find(t=>t>e.startedAt);return t===void 0?n.end:Math.min(n.end,t)},f=[],p=[];for(let t of e){let e=U(t.name,r);if(!e)continue;let i=Math.max(n.start,t.startedAt);if(e.kind===`background`){let e=Math.min(n.end,t.endedAt??n.end);e>i&&p.push([i,e]);continue}if(e.kind!==`counted`||l(t))continue;let a=d(t);a<=i||f.push({start:i,end:a,bucket:e.bucket,depth:c(t),startedAt:t.startedAt,spanId:t.spanId})}f.sort((e,t)=>t.depth-e.depth||e.startedAt-t.startedAt||(e.spanId<t.spanId?-1:+(e.spanId>t.spanId)));let m=new Set([n.start,n.end]);for(let e of f)m.add(e.start),m.add(e.end);for(let e of t.losses)m.add($(e.from,n)),m.add($(e.to,n));for(let[e,t]of p)m.add(e),m.add(t);let h=[...m].filter(e=>e>=n.start&&e<=n.end).sort((e,t)=>e-t),g={getting_ready:0,thinking:0,tools:0,finishing_up:0},_=0,v=0,y=0;for(let e=0;e+1<h.length;e++){let r=h[e],i=h[e+1],a=i-r;if(a<=0)continue;let o=f.find(e=>e.start<=r&&e.end>=i);if(o){g[o.bucket]+=a;continue}if(t.losses.some(e=>e.kind===`lost`&&$(e.from,n)<=r&&$(e.to,n)>=i)){_+=a;continue}if(t.losses.some(e=>e.kind===`elided`&&$(e.from,n)<=r&&$(e.to,n)>=i)){v+=a;continue}p.some(([e,t])=>e<=r&&t>=i)&&(y+=a)}let b=g.getting_ready+g.thinking+g.tools+g.finishing_up;return{windowMs:a,gettingReadyMs:g.getting_ready,thinkingMs:g.thinking,toolsMs:g.tools,finishingUpMs:g.finishing_up,overheadMs:Math.max(0,a-b-_-v),notRecordedMs:_,notLoadedMs:v,backgroundOnlyMs:y}}function $(e,t){return Math.min(t.end,Math.max(t.start,e))}function Wn(e){let t=Math.floor(e.windowMs/1e3),n=[[`getting ready`,Math.floor(e.gettingReadyMs/1e3)],[`thinking`,Math.floor(e.thinkingMs/1e3)],[`in tools`,Math.floor(e.toolsMs/1e3)],[`finishing up`,Math.floor(e.finishingUpMs/1e3)],[`not recorded`,Math.floor(e.notRecordedMs/1e3)],[`not loaded`,Math.floor(e.notLoadedMs/1e3)]],r=n.reduce((e,[,t])=>e+t,0),i=n.filter(([,e])=>e>0).map(([e,t])=>({term:e,s:t})),a=t-r;a>0&&i.push({term:`Switchboard overhead`,s:a});let o=[`getting ready`,`thinking`,`in tools`,`finishing up`,`Switchboard overhead`,`not recorded`,`not loaded`];return i.sort((e,t)=>o.indexOf(e.term)-o.indexOf(t.term)),{totalS:t,items:i}}function Gn(e){return[e.gettingReadyMs,e.thinkingMs,e.toolsMs,e.finishingUpMs,e.overheadMs,e.notRecordedMs,e.notLoadedMs].filter(t=>t>=2e3||e.windowMs>0&&t/e.windowMs>=.05).length>=2}function Kn(e,t){if(t===void 0||t<6e4)return;let n=k(t,`clock`);return e===`before`?`queued ${n} before we saw it`:`queued ${n} behind the previous run`}var qn={"getting ready":`before the agent's first turn: reading the thread, finding the repo, checking out, loading tools`,thinking:`the model's turns — from a request to the model until its reply came back`,"in tools":`the commands and tool calls the model ran`,"finishing up":`after the agent's last turn: posting the PR, checking the workspace`,"Switchboard overhead":`orchestration between steps, and moments when only a background read was running — the time no step claims`,"not recorded":`a stretch of the run the record does not carry`,"not loaded":`a stretch of the run this page did not load — the record has the full shape`},Jn=`Ranked by each step's own time, its children excluded — the bar counts every instant once.`,Yn=`currently delivering`,Xn=`getting ready: not recorded (too large)`,Zn=`no timing data`,Qn=`not loaded (the record has the full shape)`,$n={getting_ready:`getting ready`,thinking:`thinking`,tools:`in tools`,finishing_up:`finishing up`};function er(e){let{spans:t,window:n,owner:r}=e,i=e.phase!==`live`,a=Un(t,{window:n,owner:r,finished:i,losses:e.losses}),o=Wn(a),s=k(o.totalS*1e3,`clock`),c=t.find(e=>e.name===`request`&&e.parentSpanId===void 0),l=e.phase===`live`?nr(t,r,n):void 0,u=ir(e,l),d=l?G(l.name):``,f={window:n,owner:r,phase:e.phase,partition:a,spans:t.map(e=>({spanId:e.spanId,parentSpanId:e.parentSpanId,name:e.name,startedAt:e.startedAt,endedAt:e.endedAt,status:e.status,attrs:e.attrs}))};if(e.untimed)return{total:s,current:u,openStep:d,captions:[],rankedNote:Jn,debug:f,lede:s,shown:!1,bar:[],legend:[],ranked:[],note:Zn};let p={total:s,current:u,openStep:d,captions:[Kn(`before`,tr(c,`queuedBeforeMs`)),Kn(`behind`,tr(c,`queuedBehindMs`))].filter(e=>e!==void 0),rankedNote:Jn,debug:f};if(!c)return{...p,lede:s,shown:!1,bar:[],legend:[],ranked:[],note:i?Xn:``};let m=t=>t===`not recorded`?`not recorded${e.truncated?` (too large)`:``}`:t===`not loaded`?Qn:t,h=Gn(a)&&o.items.length>0,g=h?`${s} — ${o.items.map(({term:e,s:t})=>`${k(t*1e3,`clock`)} ${m(e)}`).join(` · `)}`:a.windowMs>0?`${s} — ${m(or(a))}`:s,_=h?o.items.map(({term:t,s:n})=>({term:t,text:k(n*1e3,`clock`),definition:t===`not recorded`&&e.truncated?`${qn[t]} (too large)`:qn[t]})):[];return{...p,lede:g,shown:h,bar:h?sr(a,l):[],legend:_,ranked:h?cr(t,c,r,n,e.callTitle):[],note:``}}function tr(e,t){let n=e?.attrs[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function nr(e,t,n){let r=new Map(e.map(e=>[e.spanId,e])),i=e=>{let t=1,n=new Set([e.spanId]),i=e.parentSpanId?r.get(e.parentSpanId):void 0;for(;i&&!n.has(i.spanId);)n.add(i.spanId),t++,i=i.parentSpanId?r.get(i.parentSpanId):void 0;return t},a;for(let o of e){if(o.endedAt!==void 0||o.startedAt>=n.end)continue;let e=U(o.name,t);if(e?.kind!==`counted`||rr(o,r,t))continue;let s=i(o);(!a||s>a.depth||s===a.depth&&o.startedAt>a.span.startedAt)&&(a={span:o,depth:s,bucket:e.bucket})}if(a)return{bucket:a.bucket,name:a.span.name,elapsedMs:Math.max(0,n.end-Math.max(n.start,a.span.startedAt))}}function rr(e,t,n){let r=e,i=new Set;for(;r&&!i.has(r.spanId);){if(i.add(r.spanId),U(r.name,n)?.kind===`background`)return!0;r=r.parentSpanId?t.get(r.parentSpanId):void 0}return!1}function ir(e,t){return e.phase===`delivering`?Yn:e.phase===`ended`?Xe(e.delivery??{}):t?`currently ${$n[t.bucket]} ${k(t.elapsedMs,`clock`)}`:``}function ar(e){return[[`getting ready`,e.gettingReadyMs],[`thinking`,e.thinkingMs],[`in tools`,e.toolsMs],[`finishing up`,e.finishingUpMs],[`Switchboard overhead`,e.overheadMs],[`not recorded`,e.notRecordedMs],[`not loaded`,e.notLoadedMs]]}function or(e){let t=[`getting ready`,-1];for(let n of ar(e))n[1]>t[1]&&(t=n);return t[0]}function sr(e,t){let n=[],r=t=>e.windowMs>0?t/e.windowMs*100:0;for(let[i,a]of ar(e))if(!(a<=0)){if(t&&$n[t.bucket]===i){let e=Math.min(t.elapsedMs,a);a-e>0&&n.push({term:i,ms:a-e,pct:r(a-e),hatched:!1}),e>0&&n.push({term:i,ms:e,pct:r(e),hatched:!0});continue}n.push({term:i,ms:a,pct:r(a),hatched:!1})}return n}function cr(e,t,n,r,i){let a=new Map(e.map(e=>[e.spanId,e])),o=new Map;for(let t of e){if(t.parentSpanId===void 0)continue;let e=o.get(t.parentSpanId);e?e.push(t):o.set(t.parentSpanId,[t])}let s=e=>[Math.max(r.start,e.startedAt),Math.min(r.end,e.endedAt??r.end)],c=[];for(let r of e){if(r===t||r.name===`run.agent`||U(r.name,n)===void 0||rr(r,a,n))continue;let[e,l]=s(r);if(l<=e)continue;let u=(o.get(r.spanId)??[]).map(s).map(([t,n])=>[Math.max(e,t),Math.min(l,n)]).filter(([e,t])=>t>e),d=l-e-lr(u);if(d<=0)continue;let f=r.name.startsWith(`tool.`)&&typeof r.attrs.callId==`string`?r.attrs.callId:void 0,p=f?i?.(f):void 0;c.push({label:p??G(r.name),ms:d,facts:ur(r),anchor:f?`call-${f}`:`span-${r.spanId}`,startedAt:r.startedAt})}return c.sort((e,t)=>t.ms-e.ms||e.startedAt-t.startedAt),c.slice(0,3).map(({label:e,ms:t,facts:n,anchor:r})=>({label:e,ms:t,facts:n,anchor:r}))}function lr(e){let t=[...e].sort((e,t)=>e[0]-t[0]),n=0,r;for(let[e,i]of t)!r||e>r[1]?(r&&(n+=r[1]-r[0]),r=[e,i]):i>r[1]&&(r[1]=i);return r&&(n+=r[1]-r[0]),n}function ur(e){let t=e.attrs,n=[];return(t.token===`expired`||t.token===`expiring`)&&n.push(`token ${t.token}`),t.budget===`clipped`&&n.push(`budget clipped`),typeof t.timeoutMs==`number`&&n.push(`timeout ${k(t.timeoutMs,`clock`)}`),typeof t.waitedMs==`number`&&n.push(`waited ${k(t.waitedMs,`clock`)}`),typeof t.exitCode==`number`&&t.exitCode!==0&&n.push(`exit ${t.exitCode}`),t.timedOut===!0&&n.push(`timed out`),typeof t.attempts==`number`&&t.attempts>1&&n.push(`${t.attempts} attempts`),e.status===`error`&&n.length===0&&n.push(`failed`),n}function dr(e){let t=[];for(let n of e.split(/\r?\n\r?\n/)){let e=n.split(/\r?\n/);if(e.some(e=>e.startsWith(`event:`)))continue;let r=e.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).replace(/^ /,``)).join(`
9
+ `);if(r!==``)try{let e=JSON.parse(r);typeof e==`object`&&e&&typeof e.type==`string`&&t.push(e)}catch{}}return t}function fr(e){return e===`command`?`command`:`agent`}var pr=[`data-state`],mr={key:0,class:`loading py-2 font-mono text-xs text-dimmed`},hr={key:1,class:`failed py-2 font-mono text-xs text-warn`},gr=[`href`],_r=[`data-turn`,`data-anchor`],vr={class:`landing-head flex flex-wrap items-baseline gap-x-2 font-mono text-xs text-muted`},yr={class:`turn tabular-nums`},br={class:`what min-w-0 truncate text-toned`},xr=[`href`],Sr={key:0,class:`m-0 mt-1 list-none p-0`},Cr=C({__name:`RunTimeline`,props:{run:{},land:{},fetch:{}},setup(t){let n=t,o=u(`loading`),s=X(),d=g(()=>{if(o.value!==`ready`)return null;s.state.traceVersion;let e=n.run,t=e.receivedAt??e.startedAt,r=A(e)??(e.finishedAt===void 0?0:Math.max(0,e.finishedAt-t));return er({spans:s.spanSet(),losses:s.losses(t),window:{start:t,end:t+r},owner:fr(e.agent),totalMs:r,phase:`ended`,delivery:{finishedAt:e.finishedAt,sealedAt:e.sealedAt,replyOk:e.replyOk},...e.truncated===void 0?{}:{truncated:e.truncated},...(e.schema??0)>=2?{}:{untimed:!0},callTitle:s.callHeadline})}),h=g(()=>`/runs/${encodeURIComponent(n.run.id)}/events`),y=e=>`/runs/${encodeURIComponent(n.run.id)}#${e}`;function S(t){e.navigate(y(t))}let C=g(()=>{if(o.value!==`ready`||n.land===void 0)return null;s.state.traceVersion;let e=n.land,t=n.run.session;if(t&&e===t.request)return{anchor:`request`,what:`the request`};let r=t&&t.range!==`broken`?t.range.to:void 0;if(r!==void 0&&e===r&&s.state.reply)return{anchor:`reply`,what:`the reply`};let i=s.landing(e);return i?{anchor:i.anchor,what:w(i.step),step:i.step}:null});function w(e){let t=e.items.find(e=>e.kind===`call`),n=t?.kind===`call`?t.call.headline:void 0;return[e.turn?`thought ${e.turn.chip}`:void 0,n].filter(e=>e!==void 0).join(` · `)||`step ${e.index+1}`}let T=u(null),E=g(()=>C.value?`${n.land}@${C.value.anchor}`:null);return i(E,e=>{e!==null&&r().then(()=>{let e=(C.value?.step?T.value?.querySelector(`li.step`):null)??T.value;e&&(e.scrollIntoView?.({block:`center`}),e.classList.add(`revealed`),setTimeout(()=>e.classList.remove(`revealed`),1500))})}),a(async()=>{let e=n.fetch??((...e)=>globalThis.fetch(...e));try{let t=await e(h.value,{credentials:`same-origin`});if(!t.ok)throw Error(`HTTP ${t.status}`);let r=dr(await t.text()).filter(e=>e.type!==`replay_note`);for(let e of(n.run.schema??0)>=2?Se(r):r)s.handle(e);s.closePhases(),o.value=`ready`}catch{o.value=`failed`}}),(e,n)=>(p(),v(`div`,{class:`runtimeline pl-5`,"data-state":o.value},[o.value===`loading`?(p(),v(`p`,mr,`reading the run's record…`)):o.value===`failed`?(p(),v(`p`,hr,[n[1]||=f(` the run's record could not be read — `,-1),_(`a`,{class:`text-primary no-underline hover:underline`,href:`/runs/${encodeURIComponent(t.run.id)}`},`open the run`,8,gr)])):d.value?(p(),v(c,{key:2},[l(Hn,{vm:d.value,"events-href":h.value,onReveal:S},null,8,[`vm`,`events-href`]),C.value?(p(),v(`div`,{key:0,ref_key:`landingEl`,ref:T,class:`landing mb-4 rounded-lg border border-default px-(--sb-gutter) py-2`,"data-turn":t.land,"data-anchor":C.value.anchor},[_(`p`,vr,[_(`span`,yr,`turn `+x(t.land),1),_(`span`,br,`· `+x(C.value.what),1),_(`a`,{class:`page ml-auto shrink-0 text-primary no-underline hover:underline`,href:y(C.value.anchor),title:`the same step on the run's own page`},`open on the run's page ↗`,8,xr)]),C.value.step?(p(),v(`ol`,Sr,[l(xn,{step:C.value.step,onToggleGroup:n[0]||=e=>b(s).toggleGroup(C.value.step)},null,8,[`step`])])):m(``,!0)],8,_r)):m(``,!0)],64)):m(``,!0)],8,pr))}}),wr=[`id`,`data-run-id`,`data-round`,`data-thread`],Tr=[`open`],Er={class:`row flex min-w-0 cursor-pointer list-none flex-wrap items-center gap-x-2.5 gap-y-1 px-2 py-2 hover:bg-(--ui-bg-muted) [&::-webkit-details-marker]:hidden`},Dr={key:0,class:`round shrink-0 rounded border border-accented px-1.5 font-mono text-[0.7rem] font-medium tabular-nums text-toned`},Or={key:2,class:`snippet min-w-0 flex-1 truncate text-muted`},kr={key:3,class:`scope min-w-0 flex-1 truncate text-toned`},Ar=[`title`],jr=[`data-heat`],Mr={class:`count shrink-0 text-right font-mono text-xs tabular-nums text-dimmed sm:min-w-[6em]`},Nr=[`href`,`aria-label`],Pr={key:1,class:`row flex min-w-0 flex-wrap items-center gap-x-2.5 gap-y-1 px-2 py-2 hover:bg-(--ui-bg-muted)`},Fr={key:0,class:`round shrink-0 rounded border border-accented px-1.5 font-mono text-[0.7rem] font-medium tabular-nums text-toned`},Ir={key:2,class:`snippet min-w-0 flex-1 truncate text-muted`},Lr={key:3,class:`scope min-w-0 flex-1 truncate text-highlighted`},Rr=[`title`],zr={class:`elapsed shrink-0 text-right font-mono text-xs tabular-nums text-ok sm:min-w-[4.5em]`,title:`running for`},Br={class:`count shrink-0 text-right font-mono text-xs tabular-nums text-dimmed sm:min-w-[6em]`},Vr=[`href`,`aria-label`],Hr=C({__name:`RunFoldRow`,props:{run:{},now:{},label:{},open:{type:Boolean},land:{}},setup(e){let t=e,r=u(t.open===!0);i(()=>t.open,e=>{e&&(r.value=!0)});let a=g(()=>E(t.run.label||P(t.run.id))),o=g(()=>te(t.run)),c=g(()=>ee(t.run)),f=g(()=>t.run.finished),h=g(()=>t.run.finished&&t.run.status&&t.run.status!==`completed`?ne(t.run.status):``),y=g(()=>B(t.run.finished&&typeof t.run.finishedAt==`number`?t.run.finishedAt-t.run.startedAt:void 0,`run`)),C=g(()=>z(y.value));function w(e){r.value=e.target.open}return(t,i)=>(p(),v(`li`,{id:`run-${e.run.id}`,class:S([`fold group border-b border-muted`,e.run.finished?`finished`:`live`]),"data-run-id":e.run.id,"data-round":e.run.round,"data-thread":e.run.thread},[f.value?(p(),v(`details`,{key:0,class:`group/fold`,open:r.value,onToggle:w},[_(`summary`,Er,[i[1]||=_(`span`,{class:`chev select-none text-xs text-dimmed transition-transform group-open/fold:rotate-90 motion-reduce:transition-none`,"aria-hidden":`true`},`❯`,-1),l(T,{tone:o.value,label:b(M)(e.run),tip:b(N)(e.run)},null,8,[`tone`,`label`,`tip`]),e.label?(p(),v(`span`,Dr,x(e.label),1)):m(``,!0),a.value.agent?(p(),v(`span`,{key:1,class:S([`agent shrink-0 rounded border px-1.5 font-mono text-[0.68rem] font-medium uppercase tracking-wider opacity-55`,b(L)[b(j)(a.value.agent)]])},x(a.value.agent),3)):m(``,!0),a.value.snippet===void 0?(p(),v(`span`,kr,x(a.value.scope),1)):(p(),v(`span`,Or,x(a.value.snippet),1)),h.value?(p(),v(`span`,{key:4,class:S([`outcome shrink-0 rounded border px-1.5 font-mono text-[0.7rem]`,o.value===`red`?`border-bad/30 text-bad`:`border-warn/30 text-warn`])},x(h.value),3)):m(``,!0),_(`span`,{class:`when shrink-0 font-mono text-xs tabular-nums text-dimmed`,title:b(R)(e.run)},x(b(D)(e.run.startedAt,e.now)),9,Ar),_(`span`,{class:S([`elapsed shrink-0 text-right font-mono text-xs tabular-nums sm:min-w-[4.5em]`,[C.value?`heat`:`text-muted`,y.value.level>=2?`font-medium`:``]]),style:n(C.value),"data-heat":y.value.level,title:`start to finish`},x(b(F)(e.run,e.now)),15,jr),_(`span`,Mr,x(b(I)(e.run)),1),_(`a`,{class:`open shrink-0 font-mono text-xs text-primary no-underline hover:underline`,href:c.value,"aria-label":`open run ${e.run.label||b(P)(e.run.id)}`,onClick:i[0]||=s(()=>{},[`stop`])},`open ↗`,8,Nr)]),r.value?(p(),d(Cr,{key:0,run:e.run,land:e.land},null,8,[`run`,`land`])):m(``,!0)],40,Tr)):(p(),v(`div`,Pr,[i[2]||=_(`span`,{class:`chev select-none text-xs text-transparent`,"aria-hidden":`true`},`❯`,-1),l(T,{tone:o.value,label:b(M)(e.run),tip:b(N)(e.run),pulse:``},null,8,[`tone`,`label`,`tip`]),e.label?(p(),v(`span`,Fr,x(e.label),1)):m(``,!0),a.value.agent?(p(),v(`span`,{key:1,class:S([`agent shrink-0 rounded border px-1.5 font-mono text-[0.68rem] font-medium uppercase tracking-wider`,b(L)[b(j)(a.value.agent)]])},x(a.value.agent),3)):m(``,!0),a.value.snippet===void 0?(p(),v(`span`,Lr,x(a.value.scope),1)):(p(),v(`span`,Ir,x(a.value.snippet),1)),_(`span`,{class:`when shrink-0 font-mono text-xs tabular-nums text-muted`,title:b(R)(e.run)},x(b(D)(e.run.startedAt,e.now)),9,Rr),_(`span`,zr,x(b(F)(e.run,e.now)),1),_(`span`,Br,x(b(I)(e.run)),1),_(`a`,{class:`open shrink-0 font-mono text-xs text-primary no-underline hover:underline`,href:c.value,"aria-label":`open run ${e.run.label||b(P)(e.run.id)}`},`open ↗`,8,Vr)]))],10,wr))}});export{ie as A,Ne as C,Pe as D,Me as E,le as O,qe as S,J as T,Ze as _,Cn as a,ze as b,$e as c,Je as d,X as f,Ye as g,Z as h,Hn as i,H as k,et as l,rt as m,fr as n,xn as o,Xe as p,er as r,Mt as s,Hr as t,Qe as u,Ve as v,Y as w,Ge as x,Re as y};