@coreplane/switchboard 1.233.0 → 1.235.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 (37) hide show
  1. package/dist/assets/deploy/cloudflare-resident/gc.ts +6 -9
  2. package/dist/assets/deploy/cloudflare-resident/worker.ts +310 -277
  3. package/dist/assets/deploy/cloudflare-sandbox/worker.ts +82 -13
  4. package/dist/assets/package-lock.json +3 -3
  5. package/dist/assets/package.json +1 -1
  6. package/dist/assets/source.json +3 -3
  7. package/dist/assets/src/agents/registry.ts +13 -7
  8. package/dist/assets/src/core/provider.ts +9 -6
  9. package/dist/assets/src/core/runEvents.ts +25 -0
  10. package/dist/assets/src/execution/residentCleanliness.ts +69 -5
  11. package/dist/assets/src/execution/residentDiskBudget.ts +7 -6
  12. package/dist/assets/src/execution/residentRebind.ts +92 -77
  13. package/dist/assets/src/execution/residentReuse.ts +7 -18
  14. package/dist/assets/src/execution/residentSteps.ts +0 -1
  15. package/dist/assets/src/execution/sandboxErrors.ts +5 -0
  16. package/dist/assets/src/execution/sandboxIdle.ts +220 -0
  17. package/dist/assets/web/dist/.vite/manifest.json +68 -28
  18. package/dist/assets/web/dist/assets/{ResidentDetailPage-V4K35SYX.js → ResidentDetailPage-DSpsye5e.js} +1 -1
  19. package/dist/assets/web/dist/assets/{ResidentsIndexPage-3HuYaDwD.js → ResidentsIndexPage-CT8fI1M3.js} +1 -1
  20. package/dist/assets/web/dist/assets/RunFoldRow-Cqh8pTXC.js +9 -0
  21. package/dist/assets/web/dist/assets/RunRoutePage-oN9GkVEA.js +6 -0
  22. package/dist/assets/web/dist/assets/RunsIndexPage-sjXr8iCV.js +1 -0
  23. package/dist/assets/web/dist/assets/{ScheduledPage-dfrjQ5E9.js → ScheduledPage-Tz__zLzi.js} +1 -1
  24. package/dist/assets/web/dist/assets/{StatusDot-DexKtvUC.js → StatusDot-D14iJMy7.js} +1 -1
  25. package/dist/assets/web/dist/assets/{Tooltip-DGQ2gu9M.js → Tooltip-B0Ob5MQ4.js} +1 -1
  26. package/dist/assets/web/dist/assets/UnitRoutePage-CbKCL58v.js +1 -0
  27. package/dist/assets/web/dist/assets/{dist-boTdDLF4.js → dist-pOdUzj6D.js} +1 -1
  28. package/dist/assets/web/dist/assets/favicon-BQsePYv5.js +1 -0
  29. package/dist/assets/web/dist/assets/indexRow-Bnj883ii.js +1 -0
  30. package/dist/assets/web/dist/assets/{main-BHhLVMQh.js → main-D3lG-yQ9.js} +2 -2
  31. package/dist/assets/web/dist/assets/main-Dm11o0hc.css +1 -0
  32. package/dist/cli.js +1231 -586
  33. package/package.json +1 -1
  34. package/dist/assets/web/dist/assets/RunRoutePage-Dr867-Ha.js +0 -13
  35. package/dist/assets/web/dist/assets/RunsIndexPage-D_lpXsr8.js +0 -1
  36. package/dist/assets/web/dist/assets/favicon-CWPcvWvp.js +0 -1
  37. package/dist/assets/web/dist/assets/main-CAVqMbiX.css +0 -1
@@ -28,7 +28,7 @@
28
28
  "src": "../node_modules/@fontsource-variable/jetbrains-mono/files/jetbrains-mono-vietnamese-wght-normal.woff2"
29
29
  },
30
30
  "../node_modules/@pierre/diffs/dist/index.js": {
31
- "file": "assets/dist-boTdDLF4.js",
31
+ "file": "assets/dist-pOdUzj6D.js",
32
32
  "name": "dist",
33
33
  "src": "../node_modules/@pierre/diffs/dist/index.js",
34
34
  "isDynamicEntry": true,
@@ -2554,6 +2554,19 @@
2554
2554
  "_RunsTabs-DEICQ4FY.js"
2555
2555
  ]
2556
2556
  },
2557
+ "_RunFoldRow-Cqh8pTXC.js": {
2558
+ "file": "assets/RunFoldRow-Cqh8pTXC.js",
2559
+ "name": "RunFoldRow",
2560
+ "imports": [
2561
+ "_AppShell-lYVcj-k7.js",
2562
+ "_seed-DeKSHrt2.js",
2563
+ "_wallClock-61NpVkY6.js",
2564
+ "_StatusDot-D14iJMy7.js",
2565
+ "_indexFormat-B-pd4r7Y.js",
2566
+ "_indexRow-Bnj883ii.js",
2567
+ "_localIso-L06jV29p.js"
2568
+ ]
2569
+ },
2557
2570
  "_RunsTabs-DEICQ4FY.js": {
2558
2571
  "file": "assets/RunsTabs-DEICQ4FY.js",
2559
2572
  "name": "RunsTabs",
@@ -2562,16 +2575,16 @@
2562
2575
  "_seed-DeKSHrt2.js"
2563
2576
  ]
2564
2577
  },
