@burdenoff/fe-libs 2026.911.1 → 2026.911.3

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.
@@ -95,6 +95,7 @@ export * from './preview/types';
95
95
  export * from './preview/context';
96
96
  export * from './preview/previewTransitions';
97
97
  export * from './ui/panelOverlays';
98
+ export * from './ui/useOverlayFocus';
98
99
  export * from './preview/useAssistantPreviewBridge';
99
100
  export * from './preview/AssistantPreviewOverlay';
100
101
  export * from './ui/composer/AssistantLanguageSelector';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantPreviewOverlay.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/preview/AssistantPreviewOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAA6B,KAAK,EAAE,EAAkB,MAAM,OAAO,CAAC;AA0E3E,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAoF/D,CAAC"}
1
+ {"version":3,"file":"AssistantPreviewOverlay.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/preview/AssistantPreviewOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAA6B,KAAK,EAAE,EAAkB,MAAM,OAAO,CAAC;AA2E3E,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAwF/D,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { useAssistantTr as e } from "../i18n.js";
2
2
  import { useAssistantStore as t } from "../store.js";
3
3
  import { useAssistantPreview as n } from "./context.js";
4
- import { Component as r } from "react";
5
- import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
4
+ import { useOverlayFocus as r } from "../ui/useOverlayFocus.js";
5
+ import { Component as i } from "react";
6
+ import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
6
7
  //#region src/shared/assistant/preview/AssistantPreviewOverlay.tsx
7
- var s = class extends r {
8
+ var c = class extends i {
8
9
  state = {
9
10
  failed: !1,
10
11
  shownFor: this.props.resetKey
@@ -24,42 +25,44 @@ var s = class extends r {
24
25
  render() {
25
26
  return this.state.failed ? this.props.fallback : this.props.children;
26
27
  }
27
- }, c = ({ controller: e }) => /* @__PURE__ */ a(i, { children: e.render() }), l = ({ onClose: r }) => {
28
- let i = n(), l = e(), u = t((e) => {
28
+ }, l = ({ controller: e }) => /* @__PURE__ */ o(a, { children: e.render() }), u = ({ onClose: i }) => {
29
+ let a = n(), u = e(), d = t((e) => {
29
30
  let t = e.activeConversationId, n = t ? e.processingByConversationId[t]?.messageId : null;
30
31
  return !t || !n ? "idle" : `${t}:${n}#${e.conversations.find((e) => e.id === t)?.updatedAt ?? ""}`;
31
- });
32
- return i ? /* @__PURE__ */ o("div", {
33
- className: "absolute inset-0 z-10 flex flex-col bg-bg-surface animate-in slide-in-from-right-2 fade-in duration-200",
32
+ }), f = r("assistant-toggle-preview");
33
+ return a ? /* @__PURE__ */ s("div", {
34
+ ref: f,
35
+ tabIndex: -1,
36
+ className: "absolute inset-0 z-10 flex flex-col bg-bg-surface outline-none animate-in slide-in-from-right-2 fade-in duration-200",
34
37
  role: "region",
35
- "aria-label": i.label ?? l("preview.title", "Preview"),
38
+ "aria-label": a.label ?? u("preview.title", "Preview"),
36
39
  "data-testid": "assistant-preview",
37
- children: [/* @__PURE__ */ o("div", {
40
+ children: [/* @__PURE__ */ s("div", {
38
41
  className: "flex items-center justify-between border-b border-border-default px-3 py-2",
39
- children: [/* @__PURE__ */ a("span", {
42
+ children: [/* @__PURE__ */ o("span", {
40
43
  className: "text-sm font-medium text-text-primary",
41
- children: i.label ?? l("preview.title", "Preview")
42
- }), /* @__PURE__ */ a("button", {
44
+ children: a.label ?? u("preview.title", "Preview")
45
+ }), /* @__PURE__ */ o("button", {
43
46
  type: "button",
44
- onClick: r,
47
+ onClick: i,
45
48
  className: "rounded-md px-2 py-1 text-xs text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
46
- "aria-label": l("preview.close", "Close preview"),
49
+ "aria-label": u("preview.close", "Close preview"),
47
50
  "data-testid": "assistant-preview-close",
48
- children: l("preview.close", "Close preview")
51
+ children: u("preview.close", "Close preview")
49
52
  })]
50
- }), /* @__PURE__ */ a("div", {
53
+ }), /* @__PURE__ */ o("div", {
51
54
  className: "min-h-0 flex-1 overflow-y-auto",
52
- children: /* @__PURE__ */ a(s, {
53
- resetKey: u,
54
- fallback: /* @__PURE__ */ a("p", {
55
+ children: /* @__PURE__ */ o(c, {
56
+ resetKey: d,
57
+ fallback: /* @__PURE__ */ o("p", {
55
58
  className: "p-4 text-sm text-text-muted",
56
59
  "data-testid": "assistant-preview-failed",
57
- children: l("preview.failed", "The preview could not be displayed.")
60
+ children: u("preview.failed", "The preview could not be displayed.")
58
61
  }),
59
- children: /* @__PURE__ */ a(c, { controller: i })
62
+ children: /* @__PURE__ */ o(l, { controller: a })
60
63
  })
61
64
  })]
62
65
  }) : null;
63
66
  };
64
67
  //#endregion
65
- export { l as AssistantPreviewOverlay };
68
+ export { u as AssistantPreviewOverlay };
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantConversationList.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantConversationList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAc1C,eAAO,MAAM,yBAAyB,EAAE,EAgPvC,CAAC"}
1
+ {"version":3,"file":"AssistantConversationList.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantConversationList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAgB1C,eAAO,MAAM,yBAAyB,EAAE,EA8PvC,CAAC"}
@@ -2,151 +2,156 @@ import { useAssistantProduct as e } from "../product.js";
2
2
  import { useAssistantTr as t } from "../i18n.js";
3
3
  import { chatTurns as n } from "../voice/turnVisibility.js";
4
4
  import { useAssistantStore as r } from "../store.js";
5
- import { useState as i } from "react";
6
- import { Check as a, MessageSquare as o, PanelLeftClose as s, Pencil as c, Plus as l, Trash2 as u } from "lucide-react";
7
- import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
5
+ import { useOverlayFocus as i } from "./useOverlayFocus.js";
6
+ import { useState as a } from "react";
7
+ import { Check as o, MessageSquare as s, PanelLeftClose as c, Pencil as l, Plus as u, Trash2 as d } from "lucide-react";
8
+ import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
8
9
  //#region src/shared/assistant/ui/AssistantConversationList.tsx
9
- var m = () => {
10
- let m = t(), { modes: h } = e(), { conversations: g, activeConversationId: _, processingByConversationId: v, setActiveConversation: y, setMode: b, createConversation: x, deleteConversation: S, renameConversation: C, setConversationListOpen: w } = r(), [T, E] = i(null), [D, O] = i(""), k = () => {
11
- x(), w(!1);
12
- }, A = (e) => {
13
- let t = g.find((t) => t.id === e);
14
- y(e), t && b(t.mode), w(!1);
15
- }, j = (e, t) => {
16
- E(e), O(t);
17
- }, M = () => {
18
- T && D.trim() && C(T, D.trim()), E(null);
19
- }, N = (e, t) => {
20
- e.stopPropagation(), S(t);
10
+ var h = () => {
11
+ let h = t(), { modes: g } = e(), { conversations: _, activeConversationId: v, processingByConversationId: y, setActiveConversation: b, setMode: x, createConversation: S, deleteConversation: C, renameConversation: w, setConversationListOpen: T } = r(), [E, D] = a(null), [O, k] = a(""), A = () => {
12
+ S(), T(!1);
13
+ }, j = (e) => {
14
+ let t = _.find((t) => t.id === e);
15
+ b(e), t && x(t.mode), T(!1);
16
+ }, M = (e, t) => {
17
+ D(e), k(t);
18
+ }, N = () => {
19
+ E && O.trim() && w(E, O.trim()), D(null);
20
+ }, P = (e, t) => {
21
+ e.stopPropagation(), C(t);
21
22
  };
22
- return /* @__PURE__ */ p("div", {
23
- className: "absolute inset-0 z-10 flex flex-col bg-bg-surface animate-in slide-in-from-left-2 fade-in duration-200",
23
+ return /* @__PURE__ */ m("div", {
24
+ ref: i("assistant-open-history"),
25
+ tabIndex: -1,
26
+ role: "region",
27
+ "aria-label": h("conversations.title", "History"),
28
+ className: "absolute inset-0 z-10 flex flex-col bg-bg-surface outline-none animate-in slide-in-from-left-2 fade-in duration-200",
24
29
  "data-testid": "conversation-list",
25
- children: [/* @__PURE__ */ p("div", {
30
+ children: [/* @__PURE__ */ m("div", {
26
31
  className: "flex items-center justify-between px-4 py-3 border-b border-border-default bg-bg-elevated",
27
- children: [/* @__PURE__ */ f("span", {
32
+ children: [/* @__PURE__ */ p("span", {
28
33
  className: "text-[13px] font-semibold text-text-primary",
29
- children: m("conversations.title", "History")
30
- }), /* @__PURE__ */ p("div", {
34
+ children: h("conversations.title", "History")
35
+ }), /* @__PURE__ */ m("div", {
31
36
  className: "flex items-center gap-0.5",
32
- children: [/* @__PURE__ */ f("button", {
37
+ children: [/* @__PURE__ */ p("button", {
33
38
  type: "button",
34
- onClick: k,
39
+ onClick: A,
35
40
  className: "p-1.5 rounded-lg text-text-secondary hover:bg-bg-sunken transition-colors",
36
- "aria-label": m("conversations.new", "New conversation"),
41
+ "aria-label": h("conversations.new", "New conversation"),
37
42
  "data-testid": "new-conversation",
38
- children: /* @__PURE__ */ f(l, { className: "size-4" })
39
- }), /* @__PURE__ */ p("button", {
43
+ children: /* @__PURE__ */ p(u, { className: "size-4" })
44
+ }), /* @__PURE__ */ m("button", {
40
45
  type: "button",
41
- onClick: () => w(!1),
46
+ onClick: () => T(!1),
42
47
  className: "flex items-center gap-1 px-2 py-1.5 rounded-lg text-text-secondary hover:bg-bg-sunken transition-colors",
43
- "aria-label": m("conversations.collapse", "Collapse history"),
48
+ "aria-label": h("conversations.collapse", "Collapse history"),
44
49
  "data-testid": "collapse-conversation-list",
45
- children: [/* @__PURE__ */ f(s, { className: "size-4" }), /* @__PURE__ */ f("span", {
50
+ children: [/* @__PURE__ */ p(c, { className: "size-4" }), /* @__PURE__ */ p("span", {
46
51
  className: "text-[11px] font-medium",
47
- children: m("conversations.collapseLabel", "Collapse")
52
+ children: h("conversations.collapseLabel", "Collapse")
48
53
  })]
49
54
  })]
50
55
  })]
51
- }), /* @__PURE__ */ f("div", {
56
+ }), /* @__PURE__ */ p("div", {
52
57
  className: "flex-1 overflow-y-auto",
53
- children: g.length === 0 ? /* @__PURE__ */ p("div", {
58
+ children: _.length === 0 ? /* @__PURE__ */ m("div", {
54
59
  className: "flex flex-col items-center justify-center h-full text-center px-4",
55
60
  children: [
56
- /* @__PURE__ */ f(o, { className: "size-6 text-text-muted mb-2" }),
57
- /* @__PURE__ */ f("p", {
61
+ /* @__PURE__ */ p(s, { className: "size-6 text-text-muted mb-2" }),
62
+ /* @__PURE__ */ p("p", {
58
63
  className: "text-xs text-text-muted",
59
- children: m("conversations.empty", "No conversations yet")
64
+ children: h("conversations.empty", "No conversations yet")
60
65
  }),
61
- /* @__PURE__ */ f("button", {
66
+ /* @__PURE__ */ p("button", {
62
67
  type: "button",
63
- onClick: k,
68
+ onClick: A,
64
69
  className: "mt-2 text-xs text-action-primary-bg hover:underline",
65
- children: m("conversations.startNew", "Start a new conversation")
70
+ children: h("conversations.startNew", "Start a new conversation")
66
71
  })
67
72
  ]
68
- }) : /* @__PURE__ */ f("div", {
73
+ }) : /* @__PURE__ */ p("div", {
69
74
  className: "py-1",
70
- children: g.map((e) => {
71
- let t = e.id === _, r = e.id === T, i = h.find((t) => t.id === e.mode), o = n(e.messages), s = o[o.length - 1], l = o.length === 0 && e.messages.length > 0, g = v[e.id];
72
- return /* @__PURE__ */ f("div", {
75
+ children: _.map((e) => {
76
+ let t = e.id === v, r = e.id === E, i = g.find((t) => t.id === e.mode), a = n(e.messages), s = a[a.length - 1], c = a.length === 0 && e.messages.length > 0, u = y[e.id];
77
+ return /* @__PURE__ */ p("div", {
73
78
  role: "button",
74
79
  tabIndex: 0,
75
80
  onKeyDown: (t) => {
76
- (t.key === "Enter" || t.key === " ") && (t.preventDefault(), !r && A(e.id));
81
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), !r && j(e.id));
77
82
  },
78
- onClick: () => !r && A(e.id),
83
+ onClick: () => !r && j(e.id),
79
84
  className: `group px-3 py-2 cursor-pointer hover:bg-bg-elevated transition-colors ${t ? "bg-bg-elevated border-l-2 border-action-primary-bg" : ""}`,
80
- children: r ? /* @__PURE__ */ p("div", {
85
+ children: r ? /* @__PURE__ */ m("div", {
81
86
  className: "flex items-center gap-1",
82
- children: [/* @__PURE__ */ f("input", {
83
- "aria-label": m("conversations.renameLabel", "Conversation title"),
84
- value: D,
85
- onChange: (e) => O(e.target.value),
87
+ children: [/* @__PURE__ */ p("input", {
88
+ "aria-label": h("conversations.renameLabel", "Conversation title"),
89
+ value: O,
90
+ onChange: (e) => k(e.target.value),
86
91
  onKeyDown: (e) => {
87
- e.key === "Enter" && M(), e.key === "Escape" && E(null);
92
+ e.key === "Enter" && N(), e.key === "Escape" && D(null);
88
93
  },
89
94
  className: "flex-1 text-xs bg-bg-sunken border border-border-default rounded px-2 py-1 text-text-primary focus:outline-none focus:border-action-primary-bg",
90
95
  onClick: (e) => e.stopPropagation()
91
- }), /* @__PURE__ */ f("button", {
96
+ }), /* @__PURE__ */ p("button", {
92
97
  type: "button",
93
98
  onClick: (e) => {
94
- e.stopPropagation(), M();
99
+ e.stopPropagation(), N();
95
100
  },
96
101
  className: "p-1 hover:bg-bg-sunken rounded",
97
- "aria-label": m("conversations.saveTitle", "Save title"),
98
- children: /* @__PURE__ */ f(a, { className: "size-3 text-status-success-text" })
102
+ "aria-label": h("conversations.saveTitle", "Save title"),
103
+ children: /* @__PURE__ */ p(o, { className: "size-3 text-status-success-text" })
99
104
  })]
100
- }) : /* @__PURE__ */ p(d, { children: [
101
- /* @__PURE__ */ p("div", {
105
+ }) : /* @__PURE__ */ m(f, { children: [
106
+ /* @__PURE__ */ m("div", {
102
107
  className: "flex items-center justify-between",
103
- children: [/* @__PURE__ */ f("span", {
108
+ children: [/* @__PURE__ */ p("span", {
104
109
  className: "text-xs font-medium text-text-primary truncate flex-1",
105
110
  children: e.title
106
- }), /* @__PURE__ */ p("div", {
111
+ }), /* @__PURE__ */ m("div", {
107
112
  className: "hidden group-hover:flex group-focus-within:flex items-center gap-0.5 ml-1",
108
- children: [/* @__PURE__ */ f("button", {
113
+ children: [/* @__PURE__ */ p("button", {
109
114
  type: "button",
110
115
  onClick: (t) => {
111
- t.stopPropagation(), j(e.id, e.title);
116
+ t.stopPropagation(), M(e.id, e.title);
112
117
  },
113
118
  className: "p-0.5 hover:bg-bg-sunken rounded",
114
- "aria-label": m("conversations.rename", "Rename conversation"),
115
- children: /* @__PURE__ */ f(c, { className: "size-3 text-text-muted" })
116
- }), /* @__PURE__ */ f("button", {
119
+ "aria-label": h("conversations.rename", "Rename conversation"),
120
+ children: /* @__PURE__ */ p(l, { className: "size-3 text-text-muted" })
121
+ }), /* @__PURE__ */ p("button", {
117
122
  type: "button",
118
- onClick: (t) => N(t, e.id),
123
+ onClick: (t) => P(t, e.id),
119
124
  className: "p-0.5 hover:bg-bg-sunken rounded",
120
- "aria-label": m("conversations.delete", "Delete conversation"),
125
+ "aria-label": h("conversations.delete", "Delete conversation"),
121
126
  "data-testid": "delete-conversation",
122
- children: /* @__PURE__ */ f(u, { className: "size-3 text-status-error-text" })
127
+ children: /* @__PURE__ */ p(d, { className: "size-3 text-status-error-text" })
123
128
  })]
124
129
  })]
125
130
  }),
126
- /* @__PURE__ */ p("div", {
131
+ /* @__PURE__ */ m("div", {
127
132
  className: "flex items-center gap-1.5 mt-0.5",
128
133
  children: [
129
- /* @__PURE__ */ f("span", {
134
+ /* @__PURE__ */ p("span", {
130
135
  className: "text-[10px] text-text-muted px-1 py-0.5 bg-bg-sunken rounded",
131
136
  children: i?.label ?? e.mode
132
137
  }),
133
- /* @__PURE__ */ p("span", {
138
+ /* @__PURE__ */ m("span", {
134
139
  className: "text-[10px] text-text-muted",
135
- children: [o.length, " msgs"]
140
+ children: [a.length, " msgs"]
136
141
  }),
137
- g && g.status !== "idle" && /* @__PURE__ */ f("span", {
142
+ u && u.status !== "idle" && /* @__PURE__ */ p("span", {
138
143
  className: "text-[10px] text-action-primary-bg px-1 py-0.5 bg-bg-sunken rounded",
139
- children: g.status
144
+ children: u.status
140
145
  })
141
146
  ]
142
147
  }),
143
- s && /* @__PURE__ */ f("p", {
148
+ s && /* @__PURE__ */ p("p", {
144
149
  className: "text-[10px] text-text-muted truncate mt-0.5",
145
150
  children: s.content.slice(0, 60)
146
151
  }),
147
- l && /* @__PURE__ */ f("p", {
152
+ c && /* @__PURE__ */ p("p", {
148
153
  className: "text-[10px] text-text-muted truncate mt-0.5",
149
- children: m("conversationList.voiceOnly", "Spoken conversation")
154
+ children: h("conversationList.voiceOnly", "Spoken conversation")
150
155
  })
151
156
  ] })
152
157
  }, e.id);
@@ -156,4 +161,4 @@ var m = () => {
156
161
  });
157
162
  };
158
163
  //#endregion
159
- export { m as AssistantConversationList };
164
+ export { h as AssistantConversationList };
@@ -0,0 +1,4 @@
1
+ export declare function useOverlayFocus<T extends HTMLElement>(
2
+ /** `data-testid` of the control that opens this overlay, for focus return. */
3
+ returnFocusTestId?: string): import('react').RefObject<T | null>;
4
+ //# sourceMappingURL=useOverlayFocus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayFocus.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/useOverlayFocus.ts"],"names":[],"mappings":"AAmDA,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW;AACnD,8EAA8E;AAC9E,iBAAiB,CAAC,EAAE,MAAM,uCAgE3B"}
@@ -0,0 +1,19 @@
1
+ import { useEffect as e, useLayoutEffect as t, useRef as n } from "react";
2
+ //#region src/shared/assistant/ui/useOverlayFocus.ts
3
+ var r = "[data-testid=\"ai-assistant-panel\"]", i = typeof document > "u" ? e : t;
4
+ function a(e) {
5
+ let t = n(null);
6
+ return i(() => {
7
+ let n = t.current, i = n?.closest(r) ?? null;
8
+ return n?.focus({ preventScroll: !0 }), () => {
9
+ let t = document.activeElement;
10
+ if (!(n && (n === t || n.contains(t)))) return;
11
+ let r = e ? i?.querySelector(`[data-testid="${e}"]`) : null;
12
+ (r?.isConnected ? r : i)?.focus({ preventScroll: !0 });
13
+ let a = document.activeElement;
14
+ i && a !== n && !n?.contains(a) && (i === a || i.contains(a)) || i?.focus({ preventScroll: !0 });
15
+ };
16
+ }, [e]), t;
17
+ }
18
+ //#endregion
19
+ export { a as useOverlayFocus };
@@ -62,40 +62,41 @@ import { AssistantAttachmentChips as ai } from "./shared/assistant/ui/composer/A
62
62
  import { AssistantPreviewProvider as oi, useAssistantPreview as si } from "./shared/assistant/preview/context.js";
63
63
  import { IDLE_PREVIEW_STATE as ci, nextPreviewEvents as li } from "./shared/assistant/preview/previewTransitions.js";
64
64
  import { NO_PANEL_OVERLAY as ui, escapeDismisses as di, nextPanelOverlays as fi } from "./shared/assistant/ui/panelOverlays.js";
65
- import { useAssistantPreviewBridge as pi } from "./shared/assistant/preview/useAssistantPreviewBridge.js";
66
- import { AssistantPreviewOverlay as mi } from "./shared/assistant/preview/AssistantPreviewOverlay.js";
67
- import { AssistantLanguageSelector as hi, FOLLOW_APP_LOCALE as gi } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
68
- import { ASSISTANT_MODE_META as _i, AssistantModeSelector as vi, nextModeIndex as yi } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
69
- import { AssistantVoiceButton as bi } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
70
- import { AUTO_VOICE as xi, AssistantVoiceSelector as Si } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
71
- import { AssistantVoiceOrb as Ci } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
72
- import { AssistantVoiceSessionButton as wi } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
73
- import { CAPTION_SCROLL_ATTR as Ti, VoiceCaption as Ei } from "./shared/assistant/ui/voice/VoiceCaption.js";
74
- import { VoiceConversationView as Di } from "./shared/assistant/ui/voice/VoiceConversationView.js";
75
- import { VoiceWaveform as Oi } from "./shared/assistant/ui/voice/VoiceWaveform.js";
76
- import { VoiceMiniController as ki } from "./shared/assistant/ui/voice/VoiceMiniController.js";
77
- import { VoiceStage as Ai } from "./shared/assistant/ui/voice/VoiceStage.js";
78
- import { VoiceTranscriptDrawer as ji } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
79
- import { downloadFile as Mi, exportConversation as Ni } from "./shared/assistant/exportConversation.js";
80
- import { AssistantMoreMenu as Pi } from "./shared/assistant/ui/AssistantMoreMenu.js";
81
- import { AssistantHeader as Fi } from "./shared/assistant/ui/AssistantHeader.js";
82
- import { AssistantConversationList as Ii } from "./shared/assistant/ui/AssistantConversationList.js";
83
- import { AssistantEmptyState as Li } from "./shared/assistant/ui/AssistantEmptyState.js";
84
- import { AssistantMessageItem as Ri } from "./shared/assistant/ui/AssistantMessageItem.js";
85
- import { AssistantMessageList as zi } from "./shared/assistant/ui/AssistantMessageList.js";
86
- import { AssistantVoiceSession as Bi } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
87
- import { useAssistantApiAccess as Vi } from "./shared/assistant/useAssistantApiAccess.js";
88
- import { useConversationTurns as Hi } from "./shared/assistant/useConversationTurns.js";
89
- import { isMultimodalBodyRejection as Ui, isRecoverableAssistantError as Wi } from "./shared/assistant/transportErrors.js";
90
- import { aiCreditsUpdatedEventName as Gi, dispatchAssistantQuotaExhausted as Ki, notifyAiCreditsUpdated as qi } from "./shared/assistant/aiCredits.js";
91
- import { useWorkspaceWriteAccess as Ji } from "./shared/assistant/useWorkspaceWriteAccess.js";
92
- import { extractDocumentText as Yi } from "./shared/assistant/documentExtract.js";
93
- import { useAssistantAttachments as Xi } from "./shared/assistant/useAssistantAttachments.js";
94
- import { AssistantComposer as Zi } from "./shared/assistant/ui/composer/AssistantComposer.js";
95
- import { isProdRuntime as Qi } from "./shared/assistant/env.js";
96
- import { useAssistantHeartbeat as $i } from "./shared/assistant/useAssistantHeartbeat.js";
97
- import { useAssistantKeyboardShortcuts as ea } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
98
- import { AssistantApiCallsConsentDialog as ta } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
99
- import { AssistantChatArea as na } from "./shared/assistant/ui/AssistantChatArea.js";
100
- import { AIAssistantPanel as ra } from "./shared/assistant/ui/AIAssistantPanel.js";
101
- export { ra as AIAssistantPanel, L as ASSISTANT_API_AUTH_STRATEGY, sn as ASSISTANT_LANGUAGES, _i as ASSISTANT_MODE_META, Kn as ATTACHMENT_ACCEPT, Hr as ATTACHMENT_SOURCES, xi as AUTO_VOICE, ta as AssistantApiCallsConsentDialog, ii as AssistantAttachmentButton, ai as AssistantAttachmentChips, Jr as AssistantAutoSpeakToggle, na as AssistantChatArea, Zi as AssistantComposer, ri as AssistantConnectSourceItem, ti as AssistantConnectSourceProvider, Ii as AssistantConversationList, Li as AssistantEmptyState, Fi as AssistantHeader, s as AssistantI18nProvider, Zr as AssistantLanguageMenu, hi as AssistantLanguageSelector, f as AssistantMarkdownImage, h as AssistantMarkdownRenderer, Yr as AssistantMessageAttachments, Ri as AssistantMessageItem, zi as AssistantMessageList, vi as AssistantModeSelector, Pi as AssistantMoreMenu, g as AssistantNavigateProvider, Xr as AssistantPendingWriteCard, mi as AssistantPreviewOverlay, oi as AssistantPreviewProvider, t as AssistantProductProvider, Qr as AssistantReplyLanguageSelector, _e as AssistantRuntimeManager, $r as AssistantSpeakButton, Ir as AssistantSpeechProvider, ei as AssistantSpokenTurnsNotice, Pr as AssistantToolActivity, bi as AssistantVoiceButton, Ci as AssistantVoiceOrb, Si as AssistantVoiceSelector, Bi as AssistantVoiceSession, wi as AssistantVoiceSessionButton, qn as AttachmentRejectedError, En as BOILERPLATE_PAGE_SHARE, Ti as CAPTION_SCROLL_ATTR, O as CHECK_AI_CREDITS, k as CREATE_SANDBOX, zt as DEFAULT_SPEAKABLE_LABELS, cn as DEFAULT_SPEECH_RATE, ft as ENDPOINT_GRACE_MS, A as EXTEND_SANDBOX_TTL, gi as FOLLOW_APP_LOCALE, j as GET_ACTIVE_SANDBOXES, M as GET_SANDBOX, He as HOSTED_TTS_MAX_CHARS, Re as HOSTED_TTS_TIER, ze as HOSTED_VOICES, yn as IDLE_PLAYBACK, ci as IDLE_PREVIEW_STATE, pt as INITIAL_SESSION, Jn as INLINE_IMAGE_MAX_DIM, Yn as INLINE_IMAGE_QUALITY, mt as INTERRUPT_MAX_MS, ht as INTERRUPT_MIN_MS, Xn as MAX_ATTACHMENTS, Dn as MAX_BOILERPLATE_LINE_CHARS, On as MAX_EXTRACTED_CHARS, Zn as MAX_FILE_BYTES, Qn as MAX_INLINE_CHARS_PER_FILE, $n as MAX_INLINE_CHARS_TOTAL, wn as MAX_INLINE_IMAGE_BASE64_BYTES, er as MAX_INLINE_IMAGE_BASE64_CHARS, tr as MAX_INLINE_IMAGE_PARTS, nr as MAX_INLINE_TURN_BODY_BYTES, kn as MAX_PDF_PAGES_SCANNED, Tn as MAX_REQUEST_BODY_BYTES, Bt as MAX_SPEAKABLE_CHARS, Vt as MAX_SPOKEN_TABLE_ROWS, rr as MAX_TURN_BODY_BYTES, Zt as MINI_CAPTION_BUDGET, An as MIN_PAGE_TEXT_CHARS, jn as MIN_TEXT_PAGE_SHARE, ui as NO_PANEL_OVERLAY, Dr as PHRASE_ROTATE_MS, $t as POLL_FAST_MS, en as POLL_FAST_UNTIL_MS, tn as POLL_SLOW_MS, nn as POLL_STEADY_MS, rn as POLL_STEADY_UNTIL_MS, Yt as PREVIEW_LANGUAGES, ir as PROMPT_ENVELOPE_RESERVE_BYTES, N as PROXY_SANDBOX_REQUEST, P as REPORT_AI_TOKEN_USAGE, Gr as SANDBOX_READY_TTL_MS, gt as SILENCE_SUBMIT_MS, Ue as SPEAKING_RATE_MAX, We as SPEAKING_RATE_MAX_STREAMING, Ge as SPEAKING_RATE_MAX_SYNC, Ke as SPEAKING_RATE_MIN, Ht as SPEECH_CHUNK_CHARS, Ut as SPEECH_CHUNK_CJK_CHARS, wt as SPEECH_LANG, hn as SPOKEN_LABEL_LANGUAGES, Or as STAGE_COPY, F as STOP_ASSISTANT_SANDBOX, kr as THINKING_PHRASES, ar as TURN_BODY_HEADROOM_BYTES, Tt as VOICE_LIST_TIMEOUT_MS, Ei as VoiceCaption, Di as VoiceConversationView, ki as VoiceMiniController, Ai as VoiceStage, ji as VoiceTranscriptDrawer, Oi as VoiceWaveform, I as WAIT_FOR_SANDBOX_RUNNING, q as abortAssistantTurn, Gi as aiCreditsUpdatedEventName, J as approvePendingWrite, _ as assistantRoutePath, c as assistantTranslationKey, v as assistantUrlTransform, Ur as availableAttachmentSources, qe as base64ToBytes, y as browserShouldHandle, Le as browserSpeechEngine, Y as buildAssistantSandboxEnv, or as buildAttachmentPromptBlock, It as buildContinuedFromVoiceNote, ve as buildProgress, sr as buildPromptParts, X as buildPromptRequestBody, cr as buildPromptWithAttachments, Je as buildRequest, E as buildSandboxContextInput, Lt as buildVoiceTranscriptMarkdown, Ae as chatTurns, Z as checkAssistantAiCredits, Wt as chunkForSpeech, b as classifyAssistantHref, lr as classifyAttachment, Ye as classifyHttpFailure, S as classifyQuotaError, Mn as columnLetterToIndex, tt as configureSpeechEngine, Gt as containsCjk, d as copyToClipboard, ur as countInlineImageCandidates, dr as countInlinedImageParts, Q as createAssistantSandbox, $ as createAssistantSession, $e as createHostedTtsEngine, Kr as createReadinessTracker, et as createRoutingSpeechEngine, Oe as createSandboxAssistantTransport, nt as createSpeechEngines, Xe as decodeAudioResponse, Nn as decodeXmlEntities, C as describeQuotaError, fr as detectDocumentFormat, _n as detectScriptLocale, Wr as deviceHasCamera, Ki as dispatchAssistantQuotaExhausted, Pn as docxXmlToText, ee as downloadAssistantArtifact, Mi as downloadFile, di as escapeDismisses, pr as estimateTurnBodyBytes, D as executeSandboxGraphQL, Ni as exportConversation, te as extendAssistantSandboxTTL, Yi as extractDocumentText, ln as findAssistantLanguage, ne as findExistingSandbox, pn as findPendingWrite, Fn as fitPdfPages, mr as formatBytes, In as formatPageRanges, zr as getActorId, re as getAssistantArtifacts, ye as getAssistantMedia, ie as getAssistantMessages, ae as getAssistantSession, oe as getAssistantStreamAccess, be as getAssistantText, hr as getAttachmentSendBlocker, U as getCapability, gr as getExtension, R as getImageForMode, z as getImageTagForMode, Br as getOrganizationId, xe as getRawMessageCreatedAt, B as getResourcesForMode, V as getSandboxImageRegistry, _r as getSendableAttachments, rt as getSpeechEngine, Se as getToolProgress, Vr as getWorkspaceId, je as groupBySession, Me as groupConsecutiveBySession, vr as hasAttachmentWorkInFlight, Be as hostedLocaleFor, Ve as hostedSupportsLanguage, p as imageHostLabel, _t as isCapturing, vt as isEcho, Ln as isMostlyImagePages, Ui as isMultimodalBodyRejection, Qi as isProdRuntime, w as isQuotaExhaustedError, Ce as isReapedSandboxConnectionError, qr as isRecentlyVerified, we as isRecoverable, Wi as isRecoverableAssistantError, m as isRemoteImageSrc, bn as isSpeakingMessage, Et as isSpeechBlocked, Ar as isStageCopy, yt as isSubmittable, wr as isTurnInFlight, W as isUnknownFieldError, Ne as isVoiceTurn, Rn as joinSheets, Dt as languageDisplayName, Te as mapSessionToHistory, G as markSupported, K as markUnsupported, Ee as mergeMessagesById, ot as micIsInterrupt, se as modeRequiresConfirmWrites, yi as nextModeIndex, fi as nextPanelOverlays, li as nextPreviewEvents, Ot as normalizeLangTag, qi as notifyAiCreditsUpdated, bt as orbMode, zn as pageMarker, mn as parseConfirmationRefusal, yr as parseDataUrl, Bn as parseSharedStrings, Fr as parseToolActivity, Vn as parseWorkbookSheets, Hn as pdfTextItemsToPage, Tr as planAbandonedTurn, xt as planReplyConsumption, Er as planTurnAbort, an as pollDelayMs, kt as primaryLanguageSubtag, xn as publishedChunks, T as quotaExhaustedEventName, it as readSpeechEngineConfig, ce as releaseSupersededAssistantSandboxes, dn as replyFollowsInput, le as reportAssistantAiTokenUsage, Sn as requiresCancel, at as resetSpeechEngine, un as resolveAssistantLanguage, fn as resolveLanguagePair, n as resolveModeConfig, H as resolveSandboxAssistantMode, vn as resolveSpeechLocale, De as sanitize, ue as selectExistingAssistantSandbox, de as selectSupersededAssistantSandboxes, At as selectVoiceForLocale, fe as sendAssistantPromptAsync, pe as sendHeartbeat, Un as sheetXmlToRows, Ze as shouldDisableEngine, Qt as showPreviousChunk, st as showsAssistantCaption, ct as showsUserCaption, Kt as speakableEmail, jt as speechGate, gn as speechLabelsFor, Mt as speechLangForLocale, Cn as speechPlaybackReducer, Qe as splitForVendor, qt as splitTableRow, St as spokenSoFar, jr as stageText, Mr as statusStageCopy, me as stopReapedAssistantSandbox, Wn as summarisePageText, Nr as thinkingPhrase, on as toCaptionText, br as toMessageAttachment, Jt as toSpeakableText, xr as truncateForInline, Gn as truncatePagesForInline, Vi as useAssistantApiAccess, Xi as useAssistantAttachments, ni as useAssistantConnectSource, $i as useAssistantHeartbeat, l as useAssistantI18nNamespace, ea as useAssistantKeyboardShortcuts, x as useAssistantNavigate, r as useAssistantPageLabel, si as useAssistantPreview, pi as useAssistantPreviewBridge, i as useAssistantProduct, a as useAssistantProductOrNull, Lr as useAssistantSpeech, o as useAssistantStorageFolders, Cr as useAssistantStore, u as useAssistantTr, Hi as useConversationTurns, ke as useSandboxAssistantTransport, e as useVoiceInput, Rr as useVoiceSession, Ji as useWorkspaceWriteAccess, Sr as validateFile, Nt as voiceAvailability, Pe as voiceMarker, Xt as voicePreviewText, Pt as voiceQualityRank, Fe as voiceSessionIdOf, Ct as voiceSessionReducer, lt as voiceStageState, Rt as voiceTranscriptFilename, Ie as voiceTurnsOnly, Ft as voicesForLocale, he as waitForAssistantServiceReady, ge as waitForSandboxRunning, ut as waveformIsActive, dt as waveformIsSettled };
65
+ import { useOverlayFocus as pi } from "./shared/assistant/ui/useOverlayFocus.js";
66
+ import { useAssistantPreviewBridge as mi } from "./shared/assistant/preview/useAssistantPreviewBridge.js";
67
+ import { AssistantPreviewOverlay as hi } from "./shared/assistant/preview/AssistantPreviewOverlay.js";
68
+ import { AssistantLanguageSelector as gi, FOLLOW_APP_LOCALE as _i } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
69
+ import { ASSISTANT_MODE_META as vi, AssistantModeSelector as yi, nextModeIndex as bi } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
70
+ import { AssistantVoiceButton as xi } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
71
+ import { AUTO_VOICE as Si, AssistantVoiceSelector as Ci } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
72
+ import { AssistantVoiceOrb as wi } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
73
+ import { AssistantVoiceSessionButton as Ti } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
74
+ import { CAPTION_SCROLL_ATTR as Ei, VoiceCaption as Di } from "./shared/assistant/ui/voice/VoiceCaption.js";
75
+ import { VoiceConversationView as Oi } from "./shared/assistant/ui/voice/VoiceConversationView.js";
76
+ import { VoiceWaveform as ki } from "./shared/assistant/ui/voice/VoiceWaveform.js";
77
+ import { VoiceMiniController as Ai } from "./shared/assistant/ui/voice/VoiceMiniController.js";
78
+ import { VoiceStage as ji } from "./shared/assistant/ui/voice/VoiceStage.js";
79
+ import { VoiceTranscriptDrawer as Mi } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
80
+ import { downloadFile as Ni, exportConversation as Pi } from "./shared/assistant/exportConversation.js";
81
+ import { AssistantMoreMenu as Fi } from "./shared/assistant/ui/AssistantMoreMenu.js";
82
+ import { AssistantHeader as Ii } from "./shared/assistant/ui/AssistantHeader.js";
83
+ import { AssistantConversationList as Li } from "./shared/assistant/ui/AssistantConversationList.js";
84
+ import { AssistantEmptyState as Ri } from "./shared/assistant/ui/AssistantEmptyState.js";
85
+ import { AssistantMessageItem as zi } from "./shared/assistant/ui/AssistantMessageItem.js";
86
+ import { AssistantMessageList as Bi } from "./shared/assistant/ui/AssistantMessageList.js";
87
+ import { AssistantVoiceSession as Vi } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
88
+ import { useAssistantApiAccess as Hi } from "./shared/assistant/useAssistantApiAccess.js";
89
+ import { useConversationTurns as Ui } from "./shared/assistant/useConversationTurns.js";
90
+ import { isMultimodalBodyRejection as Wi, isRecoverableAssistantError as Gi } from "./shared/assistant/transportErrors.js";
91
+ import { aiCreditsUpdatedEventName as Ki, dispatchAssistantQuotaExhausted as qi, notifyAiCreditsUpdated as Ji } from "./shared/assistant/aiCredits.js";
92
+ import { useWorkspaceWriteAccess as Yi } from "./shared/assistant/useWorkspaceWriteAccess.js";
93
+ import { extractDocumentText as Xi } from "./shared/assistant/documentExtract.js";
94
+ import { useAssistantAttachments as Zi } from "./shared/assistant/useAssistantAttachments.js";
95
+ import { AssistantComposer as Qi } from "./shared/assistant/ui/composer/AssistantComposer.js";
96
+ import { isProdRuntime as $i } from "./shared/assistant/env.js";
97
+ import { useAssistantHeartbeat as ea } from "./shared/assistant/useAssistantHeartbeat.js";
98
+ import { useAssistantKeyboardShortcuts as ta } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
99
+ import { AssistantApiCallsConsentDialog as na } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
100
+ import { AssistantChatArea as ra } from "./shared/assistant/ui/AssistantChatArea.js";
101
+ import { AIAssistantPanel as ia } from "./shared/assistant/ui/AIAssistantPanel.js";
102
+ export { ia as AIAssistantPanel, L as ASSISTANT_API_AUTH_STRATEGY, sn as ASSISTANT_LANGUAGES, vi as ASSISTANT_MODE_META, Kn as ATTACHMENT_ACCEPT, Hr as ATTACHMENT_SOURCES, Si as AUTO_VOICE, na as AssistantApiCallsConsentDialog, ii as AssistantAttachmentButton, ai as AssistantAttachmentChips, Jr as AssistantAutoSpeakToggle, ra as AssistantChatArea, Qi as AssistantComposer, ri as AssistantConnectSourceItem, ti as AssistantConnectSourceProvider, Li as AssistantConversationList, Ri as AssistantEmptyState, Ii as AssistantHeader, s as AssistantI18nProvider, Zr as AssistantLanguageMenu, gi as AssistantLanguageSelector, f as AssistantMarkdownImage, h as AssistantMarkdownRenderer, Yr as AssistantMessageAttachments, zi as AssistantMessageItem, Bi as AssistantMessageList, yi as AssistantModeSelector, Fi as AssistantMoreMenu, g as AssistantNavigateProvider, Xr as AssistantPendingWriteCard, hi as AssistantPreviewOverlay, oi as AssistantPreviewProvider, t as AssistantProductProvider, Qr as AssistantReplyLanguageSelector, _e as AssistantRuntimeManager, $r as AssistantSpeakButton, Ir as AssistantSpeechProvider, ei as AssistantSpokenTurnsNotice, Pr as AssistantToolActivity, xi as AssistantVoiceButton, wi as AssistantVoiceOrb, Ci as AssistantVoiceSelector, Vi as AssistantVoiceSession, Ti as AssistantVoiceSessionButton, qn as AttachmentRejectedError, En as BOILERPLATE_PAGE_SHARE, Ei as CAPTION_SCROLL_ATTR, O as CHECK_AI_CREDITS, k as CREATE_SANDBOX, zt as DEFAULT_SPEAKABLE_LABELS, cn as DEFAULT_SPEECH_RATE, ft as ENDPOINT_GRACE_MS, A as EXTEND_SANDBOX_TTL, _i as FOLLOW_APP_LOCALE, j as GET_ACTIVE_SANDBOXES, M as GET_SANDBOX, He as HOSTED_TTS_MAX_CHARS, Re as HOSTED_TTS_TIER, ze as HOSTED_VOICES, yn as IDLE_PLAYBACK, ci as IDLE_PREVIEW_STATE, pt as INITIAL_SESSION, Jn as INLINE_IMAGE_MAX_DIM, Yn as INLINE_IMAGE_QUALITY, mt as INTERRUPT_MAX_MS, ht as INTERRUPT_MIN_MS, Xn as MAX_ATTACHMENTS, Dn as MAX_BOILERPLATE_LINE_CHARS, On as MAX_EXTRACTED_CHARS, Zn as MAX_FILE_BYTES, Qn as MAX_INLINE_CHARS_PER_FILE, $n as MAX_INLINE_CHARS_TOTAL, wn as MAX_INLINE_IMAGE_BASE64_BYTES, er as MAX_INLINE_IMAGE_BASE64_CHARS, tr as MAX_INLINE_IMAGE_PARTS, nr as MAX_INLINE_TURN_BODY_BYTES, kn as MAX_PDF_PAGES_SCANNED, Tn as MAX_REQUEST_BODY_BYTES, Bt as MAX_SPEAKABLE_CHARS, Vt as MAX_SPOKEN_TABLE_ROWS, rr as MAX_TURN_BODY_BYTES, Zt as MINI_CAPTION_BUDGET, An as MIN_PAGE_TEXT_CHARS, jn as MIN_TEXT_PAGE_SHARE, ui as NO_PANEL_OVERLAY, Dr as PHRASE_ROTATE_MS, $t as POLL_FAST_MS, en as POLL_FAST_UNTIL_MS, tn as POLL_SLOW_MS, nn as POLL_STEADY_MS, rn as POLL_STEADY_UNTIL_MS, Yt as PREVIEW_LANGUAGES, ir as PROMPT_ENVELOPE_RESERVE_BYTES, N as PROXY_SANDBOX_REQUEST, P as REPORT_AI_TOKEN_USAGE, Gr as SANDBOX_READY_TTL_MS, gt as SILENCE_SUBMIT_MS, Ue as SPEAKING_RATE_MAX, We as SPEAKING_RATE_MAX_STREAMING, Ge as SPEAKING_RATE_MAX_SYNC, Ke as SPEAKING_RATE_MIN, Ht as SPEECH_CHUNK_CHARS, Ut as SPEECH_CHUNK_CJK_CHARS, wt as SPEECH_LANG, hn as SPOKEN_LABEL_LANGUAGES, Or as STAGE_COPY, F as STOP_ASSISTANT_SANDBOX, kr as THINKING_PHRASES, ar as TURN_BODY_HEADROOM_BYTES, Tt as VOICE_LIST_TIMEOUT_MS, Di as VoiceCaption, Oi as VoiceConversationView, Ai as VoiceMiniController, ji as VoiceStage, Mi as VoiceTranscriptDrawer, ki as VoiceWaveform, I as WAIT_FOR_SANDBOX_RUNNING, q as abortAssistantTurn, Ki as aiCreditsUpdatedEventName, J as approvePendingWrite, _ as assistantRoutePath, c as assistantTranslationKey, v as assistantUrlTransform, Ur as availableAttachmentSources, qe as base64ToBytes, y as browserShouldHandle, Le as browserSpeechEngine, Y as buildAssistantSandboxEnv, or as buildAttachmentPromptBlock, It as buildContinuedFromVoiceNote, ve as buildProgress, sr as buildPromptParts, X as buildPromptRequestBody, cr as buildPromptWithAttachments, Je as buildRequest, E as buildSandboxContextInput, Lt as buildVoiceTranscriptMarkdown, Ae as chatTurns, Z as checkAssistantAiCredits, Wt as chunkForSpeech, b as classifyAssistantHref, lr as classifyAttachment, Ye as classifyHttpFailure, S as classifyQuotaError, Mn as columnLetterToIndex, tt as configureSpeechEngine, Gt as containsCjk, d as copyToClipboard, ur as countInlineImageCandidates, dr as countInlinedImageParts, Q as createAssistantSandbox, $ as createAssistantSession, $e as createHostedTtsEngine, Kr as createReadinessTracker, et as createRoutingSpeechEngine, Oe as createSandboxAssistantTransport, nt as createSpeechEngines, Xe as decodeAudioResponse, Nn as decodeXmlEntities, C as describeQuotaError, fr as detectDocumentFormat, _n as detectScriptLocale, Wr as deviceHasCamera, qi as dispatchAssistantQuotaExhausted, Pn as docxXmlToText, ee as downloadAssistantArtifact, Ni as downloadFile, di as escapeDismisses, pr as estimateTurnBodyBytes, D as executeSandboxGraphQL, Pi as exportConversation, te as extendAssistantSandboxTTL, Xi as extractDocumentText, ln as findAssistantLanguage, ne as findExistingSandbox, pn as findPendingWrite, Fn as fitPdfPages, mr as formatBytes, In as formatPageRanges, zr as getActorId, re as getAssistantArtifacts, ye as getAssistantMedia, ie as getAssistantMessages, ae as getAssistantSession, oe as getAssistantStreamAccess, be as getAssistantText, hr as getAttachmentSendBlocker, U as getCapability, gr as getExtension, R as getImageForMode, z as getImageTagForMode, Br as getOrganizationId, xe as getRawMessageCreatedAt, B as getResourcesForMode, V as getSandboxImageRegistry, _r as getSendableAttachments, rt as getSpeechEngine, Se as getToolProgress, Vr as getWorkspaceId, je as groupBySession, Me as groupConsecutiveBySession, vr as hasAttachmentWorkInFlight, Be as hostedLocaleFor, Ve as hostedSupportsLanguage, p as imageHostLabel, _t as isCapturing, vt as isEcho, Ln as isMostlyImagePages, Wi as isMultimodalBodyRejection, $i as isProdRuntime, w as isQuotaExhaustedError, Ce as isReapedSandboxConnectionError, qr as isRecentlyVerified, we as isRecoverable, Gi as isRecoverableAssistantError, m as isRemoteImageSrc, bn as isSpeakingMessage, Et as isSpeechBlocked, Ar as isStageCopy, yt as isSubmittable, wr as isTurnInFlight, W as isUnknownFieldError, Ne as isVoiceTurn, Rn as joinSheets, Dt as languageDisplayName, Te as mapSessionToHistory, G as markSupported, K as markUnsupported, Ee as mergeMessagesById, ot as micIsInterrupt, se as modeRequiresConfirmWrites, bi as nextModeIndex, fi as nextPanelOverlays, li as nextPreviewEvents, Ot as normalizeLangTag, Ji as notifyAiCreditsUpdated, bt as orbMode, zn as pageMarker, mn as parseConfirmationRefusal, yr as parseDataUrl, Bn as parseSharedStrings, Fr as parseToolActivity, Vn as parseWorkbookSheets, Hn as pdfTextItemsToPage, Tr as planAbandonedTurn, xt as planReplyConsumption, Er as planTurnAbort, an as pollDelayMs, kt as primaryLanguageSubtag, xn as publishedChunks, T as quotaExhaustedEventName, it as readSpeechEngineConfig, ce as releaseSupersededAssistantSandboxes, dn as replyFollowsInput, le as reportAssistantAiTokenUsage, Sn as requiresCancel, at as resetSpeechEngine, un as resolveAssistantLanguage, fn as resolveLanguagePair, n as resolveModeConfig, H as resolveSandboxAssistantMode, vn as resolveSpeechLocale, De as sanitize, ue as selectExistingAssistantSandbox, de as selectSupersededAssistantSandboxes, At as selectVoiceForLocale, fe as sendAssistantPromptAsync, pe as sendHeartbeat, Un as sheetXmlToRows, Ze as shouldDisableEngine, Qt as showPreviousChunk, st as showsAssistantCaption, ct as showsUserCaption, Kt as speakableEmail, jt as speechGate, gn as speechLabelsFor, Mt as speechLangForLocale, Cn as speechPlaybackReducer, Qe as splitForVendor, qt as splitTableRow, St as spokenSoFar, jr as stageText, Mr as statusStageCopy, me as stopReapedAssistantSandbox, Wn as summarisePageText, Nr as thinkingPhrase, on as toCaptionText, br as toMessageAttachment, Jt as toSpeakableText, xr as truncateForInline, Gn as truncatePagesForInline, Hi as useAssistantApiAccess, Zi as useAssistantAttachments, ni as useAssistantConnectSource, ea as useAssistantHeartbeat, l as useAssistantI18nNamespace, ta as useAssistantKeyboardShortcuts, x as useAssistantNavigate, r as useAssistantPageLabel, si as useAssistantPreview, mi as useAssistantPreviewBridge, i as useAssistantProduct, a as useAssistantProductOrNull, Lr as useAssistantSpeech, o as useAssistantStorageFolders, Cr as useAssistantStore, u as useAssistantTr, Ui as useConversationTurns, pi as useOverlayFocus, ke as useSandboxAssistantTransport, e as useVoiceInput, Rr as useVoiceSession, Yi as useWorkspaceWriteAccess, Sr as validateFile, Nt as voiceAvailability, Pe as voiceMarker, Xt as voicePreviewText, Pt as voiceQualityRank, Fe as voiceSessionIdOf, Ct as voiceSessionReducer, lt as voiceStageState, Rt as voiceTranscriptFilename, Ie as voiceTurnsOnly, Ft as voicesForLocale, he as waitForAssistantServiceReady, ge as waitForSandboxRunning, ut as waveformIsActive, dt as waveformIsSettled };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.911.1",
3
+ "version": "2026.911.3",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {