@coreplane/switchboard 1.256.0 → 1.257.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 (58) hide show
  1. package/dist/assets/config/config.example.yaml +14 -0
  2. package/dist/assets/deploy/cloudflare-memory/worker.ts +340 -7
  3. package/dist/assets/deploy/cloudflare-resident/drain.ts +49 -4
  4. package/dist/assets/deploy/cloudflare-resident/worker.ts +52 -4
  5. package/dist/assets/package-lock.json +3 -3
  6. package/dist/assets/package.json +5 -3
  7. package/dist/assets/project.json +17 -9
  8. package/dist/assets/source.json +3 -3
  9. package/dist/assets/src/agents/registry.ts +24 -1
  10. package/dist/assets/src/core/authz/grants.ts +12 -0
  11. package/dist/assets/src/core/authz/policy.ts +15 -0
  12. package/dist/assets/src/core/budgets.ts +51 -17
  13. package/dist/assets/src/core/coordinator/contract.ts +45 -5
  14. package/dist/assets/src/core/coordinator/driver.ts +6 -3
  15. package/dist/assets/src/core/delivery.ts +8 -5
  16. package/dist/assets/src/core/plane/decide.ts +468 -12
  17. package/dist/assets/src/core/plane/findings.ts +120 -0
  18. package/dist/assets/src/core/runEvents.ts +41 -14
  19. package/dist/assets/src/core/runFriction.ts +16 -0
  20. package/dist/assets/src/core/runLedger/types.ts +16 -3
  21. package/dist/assets/src/core/runRecord.ts +12 -0
  22. package/dist/assets/src/core/ship/contract.ts +14 -2
  23. package/dist/assets/src/core/ship/coordinator.ts +98 -29
  24. package/dist/assets/src/core/ship/renewal.ts +19 -17
  25. package/dist/assets/src/core/trace/attrs.ts +1 -1
  26. package/dist/assets/src/core/untrusted.ts +35 -0
  27. package/dist/assets/src/execution/residentCredentials.ts +7 -4
  28. package/dist/assets/web/dist/.vite/manifest.json +80 -55
  29. package/dist/assets/web/dist/assets/HomePage-DJqJQzrL.js +1 -0
  30. package/dist/assets/web/dist/assets/{PendingTurnRow-DGINv9XT.js → PendingTurnRow-fhKqKUVv.js} +1 -1
  31. package/dist/assets/web/dist/assets/PlanePage-Bood0hNO.js +1 -0
  32. package/dist/assets/web/dist/assets/{ResidentDetailPage-jYhEeeyu.js → ResidentDetailPage-DOe1HtUC.js} +1 -1
  33. package/dist/assets/web/dist/assets/{ResidentsIndexPage-DvFmlV4U.js → ResidentsIndexPage-TyCGjXM4.js} +1 -1
  34. package/dist/assets/web/dist/assets/RunFoldRow-C_4t-sit.js +1 -0
  35. package/dist/assets/web/dist/assets/{RunRoutePage-CvZ-TOT3.js → RunRoutePage-BNepPMRX.js} +4 -4
  36. package/dist/assets/web/dist/assets/RunsIndexPage-jZnMw1mM.js +1 -0
  37. package/dist/assets/web/dist/assets/{ScheduledPage-Viim-bus.js → ScheduledPage-BkNoudDP.js} +1 -1
  38. package/dist/assets/web/dist/assets/{SettingsPage-CYUy8McC.js → SettingsPage-COvWGXl-.js} +1 -1
  39. package/dist/assets/web/dist/assets/SilentTurn-DNAANKgN.js +2 -0
  40. package/dist/assets/web/dist/assets/SlackMark-CtiHrNjr.js +1 -0
  41. package/dist/assets/web/dist/assets/{StatusDot-Dv6UMaPy.js → StatusDot-BgmkSV0S.js} +1 -1
  42. package/dist/assets/web/dist/assets/{Tooltip-Bd-5Rypv.js → Tooltip-DEUPuCPW.js} +1 -1
  43. package/dist/assets/web/dist/assets/UnitRoutePage-DNhdzxvY.js +1 -0
  44. package/dist/assets/web/dist/assets/{dist-Nl3uaxrP.js → dist-CF3jz9LM.js} +1 -1
  45. package/dist/assets/web/dist/assets/durationTone-CVpX_yIk.js +1 -0
  46. package/dist/assets/web/dist/assets/main-7SAujY_s.js +28 -0
  47. package/dist/assets/web/dist/assets/main-DGC6WFqS.css +1 -0
  48. package/dist/assets/web/dist/assets/{sseReplay-DE6wv1Ua.js → sseReplay-BRJEIh83.js} +1 -1
  49. package/dist/cli.js +2672 -1102
  50. package/package.json +1 -1
  51. package/dist/assets/web/dist/assets/HomePage-BEiStFwW.js +0 -3
  52. package/dist/assets/web/dist/assets/PlanePage-JEj-lqgz.js +0 -1
  53. package/dist/assets/web/dist/assets/RunFoldRow-DvWzR1JQ.js +0 -1
  54. package/dist/assets/web/dist/assets/RunsIndexPage-JqVSDOok.js +0 -1
  55. package/dist/assets/web/dist/assets/UnitRoutePage-B81wEnKN.js +0 -1
  56. package/dist/assets/web/dist/assets/durationTone-U_rOqo6r.js +0 -1
  57. package/dist/assets/web/dist/assets/main-C4QfwybO.css +0 -1
  58. package/dist/assets/web/dist/assets/main-DRxWlffc.js +0 -28
@@ -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-Nl3uaxrP.js",
31
+ "file": "assets/dist-CF3jz9LM.js",
32
32
  "name": "dist",
33
33
  "src": "../node_modules/@pierre/diffs/dist/index.js",
34
34
  "isDynamicEntry": true,
@@ -2570,28 +2570,29 @@
2570
2570
  "_RunsTabs-kHbbxVHx.js"
2571
2571
  ]
2572
2572
  },
2573
- "_PendingTurnRow-DGINv9XT.js": {
2574
- "file": "assets/PendingTurnRow-DGINv9XT.js",
2573
+ "_PendingTurnRow-fhKqKUVv.js": {
2574
+ "file": "assets/PendingTurnRow-fhKqKUVv.js",
2575
2575
  "name": "PendingTurnRow",
2576
2576
  "imports": [
2577
2577
  "_AppShell-CSXDCV4x.js",
2578
2578
  "_browser-B6T5hjfR.js",
2579
2579
  "_indexRow-DborJPFp.js",
2580
2580
  "_format-BldUwl_R.js",
2581
- "_sseReplay-DE6wv1Ua.js"
2581
+ "_sseReplay-BRJEIh83.js"
2582
2582
  ]
2583
2583
  },
2584
- "_RunFoldRow-DvWzR1JQ.js": {
2585
- "file": "assets/RunFoldRow-DvWzR1JQ.js",
2584
+ "_RunFoldRow-C_4t-sit.js": {
2585
+ "file": "assets/RunFoldRow-C_4t-sit.js",
2586
2586
  "name": "RunFoldRow",
2587
2587
  "imports": [
2588
2588
  "_browser-B6T5hjfR.js",
2589
2589
  "_indexFormat-B-pd4r7Y.js",
2590
2590
  "_indexRow-DborJPFp.js",
2591
2591
  "_format-BldUwl_R.js",
2592
- "_durationTone-U_rOqo6r.js",
2593
- "_sseReplay-DE6wv1Ua.js",
2594
- "_StatusDot-Dv6UMaPy.js"
2592
+ "_SlackMark-CtiHrNjr.js",
2593
+ "_sseReplay-BRJEIh83.js",
2594
+ "_durationTone-CVpX_yIk.js",
2595
+ "_StatusDot-BgmkSV0S.js"
2595
2596
  ]
2596
2597
  },
2597
2598
  "_RunsTabs-kHbbxVHx.js": {
@@ -2610,16 +2611,37 @@
2610
2611
  "_browser-B6T5hjfR.js"
2611
2612
  ]
2612
2613
  },
2613
- "_StatusDot-Dv6UMaPy.js": {
2614
- "file": "assets/StatusDot-Dv6UMaPy.js",
2614
+ "_SilentTurn-DNAANKgN.js": {
2615
+ "file": "assets/SilentTurn-DNAANKgN.js",
2616
+ "name": "SilentTurn",
2617
+ "imports": [
2618
+ "_browser-B6T5hjfR.js",
2619
+ "_PendingTurnRow-fhKqKUVv.js",
2620
+ "_eventSource-Bj_dZf6M.js",
2621
+ "_indexFormat-B-pd4r7Y.js",
2622
+ "_indexRow-DborJPFp.js",
2623
+ "_format-BldUwl_R.js",
2624
+ "_sseReplay-BRJEIh83.js",
2625
+ "_durationTone-CVpX_yIk.js"
2626
+ ]
2627
+ },
2628
+ "_SlackMark-CtiHrNjr.js": {
2629
+ "file": "assets/SlackMark-CtiHrNjr.js",
2630
+ "name": "SlackMark",
2631
+ "imports": [
2632
+ "_browser-B6T5hjfR.js"
2633
+ ]
2634
+ },
2635
+ "_StatusDot-BgmkSV0S.js": {
2636
+ "file": "assets/StatusDot-BgmkSV0S.js",
2615
2637
  "name": "StatusDot",
2616
2638
  "imports": [
2617
2639
  "_browser-B6T5hjfR.js",
2618
- "_Tooltip-Bd-5Rypv.js"
2640
+ "_Tooltip-DEUPuCPW.js"
2619
2641
  ]
2620
2642
  },
2621
- "_Tooltip-Bd-5Rypv.js": {
2622
- "file": "assets/Tooltip-Bd-5Rypv.js",
2643
+ "_Tooltip-DEUPuCPW.js": {
2644
+ "file": "assets/Tooltip-DEUPuCPW.js",
2623
2645
  "name": "Tooltip",
2624
2646
  "imports": [
2625
2647
  "_AppShell-CSXDCV4x.js",
@@ -2670,12 +2692,9 @@
2670
2692
  "file": "assets/delivery-CTdOqpVK.js",
2671
2693
  "name": "delivery"
2672
2694
  },
2673
- "_durationTone-U_rOqo6r.js": {
2674
- "file": "assets/durationTone-U_rOqo6r.js",
2675
- "name": "durationTone",
2676
- "imports": [
2677
- "_browser-B6T5hjfR.js"
2678
- ]
2695
+ "_durationTone-CVpX_yIk.js": {
2696
+ "file": "assets/durationTone-CVpX_yIk.js",
2697
+ "name": "durationTone"
2679
2698
  },
2680
2699
  "_eventSource-Bj_dZf6M.js": {
2681
2700
  "file": "assets/eventSource-Bj_dZf6M.js",
@@ -2813,15 +2832,15 @@
2813
2832
  "_AppShell-CSXDCV4x.js"
2814
2833
  ]
2815
2834
  },
2816
- "_sseReplay-DE6wv1Ua.js": {
2817
- "file": "assets/sseReplay-DE6wv1Ua.js",
2835
+ "_sseReplay-BRJEIh83.js": {
2836
+ "file": "assets/sseReplay-BRJEIh83.js",
2818
2837
  "name": "sseReplay",
2819
2838
  "imports": [
2820
2839
  "_browser-B6T5hjfR.js",
2821
2840
  "_wallClock-DmaC1sKA.js",
2822
2841
  "_indexRow-DborJPFp.js",
2823
2842
  "_format-BldUwl_R.js",
2824
- "_durationTone-U_rOqo6r.js"
2843
+ "_durationTone-CVpX_yIk.js"
2825
2844
  ]
2826
2845
  },
2827
2846
  "_tex-D-4vuedK.js": {
@@ -2869,7 +2888,7 @@
2869
2888
  ]
2870
2889
  },
2871
2890
  "src/main.ts": {
2872
- "file": "assets/main-DRxWlffc.js",
2891
+ "file": "assets/main-7SAujY_s.js",
2873
2892
  "name": "main",
2874
2893
  "src": "src/main.ts",
2875
2894
  "isEntry": true,
@@ -2892,7 +2911,7 @@
2892
2911
  "_NotFoundPage-DHuWyjlq.js"
2893
2912
  ],
2894
2913
  "css": [
2895
- "assets/main-C4QfwybO.css"
2914
+ "assets/main-DGC6WFqS.css"
2896
2915
  ],
2897
2916
  "assets": [
2898
2917
  "assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2",
@@ -2932,23 +2951,24 @@
2932
2951
  ]
2933
2952
  },
2934
2953
  "src/pages/HomePage.vue": {
2935
- "file": "assets/HomePage-BEiStFwW.js",
2954
+ "file": "assets/HomePage-DJqJQzrL.js",
2936
2955
  "name": "HomePage",
2937
2956
  "src": "src/pages/HomePage.vue",
2938
2957
  "isDynamicEntry": true,
2939
2958
  "imports": [
2940
2959
  "_AppShell-CSXDCV4x.js",
2941
2960
  "_browser-B6T5hjfR.js",
2942
- "_Tooltip-Bd-5Rypv.js",
2943
- "_PendingTurnRow-DGINv9XT.js",
2961
+ "_Tooltip-DEUPuCPW.js",
2962
+ "_PendingTurnRow-fhKqKUVv.js",
2944
2963
  "src/main.ts",
2945
2964
  "_eventSource-Bj_dZf6M.js",
2946
2965
  "_wallClock-DmaC1sKA.js",
2947
2966
  "_indexFormat-B-pd4r7Y.js",
2948
2967
  "_indexRow-DborJPFp.js",
2949
2968
  "_format-BldUwl_R.js",
2950
- "_durationTone-U_rOqo6r.js",
2951
- "_sseReplay-DE6wv1Ua.js"
2969
+ "_SilentTurn-DNAANKgN.js",
2970
+ "_SlackMark-CtiHrNjr.js",
2971
+ "_sseReplay-BRJEIh83.js"
2952
2972
  ]
2953
2973
  },
2954
2974
  "src/pages/MetricsPage.vue": {
@@ -2963,20 +2983,23 @@
2963
2983
  ]
2964
2984
  },
2965
2985
  "src/pages/PlanePage.vue": {
2966
- "file": "assets/PlanePage-JEj-lqgz.js",
2986
+ "file": "assets/PlanePage-Bood0hNO.js",
2967
2987
  "name": "PlanePage",
2968
2988
  "src": "src/pages/PlanePage.vue",
2969
2989
  "isDynamicEntry": true,
2970
2990
  "imports": [
2971
2991
  "_AppShell-CSXDCV4x.js",
2972
2992
  "_browser-B6T5hjfR.js",
2993
+ "_PendingTurnRow-fhKqKUVv.js",
2973
2994
  "_wallClock-DmaC1sKA.js",
2974
2995
  "_indexRow-DborJPFp.js",
2975
- "_format-BldUwl_R.js"
2996
+ "_format-BldUwl_R.js",
2997
+ "_SilentTurn-DNAANKgN.js",
2998
+ "_sseReplay-BRJEIh83.js"
2976
2999
  ]
2977
3000
  },
2978
3001
  "src/pages/ResidentDetailPage.vue": {
2979
- "file": "assets/ResidentDetailPage-jYhEeeyu.js",
3002
+ "file": "assets/ResidentDetailPage-DOe1HtUC.js",
2980
3003
  "name": "ResidentDetailPage",
2981
3004
  "src": "src/pages/ResidentDetailPage.vue",
2982
3005
  "isDynamicEntry": true,
@@ -2984,46 +3007,47 @@
2984
3007
  "_AppShell-CSXDCV4x.js",
2985
3008
  "_browser-B6T5hjfR.js",
2986
3009
  "src/main.ts",
2987
- "_StatusDot-Dv6UMaPy.js"
3010
+ "_StatusDot-BgmkSV0S.js"
2988
3011
  ]
2989
3012
  },
2990
3013
  "src/pages/ResidentsIndexPage.vue": {
2991
- "file": "assets/ResidentsIndexPage-DvFmlV4U.js",
3014
+ "file": "assets/ResidentsIndexPage-TyCGjXM4.js",
2992
3015
  "name": "ResidentsIndexPage",
2993
3016
  "src": "src/pages/ResidentsIndexPage.vue",
2994
3017
  "isDynamicEntry": true,
2995
3018
  "imports": [
2996
3019
  "_AppShell-CSXDCV4x.js",
2997
3020
  "_browser-B6T5hjfR.js",
2998
- "_Tooltip-Bd-5Rypv.js",
3021
+ "_Tooltip-DEUPuCPW.js",
2999
3022
  "src/main.ts",
3000
3023
  "_eventSource-Bj_dZf6M.js",
3001
3024
  "_wallClock-DmaC1sKA.js",
3002
3025
  "_indexFormat-B-pd4r7Y.js",
3003
3026
  "_indexRow-DborJPFp.js",
3004
3027
  "_format-BldUwl_R.js",
3005
- "_StatusDot-Dv6UMaPy.js"
3028
+ "_StatusDot-BgmkSV0S.js"
3006
3029
  ]
3007
3030
  },
3008
3031
  "src/pages/RunRoutePage.vue": {
3009
- "file": "assets/RunRoutePage-CvZ-TOT3.js",
3032
+ "file": "assets/RunRoutePage-BNepPMRX.js",
3010
3033
  "name": "RunRoutePage",
3011
3034
  "src": "src/pages/RunRoutePage.vue",
3012
3035
  "isDynamicEntry": true,
3013
3036
  "imports": [
3014
3037
  "_AppShell-CSXDCV4x.js",
3015
3038
  "_browser-B6T5hjfR.js",
3016
- "_Tooltip-Bd-5Rypv.js",
3017
- "_PendingTurnRow-DGINv9XT.js",
3039
+ "_Tooltip-DEUPuCPW.js",
3040
+ "_PendingTurnRow-fhKqKUVv.js",
3018
3041
  "src/main.ts",
3019
3042
  "_eventSource-Bj_dZf6M.js",
3020
3043
  "_wallClock-DmaC1sKA.js",
3021
3044
  "_indexFormat-B-pd4r7Y.js",
3022
3045
  "_indexRow-DborJPFp.js",
3023
3046
  "_format-BldUwl_R.js",
3024
- "_RunFoldRow-DvWzR1JQ.js",
3025
- "_durationTone-U_rOqo6r.js",
3026
- "_sseReplay-DE6wv1Ua.js",
3047
+ "_RunFoldRow-C_4t-sit.js",
3048
+ "_SlackMark-CtiHrNjr.js",
3049
+ "_sseReplay-BRJEIh83.js",
3050
+ "_durationTone-CVpX_yIk.js",
3027
3051
  "_NotFoundPage-DHuWyjlq.js"
3028
3052
  ],
3029
3053
  "dynamicImports": [
@@ -3034,14 +3058,14 @@
3034
3058
  ]
3035
3059
  },
3036
3060
  "src/pages/RunsIndexPage.vue": {
3037
- "file": "assets/RunsIndexPage-JqVSDOok.js",
3061
+ "file": "assets/RunsIndexPage-jZnMw1mM.js",
3038
3062
  "name": "RunsIndexPage",
3039
3063
  "src": "src/pages/RunsIndexPage.vue",
3040
3064
  "isDynamicEntry": true,
3041
3065
  "imports": [
3042
3066
  "_AppShell-CSXDCV4x.js",
3043
3067
  "_browser-B6T5hjfR.js",
3044
- "_Tooltip-Bd-5Rypv.js",
3068
+ "_Tooltip-DEUPuCPW.js",
3045
3069
  "_InputMenu-BdZXnibG.js",
3046
3070
  "src/main.ts",
3047
3071
  "_eventSource-Bj_dZf6M.js",
@@ -3049,20 +3073,21 @@
3049
3073
  "_indexFormat-B-pd4r7Y.js",
3050
3074
  "_indexRow-DborJPFp.js",
3051
3075
  "_format-BldUwl_R.js",
3052
- "_durationTone-U_rOqo6r.js",
3076
+ "_SlackMark-CtiHrNjr.js",
3077
+ "_durationTone-CVpX_yIk.js",
3053
3078
  "_RunsTabs-kHbbxVHx.js",
3054
- "_StatusDot-Dv6UMaPy.js"
3079
+ "_StatusDot-BgmkSV0S.js"
3055
3080
  ]
3056
3081
  },
3057
3082
  "src/pages/ScheduledPage.vue": {
3058
- "file": "assets/ScheduledPage-Viim-bus.js",
3083
+ "file": "assets/ScheduledPage-BkNoudDP.js",
3059
3084
  "name": "ScheduledPage",
3060
3085
  "src": "src/pages/ScheduledPage.vue",
3061
3086
  "isDynamicEntry": true,
3062
3087
  "imports": [
3063
3088
  "_AppShell-CSXDCV4x.js",
3064
3089
  "_browser-B6T5hjfR.js",
3065
- "_Tooltip-Bd-5Rypv.js",
3090
+ "_Tooltip-DEUPuCPW.js",
3066
3091
  "_wallClock-DmaC1sKA.js",
3067
3092
  "_indexFormat-B-pd4r7Y.js",
3068
3093
  "_format-BldUwl_R.js",
@@ -3070,7 +3095,7 @@
3070
3095
  ]
3071
3096
  },
3072
3097
  "src/pages/SettingsPage.vue": {
3073
- "file": "assets/SettingsPage-CYUy8McC.js",
3098
+ "file": "assets/SettingsPage-COvWGXl-.js",
3074
3099
  "name": "SettingsPage",
3075
3100
  "src": "src/pages/SettingsPage.vue",
3076
3101
  "isDynamicEntry": true,
@@ -3078,14 +3103,14 @@
3078
3103
  "_AppShell-CSXDCV4x.js",
3079
3104
  "_browser-B6T5hjfR.js",
3080
3105
  "_SettingSelect-BfID5nF4.js",
3081
- "_Tooltip-Bd-5Rypv.js",
3106
+ "_Tooltip-DEUPuCPW.js",
3082
3107
  "_InputMenu-BdZXnibG.js",
3083
3108
  "_settingsApi-Dm6eaQcu.js",
3084
3109
  "_indexRow-DborJPFp.js"
3085
3110
  ]
3086
3111
  },