2565
- "_StatusDot-DexKtvUC.js": {
2566
- "file": "assets/StatusDot-DexKtvUC.js",
2578
+ "_StatusDot-D14iJMy7.js": {
2579
+ "file": "assets/StatusDot-D14iJMy7.js",
2567
2580
  "name": "StatusDot",
2568
2581
  "imports": [
2569
2582
  "_seed-DeKSHrt2.js",
2570
- "_Tooltip-DGQ2gu9M.js"
2583
+ "_Tooltip-B0Ob5MQ4.js"
2571
2584
  ]
2572
2585
  },
2573
- "_Tooltip-DGQ2gu9M.js": {
2574
- "file": "assets/Tooltip-DGQ2gu9M.js",
2586
+ "_Tooltip-B0Ob5MQ4.js": {
2587
+ "file": "assets/Tooltip-B0Ob5MQ4.js",
2575
2588
  "name": "Tooltip",
2576
2589
  "imports": [
2577
2590
  "_AppShell-lYVcj-k7.js",
@@ -2610,13 +2623,11 @@
2610
2623
  "_AppShell-lYVcj-k7.js"
2611
2624
  ]
2612
2625
  },
2613
- "_favicon-CWPcvWvp.js": {
2614
- "file": "assets/favicon-CWPcvWvp.js",
2626
+ "_favicon-BQsePYv5.js": {
2627
+ "file": "assets/favicon-BQsePYv5.js",
2615
2628
  "name": "favicon",
2616
2629
  "imports": [
2617
- "_AppShell-lYVcj-k7.js",
2618
- "_seed-DeKSHrt2.js",
2619
- "_localIso-L06jV29p.js"
2630
+ "_seed-DeKSHrt2.js"
2620
2631
  ]
2621
2632
  },
2622
2633
  "_glsl-Daiodp1r.js": {
@@ -2660,6 +2671,15 @@
2660
2671
  "file": "assets/indexFormat-B-pd4r7Y.js",
2661
2672
  "name": "indexFormat"
2662
2673
  },
2674
+ "_indexRow-Bnj883ii.js": {
2675
+ "file": "assets/indexRow-Bnj883ii.js",
2676
+ "name": "indexRow",
2677
+ "imports": [
2678
+ "_AppShell-lYVcj-k7.js",
2679
+ "_seed-DeKSHrt2.js",
2680
+ "_localIso-L06jV29p.js"
2681
+ ]
2682
+ },
2663
2683
  "_java-BbZjTNgf.js": {
2664
2684
  "file": "assets/java-BbZjTNgf.js",
2665
2685
  "name": "java",
@@ -2789,7 +2809,7 @@
2789
2809
  ]
2790
2810
  },
2791
2811
  "src/main.ts": {
2792
- "file": "assets/main-BHhLVMQh.js",
2812
+ "file": "assets/main-D3lG-yQ9.js",
2793
2813
  "name": "main",
2794
2814
  "src": "src/main.ts",
2795
2815
  "isEntry": true,
@@ -2799,6 +2819,7 @@
2799
2819
  "dynamicImports": [
2800
2820
  "src/pages/RunsIndexPage.vue",
2801
2821
  "src/pages/ScheduledPage.vue",
2822
+ "src/pages/UnitRoutePage.vue",
2802
2823
  "src/pages/RunRoutePage.vue",
2803
2824
  "src/pages/ResidentsIndexPage.vue",
2804
2825
  "src/pages/ResidentDetailPage.vue",
@@ -2807,7 +2828,7 @@
2807
2828
  "_NotFoundPage-BzWS4Ca1.js"
2808
2829
  ],
2809
2830
  "css": [
2810
- "assets/main-CAVqMbiX.css"
2831
+ "assets/main-Dm11o0hc.css"
2811
2832
  ],
2812
2833
  "assets": [
2813
2834
  "assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2",
@@ -2841,19 +2862,19 @@
2841
2862
  ]
2842
2863
  },
2843
2864
  "src/pages/ResidentDetailPage.vue": {
2844
- "file": "assets/ResidentDetailPage-V4K35SYX.js",
2865
+ "file": "assets/ResidentDetailPage-DSpsye5e.js",
2845
2866
  "name": "ResidentDetailPage",
2846
2867
  "src": "src/pages/ResidentDetailPage.vue",
2847
2868
  "isDynamicEntry": true,
2848
2869
  "imports": [
2849
2870
  "_AppShell-lYVcj-k7.js",
2850
2871
  "_seed-DeKSHrt2.js",
2851
- "_StatusDot-DexKtvUC.js",
2872
+ "_StatusDot-D14iJMy7.js",
2852
2873
  "_residentDiskBudget-BMBKlYRH.js"
2853
2874
  ]
2854
2875
  },
2855
2876
  "src/pages/ResidentsIndexPage.vue": {
2856
- "file": "assets/ResidentsIndexPage-3HuYaDwD.js",
2877
+ "file": "assets/ResidentsIndexPage-CT8fI1M3.js",
2857
2878
  "name": "ResidentsIndexPage",
2858
2879
  "src": "src/pages/ResidentsIndexPage.vue",
2859
2880
  "isDynamicEntry": true,
@@ -2861,26 +2882,28 @@
2861
2882
  "_AppShell-lYVcj-k7.js",
2862
2883
  "_seed-DeKSHrt2.js",
2863
2884
  "_wallClock-61NpVkY6.js",
2864
- "_StatusDot-DexKtvUC.js",
2885
+ "_StatusDot-D14iJMy7.js",
2865
2886
  "_residentDiskBudget-BMBKlYRH.js",
2866
2887
  "_indexFormat-B-pd4r7Y.js"
2867
2888
  ]
2868
2889
  },
2869
2890
  "src/pages/RunRoutePage.vue": {
2870
- "file": "assets/RunRoutePage-Dr867-Ha.js",
2891
+ "file": "assets/RunRoutePage-oN9GkVEA.js",
2871
2892
  "name": "RunRoutePage",
2872
2893
  "src": "src/pages/RunRoutePage.vue",
2873
2894
  "isDynamicEntry": true,
2874
2895
  "imports": [
2875
2896
  "_AppShell-lYVcj-k7.js",
2876
2897
  "_seed-DeKSHrt2.js",
2877
- "_Tooltip-DGQ2gu9M.js",
2898
+ "_Tooltip-B0Ob5MQ4.js",
2878
2899
  "src/main.ts",
2879
2900
  "_wallClock-61NpVkY6.js",
2880
2901
  "_NotFoundPage-BzWS4Ca1.js",
2881
2902
  "_indexFormat-B-pd4r7Y.js",
2882
- "_favicon-CWPcvWvp.js",
2883
- "_localIso-L06jV29p.js"
2903
+ "_indexRow-Bnj883ii.js",
2904
+ "_localIso-L06jV29p.js",
2905
+ "_RunFoldRow-Cqh8pTXC.js",
2906
+ "_favicon-BQsePYv5.js"
2884
2907
  ],
2885
2908
  "dynamicImports": [
2886
2909
  "../node_modules/@pierre/diffs/dist/index.js"
@@ -2890,35 +2913,52 @@
2890
2913
  ]
2891
2914
  },
2892
2915
  "src/pages/RunsIndexPage.vue": {
2893
- "file": "assets/RunsIndexPage-D_lpXsr8.js",
2916
+ "file": "assets/RunsIndexPage-sjXr8iCV.js",
2894
2917
  "name": "RunsIndexPage",
2895
2918
  "src": "src/pages/RunsIndexPage.vue",
2896
2919
  "isDynamicEntry": true,
2897
2920
  "imports": [
2898
2921
  "_AppShell-lYVcj-k7.js",
2899
2922
  "_seed-DeKSHrt2.js",
2900
- "_Tooltip-DGQ2gu9M.js",
2923
+ "_Tooltip-B0Ob5MQ4.js",
2901
2924
  "_wallClock-61NpVkY6.js",
2902
2925
  "_RunsTabs-DEICQ4FY.js",
2903
- "_StatusDot-DexKtvUC.js",
2926
+ "_StatusDot-D14iJMy7.js",
2904
2927
  "_indexFormat-B-pd4r7Y.js",
2905
- "_favicon-CWPcvWvp.js",
2906
- "_localIso-L06jV29p.js"
2928
+ "_indexRow-Bnj883ii.js",
2929
+ "_localIso-L06jV29p.js",
2930
+ "_favicon-BQsePYv5.js"
2907
2931
  ]
2908
2932
  },
2909
2933
  "src/pages/ScheduledPage.vue": {
2910
- "file": "assets/ScheduledPage-dfrjQ5E9.js",
2934
+ "file": "assets/ScheduledPage-Tz__zLzi.js",
2911
2935
  "name": "ScheduledPage",
2912
2936
  "src": "src/pages/ScheduledPage.vue",
2913
2937
  "isDynamicEntry": true,
2914
2938
  "imports": [
2915
2939
  "_AppShell-lYVcj-k7.js",
2916
2940
  "_seed-DeKSHrt2.js",
2917
- "_Tooltip-DGQ2gu9M.js",
2941
+ "_Tooltip-B0Ob5MQ4.js",
2918
2942
  "_wallClock-61NpVkY6.js",
2919
2943
  "_RunsTabs-DEICQ4FY.js",
2920
2944
  "_indexFormat-B-pd4r7Y.js",
2921
2945
  "_localIso-L06jV29p.js"
2922
2946
  ]
2947
+ },
2948
+ "src/pages/UnitRoutePage.vue": {
2949
+ "file": "assets/UnitRoutePage-CbKCL58v.js",
2950
+ "name": "UnitRoutePage",
2951
+ "src": "src/pages/UnitRoutePage.vue",
2952
+ "isDynamicEntry": true,
2953
+ "imports": [
2954
+ "_AppShell-lYVcj-k7.js",
2955
+ "_seed-DeKSHrt2.js",
2956
+ "_wallClock-61NpVkY6.js",
2957
+ "_NotFoundPage-BzWS4Ca1.js",
2958
+ "_indexFormat-B-pd4r7Y.js",
2959
+ "_indexRow-Bnj883ii.js",
2960
+ "_localIso-L06jV29p.js",
2961
+ "_RunFoldRow-Cqh8pTXC.js"
2962
+ ]
2923
2963
  }
2924
2964
  }
