@hachej/boring-workspace 0.1.16 → 0.1.18

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