@burdenoff/microfe-vibecontrols 2026.602.7 → 2026.602.9
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/components/assistant/AssistantChatArea.js +3 -2
- package/dist/components/assistant/AssistantChatArea.js.map +1 -1
- package/dist/generated/wspace-operations.js +1 -0
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/pages/SessionDetailsPage.js +401 -401
- package/dist/pages/SessionDetailsPage.js.map +1 -1
- package/dist/services/assistantApi.js +8 -7
- package/dist/services/assistantApi.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,13 +17,13 @@ import { ConnectionLogPanel as Se } from "../components/agents/ConnectionLogPane
|
|
|
17
17
|
import { SharedTerminalPanel as Ce } from "../components/sessions/SharedTerminalPanel.js";
|
|
18
18
|
import { useCallback as u, useEffect as d, useRef as f, useState as p } from "react";
|
|
19
19
|
import { useI18n as we } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
20
|
-
import { AlertCircle as
|
|
21
|
-
import { useParams as
|
|
22
|
-
import { usePermissions as
|
|
23
|
-
import { Fragment as
|
|
24
|
-
import { MotionItem as
|
|
20
|
+
import { AlertCircle as m, ArrowLeft as h, Check as Te, ChevronDown as Ee, ChevronUp as De, Clock as Oe, Code as ke, ExternalLink as Ae, Folder as je, Hash as Me, Loader2 as g, Maximize2 as Ne, Minimize2 as Pe, Pencil as Fe, Play as Ie, RefreshCw as Le, RotateCcw as Re, Server as ze, Square as Be, Tag as Ve, Terminal as _, Variable as He, X as Ue, Zap as We } from "lucide-react";
|
|
21
|
+
import { useParams as Ge } from "react-router-dom";
|
|
22
|
+
import { usePermissions as Ke } from "@burdenoff/fe-libs/shared/providers/shell";
|
|
23
|
+
import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
24
|
+
import { MotionItem as x, MotionList as qe, MotionPage as S } from "@burdenoff/fe-libs/shared/motion";
|
|
25
25
|
//#region src/pages/SessionDetailsPage.tsx
|
|
26
|
-
function
|
|
26
|
+
function Je(e) {
|
|
27
27
|
let t = e.ttydUrl;
|
|
28
28
|
if (!t) return null;
|
|
29
29
|
try {
|
|
@@ -33,106 +33,106 @@ function Ye(e) {
|
|
|
33
33
|
return t;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
var
|
|
37
|
-
function
|
|
36
|
+
var Ye = (e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
37
|
+
function Xe(e) {
|
|
38
38
|
if (!e) return "Never";
|
|
39
39
|
let t = Date.now() - new Date(e).getTime();
|
|
40
40
|
return t < 6e4 ? "Just now" : t < 36e5 ? `${Math.floor(t / 6e4)}m ago` : t < 864e5 ? `${Math.floor(t / 36e5)}h ago` : new Date(e).toLocaleDateString();
|
|
41
41
|
}
|
|
42
|
-
function
|
|
43
|
-
let { t:
|
|
44
|
-
let r =
|
|
45
|
-
return r === e ? n ? Object.entries(n).reduce((e, [t, n]) => e.replace(RegExp(`\\{\\{${
|
|
46
|
-
}, [
|
|
47
|
-
|
|
48
|
-
},
|
|
49
|
-
if (
|
|
50
|
-
|
|
42
|
+
function Ze() {
|
|
43
|
+
let { t: Ze } = we(), C = u((e, t, n) => {
|
|
44
|
+
let r = Ze(e, n);
|
|
45
|
+
return r === e ? n ? Object.entries(n).reduce((e, [t, n]) => e.replace(RegExp(`\\{\\{${Ye(t)}\\}\\}`, "g"), () => String(n)), t) : t : r;
|
|
46
|
+
}, [Ze]), { id: w } = Ge(), { basePath: Qe, currentUser: $e } = ue(), et = Qe || "", T = $e?.id ?? "", E = de(), { hasPermission: tt, isLoading: nt, permissions: rt } = Ke(), [it] = ie({ refetchQueries: ["GetSession"] }), [at] = oe({ refetchQueries: ["GetSession"] }), [ot] = te({ refetchQueries: ["GetSession"] }), [st] = ae({ refetchQueries: ["GetSession"] }), [ct] = ne({ refetchQueries: ["GetSession"] }), [lt] = se({ refetchQueries: ["GetSession"] }), [ut, dt] = p(!1), [ft, pt] = p(""), [mt, ht] = p(""), [gt, _t] = p(!1), vt = () => {
|
|
47
|
+
pt(k?.command || ""), ht(k?.workingDirectory || ""), dt(!0);
|
|
48
|
+
}, yt = async () => {
|
|
49
|
+
if (k?.id) {
|
|
50
|
+
_t(!0);
|
|
51
51
|
try {
|
|
52
|
-
await
|
|
53
|
-
id:
|
|
52
|
+
await lt({ variables: {
|
|
53
|
+
id: k.id,
|
|
54
54
|
input: {
|
|
55
|
-
command:
|
|
56
|
-
workingDirectory:
|
|
55
|
+
command: ft || null,
|
|
56
|
+
workingDirectory: mt || null
|
|
57
57
|
}
|
|
58
|
-
} }),
|
|
58
|
+
} }), dt(!1);
|
|
59
59
|
} finally {
|
|
60
|
-
|
|
60
|
+
_t(!1);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
}, { data:
|
|
64
|
-
variables: { id:
|
|
65
|
-
skip: !
|
|
63
|
+
}, { data: bt, loading: D, error: xt, refetch: O } = n({
|
|
64
|
+
variables: { id: w || "" },
|
|
65
|
+
skip: !w,
|
|
66
66
|
fetchPolicy: "cache-and-network"
|
|
67
|
-
}),
|
|
67
|
+
}), k = bt?.session, A = k?.agent || null, j = k?.vibe || null;
|
|
68
68
|
d(() => {
|
|
69
|
-
|
|
70
|
-
activeAgentId:
|
|
71
|
-
selectedAgentId:
|
|
72
|
-
activeVibeId:
|
|
73
|
-
selectedVibeId:
|
|
74
|
-
activeSessionId:
|
|
75
|
-
selectedSessionId:
|
|
69
|
+
k && fe.setState({
|
|
70
|
+
activeAgentId: A?.id ?? null,
|
|
71
|
+
selectedAgentId: A?.id ?? null,
|
|
72
|
+
activeVibeId: j?.id ?? null,
|
|
73
|
+
selectedVibeId: j?.id ?? null,
|
|
74
|
+
activeSessionId: k.id,
|
|
75
|
+
selectedSessionId: k.id
|
|
76
76
|
});
|
|
77
77
|
}, [
|
|
78
|
-
O?.id,
|
|
79
78
|
k?.id,
|
|
80
|
-
A?.id
|
|
79
|
+
A?.id,
|
|
80
|
+
j?.id
|
|
81
81
|
]);
|
|
82
|
-
let
|
|
82
|
+
let M = k?.context?.userId ?? null, St = !!M && !!T && M === T, Ct = k?.collaborators ?? [], N = Ct.find((e) => e.userId === T) ?? null, P = !!k && !St && (!!M || !!k?.myGrantRole || !!N), [wt] = r(), [Tt, { loading: Et }] = ee(), [Dt, { loading: Ot }] = a(), F = f(null);
|
|
83
83
|
d(() => {
|
|
84
|
-
let e =
|
|
85
|
-
e && (!
|
|
86
|
-
|
|
84
|
+
let e = k?.id;
|
|
85
|
+
e && (!P || N || F.current !== e && (F.current = e, wt({ variables: { input: { sessionId: e } } }).then(() => {
|
|
86
|
+
O();
|
|
87
87
|
}).catch((e) => {
|
|
88
|
-
|
|
88
|
+
F.current = null, console.warn("[sessionDetails] joinSharedSession(sessionId) failed", e);
|
|
89
89
|
})));
|
|
90
90
|
}, [
|
|
91
|
-
|
|
91
|
+
k?.id,
|
|
92
|
+
P,
|
|
92
93
|
N,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
D
|
|
94
|
+
wt,
|
|
95
|
+
O
|
|
96
96
|
]);
|
|
97
|
-
let { data:
|
|
98
|
-
variables: { sessionId:
|
|
99
|
-
skip: !
|
|
100
|
-
}), { data:
|
|
101
|
-
variables: { sessionId:
|
|
102
|
-
skip: !
|
|
103
|
-
}), { data:
|
|
104
|
-
variables: { sessionId:
|
|
105
|
-
skip: !
|
|
97
|
+
let { data: kt } = e({
|
|
98
|
+
variables: { sessionId: k?.id ?? "" },
|
|
99
|
+
skip: !k?.id || !P
|
|
100
|
+
}), { data: At } = t({
|
|
101
|
+
variables: { sessionId: k?.id ?? "" },
|
|
102
|
+
skip: !k?.id || !P
|
|
103
|
+
}), { data: jt } = re({
|
|
104
|
+
variables: { sessionId: k?.id ?? "" },
|
|
105
|
+
skip: !k?.id || !P
|
|
106
106
|
});
|
|
107
107
|
d(() => {
|
|
108
|
-
(
|
|
108
|
+
(kt || At || jt) && O();
|
|
109
109
|
}, [
|
|
110
|
+
kt,
|
|
110
111
|
At,
|
|
111
112
|
jt,
|
|
112
|
-
|
|
113
|
-
D
|
|
113
|
+
O
|
|
114
114
|
]);
|
|
115
|
-
let
|
|
116
|
-
if (
|
|
117
|
-
await
|
|
115
|
+
let Mt = N?.role === ge.Viewer ? _e.View : _e.Interact, Nt = u(async () => {
|
|
116
|
+
if (k?.id) try {
|
|
117
|
+
await Tt({ variables: { sessionId: k.id } }), await O();
|
|
118
118
|
} catch (e) {
|
|
119
119
|
console.error("Failed to request control:", e);
|
|
120
120
|
}
|
|
121
121
|
}, [
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
]),
|
|
126
|
-
if (
|
|
127
|
-
await
|
|
122
|
+
k?.id,
|
|
123
|
+
Tt,
|
|
124
|
+
O
|
|
125
|
+
]), Pt = u(async () => {
|
|
126
|
+
if (k?.id) try {
|
|
127
|
+
await Dt({ variables: { sessionId: k.id } }), await O();
|
|
128
128
|
} catch (e) {
|
|
129
129
|
console.error("Failed to release control:", e);
|
|
130
130
|
}
|
|
131
131
|
}, [
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
]), [
|
|
132
|
+
k?.id,
|
|
133
|
+
Dt,
|
|
134
|
+
O
|
|
135
|
+
]), [I, L] = p(!0), [Ft, It] = p(!1), [R, Lt] = p(!1), [Rt, z] = p(null), [zt, B] = p(!1), [Bt, V] = p(!1), [H, U] = p(null), W = f(null), Vt = f(null), Ht = f(!1), G = f(!1), K = k ? Je(k) : null, [Ut] = i(), [Wt, q] = p(null), [J, Y] = p(null), [Gt, Kt] = p(!1), [qt, Jt] = p(0), Yt = u(() => Jt((e) => e + 1), []), Xt = A?.id ?? null, Zt = k?.id ?? null;
|
|
136
136
|
d(() => {
|
|
137
137
|
let e = !1;
|
|
138
138
|
if (!K || !Xt || !Zt) {
|
|
@@ -164,10 +164,10 @@ function Qe() {
|
|
|
164
164
|
Ut
|
|
165
165
|
]);
|
|
166
166
|
let X = K && Wt ? `${K}#vt=${encodeURIComponent(Wt)}` : null, Z = () => {
|
|
167
|
-
|
|
167
|
+
E("/sessions");
|
|
168
168
|
}, Qt = async () => {
|
|
169
|
-
if (
|
|
170
|
-
await
|
|
169
|
+
if (k?.id) try {
|
|
170
|
+
await it({ variables: { id: k.id } });
|
|
171
171
|
} catch (e) {
|
|
172
172
|
if (o(e)) {
|
|
173
173
|
s(), B(!0);
|
|
@@ -176,14 +176,14 @@ function Qe() {
|
|
|
176
176
|
console.error("Failed to start session:", e);
|
|
177
177
|
}
|
|
178
178
|
}, $t = async () => {
|
|
179
|
-
if (
|
|
180
|
-
await
|
|
179
|
+
if (k?.id) try {
|
|
180
|
+
await at({ variables: { id: k.id } });
|
|
181
181
|
} catch (e) {
|
|
182
182
|
console.error("Failed to stop session:", e);
|
|
183
183
|
}
|
|
184
184
|
}, en = async () => {
|
|
185
|
-
if (
|
|
186
|
-
await
|
|
185
|
+
if (k?.id) try {
|
|
186
|
+
await ot({ variables: { id: k.id } });
|
|
187
187
|
} catch (e) {
|
|
188
188
|
if (o(e)) {
|
|
189
189
|
s(), B(!0);
|
|
@@ -199,13 +199,13 @@ function Qe() {
|
|
|
199
199
|
});
|
|
200
200
|
});
|
|
201
201
|
}, []), $ = u(async (e, t, n) => {
|
|
202
|
-
let r =
|
|
202
|
+
let r = k?.id;
|
|
203
203
|
if (!r) return;
|
|
204
|
-
|
|
204
|
+
Lt(!0), z(null);
|
|
205
205
|
let i = !1;
|
|
206
206
|
try {
|
|
207
207
|
let a = await e(r);
|
|
208
|
-
a.error && o(a.error) ? (s(), B(!0)) : a.error ? z(a.error.message) : !a.data || !a.data[t] ? z(n) : (
|
|
208
|
+
a.error && o(a.error) ? (s(), B(!0)) : a.error ? z(a.error.message) : !a.data || !a.data[t] ? z(n) : (L(!0), i = !0);
|
|
209
209
|
} catch (e) {
|
|
210
210
|
if (o(e)) {
|
|
211
211
|
s(), B(!0);
|
|
@@ -213,20 +213,20 @@ function Qe() {
|
|
|
213
213
|
}
|
|
214
214
|
z(e instanceof Error ? e.message : n);
|
|
215
215
|
} finally {
|
|
216
|
-
|
|
216
|
+
Lt(!1), i && Q();
|
|
217
217
|
}
|
|
218
|
-
}, [
|
|
218
|
+
}, [k?.id, Q]), tn = u(() => $((e) => st({ variables: { id: e } }), "startSessionTerminal", "Failed to start terminal"), [st, $]), nn = u(() => $((e) => ct({ variables: { id: e } }), "restartSessionTerminal", "Failed to restart terminal"), [ct, $]);
|
|
219
219
|
d(() => {
|
|
220
220
|
if (!Ht.current) {
|
|
221
|
-
Ht.current = !0, G.current =
|
|
221
|
+
Ht.current = !0, G.current = I;
|
|
222
222
|
return;
|
|
223
223
|
}
|
|
224
|
-
let e =
|
|
225
|
-
G.current =
|
|
226
|
-
}, [
|
|
227
|
-
let rn =
|
|
224
|
+
let e = I && !G.current;
|
|
225
|
+
G.current = I, e && Q();
|
|
226
|
+
}, [I, Q]);
|
|
227
|
+
let rn = k?.id ?? null, an = f(null);
|
|
228
228
|
d(() => {
|
|
229
|
-
let e =
|
|
229
|
+
let e = k?.status ?? null, t = k?.exitCode ?? null;
|
|
230
230
|
if (rn !== an.current) {
|
|
231
231
|
an.current = rn, W.current = e, U(null);
|
|
232
232
|
return;
|
|
@@ -236,327 +236,327 @@ function Qe() {
|
|
|
236
236
|
return;
|
|
237
237
|
}
|
|
238
238
|
let n = W.current;
|
|
239
|
-
e === "STOPPED" && (n === "RUNNING" || n === "STARTING") &&
|
|
239
|
+
e === "STOPPED" && (n === "RUNNING" || n === "STARTING") && I ? U({ exitCode: t }) : e === "STOPPED" && I && t !== null && U((e) => e && e.exitCode === null ? { exitCode: t } : e), W.current = e;
|
|
240
240
|
}, [
|
|
241
241
|
rn,
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
242
|
+
k?.status,
|
|
243
|
+
k?.exitCode,
|
|
244
|
+
I
|
|
245
245
|
]);
|
|
246
246
|
let on = u(() => {
|
|
247
247
|
X && window.open(X, "_blank");
|
|
248
248
|
}, [X]);
|
|
249
|
-
if (
|
|
249
|
+
if (nt) return /* @__PURE__ */ y("div", {
|
|
250
250
|
className: "flex items-center justify-center min-h-[400px]",
|
|
251
|
-
children: /* @__PURE__ */
|
|
251
|
+
children: /* @__PURE__ */ y("p", {
|
|
252
252
|
className: "text-text-secondary",
|
|
253
|
-
children:
|
|
253
|
+
children: C("sessionDetails.loadingPermissions", "Loading permissions...")
|
|
254
254
|
})
|
|
255
255
|
});
|
|
256
|
-
if (
|
|
256
|
+
if (rt && (rt.permissionStrings?.length ?? 0) > 0 && !tt(be.SESSION_READ)) return /* @__PURE__ */ y("div", {
|
|
257
257
|
className: "flex items-center justify-center min-h-[400px]",
|
|
258
|
-
children: /* @__PURE__ */
|
|
258
|
+
children: /* @__PURE__ */ b("div", {
|
|
259
259
|
className: "text-center space-y-2",
|
|
260
|
-
children: [/* @__PURE__ */
|
|
260
|
+
children: [/* @__PURE__ */ y("h2", {
|
|
261
261
|
className: "text-lg font-semibold text-foreground",
|
|
262
|
-
children:
|
|
263
|
-
}), /* @__PURE__ */
|
|
262
|
+
children: C("sessionDetails.accessDenied", "Access Denied")
|
|
263
|
+
}), /* @__PURE__ */ y("p", {
|
|
264
264
|
className: "text-sm text-text-secondary",
|
|
265
|
-
children:
|
|
265
|
+
children: C("sessionDetails.accessDeniedDesc", "You don't have permission to access this page.")
|
|
266
266
|
})]
|
|
267
267
|
})
|
|
268
268
|
});
|
|
269
269
|
let sn = () => {
|
|
270
|
-
|
|
270
|
+
A && E(`/agents/${A.id}`);
|
|
271
271
|
}, cn = () => {
|
|
272
|
-
|
|
272
|
+
j && E(`/vibes/${j.id}`);
|
|
273
273
|
};
|
|
274
|
-
if (
|
|
274
|
+
if (D && !k) return /* @__PURE__ */ b(S, {
|
|
275
275
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
276
|
-
children: [/* @__PURE__ */
|
|
276
|
+
children: [/* @__PURE__ */ b("button", {
|
|
277
277
|
type: "button",
|
|
278
278
|
onClick: Z,
|
|
279
279
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
280
|
-
children: [/* @__PURE__ */
|
|
281
|
-
}), /* @__PURE__ */
|
|
280
|
+
children: [/* @__PURE__ */ y(h, { className: "size-4" }), C("sessionDetails.backToSessions", "Back to Sessions")]
|
|
281
|
+
}), /* @__PURE__ */ y(xe, { variant: "detail" })]
|
|
282
282
|
});
|
|
283
|
-
if (
|
|
283
|
+
if (xt && !k) return /* @__PURE__ */ b(S, {
|
|
284
284
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
285
|
-
children: [/* @__PURE__ */
|
|
285
|
+
children: [/* @__PURE__ */ b("button", {
|
|
286
286
|
type: "button",
|
|
287
287
|
onClick: Z,
|
|
288
288
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
289
|
-
children: [/* @__PURE__ */
|
|
290
|
-
}), /* @__PURE__ */
|
|
291
|
-
title:
|
|
292
|
-
message:
|
|
293
|
-
onRetry: () =>
|
|
289
|
+
children: [/* @__PURE__ */ y(h, { className: "size-4" }), "Back to Sessions"]
|
|
290
|
+
}), /* @__PURE__ */ y(me, {
|
|
291
|
+
title: C("sessionDetails.failedLoad", "Failed to load session"),
|
|
292
|
+
message: xt.message,
|
|
293
|
+
onRetry: () => O()
|
|
294
294
|
})]
|
|
295
295
|
});
|
|
296
|
-
if (!
|
|
296
|
+
if (!k) return /* @__PURE__ */ b(S, {
|
|
297
297
|
className: "space-y-6 p-4 sm:p-6 bg-bg-surface min-h-screen",
|
|
298
|
-
children: [/* @__PURE__ */
|
|
298
|
+
children: [/* @__PURE__ */ b("button", {
|
|
299
299
|
type: "button",
|
|
300
300
|
onClick: Z,
|
|
301
301
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
302
|
-
children: [/* @__PURE__ */
|
|
303
|
-
}), /* @__PURE__ */
|
|
304
|
-
icon: /* @__PURE__ */
|
|
305
|
-
title:
|
|
306
|
-
description: `${
|
|
307
|
-
action: /* @__PURE__ */
|
|
302
|
+
children: [/* @__PURE__ */ y(h, { className: "size-4" }), "Back to Sessions"]
|
|
303
|
+
}), /* @__PURE__ */ y(ye, {
|
|
304
|
+
icon: /* @__PURE__ */ y(_, { className: "size-8 text-text-secondary" }),
|
|
305
|
+
title: C("sessionDetails.notFound", "Session not found"),
|
|
306
|
+
description: `${C("sessionDetails.notFoundDescPrefix", "No session with ID")} "${w}" ${C("sessionDetails.notFoundDescSuffix", "exists")}`,
|
|
307
|
+
action: /* @__PURE__ */ y("button", {
|
|
308
308
|
type: "button",
|
|
309
309
|
onClick: Z,
|
|
310
310
|
className: "px-4 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors",
|
|
311
|
-
children:
|
|
311
|
+
children: C("sessionDetails.backToSessions", "Back to Sessions")
|
|
312
312
|
})
|
|
313
313
|
})]
|
|
314
314
|
});
|
|
315
|
-
let ln =
|
|
316
|
-
return /* @__PURE__ */
|
|
315
|
+
let ln = k.status === "RUNNING", un = Ft ? "h-[calc(100vh-200px)]" : "h-[280px] sm:h-[420px]";
|
|
316
|
+
return /* @__PURE__ */ b(S, {
|
|
317
317
|
className: "flex flex-col bg-bg-surface min-h-screen",
|
|
318
318
|
children: [
|
|
319
|
-
/* @__PURE__ */
|
|
320
|
-
className: `flex-1 overflow-y-auto space-y-6 p-4 sm:p-6 ${
|
|
319
|
+
/* @__PURE__ */ b("div", {
|
|
320
|
+
className: `flex-1 overflow-y-auto space-y-6 p-4 sm:p-6 ${I && X ? "pb-2" : ""}`,
|
|
321
321
|
children: [
|
|
322
|
-
/* @__PURE__ */
|
|
322
|
+
/* @__PURE__ */ b("button", {
|
|
323
323
|
type: "button",
|
|
324
324
|
onClick: Z,
|
|
325
325
|
className: "flex items-center gap-2 text-text-secondary hover:text-text-primary transition-colors",
|
|
326
|
-
children: [/* @__PURE__ */
|
|
326
|
+
children: [/* @__PURE__ */ y(h, { className: "size-4" }), "Back to Sessions"]
|
|
327
327
|
}),
|
|
328
|
-
/* @__PURE__ */
|
|
329
|
-
title:
|
|
330
|
-
description:
|
|
328
|
+
/* @__PURE__ */ y(pe, {
|
|
329
|
+
title: k.name,
|
|
330
|
+
description: k.command || "No command specified",
|
|
331
331
|
breadcrumb: [{
|
|
332
332
|
label: "Sessions",
|
|
333
|
-
path:
|
|
334
|
-
}, { label:
|
|
335
|
-
actions: /* @__PURE__ */
|
|
333
|
+
path: et ? `${et}/sessions` : "/sessions"
|
|
334
|
+
}, { label: k.name }],
|
|
335
|
+
actions: /* @__PURE__ */ b("div", {
|
|
336
336
|
className: "flex items-center gap-2 flex-wrap",
|
|
337
337
|
children: [
|
|
338
|
-
/* @__PURE__ */
|
|
338
|
+
/* @__PURE__ */ y("button", {
|
|
339
339
|
type: "button",
|
|
340
|
-
onClick: () =>
|
|
341
|
-
disabled:
|
|
340
|
+
onClick: () => O(),
|
|
341
|
+
disabled: D,
|
|
342
342
|
className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors disabled:opacity-50",
|
|
343
343
|
title: "Refresh",
|
|
344
|
-
children: /* @__PURE__ */
|
|
344
|
+
children: /* @__PURE__ */ y(Le, { className: `size-4 ${D ? "animate-spin" : ""}` })
|
|
345
345
|
}),
|
|
346
|
-
ln ? /* @__PURE__ */
|
|
346
|
+
ln ? /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ b("button", {
|
|
347
347
|
type: "button",
|
|
348
348
|
onClick: $t,
|
|
349
349
|
className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors",
|
|
350
|
-
children: [/* @__PURE__ */
|
|
351
|
-
}), /* @__PURE__ */
|
|
350
|
+
children: [/* @__PURE__ */ y(Be, { className: "size-4" }), C("sessionDetails.stopCommand", "Stop Command")]
|
|
351
|
+
}), /* @__PURE__ */ b("button", {
|
|
352
352
|
type: "button",
|
|
353
353
|
onClick: en,
|
|
354
354
|
className: "flex items-center gap-2 px-3 py-2 bg-bg-sunken text-text-primary rounded-md hover:bg-bg-sunken/80 transition-colors",
|
|
355
|
-
children: [/* @__PURE__ */
|
|
356
|
-
})] }) : /* @__PURE__ */
|
|
355
|
+
children: [/* @__PURE__ */ y(Re, { className: "size-4" }), C("sessionDetails.restartCommand", "Restart Command")]
|
|
356
|
+
})] }) : /* @__PURE__ */ b("button", {
|
|
357
357
|
type: "button",
|
|
358
358
|
onClick: Qt,
|
|
359
359
|
className: "flex items-center gap-2 px-3 py-2 bg-status-success-bg text-status-success-text rounded-md hover:opacity-80 transition-colors",
|
|
360
|
-
children: [/* @__PURE__ */
|
|
360
|
+
children: [/* @__PURE__ */ y(Ie, { className: "size-4" }), C("sessionDetails.runCommand", "Run Command")]
|
|
361
361
|
}),
|
|
362
|
-
X ? /* @__PURE__ */
|
|
363
|
-
/* @__PURE__ */
|
|
362
|
+
X ? /* @__PURE__ */ b(v, { children: [
|
|
363
|
+
/* @__PURE__ */ b("button", {
|
|
364
364
|
type: "button",
|
|
365
|
-
onClick: () =>
|
|
366
|
-
className: `flex items-center gap-2 px-3 py-2 rounded-md transition-colors ${
|
|
367
|
-
title:
|
|
368
|
-
children: [/* @__PURE__ */
|
|
365
|
+
onClick: () => L((e) => !e),
|
|
366
|
+
className: `flex items-center gap-2 px-3 py-2 rounded-md transition-colors ${I ? "bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bg-hover" : "bg-bg-sunken text-text-primary hover:bg-bg-sunken/80"}`,
|
|
367
|
+
title: I ? C("sessionDetails.hideTerminal", "Hide terminal") : C("sessionDetails.showTerminal", "Show terminal"),
|
|
368
|
+
children: [/* @__PURE__ */ y(_, { className: "size-4" }), C("sessionDetails.terminal", "Terminal")]
|
|
369
369
|
}),
|
|
370
|
-
/* @__PURE__ */
|
|
370
|
+
/* @__PURE__ */ b("button", {
|
|
371
371
|
type: "button",
|
|
372
372
|
onClick: () => V(!0),
|
|
373
|
-
disabled:
|
|
373
|
+
disabled: R,
|
|
374
374
|
className: "flex items-center gap-1.5 p-2 bg-bg-sunken text-text-secondary rounded-md hover:text-text-primary hover:bg-bg-sunken/80 transition-colors disabled:opacity-50",
|
|
375
|
-
title:
|
|
376
|
-
children: [
|
|
375
|
+
title: C("sessionDetails.restartTerminalTitle", "Restart terminal — kills the tmux session and re-runs the command"),
|
|
376
|
+
children: [R ? /* @__PURE__ */ y(g, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ y(Re, { className: "size-3.5" }), /* @__PURE__ */ y("span", {
|
|
377
377
|
className: "text-xs",
|
|
378
|
-
children:
|
|
378
|
+
children: C("sessionDetails.restartTerminalShort", "Restart")
|
|
379
379
|
})]
|
|
380
380
|
}),
|
|
381
|
-
/* @__PURE__ */
|
|
381
|
+
/* @__PURE__ */ y("button", {
|
|
382
382
|
type: "button",
|
|
383
383
|
onClick: on,
|
|
384
384
|
className: "flex items-center p-2 bg-bg-sunken text-text-secondary rounded-md hover:text-text-primary hover:bg-bg-sunken/80 transition-colors",
|
|
385
|
-
title:
|
|
386
|
-
children: /* @__PURE__ */
|
|
385
|
+
title: C("sessionDetails.openInNewTab", "Open terminal in new tab"),
|
|
386
|
+
children: /* @__PURE__ */ y(Ae, { className: "size-4" })
|
|
387
387
|
})
|
|
388
|
-
] }) : /* @__PURE__ */
|
|
388
|
+
] }) : /* @__PURE__ */ b("button", {
|
|
389
389
|
type: "button",
|
|
390
390
|
onClick: tn,
|
|
391
|
-
disabled:
|
|
391
|
+
disabled: R || !A,
|
|
392
392
|
className: "flex items-center gap-2 px-3 py-2 bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
|
|
393
|
-
title:
|
|
394
|
-
children: [
|
|
393
|
+
title: A ? A.tunnelUrl ? C("sessionDetails.openTerminal", "Open terminal") : C("sessionDetails.agentNoTunnelUrl", "Agent has no tunnel URL configured") : C("sessionDetails.noAgentAssigned", "No agent assigned"),
|
|
394
|
+
children: [R ? /* @__PURE__ */ y(g, { className: "size-4 animate-spin" }) : /* @__PURE__ */ y(_, { className: "size-4" }), C("sessionDetails.openTerminal", "Open Terminal")]
|
|
395
395
|
})
|
|
396
396
|
]
|
|
397
397
|
})
|
|
398
398
|
}),
|
|
399
|
-
/* @__PURE__ */
|
|
399
|
+
/* @__PURE__ */ b(qe, {
|
|
400
400
|
stagger: .04,
|
|
401
401
|
className: "grid grid-cols-2 sm:grid-cols-4 gap-4",
|
|
402
402
|
children: [
|
|
403
|
-
/* @__PURE__ */
|
|
403
|
+
/* @__PURE__ */ y(x, { children: /* @__PURE__ */ y(l, {
|
|
404
404
|
className: "p-4",
|
|
405
|
-
children: /* @__PURE__ */
|
|
405
|
+
children: /* @__PURE__ */ b("div", {
|
|
406
406
|
className: "flex items-center gap-3",
|
|
407
|
-
children: [/* @__PURE__ */
|
|
407
|
+
children: [/* @__PURE__ */ y("div", {
|
|
408
408
|
className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
409
|
-
children: /* @__PURE__ */
|
|
410
|
-
}), /* @__PURE__ */
|
|
409
|
+
children: /* @__PURE__ */ y(_, { className: "size-5 text-text-secondary" })
|
|
410
|
+
}), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
|
|
411
411
|
className: "text-sm text-text-secondary",
|
|
412
|
-
children:
|
|
413
|
-
}), /* @__PURE__ */
|
|
414
|
-
status:
|
|
412
|
+
children: C("sessionDetails.statusLabel", "Status")
|
|
413
|
+
}), /* @__PURE__ */ y(c, {
|
|
414
|
+
status: k.status,
|
|
415
415
|
size: "md"
|
|
416
416
|
})] })]
|
|
417
417
|
})
|
|
418
418
|
}) }),
|
|
419
|
-
/* @__PURE__ */
|
|
419
|
+
/* @__PURE__ */ y(x, { children: /* @__PURE__ */ y(l, {
|
|
420
420
|
className: "p-4",
|
|
421
|
-
children: /* @__PURE__ */
|
|
421
|
+
children: /* @__PURE__ */ b("div", {
|
|
422
422
|
className: "flex items-center gap-3",
|
|
423
|
-
children: [/* @__PURE__ */
|
|
423
|
+
children: [/* @__PURE__ */ y("div", {
|
|
424
424
|
className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
425
|
-
children: /* @__PURE__ */
|
|
426
|
-
}), /* @__PURE__ */
|
|
425
|
+
children: /* @__PURE__ */ y(ke, { className: "size-5 text-text-secondary" })
|
|
426
|
+
}), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
|
|
427
427
|
className: "text-sm text-text-secondary",
|
|
428
|
-
children:
|
|
429
|
-
}), /* @__PURE__ */
|
|
428
|
+
children: C("sessionDetails.typeLabel", "Type")
|
|
429
|
+
}), /* @__PURE__ */ y("p", {
|
|
430
430
|
className: "font-semibold text-text-primary",
|
|
431
|
-
children:
|
|
431
|
+
children: k.type
|
|
432
432
|
})] })]
|
|
433
433
|
})
|
|
434
434
|
}) }),
|
|
435
|
-
/* @__PURE__ */
|
|
435
|
+
/* @__PURE__ */ y(x, { children: /* @__PURE__ */ y(l, {
|
|
436
436
|
className: "p-4",
|
|
437
|
-
children: /* @__PURE__ */
|
|
437
|
+
children: /* @__PURE__ */ b("div", {
|
|
438
438
|
className: "flex items-center gap-3",
|
|
439
|
-
children: [/* @__PURE__ */
|
|
439
|
+
children: [/* @__PURE__ */ y("div", {
|
|
440
440
|
className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
441
|
-
children: /* @__PURE__ */
|
|
442
|
-
}), /* @__PURE__ */
|
|
441
|
+
children: /* @__PURE__ */ y(Me, { className: "size-5 text-text-secondary" })
|
|
442
|
+
}), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
|
|
443
443
|
className: "text-sm text-text-secondary",
|
|
444
|
-
children:
|
|
445
|
-
}), /* @__PURE__ */
|
|
444
|
+
children: C("sessionDetails.pidLabel", "PID")
|
|
445
|
+
}), /* @__PURE__ */ y("p", {
|
|
446
446
|
className: "font-semibold text-text-primary",
|
|
447
|
-
children:
|
|
447
|
+
children: k.pid || "N/A"
|
|
448
448
|
})] })]
|
|
449
449
|
})
|
|
450
450
|
}) }),
|
|
451
|
-
/* @__PURE__ */
|
|
451
|
+
/* @__PURE__ */ y(x, { children: /* @__PURE__ */ y(l, {
|
|
452
452
|
className: "p-4",
|
|
453
|
-
children: /* @__PURE__ */
|
|
453
|
+
children: /* @__PURE__ */ b("div", {
|
|
454
454
|
className: "flex items-center gap-3",
|
|
455
|
-
children: [/* @__PURE__ */
|
|
455
|
+
children: [/* @__PURE__ */ y("div", {
|
|
456
456
|
className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
457
|
-
children: /* @__PURE__ */
|
|
458
|
-
}), /* @__PURE__ */
|
|
457
|
+
children: /* @__PURE__ */ y(ze, { className: "size-5 text-text-secondary" })
|
|
458
|
+
}), /* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
|
|
459
459
|
className: "text-sm text-text-secondary",
|
|
460
|
-
children:
|
|
461
|
-
}), /* @__PURE__ */
|
|
460
|
+
children: C("sessionDetails.agentLabel", "Agent")
|
|
461
|
+
}), /* @__PURE__ */ y("p", {
|
|
462
462
|
className: "font-semibold text-text-primary truncate",
|
|
463
|
-
children:
|
|
463
|
+
children: A?.name || "Unknown"
|
|
464
464
|
})] })]
|
|
465
465
|
})
|
|
466
466
|
}) })
|
|
467
467
|
]
|
|
468
468
|
}),
|
|
469
|
-
/* @__PURE__ */
|
|
469
|
+
/* @__PURE__ */ b(l, { children: [/* @__PURE__ */ b("div", {
|
|
470
470
|
className: "p-4 border-b border-border-default flex items-center justify-between",
|
|
471
|
-
children: [/* @__PURE__ */
|
|
471
|
+
children: [/* @__PURE__ */ b("h3", {
|
|
472
472
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
473
|
-
children: [/* @__PURE__ */
|
|
474
|
-
}), !
|
|
473
|
+
children: [/* @__PURE__ */ y(ke, { className: "size-5" }), C("sessionDetails.commandTitle", "Command")]
|
|
474
|
+
}), !ut && /* @__PURE__ */ y("button", {
|
|
475
475
|
type: "button",
|
|
476
|
-
onClick:
|
|
476
|
+
onClick: vt,
|
|
477
477
|
className: "p-1.5 rounded text-text-secondary hover:text-text-primary hover:bg-bg-sunken transition-colors",
|
|
478
|
-
title:
|
|
479
|
-
children: /* @__PURE__ */
|
|
478
|
+
title: C("sessionDetails.editCommandTitle", "Edit command and working directory"),
|
|
479
|
+
children: /* @__PURE__ */ y(Fe, { className: "size-4" })
|
|
480
480
|
})]
|
|
481
|
-
}), /* @__PURE__ */
|
|
481
|
+
}), /* @__PURE__ */ y("div", {
|
|
482
482
|
className: "p-4",
|
|
483
|
-
children:
|
|
483
|
+
children: ut ? /* @__PURE__ */ b("div", {
|
|
484
484
|
className: "space-y-3",
|
|
485
485
|
children: [
|
|
486
|
-
/* @__PURE__ */
|
|
486
|
+
/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("label", {
|
|
487
487
|
className: "block text-xs font-medium text-text-secondary mb-1",
|
|
488
|
-
children:
|
|
489
|
-
}), /* @__PURE__ */
|
|
488
|
+
children: C("sessionDetails.commandLabel", "Command")
|
|
489
|
+
}), /* @__PURE__ */ y("input", {
|
|
490
490
|
"aria-label": "control",
|
|
491
491
|
type: "text",
|
|
492
|
-
value:
|
|
493
|
-
onChange: (e) =>
|
|
494
|
-
placeholder:
|
|
492
|
+
value: ft,
|
|
493
|
+
onChange: (e) => pt(e.target.value),
|
|
494
|
+
placeholder: C("sessionDetails.commandPlaceholder", "bun run dev"),
|
|
495
495
|
className: "w-full px-3 py-2 text-sm bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-action-primary-bg font-mono"
|
|
496
496
|
})] }),
|
|
497
|
-
/* @__PURE__ */
|
|
497
|
+
/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("label", {
|
|
498
498
|
className: "block text-xs font-medium text-text-secondary mb-1",
|
|
499
|
-
children:
|
|
500
|
-
}), /* @__PURE__ */
|
|
499
|
+
children: C("sessionDetails.workingDirLabel", "Working Directory")
|
|
500
|
+
}), /* @__PURE__ */ y("input", {
|
|
501
501
|
"aria-label": "control",
|
|
502
502
|
type: "text",
|
|
503
|
-
value:
|
|
504
|
-
onChange: (e) =>
|
|
505
|
-
placeholder:
|
|
503
|
+
value: mt,
|
|
504
|
+
onChange: (e) => ht(e.target.value),
|
|
505
|
+
placeholder: C("sessionDetails.workingDirPlaceholder", "/home/user/myproject"),
|
|
506
506
|
className: "w-full px-3 py-2 text-sm bg-bg-sunken border border-border-default rounded-md text-text-primary placeholder:text-text-placeholder focus:outline-none focus:ring-2 focus:ring-action-primary-bg font-mono"
|
|
507
507
|
})] }),
|
|
508
|
-
/* @__PURE__ */
|
|
508
|
+
/* @__PURE__ */ b("div", {
|
|
509
509
|
className: "flex items-center gap-2",
|
|
510
|
-
children: [/* @__PURE__ */
|
|
510
|
+
children: [/* @__PURE__ */ b("button", {
|
|
511
511
|
type: "button",
|
|
512
|
-
onClick:
|
|
513
|
-
disabled:
|
|
512
|
+
onClick: yt,
|
|
513
|
+
disabled: gt,
|
|
514
514
|
className: "flex items-center gap-1.5 px-3 py-1.5 text-sm bg-action-primary-bg text-action-primary-text rounded-md hover:bg-action-primary-bg-hover transition-colors disabled:opacity-50",
|
|
515
|
-
children: [
|
|
516
|
-
}), /* @__PURE__ */
|
|
515
|
+
children: [gt ? /* @__PURE__ */ y(g, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ y(Te, { className: "size-3.5" }), C("sessionDetails.save", "Save")]
|
|
516
|
+
}), /* @__PURE__ */ b("button", {
|
|
517
517
|
type: "button",
|
|
518
|
-
onClick: () =>
|
|
519
|
-
disabled:
|
|
518
|
+
onClick: () => dt(!1),
|
|
519
|
+
disabled: gt,
|
|
520
520
|
className: "flex items-center gap-1.5 px-3 py-1.5 text-sm bg-bg-sunken text-text-primary rounded-md hover:bg-bg-elevated transition-colors disabled:opacity-50",
|
|
521
|
-
children: [/* @__PURE__ */
|
|
521
|
+
children: [/* @__PURE__ */ y(Ue, { className: "size-3.5" }), C("sessionDetails.cancel", "Cancel")]
|
|
522
522
|
})]
|
|
523
523
|
})
|
|
524
524
|
]
|
|
525
|
-
}) : /* @__PURE__ */
|
|
525
|
+
}) : /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ b("div", {
|
|
526
526
|
className: "bg-bg-sunken rounded-md p-3 font-mono text-sm text-text-primary overflow-x-auto",
|
|
527
527
|
children: [
|
|
528
528
|
"$",
|
|
529
529
|
" ",
|
|
530
|
-
|
|
530
|
+
k.command || C("sessionDetails.noCommandSpecified", "No command specified")
|
|
531
531
|
]
|
|
532
|
-
}), /* @__PURE__ */
|
|
532
|
+
}), /* @__PURE__ */ b("div", {
|
|
533
533
|
className: "mt-3 flex items-center gap-2 text-sm text-text-secondary",
|
|
534
534
|
children: [
|
|
535
|
-
/* @__PURE__ */
|
|
536
|
-
|
|
535
|
+
/* @__PURE__ */ y(je, { className: "size-4" }),
|
|
536
|
+
C("sessionDetails.workingDirectory", "Working Directory"),
|
|
537
537
|
":",
|
|
538
538
|
" ",
|
|
539
|
-
/* @__PURE__ */
|
|
539
|
+
/* @__PURE__ */ y("span", {
|
|
540
540
|
className: "text-text-primary font-mono",
|
|
541
|
-
children:
|
|
541
|
+
children: k.workingDirectory || /* @__PURE__ */ y("em", {
|
|
542
542
|
className: "not-italic text-text-placeholder",
|
|
543
|
-
children:
|
|
543
|
+
children: C("sessionDetails.workingDirDefault", "not set — defaults to OS home")
|
|
544
544
|
})
|
|
545
545
|
})
|
|
546
546
|
]
|
|
547
547
|
})] })
|
|
548
548
|
})] }),
|
|
549
|
-
/* @__PURE__ */
|
|
549
|
+
/* @__PURE__ */ b(l, { children: [/* @__PURE__ */ y("div", {
|
|
550
550
|
className: "p-4 border-b border-border-default",
|
|
551
|
-
children: /* @__PURE__ */
|
|
551
|
+
children: /* @__PURE__ */ b("h3", {
|
|
552
552
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
553
|
-
children: [/* @__PURE__ */
|
|
553
|
+
children: [/* @__PURE__ */ y(He, { className: "size-5" }), C("sessionDetails.envVars", "Environment Variables")]
|
|
554
554
|
})
|
|
555
|
-
}), /* @__PURE__ */
|
|
555
|
+
}), /* @__PURE__ */ y("div", {
|
|
556
556
|
className: "p-4",
|
|
557
|
-
children:
|
|
557
|
+
children: k.environmentVariables && Object.keys(k.environmentVariables).length > 0 ? /* @__PURE__ */ y("div", {
|
|
558
558
|
className: "flex flex-wrap gap-2",
|
|
559
|
-
children: Object.entries(
|
|
559
|
+
children: Object.entries(k.environmentVariables).map(([e, t]) => /* @__PURE__ */ b("span", {
|
|
560
560
|
className: "px-3 py-1 bg-bg-sunken text-text-primary text-sm rounded-full font-mono",
|
|
561
561
|
children: [
|
|
562
562
|
e,
|
|
@@ -564,313 +564,313 @@ function Qe() {
|
|
|
564
564
|
String(t)
|
|
565
565
|
]
|
|
566
566
|
}, e))
|
|
567
|
-
}) : /* @__PURE__ */
|
|
567
|
+
}) : /* @__PURE__ */ y("p", {
|
|
568
568
|
className: "text-text-secondary",
|
|
569
|
-
children:
|
|
569
|
+
children: C("sessionDetails.noEnvVars", "No environment variables configured")
|
|
570
570
|
})
|
|
571
571
|
})] }),
|
|
572
|
-
/* @__PURE__ */
|
|
572
|
+
/* @__PURE__ */ b(l, { children: [/* @__PURE__ */ y("div", {
|
|
573
573
|
className: "p-4 border-b border-border-default",
|
|
574
|
-
children: /* @__PURE__ */
|
|
574
|
+
children: /* @__PURE__ */ b("h3", {
|
|
575
575
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
576
|
-
children: [/* @__PURE__ */
|
|
576
|
+
children: [/* @__PURE__ */ y(_, { className: "size-5" }), C("sessionDetails.lastOutput", "Last Output")]
|
|
577
577
|
})
|
|
578
|
-
}), /* @__PURE__ */
|
|
578
|
+
}), /* @__PURE__ */ y("div", {
|
|
579
579
|
className: "p-4",
|
|
580
|
-
children:
|
|
580
|
+
children: k.lastOutput ? /* @__PURE__ */ y("div", {
|
|
581
581
|
className: "bg-bg-sunken rounded-md p-3 font-mono text-sm text-text-primary overflow-x-auto whitespace-pre-wrap",
|
|
582
|
-
children:
|
|
583
|
-
}) : /* @__PURE__ */
|
|
582
|
+
children: k.lastOutput
|
|
583
|
+
}) : /* @__PURE__ */ y("p", {
|
|
584
584
|
className: "text-text-secondary",
|
|
585
|
-
children:
|
|
585
|
+
children: C("sessionDetails.noOutput", "No output captured")
|
|
586
586
|
})
|
|
587
587
|
})] }),
|
|
588
|
-
|
|
588
|
+
j && /* @__PURE__ */ y(l, {
|
|
589
589
|
onClick: cn,
|
|
590
590
|
hoverable: !0,
|
|
591
|
-
children: /* @__PURE__ */
|
|
591
|
+
children: /* @__PURE__ */ b("div", {
|
|
592
592
|
className: "p-4 flex items-center justify-between",
|
|
593
|
-
children: [/* @__PURE__ */
|
|
593
|
+
children: [/* @__PURE__ */ b("div", {
|
|
594
594
|
className: "flex items-center gap-3",
|
|
595
|
-
children: [/* @__PURE__ */
|
|
595
|
+
children: [/* @__PURE__ */ y("div", {
|
|
596
596
|
className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
597
|
-
children: /* @__PURE__ */
|
|
598
|
-
}), /* @__PURE__ */
|
|
599
|
-
/* @__PURE__ */
|
|
597
|
+
children: /* @__PURE__ */ y(We, { className: "size-5 text-text-secondary" })
|
|
598
|
+
}), /* @__PURE__ */ b("div", { children: [
|
|
599
|
+
/* @__PURE__ */ y("p", {
|
|
600
600
|
className: "text-sm text-text-secondary",
|
|
601
|
-
children:
|
|
601
|
+
children: C("sessionDetails.relatedVibe", "Related Vibe")
|
|
602
602
|
}),
|
|
603
|
-
/* @__PURE__ */
|
|
603
|
+
/* @__PURE__ */ y("p", {
|
|
604
604
|
className: "font-medium text-text-primary",
|
|
605
|
-
children:
|
|
605
|
+
children: j.name
|
|
606
606
|
}),
|
|
607
|
-
|
|
607
|
+
j.path && /* @__PURE__ */ y("p", {
|
|
608
608
|
className: "text-sm text-text-secondary truncate max-w-md",
|
|
609
|
-
children:
|
|
609
|
+
children: j.path
|
|
610
610
|
})
|
|
611
611
|
] })]
|
|
612
|
-
}), /* @__PURE__ */
|
|
612
|
+
}), /* @__PURE__ */ y(c, { status: j.status })]
|
|
613
613
|
})
|
|
614
614
|
}),
|
|
615
|
-
|
|
615
|
+
A && /* @__PURE__ */ y(l, {
|
|
616
616
|
onClick: sn,
|
|
617
617
|
hoverable: !0,
|
|
618
|
-
children: /* @__PURE__ */
|
|
618
|
+
children: /* @__PURE__ */ b("div", {
|
|
619
619
|
className: "p-4 flex items-center justify-between",
|
|
620
|
-
children: [/* @__PURE__ */
|
|
620
|
+
children: [/* @__PURE__ */ b("div", {
|
|
621
621
|
className: "flex items-center gap-3",
|
|
622
|
-
children: [/* @__PURE__ */
|
|
622
|
+
children: [/* @__PURE__ */ y("div", {
|
|
623
623
|
className: "size-10 rounded-lg bg-bg-sunken flex items-center justify-center",
|
|
624
|
-
children: /* @__PURE__ */
|
|
625
|
-
}), /* @__PURE__ */
|
|
626
|
-
/* @__PURE__ */
|
|
624
|
+
children: /* @__PURE__ */ y(ze, { className: "size-5 text-text-secondary" })
|
|
625
|
+
}), /* @__PURE__ */ b("div", { children: [
|
|
626
|
+
/* @__PURE__ */ y("p", {
|
|
627
627
|
className: "text-sm text-text-secondary",
|
|
628
|
-
children:
|
|
628
|
+
children: C("sessionDetails.runningOnAgent", "Running on Agent")
|
|
629
629
|
}),
|
|
630
|
-
/* @__PURE__ */
|
|
630
|
+
/* @__PURE__ */ y("p", {
|
|
631
631
|
className: "font-medium text-text-primary",
|
|
632
|
-
children:
|
|
632
|
+
children: A.name
|
|
633
633
|
}),
|
|
634
|
-
/* @__PURE__ */
|
|
634
|
+
/* @__PURE__ */ y("p", {
|
|
635
635
|
className: "text-sm text-text-secondary",
|
|
636
|
-
children:
|
|
636
|
+
children: A.hostname
|
|
637
637
|
})
|
|
638
638
|
] })]
|
|
639
|
-
}), /* @__PURE__ */
|
|
639
|
+
}), /* @__PURE__ */ y(c, { status: A.isActive ? "ACTIVE" : "OFFLINE" })]
|
|
640
640
|
})
|
|
641
641
|
}),
|
|
642
|
-
/* @__PURE__ */
|
|
642
|
+
/* @__PURE__ */ b(l, { children: [/* @__PURE__ */ y("div", {
|
|
643
643
|
className: "p-4 border-b border-border-default",
|
|
644
|
-
children: /* @__PURE__ */
|
|
644
|
+
children: /* @__PURE__ */ b("h3", {
|
|
645
645
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
646
|
-
children: [/* @__PURE__ */
|
|
646
|
+
children: [/* @__PURE__ */ y(Oe, { className: "size-5" }), C("sessionDetails.timeline", "Timeline")]
|
|
647
647
|
})
|
|
648
|
-
}), /* @__PURE__ */
|
|
648
|
+
}), /* @__PURE__ */ b("div", {
|
|
649
649
|
className: "p-4",
|
|
650
|
-
children: [/* @__PURE__ */
|
|
650
|
+
children: [/* @__PURE__ */ b("div", {
|
|
651
651
|
className: "grid grid-cols-1 sm:grid-cols-3 gap-4 text-sm",
|
|
652
652
|
children: [
|
|
653
|
-
/* @__PURE__ */
|
|
653
|
+
/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
|
|
654
654
|
className: "text-text-secondary",
|
|
655
|
-
children:
|
|
656
|
-
}), /* @__PURE__ */
|
|
655
|
+
children: C("sessionDetails.autoStart", "Auto Start")
|
|
656
|
+
}), /* @__PURE__ */ y("p", {
|
|
657
657
|
className: "font-medium text-text-primary",
|
|
658
|
-
children:
|
|
658
|
+
children: k.autoStart ? C("sessionDetails.yes", "Yes") : C("sessionDetails.no", "No")
|
|
659
659
|
})] }),
|
|
660
|
-
/* @__PURE__ */
|
|
660
|
+
/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
|
|
661
661
|
className: "text-text-secondary",
|
|
662
|
-
children:
|
|
663
|
-
}), /* @__PURE__ */
|
|
662
|
+
children: C("sessionDetails.created", "Created")
|
|
663
|
+
}), /* @__PURE__ */ y("p", {
|
|
664
664
|
className: "font-medium text-text-primary",
|
|
665
|
-
children:
|
|
665
|
+
children: Xe(k.createdAt)
|
|
666
666
|
})] }),
|
|
667
|
-
/* @__PURE__ */
|
|
667
|
+
/* @__PURE__ */ b("div", { children: [/* @__PURE__ */ y("p", {
|
|
668
668
|
className: "text-text-secondary",
|
|
669
|
-
children:
|
|
670
|
-
}), /* @__PURE__ */
|
|
669
|
+
children: C("sessionDetails.updated", "Updated")
|
|
670
|
+
}), /* @__PURE__ */ y("p", {
|
|
671
671
|
className: "font-medium text-text-primary",
|
|
672
|
-
children:
|
|
672
|
+
children: Xe(k.updatedAt)
|
|
673
673
|
})] })
|
|
674
674
|
]
|
|
675
|
-
}),
|
|
675
|
+
}), k.exitCode !== null && k.exitCode !== void 0 && /* @__PURE__ */ b("div", {
|
|
676
676
|
className: "mt-4 pt-4 border-t border-border-default",
|
|
677
|
-
children: [/* @__PURE__ */
|
|
677
|
+
children: [/* @__PURE__ */ y("p", {
|
|
678
678
|
className: "text-sm text-text-secondary",
|
|
679
|
-
children:
|
|
680
|
-
}), /* @__PURE__ */
|
|
681
|
-
className: `font-medium ${
|
|
682
|
-
children:
|
|
679
|
+
children: C("sessionDetails.exitCode", "Exit Code")
|
|
680
|
+
}), /* @__PURE__ */ y("p", {
|
|
681
|
+
className: `font-medium ${k.exitCode === 0 ? "text-status-success-text" : "text-status-error-text"}`,
|
|
682
|
+
children: k.exitCode
|
|
683
683
|
})]
|
|
684
684
|
})]
|
|
685
685
|
})] }),
|
|
686
|
-
/* @__PURE__ */
|
|
686
|
+
/* @__PURE__ */ b(l, { children: [/* @__PURE__ */ y("div", {
|
|
687
687
|
className: "p-4 border-b border-border-default",
|
|
688
|
-
children: /* @__PURE__ */
|
|
688
|
+
children: /* @__PURE__ */ b("h3", {
|
|
689
689
|
className: "font-semibold text-text-primary flex items-center gap-2",
|
|
690
|
-
children: [/* @__PURE__ */
|
|
690
|
+
children: [/* @__PURE__ */ y(Ve, { className: "size-5" }), C("sessionDetails.tags", "Tags")]
|
|
691
691
|
})
|
|
692
|
-
}), /* @__PURE__ */
|
|
692
|
+
}), /* @__PURE__ */ y("div", {
|
|
693
693
|
className: "p-4",
|
|
694
|
-
children: /* @__PURE__ */
|
|
694
|
+
children: /* @__PURE__ */ y(ve, {
|
|
695
695
|
entityType: "VIBECONTROLS_SESSION",
|
|
696
|
-
entityId:
|
|
696
|
+
entityId: k.id
|
|
697
697
|
})
|
|
698
698
|
})] }),
|
|
699
|
-
/* @__PURE__ */
|
|
699
|
+
/* @__PURE__ */ y("div", {
|
|
700
700
|
id: "connection-log",
|
|
701
701
|
className: "scroll-mt-20",
|
|
702
|
-
children: /* @__PURE__ */
|
|
702
|
+
children: /* @__PURE__ */ y(l, {
|
|
703
703
|
className: "min-h-[40vh]",
|
|
704
|
-
children: /* @__PURE__ */
|
|
705
|
-
sessionId:
|
|
706
|
-
sessionName:
|
|
704
|
+
children: /* @__PURE__ */ y(Se, {
|
|
705
|
+
sessionId: k.id,
|
|
706
|
+
sessionName: k.name
|
|
707
707
|
})
|
|
708
708
|
})
|
|
709
709
|
})
|
|
710
710
|
]
|
|
711
711
|
}),
|
|
712
|
-
|
|
712
|
+
I && /* @__PURE__ */ b("div", {
|
|
713
713
|
ref: Vt,
|
|
714
714
|
className: "border-t border-border-default bg-bg-surface shrink-0",
|
|
715
715
|
children: [
|
|
716
|
-
/* @__PURE__ */
|
|
716
|
+
/* @__PURE__ */ b("div", {
|
|
717
717
|
className: "flex items-center bg-bg-sunken border-b border-border-default",
|
|
718
718
|
children: [
|
|
719
|
-
/* @__PURE__ */
|
|
719
|
+
/* @__PURE__ */ b("button", {
|
|
720
720
|
type: "button",
|
|
721
|
-
onClick: () =>
|
|
721
|
+
onClick: () => L(!1),
|
|
722
722
|
className: "flex items-center gap-1.5 px-3 py-2 text-text-secondary hover:text-text-primary transition-colors text-xs font-medium uppercase tracking-wide",
|
|
723
|
-
title:
|
|
723
|
+
title: C("sessionDetails.collapseTerminal", "Collapse terminal"),
|
|
724
724
|
children: [
|
|
725
|
-
/* @__PURE__ */
|
|
726
|
-
|
|
727
|
-
/* @__PURE__ */
|
|
725
|
+
/* @__PURE__ */ y(_, { className: "size-3.5" }),
|
|
726
|
+
C("sessionDetails.terminal", "Terminal"),
|
|
727
|
+
/* @__PURE__ */ y(Ee, { className: "size-3" })
|
|
728
728
|
]
|
|
729
729
|
}),
|
|
730
|
-
/* @__PURE__ */
|
|
730
|
+
/* @__PURE__ */ b("div", {
|
|
731
731
|
className: "flex items-center px-3 py-1.5 text-xs bg-bg-surface text-text-primary border-r border-border-subtle border-b-2 border-b-action-primary-bg",
|
|
732
|
-
children: [/* @__PURE__ */
|
|
732
|
+
children: [/* @__PURE__ */ y(_, { className: "size-3 mr-1.5" }), k.name]
|
|
733
733
|
}),
|
|
734
|
-
/* @__PURE__ */
|
|
735
|
-
/* @__PURE__ */
|
|
734
|
+
/* @__PURE__ */ y("div", { className: "flex-1" }),
|
|
735
|
+
/* @__PURE__ */ b("div", {
|
|
736
736
|
className: "flex items-center gap-1 px-2",
|
|
737
|
-
children: [X && /* @__PURE__ */
|
|
737
|
+
children: [X && /* @__PURE__ */ y("button", {
|
|
738
738
|
type: "button",
|
|
739
739
|
onClick: on,
|
|
740
740
|
className: "p-1 text-text-secondary hover:text-text-primary transition-colors",
|
|
741
|
-
title:
|
|
742
|
-
children: /* @__PURE__ */
|
|
743
|
-
}), /* @__PURE__ */
|
|
741
|
+
title: C("sessionDetails.openInNewTabShort", "Open in new tab"),
|
|
742
|
+
children: /* @__PURE__ */ y(Ae, { className: "size-3.5" })
|
|
743
|
+
}), /* @__PURE__ */ y("button", {
|
|
744
744
|
type: "button",
|
|
745
|
-
onClick: () =>
|
|
745
|
+
onClick: () => It((e) => !e),
|
|
746
746
|
className: "p-1 text-text-secondary hover:text-text-primary transition-colors",
|
|
747
|
-
title:
|
|
748
|
-
children:
|
|
747
|
+
title: Ft ? C("sessionDetails.restoreSize", "Restore size") : C("sessionDetails.maximize", "Maximize"),
|
|
748
|
+
children: y(Ft ? Pe : Ne, { className: "size-3.5" })
|
|
749
749
|
})]
|
|
750
750
|
})
|
|
751
751
|
]
|
|
752
752
|
}),
|
|
753
|
-
H && /* @__PURE__ */
|
|
753
|
+
H && /* @__PURE__ */ b("div", {
|
|
754
754
|
role: "status",
|
|
755
755
|
className: "flex items-start justify-between gap-3 px-3 py-2 bg-status-warning-bg/30 text-status-warning-text border-b border-status-warning-bg/50 text-xs",
|
|
756
|
-
children: [/* @__PURE__ */
|
|
756
|
+
children: [/* @__PURE__ */ b("div", {
|
|
757
757
|
className: "flex items-center gap-2 flex-1",
|
|
758
|
-
children: [/* @__PURE__ */
|
|
759
|
-
}), /* @__PURE__ */
|
|
758
|
+
children: [/* @__PURE__ */ y(m, { className: "size-3.5 shrink-0" }), /* @__PURE__ */ y("span", { children: C("sessionDetails.commandExited", "Command exited{{code}} — click Run Command to run it again.", { code: H.exitCode === null ? "" : ` (exit ${H.exitCode})` }) })]
|
|
759
|
+
}), /* @__PURE__ */ y("button", {
|
|
760
760
|
type: "button",
|
|
761
761
|
onClick: () => U(null),
|
|
762
762
|
className: "text-text-secondary hover:text-text-primary",
|
|
763
|
-
title:
|
|
764
|
-
children: /* @__PURE__ */
|
|
763
|
+
title: C("common.dismiss", "Dismiss"),
|
|
764
|
+
children: /* @__PURE__ */ y(Ue, { className: "size-3.5" })
|
|
765
765
|
})]
|
|
766
766
|
}),
|
|
767
|
-
/* @__PURE__ */
|
|
767
|
+
/* @__PURE__ */ y("div", {
|
|
768
768
|
className: `${un} bg-bg-inverse text-text-inverse`,
|
|
769
|
-
children:
|
|
769
|
+
children: R ? /* @__PURE__ */ y("div", {
|
|
770
770
|
className: "flex items-center justify-center h-full",
|
|
771
|
-
children: /* @__PURE__ */
|
|
771
|
+
children: /* @__PURE__ */ b("div", {
|
|
772
772
|
className: "text-center",
|
|
773
773
|
children: [
|
|
774
|
-
/* @__PURE__ */
|
|
775
|
-
/* @__PURE__ */
|
|
774
|
+
/* @__PURE__ */ y(g, { className: "size-8 text-text-secondary animate-spin mx-auto mb-3" }),
|
|
775
|
+
/* @__PURE__ */ b("p", {
|
|
776
776
|
className: "text-text-secondary text-sm",
|
|
777
777
|
children: [
|
|
778
|
-
|
|
778
|
+
C("sessionDetails.startingTerminal", "Starting terminal for"),
|
|
779
779
|
" ",
|
|
780
|
-
|
|
780
|
+
k.name,
|
|
781
781
|
"..."
|
|
782
782
|
]
|
|
783
783
|
}),
|
|
784
|
-
/* @__PURE__ */
|
|
784
|
+
/* @__PURE__ */ y("p", {
|
|
785
785
|
className: "text-text-tertiary text-xs mt-1",
|
|
786
|
-
children:
|
|
786
|
+
children: C("sessionDetails.settingUpTunnel", "Setting up session + web terminal tunnel")
|
|
787
787
|
})
|
|
788
788
|
]
|
|
789
789
|
})
|
|
790
|
-
}) :
|
|
790
|
+
}) : Rt ? /* @__PURE__ */ y("div", {
|
|
791
791
|
className: "flex items-center justify-center h-full",
|
|
792
|
-
children: /* @__PURE__ */
|
|
792
|
+
children: /* @__PURE__ */ b("div", {
|
|
793
793
|
className: "text-center max-w-md",
|
|
794
794
|
children: [
|
|
795
|
-
/* @__PURE__ */
|
|
796
|
-
/* @__PURE__ */
|
|
795
|
+
/* @__PURE__ */ y(m, { className: "size-8 text-status-error-text mx-auto mb-3" }),
|
|
796
|
+
/* @__PURE__ */ y("p", {
|
|
797
797
|
className: "text-status-error-text text-sm font-medium",
|
|
798
|
-
children:
|
|
798
|
+
children: C("sessionDetails.failedStartTerminal", "Failed to start terminal")
|
|
799
799
|
}),
|
|
800
|
-
/* @__PURE__ */
|
|
800
|
+
/* @__PURE__ */ y("p", {
|
|
801
801
|
className: "text-text-secondary text-xs mt-2",
|
|
802
|
-
children:
|
|
802
|
+
children: Rt
|
|
803
803
|
}),
|
|
804
|
-
/* @__PURE__ */
|
|
804
|
+
/* @__PURE__ */ y("button", {
|
|
805
805
|
type: "button",
|
|
806
806
|
onClick: tn,
|
|
807
807
|
className: "mt-4 px-4 py-2 bg-bg-muted text-text-primary text-sm rounded-md hover:bg-bg-sunken transition-colors",
|
|
808
|
-
children:
|
|
808
|
+
children: C("sessionDetails.retry", "Retry")
|
|
809
809
|
})
|
|
810
810
|
]
|
|
811
811
|
})
|
|
812
|
-
}) : X ? /* @__PURE__ */
|
|
813
|
-
isShared:
|
|
814
|
-
collaborators:
|
|
815
|
-
currentUserId:
|
|
816
|
-
permission:
|
|
817
|
-
onRequestControl:
|
|
818
|
-
onReleaseControl:
|
|
819
|
-
isRequestingControl:
|
|
820
|
-
isReleasingControl:
|
|
812
|
+
}) : X ? /* @__PURE__ */ y(Ce, {
|
|
813
|
+
isShared: P,
|
|
814
|
+
collaborators: Ct,
|
|
815
|
+
currentUserId: T,
|
|
816
|
+
permission: Mt,
|
|
817
|
+
onRequestControl: Nt,
|
|
818
|
+
onReleaseControl: Pt,
|
|
819
|
+
isRequestingControl: Et,
|
|
820
|
+
isReleasingControl: Ot,
|
|
821
821
|
className: "h-full",
|
|
822
|
-
children: /* @__PURE__ */
|
|
822
|
+
children: /* @__PURE__ */ y("iframe", {
|
|
823
823
|
src: X,
|
|
824
|
-
title: `Terminal - ${
|
|
824
|
+
title: `Terminal - ${k.name}`,
|
|
825
825
|
className: "w-full h-full border-0",
|
|
826
826
|
allow: "clipboard-read; clipboard-write",
|
|
827
827
|
onError: Yt
|
|
828
828
|
})
|
|
829
|
-
}) : K && (Gt || J) ? /* @__PURE__ */
|
|
829
|
+
}) : K && (Gt || J) ? /* @__PURE__ */ y("div", {
|
|
830
830
|
className: "flex items-center justify-center h-full",
|
|
831
|
-
children: /* @__PURE__ */
|
|
831
|
+
children: /* @__PURE__ */ y("div", {
|
|
832
832
|
className: "text-center",
|
|
833
|
-
children: J ? /* @__PURE__ */
|
|
834
|
-
/* @__PURE__ */
|
|
835
|
-
/* @__PURE__ */
|
|
833
|
+
children: J ? /* @__PURE__ */ b(v, { children: [
|
|
834
|
+
/* @__PURE__ */ y(m, { className: "size-8 text-status-error mx-auto mb-3" }),
|
|
835
|
+
/* @__PURE__ */ y("p", {
|
|
836
836
|
className: "text-text-secondary text-sm",
|
|
837
|
-
children:
|
|
837
|
+
children: C("sessionDetails.terminalCapabilityFailed", "Could not prepare terminal access")
|
|
838
838
|
}),
|
|
839
|
-
/* @__PURE__ */
|
|
839
|
+
/* @__PURE__ */ y("p", {
|
|
840
840
|
className: "text-text-tertiary text-xs mt-1",
|
|
841
841
|
children: J
|
|
842
842
|
}),
|
|
843
|
-
/* @__PURE__ */
|
|
843
|
+
/* @__PURE__ */ y("button", {
|
|
844
844
|
type: "button",
|
|
845
845
|
onClick: Yt,
|
|
846
846
|
className: "mt-4 px-4 py-2 bg-bg-muted text-text-primary text-sm rounded-md hover:bg-bg-sunken transition-colors",
|
|
847
|
-
children:
|
|
847
|
+
children: C("sessionDetails.retry", "Retry")
|
|
848
848
|
})
|
|
849
|
-
] }) : /* @__PURE__ */
|
|
849
|
+
] }) : /* @__PURE__ */ b(v, { children: [/* @__PURE__ */ y(g, { className: "size-6 text-text-tertiary mx-auto mb-3 animate-spin" }), /* @__PURE__ */ y("p", {
|
|
850
850
|
className: "text-text-secondary text-sm",
|
|
851
|
-
children:
|
|
851
|
+
children: C("sessionDetails.preparingTerminal", "Preparing terminal…")
|
|
852
852
|
})] })
|
|
853
853
|
})
|
|
854
|
-
}) : /* @__PURE__ */
|
|
854
|
+
}) : /* @__PURE__ */ y("div", {
|
|
855
855
|
className: "flex items-center justify-center h-full",
|
|
856
|
-
children: /* @__PURE__ */
|
|
856
|
+
children: /* @__PURE__ */ b("div", {
|
|
857
857
|
className: "text-center",
|
|
858
858
|
children: [
|
|
859
|
-
/* @__PURE__ */
|
|
860
|
-
/* @__PURE__ */
|
|
859
|
+
/* @__PURE__ */ y(_, { className: "size-8 text-text-tertiary mx-auto mb-3" }),
|
|
860
|
+
/* @__PURE__ */ y("p", {
|
|
861
861
|
className: "text-text-secondary text-sm",
|
|
862
|
-
children:
|
|
862
|
+
children: C("sessionDetails.noTerminalRunning", "No terminal running")
|
|
863
863
|
}),
|
|
864
|
-
/* @__PURE__ */
|
|
864
|
+
/* @__PURE__ */ y("p", {
|
|
865
865
|
className: "text-text-tertiary text-xs mt-1",
|
|
866
|
-
children:
|
|
866
|
+
children: A ? C("sessionDetails.clickOpenTerminalHint", "Click \"Open Terminal\" to create a tmux session with a browser terminal.") : C("sessionDetails.noAgentForSession", "No agent is assigned to this session.")
|
|
867
867
|
}),
|
|
868
|
-
|
|
868
|
+
A && /* @__PURE__ */ y("button", {
|
|
869
869
|
type: "button",
|
|
870
870
|
onClick: tn,
|
|
871
|
-
disabled:
|
|
871
|
+
disabled: R,
|
|
872
872
|
className: "mt-4 px-4 py-2 bg-bg-muted text-text-primary text-sm rounded-md hover:bg-bg-sunken transition-colors disabled:opacity-50",
|
|
873
|
-
children:
|
|
873
|
+
children: R ? C("sessionDetails.opening", "Opening...") : C("sessionDetails.openTerminal", "Open Terminal")
|
|
874
874
|
})
|
|
875
875
|
]
|
|
876
876
|
})
|
|
@@ -878,27 +878,27 @@ function Qe() {
|
|
|
878
878
|
})
|
|
879
879
|
]
|
|
880
880
|
}),
|
|
881
|
-
!
|
|
881
|
+
!I && (X || Rt) && /* @__PURE__ */ y("div", {
|
|
882
882
|
className: "border-t border-border-default bg-bg-sunken shrink-0",
|
|
883
|
-
children: /* @__PURE__ */
|
|
883
|
+
children: /* @__PURE__ */ b("button", {
|
|
884
884
|
type: "button",
|
|
885
|
-
onClick: () =>
|
|
885
|
+
onClick: () => L(!0),
|
|
886
886
|
className: "flex items-center gap-1.5 px-3 py-1.5 text-text-secondary hover:text-text-primary transition-colors text-xs font-medium uppercase tracking-wide w-full",
|
|
887
|
-
title:
|
|
887
|
+
title: C("sessionDetails.expandTerminal", "Expand terminal"),
|
|
888
888
|
children: [
|
|
889
|
-
/* @__PURE__ */
|
|
890
|
-
|
|
889
|
+
/* @__PURE__ */ y(_, { className: "size-3.5" }),
|
|
890
|
+
C("sessionDetails.terminal", "Terminal"),
|
|
891
891
|
" - ",
|
|
892
|
-
|
|
893
|
-
/* @__PURE__ */
|
|
892
|
+
k.name,
|
|
893
|
+
/* @__PURE__ */ y(De, { className: "size-3 ml-1" })
|
|
894
894
|
]
|
|
895
895
|
})
|
|
896
896
|
}),
|
|
897
|
-
/* @__PURE__ */
|
|
897
|
+
/* @__PURE__ */ y(ce, {
|
|
898
898
|
isOpen: zt,
|
|
899
899
|
onClose: () => B(!1),
|
|
900
900
|
onConfirm: () => {
|
|
901
|
-
B(!1),
|
|
901
|
+
B(!1), E("/billing/plans");
|
|
902
902
|
},
|
|
903
903
|
title: le("session").title,
|
|
904
904
|
message: le("session").message,
|
|
@@ -906,22 +906,22 @@ function Qe() {
|
|
|
906
906
|
cancelLabel: "Dismiss",
|
|
907
907
|
variant: "warning"
|
|
908
908
|
}),
|
|
909
|
-
/* @__PURE__ */
|
|
909
|
+
/* @__PURE__ */ y(ce, {
|
|
910
910
|
isOpen: Bt,
|
|
911
911
|
onClose: () => V(!1),
|
|
912
912
|
onConfirm: () => {
|
|
913
913
|
V(!1), nn();
|
|
914
914
|
},
|
|
915
|
-
title:
|
|
916
|
-
message:
|
|
917
|
-
confirmLabel:
|
|
918
|
-
cancelLabel:
|
|
915
|
+
title: C("sessionDetails.restartTerminalConfirmTitle", "Restart terminal?"),
|
|
916
|
+
message: C("sessionDetails.restartTerminalConfirmBody", "This kills the current tmux session and re-runs the command from scratch. Any in-progress output will be lost."),
|
|
917
|
+
confirmLabel: C("sessionDetails.restartTerminalConfirmLabel", "Restart terminal"),
|
|
918
|
+
cancelLabel: C("common.cancel", "Cancel"),
|
|
919
919
|
variant: "warning"
|
|
920
920
|
})
|
|
921
921
|
]
|
|
922
922
|
});
|
|
923
923
|
}
|
|
924
924
|
//#endregion
|
|
925
|
-
export {
|
|
925
|
+
export { Ze as SessionDetailsPage };
|
|
926
926
|
|
|
927
927
|
//# sourceMappingURL=SessionDetailsPage.js.map
|