@@ -1 +1 @@
1
- import{t as e}from"./AppShell-lYVcj-k7.js";import{Lr as t,Xt as n,_n as r,cn as i,gn as a,ir as o,ln as 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-DexKtvUC.js";import{a as ne,c as re,d as ie,f as h,i as g,l as ae,n as oe,o as se,r as ce,s as _,t as le,u as ue}from"./residentDiskBudget-BMBKlYRH.js";var de={class:`mt-4 first:mt-0`},fe={class:`w-full border-collapse font-mono text-[0.8125rem]`},pe={class:`border-t border-muted`},me={class:`px-2 py-1 align-top`},v={class:`ml-1.5 font-medium`},y={class:`border-t border-muted`},b={class:`break-all px-2 py-1 align-top`},x={key:0},S={key:1,class:`text-dimmed`},C={class:`border-t border-muted`},w={class:`break-all px-2 py-1 align-top`},T={key:0},E={key:1,class:`text-dimmed`},D={class:`border-t border-muted`},O={class:`break-all px-2 py-1 align-top`},k={key:0},A={key:1,class:`text-dimmed`},j={class:`border-t border-muted`},M={class:`break-all px-2 py-1 align-top`},N={key:0},P={key:1,class:`text-dimmed`},F={class:`border-t border-muted`},I={class:`break-all px-2 py-1 align-top`},L={key:1,class:`text-dimmed`},R={class:`mt-4`},z={class:`w-full border-collapse font-mono text-[0.8125rem]`},he={class:`border-t border-muted`},ge={class:`break-all px-2 py-1 align-top`},_e=[`href`],ve={key:1},ye={class:`border-t border-muted`},be={class:`break-all px-2 py-1 align-top`},xe={class:`border-t border-muted`},Se={class:`break-all px-2 py-1 align-top`},Ce=[`href`],we={key:1},Te={key:2,class:`text-dimmed`},Ee={class:`border-t border-muted`},De={class:`break-all px-2 py-1 align-top`},Oe={key:0},ke={key:1,class:`text-dimmed`},Ae={class:`border-t border-muted`},je={class:`break-all px-2 py-1 align-top`},Me={key:0},Ne={key:1,class:`text-dimmed`},Pe={class:`border-t border-muted`},Fe={class:`break-all px-2 py-1 align-top`},Ie={key:0},Le={key:1,class:`text-dimmed`},Re={class:`mt-4`},ze={class:`w-full border-collapse font-mono text-[0.8125rem]`},Be={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Ve={class:`break-all px-2 py-1 align-top`},He={class:`w-full border-collapse font-mono text-[0.8125rem]`},Ue={class:`w-32 break-all px-2 py-1 align-top text-muted sm:w-96 sm:break-words`},We={class:`px-2 py-1 align-top`},Ge={key:1,class:`text-xs text-muted`},Ke={class:`mt-4`},qe={key:0,class:`w-full border-collapse font-mono text-[0.8125rem]`},Je={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Ye={class:`break-all px-2 py-1 align-top`},Xe={key:0},B={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(()=>ae(H.value)),W=s(()=>ue(H.value)||(V?.slug??``)),G=s(()=>h(U.value.sha)),K=s(()=>se.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`?_(e):void 0}),zt=s(()=>_(U.value.schedules)),Y=s(()=>{let e=_(H.value.commands),t=_(H.value.effects);return Object.keys(e).sort().map(n=>({name:n,command:h(e[n]),effect:h(t[n])||`readonly`}))}),X=s(()=>{let e=U.value.threads;return(Array.isArray(e)?e.map(_):[]).map(e=>{let t=h(e.sha);return{threadKey:h(e.threadKey)||`?`,ref:h(e.ref)||`?`,sha:t?t.slice(0,8):``,commitHref:K.value&&/^[0-9a-f]{7,40}$/.test(t)?`${K.value}/commit/${t}`:void 0,user:h(e.user),deps:h(e.deps),boundAt:h(e.boundAt),lastAttachAt:h(e.lastAttachAt),evicted:e.evicted===!0,evictedAt:h(e.evictedAt),evictedWhy:h(e.evictedWhy)}}).sort((e,t)=>t.lastAttachAt.localeCompare(e.lastAttachAt))}),Z=s(()=>X.value.filter(e=>!e.evicted).length),Q=s(()=>{let e=U.value.lastRestore;return e?JSON.stringify(e):``}),$=s(()=>re(H.value)),Bt=s(()=>typeof H.value.diskBudgetMb==`number`?H.value.diskBudgetMb:void 0),Vt=s(()=>{let e=$.value;if(!e)return[];let t=le(e),{freeKiB:n,capped:r,capacityKiB:i}=oe(e,Bt.value),a=n-t.totalKiB,o=t=>{let n=ne(e.parts,t);return n===null?`? (checkout not measured)`:n===0?`?`:`${Math.max(0,Math.floor(a/n))} more (${g(n)} each)`};return[[`used / total`,ce(e)],[`free`,`${g(n)}${r?` under the ${g(i)} diskBudgetMb cap`:``}`],[`reserve`,`${g(t.totalKiB)} (snapshot staging ${g(t.stagingKiB)} + floor ${g(t.floorKiB)})`],[`headroom`,`${g(Math.max(0,a))} — room for ${o(`hardlink`)} hardlinked trees, ${o(`reconcile`)} lockfile-diverged (reconciling)`],[`measured`,e.at||`—`]]}),Ht=s(()=>{let e=$.value;if(!e)return[];let t=[[`mirror`,g(e.parts.mirror)],[`checkout deps (node_modules)`,g(e.parts.deps)],[`checkout (history + tree + build)`,g(e.parts.checkout)]];for(let[n,r]of Object.entries(e.parts.threads).sort((e,t)=>t[1]-e[1]))t.push([`thread ${n}`,g(r)]);for(let[n,r]of Object.entries(e.parts.homes).sort((e,t)=>t[1]-e[1]))r>=1024&&t.push([`home ${n}`,g(r)]);return t.push([`other (image, /tmp, …)`,g(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`,de,[c[8]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Lifecycle`,-1),l(`table`,fe,[l(`tbody`,null,[l(`tr`,pe,[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`,me,[r(m,{tone:f(ie)(U.value.state),label:U.value.state},null,8,[`tone`,`label`]),l(`span`,v,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(h)(U.value.lastRefreshError)?(o(),u(`span`,T,p(f(h)(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(h)(U.value.updatedAt)?(o(),u(`span`,N,p(f(h)(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(h)(U.value.idleSince)?(o(),u(n,{key:0},[a(p(f(h)(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(h)(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(h)(U.value.defaultRef)||f(h)(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(h)(U.value.lockfileHash)?(o(),u(`span`,Oe,p(f(h)(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(h)(U.value.provisionedAt)?(o(),u(`span`,Me,p(f(h)(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(h)(U.value.lastRefreshAt)?(o(),u(`span`,Ie,p(f(h)(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(h)(J.value[e])?(o(),u(`span`,Xe,p(f(h)(J.value[e])),1)):(o(),u(`span`,B,`—`))])])),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(h)(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(h)(H.value.onboardedAt)],[`record updated`,f(h)(H.value.updatedAt)],[`provisioning timeout (ms)`,f(h)(H.value.provisioningTimeoutMs)],[`disk budget (MB)`,f(h)(H.value.diskBudgetMb)],[`worktree TTL (days)`,f(h)(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};
1
+ import{t as e}from"./AppShell-lYVcj-k7.js";import{Lr as t,Xt as n,_n as r,cn as i,gn as a,ir as o,ln as 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-D14iJMy7.js";import{a as ne,c as re,d as ie,f as h,i as g,l as ae,n as oe,o as se,r as ce,s as _,t as le,u as ue}from"./residentDiskBudget-BMBKlYRH.js";var de={class:`mt-4 first:mt-0`},fe={class:`w-full border-collapse font-mono text-[0.8125rem]`},pe={class:`border-t border-muted`},me={class:`px-2 py-1 align-top`},v={class:`ml-1.5 font-medium`},y={class:`border-t border-muted`},b={class:`break-all px-2 py-1 align-top`},x={key:0},S={key:1,class:`text-dimmed`},C={class:`border-t border-muted`},w={class:`break-all px-2 py-1 align-top`},T={key:0},E={key:1,class:`text-dimmed`},D={class:`border-t border-muted`},O={class:`break-all px-2 py-1 align-top`},k={key:0},A={key:1,class:`text-dimmed`},j={class:`border-t border-muted`},M={class:`break-all px-2 py-1 align-top`},N={key:0},P={key:1,class:`text-dimmed`},F={class:`border-t border-muted`},I={class:`break-all px-2 py-1 align-top`},L={key:1,class:`text-dimmed`},R={class:`mt-4`},z={class:`w-full border-collapse font-mono text-[0.8125rem]`},he={class:`border-t border-muted`},ge={class:`break-all px-2 py-1 align-top`},_e=[`href`],ve={key:1},ye={class:`border-t border-muted`},be={class:`break-all px-2 py-1 align-top`},xe={class:`border-t border-muted`},Se={class:`break-all px-2 py-1 align-top`},Ce=[`href`],we={key:1},Te={key:2,class:`text-dimmed`},Ee={class:`border-t border-muted`},De={class:`break-all px-2 py-1 align-top`},Oe={key:0},ke={key:1,class:`text-dimmed`},Ae={class:`border-t border-muted`},je={class:`break-all px-2 py-1 align-top`},Me={key:0},Ne={key:1,class:`text-dimmed`},Pe={class:`border-t border-muted`},Fe={class:`break-all px-2 py-1 align-top`},Ie={key:0},Le={key:1,class:`text-dimmed`},Re={class:`mt-4`},ze={class:`w-full border-collapse font-mono text-[0.8125rem]`},Be={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Ve={class:`break-all px-2 py-1 align-top`},He={class:`w-full border-collapse font-mono text-[0.8125rem]`},Ue={class:`w-32 break-all px-2 py-1 align-top text-muted sm:w-96 sm:break-words`},We={class:`px-2 py-1 align-top`},Ge={key:1,class:`text-xs text-muted`},Ke={class:`mt-4`},qe={key:0,class:`w-full border-collapse font-mono text-[0.8125rem]`},Je={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Ye={class:`break-all px-2 py-1 align-top`},Xe={key:0},B={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(()=>ae(H.value)),W=s(()=>ue(H.value)||(V?.slug??``)),G=s(()=>h(U.value.sha)),K=s(()=>se.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`?_(e):void 0}),zt=s(()=>_(U.value.schedules)),Y=s(()=>{let e=_(H.value.commands),t=_(H.value.effects);return Object.keys(e).sort().map(n=>({name:n,command:h(e[n]),effect:h(t[n])||`readonly`}))}),X=s(()=>{let e=U.value.threads;return(Array.isArray(e)?e.map(_):[]).map(e=>{let t=h(e.sha);return{threadKey:h(e.threadKey)||`?`,ref:h(e.ref)||`?`,sha:t?t.slice(0,8):``,commitHref:K.value&&/^[0-9a-f]{7,40}$/.test(t)?`${K.value}/commit/${t}`:void 0,user:h(e.user),deps:h(e.deps),boundAt:h(e.boundAt),lastAttachAt:h(e.lastAttachAt),evicted:e.evicted===!0,evictedAt:h(e.evictedAt),evictedWhy:h(e.evictedWhy)}}).sort((e,t)=>t.lastAttachAt.localeCompare(e.lastAttachAt))}),Z=s(()=>X.value.filter(e=>!e.evicted).length),Q=s(()=>{let e=U.value.lastRestore;return e?JSON.stringify(e):``}),$=s(()=>re(H.value)),Bt=s(()=>typeof H.value.diskBudgetMb==`number`?H.value.diskBudgetMb:void 0),Vt=s(()=>{let e=$.value;if(!e)return[];let t=le(e),{freeKiB:n,capped:r,capacityKiB:i}=oe(e,Bt.value),a=n-t.totalKiB,o=t=>{let n=ne(e.parts,t);return n===null?`? (checkout not measured)`:n===0?`?`:`${Math.max(0,Math.floor(a/n))} more (${g(n)} each)`};return[[`used / total`,ce(e)],[`free`,`${g(n)}${r?` under the ${g(i)} diskBudgetMb cap`:``}`],[`reserve`,`${g(t.totalKiB)} (snapshot staging ${g(t.stagingKiB)} + floor ${g(t.floorKiB)})`],[`headroom`,`${g(Math.max(0,a))} — room for ${o(`hardlink`)} hardlinked trees, ${o(`reconcile`)} lockfile-diverged (reconciling)`],[`measured`,e.at||`—`]]}),Ht=s(()=>{let e=$.value;if(!e)return[];let t=[[`mirror`,g(e.parts.mirror)],[`checkout deps (node_modules)`,g(e.parts.deps)],[`checkout (history + tree + build)`,g(e.parts.checkout)]];for(let[n,r]of Object.entries(e.parts.threads).sort((e,t)=>t[1]-e[1]))t.push([`thread ${n}`,g(r)]);for(let[n,r]of Object.entries(e.parts.homes).sort((e,t)=>t[1]-e[1]))r>=1024&&t.push([`home ${n}`,g(r)]);return t.push([`other (image, /tmp, …)`,g(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`,de,[c[8]||=l(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Lifecycle`,-1),l(`table`,fe,[l(`tbody`,null,[l(`tr`,pe,[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`,me,[r(m,{tone:f(ie)(U.value.state),label:U.value.state},null,8,[`tone`,`label`]),l(`span`,v,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(h)(U.value.lastRefreshError)?(o(),u(`span`,T,p(f(h)(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(h)(U.value.updatedAt)?(o(),u(`span`,N,p(f(h)(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(h)(U.value.idleSince)?(o(),u(n,{key:0},[a(p(f(h)(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(h)(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(h)(U.value.defaultRef)||f(h)(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(h)(U.value.lockfileHash)?(o(),u(`span`,Oe,p(f(h)(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(h)(U.value.provisionedAt)?(o(),u(`span`,Me,p(f(h)(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(h)(U.value.lastRefreshAt)?(o(),u(`span`,Ie,p(f(h)(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(h)(J.value[e])?(o(),u(`span`,Xe,p(f(h)(J.value[e])),1)):(o(),u(`span`,B,`—`))])])),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(h)(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(h)(H.value.onboardedAt)],[`record updated`,f(h)(H.value.updatedAt)],[`provisioning timeout (ms)`,f(h)(H.value.provisioningTimeoutMs)],[`disk budget (MB)`,f(h)(H.value.diskBudgetMb)],[`worktree TTL (days)`,f(h)(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};
@@ -1 +1 @@
1
- import{t as e}from"./AppShell-lYVcj-k7.js";import{Lr as t,Xt as n,_n as r,cn as i,gn as a,ir as o,ln as s,mr as c,on as l,r as u,sn as d,un as f,ur as p,wi as m,xi as h,yn as g}from"./seed-DeKSHrt2.js";import{n as _}from"./wallClock-61NpVkY6.js";import{t as v}from"./StatusDot-DexKtvUC.js";import{c as y,d as b,f as x,l as S,o as C,r as w,u as T}from"./residentDiskBudget-BMBKlYRH.js";import{n as E}from"./indexFormat-B-pd4r7Y.js";var D={class:`mb-2 text-xs text-muted`},O={class:`m-0 list-none p-0`},k={class:`font-mono font-medium text-primary`},A={class:`font-medium`},j=[`title`],M=[`title`],N={key:0,class:`basis-full pl-5 text-xs text-warn`},P={key:1,class:`px-2 py-1.5 text-muted`},F=g({__name:`ResidentsIndexPage`,setup(g){let F=u(`residents`),I=_(),L=l(()=>(F?.residents??[]).map((e,t)=>{let n=e,r=T(n),i=S(n),a=x(i.sha),o=x(i.lastRefreshAt),s=o?Date.parse(o):NaN,c=y(n);return{key:`${r||`?`}-${t}`,display:r||x(n.resource)||`?`,state:i.state,tone:b(i.state),reason:i.reason,ref:x(n.defaultRef)||`?`,sha:a?a.slice(0,8):``,refreshed:o,refreshedLabel:Number.isFinite(s)?E(s,I):o,disk:c?w(c):``,diskAt:c?.at??``,href:C.test(r)?`/residents/${r}`:null}})),R=l(()=>x(F?.cap)||`?`),z=l(()=>x(F?.count)||String(L.value.length));return(l,u)=>(o(),i(e,{title:`Resident repos`,nav:`residents`},{default:t(()=>[L.value.length>0?(o(),f(n,{key:0},[d(`p`,D,m(z.value)+`/`+m(R.value)+` resident slots in use · live registry read, not cached `,1),d(`ul`,O,[(o(!0),f(n,null,p(L.value,e=>(o(),f(`li`,{key:e.key,class:`border-b border-muted first:border-t`},[(o(),i(c(e.href?`a`:`span`),{class:h([`row flex flex-wrap items-center gap-2.5 rounded-md px-2 py-1.5 text-inherit no-underline`,e.href?`hover:bg-elevated`:``]),href:e.href??void 0},{default:t(()=>[r(v,{tone:e.tone,label:e.state,tip:e.state},null,8,[`tone`,`label`,`tip`]),d(`span`,k,m(e.display),1),d(`span`,A,m(e.state),1),d(`span`,{class:`font-mono text-xs text-muted max-sm:basis-full max-sm:pl-5`,title:e.refreshed||void 0},[a(` ref `+m(e.ref),1),e.sha?(o(),f(n,{key:0},[a(` · sha `+m(e.sha),1)],64)):s(``,!0),e.refreshedLabel?(o(),f(n,{key:1},[a(` · refreshed `+m(e.refreshedLabel),1)],64)):s(``,!0),e.disk?(o(),f(n,{key:2},[u[0]||=a(` · `,-1),d(`span`,{title:e.diskAt?`measured ${e.diskAt}`:void 0},`disk `+m(e.disk),9,M)],64)):s(``,!0)],8,j),e.reason?(o(),f(`span`,N,m(e.reason),1)):s(``,!0)]),_:2},1032,[`class`,`href`]))]))),128))])],64)):(o(),f(`p`,P,[a(` No repos onboarded (0/`+m(R.value)+`). Onboard one from chat: `,1),u[1]||=d(`code`,{class:`rounded bg-elevated px-1.5 py-0.5`},`repo onboard <owner/name>`,-1),u[2]||=a(`. `,-1)]))]),_:1}))}});export{F as default};
1
+ import{t as e}from"./AppShell-lYVcj-k7.js";import{Lr as t,Xt as n,_n as r,cn as i,gn as a,ir as o,ln as s,mr as c,on as l,r as u,sn as d,un as f,ur as p,wi as m,xi as h,yn as g}from"./seed-DeKSHrt2.js";import{n as _}from"./wallClock-61NpVkY6.js";import{t as v}from"./StatusDot-D14iJMy7.js";import{c as y,d as b,f as x,l as S,o as C,r as w,u as T}from"./residentDiskBudget-BMBKlYRH.js";import{n as E}from"./indexFormat-B-pd4r7Y.js";var D={class:`mb-2 text-xs text-muted`},O={class:`m-0 list-none p-0`},k={class:`font-mono font-medium text-primary`},A={class:`font-medium`},j=[`title`],M=[`title`],N={key:0,class:`basis-full pl-5 text-xs text-warn`},P={key:1,class:`px-2 py-1.5 text-muted`},F=g({__name:`ResidentsIndexPage`,setup(g){let F=u(`residents`),I=_(),L=l(()=>(F?.residents??[]).map((e,t)=>{let n=e,r=T(n),i=S(n),a=x(i.sha),o=x(i.lastRefreshAt),s=o?Date.parse(o):NaN,c=y(n);return{key:`${r||`?`}-${t}`,display:r||x(n.resource)||`?`,state:i.state,tone:b(i.state),reason:i.reason,ref:x(n.defaultRef)||`?`,sha:a?a.slice(0,8):``,refreshed:o,refreshedLabel:Number.isFinite(s)?E(s,I):o,disk:c?w(c):``,diskAt:c?.at??``,href:C.test(r)?`/residents/${r}`:null}})),R=l(()=>x(F?.cap)||`?`),z=l(()=>x(F?.count)||String(L.value.length));return(l,u)=>(o(),i(e,{title:`Resident repos`,nav:`residents`},{default:t(()=>[L.value.length>0?(o(),f(n,{key:0},[d(`p`,D,m(z.value)+`/`+m(R.value)+` resident slots in use · live registry read, not cached `,1),d(`ul`,O,[(o(!0),f(n,null,p(L.value,e=>(o(),f(`li`,{key:e.key,class:`border-b border-muted first:border-t`},[(o(),i(c(e.href?`a`:`span`),{class:h([`row flex flex-wrap items-center gap-2.5 rounded-md px-2 py-1.5 text-inherit no-underline`,e.href?`hover:bg-elevated`:``]),href:e.href??void 0},{default:t(()=>[r(v,{tone:e.tone,label:e.state,tip:e.state},null,8,[`tone`,`label`,`tip`]),d(`span`,k,m(e.display),1),d(`span`,A,m(e.state),1),d(`span`,{class:`font-mono text-xs text-muted max-sm:basis-full max-sm:pl-5`,title:e.refreshed||void 0},[a(` ref `+m(e.ref),1),e.sha?(o(),f(n,{key:0},[a(` · sha `+m(e.sha),1)],64)):s(``,!0),e.refreshedLabel?(o(),f(n,{key:1},[a(` · refreshed `+m(e.refreshedLabel),1)],64)):s(``,!0),e.disk?(o(),f(n,{key:2},[u[0]||=a(` · `,-1),d(`span`,{title:e.diskAt?`measured ${e.diskAt}`:void 0},`disk `+m(e.disk),9,M)],64)):s(``,!0)],8,j),e.reason?(o(),f(`span`,N,m(e.reason),1)):s(``,!0)]),_:2},1032,[`class`,`href`]))]))),128))])],64)):(o(),f(`p`,P,[a(` No repos onboarded (0/`+m(R.value)+`). Onboard one from chat: `,1),u[1]||=d(`code`,{class:`rounded bg-elevated px-1.5 py-0.5`},`repo onboard <owner/name>`,-1),u[2]||=a(`. `,-1)]))]),_:1}))}});export{F as default};
@@ -0,0 +1,9 @@
1
+ import{n as e,r as t}from"./AppShell-lYVcj-k7.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-D14iJMy7.js";import{r as E,t as D}from"./indexFormat-B-pd4r7Y.js";import{A as O,D as k,E as A,O as j,T as M,a as N,b as P,c as F,g as I,l as L,m as R,o as z,t as B,v as ee,w as te,y as ne}from"./indexRow-Bnj883ii.js";import{t as V}from"./localIso-L06jV29p.js";function re(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 H(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 ie(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 U=C({__name:`MarkdownText`,props:{text:{}},setup(e){let t=e,n=u(null);function r(){let e=n.value;if(e)try{ie(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))}}),ae={},oe={viewBox:`0 0 16 16`,class:`inline-block size-[1em] shrink-0`,"aria-hidden":`true`};function se(e,t){return p(),v(`svg`,oe,[...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 ce=t(ae,[[`render`,se]]);function le(){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(O(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 `+O(f,`precise`));let p=i(u.thinkingMs);p!==void 0&&e.push(`thinking `+O(p,`precise`));let m=i(u.textMs);m!==void 0&&e.push(`writing `+O(m,`precise`));let h=a(u.model);return[{kind:`turn`,spanId:r,label:`Thought for `+O(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 ue=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`]),de=new Set([`run.observe_workspace`,`run.pr_post_step`,`run.review_post_step`,`run.reading_diff_join`,`run.pr_description_join`]),fe=new Set([`request`,`run.agent`,`ship.round`,`run.settle_reviewed_head`,`run.description_turn`,`run.verdict_turn`,`post.card_close`,`post.reply`]),pe=new Set([`run.reading_diff`]);function W(e,t){if(pe.has(e))return{kind:`background`};if(fe.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(ue.has(e)||e.startsWith(`dispatch.workspace.attach.`))return{kind:`counted`,bucket:`getting_ready`};if(de.has(e))return{kind:`counted`,bucket:`finishing_up`};if(e.startsWith(`tool.`)||e.startsWith(`mcp.`))return{kind:`counted`,bucket:`tools`}}var G={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(G);function me(e){return Object.prototype.hasOwnProperty.call(G,e)?e:void 0}function he(e){let t=me(e);if(t!==void 0)return G[t];if(e.endsWith(`-stale-sweep`)){let t=me(e.slice(0,-12));if(t!==void 0)return`clearing leftovers before ${G[t]}`}}var ge={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`},_e=`a Switchboard step`;function K(e){if(e in ge)return ge[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:_e}for(let t of[`dispatch.workspace.attach.`,`run.command.`])if(e.startsWith(t))return he(e.slice(t.length))??`a Switchboard step`;return _e}var ve=`A-Za-z0-9:@._-`;RegExp(`^[${ve}]{1,128}$`),RegExp(`[^${ve}]`,`g`);function q(e){return e.type===`span_start`||e.type===`span_end`}function ye(e,t){return/^[A-Za-z0-9_-]{1,64}$/.test(e)?`synth:${e}`:`synth:${t}`}function be(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 J(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 xe(e){let t=be(e),n=new Set;for(let t of e){if(!q(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=ye(o,a);r.push(Se(s,`tool.${e.tool}`,e.at,J(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(Ce(n.spanId,`tool.${e.tool}`,n.startedAt,Math.max(0,a-n.startedAt),J(t,n.startedAt),o,e.ok?`ok`:`error`));return}default:r.push(e)}}),r}function Se(e,t,n,r,i){return{type:`span_start`,spanId:e,...r===void 0?{}:{parentSpanId:r},name:t,...i?{attrs:i}:{},at:n}}function Ce(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 we(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 Te(){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 Ee=[/\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 De(e){return Ee.some(t=>t.test(e))}var Oe=/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/,ke=/^[0-9a-f]{7,40}$/,Ae=/^(?![.-])(?!.*\.\.)(?!.*\/\/)(?!.*@\{)(?!.*\.lock$)(?!.*[./]$)[\w][\w./-]*$/;function Y(e){return e&&Oe.test(e)?`https://github.com/${e}`:void 0}function X(e,t){let n=Y(e);if(!(!n||t===void 0||!Number.isInteger(t)||t<=0))return`${n}/pull/${t}`}function je(e,t){let n=Y(e);if(n&&t&&Ae.test(t))return`${n}/tree/${t.split(`/`).map(encodeURIComponent).join(`/`)}`}function Me(e,t){let n=Y(e);if(n&&t&&ke.test(t))return`${n}/commit/${t}`}function Ne(e){return e.slice(0,7)}function Pe(e){if(e===`slack.receive`||e.startsWith(`dispatch.`))return`getting_ready`;let t=W(e,`agent`);return t?.kind===`counted`&&t.bucket===`finishing_up`?`finishing_up`:void 0}function Fe(e){return e===`request`||e===`run.agent`}var Ie={getting_ready:`Getting ready`,finishing_up:`Finishing up`};function Le(e){let t=e.rows.length,n=`${t} step${t===1?``:`s`}`,r=Ie[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} · ${O(Math.max(0,a-i),`precise`)}`}function Re(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 ze(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`${e.urlBase}${n}${e.token?`?t=${encodeURIComponent(e.token)}`:``}`}function Be(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 Ve(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 He(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 Ue(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 We(e){let{meta:t,prOpened:n}=e,r=t?.repo&&Y(t.repo)?t.repo:void 0;if(t?.agent===`review`){if(De(e.requestText))return{text:`verdict, Slack only`};if(r&&t.pr!==void 0){let e=X(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?X(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 Ge(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:j(e.result?.exitCode),open:t}}function Ke(e={}){let t=e.openTags&&e.openTags.length>0?e.openTags:[`failed`,`infra`],n=le(),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=Te(),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(Ge(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,Ge(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=He(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`)&&B(e.mode);return;case`replay_note`:r.log.push({kind:`note`,key:y(`note`),replay:!0,text:e.text});return;case`span`:{if(Fe(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:K(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=Pe(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),q(t)&&we(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 I(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 L(){for(let e of u.values())if(e.status===`running`)return e;return null}function R(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 z(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 B(e){r.stopMode=e}function ee(e){r.elided.push(e),r.log.push({kind:`note`,key:y(`note`),replay:!0,text:Ve(e)}),r.placeholder=!1,r.traceVersion++}return{state:r,handle:P,noteElided:ee,spanSet:()=>[...a.values()],losses:e=>i.losses({windowStart:e,elided:r.elided}),pendingCall:L,flushPendingTurn:O,closePhases(){N(`getting_ready`),N(`finishing_up`)},setAllOpen:R,togglePhase(e){e.open=!e.open;let t=l.get(e.phase);t&&(t.toggled=!0)},reveal:z,landing:I,callHeadline:e=>u.get(e)?.headline,toggleGroup(e){e.manual=!0,e.groupOpen=!e.groupOpen},toggleCall(e){e.open=!e.open},markStopping:B,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 M(e,this.now(t))??0},elapsedAt(t){return M({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 ${O(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?ze(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(H)(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(H)(b(at)))+` of `+x(b(H)(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(H)(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?``:O(Math.max(0,e-t.call.startedAt),`clock`)}),l=g(()=>A(t.call.durationMs,`tool`,t.call.timedOut)),u=g(()=>k(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(V)(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(V)(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(V)(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(H)(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(()=>Ue(u.value)),C=g(()=>a.value.some(e=>e.kind===`call`&&e.call.timedOut)),w=g(()=>A(u.value.ms,`tool`,C.value)),T=g(()=>k(w.value)),E=g(()=>r.step.turn?A(r.step.turn.durationMs,`turn`):void 0),D=g(()=>E.value?k(E.value):void 0),j=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(U,{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(V)(e.step.at)},x(b(re)(e.step.at)),9,dn))]),e.step.turn&&e.step.narration!==null?(p(),v(`div`,fn,[l(U,{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 j.value==`number`?`calls began ${b(V)(j.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(O)(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`${O(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(O)(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),W(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=W(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=O(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=O(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?K(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})=>`${O(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:O(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=W(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),W(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]} ${O(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`||W(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??K(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 ${O(t.timeoutMs,`clock`)}`),typeof t.waitedMs==`number`&&n.push(`waited ${O(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=Ke(),d=g(()=>{if(o.value!==`ready`)return null;s.state.traceVersion;let e=n.run,t=e.receivedAt??e.startedAt,r=M(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?xe(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||I(t.run.id))),o=g(()=>ee(t.run)),c=g(()=>R(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(()=>A(t.run.finished&&typeof t.run.finishedAt==`number`?t.run.finishedAt-t.run.startedAt:void 0,`run`)),C=g(()=>k(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(P)(e.run),tip:b(F)(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(B)[b(N)(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(te)(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(L)(e.run,e.now)),15,jr),_(`span`,Mr,x(b(z)(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(I)(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(P)(e.run),tip:b(F)(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(B)[b(N)(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(te)(e.run)},x(b(D)(e.run.startedAt,e.now)),9,Rr),_(`span`,zr,x(b(L)(e.run,e.now)),1),_(`span`,Br,x(b(z)(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(I)(e.run.id)}`},`open ↗`,8,Vr)]))],10,wr))}});export{re as A,Me as C,Ne as D,je as E,ce as O,qe as S,Y as T,Ze as _,Cn as a,Re as b,$e as c,Je as d,Ke as f,Ye as g,Z as h,Hn as i,U 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,Be as v,X as w,We as x,Le as y};