@hachej/boring-workspace 0.1.42 → 0.1.44

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/app-front.js CHANGED
@@ -1,16 +1,16 @@
1
- import { jsx as f, jsxs as ye, Fragment as ce } from "react/jsx-runtime";
2
- import { useEffect as A, useSyncExternalStore as vr, useMemo as W, useState as O, useCallback as w, useRef as j, useLayoutEffect as Sr } from "react";
3
- import { PiChatPanel as br, usePiSessions as yr } from "@hachej/boring-agent/front";
4
- import { aj as Pr, at as ze, au as bn, av as yn, aw as Pn, ax as An, ay as Ve, az as ht, aA as vt, aB as En, aC as Ar, aD as qe, aE as Er, U as un, aF as wr, q as Tr, aG as Nr, u as wn, aH as Rr, ag as Dr, aI as _r } from "./WorkspaceProvider-DkZAxsYo.js";
5
- import { T as Lr, C as Or, r as dn, w as xr, W as fn } from "./WorkspaceLoadingState-yp4vNmrT.js";
6
- import { Sun as Mr, Moon as Cr } from "lucide-react";
7
- import { IconButton as Wr, ErrorState as Fr } from "@hachej/boring-ui-kit";
8
- function Gr() {
9
- const { theme: e, toggleTheme: n } = Pr(), r = e === "dark";
10
- return A(() => {
1
+ import { jsx as d, jsxs as ye, Fragment as ue } from "react/jsx-runtime";
2
+ import { useEffect as E, useSyncExternalStore as Nr, useMemo as F, useState as O, useCallback as w, useRef as J, useLayoutEffect as Dr } from "react";
3
+ import { PiChatPanel as _r, usePiSessions as Lr } from "@hachej/boring-agent/front";
4
+ import { aj as Or, at as ke, au as wn, av as Rn, aw as Tn, ax as Nn, ay as Xe, az as St, aA as yt, aB as Dn, aC as xr, aD as Ye, aE as Mr, U as pn, aF as Cr, q as Fr, aG as Wr, u as _n, aH as Gr, ag as Ir, aI as $r } from "./WorkspaceProvider-CSwoKjTp.js";
5
+ import { T as Ur, C as Kr, r as hn, w as Hr, W as vn } from "./WorkspaceLoadingState-BoFzsDji.js";
6
+ import { Sun as Jr, Moon as jr } from "lucide-react";
7
+ import { IconButton as Br, ErrorState as qr } from "@hachej/boring-ui-kit";
8
+ function zr() {
9
+ const { theme: e, toggleTheme: n } = Or(), r = e === "dark";
10
+ return E(() => {
11
11
  typeof document > "u" || document.documentElement.classList.toggle("dark", r);
12
- }, [r]), /* @__PURE__ */ f(
13
- Wr,
12
+ }, [r]), /* @__PURE__ */ d(
13
+ Br,
14
14
  {
15
15
  type: "button",
16
16
  variant: "ghost",
@@ -18,53 +18,53 @@ function Gr() {
18
18
  onClick: n,
19
19
  "aria-label": "Toggle theme",
20
20
  title: r ? "Switch to light theme" : "Switch to dark theme",
21
- children: r ? /* @__PURE__ */ f(Mr, { className: "h-4 w-4" }) : /* @__PURE__ */ f(Cr, { className: "h-4 w-4" })
21
+ children: r ? /* @__PURE__ */ d(Jr, { className: "h-4 w-4" }) : /* @__PURE__ */ d(jr, { className: "h-4 w-4" })
22
22
  }
23
23
  );
24
24
  }
25
- function Ir() {
25
+ function Vr() {
26
26
  const e = `s${Date.now()}`;
27
27
  return {
28
28
  sessions: [{ id: e, title: "New session", updatedAt: Date.now() }],
29
29
  activeId: e
30
30
  };
31
31
  }
32
- function $r(e, n) {
32
+ function Yr(e, n) {
33
33
  var r;
34
34
  if (typeof localStorage > "u") return n();
35
35
  try {
36
36
  const i = localStorage.getItem(e);
37
37
  if (i) {
38
- const o = JSON.parse(i), s = Array.isArray(o.sessions) ? o.sessions : Array.isArray(o.items) ? o.items : null;
39
- if (s)
40
- return { sessions: s, activeId: o.activeId ?? ((r = s[0]) == null ? void 0 : r.id) ?? "" };
38
+ const s = JSON.parse(i), o = Array.isArray(s.sessions) ? s.sessions : Array.isArray(s.items) ? s.items : null;
39
+ if (o)
40
+ return { sessions: o, activeId: s.activeId ?? ((r = o[0]) == null ? void 0 : r.id) ?? "" };
41
41
  }
42
42
  } catch {
43
43
  }
44
44
  return n();
45
45
  }
46
- function Ur(e, n) {
46
+ function kr(e, n) {
47
47
  if (!(typeof localStorage > "u"))
48
48
  try {
49
49
  localStorage.setItem(e, JSON.stringify(n));
50
50
  } catch {
51
51
  }
52
52
  }
53
- function Kr(e = {}) {
54
- const n = e.storageKey ?? "workspace:sessions", r = e.initial ?? Ir;
55
- let i = $r(n, r);
56
- const o = /* @__PURE__ */ new Set(), s = (c) => {
57
- i = c, Ur(n, i), o.forEach((u) => u());
53
+ function Xr(e = {}) {
54
+ const n = e.storageKey ?? "workspace:sessions", r = e.initial ?? Vr;
55
+ let i = Yr(n, r);
56
+ const s = /* @__PURE__ */ new Set(), o = (c) => {
57
+ i = c, kr(n, i), s.forEach((u) => u());
58
58
  };
59
59
  return {
60
60
  getState: () => i,
61
61
  subscribe(c) {
62
- return o.add(c), () => {
63
- o.delete(c);
62
+ return s.add(c), () => {
63
+ s.delete(c);
64
64
  };
65
65
  },
66
66
  switchTo(c) {
67
- s({ ...i, activeId: c });
67
+ o({ ...i, activeId: c });
68
68
  },
69
69
  create() {
70
70
  const c = `s${Date.now()}`, u = {
@@ -72,58 +72,58 @@ function Kr(e = {}) {
72
72
  title: "New session",
73
73
  updatedAt: Date.now()
74
74
  };
75
- s({ sessions: [u, ...i.sessions], activeId: c });
75
+ o({ sessions: [u, ...i.sessions], activeId: c });
76
76
  },
77
77
  remove(c) {
78
78
  var y;
79
- const u = i.sessions.filter((b) => b.id !== c), S = i.activeId === c ? ((y = u[0]) == null ? void 0 : y.id) ?? "" : i.activeId;
80
- s({ sessions: u, activeId: S });
79
+ const u = i.sessions.filter((S) => S.id !== c), b = i.activeId === c ? ((y = u[0]) == null ? void 0 : y.id) ?? "" : i.activeId;
80
+ o({ sessions: u, activeId: b });
81
81
  }
82
82
  };
83
83
  }
84
- function Jr(e) {
85
- return vr(e.subscribe, e.getState, e.getState);
84
+ function Qr(e) {
85
+ return Nr(e.subscribe, e.getState, e.getState);
86
86
  }
87
- const jr = 500, Br = 1e4;
88
- function gn(e) {
87
+ const Zr = 500, ei = 1e4;
88
+ function bn(e) {
89
89
  return new Promise((n, r) => {
90
90
  let i;
91
- const o = () => {
92
- i && globalThis.clearTimeout(i), e.removeEventListener("abort", s);
93
- }, s = () => {
94
- o(), r(new DOMException("Warmup aborted", "AbortError"));
91
+ const s = () => {
92
+ i && globalThis.clearTimeout(i), e.removeEventListener("abort", o);
93
+ }, o = () => {
94
+ s(), r(new DOMException("Warmup aborted", "AbortError"));
95
95
  };
96
96
  if (e.aborted) {
97
- s();
97
+ o();
98
98
  return;
99
99
  }
100
100
  i = globalThis.setTimeout(() => {
101
- o(), n();
102
- }, jr), e.addEventListener("abort", s, { once: !0 });
101
+ s(), n();
102
+ }, Zr), e.addEventListener("abort", o, { once: !0 });
103
103
  });
104
104
  }
105
- async function Hr(e) {
105
+ async function ti(e) {
106
106
  const n = e.body;
107
- if (!n) return qe(await Ve(e));
107
+ if (!n) return Ye(await Xe(e));
108
108
  const r = n.getReader(), i = new TextDecoder();
109
- let o = "";
109
+ let s = "";
110
110
  try {
111
111
  for (; ; ) {
112
- const { done: s, value: c } = await r.read();
112
+ const { done: o, value: c } = await r.read();
113
113
  if (c) {
114
- o += i.decode(c, { stream: !s });
115
- const u = qe(o);
114
+ s += i.decode(c, { stream: !o });
115
+ const u = Ye(s);
116
116
  if (u) return u;
117
117
  }
118
- if (s)
119
- return o += i.decode(), qe(o);
118
+ if (o)
119
+ return s += i.decode(), Ye(s);
120
120
  }
121
121
  } finally {
122
122
  await r.cancel().catch(() => {
123
123
  });
124
124
  }
125
125
  }
126
- function qr(e) {
126
+ function ni(e) {
127
127
  if (!((e == null ? void 0 : e.runtimeDependenciesState) !== "preparing" && (e == null ? void 0 : e.runtimeDependenciesState) !== "ready" && (e == null ? void 0 : e.runtimeDependenciesState) !== "failed"))
128
128
  return {
129
129
  state: e.runtimeDependenciesState,
@@ -131,13 +131,13 @@ function qr(e) {
131
131
  ...e.runtimeDependenciesRequirement ? { requirement: e.runtimeDependenciesRequirement } : {}
132
132
  };
133
133
  }
134
- async function zr(e) {
134
+ async function ri(e) {
135
135
  if (!e.ok) {
136
- const o = await Ve(e);
137
- if (ht(o)) return { status: "preparing" };
138
- throw new Error(vt(o) ?? `/api/v1/ready-status failed with ${e.status}`);
136
+ const s = await Xe(e);
137
+ if (St(s)) return { status: "preparing" };
138
+ throw new Error(yt(s) ?? `/api/v1/ready-status failed with ${e.status}`);
139
139
  }
140
- const n = await Hr(e), r = qr(n), i = Ar(n);
140
+ const n = await ti(e), r = ni(n), i = xr(n);
141
141
  if ((n == null ? void 0 : n.state) === "degraded" || (n == null ? void 0 : n.state) === "failed") {
142
142
  if (i && (r == null ? void 0 : r.state) === "failed")
143
143
  return { status: "ready", runtimeDependencies: r };
@@ -145,135 +145,132 @@ async function zr(e) {
145
145
  }
146
146
  return i ? { status: "ready", ...r ? { runtimeDependencies: r } : {} } : { status: "preparing", ...r ? { runtimeDependencies: r } : {} };
147
147
  }
148
- async function Vr({
148
+ async function ii({
149
149
  apiBaseUrl: e,
150
150
  path: n,
151
151
  headers: r,
152
152
  signal: i,
153
- workspaceId: o
153
+ workspaceId: s
154
154
  }) {
155
- const s = new AbortController(), c = globalThis.setTimeout(() => s.abort(new DOMException("Warmup attempt timed out", "TimeoutError")), Br), u = () => s.abort(i.reason);
155
+ const o = new AbortController(), c = globalThis.setTimeout(() => o.abort(new DOMException("Warmup attempt timed out", "TimeoutError")), ei), u = () => o.abort(i.reason);
156
156
  i.aborted && u(), i.addEventListener("abort", u, { once: !0 });
157
157
  try {
158
- const S = await fetch(Pn(e, n), { headers: r, signal: s.signal });
159
- if (An(n)) return await zr(S);
160
- const y = await Ve(S);
161
- if (!S.ok) {
162
- const b = ht(y);
163
- if (b) return { status: "preparing", ...b };
164
- throw new Error(vt(y) ?? `${n} failed with ${S.status}`);
158
+ const b = await fetch(Tn(e, n), { headers: r, signal: o.signal });
159
+ if (Nn(n)) return await ri(b);
160
+ const y = await Xe(b);
161
+ if (!b.ok) {
162
+ const S = St(y);
163
+ if (S) return { status: "preparing", ...S };
164
+ throw new Error(yt(y) ?? `${n} failed with ${b.status}`);
165
165
  }
166
- return y && typeof y == "object" && En(e, r["x-boring-workspace-id"] ?? o, n, y), { status: "ready" };
167
- } catch (S) {
168
- if (i.aborted) throw S;
169
- if (s.signal.aborted || S instanceof TypeError) return { status: "preparing" };
170
- throw S;
166
+ return y && typeof y == "object" && Dn(e, r["x-boring-workspace-id"] ?? s, n, y), { status: "ready" };
167
+ } catch (b) {
168
+ if (i.aborted) throw b;
169
+ if (o.signal.aborted || b instanceof TypeError) return { status: "preparing" };
170
+ throw b;
171
171
  } finally {
172
172
  globalThis.clearTimeout(c), i.removeEventListener("abort", u);
173
173
  }
174
174
  }
175
- function Yr({
175
+ function si({
176
176
  workspaceId: e,
177
177
  requestHeaders: n,
178
178
  apiBaseUrl: r,
179
- preloadPaths: i = bn,
180
- provisionWorkspace: o = !0,
181
- onStatusChange: s
179
+ preloadPaths: i = wn,
180
+ provisionWorkspace: s = !0,
181
+ onStatusChange: o
182
182
  }) {
183
- return A(() => {
183
+ return E(() => {
184
184
  let c = !1;
185
- const u = new AbortController(), S = ze(e, n);
185
+ const u = new AbortController(), b = ke(e, n);
186
186
  async function y() {
187
- var b, B;
188
- s == null || s({ status: "preparing" });
187
+ var S, j;
188
+ o == null || o({ status: "preparing" });
189
189
  try {
190
- const F = yn(i, o), k = (p) => Vr({
190
+ const W = Rn(i, s), V = (p) => ii({
191
191
  apiBaseUrl: r,
192
192
  path: p,
193
- headers: S,
193
+ headers: b,
194
194
  signal: u.signal,
195
195
  workspaceId: e
196
196
  });
197
- let T = await Promise.all(F.map(async (p) => ({ path: p, result: await k(p) })));
197
+ let R = await Promise.all(W.map(async (p) => ({ path: p, result: await V(p) })));
198
198
  if (c || u.signal.aborted) return;
199
- let h = (b = T.find((p) => p.result.runtimeDependencies)) == null ? void 0 : b.result.runtimeDependencies, N = T.filter((p) => p.result.status === "preparing");
200
- for (; N.length > 0; ) {
199
+ let h = (S = R.find((p) => p.result.runtimeDependencies)) == null ? void 0 : S.result.runtimeDependencies, T = R.filter((p) => p.result.status === "preparing");
200
+ for (; T.length > 0; ) {
201
201
  let p;
202
- for (const R of N)
203
- if (R.result.status === "preparing" && R.result.requirement) {
204
- p = R.result.requirement;
202
+ for (const N of T)
203
+ if (N.result.status === "preparing" && N.result.requirement) {
204
+ p = N.result.requirement;
205
205
  break;
206
206
  }
207
- if (s == null || s({ status: "preparing", message: "Workspace is still preparing", ...p ? { requirement: p } : {} }), await gn(u.signal), c || u.signal.aborted || (T = await Promise.all(N.map(async (R) => ({ path: R.path, result: await k(R.path) }))), c || u.signal.aborted)) return;
208
- h = ((B = T.find((R) => R.result.runtimeDependencies)) == null ? void 0 : B.result.runtimeDependencies) ?? h, N = T.filter((R) => R.result.status === "preparing");
207
+ if (o == null || o({ status: "preparing", message: "Workspace is still preparing", ...p ? { requirement: p } : {} }), await bn(u.signal), c || u.signal.aborted || (R = await Promise.all(T.map(async (N) => ({ path: N.path, result: await V(N.path) }))), c || u.signal.aborted)) return;
208
+ h = ((j = R.find((N) => N.result.runtimeDependencies)) == null ? void 0 : j.result.runtimeDependencies) ?? h, T = R.filter((N) => N.result.status === "preparing");
209
209
  }
210
- for (s == null || s({ status: "ready", ...h ? { runtimeDependencies: h } : {} }); (h == null ? void 0 : h.state) === "preparing"; ) {
211
- if (await gn(u.signal), c || u.signal.aborted) return;
212
- const p = await k("/api/v1/ready-status");
210
+ for (o == null || o({ status: "ready", ...h ? { runtimeDependencies: h } : {} }); (h == null ? void 0 : h.state) === "preparing"; ) {
211
+ if (await bn(u.signal), c || u.signal.aborted) return;
212
+ const p = await V("/api/v1/ready-status");
213
213
  if (c || u.signal.aborted) return;
214
- h = p.runtimeDependencies, h && (s == null || s({ status: "ready", runtimeDependencies: h }));
214
+ h = p.runtimeDependencies, h && (o == null || o({ status: "ready", runtimeDependencies: h }));
215
215
  }
216
- } catch (F) {
216
+ } catch (W) {
217
217
  if (c || u.signal.aborted) return;
218
- s == null || s({
218
+ o == null || o({
219
219
  status: "failed",
220
- message: F instanceof Error ? F.message : "Workspace failed to prepare"
220
+ message: W instanceof Error ? W.message : "Workspace failed to prepare"
221
221
  });
222
222
  }
223
223
  }
224
224
  return y(), () => {
225
225
  c = !0, u.abort();
226
226
  };
227
- }, [r, s, i, o, n, e]), null;
227
+ }, [r, o, i, s, n, e]), null;
228
228
  }
229
- function kr(e) {
229
+ function oi(e) {
230
230
  return typeof (e == null ? void 0 : e.id) == "string" ? e.id : null;
231
231
  }
232
- function He(e, n, r) {
232
+ function Ve(e, n, r) {
233
233
  if (e.includes(r)) return e;
234
- const i = n ? e.indexOf(n) : -1, o = i >= 0 ? i + 1 : e.length;
235
- return [...e.slice(0, o), r, ...e.slice(o)];
234
+ const i = n ? e.indexOf(n) : -1, s = i >= 0 ? i + 1 : e.length;
235
+ return [...e.slice(0, s), r, ...e.slice(s)];
236
236
  }
237
- function mn(e, n, r) {
237
+ function Sn(e, n, r) {
238
238
  if (e.includes(r)) return e;
239
239
  if (e.length === 0) return [r];
240
- const i = n ? e.indexOf(n) : -1, o = i >= 0 ? i : 0;
241
- return e.map((s, c) => c === o ? r : s);
242
- }
243
- function Xr(e, n) {
244
- return !!(e && e.title === n && e.turnCount === 0);
240
+ const i = n ? e.indexOf(n) : -1, s = i >= 0 ? i : 0;
241
+ return e.map((o, c) => c === s ? r : o);
245
242
  }
246
- function Qr(e, n) {
243
+ function ai(e, n) {
247
244
  return e.endsWith(":surface") ? e.slice(0, -8) : n;
248
245
  }
249
- function gt(e, n, r) {
250
- const [i, o] = O(() => dn(e, n, r));
251
- A(() => {
252
- o(dn(e, n, r));
246
+ function ht(e, n, r) {
247
+ const [i, s] = O(() => hn(e, n, r));
248
+ E(() => {
249
+ s(hn(e, n, r));
253
250
  }, [e, n, r]);
254
- const s = w(
251
+ const o = w(
255
252
  (c) => {
256
- o(c), xr(e, c, r);
253
+ s(c), Hr(e, c, r);
257
254
  },
258
255
  [r, e]
259
256
  );
260
- return [i, s];
257
+ return [i, o];
261
258
  }
262
- const mt = {}, Zr = [], pn = { status: "preparing" }, hn = {
259
+ const vt = {}, li = [], yn = { status: "preparing" }, Pn = {
263
260
  openTabs: [],
264
261
  activeTab: null
265
262
  };
266
- function ei({ status: e }) {
267
- const n = e.status === "ready" ? void 0 : e.requirement, r = e.status !== "failed", i = r ? n === "workspace-fs" ? "Preparing files…" : n === "sandbox-exec" ? "Waking sandbox…" : n === "ui-bridge" ? "Connecting workspace UI…" : "Preparing workspace…" : "Workspace workbench failed", o = e.status === "failed" ? e.message : "Chat is ready while files, tools, and workspace panels finish warming up.";
268
- return /* @__PURE__ */ f("div", { className: "flex h-full min-h-0 items-center justify-center bg-background px-6 text-center", children: /* @__PURE__ */ ye("div", { className: "max-w-sm rounded-2xl border border-border bg-card p-5 shadow-sm", children: [
269
- r ? /* @__PURE__ */ f("div", { className: "mx-auto mb-3 h-7 w-7 rounded-full border-2 border-muted-foreground/20 border-t-foreground animate-spin", "aria-hidden": "true" }) : null,
270
- /* @__PURE__ */ f("div", { className: "text-sm font-semibold text-foreground", children: i }),
271
- /* @__PURE__ */ f("p", { className: "mt-2 text-sm text-muted-foreground", children: o }),
272
- e.status === "failed" ? /* @__PURE__ */ f("p", { className: "mt-3 text-xs text-muted-foreground", children: "Reload the workspace to retry." }) : null
263
+ function ci({ status: e }) {
264
+ const n = e.status === "ready" ? void 0 : e.requirement, r = e.status !== "failed", i = r ? n === "workspace-fs" ? "Preparing files…" : n === "sandbox-exec" ? "Preparing secure runtime…" : n === "ui-bridge" ? "Connecting workspace…" : "Preparing workspace…" : "Workspace workbench failed", s = e.status === "failed" ? e.message : "Chat is ready while files, tools, and workspace panels finish warming up.";
265
+ return /* @__PURE__ */ d("div", { className: "flex h-full min-h-0 items-center justify-center bg-background px-6 text-center", children: /* @__PURE__ */ ye("div", { className: "max-w-sm rounded-2xl border border-border bg-card p-5 shadow-sm", children: [
266
+ r ? /* @__PURE__ */ d("div", { className: "mx-auto mb-3 h-7 w-7 rounded-full border-2 border-muted-foreground/20 border-t-foreground animate-spin", "aria-hidden": "true" }) : null,
267
+ /* @__PURE__ */ d("div", { className: "text-sm font-semibold text-foreground", children: i }),
268
+ /* @__PURE__ */ d("p", { className: "mt-2 text-sm text-muted-foreground", children: s }),
269
+ e.status === "failed" ? /* @__PURE__ */ d("p", { className: "mt-3 text-xs text-muted-foreground", children: "Reload the workspace to retry." }) : null
273
270
  ] }) });
274
271
  }
275
- function ti(e) {
276
- const n = e.workspaceId ?? ni(e.requestHeaders) ?? e.storageKey, r = yr({
272
+ function ui(e) {
273
+ const n = e.workspaceId ?? di(e.requestHeaders) ?? e.storageKey, r = Lr({
277
274
  apiBaseUrl: e.apiBaseUrl,
278
275
  workspaceId: n,
279
276
  storageScope: n,
@@ -284,18 +281,18 @@ function ti(e) {
284
281
  });
285
282
  return { ...r, workspaceId: r.dataStorageScope };
286
283
  }
287
- function ni(e) {
284
+ function di(e) {
288
285
  return (e == null ? void 0 : e["x-boring-workspace-id"]) ?? (e == null ? void 0 : e["X-Boring-Workspace-Id"]) ?? null;
289
286
  }
290
- function ri(e) {
291
- const n = e.reloaded ? "Agent plugins reloaded." : "Agent plugins will reload on the next message.", r = Array.isArray(e.diagnostics) ? e.diagnostics.map((i) => i.message).filter((i) => !!i) : [];
287
+ function fi(e) {
288
+ const n = e.reloaded ? "Extensions reloaded." : "Extensions will reload on the next message.", r = Array.isArray(e.diagnostics) ? e.diagnostics.map((i) => i.message).filter((i) => !!i) : [];
292
289
  return r.length > 0 ? `${n}
293
290
 
294
291
  Warnings:
295
292
  ${r.join(`
296
293
  `)}` : n;
297
294
  }
298
- function ii(e) {
295
+ function gi(e) {
299
296
  var n;
300
297
  try {
301
298
  return ((n = globalThis.localStorage) == null ? void 0 : n.getItem(e)) ?? null;
@@ -303,20 +300,20 @@ function ii(e) {
303
300
  return null;
304
301
  }
305
302
  }
306
- function vn(e, n) {
303
+ function En(e, n) {
307
304
  var r;
308
305
  try {
309
306
  const i = (r = globalThis.localStorage) == null ? void 0 : r.getItem(e);
310
307
  if (!i) return null;
311
- const o = JSON.parse(i), s = Array.isArray(o.ids) ? o.ids.filter((u) => typeof u == "string" && u.length > 0) : [];
312
- if (s.length === 0) return null;
313
- const c = typeof o.activeId == "string" && s.includes(o.activeId) ? o.activeId : s[0];
314
- return { workspaceId: n, ids: s, activeId: c };
308
+ const s = JSON.parse(i), o = Array.isArray(s.ids) ? s.ids.filter((u) => typeof u == "string" && u.length > 0) : [];
309
+ if (o.length === 0) return null;
310
+ const c = typeof s.activeId == "string" && o.includes(s.activeId) ? s.activeId : o[0];
311
+ return { workspaceId: n, ids: o, activeId: c };
315
312
  } catch {
316
313
  return null;
317
314
  }
318
315
  }
319
- function oi(e, n) {
316
+ function mi(e, n) {
320
317
  var r, i;
321
318
  try {
322
319
  if (n.ids.length === 0) {
@@ -330,18 +327,18 @@ function oi(e, n) {
330
327
  } catch {
331
328
  }
332
329
  }
333
- function Sn(e, n) {
330
+ function An(e, n) {
334
331
  var r;
335
332
  try {
336
333
  const i = (r = globalThis.localStorage) == null ? void 0 : r.getItem(e);
337
334
  if (!i) return null;
338
- const o = JSON.parse(i), s = Array.isArray(o.ids) ? o.ids.filter((c) => typeof c == "string" && c.length > 0) : [];
339
- return { workspaceId: n, ids: s };
335
+ const s = JSON.parse(i), o = Array.isArray(s.ids) ? s.ids.filter((c) => typeof c == "string" && c.length > 0) : [];
336
+ return { workspaceId: n, ids: o };
340
337
  } catch {
341
338
  return null;
342
339
  }
343
340
  }
344
- function si(e, n) {
341
+ function pi(e, n) {
345
342
  var r, i;
346
343
  try {
347
344
  if (n.length === 0) {
@@ -352,541 +349,541 @@ function si(e, n) {
352
349
  } catch {
353
350
  }
354
351
  }
355
- function ai() {
356
- return /* @__PURE__ */ f("div", { className: "flex h-full min-h-0 items-center justify-center bg-background px-6 text-center", children: /* @__PURE__ */ ye("div", { className: "max-w-sm rounded-2xl border border-border bg-card p-5 shadow-sm", children: [
357
- /* @__PURE__ */ f("div", { className: "mx-auto mb-3 h-7 w-7 rounded-full border-2 border-muted-foreground/20 border-t-foreground animate-spin", "aria-hidden": "true" }),
358
- /* @__PURE__ */ f("div", { className: "text-sm font-semibold text-foreground", children: "Loading sessions…" }),
359
- /* @__PURE__ */ f("p", { className: "mt-2 text-sm text-muted-foreground", children: "Finding this workspace’s saved chats." })
352
+ function hi() {
353
+ return /* @__PURE__ */ d("div", { className: "flex h-full min-h-0 items-center justify-center bg-background px-6 text-center", children: /* @__PURE__ */ ye("div", { className: "max-w-sm rounded-2xl border border-border bg-card p-5 shadow-sm", children: [
354
+ /* @__PURE__ */ d("div", { className: "mx-auto mb-3 h-7 w-7 rounded-full border-2 border-muted-foreground/20 border-t-foreground animate-spin", "aria-hidden": "true" }),
355
+ /* @__PURE__ */ d("div", { className: "text-sm font-semibold text-foreground", children: "Loading sessions…" }),
356
+ /* @__PURE__ */ d("p", { className: "mt-2 text-sm text-muted-foreground", children: "Finding this workspace’s saved chats." })
360
357
  ] }) });
361
358
  }
362
- function li(e) {
359
+ function vi(e) {
363
360
  if (!e) return "/api/v1/ui";
364
361
  const n = e.replace(/\/$/, ""), r = "/api/v1/ui";
365
362
  return n.endsWith(r) ? n : `${n}${r}`;
366
363
  }
367
- function ci(e) {
368
- return `${li(e)}/state`;
364
+ function bi(e) {
365
+ return `${vi(e)}/state`;
369
366
  }
370
- function ui(e) {
367
+ function Si(e) {
371
368
  var i;
372
- const n = e.openTabs.find((o) => o.id === e.activeTab), r = (i = n == null ? void 0 : n.params) == null ? void 0 : i.path;
369
+ const n = e.openTabs.find((s) => s.id === e.activeTab), r = (i = n == null ? void 0 : n.params) == null ? void 0 : i.path;
373
370
  return typeof r == "string" ? r : null;
374
371
  }
375
- function di({
372
+ function yi({
376
373
  bridgeEndpoint: e,
377
374
  requestHeaders: n,
378
375
  navOpen: r,
379
376
  surfaceOpen: i,
380
- surfaceReady: o,
381
- snapshot: s
377
+ surfaceReady: s,
378
+ snapshot: o
382
379
  }) {
383
- const c = wn(), u = j(null);
384
- return A(() => {
385
- var b;
386
- if (e === null || i && !o) return;
387
- (b = u.current) == null || b.abort();
388
- const S = new AbortController();
389
- u.current = S;
380
+ const c = _n(), u = J(null);
381
+ return E(() => {
382
+ var S;
383
+ if (e === null || i && !s) return;
384
+ (S = u.current) == null || S.abort();
385
+ const b = new AbortController();
386
+ u.current = b;
390
387
  const y = {
391
388
  v: 1,
392
389
  drawerOpen: r,
393
390
  workbenchOpen: i,
394
- openTabs: s.openTabs,
395
- activeTab: s.activeTab,
396
- activeFile: ui(s),
397
- availablePanels: c.list().map((B) => B.id)
391
+ openTabs: o.openTabs,
392
+ activeTab: o.activeTab,
393
+ activeFile: Si(o),
394
+ availablePanels: c.list().map((j) => j.id)
398
395
  };
399
- return fetch(ci(e), {
396
+ return fetch(bi(e), {
400
397
  method: "PUT",
401
398
  headers: { ...n, "Content-Type": "application/json" },
402
399
  body: JSON.stringify({ state: y, causedBy: "user" }),
403
- signal: S.signal
400
+ signal: b.signal
404
401
  }).catch(() => {
405
402
  }), () => {
406
- S.abort();
403
+ b.abort();
407
404
  };
408
- }, [e, r, c, n, s, i, o]), null;
405
+ }, [e, r, c, n, o, i, s]), null;
409
406
  }
410
- function Mi({
407
+ function Ji({
411
408
  workspaceId: e,
412
409
  chatPanel: n,
413
410
  useSessions: r,
414
411
  requestHeaders: i,
415
- sessionStorageKey: o,
416
- providerStorageKey: s,
412
+ sessionStorageKey: s,
413
+ providerStorageKey: o,
417
414
  surfaceStorageKey: c,
418
415
  beforeShell: u,
419
- afterShell: S,
416
+ afterShell: b,
420
417
  panels: y,
421
- commands: b,
422
- catalogs: B,
423
- plugins: F,
424
- excludeDefaults: k,
425
- capabilities: T,
418
+ commands: S,
419
+ catalogs: j,
420
+ plugins: W,
421
+ excludeDefaults: V,
422
+ capabilities: R,
426
423
  apiBaseUrl: h,
427
- authHeaders: N,
424
+ authHeaders: T,
428
425
  apiTimeout: p,
429
- defaultTheme: R,
430
- onThemeChange: Tn,
431
- persistenceEnabled: St,
432
- bridgeEndpoint: Ye,
433
- fullPageBasePath: Nn,
434
- onAuthError: Rn,
435
- sessions: bt,
436
- activeSessionId: yt,
437
- onSwitchSession: Pt,
438
- onCreateSession: At,
439
- onDeleteSession: Et,
426
+ defaultTheme: N,
427
+ onThemeChange: Ln,
428
+ persistenceEnabled: Pt,
429
+ debug: On,
430
+ bridgeEndpoint: Qe,
431
+ fullPageBasePath: xn,
432
+ onAuthError: Mn,
433
+ sessions: Et,
434
+ activeSessionId: At,
435
+ onSwitchSession: wt,
436
+ onCreateSession: Ze,
437
+ onDeleteSession: Rt,
440
438
  onActiveSessionIdChange: Pe,
441
- appTitle: Dn = "Boring",
442
- workspaceLabel: _n,
443
- defaultSessionTitle: q = "New session",
444
- navEnabled: wt = !0,
445
- defaultNavOpen: Ln = !1,
446
- defaultSurfaceOpen: On,
447
- defaultWorkbenchLeftTab: Ae,
448
- surfaceInitialPanels: Tt,
449
- topBarLeft: xn,
450
- topBarRight: Mn,
451
- showThemeToggle: Cn = !0,
452
- chatParams: _,
453
- hotReloadEnabled: ke,
454
- frontPluginHotReload: Wn,
455
- extraPanels: Nt,
456
- extraCommands: Rt,
457
- provisionWorkspace: Xe,
458
- bootPreloadPaths: Fn,
459
- onWorkspaceWarmupStatusChange: Ee,
460
- onOpenNav: Qe,
461
- onOpenSurface: Ze,
462
- surfaceButtonBottomOffset: Gn,
463
- className: In
439
+ appTitle: Cn = "Sovereign Workspace",
440
+ workspaceLabel: Fn,
441
+ defaultSessionTitle: Y = "New session",
442
+ navEnabled: Tt = !0,
443
+ defaultNavOpen: Wn = !1,
444
+ defaultSurfaceOpen: Gn,
445
+ defaultWorkbenchLeftTab: Ee,
446
+ defaultWorkbenchLeftOpen: et,
447
+ surfaceInitialPanels: Nt,
448
+ topBarLeft: In,
449
+ topBarRight: $n,
450
+ showThemeToggle: Un = !0,
451
+ chatParams: L,
452
+ externalPlugins: Kn,
453
+ hotReloadEnabled: Hn,
454
+ frontPluginHotReload: Jn,
455
+ extraPanels: Dt,
456
+ extraCommands: _t,
457
+ provisionWorkspace: tt,
458
+ bootPreloadPaths: jn,
459
+ onWorkspaceWarmupStatusChange: Ae,
460
+ onOpenNav: nt,
461
+ onOpenSurface: rt,
462
+ surfaceButtonBottomOffset: Bn,
463
+ className: qn
464
464
  }) {
465
- var nn, rn;
466
- const et = s ?? `boring-ui-v2:layout:${e}`, G = c ?? `${et}:surface`, we = Qr(
465
+ var ln, cn;
466
+ const Lt = Kn !== !1, zn = Lt ? Jn : !1, it = Lt ? Hn : !1, st = o ?? `boring-ui-v2:layout:${e}`, G = c ?? `${st}:surface`, we = ai(
467
467
  G,
468
- et
469
- ), x = St !== !1, Te = o ?? `boring-workspace:sessions:${e}`, X = W(
470
- () => ze(e, i ?? mt),
468
+ st
469
+ ), M = Pt !== !1, Re = s ?? `boring-workspace:sessions:${e}`, k = F(
470
+ () => ke(e, i ?? vt),
471
471
  [i, e]
472
- ), $n = W(
473
- () => ze(e, { ...i ?? mt, ...N ?? mt }),
474
- [N, i, e]
475
- ), Ne = W(
476
- () => Kr({ storageKey: Te }),
477
- [Te]
478
- ), Dt = Jr(Ne), [_t, Un] = O(() => ({
472
+ ), Vn = F(
473
+ () => ke(e, { ...i ?? vt, ...T ?? vt }),
474
+ [T, i, e]
475
+ ), Te = F(
476
+ () => Xr({ storageKey: Re }),
477
+ [Re]
478
+ ), Ot = Qr(Te), [xt, Yn] = O(() => ({
479
479
  workspaceId: e,
480
- status: pn
481
- })), [Re, tt] = O(() => ({
480
+ status: yn
481
+ })), [Ne, ot] = O(() => ({
482
482
  workspaceId: e,
483
483
  expired: !1
484
- })), [Lt, De] = O(() => ({
484
+ })), [Mt, De] = O(() => ({
485
485
  workspaceId: e,
486
486
  creating: !1
487
- })), [Ot, _e] = O(() => ({
487
+ })), [Ct, _e] = O(() => ({
488
488
  workspaceId: e,
489
489
  failed: !1
490
- })), [nt, xt] = O(null), ue = `boring-workspace:chat-panes:${e}`, [D, z] = O(
491
- () => (x ? vn(ue, e) : null) ?? { workspaceId: e, ids: [], activeId: null }
492
- ), [re, Mt] = O(null);
493
- A(() => {
494
- if (!re) return;
495
- const t = setTimeout(() => Mt(null), 700);
490
+ })), [at, Ft] = O(null), de = `boring-workspace:chat-panes:${e}`, [D, q] = O(
491
+ () => (M ? En(de, e) : null) ?? { workspaceId: e, ids: [], activeId: null }
492
+ ), [ie, Wt] = O(null);
493
+ E(() => {
494
+ if (!ie) return;
495
+ const t = setTimeout(() => Wt(null), 700);
496
496
  return () => clearTimeout(t);
497
- }, [re]);
498
- const de = `boring-workspace:pinned-sessions:${e}`, [Ct, Wt] = O(
499
- () => (x ? Sn(de, e) : null) ?? { workspaceId: e, ids: [] }
500
- ), Kn = Ct.workspaceId === e ? Ct.ids : Zr;
501
- A(() => {
502
- Wt((t) => t.workspaceId === e ? t : (x ? Sn(de, e) : null) ?? { workspaceId: e, ids: [] });
503
- }, [de, x, e]);
504
- const Jn = w((t) => {
505
- Wt((a) => {
497
+ }, [ie]);
498
+ const fe = `boring-workspace:pinned-sessions:${e}`, [Gt, It] = O(
499
+ () => (M ? An(fe, e) : null) ?? { workspaceId: e, ids: [] }
500
+ ), kn = Gt.workspaceId === e ? Gt.ids : li;
501
+ E(() => {
502
+ It((t) => t.workspaceId === e ? t : (M ? An(fe, e) : null) ?? { workspaceId: e, ids: [] });
503
+ }, [fe, M, e]);
504
+ const Xn = w((t) => {
505
+ It((a) => {
506
506
  const l = a.workspaceId === e ? a.ids : [], g = l.includes(t) ? l.filter((v) => v !== t) : [t, ...l];
507
- return x && si(de, g), { workspaceId: e, ids: g };
507
+ return M && pi(fe, g), { workspaceId: e, ids: g };
508
508
  });
509
- }, [de, x, e]);
510
- A(() => {
511
- x && D.workspaceId === e && oi(ue, D);
512
- }, [D, ue, x, e]), A(() => {
513
- z((t) => t.workspaceId === e ? t : (x ? vn(ue, e) : null) ?? { workspaceId: e, ids: [], activeId: null });
514
- }, [ue, x, e]);
515
- const Le = _t.workspaceId === e ? _t.status : pn, jn = n ?? br, Bn = r ?? ti, ie = !n || !!r, Oe = ie && Xe !== !1, rt = () => {
516
- }, M = Bn({
517
- requestHeaders: X,
518
- storageKey: Te,
509
+ }, [fe, M, e]);
510
+ E(() => {
511
+ M && D.workspaceId === e && mi(de, D);
512
+ }, [D, de, M, e]), E(() => {
513
+ q((t) => t.workspaceId === e ? t : (M ? En(de, e) : null) ?? { workspaceId: e, ids: [], activeId: null });
514
+ }, [de, M, e]);
515
+ const Le = xt.workspaceId === e ? xt.status : yn, Qn = n ?? _r, Zn = r ?? ui, X = !n || !!r, Oe = X && tt !== !1, lt = () => {
516
+ }, _ = Zn({
517
+ requestHeaders: k,
518
+ storageKey: Re,
519
519
  workspaceId: e,
520
520
  apiBaseUrl: h,
521
521
  enabled: Oe
522
- }), [fe, Hn] = O(() => ({ workspaceId: e, sessions: [], activeSessionId: null })), qn = Oe && M.workspaceId != null && M.workspaceId !== e, V = Oe && !M.loading && !M.error && !qn, I = Oe && !V;
523
- A(() => {
524
- V && Hn((t) => {
525
- const a = t.workspaceId === e, l = t.activeSessionId === M.activeSessionId, g = t.sessions.length === M.sessions.length && t.sessions.every((v, E) => {
526
- var te;
527
- return v.id === ((te = M.sessions[E]) == null ? void 0 : te.id);
522
+ }), [ge, er] = O(() => ({ workspaceId: e, sessions: [], activeSessionId: null })), $t = Oe && _.workspaceId != null && _.workspaceId !== e, z = Oe && !_.loading && !_.error && !$t, C = Oe && !z;
523
+ E(() => {
524
+ z && er((t) => {
525
+ const a = t.workspaceId === e, l = t.activeSessionId === _.activeSessionId, g = t.sessions.length === _.sessions.length && t.sessions.every((v, A) => {
526
+ var ne;
527
+ return v.id === ((ne = _.sessions[A]) == null ? void 0 : ne.id);
528
528
  });
529
529
  return a && l && g ? t : {
530
530
  workspaceId: e,
531
- sessions: M.sessions,
532
- activeSessionId: M.activeSessionId
531
+ sessions: _.sessions,
532
+ activeSessionId: _.activeSessionId
533
533
  };
534
534
  });
535
- }, [M.activeSessionId, M.sessions, V, e]);
536
- const it = I && fe.workspaceId === e && fe.sessions.length > 0, ot = I ? ii(Te) : null, Y = V ? M.sessions : it ? fe.sessions : [], zn = V ? M.activeSessionId : it ? fe.activeSessionId : null, d = ie && (V || it) ? M : void 0, ge = bt !== void 0 || yt !== void 0 || Pt !== void 0 || At !== void 0 || Et !== void 0, Ft = Re.workspaceId === e && Re.expired, me = j(!1), pe = !!(V && d && !ge && Y.length === 0 && !Ft), Vn = Lt.workspaceId === e && Lt.creating, Yn = Ot.workspaceId === e && Ot.failed, kn = !!(V && d && !ge && Y.length === 0 && Ft && !me.current && !Yn), xe = pe || Vn || kn;
537
- A(() => {
535
+ }, [_.activeSessionId, _.sessions, z, e]);
536
+ const xe = C && ge.workspaceId === e && ge.sessions.length > 0, Me = C ? gi(Re) : null, Ut = C && !$t ? _.activeSessionId ?? null : null, Q = z ? _.sessions : xe ? ge.sessions : [], tr = z ? _.activeSessionId : xe ? ge.activeSessionId : null, f = X && (z || xe) ? _ : void 0, se = Et !== void 0 || At !== void 0 || wt !== void 0 || Ze !== void 0 || Rt !== void 0, Kt = Ne.workspaceId === e && Ne.expired, me = J(!1), pe = !!(z && f && !se && Q.length === 0 && !Kt), nr = Mt.workspaceId === e && Mt.creating, rr = Ct.workspaceId === e && Ct.failed, ir = !!(z && f && !se && Q.length === 0 && Kt && !me.current && !rr), Ce = !!(C && _.loading && !_.error && X && !se && !xe && !Me && !Ut) || pe || nr || ir;
537
+ E(() => {
538
538
  if (!pe) {
539
- Re.workspaceId !== e && tt({ workspaceId: e, expired: !1 });
539
+ Ne.workspaceId !== e && ot({ workspaceId: e, expired: !1 });
540
540
  return;
541
541
  }
542
- tt({ workspaceId: e, expired: !1 });
542
+ ot({ workspaceId: e, expired: !1 });
543
543
  const t = globalThis.setTimeout(() => {
544
- tt({ workspaceId: e, expired: !0 });
544
+ ot({ workspaceId: e, expired: !0 });
545
545
  }, 2e3);
546
546
  return () => globalThis.clearTimeout(t);
547
- }, [Re.workspaceId, pe, e]);
548
- const Xn = d ? Y.map((t) => ({
547
+ }, [Ne.workspaceId, pe, e]);
548
+ const sr = f ? Q.map((t) => ({
549
549
  ...t,
550
550
  title: t.title ?? "New session"
551
- })) : void 0, Qn = ot ? [{
552
- id: ot,
551
+ })) : void 0, or = Me ? [{
552
+ id: Me,
553
553
  title: "Loading sessions…",
554
554
  createdAt: (/* @__PURE__ */ new Date(0)).toISOString(),
555
555
  updatedAt: (/* @__PURE__ */ new Date(0)).toISOString(),
556
556
  turnCount: 0
557
- }] : [], $ = d ? Xn ?? [] : I ? Qn : ge ? bt ?? [] : Dt.sessions, Zn = d ? zn ?? null : I ? ot : ge ? yt ?? null : Dt.activeId, oe = (_ == null ? void 0 : _.autoSubmitInitialDraft) === !0, Me = oe && ie && !ge, [U, he] = O(() => Me ? null : void 0), Gt = j(e), se = j(!1);
558
- A(() => {
559
- if (Gt.current !== e) {
560
- Gt.current = e, se.current = !1, he(Me ? null : void 0);
557
+ }] : [], $ = f ? sr ?? [] : C ? or : se ? Et ?? [] : Ot.sessions, ar = f ? tr ?? null : C ? Me ?? Ut : se ? At ?? null : Ot.activeId, oe = (L == null ? void 0 : L.autoSubmitInitialDraft) === !0, Fe = oe && X && !se, [U, he] = O(() => Fe ? null : void 0), Ht = J(e), ae = J(!1);
558
+ E(() => {
559
+ if (Ht.current !== e) {
560
+ Ht.current = e, ae.current = !1, he(Fe ? null : void 0);
561
561
  return;
562
562
  }
563
- Me && U === void 0 && (se.current = !1, he(null));
564
- }, [U, Me, e]), A(() => {
565
- !d || U !== null || se.current || (se.current = !0, Promise.resolve(d.create({ title: q })).then((t) => {
563
+ Fe && U === void 0 && (ae.current = !1, he(null));
564
+ }, [U, Fe, e]), E(() => {
565
+ !f || U !== null || ae.current || (ae.current = !0, Promise.resolve(f.create({ title: Y })).then((t) => {
566
566
  if (typeof (t == null ? void 0 : t.id) != "string")
567
567
  throw new Error("auto_submit_session_create_failed");
568
568
  he(t.id);
569
569
  }).catch(() => {
570
- se.current = !1, he(void 0);
570
+ ae.current = !1, he(void 0);
571
571
  }));
572
- }, [U, q, d]);
573
- const C = U !== void 0 ? U ?? null : Zn, J = I ? rt : (d == null ? void 0 : d.switch) ?? Pt ?? Ne.switchTo, Ce = w((t) => (C && t !== C && window.dispatchEvent(new CustomEvent("boring:workspace-composer-stop", { detail: { sessionId: C } })), J(t)), [C, J]), st = I ? rt : d ? () => {
574
- const t = Y.find((l) => l.id === C && Xr(l, q)), a = d.create();
575
- return t && Promise.resolve(a).then(() => d.delete(t.id)).catch(() => {
576
- }), a;
577
- } : At ?? Ne.create, It = I ? rt : (d == null ? void 0 : d.delete) ?? Et ?? Ne.remove, $t = w((t) => (d && Y.length <= 1 && (me.current = !0), It(t)), [Y.length, It, d]), er = ((nn = $.find((t) => t.id === C)) == null ? void 0 : nn.title) ?? void 0, [tr, Ut] = gt(
572
+ }, [U, Y, f]);
573
+ const I = U !== void 0 ? U ?? null : ar, H = C ? lt : (f == null ? void 0 : f.switch) ?? wt ?? Te.switchTo, We = w((t) => (I && t !== I && window.dispatchEvent(new CustomEvent("boring:workspace-composer-stop", { detail: { sessionId: I } })), H(t)), [I, H]), ct = C ? lt : f ? () => f.create() : Ze ? () => Ze() : () => Te.create(), Jt = C ? lt : (f == null ? void 0 : f.delete) ?? Rt ?? Te.remove, jt = w((t) => (f && Q.length <= 1 && (me.current = !0), Jt(t)), [Q.length, Jt, f]), lr = ((ln = $.find((t) => t.id === I)) == null ? void 0 : ln.title) ?? void 0, [cr, Bt] = ht(
578
574
  `${we}:drawer`,
579
- Ln,
580
- x
581
- ), Kt = wt && tr, [Q, H] = gt(
575
+ Wn,
576
+ M
577
+ ), qt = Tt && cr, [Z, B] = ht(
582
578
  // Key must NOT match resolvedSurfaceStorageKey (which stores the dockview
583
579
  // layout JSON at the same ":surface" suffix). Writing "1"/"0" to the same
584
580
  // key corrupts the JSON and drops the persisted workbench layout on reload.
585
581
  `${we}:workbenchOpen`,
586
- On ?? !1,
587
- x
588
- ), [nr, at] = O(!1), [rr, ve] = gt(
582
+ Gn ?? !1,
583
+ M
584
+ ), [ur, ut] = O(!1), [dr, ve] = ht(
589
585
  `${we}:workbenchLeftOpen`,
590
- !0,
591
- x
592
- ), Se = j(!1), Z = j(null), ee = j(Q), Jt = j(G), lt = j(null);
593
- Jt.current = G;
594
- const [jt, Bt] = O(() => ({
586
+ et ?? !1,
587
+ M
588
+ ), [fr, Ge] = O(() => et ?? !1), gr = et === !1 ? fr : dr, be = J(!1), ee = J(null), te = J(Z), zt = J(G), dt = J(null);
589
+ zt.current = G;
590
+ const [Vt, Yt] = O(() => ({
595
591
  key: G,
596
- snapshot: hn
597
- })), ir = jt.key === G ? jt.snapshot : hn;
598
- A(() => {
599
- Se.current = !1, me.current = !1, De({ workspaceId: e, creating: !1 }), _e({ workspaceId: e, failed: !1 }), xt(null);
600
- }, [e]), A(() => {
601
- at(!1);
602
- }, [G]), A(() => {
603
- if (!(!d || d.loading) && !pe && U === void 0) {
604
- if (Y.length > 0) {
605
- Se.current = !1, me.current = !1, De((t) => t.workspaceId === e && t.creating ? { workspaceId: e, creating: !1 } : t), _e((t) => t.workspaceId === e && t.failed ? { workspaceId: e, failed: !1 } : t);
592
+ snapshot: Pn
593
+ })), mr = Vt.key === G ? Vt.snapshot : Pn;
594
+ E(() => {
595
+ be.current = !1, me.current = !1, De({ workspaceId: e, creating: !1 }), _e({ workspaceId: e, failed: !1 }), Ft(null);
596
+ }, [e]), E(() => {
597
+ ut(!1);
598
+ }, [G]), E(() => {
599
+ if (!(!f || f.loading) && !pe && U === void 0) {
600
+ if (Q.length > 0) {
601
+ be.current = !1, me.current = !1, De((t) => t.workspaceId === e && t.creating ? { workspaceId: e, creating: !1 } : t), _e((t) => t.workspaceId === e && t.failed ? { workspaceId: e, failed: !1 } : t);
606
602
  return;
607
603
  }
608
- me.current || Se.current || (Se.current = !0, De({ workspaceId: e, creating: !0 }), _e({ workspaceId: e, failed: !1 }), Promise.resolve(d.create({ title: q })).then((t) => {
604
+ me.current || be.current || (be.current = !0, De({ workspaceId: e, creating: !0 }), _e({ workspaceId: e, failed: !1 }), Promise.resolve(f.create({ title: Y })).then((t) => {
609
605
  const a = t == null ? void 0 : t.id;
610
- typeof a == "string" && xt({ workspaceId: e, id: a });
606
+ typeof a == "string" && Ft({ workspaceId: e, id: a });
611
607
  }).catch(() => {
612
- Se.current = !1, De({ workspaceId: e, creating: !1 }), _e({ workspaceId: e, failed: !0 });
608
+ be.current = !1, De({ workspaceId: e, creating: !1 }), _e({ workspaceId: e, failed: !0 });
613
609
  }));
614
610
  }
615
- }, [Y.length, U, q, pe, d, e]), A(() => {
616
- ee.current = Q;
617
- }, [Q]);
618
- const Ht = w((t) => {
619
- lt.current = { key: G, api: t }, at(!0), Bt({
611
+ }, [Q.length, U, Y, pe, f, e]), E(() => {
612
+ te.current = Z;
613
+ }, [Z]);
614
+ const kt = w((t) => {
615
+ dt.current = { key: G, api: t }, ut(!0), Yt({
620
616
  key: G,
621
617
  snapshot: t.getSnapshot()
622
618
  });
623
- }, [G]), qt = w((t) => {
624
- Bt({
619
+ }, [G]), Xt = w((t) => {
620
+ Yt({
625
621
  key: G,
626
622
  snapshot: t
627
623
  });
628
- }, [G]), We = w(() => {
629
- const t = lt.current;
630
- return (t == null ? void 0 : t.key) === Jt.current ? t.api : null;
631
- }, []), Fe = w(() => ee.current, []), Ge = w(() => {
632
- ee.current = !0, H(!0);
633
- }, [H]), Ie = w(() => {
634
- ee.current = !0, H(!0), ve(!0);
635
- }, [H, ve]), $e = w(() => {
636
- ee.current = !1, lt.current = null, at(!1), H(!1);
637
- }, [H]), ae = W(
638
- () => (F == null ? void 0 : F.map(Er)) ?? [],
639
- [F]
640
- ), ct = W(
641
- () => ae.some((t) => t.registrations.leftTabs.length > 0),
642
- [ae]
643
- ), zt = W(
644
- () => ae.flatMap((t) => t.registrations.panels.map((a) => a.id)),
645
- [ae]
646
- ), Vt = W(() => {
624
+ }, [G]), Ie = w(() => {
625
+ const t = dt.current;
626
+ return (t == null ? void 0 : t.key) === zt.current ? t.api : null;
627
+ }, []), $e = w(() => te.current, []), Ue = w(() => {
628
+ te.current = !0, B(!0);
629
+ }, [B]), Ke = w(() => {
630
+ te.current = !0, B(!0), ve(!0), Ge(!0);
631
+ }, [B, ve]), He = w(() => {
632
+ te.current = !1, dt.current = null, ut(!1), B(!1);
633
+ }, [B]), le = F(
634
+ () => (W == null ? void 0 : W.map(Mr)) ?? [],
635
+ [W]
636
+ ), ft = F(
637
+ () => le.some((t) => t.registrations.leftTabs.length > 0),
638
+ [le]
639
+ ), Qt = F(
640
+ () => le.flatMap((t) => t.registrations.panels.map((a) => a.id)),
641
+ [le]
642
+ ), Zt = F(() => {
647
643
  const t = {};
648
- for (const a of ae)
644
+ for (const a of le)
649
645
  for (const l of a.registrations.toolRenderers)
650
646
  t[l.id] = l.render;
651
647
  return t;
652
- }, [ae]), Yt = W(
653
- () => [...Nt ?? [], ...zt],
654
- [Nt, zt]
655
- ), m = ie && !r && fe.workspaceId !== e ? "default" : C ?? (U !== void 0 ? "default" : ((rn = $[0]) == null ? void 0 : rn.id) ?? "default"), kt = !(d != null && d.hasMore) && !I;
656
- A(() => {
657
- var te, on;
658
- if (xe) return;
659
- const t = Z.current, a = new Set($.map((K) => K.id)), l = t ? t.createdId ?? (a.has(m) && !t.knownIds.has(m) ? m : ((te = $.find((K) => !t.knownIds.has(K.id))) == null ? void 0 : te.id) ?? null) : null;
660
- l && a.has(l) && (Z.current = null);
661
- const g = m === "default" && U !== void 0, v = kt && a.size > 0 && !g, E = l ?? (v && !a.has(m) ? ((on = $[0]) == null ? void 0 : on.id) ?? m : m);
662
- z((K) => {
663
- const ne = K.workspaceId === e ? K : { workspaceId: e, ids: [], activeId: null };
664
- if (I && ne.ids.length > 0 && !l) return ne;
665
- const sn = ne.ids.length > 0 ? ne.ids : [E], an = v ? sn.filter((Be) => a.has(Be) || Be === l) : sn, le = an.length > 0 ? an : [E], ln = ne.activeId && le.includes(ne.activeId) ? ne.activeId : le[0] ?? E, be = l ? He(le, t == null ? void 0 : t.afterId, l) : E === ln || le.includes(E) ? le : mn(le, ln, E), cn = be.includes(E) ? E : be[0] ?? E;
666
- return K.workspaceId === e && K.activeId === cn && K.ids.length === be.length && K.ids.every((Be, hr) => Be === be[hr]) ? K : { workspaceId: e, ids: be, activeId: cn };
648
+ }, [le]), en = F(
649
+ () => [...Dt ?? [], ...Qt],
650
+ [Dt, Qt]
651
+ ), m = X && !r && ge.workspaceId !== e ? "default" : I ?? (U !== void 0 ? "default" : ((cn = $[0]) == null ? void 0 : cn.id) ?? "default"), tn = !(f != null && f.hasMore) && !C;
652
+ E(() => {
653
+ var ne, un;
654
+ if (Ce) return;
655
+ const t = ee.current, a = new Set($.map((K) => K.id)), l = t ? t.createdId ?? (a.has(m) && !t.knownIds.has(m) ? m : ((ne = $.find((K) => !t.knownIds.has(K.id))) == null ? void 0 : ne.id) ?? null) : null;
656
+ l && a.has(l) && (ee.current = null);
657
+ const g = m === "default" && U !== void 0, v = tn && a.size > 0 && !g, A = l ?? (v && !a.has(m) ? ((un = $[0]) == null ? void 0 : un.id) ?? m : m);
658
+ q((K) => {
659
+ const re = K.workspaceId === e ? K : { workspaceId: e, ids: [], activeId: null };
660
+ if (C && re.ids.length > 0 && !l) return re;
661
+ const dn = re.ids.length > 0 ? re.ids : [A], fn = v ? dn.filter((ze) => a.has(ze) || ze === l) : dn, ce = fn.length > 0 ? fn : [A], gn = re.activeId && ce.includes(re.activeId) ? re.activeId : ce[0] ?? A, Se = l ? Ve(ce, t == null ? void 0 : t.afterId, l) : A === gn || ce.includes(A) ? ce : Sn(ce, gn, A), mn = Se.includes(A) ? A : Se[0] ?? A;
662
+ return K.workspaceId === e && K.activeId === mn && K.ids.length === Se.length && K.ids.every((ze, Tr) => ze === Se[Tr]) ? K : { workspaceId: e, ids: Se, activeId: mn };
667
663
  });
668
- }, [U, m, I, xe, $, kt, e]);
669
- const Xt = W(() => {
664
+ }, [U, m, C, Ce, $, tn, e]);
665
+ const nn = F(() => {
670
666
  const t = /* @__PURE__ */ new Map();
671
667
  for (const a of $) t.set(a.id, a.title);
672
668
  return t;
673
- }, [$]), ut = D.workspaceId === e ? D : { ids: [], activeId: null }, Ue = ut.ids.length > 0 ? ut.ids : [m], Ke = ut.activeId ?? Ue[0] ?? m, or = w((t) => {
669
+ }, [$]), gt = D.workspaceId === e ? D : { ids: [], activeId: null }, Je = gt.ids.length > 0 ? gt.ids : [m], je = gt.activeId ?? Je[0] ?? m, pr = w((t) => {
674
670
  const l = (D.workspaceId === e ? D : { ids: [m] }).ids.includes(t);
675
- return z((g) => {
676
- const v = g.workspaceId === e ? g : { ids: [m], activeId: m }, E = v.ids.includes(t) ? v.ids : mn(v.ids, v.activeId, t);
677
- return { workspaceId: e, ids: E, activeId: t };
678
- }), l ? J(t) : Ce(t);
679
- }, [D, m, J, Ce, e]), sr = w((t) => (z((a) => {
671
+ return q((g) => {
672
+ const v = g.workspaceId === e ? g : { ids: [m], activeId: m }, A = v.ids.includes(t) ? v.ids : Sn(v.ids, v.activeId, t);
673
+ return { workspaceId: e, ids: A, activeId: t };
674
+ }), l ? H(t) : We(t);
675
+ }, [D, m, H, We, e]), hr = w((t) => (q((a) => {
680
676
  const l = a.workspaceId === e ? a : { ids: [m], activeId: m };
681
677
  return {
682
678
  workspaceId: e,
683
- ids: l.ids.includes(t) ? l.ids : He(l.ids, l.activeId, t),
679
+ ids: l.ids.includes(t) ? l.ids : Ve(l.ids, l.activeId, t),
684
680
  activeId: t
685
681
  };
686
- }), J(t)), [m, J, e]), Qt = w((t) => ((D.workspaceId === e ? D : { ids: [m] }).ids.includes(t) && Mt({ workspaceId: e, id: t }), z((l) => {
682
+ }), H(t)), [m, H, e]), rn = w((t) => ((D.workspaceId === e ? D : { ids: [m] }).ids.includes(t) && Wt({ workspaceId: e, id: t }), q((l) => {
687
683
  const g = l.workspaceId === e ? l : { ids: [m], activeId: m };
688
684
  return {
689
685
  workspaceId: e,
690
- ids: He(g.ids, g.activeId, t),
686
+ ids: Ve(g.ids, g.activeId, t),
691
687
  activeId: t
692
688
  };
693
- }), J(t)), [D, m, J, e]), ar = w((t) => {
689
+ }), H(t)), [D, m, H, e]), vr = w((t) => {
694
690
  const a = D.workspaceId === e ? D : { ids: [m], activeId: m };
695
691
  if (a.ids.length <= 1) return;
696
692
  const l = a.ids.indexOf(t);
697
693
  if (l < 0) return;
698
- const g = a.ids.filter((E) => E !== t), v = a.activeId === t ? g[Math.max(0, l - 1)] ?? g[0] ?? null : a.activeId;
699
- z({ workspaceId: e, ids: g, activeId: v }), v && a.activeId === t && J(v);
700
- }, [D, m, J, e]), lr = w((t) => {
694
+ const g = a.ids.filter((A) => A !== t), v = a.activeId === t ? g[Math.max(0, l - 1)] ?? g[0] ?? null : a.activeId;
695
+ q({ workspaceId: e, ids: g, activeId: v }), v && a.activeId === t && H(v);
696
+ }, [D, m, H, e]), br = w((t) => {
701
697
  const a = {
702
698
  afterId: t,
703
699
  knownIds: new Set($.map((g) => g.id))
704
700
  };
705
- Z.current = a;
706
- const l = st();
701
+ ee.current = a;
702
+ const l = ct();
707
703
  return Promise.resolve(l).then((g) => {
708
- const v = kr(g);
709
- v && (Z.current === a && (Z.current = { ...a, createdId: v }), z((E) => {
710
- const te = E.workspaceId === e ? E : { ids: [m] };
704
+ const v = oi(g);
705
+ v && (ee.current === a && (ee.current = { ...a, createdId: v }), q((A) => {
706
+ const ne = A.workspaceId === e ? A : { ids: [m] };
711
707
  return {
712
708
  workspaceId: e,
713
- ids: He(te.ids, t, v),
709
+ ids: Ve(ne.ids, t, v),
714
710
  activeId: v
715
711
  };
716
712
  }));
717
713
  }).catch(() => {
718
- Z.current === a && (Z.current = null);
714
+ ee.current === a && (ee.current = null);
719
715
  }), l;
720
- }, [m, st, $, e]), cr = w((t) => {
716
+ }, [m, ct, $, e]), Sr = w((t) => {
721
717
  const a = D.workspaceId === e ? D : { ids: [m], activeId: m }, l = a.ids.indexOf(t);
722
718
  let g = a.activeId;
723
719
  if (l >= 0) {
724
- const v = a.ids.filter((E) => E !== t);
725
- g = a.activeId === t ? v[Math.max(0, l - 1)] ?? v[0] ?? null : a.activeId, z({ workspaceId: e, ids: v, activeId: g }), g && a.activeId === t && Ce(g);
720
+ const v = a.ids.filter((A) => A !== t);
721
+ g = a.activeId === t ? v[Math.max(0, l - 1)] ?? v[0] ?? null : a.activeId, q({ workspaceId: e, ids: v, activeId: g }), g && a.activeId === t && We(g);
726
722
  }
727
- return $t(t);
728
- }, [D, m, $t, Ce, e]), [ur, dt] = O(oe), Zt = j(e);
729
- A(() => {
730
- if (Zt.current !== e) {
731
- Zt.current = e, dt(oe);
723
+ return jt(t);
724
+ }, [D, m, jt, We, e]), [yr, mt] = O(oe), sn = J(e);
725
+ E(() => {
726
+ if (sn.current !== e) {
727
+ sn.current = e, mt(oe);
732
728
  return;
733
729
  }
734
- oe && dt(!0);
730
+ oe && mt(!0);
735
731
  }, [oe, e]);
736
- const en = oe && ie && !C, tn = !!!(nt && nt.workspaceId === e && nt.id === C) && !ur && Xe !== !1 && (ie ? !!C : !0), dr = w((t) => {
737
- Un({ workspaceId: e, status: t }), Ee == null || Ee(t);
738
- }, [Ee, e]);
739
- A(() => {
732
+ const on = oe && X && !I, an = !!!(at && at.workspaceId === e && at.id === I) && !yr && tt !== !1 && (X ? !!I : !0), Pr = w((t) => {
733
+ Yn({ workspaceId: e, status: t }), Ae == null || Ae(t);
734
+ }, [Ae, e]);
735
+ E(() => {
740
736
  var a;
741
737
  const t = (l) => {
742
738
  const g = l.detail;
743
- !g || typeof g != "object" || Nr(g, {
744
- surface: We,
745
- isWorkbenchOpen: Fe,
746
- openWorkbench: Ge,
747
- openWorkbenchSources: Ie
739
+ !g || typeof g != "object" || Wr(g, {
740
+ surface: Ie,
741
+ isWorkbenchOpen: $e,
742
+ openWorkbench: Ue,
743
+ openWorkbenchSources: Ke
748
744
  });
749
745
  };
750
- return (a = globalThis.addEventListener) == null || a.call(globalThis, un, t), () => {
746
+ return (a = globalThis.addEventListener) == null || a.call(globalThis, pn, t), () => {
751
747
  var l;
752
- return (l = globalThis.removeEventListener) == null ? void 0 : l.call(globalThis, un, t);
748
+ return (l = globalThis.removeEventListener) == null ? void 0 : l.call(globalThis, pn, t);
753
749
  };
754
- }, [We, Fe, Ge, Ie]), A(() => {
755
- I || Pe == null || Pe(C ?? null);
756
- }, [C, Pe, I]);
757
- const ft = Le.status !== "ready", fr = ft ? /* @__PURE__ */ f(ei, { status: Le }) : void 0, Je = w(async (t) => {
750
+ }, [Ie, $e, Ue, Ke]), E(() => {
751
+ C || Pe == null || Pe(I ?? null);
752
+ }, [I, Pe, C]);
753
+ const pt = Le.status !== "ready", Er = pt ? /* @__PURE__ */ d(ci, { status: Le }) : void 0, Be = w(async (t) => {
758
754
  const a = `${(h == null ? void 0 : h.replace(/\/$/, "")) ?? ""}/api/v1/agent/reload`;
759
755
  try {
760
756
  const l = await fetch(a, {
761
757
  method: "POST",
762
- headers: { ...X, "content-type": "application/json" },
758
+ headers: { ...k, "content-type": "application/json" },
763
759
  body: JSON.stringify({ sessionId: t })
764
760
  });
765
761
  if (!l.ok)
766
762
  return (await l.json().catch(() => ({}))).error || `reload failed (${l.status})`;
767
763
  const g = await l.json().catch(() => ({}));
768
- return window.dispatchEvent(new CustomEvent(wr, { detail: g })), ri(g);
764
+ return window.dispatchEvent(new CustomEvent(Cr, { detail: g })), fi(g);
769
765
  } catch (l) {
770
766
  return l instanceof Error ? l.message : "Agent plugin reload failed.";
771
767
  }
772
- }, [h, X]), je = w(
768
+ }, [h, k]), qe = w(
773
769
  (t, a = {}) => {
774
- const l = a.bridgeEnabled ?? !0, g = _ != null && _.toolRenderers && typeof _.toolRenderers == "object" ? _.toolRenderers : void 0;
770
+ const l = a.bridgeEnabled ?? !0, g = L != null && L.toolRenderers && typeof L.toolRenderers == "object" ? L.toolRenderers : void 0;
775
771
  return {
776
- ..._,
777
- ...en ? { autoSubmitInitialDraft: !1, initialDraft: void 0 } : {},
772
+ ...L,
773
+ ...on ? { autoSubmitInitialDraft: !1, initialDraft: void 0 } : {},
778
774
  sessionId: t,
779
775
  apiBaseUrl: h,
780
776
  workspaceId: e,
781
777
  storageScope: e,
782
- requestHeaders: X,
778
+ requestHeaders: k,
783
779
  showSessions: !1,
784
- onReloadAgentPlugins: (_ == null ? void 0 : _.onReloadAgentPlugins) ?? (() => Je(t)),
785
- toolRenderers: { ...Vt, ...g ?? {} },
786
- bridgeEndpoint: l ? Ye : null,
787
- getSurface: We,
788
- isWorkbenchOpen: Fe,
789
- openWorkbench: Ge,
790
- openWorkbenchSources: Ie,
791
- closeWorkbench: $e,
792
- extraCommands: Rt,
780
+ onReloadAgentPlugins: (L == null ? void 0 : L.onReloadAgentPlugins) ?? (() => Be(t)),
781
+ toolRenderers: { ...Zt, ...g ?? {} },
782
+ bridgeEndpoint: l ? Qe : null,
783
+ getSurface: Ie,
784
+ isWorkbenchOpen: $e,
785
+ openWorkbench: Ue,
786
+ openWorkbenchSources: Ke,
787
+ closeWorkbench: He,
788
+ extraCommands: _t,
793
789
  workspaceWarmupStatus: Le,
794
- hydrateMessages: tn,
790
+ hydrateMessages: an,
795
791
  onAutoSubmitInitialDraftSettled: () => {
796
- se.current = !1, dt(!1), he(void 0);
797
- const v = _ == null ? void 0 : _.onAutoSubmitInitialDraftSettled;
792
+ ae.current = !1, mt(!1), he(void 0);
793
+ const v = L == null ? void 0 : L.onAutoSubmitInitialDraftSettled;
798
794
  typeof v == "function" && v();
799
795
  },
800
796
  // Forward the explicit prop when set. Omitting the key (when undefined)
801
797
  // lets ChatPanel apply its own default (true) and avoids overriding a
802
798
  // value passed through chatParams.
803
- ...ke !== void 0 ? { hotReloadEnabled: ke } : {}
799
+ ...it !== void 0 ? { hotReloadEnabled: it } : {}
804
800
  };
805
801
  },
806
- [h, _, en, X, Ye, We, Fe, Ge, Ie, $e, Rt, Le, tn, ke, Vt, Je, e]
807
- ), gr = W(
808
- () => je(m),
809
- [m, je]
810
- ), mr = W(() => Ue.map((t) => ({
802
+ [h, L, on, k, Qe, Ie, $e, Ue, Ke, He, _t, Le, an, it, Zt, Be, e]
803
+ ), Ar = F(
804
+ () => qe(m),
805
+ [m, qe]
806
+ ), wr = F(() => Je.map((t) => ({
811
807
  id: t,
812
- title: Xt.get(t) ?? (t === "default" ? q : t),
808
+ title: nn.get(t) ?? (t === "default" ? Y : t),
813
809
  panel: "chat",
814
- params: je(t, { bridgeEnabled: t === Ke })
815
- })), [Ke, Ue, q, je, Xt]), pr = W(() => ({
810
+ params: qe(t, { bridgeEnabled: t === je })
811
+ })), [je, Je, Y, qe, nn]), Rr = F(() => ({
816
812
  storageKey: G,
817
- defaultLeftTab: Ae,
818
- initialPanels: Tt,
819
- extraPanels: Yt,
820
- onReloadAgentPlugins: () => Je(C ?? m),
821
- onReady: Ht,
822
- onChange: qt,
823
- onClose: $e
813
+ defaultLeftTab: Ee,
814
+ initialPanels: Nt,
815
+ extraPanels: en,
816
+ onReloadAgentPlugins: () => Be(I ?? m),
817
+ onReady: kt,
818
+ onChange: Xt,
819
+ onClose: He
824
820
  }), [
825
- $e,
826
- Ae,
827
- Tt,
828
- Je,
829
- C,
821
+ He,
822
+ Ee,
823
+ Nt,
824
+ Be,
825
+ I,
830
826
  m,
831
- qt,
832
- Ht,
827
+ Xt,
828
+ kt,
833
829
  G,
834
- Yt,
835
- H
830
+ en,
831
+ B
836
832
  ]);
837
- return /* @__PURE__ */ f("div", { className: "h-full bg-background text-foreground", children: /* @__PURE__ */ ye(
838
- Tr,
833
+ return /* @__PURE__ */ d("div", { className: "h-full bg-background text-foreground", children: /* @__PURE__ */ ye(
834
+ Fr,
839
835
  {
840
- chatPanel: jn,
836
+ chatPanel: Qn,
841
837
  panels: y,
842
- commands: b,
843
- catalogs: B,
844
- plugins: F,
845
- excludeDefaults: k,
846
- capabilities: T,
838
+ commands: S,
839
+ catalogs: j,
840
+ plugins: W,
841
+ excludeDefaults: V,
842
+ capabilities: R,
847
843
  apiBaseUrl: h,
848
- authHeaders: $n,
844
+ authHeaders: Vn,
849
845
  apiTimeout: p,
850
- defaultTheme: R,
851
- onThemeChange: Tn,
846
+ defaultTheme: N,
847
+ onThemeChange: Ln,
852
848
  workspaceId: e,
853
- workspaceLabel: _n,
854
- storageKey: et,
855
- persistenceEnabled: St,
849
+ workspaceLabel: Fn,
850
+ storageKey: st,
851
+ persistenceEnabled: Pt,
852
+ debug: On,
856
853
  bridgeEndpoint: null,
857
- onAuthError: Rn,
858
- frontPluginHotReload: Wn,
859
- fullPageBasePath: Nn,
854
+ onAuthError: Mn,
855
+ frontPluginHotReload: zn,
856
+ fullPageBasePath: xn,
860
857
  children: [
861
858
  u,
862
- /* @__PURE__ */ f(
863
- Yr,
859
+ /* @__PURE__ */ d(
860
+ si,
864
861
  {
865
862
  workspaceId: e,
866
- requestHeaders: X,
863
+ requestHeaders: k,
867
864
  apiBaseUrl: h,
868
- preloadPaths: Fn,
869
- provisionWorkspace: Xe,
870
- onStatusChange: dr
865
+ preloadPaths: jn,
866
+ provisionWorkspace: tt,
867
+ onStatusChange: Pr
871
868
  }
872
869
  ),
873
- /* @__PURE__ */ f(
874
- di,
870
+ /* @__PURE__ */ d(
871
+ yi,
875
872
  {
876
- bridgeEndpoint: Ye,
877
- requestHeaders: X,
878
- navOpen: Kt,
879
- surfaceOpen: Q,
880
- surfaceReady: nr,
881
- snapshot: ir
873
+ bridgeEndpoint: Qe,
874
+ requestHeaders: k,
875
+ navOpen: qt,
876
+ surfaceOpen: Z,
877
+ surfaceReady: ur,
878
+ snapshot: mr
882
879
  }
883
880
  ),
884
881
  /* @__PURE__ */ ye("div", { className: "flex h-full min-h-0 flex-col", children: [
885
- /* @__PURE__ */ f(
886
- Lr,
882
+ /* @__PURE__ */ d(
883
+ Ur,
887
884
  {
888
- appTitle: Dn,
889
- sessionTitle: xe ? "Loading sessions…" : er ?? q,
885
+ appTitle: Cn,
886
+ sessionTitle: Ce ? "Loading sessions…" : lr ?? Y,
890
887
  onCommandPalette: () => {
891
888
  document.dispatchEvent(new KeyboardEvent("keydown", {
892
889
  key: "k",
@@ -896,159 +893,163 @@ function Mi({
896
893
  cancelable: !0
897
894
  }));
898
895
  },
899
- topBarLeft: xn,
900
- topBarRight: /* @__PURE__ */ ye(ce, { children: [
901
- Cn ? /* @__PURE__ */ f(Gr, {}) : null,
902
- Mn
896
+ topBarLeft: In,
897
+ topBarRight: /* @__PURE__ */ ye(ue, { children: [
898
+ Un ? /* @__PURE__ */ d(zr, {}) : null,
899
+ $n
903
900
  ] })
904
901
  }
905
902
  ),
906
- xe ? /* @__PURE__ */ f(ai, {}) : /* @__PURE__ */ f(
907
- Or,
903
+ Ce ? /* @__PURE__ */ d(hi, {}) : /* @__PURE__ */ d(
904
+ Kr,
908
905
  {
909
- className: In,
910
- nav: Kt ? "session-list" : null,
906
+ className: qn,
907
+ nav: qt ? "session-list" : null,
911
908
  navParams: {
912
909
  sessions: $,
913
- activeId: Ke,
914
- openIds: Ue,
915
- pinnedIds: Kn,
916
- onTogglePin: Jn,
917
- onSwitch: or,
918
- onOpenAsTab: Qt,
919
- onCreate: st,
920
- onDelete: cr,
921
- onLoadMore: d == null ? void 0 : d.loadMore,
922
- hasMore: d == null ? void 0 : d.hasMore,
923
- loadingMore: d == null ? void 0 : d.loadingMore,
924
- onClose: () => Ut(!1)
910
+ activeId: je,
911
+ openIds: Je,
912
+ pinnedIds: kn,
913
+ onTogglePin: Xn,
914
+ onSwitch: pr,
915
+ onOpenAsTab: rn,
916
+ onCreate: ct,
917
+ onDelete: Sr,
918
+ onLoadMore: f == null ? void 0 : f.loadMore,
919
+ hasMore: f == null ? void 0 : f.hasMore,
920
+ loadingMore: f == null ? void 0 : f.loadingMore,
921
+ onClose: () => Bt(!1)
925
922
  },
926
923
  center: "chat",
927
- centerParams: gr,
928
- chatPanes: mr,
929
- activeChatPaneId: Ke,
930
- onActiveChatPaneChange: sr,
931
- onCloseChatPane: ar,
932
- onCreateChatPaneAfter: lr,
933
- onDropChatSession: Qt,
934
- flashChatPaneId: (re == null ? void 0 : re.workspaceId) === e ? re.id : null,
935
- surface: Q ? "artifact-surface" : null,
936
- surfaceParams: pr,
937
- surfaceOverlay: fr,
938
- sidebar: Q && !ft && ct && rr ? "workbench-left" : null,
939
- sidebarParams: Q && !ft && ct ? {
940
- ...Ae ? { defaultTab: Ae } : {},
941
- onClose: () => ve(!1),
942
- onCollapse: () => ve(!1)
924
+ centerParams: Ar,
925
+ chatPanes: wr,
926
+ activeChatPaneId: je,
927
+ onActiveChatPaneChange: hr,
928
+ onCloseChatPane: vr,
929
+ onCreateChatPaneAfter: br,
930
+ onDropChatSession: rn,
931
+ flashChatPaneId: (ie == null ? void 0 : ie.workspaceId) === e ? ie.id : null,
932
+ surface: Z ? "artifact-surface" : null,
933
+ surfaceParams: Rr,
934
+ surfaceOverlay: Er,
935
+ sidebar: Z && !pt && ft && gr ? "workbench-left" : null,
936
+ sidebarParams: Z && !pt && ft ? {
937
+ ...Ee ? { defaultTab: Ee } : {},
938
+ onClose: () => {
939
+ ve(!1), Ge(!1);
940
+ },
941
+ onCollapse: () => {
942
+ ve(!1), Ge(!1);
943
+ }
943
944
  } : void 0,
944
- storageKey: x ? we : void 0,
945
- onOpenNav: wt ? () => {
946
- Ut(!0), Qe == null || Qe();
945
+ storageKey: M ? we : void 0,
946
+ onOpenNav: Tt ? () => {
947
+ Bt(!0), nt == null || nt();
947
948
  } : void 0,
948
949
  onOpenSurface: () => {
949
- ee.current = !0, H(!0), Ze == null || Ze();
950
+ te.current = !0, B(!0), rt == null || rt();
950
951
  },
951
- surfaceButtonBottomOffset: Gn,
952
- onOpenSidebar: ct ? () => {
953
- ee.current = !0, H(!0), ve(!0);
952
+ surfaceButtonBottomOffset: Bn,
953
+ onOpenSidebar: ft ? () => {
954
+ te.current = !0, B(!0), ve(!0), Ge(!0);
954
955
  } : void 0
955
956
  }
956
957
  )
957
958
  ] }),
958
- S
959
+ b
959
960
  ]
960
961
  }
961
962
  ) });
962
963
  }
963
- const fi = 500;
964
- function gi(e) {
964
+ const Pi = 500;
965
+ function Ei(e) {
965
966
  return new Promise((n, r) => {
966
967
  let i;
967
- const o = () => {
968
- i && globalThis.clearTimeout(i), e.removeEventListener("abort", s);
969
- }, s = () => {
970
- o(), r(new DOMException("Workspace boot aborted", "AbortError"));
968
+ const s = () => {
969
+ i && globalThis.clearTimeout(i), e.removeEventListener("abort", o);
970
+ }, o = () => {
971
+ s(), r(new DOMException("Workspace boot aborted", "AbortError"));
971
972
  };
972
973
  if (e.aborted) {
973
- s();
974
+ o();
974
975
  return;
975
976
  }
976
977
  i = globalThis.setTimeout(() => {
977
- o(), n();
978
- }, fi), e.addEventListener("abort", s, { once: !0 });
978
+ s(), n();
979
+ }, Pi), e.addEventListener("abort", o, { once: !0 });
979
980
  });
980
981
  }
981
- function Ci({
982
+ function ji({
982
983
  workspaceId: e,
983
984
  requestHeaders: n,
984
985
  apiBaseUrl: r,
985
- preloadPaths: i = bn,
986
- provisionWorkspace: o = !0,
987
- loadingFallback: s,
986
+ preloadPaths: i = wn,
987
+ provisionWorkspace: s = !0,
988
+ loadingFallback: o,
988
989
  errorFallback: c,
989
990
  children: u
990
991
  }) {
991
- const [S, y] = O({
992
+ const [b, y] = O({
992
993
  status: "loading",
993
994
  label: "Waking workspace runtime"
994
995
  });
995
- return A(() => {
996
- const b = new AbortController(), B = ze(e, n);
997
- async function F(T) {
998
- const h = await fetch(Pn(r, T), {
999
- headers: B,
1000
- signal: b.signal
1001
- }), N = await Ve(h);
996
+ return E(() => {
997
+ const S = new AbortController(), j = ke(e, n);
998
+ async function W(R) {
999
+ const h = await fetch(Tn(r, R), {
1000
+ headers: j,
1001
+ signal: S.signal
1002
+ }), T = await Xe(h);
1002
1003
  if (!h.ok) {
1003
- if (ht(N)) return "preparing";
1004
- throw new Error(vt(N) ?? `${T} failed with ${h.status}`);
1004
+ if (St(T)) return "preparing";
1005
+ throw new Error(yt(T) ?? `${R} failed with ${h.status}`);
1005
1006
  }
1006
- if (An(T)) {
1007
- const R = qe(N);
1008
- if ((R == null ? void 0 : R.state) === "degraded") throw new Error(R.message ?? "Workspace failed to prepare");
1007
+ if (Nn(R)) {
1008
+ const N = Ye(T);
1009
+ if ((N == null ? void 0 : N.state) === "degraded") throw new Error(N.message ?? "Workspace failed to prepare");
1009
1010
  }
1010
- return Rr(T) !== null && N && typeof N == "object" && En(r, B["x-boring-workspace-id"] ?? e, T, N), "ready";
1011
+ return Gr(R) !== null && T && typeof T == "object" && Dn(r, j["x-boring-workspace-id"] ?? e, R, T), "ready";
1011
1012
  }
1012
- async function k() {
1013
+ async function V() {
1013
1014
  y({ status: "loading", label: "Waking workspace runtime" });
1014
1015
  try {
1015
- const T = yn(i, o);
1016
- let h = await Promise.all(T.map(async (p) => ({ path: p, status: await F(p) }))), N = h.filter((p) => p.status === "preparing").map((p) => p.path);
1017
- for (; N.length > 0; ) {
1018
- if (y({ status: "loading", label: "Workspace is still preparing" }), await gi(b.signal), b.signal.aborted) return;
1019
- h = await Promise.all(N.map(async (p) => ({ path: p, status: await F(p) }))), N = h.filter((p) => p.status === "preparing").map((p) => p.path);
1016
+ const R = Rn(i, s);
1017
+ let h = await Promise.all(R.map(async (p) => ({ path: p, status: await W(p) }))), T = h.filter((p) => p.status === "preparing").map((p) => p.path);
1018
+ for (; T.length > 0; ) {
1019
+ if (y({ status: "loading", label: "Workspace is still preparing" }), await Ei(S.signal), S.signal.aborted) return;
1020
+ h = await Promise.all(T.map(async (p) => ({ path: p, status: await W(p) }))), T = h.filter((p) => p.status === "preparing").map((p) => p.path);
1020
1021
  }
1021
- b.signal.aborted || y({ status: "ready" });
1022
- } catch (T) {
1023
- if (b.signal.aborted) return;
1022
+ S.signal.aborted || y({ status: "ready" });
1023
+ } catch (R) {
1024
+ if (S.signal.aborted) return;
1024
1025
  y({
1025
1026
  status: "error",
1026
- message: T instanceof Error ? T.message : "Unknown workspace boot error"
1027
+ message: R instanceof Error ? R.message : "Unknown workspace boot error"
1027
1028
  });
1028
1029
  }
1029
1030
  }
1030
- return k(), () => b.abort();
1031
- }, [r, i, o, n, e]), S.status === "ready" ? /* @__PURE__ */ f(ce, { children: u }) : S.status === "error" ? typeof c == "function" ? /* @__PURE__ */ f(ce, { children: c(S.message) }) : c ? /* @__PURE__ */ f(ce, { children: c }) : /* @__PURE__ */ f(
1032
- fn,
1031
+ return V(), () => S.abort();
1032
+ }, [r, i, s, n, e]), b.status === "ready" ? /* @__PURE__ */ d(ue, { children: u }) : b.status === "error" ? typeof c == "function" ? /* @__PURE__ */ d(ue, { children: c(b.message) }) : c ? /* @__PURE__ */ d(ue, { children: c }) : /* @__PURE__ */ d(
1033
+ vn,
1033
1034
  {
1034
1035
  title: "Workspace failed to open",
1035
- description: S.message,
1036
+ description: b.message,
1036
1037
  status: "Retry by reloading the page"
1037
1038
  }
1038
- ) : typeof s == "function" ? /* @__PURE__ */ f(ce, { children: s(S.label) }) : s ? /* @__PURE__ */ f(ce, { children: s }) : /* @__PURE__ */ f(
1039
- fn,
1039
+ ) : typeof o == "function" ? /* @__PURE__ */ d(ue, { children: o(b.label) }) : o ? /* @__PURE__ */ d(ue, { children: o }) : /* @__PURE__ */ d(
1040
+ vn,
1040
1041
  {
1041
1042
  title: "Opening workspace",
1042
- description: "Waking the sandbox and preparing files, sessions, and layout.",
1043
- status: S.label
1043
+ description: "Preparing secure runtime, files, sessions, and layout.",
1044
+ status: b.label
1044
1045
  }
1045
1046
  );
1046
1047
  }
1047
- const mi = "FULL_PAGE_PANEL_MISSING_COMPONENT", pi = "FULL_PAGE_PANEL_INVALID_PARAMS_JSON", hi = "FULL_PAGE_PANEL_PARAMS_NOT_OBJECT", vi = "FULL_PAGE_PANEL_UNKNOWN_COMPONENT", Si = "FULL_PAGE_PANEL_NOT_SUPPORTED", bi = "FULL_PAGE_PANEL_RENDER_FAILED";
1048
- function L() {
1048
+ const Ai = "FULL_PAGE_PANEL_MISSING_COMPONENT", wi = "FULL_PAGE_PANEL_INVALID_PARAMS_JSON", Ri = "FULL_PAGE_PANEL_PARAMS_NOT_OBJECT", Ti = "FULL_PAGE_PANEL_UNKNOWN_COMPONENT", Ni = "FULL_PAGE_PANEL_NOT_SUPPORTED", Di = "FULL_PAGE_PANEL_RENDER_FAILED";
1049
+ function x() {
1049
1050
  }
1050
- const yi = { dispose: L }, P = () => yi;
1051
- function Pi(e) {
1051
+ const _i = { dispose: x }, P = () => _i;
1052
+ function Li(e) {
1052
1053
  return {
1053
1054
  id: `full-page:${e}`,
1054
1055
  title: e,
@@ -1058,19 +1059,19 @@ function Pi(e) {
1058
1059
  width: 0,
1059
1060
  height: 0,
1060
1061
  location: { type: "grid", referenceGroup: void 0 },
1061
- setActive: L,
1062
+ setActive: x,
1062
1063
  setTitle: (n) => {
1063
1064
  document.title = n;
1064
1065
  },
1065
- setSize: L,
1066
+ setSize: x,
1066
1067
  close: () => {
1067
1068
  window.close();
1068
1069
  },
1069
- moveTo: L,
1070
- maximize: L,
1071
- exitMaximized: L,
1070
+ moveTo: x,
1071
+ maximize: x,
1072
+ exitMaximized: x,
1072
1073
  isMaximized: () => !1,
1073
- minimize: L,
1074
+ minimize: x,
1074
1075
  onDidActiveChange: P,
1075
1076
  onDidVisibilityChange: P,
1076
1077
  onDidDimensionsChange: P,
@@ -1082,7 +1083,7 @@ function Pi(e) {
1082
1083
  onWillFocus: P
1083
1084
  };
1084
1085
  }
1085
- function Ai() {
1086
+ function Oi() {
1086
1087
  return {
1087
1088
  width: window.innerWidth,
1088
1089
  height: window.innerHeight,
@@ -1094,20 +1095,20 @@ function Ai() {
1094
1095
  panels: [],
1095
1096
  groups: [],
1096
1097
  activeGroup: void 0,
1097
- addPanel: L,
1098
- addGroup: L,
1099
- removePanel: L,
1100
- removeGroup: L,
1098
+ addPanel: x,
1099
+ addGroup: x,
1100
+ removePanel: x,
1101
+ removeGroup: x,
1101
1102
  getPanel: () => {
1102
1103
  },
1103
1104
  getGroup: () => {
1104
1105
  },
1105
- moveGroupOrPanel: L,
1106
- fromJSON: L,
1106
+ moveGroupOrPanel: x,
1107
+ fromJSON: x,
1107
1108
  toJSON: () => ({}),
1108
- clear: L,
1109
- focus: L,
1110
- layout: L,
1109
+ clear: x,
1110
+ focus: x,
1111
+ layout: x,
1111
1112
  onDidLayoutChange: P,
1112
1113
  onDidLayoutFromJSON: P,
1113
1114
  onDidAddPanel: P,
@@ -1124,109 +1125,109 @@ function Ai() {
1124
1125
  onDidActivePanelChange_: P
1125
1126
  };
1126
1127
  }
1127
- function pt({ code: e, title: n, description: r }) {
1128
- return /* @__PURE__ */ f(
1128
+ function bt({ code: e, title: n, description: r }) {
1129
+ return /* @__PURE__ */ d(
1129
1130
  "div",
1130
1131
  {
1131
1132
  className: "flex min-h-screen items-center justify-center bg-background p-6 text-foreground",
1132
1133
  "data-testid": "full-page-error-state",
1133
1134
  "data-full-page-error-code": e,
1134
- children: /* @__PURE__ */ f(Fr, { className: "w-full max-w-lg", title: n, description: r })
1135
+ children: /* @__PURE__ */ d(qr, { className: "w-full max-w-lg", title: n, description: r })
1135
1136
  }
1136
1137
  );
1137
1138
  }
1138
- function Wi({ componentId: e, params: n = {} }) {
1139
- const r = wn(), { errors: i } = Dr(), o = r.get(e), s = r.getComponents()[e];
1140
- Sr(() => {
1141
- document.title = (o == null ? void 0 : o.title) ?? e;
1142
- }, [e, o == null ? void 0 : o.title]);
1143
- const c = W(() => ({
1139
+ function Bi({ componentId: e, params: n = {} }) {
1140
+ const r = _n(), { errors: i } = Ir(), s = r.get(e), o = r.getComponents()[e];
1141
+ Dr(() => {
1142
+ document.title = (s == null ? void 0 : s.title) ?? e;
1143
+ }, [e, s == null ? void 0 : s.title]);
1144
+ const c = F(() => ({
1144
1145
  params: n,
1145
- api: Pi(e),
1146
- containerApi: Ai(),
1146
+ api: Li(e),
1147
+ containerApi: Oi(),
1147
1148
  className: "h-full"
1148
- }), [e, n]), u = W(() => {
1149
- if (!o) return null;
1150
- const S = o.pluginId ?? o.id;
1149
+ }), [e, n]), u = F(() => {
1150
+ if (!s) return null;
1151
+ const b = s.pluginId ?? s.id;
1151
1152
  for (let y = i.length - 1; y >= 0; y -= 1) {
1152
- const b = i[y];
1153
- if (b.contributionKind === "panel" && b.contributionId === e && b.pluginId === S)
1154
- return b;
1153
+ const S = i[y];
1154
+ if (S.contributionKind === "panel" && S.contributionId === e && S.pluginId === b)
1155
+ return S;
1155
1156
  }
1156
1157
  return null;
1157
- }, [e, i, o]);
1158
- return o ? !o.supportsFullPage || !s ? /* @__PURE__ */ f(
1159
- pt,
1158
+ }, [e, i, s]);
1159
+ return s ? !s.supportsFullPage || !o ? /* @__PURE__ */ d(
1160
+ bt,
1160
1161
  {
1161
- code: Si,
1162
+ code: Ni,
1162
1163
  title: "Panel does not support full-page mode",
1163
1164
  description: `Panel "${e}" can render in the workspace, but it has not opted into the dedicated full-page pane route.`
1164
1165
  }
1165
- ) : u ? /* @__PURE__ */ f(
1166
- pt,
1166
+ ) : u ? /* @__PURE__ */ d(
1167
+ bt,
1167
1168
  {
1168
- code: bi,
1169
+ code: Di,
1169
1170
  title: "Panel failed to render",
1170
1171
  description: `Panel "${e}" crashed while rendering in full-page mode: ${u.error.message}`
1171
1172
  }
1172
- ) : /* @__PURE__ */ f("div", { className: "min-h-screen bg-background text-foreground", children: /* @__PURE__ */ f(_r, { mode: "full-page", children: /* @__PURE__ */ f(s, { ...c }) }) }) : /* @__PURE__ */ f(
1173
- pt,
1173
+ ) : /* @__PURE__ */ d("div", { className: "min-h-screen bg-background text-foreground", children: /* @__PURE__ */ d($r, { mode: "full-page", children: /* @__PURE__ */ d(o, { ...c }) }) }) : /* @__PURE__ */ d(
1174
+ bt,
1174
1175
  {
1175
- code: vi,
1176
+ code: Ti,
1176
1177
  title: "Unknown panel",
1177
1178
  description: `No full-page panel component is registered as "${e}".`
1178
1179
  }
1179
1180
  );
1180
1181
  }
1181
- function Fi(e) {
1182
- var s;
1183
- const n = new URLSearchParams(e), r = ((s = n.get("component")) == null ? void 0 : s.trim()) ?? "";
1182
+ function qi(e) {
1183
+ var o;
1184
+ const n = new URLSearchParams(e), r = ((o = n.get("component")) == null ? void 0 : o.trim()) ?? "";
1184
1185
  if (!r)
1185
1186
  return {
1186
1187
  componentId: null,
1187
1188
  params: {},
1188
1189
  error: {
1189
- code: mi,
1190
+ code: Ai,
1190
1191
  message: "Missing full-page panel component id."
1191
1192
  }
1192
1193
  };
1193
1194
  const i = n.get("params");
1194
1195
  if (!i)
1195
1196
  return { componentId: r, params: {} };
1196
- let o;
1197
+ let s;
1197
1198
  try {
1198
- o = JSON.parse(i);
1199
+ s = JSON.parse(i);
1199
1200
  } catch {
1200
1201
  return {
1201
1202
  componentId: null,
1202
1203
  params: {},
1203
1204
  error: {
1204
- code: pi,
1205
+ code: wi,
1205
1206
  message: "Invalid full-page panel params JSON."
1206
1207
  }
1207
1208
  };
1208
1209
  }
1209
- return o === null || Array.isArray(o) || typeof o != "object" ? {
1210
+ return s === null || Array.isArray(s) || typeof s != "object" ? {
1210
1211
  componentId: null,
1211
1212
  params: {},
1212
1213
  error: {
1213
- code: hi,
1214
+ code: Ri,
1214
1215
  message: "Full-page panel params must be a JSON object."
1215
1216
  }
1216
- } : { componentId: r, params: o };
1217
+ } : { componentId: r, params: s };
1217
1218
  }
1218
1219
  export {
1219
- pi as FULL_PAGE_PANEL_INVALID_PARAMS_JSON,
1220
- mi as FULL_PAGE_PANEL_MISSING_COMPONENT,
1221
- Si as FULL_PAGE_PANEL_NOT_SUPPORTED,
1222
- hi as FULL_PAGE_PANEL_PARAMS_NOT_OBJECT,
1223
- bi as FULL_PAGE_PANEL_RENDER_FAILED,
1224
- vi as FULL_PAGE_PANEL_UNKNOWN_COMPONENT,
1225
- Mi as WorkspaceAgentFront,
1226
- Yr as WorkspaceBackgroundBoot,
1227
- Ci as WorkspaceBootGate,
1228
- Wi as WorkspaceFullPagePanel,
1229
- Kr as createLocalStorageSessions,
1230
- Fi as parseFullPagePanelLocation,
1231
- Jr as useLocalStorageSessions
1220
+ wi as FULL_PAGE_PANEL_INVALID_PARAMS_JSON,
1221
+ Ai as FULL_PAGE_PANEL_MISSING_COMPONENT,
1222
+ Ni as FULL_PAGE_PANEL_NOT_SUPPORTED,
1223
+ Ri as FULL_PAGE_PANEL_PARAMS_NOT_OBJECT,
1224
+ Di as FULL_PAGE_PANEL_RENDER_FAILED,
1225
+ Ti as FULL_PAGE_PANEL_UNKNOWN_COMPONENT,
1226
+ Ji as WorkspaceAgentFront,
1227
+ si as WorkspaceBackgroundBoot,
1228
+ ji as WorkspaceBootGate,
1229
+ Bi as WorkspaceFullPagePanel,
1230
+ Xr as createLocalStorageSessions,
1231
+ qi as parseFullPagePanelLocation,
1232
+ Qr as useLocalStorageSessions
1232
1233
  };