3087
3112
  "src/pages/UnitRoutePage.vue": {
3088
- "file": "assets/UnitRoutePage-B81wEnKN.js",
3113
+ "file": "assets/UnitRoutePage-DNhdzxvY.js",
3089
3114
  "name": "UnitRoutePage",
3090
3115
  "src": "src/pages/UnitRoutePage.vue",
3091
3116
  "isDynamicEntry": true,
@@ -3097,9 +3122,9 @@
3097
3122
  "_indexFormat-B-pd4r7Y.js",
3098
3123
  "_indexRow-DborJPFp.js",
3099
3124
  "_format-BldUwl_R.js",
3100
- "_RunFoldRow-DvWzR1JQ.js",
3101
- "_durationTone-U_rOqo6r.js",
3102
- "_sseReplay-DE6wv1Ua.js",
3125
+ "_RunFoldRow-C_4t-sit.js",
3126
+ "_SlackMark-CtiHrNjr.js",
3127
+ "_sseReplay-BRJEIh83.js",
3103
3128
  "_NotFoundPage-DHuWyjlq.js"
3104
3129
  ]
3105
3130
  }
@@ -0,0 +1 @@
1
+ import{i as e,r as t,t as n}from"./AppShell-CSXDCV4x.js";import{An as r,Cn as i,Cr as a,Ft as o,Gr as s,Ii as c,Li as l,Mn as u,Pi as d,Pt as ee,Qr as f,Sn as p,Tr as m,Xr as h,_r as g,bn as _,c as v,dr as te,en as ne,hr as re,ir as ie,ji as y,kn as b,l as ae,ln as x,o as oe,sr as se,t as S,wr as ce,xi as C,xn as w,y as T,yi as E,yn as D,yr as le}from"./browser-B6T5hjfR.js";import{t as O}from"./Tooltip-DEUPuCPW.js";import{i as ue}from"./PendingTurnRow-fhKqKUVv.js";import{b as de,x as fe}from"./main-7SAujY_s.js";import{t as pe}from"./eventSource-Bj_dZf6M.js";import{t as me}from"./wallClock-DmaC1sKA.js";import{r as he}from"./indexFormat-B-pd4r7Y.js";import{K as ge,i as _e}from"./indexRow-DborJPFp.js";import"./format-BldUwl_R.js";import{S as k,_ as ve,a as ye,b as be,c as A,d as j,f as xe,g as Se,h as M,i as Ce,l as we,m as N,n as Te,o as Ee,p as De,r as Oe,s as P,t as ke,u as Ae,v as je,x as Me,y as Ne}from"./SilentTurn-DNAANKgN.js";import{t as F}from"./SlackMark-CtiHrNjr.js";import{T as Pe}from"./sseReplay-BRJEIh83.js";var I={class:`thread-tip flex max-w-xs flex-col gap-1 text-xs`},Fe={class:`tip-title leading-snug text-highlighted`},L={class:`flex flex-wrap items-center gap-x-1.5 gap-y-0.5 font-mono text-[0.68rem] text-muted`},Ie={class:`tip-when tabular-nums`},Le={class:`tip-source inline-flex items-center gap-1`},Re={class:`tip-runs`},ze={key:0,class:`tip-live inline-flex items-center gap-1 text-toned`},R=u({__name:`ThreadTip`,props:{row:{},now:{}},setup(e){let t=e,n=D(()=>k(t.row,t.now));return(t,r)=>(g(),i(`div`,I,[_(`p`,Fe,l(n.value.title),1),_(`p`,L,[_(`span`,Ie,l(n.value.when),1),r[1]||=_(`span`,{"aria-hidden":`true`},`·`,-1),_(`span`,Le,[e.row.surface===`slack`?(g(),w(F,{key:0})):p(``,!0),b(l(n.value.source),1)]),r[2]||=_(`span`,{"aria-hidden":`true`},`·`,-1),_(`span`,Re,l(n.value.runs),1),n.value.live?(g(),i(`span`,ze,[...r[0]||=[_(`span`,{class:`size-1.5 rounded-full bg-ok`,"aria-hidden":`true`},null,-1),b(`live`,-1)]])):p(``,!0)])]))}}),z={class:`rail flex flex-col gap-1 text-[0.8rem]`,"aria-label":`Recent threads`},B={class:`filter mb-2 flex items-center gap-2 rounded-lg border border-default px-2.5 py-1.5 transition-colors duration-150 ease-out focus-within:border-primary hover:border-accented`},V={key:0,class:`rounded border border-default px-1 font-mono text-[0.65rem] text-dimmed`},Be={key:0,class:`empty px-3 py-1 text-xs text-dimmed`},H={key:1,class:`nomatch px-3 py-1 text-xs text-dimmed`},U={key:0,class:`dot mt-px size-1.5 shrink-0 self-center rounded-full bg-ok motion-safe:animate-pulse`,"aria-label":`a run is in flight`},Ve={class:`title min-w-0 flex-1 truncate text-toned group-hover:text-highlighted group-aria-[current=page]:text-highlighted`},He={class:`when shrink-0 font-mono text-[0.7rem] tabular-nums text-dimmed`},W={class:`retention px-3 pt-1 text-[0.7rem] leading-relaxed text-dimmed`},G={class:`model px-3 pt-2 text-[0.7rem] leading-relaxed text-dimmed`,"data-testid":`what-is-a-thread`},K=500,Ue=u({__name:`ConversationRail`,props:{rows:{},current:{},now:{},retention:{}},setup(e,{expose:t}){let n=e,s=C(``),c=C(null),u=D(()=>N(n.rows,s.value));function d(){c.value?.focus(),c.value?.select()}function ee(e){e.key===`Escape`&&(s.value=``,c.value?.blur())}return t({focusFilter:d}),(t,n)=>{let d=T,v=m(`RouterLink`),te=O;return g(),i(`nav`,z,[r(v,{class:`new group mb-3 flex items-center gap-2 rounded-xl bg-inverted px-3 py-2 font-medium text-inverted no-underline transition-[transform,opacity] duration-150 ease-out hover:-translate-y-px hover:opacity-90 active:translate-y-0 active:opacity-100`,to:`/threads`,"aria-current":e.current===``?`page`:void 0,"data-testid":`new-thread`},{default:h(()=>[r(d,{name:`i-lucide-plus`,class:`size-4 shrink-0 transition-transform duration-150 ease-out group-hover:rotate-90`,"aria-hidden":`true`}),n[1]||=_(`span`,null,`New thread`,-1),n[2]||=_(`span`,{class:`kbd ml-auto flex gap-0.5 font-mono text-[0.65rem] opacity-70`,"aria-label":`shortcut shift command O`},[_(`kbd`,{class:`rounded border border-current/30 px-1`},`⇧`),_(`kbd`,{class:`rounded border border-current/30 px-1`},`⌘`),_(`kbd`,{class:`rounded border border-current/30 px-1`},`O`)],-1)]),_:1},8,[`aria-current`]),_(`label`,B,[r(d,{name:`i-lucide-search`,class:`size-3.5 shrink-0 text-dimmed`,"aria-hidden":`true`}),f(_(`input`,{ref_key:`filter`,ref:c,"onUpdate:modelValue":n[0]||=e=>s.value=e,class:`min-w-0 flex-1 bg-transparent text-[0.8rem] text-highlighted outline-none placeholder:text-dimmed`,type:`text`,placeholder:`Filter recent`,"aria-label":`Filter recent threads`,autocomplete:`off`,onKeydown:ee},null,544),[[ne,s.value]]),s.value?p(``,!0):(g(),i(`kbd`,V,`⌘K`))]),n[8]||=_(`p`,{class:`label px-3 pb-1 font-mono text-[0.65rem] font-medium uppercase tracking-wider text-dimmed`},`Recent`,-1),e.rows.length===0?(g(),i(`p`,Be,`Nothing yet. Ask something.`)):u.value.length===0?(g(),i(`p`,H,`Nothing matches "`+l(s.value)+`".`,1)):p(``,!0),r(o,{name:`sb-rise`,tag:`div`,class:`rows flex flex-col gap-0.5`},{default:h(()=>[(g(!0),i(x,null,a(u.value,t=>(g(),i(`div`,{key:t.id},[r(te,{"delay-duration":K,content:{side:`right`,sideOffset:12,align:`start`},ui:{content:`h-auto max-w-xs px-2.5 py-2`}},{content:h(()=>[r(R,{row:t,now:e.now},null,8,[`row`,`now`])]),default:h(()=>[r(v,{class:`row group relative flex items-baseline gap-2 rounded-lg px-3 py-1.5 no-underline transition-colors duration-150 ease-out hover:bg-(--ui-bg-muted) aria-[current=page]:bg-(--ui-bg-accented)`,to:`/threads/${encodeURIComponent(t.id)}`,"aria-current":t.id===e.current?`page`:void 0,"data-surface":t.surface},{default:h(()=>[n[3]||=_(`span`,{class:`bar absolute left-0 top-1/2 h-4 w-0.5 -translate-y-1/2 rounded-full bg-primary opacity-0 transition-opacity duration-150 ease-out group-aria-[current=page]:opacity-100`,"aria-hidden":`true`},null,-1),t.live?(g(),i(`span`,U)):p(``,!0),_(`span`,Ve,l(t.title),1),_(`span`,He,l(y(j)(t.lastAt,e.now)),1)]),_:2},1032,[`to`,`aria-current`,`data-surface`])]),_:2},1024)]))),128))]),_:1}),r(v,{class:`all mt-3 flex items-center gap-1.5 px-3 py-1 text-xs font-medium text-muted no-underline transition-colors duration-150 ease-out hover:text-highlighted`,to:`/runs`,"data-testid":`all-runs`},{default:h(()=>[n[4]||=b(` All runs `,-1),r(d,{name:`i-lucide-arrow-right`,class:`size-3 transition-transform duration-150 ease-out group-hover:translate-x-0.5`,"aria-hidden":`true`})]),_:1}),_(`p`,W,l(e.retention),1),_(`p`,G,[n[6]||=b(` A thread is a conversation; each message you send is a run. `,-1),r(v,{class:`text-muted hover:text-highlighted`,to:`/runs`},{default:h(()=>[...n[5]||=[b(`Runs`,-1)]]),_:1}),n[7]||=b(` lists every run across everyone's threads. `,-1)])])}}}),We={class:`empty mx-auto flex w-full max-w-2xl flex-col items-center gap-5 px-3 py-6 text-center`},Ge={class:`flex flex-col gap-1.5`},Ke={class:`greeting sb-stagger text-xl font-medium tracking-tight text-highlighted`,style:{"--sb-i":`1`}},qe={class:`sb-stagger w-full text-left`,style:{"--sb-i":`3`}},q={key:0,class:`chips flex flex-wrap justify-center gap-2`,"aria-label":`Suggestions`},J=[`onClick`],Je=u({__name:`EmptyState`,props:{name:{},hour:{},suggestions:{}},emits:[`pick`],setup(e,{emit:n}){let o=n;return(n,s)=>(g(),i(`section`,We,[r(t,{draw:``,idle:``,class:`mark-lg sb-stagger text-highlighted`,style:{"font-size":`3.25rem`,"--sb-i":`0`}}),_(`div`,Ge,[_(`h2`,Ke,l(y(M)(e.hour,e.name)),1),s[0]||=_(`p`,{class:`sub sb-stagger text-[0.875rem] text-muted`,style:{"--sb-i":`2`}},` Ask in plain words. The right agent picks it up, and you watch it work here. `,-1)]),_(`div`,qe,[ce(n.$slots,`default`)]),e.suggestions.length>0?(g(),i(`ul`,q,[(g(!0),i(x,null,a(e.suggestions,(e,t)=>(g(),i(`li`,{key:e,class:`sb-stagger`,style:c({"--sb-i":t+4})},[_(`button`,{type:`button`,class:`chip rounded-full border border-default px-3 py-1 text-[0.8rem] text-toned transition-[color,border-color,background-color,transform] duration-150 ease-out hover:-translate-y-px hover:border-accented hover:bg-(--ui-bg-muted) hover:text-highlighted focus-visible:outline-2 focus-visible:outline-primary active:translate-y-0`,onClick:t=>o(`pick`,e)},l(e),9,J)],4))),128))])):p(``,!0)]))}});function Ye(){return{runs:new Map,connected:!1}}function Xe(e,t){t.type===`upsert`&&t.run?t.run.finished||!t.run.threadKey?e.runs.delete(t.run.id):e.runs.set(t.run.id,{threadKey:t.run.threadKey,startedAt:t.run.startedAt,...t.run.label===void 0?{}:{label:t.run.label},...t.run.channelId===void 0?{}:{channelId:t.run.channelId}}):t.type===`removed`&&t.id&&e.runs.delete(t.id)}function Y(e){let t=new Map;for(let n of e.runs.values()){let e=t.get(n.threadKey)??[];e.push(n),t.set(n.threadKey,e)}return t}function Ze(e,t){return t.includes(`:`)?t:`${e}:${t}`}function Qe(e){let t=e.indexOf(`:`);return t>0?e.slice(0,t):`unknown`}function $e(e,t,n){if(!t.connected)return[...e];let r=Y(t),i=new Set,a=e.map(e=>{let t=Ze(n,e.id);i.add(t);let a=r.get(t);if(!a)return e.live?{...e,live:!1}:e;let o=e.live?0:a.length;return{...e,live:!0,runs:e.runs+o,lastAt:Math.max(e.lastAt,...a.map(e=>e.startedAt))}}),o=[];for(let[e,t]of r){if(i.has(e))continue;let r=t.reduce((e,t)=>t.startedAt>e.startedAt?t:e),a=r.label?he(r.label).snippet:void 0;o.push({id:e.startsWith(`${n}:`)?e.slice(n.length+1):e,title:a??r.label??e,excerpt:a??r.label??e,lastAt:r.startedAt,runs:t.length,live:!0,surface:Qe(r.channelId??e)})}return o.sort((e,t)=>t.lastAt-e.lastAt),[...o,...a]}var et={key:0,class:`mx-auto my-12 max-w-xl text-center text-toned`},tt=[`data-rail`],nt={key:0,class:`relative hidden md:block`},rt=[`aria-valuemin`,`aria-valuemax`,`aria-valuenow`],it={class:`thread mx-auto flex min-h-[calc(100vh-8rem)] w-full max-w-3xl flex-col`},at={key:4,class:`inline text-[0.875rem] text-toned`,"data-testid":`inline`},ot={key:2,class:`elsewhere sticky bottom-0 z-10 -mx-3 mt-auto bg-default/85 px-3 py-4 text-center text-[0.8rem] text-toned backdrop-blur sm:-mx-5 sm:px-5`,"data-testid":`elsewhere`},st=[`href`],ct={key:3,class:`composer-dock sticky bottom-0 z-10 -mx-3 mt-auto bg-default/85 px-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] pt-3 backdrop-blur sm:-mx-5 sm:px-5`},X=`(min-width: 48rem)`,Z=u({__name:`HomePage`,setup(t){let u=oe(`home`),f=me(u?.now),m=u?.conversation??``,ne=v(u?.retentionDays??null),ce=0,T=e=>`${e}-${++ce}`,O=E([]);for(let e of u?.turns??[]){if(`kind`in e){e.kind===`receipt`?O.push({key:T(`s`),kind:`silent`,reason:e.reason,at:e.decidedAt}):O.push({key:T(`w`),kind:`parent`,turn:e});continue}O.push({key:T(`p`),kind:`person`,text:e.request,at:e.receivedAt??e.startedAt,pending:!1});let t=!e.finished&&e.token?{eventsUrl:`/runs/${encodeURIComponent(e.id)}/events?t=${e.token}`,stopUrl:`/runs/${encodeURIComponent(e.id)}/stop?t=${e.token}`,serverNow:u?.now}:null;O.push({key:T(`a`),kind:`assistant`,turn:e,live:t,ended:e.finished})}let he=D(()=>{for(let e=O.length-1;e>=0;e--){let t=O[e];if(t.kind===`assistant`&&t.live&&!t.ended&&t.turn.hosted!==!0)return t}return null}),k=C(null),j=C(0);le(e,j);let M=C(``),N=C(void 0),F=D(()=>xe(he.value!==null,M.value)),I=C(!1);s(M,()=>{N.value&&M.value===``&&(N.value=void 0)});function Fe(e){M.value=e,L()}async function L(){if(!u||I.value)return;let e=Ee(M.value.trim(),u.commands);if(e===``)return;let t=E({key:T(`p`),kind:`person`,text:e,at:f.value,pending:!0});O.push(t),M.value=``,N.value=void 0,I.value=!0,j.value++;try{let n=await fetch(u.sendUrl,{method:`POST`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify({text:e})}),r=await n.json().catch(()=>({}));if(n.status===202&&typeof r.viewPath==`string`&&typeof r.runId==`string`){let n=Se(r.viewPath);if(!n)throw Error(`the run's view path was not one`);t.pending=!1,S.pathname()===`/threads`&&S.replaceUrl(`/threads/${encodeURIComponent(m)}`),O.push({key:T(`a`),kind:`assistant`,turn:{id:r.runId,request:e,startedAt:f.value,receivedAt:f.value,finished:!1,eventCount:0},live:{eventsUrl:n.eventsUrl,stopUrl:n.stopUrl},ended:!1});return}if(n.ok&&r.offer&&typeof r.offer.line==`string`){t.pending=!1;let e=je({line:r.offer.line,...r.offer});M.value=e.command,N.value=e.hint;return}if(n.ok&&typeof r.reply==`string`){t.pending=!1;let e=Ae(r.reply);e.kind===`inline`&&O.push({key:T(`i`),kind:`inline`,text:e.text});return}throw Error(r.error??`HTTP ${n.status}`)}catch(e){t.pending=!1,t.failed=`not sent: ${e instanceof Error?e.message:`error`}`}finally{I.value=!1}}function Ie(){let e=k.value;e&&fetch(`${e}${e.includes(`?`)?`&`:`?`}mode=soft`,{method:`POST`,credentials:`same-origin`})}function Le(e,t,n){let r=O.filter(e=>e.kind===`person`),i=ve(r.map(e=>({text:e.text,folded:e.folded!==void 0,ref:e})),t);if(!i)return;let a=e.turn.receivedAt??e.turn.startedAt;i.ref.folded=n===void 0?``:`at ${ge(Math.max(0,n-a),`clock`)}`}function Re(e){e.ended=!0,k.value=null}let ze=Ne({width:S.readPref(P.width),collapsed:S.readPref(P.collapsed)}),R=C(ze.width),z=C(ze.collapsed),B=C(!1),V=C(S.mediaMatches(X)),Be=S.onMediaChange(X,e=>{V.value=e}),H=C(null),U=C(null),Ve=D(()=>V.value?z.value?`Show recent threads`:`Hide recent threads`:`Recent threads`);function He(){if(V.value=S.mediaMatches(X),V.value){z.value=!z.value,S.writePref(P.collapsed,z.value?`1`:`0`);return}B.value=!0}function W(e,t){R.value=we(e),t&&S.writePref(P.width,String(R.value))}let G=null;function K(e){G&&W(G.startWidth+(e.clientX-G.startX),!1)}function We(){window.removeEventListener(`pointermove`,K),G&&(G=null,S.writePref(P.width,String(R.value)))}function Ge(e){e.button===0&&(e.preventDefault(),G={startX:e.clientX,startWidth:R.value},e.currentTarget?.setPointerCapture?.(e.pointerId),window.addEventListener(`pointermove`,K),window.addEventListener(`pointerup`,We,{once:!0}))}function Ke(e){if(e.key===`ArrowRight`)W(R.value+A.step,!0);else if(e.key===`ArrowLeft`)W(R.value-A.step,!0);else if(e.key===`Home`)W(A.min,!0);else if(e.key===`End`)W(A.max,!0);else return;e.preventDefault()}se(()=>{window.removeEventListener(`pointermove`,K),window.removeEventListener(`pointerup`,We),Be()});function qe(e){let t=be(e);if(t){if(e.preventDefault(),t===`newThread`){S.navigate(`/threads`);return}if(H.value){H.value.focusFilter();return}if(z.value&&S.mediaMatches(X)){z.value=!1,S.writePref(P.collapsed,`0`),ie().then(()=>H.value?.focusFilter());return}B.value=!0,ie().then(()=>U.value?.focusFilter())}}let q=C(null),J=C(!1);function Y(){return document.body.scrollHeight-(window.innerHeight+window.scrollY)}s(()=>O.length,()=>{let e=Me(Y());ie().then(()=>{e?q.value?.scrollIntoView?.({block:`end`}):J.value=!0})});function Ze(){Me(Y())&&(J.value=!1)}function Qe(){q.value?.scrollIntoView?.({block:`end`,behavior:`smooth`}),J.value=!1}te(()=>{window.addEventListener(`scroll`,Ze,{passive:!0}),window.addEventListener(`keydown`,qe),u&&ft()}),re(()=>{window.removeEventListener(`scroll`,Ze),window.removeEventListener(`keydown`,qe),Q?.close()});let Z=E(Ye()),lt=D(()=>$e(u?.conversations??[],Z,u?.lane??``)),ut=D(()=>{let e=he.value?.turn.id;return Z.runs.size+(e&&!Z.runs.has(e)?1:0)}),dt=pe(),Q=null;function ft(){Q=dt(`/runs?stream=1&mine=1`);let e=!1;Q.onopen=()=>{e&&Z.runs.clear(),e=!0,Z.connected=!0},Q.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}Xe(Z,t)}}let pt=D(()=>{let e=O.find(e=>e.kind===`person`);return e?De(e.text):`Switchboard`});s([pt,ut],([e,t])=>{S.setTitle(t>0?`(${t}) ${e}`:e),S.setFavicon(t>0?fe:de)},{immediate:!0});let mt=D(()=>new Date(f.value).getHours()),ht=D(()=>O.length===0),$=u?.elsewhere,gt=$?$.surface===`web`?`This thread is another person's conversation. You can read it here.`:`This thread lives in ${_e[$.surface]??$.surface}.`:``;return(e,t)=>{let s=ae,v=ue;return g(),w(n,{title:`Threads`,nav:`home`},{leading:h(()=>[r(s,{class:`rail-toggle -ml-1`,size:`xs`,color:`neutral`,variant:`ghost`,icon:V.value&&!z.value?`i-lucide-panel-left-close`:`i-lucide-panel-left`,"aria-label":Ve.value,"aria-expanded":V.value?!z.value:void 0,onClick:He},null,8,[`icon`,`aria-label`,`aria-expanded`])]),default:h(()=>[y(u)?(g(),i(`div`,{key:1,class:d([`home gap-8 md:grid`,z.value?`md:grid-cols-[minmax(0,1fr)]`:`md:grid-cols-[var(--rail-w)_minmax(0,1fr)]`]),style:c({"--rail-w":`${R.value}px`}),"data-rail":z.value?`hidden`:`shown`},[z.value?p(``,!0):(g(),i(`aside`,nt,[r(Ue,{ref_key:`rail`,ref:H,class:`sticky top-20`,rows:lt.value,current:y(m),now:y(f),retention:y(ne)},null,8,[`rows`,`current`,`now`,`retention`]),_(`div`,{class:`handle group/handle absolute inset-y-0 -right-5 flex w-3 cursor-col-resize touch-none select-none justify-center outline-none`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize the recent threads column`,"aria-valuemin":y(A).min,"aria-valuemax":y(A).max,"aria-valuenow":R.value,tabindex:`0`,"data-testid":`rail-handle`,onPointerdown:Ge,onKeydown:Ke,onDblclick:t[0]||=e=>W(y(A).default,!0)},[...t[5]||=[_(`span`,{class:`w-px rounded-full bg-(--ui-border-accented) opacity-0 transition-opacity duration-150 ease-out group-hover/handle:opacity-100 group-focus-visible/handle:opacity-100`,"aria-hidden":`true`},null,-1)]],40,rt)])),r(v,{open:B.value,"onUpdate:open":t[1]||=e=>B.value=e,side:`left`,title:`Recent threads`,ui:{content:`max-w-xs`}},{body:h(()=>[r(Ue,{ref_key:`sheetRail`,ref:U,rows:lt.value,current:y(m),now:y(f),retention:y(ne)},null,8,[`rows`,`current`,`now`,`retention`])]),_:1},8,[`open`]),_(`section`,it,[ht.value?(g(),w(Je,{key:0,class:`mb-auto mt-[clamp(1.5rem,14vh,9rem)]`,name:y(u).viewer.name,hour:mt.value,suggestions:y(u).suggestions,onPick:Fe},{default:h(()=>[r(ye,{modelValue:M.value,"onUpdate:modelValue":t[2]||=e=>M.value=e,mode:F.value,hint:N.value,commands:y(u).commands,autofocus:``,"sweep-on-mount":``,onSubmit:L,onStop:Ie},null,8,[`modelValue`,`mode`,`hint`,`commands`])]),_:1},8,[`name`,`hour`,`suggestions`])):(g(),w(o,{key:1,name:`sb-rise`,"move-class":`sb-move-move`,tag:`ol`,class:`transcript m-0 flex list-none flex-col gap-6 p-0 pb-32 pt-2`},{default:h(()=>[(g(!0),i(x,null,a(O,e=>(g(),i(`li`,{key:e.key},[e.kind===`person`?(g(),w(Ce,{key:0,text:e.text,at:e.at,now:y(f),pending:e.pending,folded:e.folded,failed:e.failed},null,8,[`text`,`at`,`now`,`pending`,`folded`,`failed`])):e.kind===`assistant`?(g(),w(Oe,{key:1,turn:e.turn,live:e.live,now:y(f),onInput:(t,n)=>Le(e,t,n),onEnded:t=>Re(e),onStop:t[3]||=e=>k.value=e},null,8,[`turn`,`live`,`now`,`onInput`,`onEnded`])):e.kind===`silent`?(g(),w(ke,{key:2,reason:e.reason,"decided-at":e.at,now:y(f)},null,8,[`reason`,`decided-at`,`now`])):e.kind===`parent`?(g(),w(Te,{key:3,turn:e.turn,now:y(f)},null,8,[`turn`,`now`])):(g(),i(`div`,at,[r(Pe,{text:e.text},null,8,[`text`])]))]))),128))]),_:1})),_(`div`,{ref_key:`end`,ref:q,class:`end`,"aria-hidden":`true`},null,512),!ht.value&&y($)?(g(),i(`p`,ot,[b(l(y(gt))+` `,1),y($).url?(g(),i(`a`,{key:0,href:y($).url,target:`_blank`,rel:`noopener`,class:`text-highlighted`},`Reply there ↗`,8,st)):y($).surface===`web`?p(``,!0):(g(),i(x,{key:1},[b(`Reply there.`)],64))])):ht.value?p(``,!0):(g(),i(`div`,ct,[r(ee,{name:`sb-rise`},{default:h(()=>[J.value?(g(),i(`button`,{key:0,type:`button`,class:`new-pill absolute -top-9 left-1/2 -translate-x-1/2 rounded-full border border-default bg-(--ui-bg-elevated) px-3 py-1 font-mono text-[0.7rem] text-toned shadow-sm hover:text-highlighted`,onClick:Qe},` ↓ new `)):p(``,!0)]),_:1}),r(ye,{modelValue:M.value,"onUpdate:modelValue":t[4]||=e=>M.value=e,mode:F.value,hint:N.value,commands:y(u).commands,autofocus:``,onSubmit:L,onStop:Ie},null,8,[`modelValue`,`mode`,`hint`,`commands`])]))])],14,tt)):(g(),i(`div`,et,`This page needs its seed.`))]),_:1})}}});export{Z as default};
@@ -1 +1 @@
1
- import{C as e,D as t,O as n,P as r,T as i,w as a}from"./AppShell-CSXDCV4x.js";import{An as o,B as s,Br as c,Cn as l,Ct as u,D as d,Di as f,Dr as p,Fi as m,G as h,Gr as g,Hn as _,I as v,J as y,K as b,L as x,Li as S,Mn as C,Oi as ee,Pi as w,Pr as T,Qr as E,S as D,Sn as O,T as k,Xr as A,_r as j,b as te,bn as M,dr as N,gt as P,ji as F,kn as I,l as ne,m as re,rn as ie,rr as L,rt as ae,tn as R,w as oe,wr as z,x as B,xi as V,xn as H,yn as U,z as W}from"./browser-B6T5hjfR.js";import{K as G}from"./indexRow-DborJPFp.js";import"./format-BldUwl_R.js";import{d as K,f as q,m as se,p as ce}from"./sseReplay-DE6wv1Ua.js";var[J,le]=b(`DialogRoot`),ue=C({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=P(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),i=V(),a=V(),{modal:o,unmountOnHide:s}=ee(n);return le({open:r,modal:o,unmountOnHide:s,openModal:()=>{r.value=!0},onOpenChange:e=>{r.value=e},onOpenToggle:()=>{r.value=!r.value},contentId:``,titleId:``,descriptionId:``,triggerElement:i,contentElement:a}),(e,t)=>z(e.$slots,`default`,{open:F(r),close:()=>r.value=!1})}}),de=C({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;W();let n=J();return(e,r)=>(j(),H(F(v),L(t,{type:e.as===`button`?`button`:void 0,onClick:r[0]||=e=>F(n).onOpenChange(!1)}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`type`]))}}),Y=C({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(n,{emit:r}){let s=n,c=r,l=J(),{forwardRef:u,currentElement:d}=W();return l.titleId||=t(void 0,`reka-dialog-title`),l.descriptionId||=t(void 0,`reka-dialog-description`),N(()=>{l.contentElement=d,h()!==document.body&&(l.triggerElement.value=h())}),(t,n)=>(j(),H(F(a),{"as-child":``,loop:``,trapped:s.trapFocus,present:s.present,onMountAutoFocus:n[5]||=e=>c(`openAutoFocus`,e),onUnmountAutoFocus:n[6]||=e=>c(`closeAutoFocus`,e)},{default:A(()=>[o(F(i),L({id:F(l).contentId,ref:F(u),as:t.as,"as-child":t.asChild,present:s.present,"disable-outside-pointer-events":t.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":F(l).descriptionId,"aria-labelledby":F(l).titleId,"data-state":F(e)(F(l).open.value)},t.$attrs,{onDismiss:n[0]||=e=>F(l).onOpenChange(!1),onEscapeKeyDown:n[1]||=e=>c(`escapeKeyDown`,e),onFocusOutside:n[2]||=e=>c(`focusOutside`,e),onInteractOutside:n[3]||=e=>c(`interactOutside`,e),onPointerDownOutside:n[4]||=e=>c(`pointerDownOutside`,e)}),{default:A(()=>[z(t.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`present`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`,`present`]))}}),fe=C({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let r=e,i=t,a=J(),o=s(i),{forwardRef:c,currentElement:l}=W(),u=U(()=>r.present?l.value:void 0);n(u);let d=U(()=>{let{present:e,...t}=r;return t});return g(()=>r.present,(e,t)=>{!e&&t&&a.triggerElement.value?.focus()}),(e,t)=>(j(),H(Y,L({...d.value,...F(o)},{ref:F(c),present:e.present,"trap-focus":F(a).open.value,"disable-outside-pointer-events":r.disableOutsidePointerEvents,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),F(a).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`present`,`trap-focus`,`disable-outside-pointer-events`]))}}),pe=C({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=s(t);W();let i=J(),a=V(!1),o=V(!1),c=U(()=>{let{present:e,...t}=n;return t});return g(()=>n.present,(e,t)=>{!e&&t&&(a.value||i.triggerElement.value?.focus(),a.value=!1,o.value=!1)}),(e,t)=>(j(),H(Y,L({...c.value,...F(r)},{present:e.present,"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(a.value||F(i).triggerElement.value?.focus(),e.preventDefault()),a.value=!1,o.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(a.value=!0,e.detail.originalEvent.type===`pointerdown`&&(o.value=!0));let t=e.target;F(i).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&o.value&&e.preventDefault()}}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`present`]))}}),me=C({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=J(),a=s(r),{forwardRef:o}=W();return(e,t)=>(j(),H(F(x),{present:e.forceMount||F(i).open.value,"force-mount":e.forceMount||!F(i).unmountOnHide.value},{default:A(({present:t})=>[F(i).modal.value?E((j(),H(fe,L({key:0,ref:F(o),present:F(i).unmountOnHide.value||t},{...n,...F(a),...e.$attrs}),{default:A(()=>[z(e.$slots,`default`)]),_:2},1040,[`present`])),[[R,F(i).unmountOnHide.value||t]]):E((j(),H(pe,L({key:1,ref:F(o),present:F(i).unmountOnHide.value||t},{...n,...F(a),...e.$attrs}),{default:A(()=>[z(e.$slots,`default`)]),_:2},1040,[`present`])),[[R,F(i).unmountOnHide.value||t]])]),_:3},8,[`present`,`force-mount`]))}}),X=C({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;W();let n=J();return(e,r)=>(j(),H(F(v),L(t,{id:F(n).descriptionId}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`id`]))}}),he=C({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1,default:!0}},setup(e){let t=e,n=J(),i=r(t.present);return g(()=>t.present,e=>i.value=e),W(),(e,t)=>(j(),H(F(v),{as:e.as,"as-child":e.asChild,"data-state":F(n).open.value?`open`:`closed`,style:{"pointer-events":`auto`},onPointerdown:t[0]||=ie(()=>{},[`left`,`self`,`prevent`])},{default:A(()=>[z(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),ge=C({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=J(),{forwardRef:n}=W();return(e,r)=>F(t)?.modal.value?(j(),H(F(x),{key:0,present:e.forceMount||F(t).open.value,"force-mount":e.forceMount||!F(t).unmountOnHide.value},{default:A(({present:r})=>[E(o(he,L(e.$attrs,{ref:F(n),as:e.as,"as-child":e.asChild,present:F(t).unmountOnHide.value||r}),{default:A(()=>[z(e.$slots,`default`)]),_:2},1040,[`as`,`as-child`,`present`]),[[R,F(t).unmountOnHide.value||r]])]),_:3},8,[`present`,`force-mount`])):O(`v-if`,!0)}}),_e=C({__name:`DialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(j(),H(F(d),m(_(t)),{default:A(()=>[z(e.$slots,`default`)]),_:3},16))}}),Z=C({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=J();return W(),(e,r)=>(j(),H(F(v),L(t,{id:F(n).titleId}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`id`]))}}),ve=C({__name:`DialogTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let n=e,r=J(),{forwardRef:i,currentElement:a}=W();return r.contentId||=t(void 0,`reka-dialog-content`),N(()=>{r.triggerElement.value=a.value}),(e,t)=>(j(),H(F(v),L(n,{ref:F(i),type:e.as===`button`?`button`:void 0,"aria-haspopup":`dialog`,"aria-expanded":F(r).open.value||!1,"aria-controls":F(r).open.value?F(r).contentId:void 0,"data-state":F(r).open.value?`open`:`closed`,onClick:F(r).onOpenToggle}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`type`,`aria-expanded`,`aria-controls`,`data-state`,`onClick`]))}});function ye(e,t={}){let n=e.detail.originalEvent,r=n.target;if(!r?.isConnected){e.preventDefault();return}t.scrollable&&(n.offsetX>r.clientWidth||n.offsetY>r.clientHeight)&&e.preventDefault()}var be={slots:{overlay:`fixed inset-0 bg-elevated/75`,content:`fixed bg-default divide-y divide-default sm:ring ring-default sm:shadow-lg flex flex-col focus:outline-none`,header:`flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)`,wrapper:``,body:`flex-1 overflow-y-auto p-4 sm:p-6`,footer:`flex items-center gap-1.5 p-4 sm:px-6`,title:`text-highlighted font-semibold`,description:`mt-1 text-muted text-sm`,close:`absolute top-4 end-4`},variants:{side:{top:{content:``},right:{content:`max-w-md`},bottom:{content:``},left:{content:`max-w-md`}},inset:{true:{content:`rounded-lg`}},transition:{true:{overlay:`data-[state=open]:animate-[fade-in_200ms_var(--ease-out)] data-[state=closed]:animate-[fade-out_200ms_var(--ease-out)]`}}},compoundVariants:[{side:`top`,inset:!0,class:{content:`max-h-[calc(100%-2rem)] inset-x-4 top-4`}},{side:`top`,inset:!1,class:{content:`max-h-full inset-x-0 top-0`}},{side:`right`,inset:!0,class:{content:`w-[calc(100%-2rem)] inset-y-4 right-4`}},{side:`right`,inset:!1,class:{content:`w-full inset-y-0 right-0`}},{side:`bottom`,inset:!0,class:{content:`max-h-[calc(100%-2rem)] inset-x-4 bottom-4`}},{side:`bottom`,inset:!1,class:{content:`max-h-full inset-x-0 bottom-0`}},{side:`left`,inset:!0,class:{content:`w-[calc(100%-2rem)] inset-y-4 left-4`}},{side:`left`,inset:!1,class:{content:`w-full inset-y-0 left-0`}},{transition:!0,side:`top`,class:{content:`data-[state=open]:animate-[slide-in-from-top_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-top_200ms_var(--ease-out)]`}},{transition:!0,side:`right`,class:{content:`data-[state=open]:animate-[slide-in-from-right_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-right_200ms_var(--ease-out)]`}},{transition:!0,side:`bottom`,class:{content:`data-[state=open]:animate-[slide-in-from-bottom_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-bottom_200ms_var(--ease-out)]`}},{transition:!0,side:`left`,class:{content:`data-[state=open]:animate-[slide-in-from-left_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-left_200ms_var(--ease-out)]`}}]},xe={__name:`Slideover`,props:{title:{type:String,required:!1},description:{type:String,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},transition:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1,default:`right`},inset:{type:Boolean,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},dismissible:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1}},emits:[`leave`,`after:leave`,`enter`,`after:enter`,`close:prevent`,`update:open`],setup(e,{emit:t}){let n=e,r=t,i=c(),a=D(`slideover`,n),{t:s}=y(),d=ae(),p=B(u(a,`open`,`defaultOpen`,`modal`,`unmountOnHide`),r),h=oe(f(()=>a.portal)),g=f(()=>a.content),v=U(()=>a.dismissible?{pointerDownOutside:ye}:[`interactOutside`,`escapeKeyDown`].reduce((e,t)=>(e[t]=e=>{e.preventDefault(),r(`close:prevent`)},e),{})),b=U(()=>te({extend:be,...d.ui?.slideover||{}})({transition:a.transition,side:a.side,inset:a.inset}));return(e,t)=>(j(),H(F(ue),m(_(F(p))),{default:A(({open:n,close:c})=>[i.default?(j(),H(F(ve),{key:0,"as-child":``,class:w(F(a).class)},{default:A(()=>[z(e.$slots,`default`,{open:n})]),_:2},1032,[`class`])):O(``,!0),o(F(_e),L(F(h),{"force-mount":F(h).disabled&&F(a).unmountOnHide===!1||void 0}),{default:A(()=>[o(F(re),null,{default:A(()=>[F(a).overlay?(j(),H(F(ge),{key:0,"data-slot":`overlay`,class:w(b.value.overlay({class:F(a).ui?.overlay}))},null,8,[`class`])):O(``,!0),o(F(me),L({"data-side":F(a).side,"data-slot":`content`,class:b.value.content({class:[!i.default&&F(a).class,F(a).ui?.content]})},g.value,{onEnter:t[0]||=e=>r(`enter`),onAfterEnter:t[1]||=e=>r(`after:enter`),onLeave:t[2]||=e=>r(`leave`),onAfterLeave:t[3]||=e=>r(`after:leave`)},T(v.value)),{default:A(()=>[!F(a).title&&!i.title||!F(a).description&&!i.description||i.content?(j(),H(F(k),{key:0},{default:A(()=>[!F(a).title&&!i.title?(j(),H(F(Z),{key:0})):i.content?(j(),H(F(Z),{key:1},{default:A(()=>[z(e.$slots,`title`,{},()=>[I(S(F(a).title),1)])]),_:3})):O(``,!0),!F(a).description&&!i.description?(j(),H(F(X),{key:2})):i.content?(j(),H(F(X),{key:3},{default:A(()=>[z(e.$slots,`description`,{},()=>[I(S(F(a).description),1)])]),_:3})):O(``,!0)]),_:3})):O(``,!0),z(e.$slots,`content`,{close:c},()=>[i.header||F(a).title||i.title||F(a).description||i.description||F(a).close||i.close?(j(),l(`div`,{key:0,"data-slot":`header`,class:w(b.value.header({class:F(a).ui?.header}))},[z(e.$slots,`header`,{close:c},()=>[F(a).title||i.title||F(a).description||i.description?(j(),l(`div`,{key:0,"data-slot":`wrapper`,class:w(b.value.wrapper({class:F(a).ui?.wrapper}))},[F(a).title||i.title?(j(),H(F(Z),{key:0,"data-slot":`title`,class:w(b.value.title({class:F(a).ui?.title}))},{default:A(()=>[z(e.$slots,`title`,{},()=>[I(S(F(a).title),1)])]),_:3},8,[`class`])):O(``,!0),F(a).description||i.description?(j(),H(F(X),{key:1,"data-slot":`description`,class:w(b.value.description({class:F(a).ui?.description}))},{default:A(()=>[z(e.$slots,`description`,{},()=>[I(S(F(a).description),1)])]),_:3},8,[`class`])):O(``,!0)],2)):O(``,!0),z(e.$slots,`actions`),F(a).close||i.close?(j(),H(F(de),{key:1,"as-child":``},{default:A(()=>[z(e.$slots,`close`,{ui:b.value},()=>[F(a).close?(j(),H(ne,L({key:0,icon:F(a).closeIcon||F(d).ui.icons.close,color:`neutral`,variant:`ghost`,"aria-label":F(s)(`slideover.close`)},typeof F(a).close==`object`?F(a).close:{},{"data-slot":`close`,class:b.value.close({class:F(a).ui?.close})}),null,16,[`icon`,`aria-label`,`class`])):O(``,!0)])]),_:2},1024)):O(``,!0)])],2)):O(``,!0),M(`div`,{"data-slot":`body`,class:w(b.value.body({class:F(a).ui?.body}))},[z(e.$slots,`body`,{close:c})],2),i.footer?(j(),l(`div`,{key:1,"data-slot":`footer`,class:w(b.value.footer({class:F(a).ui?.footer}))},[z(e.$slots,`footer`,{close:c})],2)):O(``,!0)])]),_:2},1040,[`data-side`,`class`])]),_:2},1024)]),_:2},1040,[`force-mount`])]),_:3},16))}};function Q(e){let t=V(`connecting`),n=e.factory(e.url);n.onopen=()=>{t.value===`connecting`&&!e.model.state.stopMode&&(t.value=`running`)};let r=0;return n.onmessage=t=>{let n;try{n=JSON.parse(t.data)}catch{return}if(n.type!==`replay_note`){let e=Number(t.lastEventId);if(e>0){if(e<=r)return;r=e}}e.handle(n)},n.addEventListener(`replay_elided`,t=>{let n=se(t);n&&e.model.noteElided(n)}),n.addEventListener(`finished`,n=>{e.onFinished?.(ce(n)),(t.value===`connecting`||t.value===`running`)&&(t.value=`finished`)}),n.addEventListener(`end`,r=>{e.model.flushPendingTurn(`the run ended here`),e.model.closePhases(),t.value=`ended`,n.close(),e.onEnd?.(q(r))}),n.onerror=()=>{n.readyState===2&&(t.value=`disconnected`,e.onDisconnected?.())},{phase:t,close:()=>n.close()}}var $=[`Thinking`,`Pondering`,`Mulling it over`,`Reasoning`,`Cogitating`,`Weighing options`,`Puzzling`,`Deliberating`,`Noodling`,`Chewing on it`,`Ruminating`,`Reticulating splines`];function Se(e){return $[Math.floor(Math.max(0,e)/6e3)%$.length]}var Ce=[`title`],we={class:`verb min-w-0 truncate text-toned`},Te=C({__name:`PendingTurnRow`,props:{verb:{},elapsedMs:{},slow:{type:Boolean},model:{},tag:{},id:{}},setup(e){return(t,n)=>(j(),H(p(e.tag??`li`),{id:e.id,class:`pending flex items-center gap-3 rounded-md border border-dashed border-accented pl-3 pr-[calc(var(--sb-gutter)-1px)] py-2 text-sm`,"aria-live":`off`,title:`the model is working on its next turn — nothing back yet (since the last event, runner clock)`,"data-testid":`pending`},{default:A(()=>[n[0]||=M(`span`,{class:`pulse text-[1.1em] leading-none text-info motion-safe:animate-pulse`},`∿`,-1),e.model?(j(),l(`span`,{key:0,class:`badge shrink-0 rounded bg-accented px-1.5 font-mono text-[0.68rem] font-medium leading-normal tracking-wider text-muted`,title:e.model},S(F(K)(e.model)),9,Ce)):O(``,!0),M(`span`,we,S(e.verb)+`…`,1),M(`span`,{class:w([`since ml-auto shrink-0 font-mono text-xs tabular-nums`,e.slow?`text-warn`:`text-dimmed`])},S(F(G)(e.elapsedMs,`clock`)),3)]),_:1},8,[`id`]))}});export{xe as i,Se as n,Q as r,Te as t};
1
+ import{C as e,D as t,O as n,P as r,T as i,w as a}from"./AppShell-CSXDCV4x.js";import{An as o,B as s,Br as c,Cn as l,Ct as u,D as d,Di as f,Dr as p,Fi as m,G as h,Gr as g,Hn as _,I as v,J as y,K as b,L as x,Li as S,Mn as C,Oi as ee,Pi as w,Pr as T,Qr as E,S as D,Sn as O,T as k,Xr as A,_r as j,b as te,bn as M,dr as N,gt as P,ji as F,kn as I,l as ne,m as re,rn as ie,rr as L,rt as ae,tn as R,w as oe,wr as z,x as B,xi as V,xn as H,yn as U,z as W}from"./browser-B6T5hjfR.js";import{K as G}from"./indexRow-DborJPFp.js";import"./format-BldUwl_R.js";import{d as K,f as q,m as se,p as ce}from"./sseReplay-BRJEIh83.js";var[J,le]=b(`DialogRoot`),ue=C({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=P(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),i=V(),a=V(),{modal:o,unmountOnHide:s}=ee(n);return le({open:r,modal:o,unmountOnHide:s,openModal:()=>{r.value=!0},onOpenChange:e=>{r.value=e},onOpenToggle:()=>{r.value=!r.value},contentId:``,titleId:``,descriptionId:``,triggerElement:i,contentElement:a}),(e,t)=>z(e.$slots,`default`,{open:F(r),close:()=>r.value=!1})}}),de=C({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;W();let n=J();return(e,r)=>(j(),H(F(v),L(t,{type:e.as===`button`?`button`:void 0,onClick:r[0]||=e=>F(n).onOpenChange(!1)}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`type`]))}}),Y=C({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(n,{emit:r}){let s=n,c=r,l=J(),{forwardRef:u,currentElement:d}=W();return l.titleId||=t(void 0,`reka-dialog-title`),l.descriptionId||=t(void 0,`reka-dialog-description`),N(()=>{l.contentElement=d,h()!==document.body&&(l.triggerElement.value=h())}),(t,n)=>(j(),H(F(a),{"as-child":``,loop:``,trapped:s.trapFocus,present:s.present,onMountAutoFocus:n[5]||=e=>c(`openAutoFocus`,e),onUnmountAutoFocus:n[6]||=e=>c(`closeAutoFocus`,e)},{default:A(()=>[o(F(i),L({id:F(l).contentId,ref:F(u),as:t.as,"as-child":t.asChild,present:s.present,"disable-outside-pointer-events":t.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":F(l).descriptionId,"aria-labelledby":F(l).titleId,"data-state":F(e)(F(l).open.value)},t.$attrs,{onDismiss:n[0]||=e=>F(l).onOpenChange(!1),onEscapeKeyDown:n[1]||=e=>c(`escapeKeyDown`,e),onFocusOutside:n[2]||=e=>c(`focusOutside`,e),onInteractOutside:n[3]||=e=>c(`interactOutside`,e),onPointerDownOutside:n[4]||=e=>c(`pointerDownOutside`,e)}),{default:A(()=>[z(t.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`present`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`,`present`]))}}),fe=C({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let r=e,i=t,a=J(),o=s(i),{forwardRef:c,currentElement:l}=W(),u=U(()=>r.present?l.value:void 0);n(u);let d=U(()=>{let{present:e,...t}=r;return t});return g(()=>r.present,(e,t)=>{!e&&t&&a.triggerElement.value?.focus()}),(e,t)=>(j(),H(Y,L({...d.value,...F(o)},{ref:F(c),present:e.present,"trap-focus":F(a).open.value,"disable-outside-pointer-events":r.disableOutsidePointerEvents,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),F(a).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`present`,`trap-focus`,`disable-outside-pointer-events`]))}}),pe=C({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!0}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=s(t);W();let i=J(),a=V(!1),o=V(!1),c=U(()=>{let{present:e,...t}=n;return t});return g(()=>n.present,(e,t)=>{!e&&t&&(a.value||i.triggerElement.value?.focus(),a.value=!1,o.value=!1)}),(e,t)=>(j(),H(Y,L({...c.value,...F(r)},{present:e.present,"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(a.value||F(i).triggerElement.value?.focus(),e.preventDefault()),a.value=!1,o.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(a.value=!0,e.detail.originalEvent.type===`pointerdown`&&(o.value=!0));let t=e.target;F(i).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&o.value&&e.preventDefault()}}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`present`]))}}),me=C({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,i=J(),a=s(r),{forwardRef:o}=W();return(e,t)=>(j(),H(F(x),{present:e.forceMount||F(i).open.value,"force-mount":e.forceMount||!F(i).unmountOnHide.value},{default:A(({present:t})=>[F(i).modal.value?E((j(),H(fe,L({key:0,ref:F(o),present:F(i).unmountOnHide.value||t},{...n,...F(a),...e.$attrs}),{default:A(()=>[z(e.$slots,`default`)]),_:2},1040,[`present`])),[[R,F(i).unmountOnHide.value||t]]):E((j(),H(pe,L({key:1,ref:F(o),present:F(i).unmountOnHide.value||t},{...n,...F(a),...e.$attrs}),{default:A(()=>[z(e.$slots,`default`)]),_:2},1040,[`present`])),[[R,F(i).unmountOnHide.value||t]])]),_:3},8,[`present`,`force-mount`]))}}),X=C({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let t=e;W();let n=J();return(e,r)=>(j(),H(F(v),L(t,{id:F(n).descriptionId}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`id`]))}}),he=C({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1},present:{type:Boolean,required:!1,default:!0}},setup(e){let t=e,n=J(),i=r(t.present);return g(()=>t.present,e=>i.value=e),W(),(e,t)=>(j(),H(F(v),{as:e.as,"as-child":e.asChild,"data-state":F(n).open.value?`open`:`closed`,style:{"pointer-events":`auto`},onPointerdown:t[0]||=ie(()=>{},[`left`,`self`,`prevent`])},{default:A(()=>[z(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),ge=C({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=J(),{forwardRef:n}=W();return(e,r)=>F(t)?.modal.value?(j(),H(F(x),{key:0,present:e.forceMount||F(t).open.value,"force-mount":e.forceMount||!F(t).unmountOnHide.value},{default:A(({present:r})=>[E(o(he,L(e.$attrs,{ref:F(n),as:e.as,"as-child":e.asChild,present:F(t).unmountOnHide.value||r}),{default:A(()=>[z(e.$slots,`default`)]),_:2},1040,[`as`,`as-child`,`present`]),[[R,F(t).unmountOnHide.value||r]])]),_:3},8,[`present`,`force-mount`])):O(`v-if`,!0)}}),_e=C({__name:`DialogPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(j(),H(F(d),m(_(t)),{default:A(()=>[z(e.$slots,`default`)]),_:3},16))}}),Z=C({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=J();return W(),(e,r)=>(j(),H(F(v),L(t,{id:F(n).titleId}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`id`]))}}),ve=C({__name:`DialogTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let n=e,r=J(),{forwardRef:i,currentElement:a}=W();return r.contentId||=t(void 0,`reka-dialog-content`),N(()=>{r.triggerElement.value=a.value}),(e,t)=>(j(),H(F(v),L(n,{ref:F(i),type:e.as===`button`?`button`:void 0,"aria-haspopup":`dialog`,"aria-expanded":F(r).open.value||!1,"aria-controls":F(r).open.value?F(r).contentId:void 0,"data-state":F(r).open.value?`open`:`closed`,onClick:F(r).onOpenToggle}),{default:A(()=>[z(e.$slots,`default`)]),_:3},16,[`type`,`aria-expanded`,`aria-controls`,`data-state`,`onClick`]))}});function ye(e,t={}){let n=e.detail.originalEvent,r=n.target;if(!r?.isConnected){e.preventDefault();return}t.scrollable&&(n.offsetX>r.clientWidth||n.offsetY>r.clientHeight)&&e.preventDefault()}var be={slots:{overlay:`fixed inset-0 bg-elevated/75`,content:`fixed bg-default divide-y divide-default sm:ring ring-default sm:shadow-lg flex flex-col focus:outline-none`,header:`flex items-center gap-1.5 p-4 sm:px-6 min-h-(--ui-header-height)`,wrapper:``,body:`flex-1 overflow-y-auto p-4 sm:p-6`,footer:`flex items-center gap-1.5 p-4 sm:px-6`,title:`text-highlighted font-semibold`,description:`mt-1 text-muted text-sm`,close:`absolute top-4 end-4`},variants:{side:{top:{content:``},right:{content:`max-w-md`},bottom:{content:``},left:{content:`max-w-md`}},inset:{true:{content:`rounded-lg`}},transition:{true:{overlay:`data-[state=open]:animate-[fade-in_200ms_var(--ease-out)] data-[state=closed]:animate-[fade-out_200ms_var(--ease-out)]`}}},compoundVariants:[{side:`top`,inset:!0,class:{content:`max-h-[calc(100%-2rem)] inset-x-4 top-4`}},{side:`top`,inset:!1,class:{content:`max-h-full inset-x-0 top-0`}},{side:`right`,inset:!0,class:{content:`w-[calc(100%-2rem)] inset-y-4 right-4`}},{side:`right`,inset:!1,class:{content:`w-full inset-y-0 right-0`}},{side:`bottom`,inset:!0,class:{content:`max-h-[calc(100%-2rem)] inset-x-4 bottom-4`}},{side:`bottom`,inset:!1,class:{content:`max-h-full inset-x-0 bottom-0`}},{side:`left`,inset:!0,class:{content:`w-[calc(100%-2rem)] inset-y-4 left-4`}},{side:`left`,inset:!1,class:{content:`w-full inset-y-0 left-0`}},{transition:!0,side:`top`,class:{content:`data-[state=open]:animate-[slide-in-from-top_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-top_200ms_var(--ease-out)]`}},{transition:!0,side:`right`,class:{content:`data-[state=open]:animate-[slide-in-from-right_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-right_200ms_var(--ease-out)]`}},{transition:!0,side:`bottom`,class:{content:`data-[state=open]:animate-[slide-in-from-bottom_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-bottom_200ms_var(--ease-out)]`}},{transition:!0,side:`left`,class:{content:`data-[state=open]:animate-[slide-in-from-left_200ms_var(--ease-out)] data-[state=closed]:animate-[slide-out-to-left_200ms_var(--ease-out)]`}}]},xe={__name:`Slideover`,props:{title:{type:String,required:!1},description:{type:String,required:!1},content:{type:Object,required:!1},overlay:{type:Boolean,required:!1,default:!0},transition:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1,default:`right`},inset:{type:Boolean,required:!1},portal:{type:[Boolean,String],required:!1,skipCheck:!0,default:!0},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},dismissible:{type:Boolean,required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},open:{type:Boolean,required:!1},defaultOpen:{type:Boolean,required:!1},modal:{type:Boolean,required:!1,default:!0},unmountOnHide:{type:Boolean,required:!1}},emits:[`leave`,`after:leave`,`enter`,`after:enter`,`close:prevent`,`update:open`],setup(e,{emit:t}){let n=e,r=t,i=c(),a=D(`slideover`,n),{t:s}=y(),d=ae(),p=B(u(a,`open`,`defaultOpen`,`modal`,`unmountOnHide`),r),h=oe(f(()=>a.portal)),g=f(()=>a.content),v=U(()=>a.dismissible?{pointerDownOutside:ye}:[`interactOutside`,`escapeKeyDown`].reduce((e,t)=>(e[t]=e=>{e.preventDefault(),r(`close:prevent`)},e),{})),b=U(()=>te({extend:be,...d.ui?.slideover||{}})({transition:a.transition,side:a.side,inset:a.inset}));return(e,t)=>(j(),H(F(ue),m(_(F(p))),{default:A(({open:n,close:c})=>[i.default?(j(),H(F(ve),{key:0,"as-child":``,class:w(F(a).class)},{default:A(()=>[z(e.$slots,`default`,{open:n})]),_:2},1032,[`class`])):O(``,!0),o(F(_e),L(F(h),{"force-mount":F(h).disabled&&F(a).unmountOnHide===!1||void 0}),{default:A(()=>[o(F(re),null,{default:A(()=>[F(a).overlay?(j(),H(F(ge),{key:0,"data-slot":`overlay`,class:w(b.value.overlay({class:F(a).ui?.overlay}))},null,8,[`class`])):O(``,!0),o(F(me),L({"data-side":F(a).side,"data-slot":`content`,class:b.value.content({class:[!i.default&&F(a).class,F(a).ui?.content]})},g.value,{onEnter:t[0]||=e=>r(`enter`),onAfterEnter:t[1]||=e=>r(`after:enter`),onLeave:t[2]||=e=>r(`leave`),onAfterLeave:t[3]||=e=>r(`after:leave`)},T(v.value)),{default:A(()=>[!F(a).title&&!i.title||!F(a).description&&!i.description||i.content?(j(),H(F(k),{key:0},{default:A(()=>[!F(a).title&&!i.title?(j(),H(F(Z),{key:0})):i.content?(j(),H(F(Z),{key:1},{default:A(()=>[z(e.$slots,`title`,{},()=>[I(S(F(a).title),1)])]),_:3})):O(``,!0),!F(a).description&&!i.description?(j(),H(F(X),{key:2})):i.content?(j(),H(F(X),{key:3},{default:A(()=>[z(e.$slots,`description`,{},()=>[I(S(F(a).description),1)])]),_:3})):O(``,!0)]),_:3})):O(``,!0),z(e.$slots,`content`,{close:c},()=>[i.header||F(a).title||i.title||F(a).description||i.description||F(a).close||i.close?(j(),l(`div`,{key:0,"data-slot":`header`,class:w(b.value.header({class:F(a).ui?.header}))},[z(e.$slots,`header`,{close:c},()=>[F(a).title||i.title||F(a).description||i.description?(j(),l(`div`,{key:0,"data-slot":`wrapper`,class:w(b.value.wrapper({class:F(a).ui?.wrapper}))},[F(a).title||i.title?(j(),H(F(Z),{key:0,"data-slot":`title`,class:w(b.value.title({class:F(a).ui?.title}))},{default:A(()=>[z(e.$slots,`title`,{},()=>[I(S(F(a).title),1)])]),_:3},8,[`class`])):O(``,!0),F(a).description||i.description?(j(),H(F(X),{key:1,"data-slot":`description`,class:w(b.value.description({class:F(a).ui?.description}))},{default:A(()=>[z(e.$slots,`description`,{},()=>[I(S(F(a).description),1)])]),_:3},8,[`class`])):O(``,!0)],2)):O(``,!0),z(e.$slots,`actions`),F(a).close||i.close?(j(),H(F(de),{key:1,"as-child":``},{default:A(()=>[z(e.$slots,`close`,{ui:b.value},()=>[F(a).close?(j(),H(ne,L({key:0,icon:F(a).closeIcon||F(d).ui.icons.close,color:`neutral`,variant:`ghost`,"aria-label":F(s)(`slideover.close`)},typeof F(a).close==`object`?F(a).close:{},{"data-slot":`close`,class:b.value.close({class:F(a).ui?.close})}),null,16,[`icon`,`aria-label`,`class`])):O(``,!0)])]),_:2},1024)):O(``,!0)])],2)):O(``,!0),M(`div`,{"data-slot":`body`,class:w(b.value.body({class:F(a).ui?.body}))},[z(e.$slots,`body`,{close:c})],2),i.footer?(j(),l(`div`,{key:1,"data-slot":`footer`,class:w(b.value.footer({class:F(a).ui?.footer}))},[z(e.$slots,`footer`,{close:c})],2)):O(``,!0)])]),_:2},1040,[`data-side`,`class`])]),_:2},1024)]),_:2},1040,[`force-mount`])]),_:3},16))}};function Q(e){let t=V(`connecting`),n=e.factory(e.url);n.onopen=()=>{t.value===`connecting`&&!e.model.state.stopMode&&(t.value=`running`)};let r=0;return n.onmessage=t=>{let n;try{n=JSON.parse(t.data)}catch{return}if(n.type!==`replay_note`){let e=Number(t.lastEventId);if(e>0){if(e<=r)return;r=e}}e.handle(n)},n.addEventListener(`replay_elided`,t=>{let n=se(t);n&&e.model.noteElided(n)}),n.addEventListener(`finished`,n=>{e.onFinished?.(ce(n)),(t.value===`connecting`||t.value===`running`)&&(t.value=`finished`)}),n.addEventListener(`end`,r=>{e.model.flushPendingTurn(`the run ended here`),e.model.closePhases(),t.value=`ended`,n.close(),e.onEnd?.(q(r))}),n.onerror=()=>{n.readyState===2&&(t.value=`disconnected`,e.onDisconnected?.())},{phase:t,close:()=>n.close()}}var $=[`Thinking`,`Pondering`,`Mulling it over`,`Reasoning`,`Cogitating`,`Weighing options`,`Puzzling`,`Deliberating`,`Noodling`,`Chewing on it`,`Ruminating`,`Reticulating splines`];function Se(e){return $[Math.floor(Math.max(0,e)/6e3)%$.length]}var Ce=[`title`],we={class:`verb min-w-0 truncate text-toned`},Te=C({__name:`PendingTurnRow`,props:{verb:{},elapsedMs:{},slow:{type:Boolean},model:{},tag:{},id:{}},setup(e){return(t,n)=>(j(),H(p(e.tag??`li`),{id:e.id,class:`pending flex items-center gap-3 rounded-md border border-dashed border-accented pl-3 pr-[calc(var(--sb-gutter)-1px)] py-2 text-sm`,"aria-live":`off`,title:`the model is working on its next turn — nothing back yet (since the last event, runner clock)`,"data-testid":`pending`},{default:A(()=>[n[0]||=M(`span`,{class:`pulse text-[1.1em] leading-none text-info motion-safe:animate-pulse`},`∿`,-1),e.model?(j(),l(`span`,{key:0,class:`badge shrink-0 rounded bg-accented px-1.5 font-mono text-[0.68rem] font-medium leading-normal tracking-wider text-muted`,title:e.model},S(F(K)(e.model)),9,Ce)):O(``,!0),M(`span`,we,S(e.verb)+`…`,1),M(`span`,{class:w([`since ml-auto shrink-0 font-mono text-xs tabular-nums`,e.slow?`text-warn`:`text-dimmed`])},S(F(G)(e.elapsedMs,`clock`)),3)]),_:1},8,[`id`]))}});export{xe as i,Se as n,Q as r,Te as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./AppShell-CSXDCV4x.js";import{An as t,Cn as n,Cr as r,Gr as i,Ii as a,Li as o,Mn as s,Pi as c,Sn as l,Tr as u,Xr as d,_r as f,bn as p,ir as m,ji as h,kn as g,l as _,ln as v,o as y,sr as b,t as x,xi as S,xn as C,yi as w,yn as T}from"./browser-B6T5hjfR.js";import{i as E}from"./PendingTurnRow-fhKqKUVv.js";import{t as D}from"./wallClock-DmaC1sKA.js";import{C as O,D as ee,G as te,K as k,N as ne,T as A,j as re,v as ie,x as ae,y as oe}from"./indexRow-DborJPFp.js";import"./format-BldUwl_R.js";import{_ as j,a as M,f as N,g as P,i as F,n as I,o as L,r as R,t as z,u as B,v as V,x as H}from"./SilentTurn-DNAANKgN.js";import{T as U}from"./sseReplay-BRJEIh83.js";var W=[`data-conversation`],G={key:0,class:`mt-6 text-center text-sm text-toned`,"data-testid":`chat-empty`},K={key:1,class:`m-0 flex list-none flex-col gap-5 p-0 pb-4 pt-2`},q={key:4,class:`inline text-[0.875rem] text-toned`,"data-testid":`inline`},J={class:`pt-2`},Y=s({__name:`PlaneChat`,props:{chat:{},at:{},now:{}},setup(e){let a=e,o=0,s=e=>`${e}-${++o}`,c=w([]);for(let e of a.chat.turns){if(`kind`in e){e.kind===`receipt`?c.push({key:s(`s`),kind:`silent`,reason:e.reason,at:e.decidedAt}):c.push({key:s(`w`),kind:`parent`,turn:e});continue}c.push({key:s(`p`),kind:`person`,text:e.request,at:e.receivedAt??e.startedAt,pending:!1});let t=!e.finished&&e.token?{eventsUrl:`/runs/${encodeURIComponent(e.id)}/events?t=${e.token}`,stopUrl:`/runs/${encodeURIComponent(e.id)}/stop?t=${e.token}`,serverNow:a.at}:null;c.push({key:s(`a`),kind:`assistant`,turn:e,live:t,ended:e.finished})}let l=T(()=>{for(let e=c.length-1;e>=0;e--){let t=c[e];if(t.kind===`assistant`&&t.live&&!t.ended&&t.turn.hosted!==!0)return t}return null}),u=S(null),d=S(``),h=S(void 0),g=T(()=>N(l.value!==null,d.value)),_=S(!1);i(d,()=>{h.value&&d.value===``&&(h.value=void 0)});async function y(){if(_.value)return;let e=L(d.value.trim(),a.chat.commands);if(e===``)return;let t=w({key:s(`p`),kind:`person`,text:e,at:a.now,pending:!0});c.push(t),d.value=``,h.value=void 0,_.value=!0;try{let n=await fetch(a.chat.sendUrl,{method:`POST`,credentials:`same-origin`,headers:{"content-type":`application/json`},body:JSON.stringify({text:e})}),r=await n.json().catch(()=>({}));if(n.status===202&&typeof r.viewPath==`string`&&typeof r.runId==`string`){let n=P(r.viewPath);if(!n)throw Error(`the run's view path was not one`);t.pending=!1,c.push({key:s(`a`),kind:`assistant`,turn:{id:r.runId,request:e,startedAt:a.now,receivedAt:a.now,finished:!1,eventCount:0},live:{eventsUrl:n.eventsUrl,stopUrl:n.stopUrl},ended:!1});return}if(n.ok&&r.offer&&typeof r.offer.line==`string`){t.pending=!1;let e=V({line:r.offer.line,...r.offer});d.value=e.command,h.value=e.hint;return}if(n.ok&&typeof r.reply==`string`){t.pending=!1;let e=B(r.reply);e.kind===`inline`&&c.push({key:s(`i`),kind:`inline`,text:e.text});return}throw Error(r.error??`HTTP ${n.status}`)}catch(e){t.pending=!1,t.failed=`not sent: ${e instanceof Error?e.message:`error`}`}finally{_.value=!1}}function b(){let e=u.value;e&&fetch(`${e}${e.includes(`?`)?`&`:`?`}mode=soft`,{method:`POST`,credentials:`same-origin`})}function x(e,t,n){let r=c.filter(e=>e.kind===`person`),i=j(r.map(e=>({text:e.text,folded:e.folded!==void 0,ref:e})),t);if(!i)return;let a=e.turn.receivedAt??e.turn.startedAt;i.ref.folded=n===void 0?``:`at ${k(Math.max(0,n-a),`clock`)}`}function E(e){e.ended=!0,u.value=null}let D=S(null);return i(()=>c.length,()=>{let e=D.value,t=!e||H(e.scrollHeight-(e.clientHeight+e.scrollTop));m().then(()=>{let e=D.value;t&&e&&(e.scrollTop=e.scrollHeight)})}),(i,a)=>(f(),n(`div`,{class:`plane-chat flex h-full min-h-0 flex-col`,"data-plane-chat":``,"data-conversation":e.chat.conversation},[p(`div`,{ref_key:`scroller`,ref:D,class:`min-h-0 flex-1 overflow-y-auto pr-1`,"data-testid":`chat-scroller`},[c.length===0?(f(),n(`p`,G,` Ask about the fleet — the rows on this page are what it reads. `)):(f(),n(`ol`,K,[(f(!0),n(v,null,r(c,r=>(f(),n(`li`,{key:r.key},[r.kind===`person`?(f(),C(F,{key:0,text:r.text,at:r.at,now:e.now,pending:r.pending,folded:r.folded,failed:r.failed},null,8,[`text`,`at`,`now`,`pending`,`folded`,`failed`])):r.kind===`assistant`?(f(),C(R,{key:1,turn:r.turn,live:r.live,now:e.now,onInput:(e,t)=>x(r,e,t),onEnded:e=>E(r),onStop:a[0]||=e=>u.value=e},null,8,[`turn`,`live`,`now`,`onInput`,`onEnded`])):r.kind===`silent`?(f(),C(z,{key:2,reason:r.reason,"decided-at":r.at,now:e.now},null,8,[`reason`,`decided-at`,`now`])):r.kind===`parent`?(f(),C(I,{key:3,turn:r.turn,now:e.now},null,8,[`turn`,`now`])):(f(),n(`div`,q,[t(U,{text:r.text},null,8,[`text`])]))]))),128))]))],512),p(`div`,J,[t(M,{modelValue:d.value,"onUpdate:modelValue":a[1]||=e=>d.value=e,mode:g.value,hint:h.value,commands:e.chat.commands,onSubmit:y,onStop:b},null,8,[`modelValue`,`mode`,`hint`,`commands`])])],8,W))}}),se=[`data-chat`],ce={class:`panels min-w-0`},le={class:`mb-4 font-mono text-sm tabular-nums text-muted`,"data-plane-head":``},ue={class:`mb-6`,"aria-labelledby":`plane-runs`},de={key:0,class:`text-sm text-muted`},fe={key:1,class:`divide-y divide-default rounded-md border border-default`},pe=[`data-run`,`data-health`],me={class:`text-muted`},he={class:`font-mono tabular-nums`},ge={class:`font-mono tabular-nums text-muted`},_e={key:0,class:`font-mono text-xs tabular-nums text-muted`},ve={class:`text-muted`,"data-owner":``},ye=[`href`],be=[`data-flag`],xe={class:`mb-6`,"aria-labelledby":`plane-units`},Se={key:0,class:`text-sm text-muted`},Ce={key:1,class:`divide-y divide-default rounded-md border border-default`},we=[`data-unit`,`data-health`],Te={class:`text-muted`},Ee=[`href`],De=[`data-flag`],Oe={"aria-labelledby":`plane-prs`},ke={key:0,class:`text-sm text-muted`},Ae={key:1,class:`divide-y divide-default rounded-md border border-default`},je=[`data-pr`,`data-health`],Me=[`href`],Ne={key:1,class:`font-mono text-highlighted`},Pe={key:2,class:`truncate text-muted`},Fe={class:`text-xs text-dimmed`,"data-owner":``},Ie=[`data-flag`],Le={key:0,class:`chat-column relative hidden lg:block`,"data-testid":`chat-column`},Re=[`aria-valuemin`,`aria-valuemax`,`aria-valuenow`],X=`sb.plane.chat.width`,ze=`(min-width: 64rem)`,Be=s({__name:`PlanePage`,setup(i){let s=y(`plane`),m=T(()=>s?.table??null),w=D(s?.table.at,3e4),j=s?.chat??null,M={min:320,default:400,max:640,step:16};function N(e){let t=Math.round(Number(e));return Number.isFinite(t)?Math.min(M.max,Math.max(M.min,t)):M.default}let P=x.readPref(X),F=S(P===null?M.default:N(P)),I=S(!1),L=S(x.mediaMatches(ze)),R=x.onMediaChange(ze,e=>{L.value=e,e&&(I.value=!1)});function z(e,t){F.value=N(e),t&&x.writePref(X,String(F.value))}let B=null;function V(e){B&&z(B.startWidth-(e.clientX-B.startX),!1)}function H(){window.removeEventListener(`pointermove`,V),B&&(B=null,x.writePref(X,String(F.value)))}function U(e){e.button===0&&(e.preventDefault(),B={startX:e.clientX,startWidth:F.value},e.currentTarget?.setPointerCapture?.(e.pointerId),window.addEventListener(`pointermove`,V),window.addEventListener(`pointerup`,H,{once:!0}))}function W(e){if(e.key===`ArrowLeft`)z(F.value+M.step,!0);else if(e.key===`ArrowRight`)z(F.value-M.step,!0);else if(e.key===`Home`)z(M.max,!0);else if(e.key===`End`)z(M.min,!0);else return;e.preventDefault()}b(()=>{window.removeEventListener(`pointermove`,V),window.removeEventListener(`pointerup`,H),R()});let G=e=>({...e.run,...s?.tokens[e.run.id]?{token:s.tokens[e.run.id]}:{}}),K=T(()=>m.value?.runs.filter(e=>!e.run.finished).length??0),q=T(()=>m.value?m.value.runs.length-K.value:0),J=e=>{let t=e.owner.name??ne(G(e))??e.owner.id??``;return e.owner.generation?`${t||`run`} · on ${e.owner.generation}`:t},Be=e=>{let t=e.run;return k(te({startedAt:t.startedAt,receivedAt:t.receivedAt,finishedAt:t.finishedAt},w.value),`clock`)},Ve=e=>ie(G(e),w.value)??oe(G(e),w.value),He=e=>`/runs/unit/${encodeURIComponent(e.unit.unit)}`,Z=e=>`${e.pr.repo}#${e.pr.number}`,Ue=e=>e.owner.unitKey??(e.owner.runId?`run ${O(e.owner.runId)}`:`a person`),We={stalled:`stalled`,"bound-exceeded":`past its bound`,"no-signal":`no signal`,provisional:`unfinished`,interrupted:`interrupted`,failed:`failed`,approved:`approved`,dirty:`conflicts`,red:`checks red`,pending:`checks pending`,mistitled:`title fails the rule`,merged:`merged`,closed:`closed`,unknown:`unread`,live:`live`,waiting:`waiting`,idle:`idle`,"merge-ready":`merge-ready`,ended:`ended`,"owner-gap":`approved, open, nobody's`},Q=e=>We[e]??e,$=e=>[`stalled`,`bound-exceeded`,`red`,`dirty`,`mistitled`,`owner-gap`,`failed`,`interrupted`].includes(e)?`border-error/40 text-error`:[`pending`,`idle`,`waiting`,`no-signal`,`provisional`,`unknown`].includes(e)?`border-warning/40 text-warning`:`border-default text-muted`;return(i,s)=>{let y=u(`RouterLink`),b=_,x=E;return m.value?(f(),C(e,{key:0,title:`Plane`,nav:`plane`},{default:d(()=>[p(`div`,{class:c([`plane`,h(j)?`lg:grid lg:grid-cols-[minmax(0,1fr)_var(--chat-w)] lg:gap-10`:``]),style:a(h(j)?{"--chat-w":`${F.value}px`}:void 0),"data-chat":h(j)?`shown`:void 0},[p(`div`,ce,[p(`p`,le,o(K.value)+` live · `+o(q.value)+` recent · `+o(m.value.units.length)+` units · `+o(m.value.pullRequests.length)+` pull requests `,1),p(`section`,ue,[s[3]||=p(`h2`,{id:`plane-runs`,class:`mb-2 text-xs font-medium uppercase tracking-wide text-dimmed`},`Runs`,-1),m.value.runs.length===0?(f(),n(`p`,de,`No run is live or ended in the last hour.`)):(f(),n(`ul`,fe,[(f(!0),n(v,null,r(m.value.runs,e=>(f(),n(`li`,{key:e.run.id,class:`flex flex-wrap items-center gap-x-3 gap-y-1 px-3 py-2 text-sm`,"data-run":e.run.id,"data-health":e.health.join(` `)},[p(`span`,{class:c([`inline-block size-2 rounded-full`,{"bg-success":h(A)(G(e))===`green`,"bg-error":h(A)(G(e))===`red`,"bg-warning":h(A)(G(e))===`amber`,"bg-dimmed":h(A)(G(e))===`grey`}]),"aria-hidden":`true`},null,2),t(y,{class:`font-mono text-highlighted`,to:h(ae)(G(e))},{default:d(()=>[g(o(h(O)(e.run.id)),1)]),_:2},1032,[`to`]),p(`span`,me,o(e.run.agent??`-`),1),p(`span`,he,o(h(ee)(G(e))),1),p(`span`,ge,o(Be(e)),1),Ve(e)?(f(),n(`span`,_e,o(Ve(e)),1)):l(``,!0),p(`span`,ve,o(J(e)),1),e.unit?(f(),C(y,{key:1,class:`font-mono text-xs text-muted`,to:`/runs/unit/${encodeURIComponent(e.unit.key)}`},{default:d(()=>[g(o(e.unit.key),1)]),_:2},1032,[`to`])):l(``,!0),e.run.threadKey?(f(),n(`a`,{key:2,class:`text-xs text-dimmed`,href:h(re)(e.run.threadKey),target:`_blank`,rel:`noreferrer`},`thread`,8,ye)):l(``,!0),(f(!0),n(v,null,r(e.health,e=>(f(),n(`span`,{key:e,class:c([`rounded border px-1.5 py-0.5 text-xs`,$(e)]),"data-flag":e},o(Q(e)),11,be))),128))],8,pe))),128))]))]),p(`section`,xe,[s[4]||=p(`h2`,{id:`plane-units`,class:`mb-2 text-xs font-medium uppercase tracking-wide text-dimmed`},`Units`,-1),m.value.units.length===0?(f(),n(`p`,Se,`No ship unit has a run on the table.`)):(f(),n(`ul`,Ce,[(f(!0),n(v,null,r(m.value.units,e=>(f(),n(`li`,{key:e.unit.unit,class:`flex flex-wrap items-center gap-x-3 gap-y-1 px-3 py-2 text-sm`,"data-unit":e.unit.unit,"data-health":e.health.join(` `)},[t(y,{class:`font-mono text-highlighted`,to:He(e)},{default:d(()=>[g(o(e.unit.unit),1)]),_:2},1032,[`to`]),p(`span`,Te,o(e.instance.repo),1),p(`span`,null,o(e.unit.title??e.unit.id),1),e.unit.pr?(f(),n(`a`,{key:0,class:`font-mono text-xs text-muted`,href:e.unit.pr.url,target:`_blank`,rel:`noreferrer`},`#`+o(e.unit.pr.number),9,Ee)):l(``,!0),(f(!0),n(v,null,r(e.health,e=>(f(),n(`span`,{key:e,class:c([`rounded border px-1.5 py-0.5 text-xs`,$(e)]),"data-flag":e},o(Q(e)),11,De))),128))],8,we))),128))]))]),p(`section`,Oe,[s[5]||=p(`h2`,{id:`plane-prs`,class:`mb-2 text-xs font-medium uppercase tracking-wide text-dimmed`},`Pull requests`,-1),m.value.pullRequests.length===0?(f(),n(`p`,ke,`No pull request is tracked.`)):(f(),n(`ul`,Ae,[(f(!0),n(v,null,r(m.value.pullRequests,e=>(f(),n(`li`,{key:Z(e),class:`flex flex-wrap items-center gap-x-3 gap-y-1 px-3 py-2 text-sm`,"data-pr":Z(e),"data-health":e.health.join(` `)},[e.pr.url?(f(),n(`a`,{key:0,class:`font-mono text-highlighted`,href:e.pr.url,target:`_blank`,rel:`noreferrer`},o(Z(e)),9,Me)):(f(),n(`span`,Ne,o(Z(e)),1)),e.pr.title?(f(),n(`span`,Pe,o(e.pr.title),1)):l(``,!0),p(`span`,Fe,o(Ue(e)),1),(f(!0),n(v,null,r(e.health,e=>(f(),n(`span`,{key:e,class:c([`rounded border px-1.5 py-0.5 text-xs`,$(e)]),"data-flag":e},o(Q(e)),11,Ie))),128))],8,je))),128))]))])]),h(j)&&L.value?(f(),n(`aside`,Le,[p(`div`,{class:`handle group/handle absolute inset-y-0 -left-6 flex w-3 cursor-col-resize touch-none select-none justify-center outline-none`,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize the chat column`,"aria-valuemin":M.min,"aria-valuemax":M.max,"aria-valuenow":F.value,tabindex:`0`,"data-testid":`chat-handle`,onPointerdown:U,onKeydown:W,onDblclick:s[0]||=e=>z(M.default,!0)},[...s[6]||=[p(`span`,{class:`w-px rounded-full bg-(--ui-border-accented) opacity-0 transition-opacity duration-150 ease-out group-hover/handle:opacity-100 group-focus-visible/handle:opacity-100`,"aria-hidden":`true`},null,-1)]],40,Re),t(Y,{class:`sticky top-20 h-[calc(100vh-7rem)]`,chat:h(j),at:m.value.at,now:h(w)},null,8,[`chat`,`at`,`now`])])):l(``,!0)],14,se),h(j)&&!L.value?(f(),n(v,{key:0},[t(b,{class:`chat-fab fixed bottom-5 right-5 z-20 rounded-full shadow-lg lg:hidden`,size:`lg`,icon:`i-lucide-message-circle`,"aria-label":`Open the chat`,"data-testid":`chat-fab`,onClick:s[1]||=e=>I.value=!0}),t(x,{open:I.value,"onUpdate:open":s[2]||=e=>I.value=e,side:`right`,title:`Chat`,ui:{content:`max-w-md`}},{body:d(()=>[t(Y,{class:`h-full`,chat:h(j),at:m.value.at,now:h(w)},null,8,[`chat`,`at`,`now`])]),_:1},8,[`open`])],64)):l(``,!0)]),_:1})):(f(),C(e,{key:1,title:`Plane`,nav:`plane`},{default:d(()=>[...s[7]||=[p(`p`,{class:`text-sm text-muted`},`The table could not be read.`,-1)]]),_:1}))}}});export{Be as default};
@@ -1 +1 @@
1
- import{t as e}from"./AppShell-CSXDCV4x.js";import{An as t,Cn as n,Cr as r,Li as i,Mn as ee,Sn as te,Tr as ne,Xr as a,_r as o,bn as s,ji as c,kn as l,ln as u,o as d,xn as f,yn as p}from"./browser-B6T5hjfR.js";import{_ as m,a as re,c as ie,d as ae,g as oe,l as se,m as h,n as ce,o as g,s as le,u as ue,v as _}from"./main-DRxWlffc.js";import{t as v}from"./StatusDot-Dv6UMaPy.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`},y={class:`ml-1.5 font-medium`},b={class:`border-t border-muted`},x={class:`break-all px-2 py-1 align-top`},S={key:0},C={key:1,class:`text-dimmed`},w={class:`border-t border-muted`},T={class:`break-all px-2 py-1 align-top`},E={key:0},D={key:1,class:`text-dimmed`},O={class:`border-t border-muted`},k={class:`break-all px-2 py-1 align-top`},A={key:0},j={key:1,class:`text-dimmed`},M={class:`border-t border-muted`},N={class:`break-all px-2 py-1 align-top`},P={key:0},F={key:1,class:`text-dimmed`},I={class:`border-t border-muted`},L={class:`break-all px-2 py-1 align-top`},R={key:1,class:`text-dimmed`},z={class:`mt-4`},he={class:`w-full border-collapse font-mono text-[0.8125rem]`},ge={class:`border-t border-muted`},_e={class:`break-all px-2 py-1 align-top`},ve=[`href`],ye={key:1},be={class:`border-t border-muted`},xe={class:`break-all px-2 py-1 align-top`},Se={class:`border-t border-muted`},Ce={class:`break-all px-2 py-1 align-top`},we=[`href`],Te={key:1},Ee={key:2,class:`text-dimmed`},De={class:`border-t border-muted`},Oe={class:`break-all px-2 py-1 align-top`},ke={key:0},Ae={key:1,class:`text-dimmed`},je={class:`border-t border-muted`},Me={class:`break-all px-2 py-1 align-top`},Ne={key:0},Pe={key:1,class:`text-dimmed`},Fe={class:`border-t border-muted`},Ie={class:`break-all px-2 py-1 align-top`},Le={key:0},Re={key:1,class:`text-dimmed`},ze={class:`mt-4`},Be={class:`w-full border-collapse font-mono text-[0.8125rem]`},Ve={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},He={class:`break-all px-2 py-1 align-top`},Ue={class:`w-full border-collapse font-mono text-[0.8125rem]`},We={class:`w-32 break-all px-2 py-1 align-top text-muted sm:w-96 sm:break-words`},Ge={class:`px-2 py-1 align-top`},Ke={key:1,class:`text-xs text-muted`},qe={class:`mt-4`},Je={key:0,class:`w-full border-collapse font-mono text-[0.8125rem]`},Ye={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},B={class:`break-all px-2 py-1 align-top`},Xe={key:0},Ze={key:1,class:`text-dimmed`},Qe={key:1,class:`text-xs text-muted`},$e={class:`mt-4`},et={class:`mb-1 text-xs text-muted`},tt={class:`overflow-x-auto`},nt={class:`w-full border-collapse font-mono text-[0.8125rem]`},rt={class:`break-all px-2 py-1 align-top`},it={key:0,class:`text-xs text-muted`},at={class:`break-all px-2 py-1 align-top`},ot=[`href`],st={key:1},ct={key:2,class:`text-dimmed`},lt={class:`break-all px-2 py-1 align-top`},ut={key:0},dt={key:1,class:`text-dimmed`},ft={key:2},pt={key:3,class:`text-dimmed`},mt={class:`break-all px-2 py-1 align-top`},ht={key:0},gt={key:1,class:`text-dimmed`},_t={key:2},vt={key:3,class:`text-dimmed`},yt={key:1,class:`text-xs text-muted`},bt={class:`mt-4`},xt={class:`w-full border-collapse font-mono text-[0.8125rem]`},St={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Ct={class:`px-2 py-1 align-top`},wt={class:`mt-4`},Tt={key:0,class:`w-full border-collapse font-mono text-[0.8125rem]`},Et={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Dt={class:`break-all px-2 py-1 align-top`},Ot={class:`text-xs text-muted`},kt={key:1,class:`text-xs text-muted`},At={class:`mt-4`},jt={class:`w-full border-collapse font-mono text-[0.8125rem]`},Mt={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Nt={class:`break-all px-2 py-1 align-top`},Pt={key:0},Ft={key:1,class:`text-dimmed`},It={class:`mt-4 text-xs text-muted`},Lt={class:`rounded bg-elevated px-1 py-0.5`},Rt={class:`rounded bg-elevated px-1 py-0.5`},zt={class:`rounded bg-elevated px-1 py-0.5`},V=ee({__name:`ResidentDetailPage`,setup(ee){let V=d(`resident`),H=p(()=>V?.record??{}),U=p(()=>ie(H.value)),W=p(()=>se(H.value)||(V?.slug??``)),G=p(()=>h(U.value.sha)),K=p(()=>ce.test(W.value)?`https://github.com/${W.value}`:void 0),q=p(()=>K.value&&/^[0-9a-f]{7,40}$/.test(G.value)?`${K.value}/commit/${G.value}`:void 0),J=p(()=>{let e=U.value.snapshot;return e&&typeof e==`object`?g(e):void 0}),Bt=p(()=>g(U.value.schedules)),Y=p(()=>{let e=g(H.value.commands),t=g(H.value.effects);return Object.keys(e).sort().map(n=>({name:n,command:h(e[n]),effect:h(t[n])||`readonly`}))}),X=p(()=>ae(H.value).map(e=>({...e,threadKey:e.threadKey||`?`,ref:e.ref||`?`,sha:e.sha?e.sha.slice(0,8):``,commitHref:K.value&&/^[0-9a-f]{7,40}$/.test(e.sha)?`${K.value}/commit/${e.sha}`:void 0}))),Z=p(()=>X.value.filter(e=>!e.evicted).length),Q=p(()=>{let e=U.value.lastRestore;return e?JSON.stringify(e):``}),$=p(()=>le(H.value)),Vt=p(()=>typeof H.value.diskBudgetMb==`number`?H.value.diskBudgetMb:void 0),Ht=p(()=>{let e=$.value;if(!e)return[];let t=re(e,Vt.value),n=n=>{let r=t.room[n];return r===null?_(e.parts,n)===null?`? (checkout not measured)`:`?`:`${r} more (${m(_(e.parts,n))} each)`};return[[`used / total`,oe(e)],[`free`,`${m(t.freeKiB)}${t.capped?` under the ${m(t.capacityKiB)} diskBudgetMb cap`:``}`],[`reserve`,`${m(t.reserve.totalKiB)} (snapshot staging ${m(t.reserve.stagingKiB)} + floor ${m(t.reserve.floorKiB)})`],[`headroom`,`${m(t.headroomKiB)} — room for ${n(`hardlink`)} hardlinked trees, ${n(`reconcile`)} lockfile-diverged (reconciling)`],[`measured`,e.at||`—`]]}),Ut=p(()=>{let e=$.value;if(!e)return[];let t=[[`mirror`,m(e.parts.mirror)],[`checkout deps (node_modules)`,m(e.parts.deps)],[`checkout (history + tree + build)`,m(e.parts.checkout)]];for(let[n,r]of Object.entries(e.parts.threads).sort((e,t)=>t[1]-e[1]))t.push([`thread ${n}`,m(r)]);for(let[n,r]of Object.entries(e.parts.homes).sort((e,t)=>t[1]-e[1]))r>=1024&&t.push([`home ${n}`,m(r)]);return t.push([`other (image, /tmp, …)`,m(e.parts.other)]),t});return(ee,d)=>{let p=ne(`RouterLink`);return o(),f(e,{title:W.value||`Resident`,nav:`residents`},{leading:a(()=>[t(p,{class:`back text-sm text-muted no-underline hover:text-primary`,to:`/residents`},{default:a(()=>[...d[0]||=[l(`← All residents`,-1)]]),_:1})]),default:a(()=>[s(`section`,de,[d[8]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Lifecycle`,-1),s(`table`,fe,[s(`tbody`,null,[s(`tr`,pe,[d[1]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`state`,-1),s(`td`,me,[t(v,{tone:c(ue)(U.value.state),label:U.value.state},null,8,[`tone`,`label`]),s(`span`,y,i(U.value.state),1)])]),s(`tr`,b,[d[2]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`reason`,-1),s(`td`,x,[U.value.reason?(o(),n(`span`,S,i(U.value.reason),1)):(o(),n(`span`,C,`—`))])]),s(`tr`,w,[d[3]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last refresh error`,-1),s(`td`,T,[c(h)(U.value.lastRefreshError)?(o(),n(`span`,E,i(c(h)(U.value.lastRefreshError)),1)):(o(),n(`span`,D,`—`))])]),s(`tr`,O,[d[4]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last restore`,-1),s(`td`,k,[Q.value?(o(),n(`span`,A,i(Q.value),1)):(o(),n(`span`,j,`—`))])]),s(`tr`,M,[d[5]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`state updated`,-1),s(`td`,N,[c(h)(U.value.updatedAt)?(o(),n(`span`,P,i(c(h)(U.value.updatedAt)),1)):(o(),n(`span`,F,`—`))])]),s(`tr`,I,[d[7]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`idle since`,-1),s(`td`,L,[c(h)(U.value.idleSince)?(o(),n(u,{key:0},[l(i(c(h)(U.value.idleSince))+` `,1),d[6]||=s(`span`,{class:`text-xs text-muted`},`(refresh parked; container may sleep)`,-1)],64)):(o(),n(`span`,R,`awake`))])])])])]),s(`section`,z,[d[15]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Pinned facts`,-1),s(`table`,he,[s(`tbody`,null,[s(`tr`,ge,[d[9]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`repository`,-1),s(`td`,_e,[K.value?(o(),n(`a`,{key:0,class:`text-primary`,href:K.value},i(K.value),9,ve)):(o(),n(`span`,ye,i(c(h)(H.value.resource)||`—`),1))])]),s(`tr`,be,[d[10]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`default ref`,-1),s(`td`,xe,i(c(h)(U.value.defaultRef)||c(h)(H.value.defaultRef)||`—`),1)]),s(`tr`,Se,[d[11]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`pinned sha`,-1),s(`td`,Ce,[q.value?(o(),n(`a`,{key:0,class:`text-primary`,href:q.value},i(G.value),9,we)):G.value?(o(),n(`span`,Te,i(G.value),1)):(o(),n(`span`,Ee,`—`))])]),s(`tr`,De,[d[12]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`lockfile hash`,-1),s(`td`,Oe,[c(h)(U.value.lockfileHash)?(o(),n(`span`,ke,i(c(h)(U.value.lockfileHash)),1)):(o(),n(`span`,Ae,`—`))])]),s(`tr`,je,[d[13]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`provisioned`,-1),s(`td`,Me,[c(h)(U.value.provisionedAt)?(o(),n(`span`,Ne,i(c(h)(U.value.provisionedAt)),1)):(o(),n(`span`,Pe,`—`))])]),s(`tr`,Fe,[d[14]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last refresh`,-1),s(`td`,Ie,[c(h)(U.value.lastRefreshAt)?(o(),n(`span`,Le,i(c(h)(U.value.lastRefreshAt)),1)):(o(),n(`span`,Re,`—`))])])])])]),s(`section`,ze,[d[17]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Disk`,-1),$.value?(o(),n(u,{key:0},[s(`table`,Be,[s(`tbody`,null,[(o(!0),n(u,null,r(Ht.value,([e,t])=>(o(),n(`tr`,{key:e,class:`border-t border-muted`},[s(`td`,Ve,i(e),1),s(`td`,He,i(t),1)]))),128))])]),d[16]||=s(`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),s(`table`,Ue,[s(`tbody`,null,[(o(!0),n(u,null,r(Ut.value,([e,t])=>(o(),n(`tr`,{key:e,class:`border-t border-muted`},[s(`td`,We,i(e),1),s(`td`,Ge,i(t),1)]))),128))])])],64)):(o(),n(`p`,Ke,` not measured yet — the first refresh cycle or attach of this container measures it `))]),s(`section`,qe,[d[18]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Snapshot stamp`,-1),J.value?(o(),n(`table`,Je,[s(`tbody`,null,[(o(),n(u,null,r([`ref`,`sha`,`lockfileHash`,`createdAt`,`mirrorBackupId`,`checkoutBackupId`],e=>s(`tr`,{key:e,class:`border-t border-muted`},[s(`td`,Ye,i(e),1),s(`td`,B,[c(h)(J.value[e])?(o(),n(`span`,Xe,i(c(h)(J.value[e])),1)):(o(),n(`span`,Ze,`—`))])])),64))])])):(o(),n(`p`,Qe,`no snapshot recorded`))]),s(`section`,$e,[d[22]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Thread worktrees`,-1),X.value.length>0?(o(),n(u,{key:0},[s(`p`,et,i(Z.value)+` live · `+i(X.value.length-Z.value)+` evicted`,1),s(`div`,tt,[s(`table`,nt,[s(`tbody`,null,[d[21]||=s(`tr`,{class:`text-xs text-muted`},[s(`td`,{class:`px-2 py-1`},`thread`),s(`td`,{class:`px-2 py-1`},`ref · sha`),s(`td`,{class:`px-2 py-1`},`user · deps`),s(`td`,{class:`px-2 py-1`},`bound · last attach`)],-1),(o(!0),n(u,null,r(X.value,e=>(o(),n(`tr`,{key:e.threadKey,class:`border-t border-muted`},[s(`td`,rt,[e.evicted?(o(),n(`span`,it,[l(`evicted `+i(e.evictedAt||`—`),1),e.evictedWhy?(o(),n(u,{key:0},[l(` · `+i(e.evictedWhy),1)],64)):te(``,!0)])):(o(),f(v,{key:1,tone:`green`,label:`live`,tip:`live`})),l(` `+i(e.threadKey),1)]),s(`td`,at,[l(i(e.ref)+` · `,1),e.commitHref?(o(),n(`a`,{key:0,class:`text-primary`,href:e.commitHref},i(e.sha),9,ot)):e.sha?(o(),n(`span`,st,i(e.sha),1)):(o(),n(`span`,ct,`—`))]),s(`td`,lt,[e.user?(o(),n(`span`,ut,i(e.user),1)):(o(),n(`span`,dt,`—`)),d[19]||=l(` · `,-1),e.deps?(o(),n(`span`,ft,i(e.deps),1)):(o(),n(`span`,pt,`—`))]),s(`td`,mt,[e.boundAt?(o(),n(`span`,ht,i(e.boundAt),1)):(o(),n(`span`,gt,`—`)),d[20]||=l(` · `,-1),e.lastAttachAt?(o(),n(`span`,_t,i(e.lastAttachAt),1)):(o(),n(`span`,vt,`—`))])]))),128))])])])],64)):(o(),n(`p`,yt,`no thread worktrees`))]),s(`section`,bt,[d[23]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Pending schedules`,-1),s(`table`,xt,[s(`tbody`,null,[(o(),n(u,null,r([[`refresh`,`refresh`],[`provision run`,`provisionRun`],[`provision deadline`,`provisionDeadline`]],([e,t])=>s(`tr`,{key:t,class:`border-t border-muted`},[s(`td`,St,i(e),1),s(`td`,Ct,i(c(h)(Bt.value[t]??0)||`0`),1)])),64))])])]),s(`section`,wt,[d[25]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Command table`,-1),Y.value.length>0?(o(),n(`table`,Tt,[s(`tbody`,null,[(o(!0),n(u,null,r(Y.value,e=>(o(),n(`tr`,{key:e.name,class:`border-t border-muted`},[s(`td`,Et,i(e.name),1),s(`td`,Dt,[s(`code`,null,i(e.command),1),d[24]||=l(),s(`span`,Ot,i(e.effect),1)])]))),128))])])):(o(),n(`p`,kt,`no command table`))]),s(`section`,At,[d[26]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Registry settings`,-1),s(`table`,jt,[s(`tbody`,null,[(o(!0),n(u,null,r([[`onboarded`,c(h)(H.value.onboardedAt)],[`record updated`,c(h)(H.value.updatedAt)],[`provisioning timeout (ms)`,c(h)(H.value.provisioningTimeoutMs)],[`disk budget (MB)`,c(h)(H.value.diskBudgetMb)],[`worktree TTL (days)`,c(h)(H.value.worktreeTtlDays??7)]],([e,t])=>(o(),n(`tr`,{key:e,class:`border-t border-muted`},[s(`td`,Mt,i(e),1),s(`td`,Nt,[t?(o(),n(`span`,Pt,i(t),1)):(o(),n(`span`,Ft,`—`))])]))),128))])])]),s(`p`,It,[d[27]||=l(` Manage from chat: `,-1),s(`code`,Lt,`repo rebuild `+i(W.value),1),d[28]||=l(` · `,-1),s(`code`,Rt,`repo reconfigure `+i(W.value)+` …`,1),d[29]||=l(` · `,-1),s(`code`,zt,`repo offboard `+i(W.value)+` --dry-run`,1)])]),_:1},8,[`title`])}}});export{V as default};
1
+ import{t as e}from"./AppShell-CSXDCV4x.js";import{An as t,Cn as n,Cr as r,Li as i,Mn as ee,Sn as te,Tr as ne,Xr as a,_r as o,bn as s,ji as c,kn as l,ln as u,o as d,xn as f,yn as p}from"./browser-B6T5hjfR.js";import{_ as m,a as re,c as ie,d as ae,g as oe,l as se,m as h,n as ce,o as g,s as le,u as ue,v as _}from"./main-7SAujY_s.js";import{t as v}from"./StatusDot-BgmkSV0S.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`},y={class:`ml-1.5 font-medium`},b={class:`border-t border-muted`},x={class:`break-all px-2 py-1 align-top`},S={key:0},C={key:1,class:`text-dimmed`},w={class:`border-t border-muted`},T={class:`break-all px-2 py-1 align-top`},E={key:0},D={key:1,class:`text-dimmed`},O={class:`border-t border-muted`},k={class:`break-all px-2 py-1 align-top`},A={key:0},j={key:1,class:`text-dimmed`},M={class:`border-t border-muted`},N={class:`break-all px-2 py-1 align-top`},P={key:0},F={key:1,class:`text-dimmed`},I={class:`border-t border-muted`},L={class:`break-all px-2 py-1 align-top`},R={key:1,class:`text-dimmed`},z={class:`mt-4`},he={class:`w-full border-collapse font-mono text-[0.8125rem]`},ge={class:`border-t border-muted`},_e={class:`break-all px-2 py-1 align-top`},ve=[`href`],ye={key:1},be={class:`border-t border-muted`},xe={class:`break-all px-2 py-1 align-top`},Se={class:`border-t border-muted`},Ce={class:`break-all px-2 py-1 align-top`},we=[`href`],Te={key:1},Ee={key:2,class:`text-dimmed`},De={class:`border-t border-muted`},Oe={class:`break-all px-2 py-1 align-top`},ke={key:0},Ae={key:1,class:`text-dimmed`},je={class:`border-t border-muted`},Me={class:`break-all px-2 py-1 align-top`},Ne={key:0},Pe={key:1,class:`text-dimmed`},Fe={class:`border-t border-muted`},Ie={class:`break-all px-2 py-1 align-top`},Le={key:0},Re={key:1,class:`text-dimmed`},ze={class:`mt-4`},Be={class:`w-full border-collapse font-mono text-[0.8125rem]`},Ve={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},He={class:`break-all px-2 py-1 align-top`},Ue={class:`w-full border-collapse font-mono text-[0.8125rem]`},We={class:`w-32 break-all px-2 py-1 align-top text-muted sm:w-96 sm:break-words`},Ge={class:`px-2 py-1 align-top`},Ke={key:1,class:`text-xs text-muted`},qe={class:`mt-4`},Je={key:0,class:`w-full border-collapse font-mono text-[0.8125rem]`},Ye={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},B={class:`break-all px-2 py-1 align-top`},Xe={key:0},Ze={key:1,class:`text-dimmed`},Qe={key:1,class:`text-xs text-muted`},$e={class:`mt-4`},et={class:`mb-1 text-xs text-muted`},tt={class:`overflow-x-auto`},nt={class:`w-full border-collapse font-mono text-[0.8125rem]`},rt={class:`break-all px-2 py-1 align-top`},it={key:0,class:`text-xs text-muted`},at={class:`break-all px-2 py-1 align-top`},ot=[`href`],st={key:1},ct={key:2,class:`text-dimmed`},lt={class:`break-all px-2 py-1 align-top`},ut={key:0},dt={key:1,class:`text-dimmed`},ft={key:2},pt={key:3,class:`text-dimmed`},mt={class:`break-all px-2 py-1 align-top`},ht={key:0},gt={key:1,class:`text-dimmed`},_t={key:2},vt={key:3,class:`text-dimmed`},yt={key:1,class:`text-xs text-muted`},bt={class:`mt-4`},xt={class:`w-full border-collapse font-mono text-[0.8125rem]`},St={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Ct={class:`px-2 py-1 align-top`},wt={class:`mt-4`},Tt={key:0,class:`w-full border-collapse font-mono text-[0.8125rem]`},Et={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Dt={class:`break-all px-2 py-1 align-top`},Ot={class:`text-xs text-muted`},kt={key:1,class:`text-xs text-muted`},At={class:`mt-4`},jt={class:`w-full border-collapse font-mono text-[0.8125rem]`},Mt={class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},Nt={class:`break-all px-2 py-1 align-top`},Pt={key:0},Ft={key:1,class:`text-dimmed`},It={class:`mt-4 text-xs text-muted`},Lt={class:`rounded bg-elevated px-1 py-0.5`},Rt={class:`rounded bg-elevated px-1 py-0.5`},zt={class:`rounded bg-elevated px-1 py-0.5`},V=ee({__name:`ResidentDetailPage`,setup(ee){let V=d(`resident`),H=p(()=>V?.record??{}),U=p(()=>ie(H.value)),W=p(()=>se(H.value)||(V?.slug??``)),G=p(()=>h(U.value.sha)),K=p(()=>ce.test(W.value)?`https://github.com/${W.value}`:void 0),q=p(()=>K.value&&/^[0-9a-f]{7,40}$/.test(G.value)?`${K.value}/commit/${G.value}`:void 0),J=p(()=>{let e=U.value.snapshot;return e&&typeof e==`object`?g(e):void 0}),Bt=p(()=>g(U.value.schedules)),Y=p(()=>{let e=g(H.value.commands),t=g(H.value.effects);return Object.keys(e).sort().map(n=>({name:n,command:h(e[n]),effect:h(t[n])||`readonly`}))}),X=p(()=>ae(H.value).map(e=>({...e,threadKey:e.threadKey||`?`,ref:e.ref||`?`,sha:e.sha?e.sha.slice(0,8):``,commitHref:K.value&&/^[0-9a-f]{7,40}$/.test(e.sha)?`${K.value}/commit/${e.sha}`:void 0}))),Z=p(()=>X.value.filter(e=>!e.evicted).length),Q=p(()=>{let e=U.value.lastRestore;return e?JSON.stringify(e):``}),$=p(()=>le(H.value)),Vt=p(()=>typeof H.value.diskBudgetMb==`number`?H.value.diskBudgetMb:void 0),Ht=p(()=>{let e=$.value;if(!e)return[];let t=re(e,Vt.value),n=n=>{let r=t.room[n];return r===null?_(e.parts,n)===null?`? (checkout not measured)`:`?`:`${r} more (${m(_(e.parts,n))} each)`};return[[`used / total`,oe(e)],[`free`,`${m(t.freeKiB)}${t.capped?` under the ${m(t.capacityKiB)} diskBudgetMb cap`:``}`],[`reserve`,`${m(t.reserve.totalKiB)} (snapshot staging ${m(t.reserve.stagingKiB)} + floor ${m(t.reserve.floorKiB)})`],[`headroom`,`${m(t.headroomKiB)} — room for ${n(`hardlink`)} hardlinked trees, ${n(`reconcile`)} lockfile-diverged (reconciling)`],[`measured`,e.at||`—`]]}),Ut=p(()=>{let e=$.value;if(!e)return[];let t=[[`mirror`,m(e.parts.mirror)],[`checkout deps (node_modules)`,m(e.parts.deps)],[`checkout (history + tree + build)`,m(e.parts.checkout)]];for(let[n,r]of Object.entries(e.parts.threads).sort((e,t)=>t[1]-e[1]))t.push([`thread ${n}`,m(r)]);for(let[n,r]of Object.entries(e.parts.homes).sort((e,t)=>t[1]-e[1]))r>=1024&&t.push([`home ${n}`,m(r)]);return t.push([`other (image, /tmp, …)`,m(e.parts.other)]),t});return(ee,d)=>{let p=ne(`RouterLink`);return o(),f(e,{title:W.value||`Resident`,nav:`residents`},{leading:a(()=>[t(p,{class:`back text-sm text-muted no-underline hover:text-primary`,to:`/residents`},{default:a(()=>[...d[0]||=[l(`← All residents`,-1)]]),_:1})]),default:a(()=>[s(`section`,de,[d[8]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Lifecycle`,-1),s(`table`,fe,[s(`tbody`,null,[s(`tr`,pe,[d[1]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`state`,-1),s(`td`,me,[t(v,{tone:c(ue)(U.value.state),label:U.value.state},null,8,[`tone`,`label`]),s(`span`,y,i(U.value.state),1)])]),s(`tr`,b,[d[2]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`reason`,-1),s(`td`,x,[U.value.reason?(o(),n(`span`,S,i(U.value.reason),1)):(o(),n(`span`,C,`—`))])]),s(`tr`,w,[d[3]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last refresh error`,-1),s(`td`,T,[c(h)(U.value.lastRefreshError)?(o(),n(`span`,E,i(c(h)(U.value.lastRefreshError)),1)):(o(),n(`span`,D,`—`))])]),s(`tr`,O,[d[4]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last restore`,-1),s(`td`,k,[Q.value?(o(),n(`span`,A,i(Q.value),1)):(o(),n(`span`,j,`—`))])]),s(`tr`,M,[d[5]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`state updated`,-1),s(`td`,N,[c(h)(U.value.updatedAt)?(o(),n(`span`,P,i(c(h)(U.value.updatedAt)),1)):(o(),n(`span`,F,`—`))])]),s(`tr`,I,[d[7]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`idle since`,-1),s(`td`,L,[c(h)(U.value.idleSince)?(o(),n(u,{key:0},[l(i(c(h)(U.value.idleSince))+` `,1),d[6]||=s(`span`,{class:`text-xs text-muted`},`(refresh parked; container may sleep)`,-1)],64)):(o(),n(`span`,R,`awake`))])])])])]),s(`section`,z,[d[15]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Pinned facts`,-1),s(`table`,he,[s(`tbody`,null,[s(`tr`,ge,[d[9]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`repository`,-1),s(`td`,_e,[K.value?(o(),n(`a`,{key:0,class:`text-primary`,href:K.value},i(K.value),9,ve)):(o(),n(`span`,ye,i(c(h)(H.value.resource)||`—`),1))])]),s(`tr`,be,[d[10]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`default ref`,-1),s(`td`,xe,i(c(h)(U.value.defaultRef)||c(h)(H.value.defaultRef)||`—`),1)]),s(`tr`,Se,[d[11]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`pinned sha`,-1),s(`td`,Ce,[q.value?(o(),n(`a`,{key:0,class:`text-primary`,href:q.value},i(G.value),9,we)):G.value?(o(),n(`span`,Te,i(G.value),1)):(o(),n(`span`,Ee,`—`))])]),s(`tr`,De,[d[12]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`lockfile hash`,-1),s(`td`,Oe,[c(h)(U.value.lockfileHash)?(o(),n(`span`,ke,i(c(h)(U.value.lockfileHash)),1)):(o(),n(`span`,Ae,`—`))])]),s(`tr`,je,[d[13]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`provisioned`,-1),s(`td`,Me,[c(h)(U.value.provisionedAt)?(o(),n(`span`,Ne,i(c(h)(U.value.provisionedAt)),1)):(o(),n(`span`,Pe,`—`))])]),s(`tr`,Fe,[d[14]||=s(`td`,{class:`w-32 px-2 py-1 align-top text-muted sm:w-48 sm:whitespace-nowrap`},`last refresh`,-1),s(`td`,Ie,[c(h)(U.value.lastRefreshAt)?(o(),n(`span`,Le,i(c(h)(U.value.lastRefreshAt)),1)):(o(),n(`span`,Re,`—`))])])])])]),s(`section`,ze,[d[17]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Disk`,-1),$.value?(o(),n(u,{key:0},[s(`table`,Be,[s(`tbody`,null,[(o(!0),n(u,null,r(Ht.value,([e,t])=>(o(),n(`tr`,{key:e,class:`border-t border-muted`},[s(`td`,Ve,i(e),1),s(`td`,He,i(t),1)]))),128))])]),d[16]||=s(`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),s(`table`,Ue,[s(`tbody`,null,[(o(!0),n(u,null,r(Ut.value,([e,t])=>(o(),n(`tr`,{key:e,class:`border-t border-muted`},[s(`td`,We,i(e),1),s(`td`,Ge,i(t),1)]))),128))])])],64)):(o(),n(`p`,Ke,` not measured yet — the first refresh cycle or attach of this container measures it `))]),s(`section`,qe,[d[18]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Snapshot stamp`,-1),J.value?(o(),n(`table`,Je,[s(`tbody`,null,[(o(),n(u,null,r([`ref`,`sha`,`lockfileHash`,`createdAt`,`mirrorBackupId`,`checkoutBackupId`],e=>s(`tr`,{key:e,class:`border-t border-muted`},[s(`td`,Ye,i(e),1),s(`td`,B,[c(h)(J.value[e])?(o(),n(`span`,Xe,i(c(h)(J.value[e])),1)):(o(),n(`span`,Ze,`—`))])])),64))])])):(o(),n(`p`,Qe,`no snapshot recorded`))]),s(`section`,$e,[d[22]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Thread worktrees`,-1),X.value.length>0?(o(),n(u,{key:0},[s(`p`,et,i(Z.value)+` live · `+i(X.value.length-Z.value)+` evicted`,1),s(`div`,tt,[s(`table`,nt,[s(`tbody`,null,[d[21]||=s(`tr`,{class:`text-xs text-muted`},[s(`td`,{class:`px-2 py-1`},`thread`),s(`td`,{class:`px-2 py-1`},`ref · sha`),s(`td`,{class:`px-2 py-1`},`user · deps`),s(`td`,{class:`px-2 py-1`},`bound · last attach`)],-1),(o(!0),n(u,null,r(X.value,e=>(o(),n(`tr`,{key:e.threadKey,class:`border-t border-muted`},[s(`td`,rt,[e.evicted?(o(),n(`span`,it,[l(`evicted `+i(e.evictedAt||`—`),1),e.evictedWhy?(o(),n(u,{key:0},[l(` · `+i(e.evictedWhy),1)],64)):te(``,!0)])):(o(),f(v,{key:1,tone:`green`,label:`live`,tip:`live`})),l(` `+i(e.threadKey),1)]),s(`td`,at,[l(i(e.ref)+` · `,1),e.commitHref?(o(),n(`a`,{key:0,class:`text-primary`,href:e.commitHref},i(e.sha),9,ot)):e.sha?(o(),n(`span`,st,i(e.sha),1)):(o(),n(`span`,ct,`—`))]),s(`td`,lt,[e.user?(o(),n(`span`,ut,i(e.user),1)):(o(),n(`span`,dt,`—`)),d[19]||=l(` · `,-1),e.deps?(o(),n(`span`,ft,i(e.deps),1)):(o(),n(`span`,pt,`—`))]),s(`td`,mt,[e.boundAt?(o(),n(`span`,ht,i(e.boundAt),1)):(o(),n(`span`,gt,`—`)),d[20]||=l(` · `,-1),e.lastAttachAt?(o(),n(`span`,_t,i(e.lastAttachAt),1)):(o(),n(`span`,vt,`—`))])]))),128))])])])],64)):(o(),n(`p`,yt,`no thread worktrees`))]),s(`section`,bt,[d[23]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Pending schedules`,-1),s(`table`,xt,[s(`tbody`,null,[(o(),n(u,null,r([[`refresh`,`refresh`],[`provision run`,`provisionRun`],[`provision deadline`,`provisionDeadline`]],([e,t])=>s(`tr`,{key:t,class:`border-t border-muted`},[s(`td`,St,i(e),1),s(`td`,Ct,i(c(h)(Bt.value[t]??0)||`0`),1)])),64))])])]),s(`section`,wt,[d[25]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Command table`,-1),Y.value.length>0?(o(),n(`table`,Tt,[s(`tbody`,null,[(o(!0),n(u,null,r(Y.value,e=>(o(),n(`tr`,{key:e.name,class:`border-t border-muted`},[s(`td`,Et,i(e.name),1),s(`td`,Dt,[s(`code`,null,i(e.command),1),d[24]||=l(),s(`span`,Ot,i(e.effect),1)])]))),128))])])):(o(),n(`p`,kt,`no command table`))]),s(`section`,At,[d[26]||=s(`h2`,{class:`mb-1.5 font-mono text-xs font-medium uppercase tracking-wider text-muted`},`Registry settings`,-1),s(`table`,jt,[s(`tbody`,null,[(o(!0),n(u,null,r([[`onboarded`,c(h)(H.value.onboardedAt)],[`record updated`,c(h)(H.value.updatedAt)],[`provisioning timeout (ms)`,c(h)(H.value.provisioningTimeoutMs)],[`disk budget (MB)`,c(h)(H.value.diskBudgetMb)],[`worktree TTL (days)`,c(h)(H.value.worktreeTtlDays??7)]],([e,t])=>(o(),n(`tr`,{key:e,class:`border-t border-muted`},[s(`td`,Mt,i(e),1),s(`td`,Nt,[t?(o(),n(`span`,Pt,i(t),1)):(o(),n(`span`,Ft,`—`))])]))),128))])])]),s(`p`,It,[d[27]||=l(` Manage from chat: `,-1),s(`code`,Lt,`repo rebuild `+i(W.value),1),d[28]||=l(` · `,-1),s(`code`,Rt,`repo reconfigure `+i(W.value)+` …`,1),d[29]||=l(` · `,-1),s(`code`,zt,`repo offboard `+i(W.value)+` --dry-run`,1)])]),_:1},8,[`title`])}}});export{V as default};
@@ -1 +1 @@
1
- import{t as e}from"./AppShell-CSXDCV4x.js";import{An as t,Cn as n,Cr as r,Gr as i,Li as a,Mn as o,Pi as s,Sn as c,Tr as l,Xr as u,_r as d,bn as f,dr as p,hr as m,ji as h,kn as g,ln as _,o as v,rn as y,t as b,xi as x,xn as S,yi as C,yn as w}from"./browser-B6T5hjfR.js";import{t as T}from"./Tooltip-Bd-5Rypv.js";import{_ as E,a as D,c as O,d as k,f as A,g as j,h as M,i as N,l as P,m as F,n as I,p as L,r as R,s as ee,u as te,y as z}from"./main-DRxWlffc.js";import{t as B}from"./eventSource-Bj_dZf6M.js";import{t as V}from"./wallClock-DmaC1sKA.js";import{n as ne,r as re}from"./indexFormat-B-pd4r7Y.js";import{A as ie,C as H,D as ae,S as oe,a as se,c as ce,i as le,l as ue,t as de,x as fe}from"./indexRow-DborJPFp.js";import"./format-BldUwl_R.js";import{t as U}from"./StatusDot-Dv6UMaPy.js";var pe=[`data-slug`,`data-running`],me=[`open`],he={class:`row flex cursor-pointer list-none flex-wrap items-baseline gap-x-2.5 gap-y-1 rounded-md px-2 py-2 hover:bg-elevated [&::-webkit-details-marker]:hidden`},ge={class:`self-center`},_e={class:`font-mono text-[0.9375rem] font-medium text-highlighted`},ve={class:`text-sm text-toned`},ye={key:0,class:`running shrink-0 rounded border border-ok/25 bg-ok/8 px-1.5 font-mono text-[0.68rem] font-medium tabular-nums text-ok`},be=[`title`],xe={key:2,class:`basis-full pl-[1.9rem] text-xs text-warn`},Se={class:`fold pb-3 pl-[1.9rem] pr-2 pt-0.5`},Ce={key:0,class:`m-0 list-none divide-y divide-(--ui-border-muted) p-0`},we=[`data-run-id`,`data-thread`],Te={class:`pt-[0.3rem]`},Ee={class:`what min-w-0`},De={class:`flex min-w-0 items-baseline gap-2`},Oe=[`title`],ke={key:0,class:`who block truncate text-xs text-dimmed`},Ae=[`href`],je={key:1,class:`who block text-xs text-dimmed`},Me={class:`min-w-0 font-mono text-xs max-sm:col-span-2 max-sm:col-start-2 max-sm:row-start-2`},Ne=[`title`],Pe=[`href`],Fe={key:1},Ie={key:1,class:`font-sans text-dimmed`},Le={key:0,class:`facts-tree block truncate text-dimmed`},Re={class:`user`},ze={class:`deps`},Be=[`title`],Ve={class:`flex items-baseline gap-3 justify-self-end max-sm:col-start-3 max-sm:row-start-1`},He=[`title`],Ue={key:1,class:`py-1 text-xs text-dimmed`},We=[`data-idle`],Ge={key:1},W=o({__name:`ResidentRow`,props:{record:{},runs:{},now:{},open:{type:Boolean}},setup(e){let o=e,p=x(o.open===!0);i(()=>o.open,e=>{e&&(p.value=!0)});function m(e){p.value=e.target.open}let v=w(()=>P(o.record)),b=w(()=>v.value||F(o.record.resource)||`?`),C=w(()=>O(o.record)),T=w(()=>te(C.value.state)),A=w(()=>I.test(v.value)?`/residents/${v.value}`:null),L=w(()=>I.test(v.value)?`https://github.com/${v.value}`:void 0),R=e=>L.value&&/^[0-9a-f]{7,40}$/.test(e)?`${L.value}/commit/${e}`:void 0,z=w(()=>F(o.record.defaultRef)||`?`),B=w(()=>F(C.value.sha).slice(0,8)),V=w(()=>F(C.value.lastRefreshAt)),W=e=>{let t=e?Date.parse(e):NaN;return Number.isFinite(t)?ne(t,o.now):e||`—`},G=w(()=>V.value?W(V.value):``),K=w(()=>ee(o.record)),q=w(()=>K.value?j(K.value):``),J=w(()=>{let e=K.value;if(!e)return null;let t=typeof o.record.diskBudgetMb==`number`?o.record.diskBudgetMb:void 0;return D(e,t)}),Y=w(()=>[`ref ${z.value}`,B.value,G.value?`refreshed ${G.value}`:``,q.value?`disk ${q.value}`:``].filter(Boolean).join(` · `)),X=w(()=>[V.value?`refreshed ${V.value}`:``,K.value?.at?`disk measured ${K.value.at}`:``].filter(Boolean).join(` · `)),Z=w(()=>{let e=K.value,t=J.value;if(!e||!t)return``;let n=t.room.hardlink===null?`room not projected (checkout not measured)`:`room for ${t.room.hardlink} more ${t.room.hardlink===1?`tree`:`trees`}`;return[`${E(t.freeKiB)} free${t.capped?` under the ${E(t.capacityKiB)} cap`:``}`,n,`measured ${W(e.at)}`].join(` · `)}),Q=w(()=>k(o.record)),$=w(()=>{let e=o.runs.map(e=>{let t=re(e.label||H(e.id)),n=N(Q.value,e.threadKey),r=ie(e);return{key:`run:${e.id}`,run:e,agent:t.agent,text:t.snippet??t.scope,who:r.identity,surface:le[r.kind]??r.kind,threadUrl:oe(e),href:fe(e),elapsed:ue(e,o.now),binding:n,treeKiB:n?M(K.value,n.threadKey):null}}),t=new Set(o.runs.map(e=>e.threadKey));for(let n of Q.value)n.evicted||t.has(n.threadKey)||e.push({key:`idle:${n.threadKey}`,text:`idle`,who:``,surface:``,threadUrl:``,href:``,elapsed:``,binding:n,treeKiB:M(K.value,n.threadKey)});return e}),Ke=w(()=>$.value.filter(e=>!e.run).length);return(i,o)=>{let x=l(`RouterLink`);return d(),n(`li`,{class:`resident border-b border-muted first:border-t`,"data-slug":v.value,"data-running":e.runs.length},[f(`details`,{class:`group/fold`,open:p.value,onToggle:m},[f(`summary`,he,[o[2]||=f(`span`,{class:`chev w-3 select-none self-center text-xs text-dimmed transition-transform group-open/fold:rotate-90 motion-reduce:transition-none`,"aria-hidden":`true`},`❯`,-1),f(`span`,ge,[t(U,{tone:T.value,label:C.value.state,tip:C.value.state},null,8,[`tone`,`label`,`tip`])]),f(`span`,_e,a(b.value),1),f(`span`,ve,a(C.value.state),1),e.runs.length>0?(d(),n(`span`,ye,a(e.runs.length)+` running`,1)):c(``,!0),f(`span`,{class:`facts font-mono text-xs text-muted max-sm:basis-full max-sm:pl-[1.9rem] sm:ml-2`,title:X.value||void 0},a(Y.value),9,be),A.value?(d(),S(x,{key:1,class:`detail ml-auto shrink-0 text-xs text-muted no-underline hover:text-highlighted hover:underline`,to:A.value,onClick:o[0]||=y(()=>{},[`stop`])},{default:u(()=>[...o[1]||=[g(`detail ↗`,-1)]]),_:1},8,[`to`])):c(``,!0),C.value.reason?(d(),n(`span`,xe,a(C.value.reason),1)):c(``,!0)]),f(`div`,Se,[$.value.length>0?(d(),n(`ul`,Ce,[(d(!0),n(_,null,r($.value,t=>(d(),n(`li`,{key:t.key,class:s([`grid grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-x-3 gap-y-1 py-2 sm:grid-cols-[auto_minmax(0,1fr)_minmax(14rem,22rem)_auto]`,t.run?`run`:`idle`]),"data-run-id":t.run?.id,"data-thread":t.run?void 0:t.binding?.threadKey},[f(`span`,Te,[t.run?(d(),S(U,{key:0,tone:`green`,label:h(ae)(t.run),tip:h(ce)(t.run),pulse:``},null,8,[`label`,`tip`])):(d(),S(U,{key:1,tone:`grey`,label:`idle`,tip:`no run is using this tree`}))]),f(`span`,Ee,[f(`span`,De,[t.agent?(d(),n(`span`,{key:0,class:s([`agent shrink-0 rounded border px-1.5 font-mono text-[0.65rem] font-medium uppercase tracking-wider`,h(de)[h(se)(t.agent)]])},a(t.agent),3)):c(``,!0),f(`span`,{class:s([`text min-w-0 truncate text-[0.8125rem]`,t.run?`text-highlighted`:`text-dimmed`]),title:t.run?t.text:void 0},a(t.text),11,Oe)]),t.run?(d(),n(`span`,ke,[t.who?(d(),n(_,{key:0},[g(`by `+a(t.who),1)],64)):c(``,!0),t.who&&(t.threadUrl||t.surface)?(d(),n(_,{key:1},[g(a(` · `))],64)):c(``,!0),t.threadUrl?(d(),n(`a`,{key:2,class:`text-muted no-underline hover:text-highlighted hover:underline`,href:t.threadUrl,target:`_blank`,rel:`noopener noreferrer`},a(t.surface)+` thread ↗`,9,Ae)):t.surface?(d(),n(_,{key:3},[g(`via `+a(t.surface),1)],64)):c(``,!0)])):t.binding?(d(),n(`span`,je,`last used `+a(W(t.binding.lastAttachAt)),1)):c(``,!0)]),f(`span`,Me,[f(`span`,{class:`tree block truncate text-toned`,title:t.binding&&t.binding.ref||void 0},[t.binding?(d(),n(_,{key:0},[g(a(t.binding.ref||`?`),1),t.binding.sha?(d(),n(_,{key:0},[o[3]||=g(a(` `),-1),o[4]||=f(`span`,{class:`text-dimmed`},`@`,-1),o[5]||=g(a(` `)+` `,-1),R(t.binding.sha)?(d(),n(`a`,{key:0,class:`text-highlighted no-underline hover:underline`,href:R(t.binding.sha)},a(t.binding.sha.slice(0,8)),9,Pe)):(d(),n(`span`,Fe,a(t.binding.sha.slice(0,8)),1))],64)):c(``,!0)],64)):(d(),n(`span`,Ie,`no worktree bound yet`))],8,Ne),t.binding?(d(),n(`span`,Le,[f(`span`,Re,a(t.binding.user||`—`),1),o[6]||=g(` `+a(` · `),-1),f(`span`,ze,a(t.binding.deps||`—`),1),o[7]||=g(` `+a(` · `),-1),f(`span`,{class:s([`size`,t.treeKiB===null?``:`text-muted`]),title:t.treeKiB===null?`size not measured yet`:`on disk`},a(t.treeKiB===null?`—`:h(E)(t.treeKiB)),11,Be)])):c(``,!0)]),f(`span`,Ve,[t.run?(d(),n(`span`,{key:0,class:`elapsed whitespace-nowrap font-mono text-xs tabular-nums text-ok`,title:`running for · started ${h(ne)(t.run.startedAt,e.now)}`},a(t.elapsed),9,He)):c(``,!0),t.run?(d(),S(x,{key:1,class:`open text-xs text-muted no-underline hover:text-highlighted hover:underline`,to:t.href,"aria-label":`open run ${t.run.label||h(H)(t.run.id)}`},{default:u(()=>[...o[8]||=[g(`open ↗`,-1)]]),_:1},8,[`to`,`aria-label`])):c(``,!0)])],10,we))),128))])):(d(),n(`p`,Ue,`nothing on this resident — no run, no worktree`)),f(`p`,{class:`disk mt-2 font-mono text-xs text-dimmed`,"data-idle":Ke.value},[Z.value?(d(),n(_,{key:0},[g(a(Z.value),1)],64)):(d(),n(`span`,Ge,`disk not measured yet`))],8,We)])],40,me)],8,pe)}}}),G={class:`conn flex items-center gap-1.5`},K={id:`state`,class:`text-xs text-muted`},q={class:`mb-2 text-xs text-muted`},J={id:`running`,class:`font-mono tabular-nums`},Y={id:`residents`,class:`m-0 list-none p-0`},X={key:1,class:`px-2 py-1.5 text-muted`},Z=`Resident repos`,Q=o({__name:`ResidentsIndexPage`,setup(o){let s=v(`residents`),c=C({cap:s?.cap,count:s?.count,residents:s?.residents??[],runs:new Map((s?.runs??[]).map(e=>[e.id,e]))}),l=V(s?.now),y=x({tone:`amber`,text:`connecting…`}),E=typeof window<`u`?new URLSearchParams(window.location.search).get(`open`):null,D=w(()=>c.residents.map((e,t)=>{let n=e,r=P(n);return{key:`${r||`?`}-${t}`,record:n,slug:r,runs:L(c.runs.values(),r)}})),O=w(()=>F(c.cap)||`?`),k=w(()=>F(c.count)||String(D.value.length)),j=w(()=>D.value.reduce((e,t)=>e+t.runs.length,0));i([j,()=>c.residents],([e,t])=>{b.setTitle((e>0?`(${e}) `:``)+Z),b.setFavicon(z[A(t)])},{immediate:!0});let M=B(),N=null;return p(()=>{N=M(`/residents?stream=1`);let e=!1;N.onopen=()=>{if(e){b.reload();return}e=!0,y.value={tone:`green`,text:`live`}},N.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}R(c,t)},N.onerror=()=>{N&&N.readyState===2?y.value={tone:`red`,text:`disconnected`}:y.value={tone:`amber`,text:`connecting…`}}}),m(()=>{N?.close()}),(i,o)=>{let s=T;return d(),S(e,{title:Z,nav:`residents`},{status:u(()=>[t(s,{text:`runs arrive from the registry feed; the listing is re-read when a run attaches or ends`},{default:u(()=>[f(`span`,G,[t(U,{tone:y.value.tone,label:y.value.text},null,8,[`tone`,`label`]),f(`span`,K,a(y.value.text),1)])]),_:1})]),default:u(()=>[D.value.length>0?(d(),n(_,{key:0},[f(`p`,q,[g(a(`${k.value}/${O.value} resident slots in use · `),1),f(`span`,J,a(j.value)+` running`,1)]),f(`ul`,Y,[(d(!0),n(_,null,r(D.value,e=>(d(),S(W,{key:e.key,record:e.record,runs:e.runs,now:h(l),open:h(E)!==null&&h(E)===e.slug},null,8,[`record`,`runs`,`now`,`open`]))),128))])],64)):(d(),n(`p`,X,[g(` No repos onboarded (0/`+a(O.value)+`). Onboard one from chat: `,1),o[0]||=f(`code`,{class:`rounded bg-elevated px-1.5 py-0.5`},`repo onboard <owner/name>`,-1),o[1]||=g(`. `,-1)]))]),_:1})}}});export{Q as default};
1
+ import{t as e}from"./AppShell-CSXDCV4x.js";import{An as t,Cn as n,Cr as r,Gr as i,Li as a,Mn as o,Pi as s,Sn as c,Tr as l,Xr as u,_r as d,bn as f,dr as p,hr as m,ji as h,kn as g,ln as _,o as v,rn as y,t as b,xi as x,xn as S,yi as C,yn as w}from"./browser-B6T5hjfR.js";import{t as T}from"./Tooltip-DEUPuCPW.js";import{_ as E,a as D,c as O,d as k,f as A,g as j,h as M,i as N,l as P,m as F,n as I,p as L,r as R,s as ee,u as te,y as z}from"./main-7SAujY_s.js";import{t as B}from"./eventSource-Bj_dZf6M.js";import{t as V}from"./wallClock-DmaC1sKA.js";import{n as ne,r as re}from"./indexFormat-B-pd4r7Y.js";import{A as ie,C as H,D as ae,S as oe,a as se,c as ce,i as le,l as ue,t as de,x as fe}from"./indexRow-DborJPFp.js";import"./format-BldUwl_R.js";import{t as U}from"./StatusDot-BgmkSV0S.js";var pe=[`data-slug`,`data-running`],me=[`open`],he={class:`row flex cursor-pointer list-none flex-wrap items-baseline gap-x-2.5 gap-y-1 rounded-md px-2 py-2 hover:bg-elevated [&::-webkit-details-marker]:hidden`},ge={class:`self-center`},_e={class:`font-mono text-[0.9375rem] font-medium text-highlighted`},ve={class:`text-sm text-toned`},ye={key:0,class:`running shrink-0 rounded border border-ok/25 bg-ok/8 px-1.5 font-mono text-[0.68rem] font-medium tabular-nums text-ok`},be=[`title`],xe={key:2,class:`basis-full pl-[1.9rem] text-xs text-warn`},Se={class:`fold pb-3 pl-[1.9rem] pr-2 pt-0.5`},Ce={key:0,class:`m-0 list-none divide-y divide-(--ui-border-muted) p-0`},we=[`data-run-id`,`data-thread`],Te={class:`pt-[0.3rem]`},Ee={class:`what min-w-0`},De={class:`flex min-w-0 items-baseline gap-2`},Oe=[`title`],ke={key:0,class:`who block truncate text-xs text-dimmed`},Ae=[`href`],je={key:1,class:`who block text-xs text-dimmed`},Me={class:`min-w-0 font-mono text-xs max-sm:col-span-2 max-sm:col-start-2 max-sm:row-start-2`},Ne=[`title`],Pe=[`href`],Fe={key:1},Ie={key:1,class:`font-sans text-dimmed`},Le={key:0,class:`facts-tree block truncate text-dimmed`},Re={class:`user`},ze={class:`deps`},Be=[`title`],Ve={class:`flex items-baseline gap-3 justify-self-end max-sm:col-start-3 max-sm:row-start-1`},He=[`title`],Ue={key:1,class:`py-1 text-xs text-dimmed`},We=[`data-idle`],Ge={key:1},W=o({__name:`ResidentRow`,props:{record:{},runs:{},now:{},open:{type:Boolean}},setup(e){let o=e,p=x(o.open===!0);i(()=>o.open,e=>{e&&(p.value=!0)});function m(e){p.value=e.target.open}let v=w(()=>P(o.record)),b=w(()=>v.value||F(o.record.resource)||`?`),C=w(()=>O(o.record)),T=w(()=>te(C.value.state)),A=w(()=>I.test(v.value)?`/residents/${v.value}`:null),L=w(()=>I.test(v.value)?`https://github.com/${v.value}`:void 0),R=e=>L.value&&/^[0-9a-f]{7,40}$/.test(e)?`${L.value}/commit/${e}`:void 0,z=w(()=>F(o.record.defaultRef)||`?`),B=w(()=>F(C.value.sha).slice(0,8)),V=w(()=>F(C.value.lastRefreshAt)),W=e=>{let t=e?Date.parse(e):NaN;return Number.isFinite(t)?ne(t,o.now):e||`—`},G=w(()=>V.value?W(V.value):``),K=w(()=>ee(o.record)),q=w(()=>K.value?j(K.value):``),J=w(()=>{let e=K.value;if(!e)return null;let t=typeof o.record.diskBudgetMb==`number`?o.record.diskBudgetMb:void 0;return D(e,t)}),Y=w(()=>[`ref ${z.value}`,B.value,G.value?`refreshed ${G.value}`:``,q.value?`disk ${q.value}`:``].filter(Boolean).join(` · `)),X=w(()=>[V.value?`refreshed ${V.value}`:``,K.value?.at?`disk measured ${K.value.at}`:``].filter(Boolean).join(` · `)),Z=w(()=>{let e=K.value,t=J.value;if(!e||!t)return``;let n=t.room.hardlink===null?`room not projected (checkout not measured)`:`room for ${t.room.hardlink} more ${t.room.hardlink===1?`tree`:`trees`}`;return[`${E(t.freeKiB)} free${t.capped?` under the ${E(t.capacityKiB)} cap`:``}`,n,`measured ${W(e.at)}`].join(` · `)}),Q=w(()=>k(o.record)),$=w(()=>{let e=o.runs.map(e=>{let t=re(e.label||H(e.id)),n=N(Q.value,e.threadKey),r=ie(e);return{key:`run:${e.id}`,run:e,agent:t.agent,text:t.snippet??t.scope,who:r.identity,surface:le[r.kind]??r.kind,threadUrl:oe(e),href:fe(e),elapsed:ue(e,o.now),binding:n,treeKiB:n?M(K.value,n.threadKey):null}}),t=new Set(o.runs.map(e=>e.threadKey));for(let n of Q.value)n.evicted||t.has(n.threadKey)||e.push({key:`idle:${n.threadKey}`,text:`idle`,who:``,surface:``,threadUrl:``,href:``,elapsed:``,binding:n,treeKiB:M(K.value,n.threadKey)});return e}),Ke=w(()=>$.value.filter(e=>!e.run).length);return(i,o)=>{let x=l(`RouterLink`);return d(),n(`li`,{class:`resident border-b border-muted first:border-t`,"data-slug":v.value,"data-running":e.runs.length},[f(`details`,{class:`group/fold`,open:p.value,onToggle:m},[f(`summary`,he,[o[2]||=f(`span`,{class:`chev w-3 select-none self-center text-xs text-dimmed transition-transform group-open/fold:rotate-90 motion-reduce:transition-none`,"aria-hidden":`true`},`❯`,-1),f(`span`,ge,[t(U,{tone:T.value,label:C.value.state,tip:C.value.state},null,8,[`tone`,`label`,`tip`])]),f(`span`,_e,a(b.value),1),f(`span`,ve,a(C.value.state),1),e.runs.length>0?(d(),n(`span`,ye,a(e.runs.length)+` running`,1)):c(``,!0),f(`span`,{class:`facts font-mono text-xs text-muted max-sm:basis-full max-sm:pl-[1.9rem] sm:ml-2`,title:X.value||void 0},a(Y.value),9,be),A.value?(d(),S(x,{key:1,class:`detail ml-auto shrink-0 text-xs text-muted no-underline hover:text-highlighted hover:underline`,to:A.value,onClick:o[0]||=y(()=>{},[`stop`])},{default:u(()=>[...o[1]||=[g(`detail ↗`,-1)]]),_:1},8,[`to`])):c(``,!0),C.value.reason?(d(),n(`span`,xe,a(C.value.reason),1)):c(``,!0)]),f(`div`,Se,[$.value.length>0?(d(),n(`ul`,Ce,[(d(!0),n(_,null,r($.value,t=>(d(),n(`li`,{key:t.key,class:s([`grid grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-x-3 gap-y-1 py-2 sm:grid-cols-[auto_minmax(0,1fr)_minmax(14rem,22rem)_auto]`,t.run?`run`:`idle`]),"data-run-id":t.run?.id,"data-thread":t.run?void 0:t.binding?.threadKey},[f(`span`,Te,[t.run?(d(),S(U,{key:0,tone:`green`,label:h(ae)(t.run),tip:h(ce)(t.run),pulse:``},null,8,[`label`,`tip`])):(d(),S(U,{key:1,tone:`grey`,label:`idle`,tip:`no run is using this tree`}))]),f(`span`,Ee,[f(`span`,De,[t.agent?(d(),n(`span`,{key:0,class:s([`agent shrink-0 rounded border px-1.5 font-mono text-[0.65rem] font-medium uppercase tracking-wider`,h(de)[h(se)(t.agent)]])},a(t.agent),3)):c(``,!0),f(`span`,{class:s([`text min-w-0 truncate text-[0.8125rem]`,t.run?`text-highlighted`:`text-dimmed`]),title:t.run?t.text:void 0},a(t.text),11,Oe)]),t.run?(d(),n(`span`,ke,[t.who?(d(),n(_,{key:0},[g(`by `+a(t.who),1)],64)):c(``,!0),t.who&&(t.threadUrl||t.surface)?(d(),n(_,{key:1},[g(a(` · `))],64)):c(``,!0),t.threadUrl?(d(),n(`a`,{key:2,class:`text-muted no-underline hover:text-highlighted hover:underline`,href:t.threadUrl,target:`_blank`,rel:`noopener noreferrer`},a(t.surface)+` thread ↗`,9,Ae)):t.surface?(d(),n(_,{key:3},[g(`via `+a(t.surface),1)],64)):c(``,!0)])):t.binding?(d(),n(`span`,je,`last used `+a(W(t.binding.lastAttachAt)),1)):c(``,!0)]),f(`span`,Me,[f(`span`,{class:`tree block truncate text-toned`,title:t.binding&&t.binding.ref||void 0},[t.binding?(d(),n(_,{key:0},[g(a(t.binding.ref||`?`),1),t.binding.sha?(d(),n(_,{key:0},[o[3]||=g(a(` `),-1),o[4]||=f(`span`,{class:`text-dimmed`},`@`,-1),o[5]||=g(a(` `)+` `,-1),R(t.binding.sha)?(d(),n(`a`,{key:0,class:`text-highlighted no-underline hover:underline`,href:R(t.binding.sha)},a(t.binding.sha.slice(0,8)),9,Pe)):(d(),n(`span`,Fe,a(t.binding.sha.slice(0,8)),1))],64)):c(``,!0)],64)):(d(),n(`span`,Ie,`no worktree bound yet`))],8,Ne),t.binding?(d(),n(`span`,Le,[f(`span`,Re,a(t.binding.user||`—`),1),o[6]||=g(` `+a(` · `),-1),f(`span`,ze,a(t.binding.deps||`—`),1),o[7]||=g(` `+a(` · `),-1),f(`span`,{class:s([`size`,t.treeKiB===null?``:`text-muted`]),title:t.treeKiB===null?`size not measured yet`:`on disk`},a(t.treeKiB===null?`—`:h(E)(t.treeKiB)),11,Be)])):c(``,!0)]),f(`span`,Ve,[t.run?(d(),n(`span`,{key:0,class:`elapsed whitespace-nowrap font-mono text-xs tabular-nums text-ok`,title:`running for · started ${h(ne)(t.run.startedAt,e.now)}`},a(t.elapsed),9,He)):c(``,!0),t.run?(d(),S(x,{key:1,class:`open text-xs text-muted no-underline hover:text-highlighted hover:underline`,to:t.href,"aria-label":`open run ${t.run.label||h(H)(t.run.id)}`},{default:u(()=>[...o[8]||=[g(`open ↗`,-1)]]),_:1},8,[`to`,`aria-label`])):c(``,!0)])],10,we))),128))])):(d(),n(`p`,Ue,`nothing on this resident — no run, no worktree`)),f(`p`,{class:`disk mt-2 font-mono text-xs text-dimmed`,"data-idle":Ke.value},[Z.value?(d(),n(_,{key:0},[g(a(Z.value),1)],64)):(d(),n(`span`,Ge,`disk not measured yet`))],8,We)])],40,me)],8,pe)}}}),G={class:`conn flex items-center gap-1.5`},K={id:`state`,class:`text-xs text-muted`},q={class:`mb-2 text-xs text-muted`},J={id:`running`,class:`font-mono tabular-nums`},Y={id:`residents`,class:`m-0 list-none p-0`},X={key:1,class:`px-2 py-1.5 text-muted`},Z=`Resident repos`,Q=o({__name:`ResidentsIndexPage`,setup(o){let s=v(`residents`),c=C({cap:s?.cap,count:s?.count,residents:s?.residents??[],runs:new Map((s?.runs??[]).map(e=>[e.id,e]))}),l=V(s?.now),y=x({tone:`amber`,text:`connecting…`}),E=typeof window<`u`?new URLSearchParams(window.location.search).get(`open`):null,D=w(()=>c.residents.map((e,t)=>{let n=e,r=P(n);return{key:`${r||`?`}-${t}`,record:n,slug:r,runs:L(c.runs.values(),r)}})),O=w(()=>F(c.cap)||`?`),k=w(()=>F(c.count)||String(D.value.length)),j=w(()=>D.value.reduce((e,t)=>e+t.runs.length,0));i([j,()=>c.residents],([e,t])=>{b.setTitle((e>0?`(${e}) `:``)+Z),b.setFavicon(z[A(t)])},{immediate:!0});let M=B(),N=null;return p(()=>{N=M(`/residents?stream=1`);let e=!1;N.onopen=()=>{if(e){b.reload();return}e=!0,y.value={tone:`green`,text:`live`}},N.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}R(c,t)},N.onerror=()=>{N&&N.readyState===2?y.value={tone:`red`,text:`disconnected`}:y.value={tone:`amber`,text:`connecting…`}}}),m(()=>{N?.close()}),(i,o)=>{let s=T;return d(),S(e,{title:Z,nav:`residents`},{status:u(()=>[t(s,{text:`runs arrive from the registry feed; the listing is re-read when a run attaches or ends`},{default:u(()=>[f(`span`,G,[t(U,{tone:y.value.tone,label:y.value.text},null,8,[`tone`,`label`]),f(`span`,K,a(y.value.text),1)])]),_:1})]),default:u(()=>[D.value.length>0?(d(),n(_,{key:0},[f(`p`,q,[g(a(`${k.value}/${O.value} resident slots in use · `),1),f(`span`,J,a(j.value)+` running`,1)]),f(`ul`,Y,[(d(!0),n(_,null,r(D.value,e=>(d(),S(W,{key:e.key,record:e.record,runs:e.runs,now:h(l),open:h(E)!==null&&h(E)===e.slug},null,8,[`record`,`runs`,`now`,`open`]))),128))])],64)):(d(),n(`p`,X,[g(` No repos onboarded (0/`+a(O.value)+`). Onboard one from chat: `,1),o[0]||=f(`code`,{class:`rounded bg-elevated px-1.5 py-0.5`},`repo onboard <owner/name>`,-1),o[1]||=g(`. `,-1)]))]),_:1})}}});export{Q as default};