@hachej/boring-workspace 0.1.31 → 0.1.33

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/workspace.js CHANGED
@@ -1,244 +1,311 @@
1
1
  var V = Object.defineProperty;
2
- var X = (e, r, t) => r in e ? V(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
3
- var T = (e, r, t) => X(e, typeof r != "symbol" ? r + "" : r, t);
4
- import { u as z, a as G, b as Q, D as Y } from "./WorkspaceProvider-0V-2x7AH.js";
5
- import { A as ze, C as Ke, c as je, d as $e, e as _e, F as He, f as Ue, M as Ae, g as qe, P as Je, h as Ve, i as Xe, j as Ge, k as Qe, R as Ye, S as Ze, l as et, m as tt, T as at, U as rt, W as nt, n as st, o as ot, p as it, q as lt, r as ct, s as dt, t as ut, v as pt, w as mt, x as ht, y as ft, z as gt, B as bt, E as yt, G as vt, H as xt, I as Pt, J as St, K as kt, L as Ct, N as wt, O as Nt, Q as Et, V as Rt, X as Tt, Y as It, Z as Ot, _ as Ft, $ as Mt, a0 as Lt, a1 as Bt, a2 as Wt, a3 as Dt, a4 as zt, a5 as Kt, a6 as jt, a7 as $t, a8 as _t, a9 as Ht, aa as Ut, ab as At, ac as qt, ad as Jt, ae as Vt, af as Xt, ag as Gt, ah as Qt, ai as Yt, aj as Zt, ak as ea, al as ta, am as aa, an as ra, ao as na, ap as sa, aq as oa, ar as ia } from "./WorkspaceProvider-0V-2x7AH.js";
6
- import { c as w } from "./utils-B6yFEsav.js";
7
- import { C as ca, T as da, W as ua, b as pa } from "./WorkspaceLoadingState-DJF_4S4_.js";
8
- import { jsxs as b, jsx as a, Fragment as Z } from "react/jsx-runtime";
9
- import { Button as k, Sheet as ee, SheetContent as te, SheetHeader as ae, SheetTitle as re, SheetDescription as ne, EmptyState as se, Kbd as I, ErrorState as oe, IconButton as O } from "@hachej/boring-ui-kit";
10
- import { Toaster as ha, dismissToast as fa, toast as ga } from "@hachej/boring-ui-kit";
11
- import { useSyncExternalStore as K, useState as N, useEffect as P, useRef as C, useCallback as y, useMemo as S, Suspense as ie, Component as le } from "react";
12
- import { C as ya, c as va } from "./CodeEditor-DQqOn4xz.js";
13
- import { FileTree as Pa } from "./FileTree-DUxjUbxL.js";
14
- import { MarkdownEditor as ka } from "./MarkdownEditor-DPBSzTBz.js";
15
- import { MenuIcon as ce, PanelLeftOpenIcon as de, PanelLeftCloseIcon as ue, PinIcon as pe, CheckIcon as me, CopyIcon as he } from "lucide-react";
16
- import { d as wa } from "./panel-DnvDNQac.js";
17
- function Te() {
18
- const e = z();
19
- return K(e.subscribe, e.getSnapshot);
2
+ var X = (e, t, a) => t in e ? V(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;
3
+ var T = (e, t, a) => X(e, typeof t != "symbol" ? t + "" : t, a);
4
+ import { u as K, p as Q, a as Y, b as Z, D as ee } from "./WorkspaceProvider-CuIZx1ua.js";
5
+ import { A as Je, C as Ge, c as Ve, d as Xe, e as Qe, F as Ye, f as Ze, M as et, g as tt, P as at, h as rt, i as nt, j as st, k as ot, R as it, S as lt, l as ct, m as dt, T as ut, U as pt, W as ft, n as mt, o as ht, q as gt, r as bt, s as yt, t as vt, v as xt, w as kt, x as wt, y as Pt, z as St, B as Ct, E as Nt, G as Rt, H as Et, I as Tt, J as It, K as Ot, L as Ft, N as Lt, O as Mt, Q as Bt, V as Wt, X as Dt, Y as Kt, Z as $t, _ as jt, $ as zt, a0 as Ht, a1 as Ut, a2 as _t, a3 as qt, a4 as At, a5 as Jt, a6 as Gt, a7 as Vt, a8 as Xt, a9 as Qt, aa as Yt, ab as Zt, ac as ea, ad as ta, ae as aa, af as ra, ag as na, ah as sa, ai as oa, aj as ia, ak as la, al as ca, am as da, an as ua, ao as pa, ap as fa, aq as ma, ar as ha } from "./WorkspaceProvider-CuIZx1ua.js";
6
+ import { c as C } from "./utils-B6yFEsav.js";
7
+ import { C as ba, T as ya, W as va, b as xa } from "./WorkspaceLoadingState-BlvZXmFg.js";
8
+ import { jsx as r, jsxs as g, Fragment as te } from "react/jsx-runtime";
9
+ import { Button as P, Sheet as ae, SheetContent as re, SheetHeader as ne, SheetTitle as se, SheetDescription as oe, EmptyState as ie, Kbd as I, ErrorState as le, IconButton as O } from "@hachej/boring-ui-kit";
10
+ import { Toaster as wa, dismissToast as Pa, toast as Sa } from "@hachej/boring-ui-kit";
11
+ import { useSyncExternalStore as $, useState as N, useEffect as k, useRef as S, useCallback as b, useMemo as w, Suspense as ce, Component as de } from "react";
12
+ import { C as Na, c as Ra } from "./CodeEditor-DQqOn4xz.js";
13
+ import { FileTree as Ta } from "./FileTree-SmsE0Raq.js";
14
+ import { MarkdownEditor as Oa } from "./MarkdownEditor-zbp8ezds.js";
15
+ import { MenuIcon as ue, PanelLeftOpenIcon as pe, PanelLeftCloseIcon as fe, PinIcon as me, CheckIcon as he, CopyIcon as ge } from "lucide-react";
16
+ import { d as La } from "./panel-DnvDNQac.js";
17
+ function We() {
18
+ const e = K();
19
+ return $(e.subscribe, e.getSnapshot);
20
+ }
21
+ function j(e) {
22
+ switch (e.kind) {
23
+ case "openFile":
24
+ return { kind: "openFile", params: { path: e.path, ...e.mode ? { mode: e.mode } : {} } };
25
+ case "openSurface":
26
+ return { kind: "openSurface", params: { kind: e.surfaceKind, target: e.target, ...e.meta ? { meta: e.meta } : {} } };
27
+ case "openPanel":
28
+ return {
29
+ kind: "openPanel",
30
+ params: {
31
+ id: e.id,
32
+ component: e.component,
33
+ ...e.title ? { title: e.title } : {},
34
+ ...e.params ? { params: e.params } : {}
35
+ }
36
+ };
37
+ case "expandToFile":
38
+ return { kind: "expandToFile", params: { path: e.path } };
39
+ }
40
+ }
41
+ function be(e) {
42
+ return `boring-workspace-command:${encodeURIComponent(JSON.stringify(j(e)))}`;
43
+ }
44
+ function ye(e) {
45
+ return e.button === 0 && !e.metaKey && !e.ctrlKey && !e.altKey && !e.shiftKey;
46
+ }
47
+ function De({ to: e, children: t, className: a, title: n, href: i, onClick: o }) {
48
+ return /* @__PURE__ */ r(
49
+ "a",
50
+ {
51
+ href: i ?? be(e),
52
+ className: a,
53
+ title: n,
54
+ onClick: (u) => {
55
+ o == null || o(u), !(u.defaultPrevented || !ye(u)) && (u.preventDefault(), Q(j(e)));
56
+ },
57
+ children: t
58
+ }
59
+ );
60
+ }
61
+ function ve(e, t) {
62
+ return e ? `${e.replace(/\/$/, "")}${t}` : t;
63
+ }
64
+ function xe() {
65
+ if (typeof window > "u") return;
66
+ const e = window.location.pathname.match(/^\/workspace\/([^/?#]+)/);
67
+ if (e != null && e[1])
68
+ try {
69
+ return decodeURIComponent(e[1]);
70
+ } catch {
71
+ return e[1];
72
+ }
73
+ }
74
+ async function Ke(e) {
75
+ const t = new URLSearchParams({ path: e.path });
76
+ e.recordSet && t.set("recordSet", e.recordSet), e.offset !== void 0 && t.set("offset", String(e.offset)), e.limit !== void 0 && t.set("limit", String(e.limit)), e.q && t.set("q", e.q);
77
+ const a = { ...e.headers ?? {} }, n = e.workspaceId ?? xe();
78
+ n && !Object.keys(a).some((o) => o.toLowerCase() === "x-boring-workspace-id") && (a["x-boring-workspace-id"] = n);
79
+ const i = await fetch(ve(e.apiBaseUrl, `/api/v1/files/records?${t}`), {
80
+ method: "GET",
81
+ headers: a,
82
+ signal: e.signal
83
+ });
84
+ if (!i.ok)
85
+ throw new Error(`readFileRecords failed: HTTP ${i.status}`);
86
+ return await i.json();
20
87
  }
21
88
  function B(e) {
22
89
  return typeof window > "u" ? !1 : window.innerWidth < e;
23
90
  }
24
91
  function W(e = 1024) {
25
- const [r, t] = N(() => B(e));
26
- return P(() => {
27
- const s = () => {
28
- t(B(e));
92
+ const [t, a] = N(() => B(e));
93
+ return k(() => {
94
+ const n = () => {
95
+ a(B(e));
29
96
  };
30
- return s(), window.addEventListener("resize", s), () => {
31
- window.removeEventListener("resize", s);
97
+ return n(), window.addEventListener("resize", n), () => {
98
+ window.removeEventListener("resize", n);
32
99
  };
33
- }, [e]), r;
100
+ }, [e]), t;
34
101
  }
35
- function fe({
102
+ function ke({
36
103
  isNarrowViewport: e,
37
- isCollapsed: r,
38
- setCollapsed: t
104
+ isCollapsed: t,
105
+ setCollapsed: a
39
106
  }) {
40
- const s = C(r), l = C(!1), i = C(null);
41
- return P(() => {
42
- s.current = r;
43
- }, [r]), P(() => {
44
- const g = i.current, d = g !== !0 && e, o = g === !0 && !e;
45
- if (i.current = e, e && d && !s.current) {
46
- l.current = !0, t(!0);
107
+ const n = S(t), i = S(!1), o = S(null);
108
+ return k(() => {
109
+ n.current = t;
110
+ }, [t]), k(() => {
111
+ const u = o.current, d = u !== !0 && e, l = u === !0 && !e;
112
+ if (o.current = e, e && d && !n.current) {
113
+ i.current = !0, a(!0);
47
114
  return;
48
115
  }
49
- o && l.current && (l.current = !1, t(!1));
50
- }, [e, t]), y(() => {
51
- l.current = !1;
116
+ l && i.current && (i.current = !1, a(!1));
117
+ }, [e, a]), b(() => {
118
+ i.current = !1;
52
119
  }, []);
53
120
  }
54
- function Ie(e) {
55
- const [r, t] = N([]), s = C(r);
56
- s.current = r, P(() => {
121
+ function $e(e) {
122
+ const [t, a] = N([]), n = S(t);
123
+ n.current = t, k(() => {
57
124
  if (!e) {
58
- t([]);
125
+ a([]);
59
126
  return;
60
127
  }
61
- function o() {
128
+ function l() {
62
129
  try {
63
- const u = e.toJSON(), h = [];
64
- if (u && typeof u == "object" && "panels" in u) {
65
- const f = u;
66
- if (f.panels)
67
- for (const [, m] of Object.entries(f.panels))
68
- m.id && h.push({
69
- id: m.id,
70
- component: m.contentComponent ?? m.id,
71
- params: m.params
130
+ const p = e.toJSON(), m = [];
131
+ if (p && typeof p == "object" && "panels" in p) {
132
+ const y = p;
133
+ if (y.panels)
134
+ for (const [, f] of Object.entries(y.panels))
135
+ f.id && m.push({
136
+ id: f.id,
137
+ component: f.contentComponent ?? f.id,
138
+ params: f.params
72
139
  });
73
140
  }
74
- const n = s.current;
75
- (n.length !== h.length || n.some((f, m) => {
141
+ const s = n.current;
142
+ (s.length !== m.length || s.some((y, f) => {
76
143
  var v;
77
- return f.id !== ((v = h[m]) == null ? void 0 : v.id);
78
- })) && t(h);
144
+ return y.id !== ((v = m[f]) == null ? void 0 : v.id);
145
+ })) && a(m);
79
146
  } catch {
80
147
  }
81
148
  }
82
- o();
83
- const c = setInterval(o, 500);
149
+ l();
150
+ const c = setInterval(l, 500);
84
151
  return () => clearInterval(c);
85
152
  }, [e]);
86
- const l = y(
87
- (o) => {
153
+ const i = b(
154
+ (l) => {
88
155
  e == null || e.addPanel("artifacts", {
89
- id: o.id,
90
- component: o.component,
91
- params: o.params
156
+ id: l.id,
157
+ component: l.component,
158
+ params: l.params
92
159
  });
93
160
  },
94
161
  [e]
95
- ), i = y(
96
- (o) => {
97
- e == null || e.removePanel(o);
162
+ ), o = b(
163
+ (l) => {
164
+ e == null || e.removePanel(l);
98
165
  },
99
166
  [e]
100
- ), g = y(
101
- (o) => {
102
- e == null || e.activatePanel(o);
167
+ ), u = b(
168
+ (l) => {
169
+ e == null || e.activatePanel(l);
103
170
  },
104
171
  [e]
105
- ), d = y(
106
- (o) => s.current.some((c) => c.id === o),
172
+ ), d = b(
173
+ (l) => n.current.some((c) => c.id === l),
107
174
  []
108
175
  );
109
- return { panels: r, open: l, close: i, activate: g, isOpen: d };
176
+ return { panels: t, open: i, close: o, activate: u, isOpen: d };
110
177
  }
111
- function Oe(e, r = {}) {
112
- const t = r.toolPanelMap ?? {}, s = y(
113
- (i) => t[i],
114
- [t]
178
+ function je(e, t = {}) {
179
+ const a = t.toolPanelMap ?? {}, n = b(
180
+ (o) => a[o],
181
+ [a]
115
182
  );
116
- return { openForTool: y(
117
- (i, g) => {
118
- const d = t[i];
183
+ return { openForTool: b(
184
+ (o, u) => {
185
+ const d = a[o];
119
186
  if (!d) return;
120
- const o = `artifact-${g.path}`;
121
- e.isOpen(o) ? e.activate(o) : e.open({ id: o, component: d, params: g });
187
+ const l = `artifact-${u.path}`;
188
+ e.isOpen(l) ? e.activate(l) : e.open({ id: l, component: d, params: u });
122
189
  },
123
- [t, e]
124
- ), resolvePanel: s };
190
+ [a, e]
191
+ ), resolvePanel: n };
125
192
  }
126
- const ge = 768, be = 1024;
127
- function ye(e) {
193
+ const we = 768, Pe = 1024;
194
+ function Se(e) {
128
195
  return {
129
196
  ...e,
130
- groups: e.groups.filter((r) => r.id !== "sidebar")
197
+ groups: e.groups.filter((t) => t.id !== "sidebar")
131
198
  };
132
199
  }
133
- function ve({
200
+ function Ce({
134
201
  layout: e,
135
- className: r
202
+ className: t
136
203
  }) {
137
- var M;
138
- const t = z(), s = G(), l = Q(), i = W(ge), g = W(be), d = g && !i, o = S(
204
+ var L;
205
+ const a = K(), n = Y(), i = Z(), o = W(we), u = W(Pe), d = u && !o, l = w(
139
206
  () => e.groups.find((x) => x.id === "sidebar" && x.panel),
140
207
  [e]
141
- ), c = o == null ? void 0 : o.panel, u = !!c, h = fe({
142
- isNarrowViewport: u && g,
143
- isCollapsed: s.collapsed,
144
- setCollapsed: (x) => l({ collapsed: x })
145
- }), [n, p] = N(!1);
146
- P(() => {
147
- (!u || !i && !d) && p(!1);
148
- }, [u, i, d]);
149
- const f = u && (i || d && s.collapsed), m = u && !i && (!d || !s.collapsed), v = S(
150
- () => m ? e : ye(e),
151
- [m, e]
152
- ), j = S(() => {
153
- const x = m ? "inline-sidebar" : "overlay-sidebar", L = v.groups.map((E) => {
154
- let R = "";
208
+ ), c = l == null ? void 0 : l.panel, p = !!c, m = ke({
209
+ isNarrowViewport: p && u,
210
+ isCollapsed: n.collapsed,
211
+ setCollapsed: (x) => i({ collapsed: x })
212
+ }), [s, h] = N(!1);
213
+ k(() => {
214
+ (!p || !o && !d) && h(!1);
215
+ }, [p, o, d]);
216
+ const y = p && (o || d && n.collapsed), f = p && !o && (!d || !n.collapsed), v = w(
217
+ () => f ? e : Se(e),
218
+ [f, e]
219
+ ), z = w(() => {
220
+ const x = f ? "inline-sidebar" : "overlay-sidebar", M = v.groups.map((R) => {
221
+ let E = "";
155
222
  try {
156
- R = JSON.stringify(E.params ?? null);
223
+ E = JSON.stringify(R.params ?? null);
157
224
  } catch {
158
- R = "unserializable";
225
+ E = "unserializable";
159
226
  }
160
- return `${E.id}:${E.panel ?? ""}:${R}`;
227
+ return `${R.id}:${R.panel ?? ""}:${E}`;
161
228
  }).join(",");
162
- return `${v.version}:${x}:${L}`;
163
- }, [v, m]), $ = K(
164
- t.subscribe,
165
- t.getSnapshot,
166
- t.getSnapshot
167
- ), _ = S(() => t.getComponents(), [t, $]), F = c ? _[c] : null, H = c ? ((M = t.get(c)) == null ? void 0 : M.title) ?? "Sidebar" : "Sidebar", U = y(() => {
168
- p(!0);
169
- }, []), A = y(() => {
170
- h(), l({ collapsed: !1 }), p(!1);
171
- }, [h, l]), q = y(() => {
172
- h(), l({ collapsed: !0 }), p(!1);
173
- }, [h, l]), J = y(
229
+ return `${v.version}:${x}:${M}`;
230
+ }, [v, f]), H = $(
231
+ a.subscribe,
232
+ a.getSnapshot,
233
+ a.getSnapshot
234
+ ), U = w(() => a.getComponents(), [a, H]), F = c ? U[c] : null, _ = c ? ((L = a.get(c)) == null ? void 0 : L.title) ?? "Sidebar" : "Sidebar", q = b(() => {
235
+ h(!0);
236
+ }, []), A = b(() => {
237
+ m(), i({ collapsed: !1 }), h(!1);
238
+ }, [m, i]), J = b(() => {
239
+ m(), i({ collapsed: !0 }), h(!1);
240
+ }, [m, i]), G = b(
174
241
  (x) => {
175
- x.target.closest("[role='treeitem']") && p(!1);
242
+ x.target.closest("[role='treeitem']") && h(!1);
176
243
  },
177
244
  []
178
245
  );
179
- return /* @__PURE__ */ b("div", { className: "relative h-full w-full", children: [
180
- d && u && s.collapsed && /* @__PURE__ */ a(
246
+ return /* @__PURE__ */ g("div", { className: "relative h-full w-full", children: [
247
+ d && p && n.collapsed && /* @__PURE__ */ r(
181
248
  "div",
182
249
  {
183
250
  className: "pointer-events-none absolute inset-y-0 left-0 z-20 w-10 border-r border-border bg-background/95",
184
251
  "aria-hidden": "true"
185
252
  }
186
253
  ),
187
- f && /* @__PURE__ */ a(
254
+ y && /* @__PURE__ */ r(
188
255
  "div",
189
256
  {
190
- className: w(
257
+ className: C(
191
258
  "absolute z-30",
192
- i ? "left-2 top-2" : "left-1 top-2"
259
+ o ? "left-2 top-2" : "left-1 top-2"
193
260
  ),
194
- children: /* @__PURE__ */ a(
195
- k,
261
+ children: /* @__PURE__ */ r(
262
+ P,
196
263
  {
197
264
  type: "button",
198
265
  variant: "outline",
199
266
  size: "icon-sm",
200
- onClick: U,
201
- "aria-label": i ? "Open sidebar menu" : "Open collapsed sidebar",
202
- children: i ? /* @__PURE__ */ a(ce, { className: "h-4 w-4" }) : /* @__PURE__ */ a(de, { className: "h-4 w-4" })
267
+ onClick: q,
268
+ "aria-label": o ? "Open sidebar menu" : "Open collapsed sidebar",
269
+ children: o ? /* @__PURE__ */ r(ue, { className: "h-4 w-4" }) : /* @__PURE__ */ r(pe, { className: "h-4 w-4" })
203
270
  }
204
271
  )
205
272
  }
206
273
  ),
207
- d && u && !s.collapsed && /* @__PURE__ */ a("div", { className: "absolute left-2 top-2 z-30", children: /* @__PURE__ */ a(
208
- k,
274
+ d && p && !n.collapsed && /* @__PURE__ */ r("div", { className: "absolute left-2 top-2 z-30", children: /* @__PURE__ */ r(
275
+ P,
209
276
  {
210
277
  type: "button",
211
278
  variant: "outline",
212
279
  size: "icon-sm",
213
- onClick: q,
280
+ onClick: J,
214
281
  "aria-label": "Collapse sidebar",
215
- children: /* @__PURE__ */ a(ue, { className: "h-4 w-4" })
282
+ children: /* @__PURE__ */ r(fe, { className: "h-4 w-4" })
216
283
  }
217
284
  ) }),
218
- /* @__PURE__ */ a(
219
- Y,
285
+ /* @__PURE__ */ r(
286
+ ee,
220
287
  {
221
288
  layout: v,
222
- className: w(
223
- r,
224
- d && u && s.collapsed && "pl-10"
289
+ className: C(
290
+ t,
291
+ d && p && n.collapsed && "pl-10"
225
292
  )
226
293
  },
227
- j
294
+ z
228
295
  ),
229
- f && /* @__PURE__ */ a(ee, { open: n, onOpenChange: p, children: /* @__PURE__ */ b(
230
- te,
296
+ y && /* @__PURE__ */ r(ae, { open: s, onOpenChange: h, children: /* @__PURE__ */ g(
297
+ re,
231
298
  {
232
299
  side: "left",
233
300
  className: "w-[85vw] max-w-sm p-0",
234
301
  children: [
235
- /* @__PURE__ */ b(ae, { className: "flex flex-row items-center justify-between border-b border-border px-4 py-3", children: [
236
- /* @__PURE__ */ b("div", { children: [
237
- /* @__PURE__ */ a(re, { children: H }),
238
- /* @__PURE__ */ a(ne, { className: "sr-only", children: "Responsive sidebar panel" })
302
+ /* @__PURE__ */ g(ne, { className: "flex flex-row items-center justify-between border-b border-border px-4 py-3", children: [
303
+ /* @__PURE__ */ g("div", { children: [
304
+ /* @__PURE__ */ r(se, { children: _ }),
305
+ /* @__PURE__ */ r(oe, { className: "sr-only", children: "Responsive sidebar panel" })
239
306
  ] }),
240
- d && /* @__PURE__ */ b(
241
- k,
307
+ d && /* @__PURE__ */ g(
308
+ P,
242
309
  {
243
310
  type: "button",
244
311
  variant: "outline",
@@ -246,18 +313,18 @@ function ve({
246
313
  onClick: A,
247
314
  "aria-label": "Pin sidebar open",
248
315
  children: [
249
- /* @__PURE__ */ a(pe, { className: "h-4 w-4" }),
316
+ /* @__PURE__ */ r(me, { className: "h-4 w-4" }),
250
317
  "Pin"
251
318
  ]
252
319
  }
253
320
  )
254
321
  ] }),
255
- /* @__PURE__ */ a(
322
+ /* @__PURE__ */ r(
256
323
  "div",
257
324
  {
258
325
  className: "h-full min-h-0 overflow-auto",
259
- onClickCapture: J,
260
- children: F ? /* @__PURE__ */ a(ie, { fallback: /* @__PURE__ */ a(D, {}), children: /* @__PURE__ */ a(F, {}) }) : /* @__PURE__ */ a(D, {})
326
+ onClickCapture: G,
327
+ children: F ? /* @__PURE__ */ r(ce, { fallback: /* @__PURE__ */ r(D, {}), children: /* @__PURE__ */ r(F, {}) }) : /* @__PURE__ */ r(D, {})
261
328
  }
262
329
  )
263
330
  ]
@@ -266,14 +333,14 @@ function ve({
266
333
  ] });
267
334
  }
268
335
  function D() {
269
- return /* @__PURE__ */ a("div", { className: "flex h-full min-h-[240px] items-center justify-center text-sm text-muted-foreground", children: "Loading sidebar..." });
336
+ return /* @__PURE__ */ r("div", { className: "flex h-full min-h-[240px] items-center justify-center text-sm text-muted-foreground", children: "Loading sidebar..." });
270
337
  }
271
- function xe(e = {}) {
272
- const { sidebar: r = "filetree", center: t = "empty", right: s } = e, l = [
338
+ function Ne(e = {}) {
339
+ const { sidebar: t = "filetree", center: a = "empty", right: n } = e, i = [
273
340
  {
274
341
  id: "sidebar",
275
342
  position: "left",
276
- panel: r,
343
+ panel: t,
277
344
  locked: !0,
278
345
  collapsible: !0,
279
346
  collapsedWidth: 40,
@@ -282,49 +349,49 @@ function xe(e = {}) {
282
349
  {
283
350
  id: "center",
284
351
  position: "center",
285
- panel: t,
352
+ panel: a,
286
353
  dynamic: !0,
287
354
  placeholder: "empty",
288
355
  constraints: { minWidth: 300 }
289
356
  }
290
357
  ];
291
- return s && l.push({
358
+ return n && i.push({
292
359
  id: "right",
293
360
  position: "right",
294
- panel: s,
361
+ panel: n,
295
362
  hideHeader: !0,
296
363
  constraints: { minWidth: 250 }
297
- }), { version: "2.0", groups: l };
364
+ }), { version: "2.0", groups: i };
298
365
  }
299
- function Fe(e) {
300
- return /* @__PURE__ */ a(ve, { layout: xe(e), className: e.className });
366
+ function ze(e) {
367
+ return /* @__PURE__ */ r(Ce, { layout: Ne(e), className: e.className });
301
368
  }
302
- function Me({ className: e, onOpenFile: r }) {
303
- return /* @__PURE__ */ a(
304
- se,
369
+ function He({ className: e, onOpenFile: t }) {
370
+ return /* @__PURE__ */ r(
371
+ ie,
305
372
  {
306
- className: w("h-full border-0 text-muted-foreground", e),
373
+ className: C("h-full border-0 text-muted-foreground", e),
307
374
  title: "No file open",
308
375
  description: "Open a file to get started",
309
- actions: r ? /* @__PURE__ */ a(k, { type: "button", variant: "outline", onClick: r, children: "Open file" }) : null,
310
- children: /* @__PURE__ */ b("div", { className: "space-y-2 text-sm", children: [
311
- /* @__PURE__ */ b("div", { className: "flex items-center gap-3", children: [
312
- /* @__PURE__ */ a(I, { children: "⌘P" }),
313
- /* @__PURE__ */ a("span", { children: "Open file" })
376
+ actions: t ? /* @__PURE__ */ r(P, { type: "button", variant: "outline", onClick: t, children: "Open file" }) : null,
377
+ children: /* @__PURE__ */ g("div", { className: "space-y-2 text-sm", children: [
378
+ /* @__PURE__ */ g("div", { className: "flex items-center gap-3", children: [
379
+ /* @__PURE__ */ r(I, { children: "⌘P" }),
380
+ /* @__PURE__ */ r("span", { children: "Open file" })
314
381
  ] }),
315
- /* @__PURE__ */ b("div", { className: "flex items-center gap-3", children: [
316
- /* @__PURE__ */ a(I, { children: "⌘⇧P" }),
317
- /* @__PURE__ */ a("span", { children: "Command palette" })
382
+ /* @__PURE__ */ g("div", { className: "flex items-center gap-3", children: [
383
+ /* @__PURE__ */ r(I, { children: "⌘⇧P" }),
384
+ /* @__PURE__ */ r("span", { children: "Command palette" })
318
385
  ] }),
319
- /* @__PURE__ */ b("div", { className: "flex items-center gap-3", children: [
320
- /* @__PURE__ */ a(I, { children: "⌘B" }),
321
- /* @__PURE__ */ a("span", { children: "Toggle sidebar" })
386
+ /* @__PURE__ */ g("div", { className: "flex items-center gap-3", children: [
387
+ /* @__PURE__ */ r(I, { children: "⌘B" }),
388
+ /* @__PURE__ */ r("span", { children: "Toggle sidebar" })
322
389
  ] })
323
390
  ] })
324
391
  }
325
392
  );
326
393
  }
327
- class Le extends le {
394
+ class Ue extends de {
328
395
  constructor() {
329
396
  super(...arguments);
330
397
  T(this, "state", { hasError: !1, error: null });
@@ -332,92 +399,92 @@ class Le extends le {
332
399
  this.setState({ hasError: !1, error: null });
333
400
  });
334
401
  }
335
- static getDerivedStateFromError(t) {
336
- return { hasError: !0, error: t };
402
+ static getDerivedStateFromError(a) {
403
+ return { hasError: !0, error: a };
337
404
  }
338
- componentDidCatch(t, s) {
339
- const { panelId: l, onError: i } = this.props;
340
- console.error(`[PanelErrorBoundary] Panel "${l}" crashed:`, t, s.componentStack), i == null || i({
341
- panelId: l,
342
- error: t.message,
343
- stack: s.componentStack ?? void 0
405
+ componentDidCatch(a, n) {
406
+ const { panelId: i, onError: o } = this.props;
407
+ console.error(`[PanelErrorBoundary] Panel "${i}" crashed:`, a, n.componentStack), o == null || o({
408
+ panelId: i,
409
+ error: a.message,
410
+ stack: n.componentStack ?? void 0
344
411
  });
345
412
  }
346
413
  render() {
347
- var t;
348
- return this.state.hasError ? /* @__PURE__ */ a("div", { className: "flex h-full items-center justify-center p-6", children: /* @__PURE__ */ a(
349
- oe,
414
+ var a;
415
+ return this.state.hasError ? /* @__PURE__ */ r("div", { className: "flex h-full items-center justify-center p-6", children: /* @__PURE__ */ r(
416
+ le,
350
417
  {
351
418
  className: "w-full max-w-md",
352
419
  title: "Something went wrong",
353
- description: /* @__PURE__ */ b(Z, { children: [
420
+ description: /* @__PURE__ */ g(te, { children: [
354
421
  "Panel ",
355
- /* @__PURE__ */ a("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: this.props.panelId }),
422
+ /* @__PURE__ */ r("code", { className: "rounded bg-muted px-1 py-0.5 text-xs", children: this.props.panelId }),
356
423
  " ",
357
424
  "encountered an error."
358
425
  ] }),
359
- details: (t = this.state.error) == null ? void 0 : t.message,
360
- actions: /* @__PURE__ */ a(k, { type: "button", variant: "outline", onClick: this.handleRetry, children: "Retry" })
426
+ details: (a = this.state.error) == null ? void 0 : a.message,
427
+ actions: /* @__PURE__ */ r(P, { type: "button", variant: "outline", onClick: this.handleRetry, children: "Retry" })
361
428
  }
362
429
  ) }) : this.props.children;
363
430
  }
364
431
  }
365
- function Be({
432
+ function _e({
366
433
  sessions: e,
367
- activeId: r,
368
- onSwitch: t,
369
- onCreate: s,
370
- onDelete: l,
371
- className: i
434
+ activeId: t,
435
+ onSwitch: a,
436
+ onCreate: n,
437
+ onDelete: i,
438
+ className: o
372
439
  }) {
373
- const [g, d] = N(null), o = C({}), c = S(() => e.map((n) => n.id), [e]);
374
- P(() => {
440
+ const [u, d] = N(null), l = S({}), c = w(() => e.map((s) => s.id), [e]);
441
+ k(() => {
375
442
  if (c.length === 0) {
376
443
  d(null);
377
444
  return;
378
445
  }
379
- d((n) => n && c.includes(n) ? n : r && c.includes(r) ? r : c[0] ?? null);
380
- }, [c, r]);
381
- const u = y((n) => {
382
- var p;
383
- d(n), (p = o.current[n]) == null || p.focus();
384
- }, []), h = y(
385
- (n, p) => {
386
- if (n.target !== n.currentTarget) return;
387
- if (n.key === "Enter" || n.key === " ") {
388
- n.preventDefault(), t == null || t(p);
446
+ d((s) => s && c.includes(s) ? s : t && c.includes(t) ? t : c[0] ?? null);
447
+ }, [c, t]);
448
+ const p = b((s) => {
449
+ var h;
450
+ d(s), (h = l.current[s]) == null || h.focus();
451
+ }, []), m = b(
452
+ (s, h) => {
453
+ if (s.target !== s.currentTarget) return;
454
+ if (s.key === "Enter" || s.key === " ") {
455
+ s.preventDefault(), a == null || a(h);
389
456
  return;
390
457
  }
391
- const f = c.indexOf(p);
392
- if (f < 0) return;
393
- let m = f;
394
- if (n.key === "ArrowDown")
395
- m = Math.min(f + 1, c.length - 1);
396
- else if (n.key === "ArrowUp")
397
- m = Math.max(f - 1, 0);
398
- else if (n.key === "Home")
399
- m = 0;
400
- else if (n.key === "End")
401
- m = c.length - 1;
458
+ const y = c.indexOf(h);
459
+ if (y < 0) return;
460
+ let f = y;
461
+ if (s.key === "ArrowDown")
462
+ f = Math.min(y + 1, c.length - 1);
463
+ else if (s.key === "ArrowUp")
464
+ f = Math.max(y - 1, 0);
465
+ else if (s.key === "Home")
466
+ f = 0;
467
+ else if (s.key === "End")
468
+ f = c.length - 1;
402
469
  else
403
470
  return;
404
- n.preventDefault();
405
- const v = c[m];
406
- v && u(v);
471
+ s.preventDefault();
472
+ const v = c[f];
473
+ v && p(v);
407
474
  },
408
- [u, t, c]
475
+ [p, a, c]
409
476
  );
410
- return /* @__PURE__ */ b(
477
+ return /* @__PURE__ */ g(
411
478
  "div",
412
479
  {
413
480
  "data-boring-workspace-part": "session-list",
414
- className: w("flex h-full flex-col", i),
481
+ className: C("flex h-full flex-col", o),
415
482
  role: "navigation",
416
483
  "aria-label": "Sessions",
417
484
  children: [
418
- /* @__PURE__ */ b("div", { className: "flex items-center justify-between border-b border-border px-3 py-2", children: [
419
- /* @__PURE__ */ a("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Sessions" }),
420
- s && /* @__PURE__ */ a(O, { type: "button", variant: "ghost", size: "icon-xs", onClick: s, "aria-label": "New session", children: /* @__PURE__ */ a(
485
+ /* @__PURE__ */ g("div", { className: "flex items-center justify-between border-b border-border px-3 py-2", children: [
486
+ /* @__PURE__ */ r("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: "Sessions" }),
487
+ n && /* @__PURE__ */ r(O, { type: "button", variant: "ghost", size: "icon-xs", onClick: n, "aria-label": "New session", children: /* @__PURE__ */ r(
421
488
  "svg",
422
489
  {
423
490
  width: "16",
@@ -427,105 +494,120 @@ function Be({
427
494
  stroke: "currentColor",
428
495
  strokeWidth: "1.5",
429
496
  strokeLinecap: "round",
430
- children: /* @__PURE__ */ a("path", { d: "M8 3v10M3 8h10" })
497
+ children: /* @__PURE__ */ r("path", { d: "M8 3v10M3 8h10" })
431
498
  }
432
499
  ) })
433
500
  ] }),
434
- /* @__PURE__ */ b("div", { className: "flex-1 overflow-y-auto", role: "list", "aria-label": "Session list", children: [
435
- e.length === 0 && /* @__PURE__ */ a("div", { className: "px-3 py-6 text-center text-sm text-muted-foreground", children: "No sessions" }),
436
- e.map((n) => /* @__PURE__ */ a(
437
- Pe,
501
+ /* @__PURE__ */ g("div", { className: "flex-1 overflow-y-auto", role: "list", "aria-label": "Session list", children: [
502
+ e.length === 0 && /* @__PURE__ */ r("div", { className: "px-3 py-6 text-center text-sm text-muted-foreground", children: "No sessions" }),
503
+ e.map((s) => /* @__PURE__ */ r(
504
+ Ee,
438
505
  {
439
- session: n,
440
- isActive: n.id === r,
441
- isFocused: n.id === g,
442
- onSwitch: t,
443
- onDelete: l,
444
- onFocus: () => d(n.id),
445
- onKeyDown: h,
446
- rowRef: (p) => {
447
- o.current[n.id] = p;
506
+ session: s,
507
+ isActive: s.id === t,
508
+ isFocused: s.id === u,
509
+ onSwitch: a,
510
+ onDelete: i,
511
+ onFocus: () => d(s.id),
512
+ onKeyDown: m,
513
+ rowRef: (h) => {
514
+ l.current[s.id] = h;
448
515
  }
449
516
  },
450
- n.id
517
+ s.id
451
518
  ))
452
519
  ] })
453
520
  ]
454
521
  }
455
522
  );
456
523
  }
457
- function Pe({
524
+ async function Re(e) {
525
+ var a, n;
526
+ if (typeof navigator < "u" && ((a = navigator.clipboard) != null && a.writeText))
527
+ try {
528
+ return await navigator.clipboard.writeText(e), !0;
529
+ } catch {
530
+ }
531
+ if (typeof document > "u") return !1;
532
+ const t = document.createElement("textarea");
533
+ t.value = e, t.setAttribute("readonly", ""), t.style.position = "fixed", t.style.top = "-9999px", t.style.left = "-9999px", t.style.opacity = "0", t.style.pointerEvents = "none", document.body.appendChild(t);
534
+ try {
535
+ return t.focus(), t.select(), ((n = document.execCommand) == null ? void 0 : n.call(document, "copy")) ?? !1;
536
+ } catch {
537
+ return !1;
538
+ } finally {
539
+ document.body.removeChild(t);
540
+ }
541
+ }
542
+ function Ee({
458
543
  session: e,
459
- isActive: r,
460
- isFocused: t,
461
- onSwitch: s,
462
- onDelete: l,
463
- onFocus: i,
464
- onKeyDown: g,
544
+ isActive: t,
545
+ isFocused: a,
546
+ onSwitch: n,
547
+ onDelete: i,
548
+ onFocus: o,
549
+ onKeyDown: u,
465
550
  rowRef: d
466
551
  }) {
467
- const [o, c] = N(!1), u = y((h) => {
468
- var p, f;
469
- h.stopPropagation();
470
- const n = (f = (p = navigator.clipboard) == null ? void 0 : p.writeText) == null ? void 0 : f.bind(navigator.clipboard);
471
- n && n(e.id).then(() => {
472
- c(!0), window.setTimeout(() => c(!1), 1200);
552
+ const [l, c] = N(!1), p = b((m) => {
553
+ m.stopPropagation(), Re(e.id).then((s) => {
554
+ s && (c(!0), window.setTimeout(() => c(!1), 1200));
473
555
  });
474
556
  }, [e.id]);
475
- return /* @__PURE__ */ b(
557
+ return /* @__PURE__ */ g(
476
558
  "div",
477
559
  {
478
560
  ref: d,
479
561
  role: "listitem",
480
562
  "data-boring-workspace-part": "session-row",
481
- "data-boring-state": r ? "selected" : void 0,
482
- "data-focused": t ? "true" : "false",
483
- className: w(
563
+ "data-boring-state": t ? "selected" : void 0,
564
+ "data-focused": a ? "true" : "false",
565
+ className: C(
484
566
  "group flex items-center gap-2 border-b border-border px-3 py-2 text-sm cursor-pointer transition-colors",
485
567
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1",
486
- r ? "bg-accent text-accent-foreground" : "text-foreground hover:bg-accent/50"
568
+ t ? "bg-accent text-accent-foreground" : "text-foreground hover:bg-accent/50"
487
569
  ),
488
- onClick: () => s == null ? void 0 : s(e.id),
489
- onFocus: i,
490
- onKeyDown: (h) => g(h, e.id),
491
- tabIndex: t ? 0 : -1,
492
- "aria-current": r ? "true" : void 0,
570
+ onClick: () => n == null ? void 0 : n(e.id),
571
+ onFocus: o,
572
+ onKeyDown: (m) => u(m, e.id),
573
+ tabIndex: a ? 0 : -1,
574
+ "aria-current": t ? "true" : void 0,
493
575
  children: [
494
- /* @__PURE__ */ a("span", { className: "flex-1 truncate", children: e.title }),
495
- /* @__PURE__ */ a(
576
+ /* @__PURE__ */ r("span", { className: "flex-1 truncate", children: e.title }),
577
+ /* @__PURE__ */ r(
496
578
  O,
497
579
  {
498
580
  type: "button",
499
581
  variant: "ghost",
500
582
  size: "icon-xs",
501
583
  className: "shrink-0 text-muted-foreground opacity-0 hover:text-foreground focus-visible:opacity-100 group-hover:opacity-100 group-data-[focused=true]:opacity-100",
502
- onClick: u,
503
- tabIndex: t ? 0 : -1,
584
+ onClick: p,
585
+ tabIndex: a ? 0 : -1,
504
586
  "aria-label": `Copy Pi session id for ${e.title}`,
505
587
  title: "Copy Pi session id",
506
- children: o ? /* @__PURE__ */ a(me, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ a(he, { className: "h-3.5 w-3.5" })
588
+ children: l ? /* @__PURE__ */ r(he, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ r(ge, { className: "h-3.5 w-3.5" })
507
589
  }
508
590
  ),
509
- r && /* @__PURE__ */ a(
591
+ t && /* @__PURE__ */ r(
510
592
  "span",
511
593
  {
512
594
  className: "h-1.5 w-1.5 shrink-0 rounded-full bg-primary",
513
595
  "aria-label": "Active"
514
596
  }
515
597
  ),
516
- l && /* @__PURE__ */ a(
598
+ i && /* @__PURE__ */ r(
517
599
  O,
518
600
  {
519
601
  type: "button",
520
602
  variant: "ghost",
521
603
  size: "icon-xs",
522
604
  className: "shrink-0 text-muted-foreground opacity-0 hover:text-destructive focus-visible:opacity-100 group-hover:opacity-100 group-data-[focused=true]:opacity-100",
523
- onClick: (h) => {
524
- h.stopPropagation(), l(e.id);
605
+ onClick: (m) => {
606
+ m.stopPropagation(), i(e.id);
525
607
  },
526
- tabIndex: t ? 0 : -1,
608
+ tabIndex: a ? 0 : -1,
527
609
  "aria-label": `Delete ${e.title}`,
528
- children: /* @__PURE__ */ a(
610
+ children: /* @__PURE__ */ r(
529
611
  "svg",
530
612
  {
531
613
  width: "14",
@@ -535,7 +617,7 @@ function Pe({
535
617
  stroke: "currentColor",
536
618
  strokeWidth: "1.5",
537
619
  strokeLinecap: "round",
538
- children: /* @__PURE__ */ a("path", { d: "M3.5 3.5l7 7M10.5 3.5l-7 7" })
620
+ children: /* @__PURE__ */ r("path", { d: "M3.5 3.5l7 7M10.5 3.5l-7 7" })
539
621
  }
540
622
  )
541
623
  }
@@ -545,110 +627,114 @@ function Pe({
545
627
  );
546
628
  }
547
629
  export {
548
- ze as ArtifactSurfacePane,
549
- Ke as CatalogRegistry,
550
- ca as ChatLayout,
551
- ya as CodeEditor,
552
- je as CodeEditorPane,
553
- $e as CommandPalette,
554
- _e as CommandRegistry,
555
- Y as DockviewShell,
556
- Me as EmptyPane,
557
- Pa as FileTree,
558
- He as FileTreePane,
559
- Ue as FileTreeView,
560
- Fe as IdeLayout,
561
- Ae as MAX_PANELS,
562
- ka as MarkdownEditor,
563
- qe as MarkdownEditorPane,
564
- Je as PanelChrome,
565
- Le as PanelErrorBoundary,
566
- Ve as PanelRegistry,
567
- Xe as PluginError,
568
- Ge as PluginErrorBoundary,
569
- Qe as PluginErrorProvider,
570
- Ye as RegistryProvider,
571
- ve as ResponsiveDockviewShell,
572
- Ze as SessionBrowser,
573
- Be as SessionList,
574
- et as SurfaceResolverRegistry,
575
- tt as SurfaceShell,
576
- at as ThemeProvider,
577
- ha as Toaster,
578
- da as TopBar,
579
- rt as UI_COMMAND_EVENT,
580
- nt as WORKSPACE_OPEN_PATH_SURFACE_KIND,
581
- st as WorkbenchLeftPane,
582
- ot as WorkspaceFilesProvider,
583
- ua as WorkspaceLoadingState,
584
- it as WorkspaceProvider,
585
- lt as agentMeta,
586
- ct as bindStore,
587
- dt as bootstrap,
588
- pa as buildChatLayout,
589
- ut as buildFullPagePanelHref,
590
- xe as buildIdeLayout,
591
- pt as closePanelSchema,
592
- w as cn,
593
- mt as createBridge,
594
- ht as createBridgeClient,
595
- va as createShadcnTheme,
596
- ft as createWorkspaceStore,
597
- wa as definePanel,
598
- fa as dismissToast,
599
- gt as emitAgentData,
600
- bt as emitFilesystemAgentFileChange,
601
- yt as events,
602
- vt as expandToFileSchema,
603
- xt as filesystemEvents,
604
- Pt as filesystemPlugin,
605
- St as formatShortcut,
606
- kt as getFileIcon,
607
- Ct as navigateToLineSchema,
608
- wt as notificationSchema,
609
- Nt as onFilesystemChanged,
610
- Et as openFileSchema,
611
- Rt as openPanelSchema,
612
- Tt as postUiCommand,
613
- ga as toast,
614
- It as useActiveFile,
615
- Ot as useActivePanel,
616
- Te as useActivePanels,
617
- Ft as useApiBaseUrl,
618
- Ie as useArtifactPanels,
619
- Oe as useArtifactRouting,
620
- Mt as useAutoOpenAgentFiles,
621
- Lt as useCatalogRegistry,
622
- Bt as useCatalogs,
623
- Wt as useCommandRegistry,
624
- Dt as useCommands,
625
- zt as useDirtyFiles,
626
- Kt as useDockviewApi,
627
- jt as useEditorLifecycle,
628
- $t as useEvent,
629
- _t as useFilePane,
630
- Ht as useFullPagePanelHref,
631
- Ut as useHasWorkspaceFilesProvider,
632
- At as useHydrationComplete,
633
- qt as useIsFullPagePanel,
634
- Jt as useKeyboardShortcuts,
635
- Vt as useOpenPanels,
636
- Xt as usePanelRenderMode,
637
- Gt as usePluginErrors,
638
- z as useRegistry,
639
- Qt as useResetLayout,
640
- fe as useResponsiveSidebarCollapse,
641
- Q as useSetSidebar,
642
- G as useSidebarState,
643
- Yt as useSurfaceResolverRegistry,
644
- Zt as useTheme,
645
- ea as useThemePreference,
630
+ Je as ArtifactSurfacePane,
631
+ Ge as CatalogRegistry,
632
+ ba as ChatLayout,
633
+ Na as CodeEditor,
634
+ Ve as CodeEditorPane,
635
+ Xe as CommandPalette,
636
+ Qe as CommandRegistry,
637
+ ee as DockviewShell,
638
+ He as EmptyPane,
639
+ Ta as FileTree,
640
+ Ye as FileTreePane,
641
+ Ze as FileTreeView,
642
+ ze as IdeLayout,
643
+ et as MAX_PANELS,
644
+ Oa as MarkdownEditor,
645
+ tt as MarkdownEditorPane,
646
+ at as PanelChrome,
647
+ Ue as PanelErrorBoundary,
648
+ rt as PanelRegistry,
649
+ nt as PluginError,
650
+ st as PluginErrorBoundary,
651
+ ot as PluginErrorProvider,
652
+ it as RegistryProvider,
653
+ Ce as ResponsiveDockviewShell,
654
+ lt as SessionBrowser,
655
+ _e as SessionList,
656
+ ct as SurfaceResolverRegistry,
657
+ dt as SurfaceShell,
658
+ ut as ThemeProvider,
659
+ wa as Toaster,
660
+ ya as TopBar,
661
+ pt as UI_COMMAND_EVENT,
662
+ ft as WORKSPACE_OPEN_PATH_SURFACE_KIND,
663
+ mt as WorkbenchLeftPane,
664
+ ht as WorkspaceFilesProvider,
665
+ De as WorkspaceLink,
666
+ va as WorkspaceLoadingState,
667
+ gt as WorkspaceProvider,
668
+ bt as agentMeta,
669
+ yt as bindStore,
670
+ vt as bootstrap,
671
+ xa as buildChatLayout,
672
+ xt as buildFullPagePanelHref,
673
+ Ne as buildIdeLayout,
674
+ kt as closePanelSchema,
675
+ C as cn,
676
+ wt as createBridge,
677
+ Pt as createBridgeClient,
678
+ Ra as createShadcnTheme,
679
+ St as createWorkspaceStore,
680
+ La as definePanel,
681
+ Pa as dismissToast,
682
+ Ct as emitAgentData,
683
+ Nt as emitFilesystemAgentFileChange,
684
+ Rt as events,
685
+ Et as expandToFileSchema,
686
+ Tt as filesystemEvents,
687
+ It as filesystemPlugin,
688
+ Ot as formatShortcut,
689
+ Ft as getFileIcon,
690
+ Lt as navigateToLineSchema,
691
+ Mt as notificationSchema,
692
+ Bt as onFilesystemChanged,
693
+ Wt as openFileSchema,
694
+ Dt as openPanelSchema,
695
+ Q as postUiCommand,
696
+ Ke as readFileRecords,
697
+ Sa as toast,
698
+ Kt as useActiveFile,
699
+ $t as useActivePanel,
700
+ We as useActivePanels,
701
+ jt as useApiBaseUrl,
702
+ $e as useArtifactPanels,
703
+ je as useArtifactRouting,
704
+ zt as useAutoOpenAgentFiles,
705
+ Ht as useCatalogRegistry,
706
+ Ut as useCatalogs,
707
+ _t as useCommandRegistry,
708
+ qt as useCommands,
709
+ At as useDirtyFiles,
710
+ Jt as useDockviewApi,
711
+ Gt as useEditorLifecycle,
712
+ Vt as useEvent,
713
+ Xt as useFilePane,
714
+ Qt as useFullPagePanelHref,
715
+ Yt as useHasWorkspaceFilesProvider,
716
+ Zt as useHydrationComplete,
717
+ ea as useIsFullPagePanel,
718
+ ta as useKeyboardShortcuts,
719
+ aa as useOpenPanels,
720
+ ra as usePanelRenderMode,
721
+ na as usePluginErrors,
722
+ K as useRegistry,
723
+ sa as useResetLayout,
724
+ ke as useResponsiveSidebarCollapse,
725
+ Z as useSetSidebar,
726
+ Y as useSidebarState,
727
+ oa as useSurfaceResolverRegistry,
728
+ ia as useTheme,
729
+ la as useThemePreference,
646
730
  W as useViewportBreakpoint,
647
- ta as useWorkspaceAttention,
648
- aa as useWorkspaceBridge,
649
- ra as useWorkspaceChatPanel,
650
- na as useWorkspaceContext,
651
- sa as useWorkspaceContextOptional,
652
- oa as useWorkspaceRequestId,
653
- ia as userMeta
731
+ ca as useWorkspaceAttention,
732
+ da as useWorkspaceBridge,
733
+ ua as useWorkspaceChatPanel,
734
+ pa as useWorkspaceContext,
735
+ fa as useWorkspaceContextOptional,
736
+ ma as useWorkspaceRequestId,
737
+ ha as userMeta,
738
+ j as workspaceLinkCommand,
739
+ be as workspaceLinkHref
654
740
  };