@coreplane/switchboard 1.266.0 → 1.266.1
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.
- package/dist/assets/deploy/cloudflare/worker.ts +7 -1
- package/dist/assets/deploy/cloudflare/wrangler.template.jsonc +5 -1
- package/dist/assets/deploy/cloudflare-memory/worker.ts +48 -3
- package/dist/assets/deploy/cloudflare-resident/legacyCredentials.ts +43 -0
- package/dist/assets/deploy/cloudflare-resident/worker.ts +102 -141
- package/dist/assets/package-lock.json +3 -3
- package/dist/assets/package.json +1 -1
- package/dist/assets/source.json +3 -3
- package/dist/assets/src/channels/githubDoorPaths.ts +36 -0
- package/dist/assets/src/core/coordinator/contract.ts +2 -0
- package/dist/assets/src/core/refusal.ts +1 -0
- package/dist/assets/src/core/runEvents.ts +1 -0
- package/dist/assets/src/core/runRecord.ts +41 -0
- package/dist/assets/src/execution/residentReadonly.ts +9 -8
- package/dist/assets/src/execution/residentSteps.ts +2 -1
- package/dist/assets/src/execution/seedPlan.ts +2 -2
- package/dist/assets/web/dist/.vite/manifest.json +49 -49
- package/dist/assets/web/dist/assets/{HomePage-B2Y-Fa9V.js → HomePage-BfpIrKDX.js} +1 -1
- package/dist/assets/web/dist/assets/{PendingTurnRow-DIC86uWA.js → PendingTurnRow-C6hroa00.js} +1 -1
- package/dist/assets/web/dist/assets/{PlanePage-CfrbMh8t.js → PlanePage-C2Cb1mkT.js} +1 -1
- package/dist/assets/web/dist/assets/{ResidentDetailPage-DRNwx2--.js → ResidentDetailPage-Bd9_Q87l.js} +1 -1
- package/dist/assets/web/dist/assets/{ResidentsIndexPage-EHKMtX69.js → ResidentsIndexPage-C8eS7hxp.js} +1 -1
- package/dist/assets/web/dist/assets/{RunFoldRow-CAdpX4Gn.js → RunFoldRow-DrfFauYJ.js} +1 -1
- package/dist/assets/web/dist/assets/{RunRoutePage-DppLhu79.js → RunRoutePage-B_eXfNAF.js} +3 -3
- package/dist/assets/web/dist/assets/{RunsIndexPage-C7hx5O1X.js → RunsIndexPage-BpQu36Dm.js} +1 -1
- package/dist/assets/web/dist/assets/{ScheduledPage-Dk2kMnYT.js → ScheduledPage-DGHcjcSt.js} +1 -1
- package/dist/assets/web/dist/assets/{SettingsPage-DAf6R383.js → SettingsPage-IfQ71QjN.js} +1 -1
- package/dist/assets/web/dist/assets/{SilentTurn-CPED_XCV.js → SilentTurn-D9ON15a8.js} +1 -1
- package/dist/assets/web/dist/assets/{StatusDot-IkfsHGXg.js → StatusDot-DyFjGg4V.js} +1 -1
- package/dist/assets/web/dist/assets/{Tooltip-CmQVfAl2.js → Tooltip-BvPkV4kZ.js} +1 -1
- package/dist/assets/web/dist/assets/{UnitRoutePage-BjfuZVWr.js → UnitRoutePage-BNe3nBIG.js} +1 -1
- package/dist/assets/web/dist/assets/{dist-Dg6HTzpQ.js → dist-v3Py3_QR.js} +1 -1
- package/dist/assets/web/dist/assets/{main-Bk1L-bNk.js → main-ks3kBojV.js} +2 -2
- package/dist/assets/web/dist/assets/{sseReplay-DGRDRLua.js → sseReplay-DuALaBPq.js} +1 -1
- package/dist/cli.js +1834 -641
- package/package.json +1 -1
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Mode is sticky per attach, not per thread: the binding records the mode
|
|
17
17
|
* the tree was last built for, and an attach in the OTHER mode recreates the
|
|
18
|
-
* tree (a
|
|
19
|
-
* writable
|
|
20
|
-
*
|
|
18
|
+
* tree (a mirror-origin tree must never be handed to a writable run, and a
|
|
19
|
+
* writable tree's door origin must never survive into a read-only run).
|
|
20
|
+
* Recreating is the simple safe option — the only
|
|
21
21
|
* state a tree carries between attaches is scratch files, and a mode switch
|
|
22
22
|
* on one thread is rare (a thread is normally one agent for its whole life). */
|
|
23
23
|
|
|
@@ -37,12 +37,13 @@ export interface ReadonlyAttachPlan {
|
|
|
37
37
|
/** True when the existing tree was built for the other mode and must be wiped
|
|
38
38
|
* before reuse — evaluated before the ordinary dirty/stale checks. */
|
|
39
39
|
modeSwitch: boolean;
|
|
40
|
-
/**
|
|
40
|
+
/** Legacy mode projection. The Worker uses the Git door for writable trees;
|
|
41
|
+
* neither mode writes an App token into a thread tree. */
|
|
41
42
|
credentialFile: boolean;
|
|
42
|
-
/**
|
|
43
|
-
*
|
|
43
|
+
/** Read-only mode requires cleanup; the Worker also scrubs writable trees
|
|
44
|
+
* before attaching the Git door. */
|
|
44
45
|
scrubCredentials: boolean;
|
|
45
|
-
/**
|
|
46
|
+
/** Legacy origin fallback; the Worker overrides writable origin with the door. */
|
|
46
47
|
originUrl: string;
|
|
47
48
|
}
|
|
48
49
|
|
|
@@ -51,7 +52,7 @@ export function planReadonlyAttach(input: {
|
|
|
51
52
|
/** The thread's existing binding, if any. `evicted` trees are gone from disk
|
|
52
53
|
* and are recreated anyway, so their recorded mode is irrelevant. */
|
|
53
54
|
prior?: { readonly?: boolean; evicted?: boolean };
|
|
54
|
-
/** `owner/name` of the repo — the
|
|
55
|
+
/** `owner/name` of the repo — used by the legacy origin fallback. */
|
|
55
56
|
slug: string;
|
|
56
57
|
/** The resident's bare mirror path — the read-only origin. Thread users are
|
|
57
58
|
* denied traversal into it (root:worker1 750), so fetch/push fail while
|
|
@@ -51,6 +51,8 @@ export const RESIDENT_STEP_LABELS = {
|
|
|
51
51
|
"worktree-chown": "setting the worktree owner",
|
|
52
52
|
"op-chown": "setting the op tree's owner",
|
|
53
53
|
"worktree-clean": "cleaning the worktree",
|
|
54
|
+
"thread-cred-file-scrub": "removing an old workspace credential",
|
|
55
|
+
"thread-cred-helper-scrub": "removing an old Git credential helper",
|
|
54
56
|
"clean-workspace": "cleaning the workspace",
|
|
55
57
|
"clean-before-restore": "cleaning before the restore",
|
|
56
58
|
"break-mirror": "removing the mirror's config (fault injection)",
|
|
@@ -64,7 +66,6 @@ export const RESIDENT_STEP_LABELS = {
|
|
|
64
66
|
"op-dir": "preparing a directory",
|
|
65
67
|
"ops-dir": "preparing a directory",
|
|
66
68
|
"stage-dir": "preparing a directory",
|
|
67
|
-
stat: "checking a file",
|
|
68
69
|
"boot-id": "reading the container's identity",
|
|
69
70
|
touch: "touching a marker",
|
|
70
71
|
nproc: "counting CPUs",
|
|
@@ -153,8 +153,8 @@ export function parseSeed(v: unknown): { ok: true; seed: SandboxSeed } | { ok: f
|
|
|
153
153
|
* 3. the deps view, when one was restored, replaces whatever `node_modules`
|
|
154
154
|
* the checkout carries (older snapshots still hold one);
|
|
155
155
|
* 4. the thread's ref is fetched from origin (the credential is the exec
|
|
156
|
-
*
|
|
157
|
-
*
|
|
156
|
+
* run bearer through the Git door and per-command env — never a token
|
|
157
|
+
* in this text) and checked out, at its resolved head when the
|
|
158
158
|
* fetch holds it, else at the fetched tip; without a thread ref the
|
|
159
159
|
* checkout stays on the snapshot's branch;
|
|
160
160
|
* 5. the head is printed last: the answer's `sha`. */
|
|
@@ -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-
|
|
31
|
+
"file": "assets/dist-v3Py3_QR.js",
|
|
32
32
|
"name": "dist",
|
|
33
33
|
"src": "../node_modules/@pierre/diffs/dist/index.js",
|
|
34
34
|
"isDynamicEntry": true,
|
|
@@ -2570,19 +2570,19 @@
|
|
|
2570
2570
|
"_RunsTabs-C7Ua3XX5.js"
|
|
2571
2571
|
]
|
|
2572
2572
|
},
|
|
2573
|
-
"_PendingTurnRow-
|
|
2574
|
-
"file": "assets/PendingTurnRow-
|
|
2573
|
+
"_PendingTurnRow-C6hroa00.js": {
|
|
2574
|
+
"file": "assets/PendingTurnRow-C6hroa00.js",
|
|
2575
2575
|
"name": "PendingTurnRow",
|
|
2576
2576
|
"imports": [
|
|
2577
2577
|
"_AppShell-DPJVhUGP.js",
|
|
2578
2578
|
"_browser-CCImen5O.js",
|
|
2579
2579
|
"_indexRow-BsWcHHVh.js",
|
|
2580
2580
|
"_format-BldUwl_R.js",
|
|
2581
|
-
"_sseReplay-
|
|
2581
|
+
"_sseReplay-DuALaBPq.js"
|
|
2582
2582
|
]
|
|
2583
2583
|
},
|
|
2584
|
-
"_RunFoldRow-
|
|
2585
|
-
"file": "assets/RunFoldRow-
|
|
2584
|
+
"_RunFoldRow-DrfFauYJ.js": {
|
|
2585
|
+
"file": "assets/RunFoldRow-DrfFauYJ.js",
|
|
2586
2586
|
"name": "RunFoldRow",
|
|
2587
2587
|
"imports": [
|
|
2588
2588
|
"_browser-CCImen5O.js",
|
|
@@ -2590,9 +2590,9 @@
|
|
|
2590
2590
|
"_indexRow-BsWcHHVh.js",
|
|
2591
2591
|
"_format-BldUwl_R.js",
|
|
2592
2592
|
"_SlackMark-DB0MGiF5.js",
|
|
2593
|
-
"_sseReplay-
|
|
2593
|
+
"_sseReplay-DuALaBPq.js",
|
|
2594
2594
|
"_durationTone-CVpX_yIk.js",
|
|
2595
|
-
"_StatusDot-
|
|
2595
|
+
"_StatusDot-DyFjGg4V.js"
|
|
2596
2596
|
]
|
|
2597
2597
|
},
|
|
2598
2598
|
"_RunsTabs-C7Ua3XX5.js": {
|
|
@@ -2611,17 +2611,17 @@
|
|
|
2611
2611
|
"_browser-CCImen5O.js"
|
|
2612
2612
|
]
|
|
2613
2613
|
},
|
|
2614
|
-
"_SilentTurn-
|
|
2615
|
-
"file": "assets/SilentTurn-
|
|
2614
|
+
"_SilentTurn-D9ON15a8.js": {
|
|
2615
|
+
"file": "assets/SilentTurn-D9ON15a8.js",
|
|
2616
2616
|
"name": "SilentTurn",
|
|
2617
2617
|
"imports": [
|
|
2618
2618
|
"_browser-CCImen5O.js",
|
|
2619
|
-
"_PendingTurnRow-
|
|
2619
|
+
"_PendingTurnRow-C6hroa00.js",
|
|
2620
2620
|
"_eventSource-Cv0AFlMi.js",
|
|
2621
2621
|
"_indexFormat-B-pd4r7Y.js",
|
|
2622
2622
|
"_indexRow-BsWcHHVh.js",
|
|
2623
2623
|
"_format-BldUwl_R.js",
|
|
2624
|
-
"_sseReplay-
|
|
2624
|
+
"_sseReplay-DuALaBPq.js",
|
|
2625
2625
|
"_durationTone-CVpX_yIk.js"
|
|
2626
2626
|
]
|
|
2627
2627
|
},
|
|
@@ -2632,16 +2632,16 @@
|
|
|
2632
2632
|
"_browser-CCImen5O.js"
|
|
2633
2633
|
]
|
|
2634
2634
|
},
|
|
2635
|
-
"_StatusDot-
|
|
2636
|
-
"file": "assets/StatusDot-
|
|
2635
|
+
"_StatusDot-DyFjGg4V.js": {
|
|
2636
|
+
"file": "assets/StatusDot-DyFjGg4V.js",
|
|
2637
2637
|
"name": "StatusDot",
|
|
2638
2638
|
"imports": [
|
|
2639
2639
|
"_browser-CCImen5O.js",
|
|
2640
|
-
"_Tooltip-
|
|
2640
|
+
"_Tooltip-BvPkV4kZ.js"
|
|
2641
2641
|
]
|
|
2642
2642
|
},
|
|
2643
|
-
"_Tooltip-
|
|
2644
|
-
"file": "assets/Tooltip-
|
|
2643
|
+
"_Tooltip-BvPkV4kZ.js": {
|
|
2644
|
+
"file": "assets/Tooltip-BvPkV4kZ.js",
|
|
2645
2645
|
"name": "Tooltip",
|
|
2646
2646
|
"imports": [
|
|
2647
2647
|
"_AppShell-DPJVhUGP.js",
|
|
@@ -2832,8 +2832,8 @@
|
|
|
2832
2832
|
"_AppShell-DPJVhUGP.js"
|
|
2833
2833
|
]
|
|
2834
2834
|
},
|
|
2835
|
-
"_sseReplay-
|
|
2836
|
-
"file": "assets/sseReplay-
|
|
2835
|
+
"_sseReplay-DuALaBPq.js": {
|
|
2836
|
+
"file": "assets/sseReplay-DuALaBPq.js",
|
|
2837
2837
|
"name": "sseReplay",
|
|
2838
2838
|
"imports": [
|
|
2839
2839
|
"_browser-CCImen5O.js",
|
|
@@ -2888,7 +2888,7 @@
|
|
|
2888
2888
|
]
|
|
2889
2889
|
},
|
|
2890
2890
|
"src/main.ts": {
|
|
2891
|
-
"file": "assets/main-
|
|
2891
|
+
"file": "assets/main-ks3kBojV.js",
|
|
2892
2892
|
"name": "main",
|
|
2893
2893
|
"src": "src/main.ts",
|
|
2894
2894
|
"isEntry": true,
|
|
@@ -2951,24 +2951,24 @@
|
|
|
2951
2951
|
]
|
|
2952
2952
|
},
|
|
2953
2953
|
"src/pages/HomePage.vue": {
|
|
2954
|
-
"file": "assets/HomePage-
|
|
2954
|
+
"file": "assets/HomePage-BfpIrKDX.js",
|
|
2955
2955
|
"name": "HomePage",
|
|
2956
2956
|
"src": "src/pages/HomePage.vue",
|
|
2957
2957
|
"isDynamicEntry": true,
|
|
2958
2958
|
"imports": [
|
|
2959
2959
|
"_AppShell-DPJVhUGP.js",
|
|
2960
2960
|
"_browser-CCImen5O.js",
|
|
2961
|
-
"_Tooltip-
|
|
2962
|
-
"_PendingTurnRow-
|
|
2961
|
+
"_Tooltip-BvPkV4kZ.js",
|
|
2962
|
+
"_PendingTurnRow-C6hroa00.js",
|
|
2963
2963
|
"src/main.ts",
|
|
2964
2964
|
"_eventSource-Cv0AFlMi.js",
|
|
2965
2965
|
"_wallClock-x0hjr0J_.js",
|
|
2966
2966
|
"_indexFormat-B-pd4r7Y.js",
|
|
2967
2967
|
"_indexRow-BsWcHHVh.js",
|
|
2968
2968
|
"_format-BldUwl_R.js",
|
|
2969
|
-
"_SilentTurn-
|
|
2969
|
+
"_SilentTurn-D9ON15a8.js",
|
|
2970
2970
|
"_SlackMark-DB0MGiF5.js",
|
|
2971
|
-
"_sseReplay-
|
|
2971
|
+
"_sseReplay-DuALaBPq.js"
|
|
2972
2972
|
]
|
|
2973
2973
|
},
|
|
2974
2974
|
"src/pages/MetricsPage.vue": {
|
|
@@ -2983,23 +2983,23 @@
|
|
|
2983
2983
|
]
|
|
2984
2984
|
},
|
|
2985
2985
|
"src/pages/PlanePage.vue": {
|
|
2986
|
-
"file": "assets/PlanePage-
|
|
2986
|
+
"file": "assets/PlanePage-C2Cb1mkT.js",
|
|
2987
2987
|
"name": "PlanePage",
|
|
2988
2988
|
"src": "src/pages/PlanePage.vue",
|
|
2989
2989
|
"isDynamicEntry": true,
|
|
2990
2990
|
"imports": [
|
|
2991
2991
|
"_AppShell-DPJVhUGP.js",
|
|
2992
2992
|
"_browser-CCImen5O.js",
|
|
2993
|
-
"_PendingTurnRow-
|
|
2993
|
+
"_PendingTurnRow-C6hroa00.js",
|
|
2994
2994
|
"_wallClock-x0hjr0J_.js",
|
|
2995
2995
|
"_indexRow-BsWcHHVh.js",
|
|
2996
2996
|
"_format-BldUwl_R.js",
|
|
2997
|
-
"_SilentTurn-
|
|
2998
|
-
"_sseReplay-
|
|
2997
|
+
"_SilentTurn-D9ON15a8.js",
|
|
2998
|
+
"_sseReplay-DuALaBPq.js"
|
|
2999
2999
|
]
|
|
3000
3000
|
},
|
|
3001
3001
|
"src/pages/ResidentDetailPage.vue": {
|
|
3002
|
-
"file": "assets/ResidentDetailPage-
|
|
3002
|
+
"file": "assets/ResidentDetailPage-Bd9_Q87l.js",
|
|
3003
3003
|
"name": "ResidentDetailPage",
|
|
3004
3004
|
"src": "src/pages/ResidentDetailPage.vue",
|
|
3005
3005
|
"isDynamicEntry": true,
|
|
@@ -3007,46 +3007,46 @@
|
|
|
3007
3007
|
"_AppShell-DPJVhUGP.js",
|
|
3008
3008
|
"_browser-CCImen5O.js",
|
|
3009
3009
|
"src/main.ts",
|
|
3010
|
-
"_StatusDot-
|
|
3010
|
+
"_StatusDot-DyFjGg4V.js"
|
|
3011
3011
|
]
|
|
3012
3012
|
},
|
|
3013
3013
|
"src/pages/ResidentsIndexPage.vue": {
|
|
3014
|
-
"file": "assets/ResidentsIndexPage-
|
|
3014
|
+
"file": "assets/ResidentsIndexPage-C8eS7hxp.js",
|
|
3015
3015
|
"name": "ResidentsIndexPage",
|
|
3016
3016
|
"src": "src/pages/ResidentsIndexPage.vue",
|
|
3017
3017
|
"isDynamicEntry": true,
|
|
3018
3018
|
"imports": [
|
|
3019
3019
|
"_AppShell-DPJVhUGP.js",
|
|
3020
3020
|
"_browser-CCImen5O.js",
|
|
3021
|
-
"_Tooltip-
|
|
3021
|
+
"_Tooltip-BvPkV4kZ.js",
|
|
3022
3022
|
"src/main.ts",
|
|
3023
3023
|
"_eventSource-Cv0AFlMi.js",
|
|
3024
3024
|
"_wallClock-x0hjr0J_.js",
|
|
3025
3025
|
"_indexFormat-B-pd4r7Y.js",
|
|
3026
3026
|
"_indexRow-BsWcHHVh.js",
|
|
3027
3027
|
"_format-BldUwl_R.js",
|
|
3028
|
-
"_StatusDot-
|
|
3028
|
+
"_StatusDot-DyFjGg4V.js"
|
|
3029
3029
|
]
|
|
3030
3030
|
},
|
|
3031
3031
|
"src/pages/RunRoutePage.vue": {
|
|
3032
|
-
"file": "assets/RunRoutePage-
|
|
3032
|
+
"file": "assets/RunRoutePage-B_eXfNAF.js",
|
|
3033
3033
|
"name": "RunRoutePage",
|
|
3034
3034
|
"src": "src/pages/RunRoutePage.vue",
|
|
3035
3035
|
"isDynamicEntry": true,
|
|
3036
3036
|
"imports": [
|
|
3037
3037
|
"_AppShell-DPJVhUGP.js",
|
|
3038
3038
|
"_browser-CCImen5O.js",
|
|
3039
|
-
"_Tooltip-
|
|
3040
|
-
"_PendingTurnRow-
|
|
3039
|
+
"_Tooltip-BvPkV4kZ.js",
|
|
3040
|
+
"_PendingTurnRow-C6hroa00.js",
|
|
3041
3041
|
"src/main.ts",
|
|
3042
3042
|
"_eventSource-Cv0AFlMi.js",
|
|
3043
3043
|
"_wallClock-x0hjr0J_.js",
|
|
3044
3044
|
"_indexFormat-B-pd4r7Y.js",
|
|
3045
3045
|
"_indexRow-BsWcHHVh.js",
|
|
3046
3046
|
"_format-BldUwl_R.js",
|
|
3047
|
-
"_RunFoldRow-
|
|
3047
|
+
"_RunFoldRow-DrfFauYJ.js",
|
|
3048
3048
|
"_SlackMark-DB0MGiF5.js",
|
|
3049
|
-
"_sseReplay-
|
|
3049
|
+
"_sseReplay-DuALaBPq.js",
|
|
3050
3050
|
"_durationTone-CVpX_yIk.js",
|
|
3051
3051
|
"_NotFoundPage-CDjMfCcj.js"
|
|
3052
3052
|
],
|
|
@@ -3058,14 +3058,14 @@
|
|
|
3058
3058
|
]
|
|
3059
3059
|
},
|
|
3060
3060
|
"src/pages/RunsIndexPage.vue": {
|
|
3061
|
-
"file": "assets/RunsIndexPage-
|
|
3061
|
+
"file": "assets/RunsIndexPage-BpQu36Dm.js",
|
|
3062
3062
|
"name": "RunsIndexPage",
|
|
3063
3063
|
"src": "src/pages/RunsIndexPage.vue",
|
|
3064
3064
|
"isDynamicEntry": true,
|
|
3065
3065
|
"imports": [
|
|
3066
3066
|
"_AppShell-DPJVhUGP.js",
|
|
3067
3067
|
"_browser-CCImen5O.js",
|
|
3068
|
-
"_Tooltip-
|
|
3068
|
+
"_Tooltip-BvPkV4kZ.js",
|
|
3069
3069
|
"_InputMenu-BRV35UWP.js",
|
|
3070
3070
|
"src/main.ts",
|
|
3071
3071
|
"_eventSource-Cv0AFlMi.js",
|
|
@@ -3076,18 +3076,18 @@
|
|
|
3076
3076
|
"_SlackMark-DB0MGiF5.js",
|
|
3077
3077
|
"_durationTone-CVpX_yIk.js",
|
|
3078
3078
|
"_RunsTabs-C7Ua3XX5.js",
|
|
3079
|
-
"_StatusDot-
|
|
3079
|
+
"_StatusDot-DyFjGg4V.js"
|
|
3080
3080
|
]
|
|
3081
3081
|
},
|
|
3082
3082
|
"src/pages/ScheduledPage.vue": {
|
|
3083
|
-
"file": "assets/ScheduledPage-
|
|
3083
|
+
"file": "assets/ScheduledPage-DGHcjcSt.js",
|
|
3084
3084
|
"name": "ScheduledPage",
|
|
3085
3085
|
"src": "src/pages/ScheduledPage.vue",
|
|
3086
3086
|
"isDynamicEntry": true,
|
|
3087
3087
|
"imports": [
|
|
3088
3088
|
"_AppShell-DPJVhUGP.js",
|
|
3089
3089
|
"_browser-CCImen5O.js",
|
|
3090
|
-
"_Tooltip-
|
|
3090
|
+
"_Tooltip-BvPkV4kZ.js",
|
|
3091
3091
|
"_wallClock-x0hjr0J_.js",
|
|
3092
3092
|
"_indexFormat-B-pd4r7Y.js",
|
|
3093
3093
|
"_format-BldUwl_R.js",
|
|
@@ -3095,7 +3095,7 @@
|
|
|
3095
3095
|
]
|
|
3096
3096
|
},
|
|
3097
3097
|
"src/pages/SettingsPage.vue": {
|
|
3098
|
-
"file": "assets/SettingsPage-
|
|
3098
|
+
"file": "assets/SettingsPage-IfQ71QjN.js",
|
|
3099
3099
|
"name": "SettingsPage",
|
|
3100
3100
|
"src": "src/pages/SettingsPage.vue",
|
|
3101
3101
|
"isDynamicEntry": true,
|
|
@@ -3103,14 +3103,14 @@
|
|
|
3103
3103
|
"_AppShell-DPJVhUGP.js",
|
|
3104
3104
|
"_browser-CCImen5O.js",
|
|
3105
3105
|
"_SettingSelect-CEeA4iuC.js",
|
|
3106
|
-
"_Tooltip-
|
|
3106
|
+
"_Tooltip-BvPkV4kZ.js",
|
|
3107
3107
|
"_InputMenu-BRV35UWP.js",
|
|
3108
3108
|
"_settingsApi-Dm6eaQcu.js",
|
|
3109
3109
|
"_indexRow-BsWcHHVh.js"
|
|
3110
3110
|
]
|
|
3111
3111
|
},
|
|
3112
3112
|
"src/pages/UnitRoutePage.vue": {
|
|
3113
|
-
"file": "assets/UnitRoutePage-
|
|
3113
|
+
"file": "assets/UnitRoutePage-BNe3nBIG.js",
|
|
3114
3114
|
"name": "UnitRoutePage",
|
|
3115
3115
|
"src": "src/pages/UnitRoutePage.vue",
|
|
3116
3116
|
"isDynamicEntry": true,
|
|
@@ -3122,9 +3122,9 @@
|
|
|
3122
3122
|
"_indexFormat-B-pd4r7Y.js",
|
|
3123
3123
|
"_indexRow-BsWcHHVh.js",
|
|
3124
3124
|
"_format-BldUwl_R.js",
|
|
3125
|
-
"_RunFoldRow-
|
|
3125
|
+
"_RunFoldRow-DrfFauYJ.js",
|
|
3126
3126
|
"_SlackMark-DB0MGiF5.js",
|
|
3127
|
-
"_sseReplay-
|
|
3127
|
+
"_sseReplay-DuALaBPq.js",
|
|
3128
3128
|
"_NotFoundPage-CDjMfCcj.js"
|
|
3129
3129
|
]
|
|
3130
3130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,r as t,t as n}from"./AppShell-DPJVhUGP.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-CCImen5O.js";import{t as O}from"./Tooltip-CmQVfAl2.js";import{i as ue}from"./PendingTurnRow-DIC86uWA.js";import{b as de,x as fe}from"./main-Bk1L-bNk.js";import{t as pe}from"./eventSource-Cv0AFlMi.js";import{t as me}from"./wallClock-x0hjr0J_.js";import{r as he}from"./indexFormat-B-pd4r7Y.js";import{K as ge,i as _e}from"./indexRow-BsWcHHVh.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-CPED_XCV.js";import{t as F}from"./SlackMark-DB0MGiF5.js";import{T as Pe}from"./sseReplay-DGRDRLua.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 holds the runs its messages start. `,-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
|
+
import{i as e,r as t,t as n}from"./AppShell-DPJVhUGP.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-CCImen5O.js";import{t as O}from"./Tooltip-BvPkV4kZ.js";import{i as ue}from"./PendingTurnRow-C6hroa00.js";import{b as de,x as fe}from"./main-ks3kBojV.js";import{t as pe}from"./eventSource-Cv0AFlMi.js";import{t as me}from"./wallClock-x0hjr0J_.js";import{r as he}from"./indexFormat-B-pd4r7Y.js";import{K as ge,i as _e}from"./indexRow-BsWcHHVh.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-D9ON15a8.js";import{t as F}from"./SlackMark-DB0MGiF5.js";import{T as Pe}from"./sseReplay-DuALaBPq.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 holds the runs its messages start. `,-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};
|
package/dist/assets/web/dist/assets/{PendingTurnRow-DIC86uWA.js → PendingTurnRow-C6hroa00.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,D as t,O as n,P as r,T as i,w as a}from"./AppShell-DPJVhUGP.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-CCImen5O.js";import{K as G}from"./indexRow-BsWcHHVh.js";import"./format-BldUwl_R.js";import{d as K,f as q,m as se,p as ce}from"./sseReplay-DGRDRLua.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-DPJVhUGP.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-CCImen5O.js";import{K as G}from"./indexRow-BsWcHHVh.js";import"./format-BldUwl_R.js";import{d as K,f as q,m as se,p as ce}from"./sseReplay-DuALaBPq.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 +1 @@
|
|
|
1
|
-
import{t as e}from"./AppShell-DPJVhUGP.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-CCImen5O.js";import{i as E}from"./PendingTurnRow-DIC86uWA.js";import{t as D}from"./wallClock-x0hjr0J_.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-BsWcHHVh.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-CPED_XCV.js";import{T as U}from"./sseReplay-DGRDRLua.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
|
+
import{t as e}from"./AppShell-DPJVhUGP.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-CCImen5O.js";import{i as E}from"./PendingTurnRow-C6hroa00.js";import{t as D}from"./wallClock-x0hjr0J_.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-BsWcHHVh.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-D9ON15a8.js";import{T as U}from"./sseReplay-DuALaBPq.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};
|