@burdenoff/fe-libs 2026.923.2 → 2026.923.4

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.
@@ -36,6 +36,21 @@ export type AIAssistantPanelProps = PanelProps & {
36
36
  * opens in a new tab.
37
37
  */
38
38
  connectSourceHref?: string;
39
+ /**
40
+ * Open this product's OWN connection surface in place, instead of navigating
41
+ * to `connectSourceHref`.
42
+ *
43
+ * ★ Preferred over `connectSourceHref` when both are given. Navigating away
44
+ * tears the user out of the conversation they were having, which is exactly
45
+ * what was reported: "connect-source is opening the page but I need a popup
46
+ * in the centre."
47
+ *
48
+ * ★ The product supplies this, not this library. The connection screen lives
49
+ * in `microfe-integrations` — Layer 2 — and this is Layer 0/1, so it cannot
50
+ * render that surface itself. A host renders it inside a dialog of its own
51
+ * and hands the opener here; nothing below needs to know what it shows.
52
+ */
53
+ onConnectSource?: () => void;
39
54
  /**
40
55
  * An optional product preview surface, shown as an overlay over the chat.
41
56
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAkBrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAGnE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAiOtD,CAAC"}
1
+ {"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAkBrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAGnE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAqOtD,CAAC"}
@@ -18,31 +18,31 @@ import { AssistantChatArea as x } from "./AssistantChatArea.js";
18
18
  import { useRef as S, useState as C } from "react";
19
19
  import { jsx as w, jsxs as T } from "react/jsx-runtime";
20
20
  //#region src/shared/assistant/ui/AIAssistantPanel.tsx
21
- var E = ({ onClose: E, visible: D, docked: O, onToggleDock: k, writeAccess: A, onNavigate: j, connectSourceHref: M, preview: N }) => {
22
- let P = t(), [F, I] = C(!1);
23
- F && !N && I(!1);
24
- let L = F && !!N;
25
- f(p(N, m()));
26
- let R = S(null), { conversations: z, activeConversationId: B, conversationListOpen: V, setConversationListOpen: H, createConversation: U } = r(), W = V || L, G = c({
27
- historyOpen: V,
28
- previewOpen: L
29
- }), K = (e) => {
21
+ var E = ({ onClose: E, visible: D, docked: O, onToggleDock: k, writeAccess: A, onNavigate: j, connectSourceHref: M, onConnectSource: N, preview: P }) => {
22
+ let F = t(), [I, L] = C(!1);
23
+ I && !P && L(!1);
24
+ let R = I && !!P;
25
+ f(p(P, m()));
26
+ let z = S(null), { conversations: B, activeConversationId: V, conversationListOpen: H, setConversationListOpen: U, createConversation: W } = r(), G = H || R, K = c({
27
+ historyOpen: H,
28
+ previewOpen: R
29
+ }), q = (e) => {
30
30
  let t = u({
31
- historyOpen: V,
32
- previewOpen: L
31
+ historyOpen: H,
32
+ previewOpen: R
33
33
  }, e);
34
- H(t.historyOpen), I(t.previewOpen);
35
- }, q = z.find((e) => e.id === B);
36
- y(q?.backendSessionId ?? null, q?.mode ?? null, D ?? !0), v(D ?? !0);
37
- let J = e(D !== !1);
34
+ U(t.historyOpen), L(t.previewOpen);
35
+ }, J = B.find((e) => e.id === V);
36
+ y(J?.backendSessionId ?? null, J?.mode ?? null, D ?? !0), v(D ?? !0);
37
+ let Y = e(D !== !1);
38
38
  return b({
39
- panelRef: R,
39
+ panelRef: z,
40
40
  onClose: () => {
41
41
  if (l({
42
- historyOpen: V,
43
- previewOpen: L
42
+ historyOpen: H,
43
+ previewOpen: R
44
44
  }) === "overlay") {
45
- H(!1), I(!1);
45
+ U(!1), L(!1);
46
46
  return;
47
47
  }
48
48
  E();
@@ -50,41 +50,42 @@ var E = ({ onClose: E, visible: D, docked: O, onToggleDock: k, writeAccess: A, o
50
50
  }), /* @__PURE__ */ w(i, {
51
51
  visible: D ?? !0,
52
52
  children: /* @__PURE__ */ w(d, {
53
- value: N,
53
+ value: P,
54
54
  children: /* @__PURE__ */ w(n, {
55
55
  value: j,
56
56
  children: /* @__PURE__ */ w(a, {
57
57
  value: M,
58
+ onOpen: N,
58
59
  children: /* @__PURE__ */ T("div", {
59
- ref: R,
60
+ ref: z,
60
61
  className: "relative flex h-full w-full flex-col bg-bg-surface",
61
62
  role: "complementary",
62
- "aria-label": P("panel.ariaLabel", "AI Assistant"),
63
+ "aria-label": F("panel.ariaLabel", "AI Assistant"),
63
64
  "data-testid": "ai-assistant-panel",
64
65
  [s]: "",
65
- ...G ? { [o]: G } : {},
66
+ ...K ? { [o]: K } : {},
66
67
  tabIndex: -1,
67
68
  children: [
68
69
  /* @__PURE__ */ w("div", {
69
70
  className: "contents",
70
- inert: W || void 0,
71
+ inert: G || void 0,
71
72
  children: /* @__PURE__ */ w(g, {
72
- contextLabel: J,
73
- onNewConversation: () => U(),
74
- onOpenHistory: () => K("history"),
75
- historyOpen: V,
76
- onTogglePreview: () => K("preview"),
77
- previewOpen: L,
73
+ contextLabel: Y,
74
+ onNewConversation: () => W(),
75
+ onOpenHistory: () => q("history"),
76
+ historyOpen: H,
77
+ onTogglePreview: () => q("preview"),
78
+ previewOpen: R,
78
79
  onClose: E,
79
80
  docked: O,
80
81
  onToggleDock: k
81
82
  })
82
83
  }),
83
- V && /* @__PURE__ */ w(_, {}),
84
- L && /* @__PURE__ */ w(h, { onClose: () => I(!1) }),
84
+ H && /* @__PURE__ */ w(_, {}),
85
+ R && /* @__PURE__ */ w(h, { onClose: () => L(!1) }),
85
86
  /* @__PURE__ */ w("div", {
86
87
  className: "contents",
87
- inert: W || void 0,
88
+ inert: G || void 0,
88
89
  children: /* @__PURE__ */ w(x, {
89
90
  visible: D ?? !0,
90
91
  writeAccess: A
@@ -79,7 +79,8 @@ export interface AssistantOverlayProps {
79
79
  panelId?: string;
80
80
  /**
81
81
  * Extra props for the default `AIAssistantPanel` — `writeAccess`,
82
- * `connectSourceHref`, `preview`. The overlay's own props always win.
82
+ * `connectSourceHref`, `onConnectSource`, `preview`. The overlay's own props
83
+ * always win.
83
84
  *
84
85
  * ★★ `preview` is bridged HERE, by the overlay, not by the panel — so a
85
86
  * product surface outside the panel keeps following a run after the assistant
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantOverlay.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAUL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI1C,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAmBL,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAID,uEAAuE;AACvE,wBAAgB,yBAAyB,IAAI,4BAA4B,GAAG,IAAI,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AA6BD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GACnD,IAAI,CAaN;AAID,MAAM,WAAW,6BAA6B;IAC5C;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KACtD,CAAC;IACF,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,KAAK,EACL,QAAQ,GACT,EAAE,6BAA6B,2CAkE/B;AAED,mDAAmD;AACnD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,0BAA0B,CAAC,CAAC;IAC3E;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,SAAS,CAAC;IAC/D;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAOD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,kDAI5D"}
1
+ {"version":3,"file":"AssistantOverlay.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAUL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI1C,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAmBL,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAID,uEAAuE;AACvE,wBAAgB,yBAAyB,IAAI,4BAA4B,GAAG,IAAI,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AA6BD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GACnD,IAAI,CAaN;AAID,MAAM,WAAW,6BAA6B;IAC5C;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KACtD,CAAC;IACF,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,KAAK,EACL,QAAQ,GACT,EAAE,6BAA6B,2CAkE/B;AAED,mDAAmD;AACnD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,0BAA0B,CAAC,CAAC;IAC3E;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,SAAS,CAAC;IAC/D;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAOD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,kDAI5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantAttachmentButton.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantAttachmentButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAcf,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,wEAAwE;IACxE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AASD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,KAAK,CAwJ/C,CAAC"}
1
+ {"version":3,"file":"AssistantAttachmentButton.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantAttachmentButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAiBf,UAAU,KAAK;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,wEAAwE;IACxE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AASD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,KAAK,CA2L/C,CAAC"}
@@ -1,88 +1,88 @@
1
1
  import { useAssistantTr as e } from "../../i18n.js";
2
2
  import "../../attachments.js";
3
3
  import { availableAttachmentSources as t, deviceHasCamera as n } from "../../attachmentSources.js";
4
- import { useAssistantConnectSource as r } from "./connectSource.js";
5
- import { AssistantConnectSourceItem as i } from "./AssistantConnectSourceItem.js";
6
- import { useDropdownEscape as a } from "../useDropdownEscape.js";
7
- import { useCallback as o, useEffect as s, useMemo as c, useRef as l, useState as u } from "react";
8
- import { Camera as d, FileText as f, FolderOpen as p, ImageIcon as m, Plus as h } from "lucide-react";
9
- import { jsx as g, jsxs as _ } from "react/jsx-runtime";
4
+ import { hasConnectSource as r, useAssistantConnectSource as i } from "./connectSource.js";
5
+ import { AssistantConnectSourceItem as a } from "./AssistantConnectSourceItem.js";
6
+ import { useDropdownEscape as o } from "../useDropdownEscape.js";
7
+ import { useCallback as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
8
+ import { Camera as f, FileText as p, FolderOpen as m, ImageIcon as h, Plus as g } from "lucide-react";
9
+ import { jsx as _, jsxs as v } from "react/jsx-runtime";
10
10
  //#region src/shared/assistant/ui/composer/AssistantAttachmentButton.tsx
11
- var v = {
12
- camera: d,
13
- gallery: m,
14
- documents: f,
15
- files: p
16
- }, y = ({ onFiles: d, onPickerOpen: f, direction: p = "up", canAddMore: m, disabled: y = !1 }) => {
17
- let b = e(), x = l(null), S = l(null), C = l(null), [w, T] = u(!1), E = l(f);
18
- E.current = f;
19
- let D = c(() => t(n()), []), O = r(), k = m || !!O, A = m ? b("composer.attach", "Attach files or photos") : b("composer.attachFull", "Attachment limit reached ({{max}})", { max: 5 });
20
- a(w, S, C, () => T(!1)), s(() => {
21
- if (!w) return;
11
+ var y = {
12
+ camera: f,
13
+ gallery: h,
14
+ documents: p,
15
+ files: m
16
+ }, b = ({ onFiles: f, onPickerOpen: p, direction: m = "up", canAddMore: h, disabled: b = !1 }) => {
17
+ let x = e(), S = u(null), C = u(null), w = u(null), [T, E] = d(!1), D = u(p);
18
+ D.current = p;
19
+ let O = l(() => t(n()), []), k = r(i()), A = h || k, j = h ? k ? `${x("composer.attach", "Attach files or photos")} · ${x("composer.connectSource", "Connect a source")}` : x("composer.attach", "Attach files or photos") : x("composer.attachFull", "Attachment limit reached ({{max}})", { max: 5 });
20
+ o(T, C, w, () => E(!1)), c(() => {
21
+ if (!T) return;
22
22
  let e = (e) => {
23
23
  let t = e.target;
24
- S.current?.contains(t) || C.current?.contains(t) || T(!1);
24
+ C.current?.contains(t) || w.current?.contains(t) || E(!1);
25
25
  };
26
26
  return window.addEventListener("mousedown", e), () => {
27
27
  window.removeEventListener("mousedown", e);
28
28
  };
29
- }, [w]);
30
- let j = o((e) => {
31
- d(e.target.files), e.target.value = "";
32
- }, [d]), M = o((e) => {
33
- let t = x.current;
34
- t && (t.accept = e.accept, t.multiple = e.multiple, e.capture ? t.setAttribute("capture", e.capture) : t.removeAttribute("capture"), T(!1), E.current?.(), t.click());
29
+ }, [T]);
30
+ let M = s((e) => {
31
+ f(e.target.files), e.target.value = "";
32
+ }, [f]), N = s((e) => {
33
+ let t = S.current;
34
+ t && (t.accept = e.accept, t.multiple = e.multiple, e.capture ? t.setAttribute("capture", e.capture) : t.removeAttribute("capture"), E(!1), D.current?.(), t.click());
35
35
  }, []);
36
- return /* @__PURE__ */ _("div", {
36
+ return /* @__PURE__ */ v("div", {
37
37
  className: "relative flex-shrink-0",
38
38
  children: [
39
- /* @__PURE__ */ g("input", {
40
- ref: x,
39
+ /* @__PURE__ */ _("input", {
40
+ ref: S,
41
41
  type: "file",
42
42
  multiple: !0,
43
43
  className: "hidden",
44
- onChange: j,
44
+ onChange: M,
45
45
  tabIndex: -1,
46
46
  "aria-hidden": "true",
47
47
  "data-testid": "assistant-attach-input"
48
48
  }),
49
- /* @__PURE__ */ g("button", {
50
- ref: C,
49
+ /* @__PURE__ */ _("button", {
50
+ ref: w,
51
51
  type: "button",
52
- onClick: () => T((e) => !e),
53
- disabled: y || !k,
54
- title: A,
55
- "aria-label": A,
52
+ onClick: () => E((e) => !e),
53
+ disabled: b || !A,
54
+ title: j,
55
+ "aria-label": j,
56
56
  "aria-haspopup": "menu",
57
- "aria-expanded": w,
57
+ "aria-expanded": T,
58
58
  className: "flex size-9 items-center justify-center rounded-full border border-border-subtle bg-bg-elevated 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 disabled:cursor-not-allowed disabled:text-text-muted disabled:hover:bg-bg-elevated",
59
59
  "data-testid": "assistant-attach",
60
- children: /* @__PURE__ */ g(h, { className: "size-4" })
60
+ children: /* @__PURE__ */ _(g, { className: "size-4" })
61
61
  }),
62
- w ? /* @__PURE__ */ _("div", {
63
- ref: S,
62
+ T ? /* @__PURE__ */ v("div", {
63
+ ref: C,
64
64
  role: "menu",
65
- "aria-label": b("composer.attachSource", "Attach from"),
66
- className: `absolute ${p === "up" ? "bottom-full mb-2" : "top-full mt-2"} left-0 z-30 min-w-44 overflow-hidden rounded-xl border border-border-default bg-bg-elevated py-1 shadow-lg`,
65
+ "aria-label": x("composer.attachSource", "Attach from"),
66
+ className: `absolute ${m === "up" ? "bottom-full mb-2" : "top-full mt-2"} left-0 z-30 min-w-44 overflow-hidden rounded-xl border border-border-default bg-bg-elevated py-1 shadow-lg`,
67
67
  "data-testid": "assistant-attach-menu",
68
- children: [D.map((e) => {
69
- let t = v[e.id];
70
- return /* @__PURE__ */ _("button", {
68
+ children: [O.map((e) => {
69
+ let t = y[e.id];
70
+ return /* @__PURE__ */ v("button", {
71
71
  type: "button",
72
72
  role: "menuitem",
73
- disabled: !m,
74
- onClick: () => M(e),
73
+ disabled: !h,
74
+ onClick: () => N(e),
75
75
  className: "flex w-full items-center gap-2.5 px-3 py-2 text-left text-sm text-text-primary transition-colors hover:bg-bg-sunken focus:outline-none focus-visible:bg-bg-sunken disabled:cursor-not-allowed disabled:text-text-muted disabled:hover:bg-transparent",
76
76
  "data-testid": `assistant-attach-source-${e.id}`,
77
- children: [/* @__PURE__ */ g(t, {
77
+ children: [/* @__PURE__ */ _(t, {
78
78
  className: "size-4 flex-shrink-0 text-text-secondary",
79
79
  "aria-hidden": "true"
80
- }), b(e.labelKey, e.labelFallback)]
80
+ }), x(e.labelKey, e.labelFallback)]
81
81
  }, e.id);
82
- }), /* @__PURE__ */ g(i, { onActivate: () => T(!1) })]
82
+ }), /* @__PURE__ */ _(a, { onActivate: () => E(!1) })]
83
83
  }) : null
84
84
  ]
85
85
  });
86
86
  };
87
87
  //#endregion
88
- export { y as AssistantAttachmentButton };
88
+ export { b as AssistantAttachmentButton };
@@ -1,4 +1,20 @@
1
1
  import { FC } from 'react';
2
+ /**
3
+ * What clicking "Connect a source" does when the product opens its own surface.
4
+ *
5
+ * ★★ EXPORTED SO A TEST CAN EXECUTE IT. Everything in this package renders with
6
+ * `renderToStaticMarkup`, which never fires an event, and there is no jsdom
7
+ * here — so an inline arrow in the JSX is untestable by construction: deleting
8
+ * `open()` from it would leave the markup byte-identical and every test green,
9
+ * silently restoring the exact bug this exists to fix. Extracting it means the
10
+ * behaviour is actually run, and the invariant suite pins that the button still
11
+ * uses this and has not grown a second inline copy.
12
+ *
13
+ * ★ THE MENU CLOSES FIRST. `open()` hands focus to the surface it opens; a menu
14
+ * closing afterwards would restore focus to the trigger and take it straight
15
+ * back off the dialog the user just asked for.
16
+ */
17
+ export declare function connectSourceActivation(open: () => void, onActivate?: () => void): () => void;
2
18
  export interface AssistantConnectSourceItemProps {
3
19
  /** Close the surrounding menu. Fired only when this item actually acts. */
4
20
  onActivate?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantConnectSourceItem.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantConnectSourceItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAe,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;AAuC9D,MAAM,WAAW,+BAA+B;IAC9C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,+BAA+B,CAwD1E,CAAC"}
1
+ {"version":3,"file":"AssistantConnectSourceItem.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/AssistantConnectSourceItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAe,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;AAc9D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,IAAI,EAChB,UAAU,CAAC,EAAE,MAAM,IAAI,GACtB,MAAM,IAAI,CAKZ;AAED,MAAM,WAAW,+BAA+B;IAC9C,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,+BAA+B,CAsF1E,CAAC"}
@@ -1,52 +1,48 @@
1
1
  import { useAssistantTr as e } from "../../i18n.js";
2
2
  import { assistantRoutePath as t, classifyAssistantHref as n, useAssistantNavigate as r } from "../AssistantMarkdownRenderer.js";
3
- import { useAssistantConnectSource as i } from "./connectSource.js";
4
- import { useCallback as a } from "react";
5
- import { Link2 as o } from "lucide-react";
6
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
3
+ import { connectSourceHrefRenders as i, useAssistantConnectSource as a } from "./connectSource.js";
4
+ import { useCallback as o } from "react";
5
+ import { Link2 as s } from "lucide-react";
6
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
7
  //#region src/shared/assistant/ui/composer/AssistantConnectSourceItem.tsx
8
- function l(e, t) {
9
- let n = (e ?? "").trim();
10
- if (!n) return !1;
11
- let r = t;
12
- if (!r) try {
13
- r = typeof window > "u" ? void 0 : window.location.origin;
14
- } catch {
15
- r = void 0;
16
- }
17
- if (!r) return !1;
18
- try {
19
- let { protocol: e } = new URL(n, r);
20
- return e === "https:" || e === "http:";
21
- } catch {
22
- return !1;
23
- }
8
+ function u(e, t) {
9
+ return () => {
10
+ t?.(), e();
11
+ };
24
12
  }
25
- var u = ({ onActivate: u }) => {
26
- let d = e(), f = i(), p = r(), m = n(f), h = m === "internal" ? t(f) : null, g = m === "external" && l(f), _ = a((e) => {
27
- e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || (u?.(), !(!p || !h) && (e.preventDefault(), p(h)));
13
+ var d = ({ onActivate: d }) => {
14
+ let f = e(), { href: p, open: m } = a(), h = r(), g = n(p), _ = g === "internal" ? t(p) : null, v = o((e) => {
15
+ e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || (d?.(), !(!h || !_) && (e.preventDefault(), h(_)));
28
16
  }, [
29
- p,
30
17
  h,
31
- u
32
- ]);
33
- if (!f || m === "blocked" || !h && !g) return null;
34
- let v = d("composer.connectSource", "Connect a source");
35
- return /* @__PURE__ */ c("a", {
36
- href: f,
18
+ _,
19
+ d
20
+ ]), y = f("composer.connectSource", "Connect a source");
21
+ return m ? /* @__PURE__ */ l("button", {
22
+ type: "button",
37
23
  role: "menuitem",
38
- onClick: _,
39
- ...g ? {
24
+ onClick: u(m, d),
25
+ className: "flex w-full items-center gap-2.5 border-t border-border-subtle px-3 py-2 text-left text-sm text-text-primary transition-colors hover:bg-bg-sunken focus:outline-none focus-visible:bg-bg-sunken",
26
+ "data-testid": "assistant-connect-source",
27
+ children: [/* @__PURE__ */ c(s, {
28
+ className: "size-4 flex-shrink-0 text-text-secondary",
29
+ "aria-hidden": "true"
30
+ }), y]
31
+ }) : i(p) ? /* @__PURE__ */ l("a", {
32
+ href: p,
33
+ role: "menuitem",
34
+ onClick: v,
35
+ ...g === "external" ? {
40
36
  target: "_blank",
41
37
  rel: "noopener noreferrer"
42
38
  } : {},
43
39
  className: "flex w-full items-center gap-2.5 border-t border-border-subtle px-3 py-2 text-left text-sm text-text-primary transition-colors hover:bg-bg-sunken focus:outline-none focus-visible:bg-bg-sunken",
44
40
  "data-testid": "assistant-connect-source",
45
- children: [/* @__PURE__ */ s(o, {
41
+ children: [/* @__PURE__ */ c(s, {
46
42
  className: "size-4 flex-shrink-0 text-text-secondary",
47
43
  "aria-hidden": "true"
48
- }), v]
49
- });
44
+ }), y]
45
+ }) : null;
50
46
  };
51
47
  //#endregion
52
- export { u as AssistantConnectSourceItem };
48
+ export { d as AssistantConnectSourceItem, u as connectSourceActivation };
@@ -1,8 +1,55 @@
1
1
  import { FC, ReactNode } from 'react';
2
+ /** How a product offers "connect a source". Both fields absent = the off-switch. */
3
+ export interface AssistantConnectSource {
4
+ /** Route to send the user to. Used only when `open` is absent. */
5
+ href: string | null;
6
+ /**
7
+ * Open the product's OWN connection surface in place, over the current page.
8
+ *
9
+ * ★ Preferred over `href` when both are supplied. Navigating away tears the
10
+ * user out of the conversation they were having — which is the whole reason
11
+ * this was asked for: "connect-source is opening the page but I need a popup
12
+ * in the centre".
13
+ *
14
+ * ★ The product supplies this, not fe-libs, because the connection surface
15
+ * lives in `microfe-integrations` — Layer 2 — and this library is Layer 0/1.
16
+ * A host app can render the already-exported `IntegrationsRoot` inside its own
17
+ * dialog; nothing here needs to know what it renders. That also keeps the
18
+ * feedback's rule intact: reuse the existing connection screen, do not build a
19
+ * second connection-management implementation.
20
+ */
21
+ open: (() => void) | null;
22
+ }
2
23
  export declare const AssistantConnectSourceProvider: FC<{
3
24
  value?: string;
25
+ onOpen?: () => void;
4
26
  children: ReactNode;
5
27
  }>;
6
- /** The product's connections href, or null when the product supplied none. */
7
- export declare function useAssistantConnectSource(): string | null;
28
+ /**
29
+ * What the product offers, if anything.
30
+ *
31
+ * ★ Returns a stable EMPTY when nothing is configured, so callers can read
32
+ * `.href`/`.open` without null-checking the container first.
33
+ */
34
+ export declare function useAssistantConnectSource(): AssistantConnectSource;
35
+ /**
36
+ * Would this href actually RENDER as the menu item?
37
+ *
38
+ * ★★ ONE PREDICATE, TWO CALLERS — and the bug it exists to prevent. The trigger
39
+ * decides whether to promise "connect a source" in its label and whether to stay
40
+ * openable at the attachment limit; the item decides whether to render at all.
41
+ * When those were two separate tests, `Boolean(href)` said yes for a `mailto:`,
42
+ * a `tel:`, a bare `#fragment` or a whitespace string, while the item's own
43
+ * guard said no — so the trigger advertised, to sighted and screen-reader users
44
+ * alike, an entry the opened menu did not contain. Deriving both from this
45
+ * function makes that disagreement unrepresentable.
46
+ */
47
+ export declare function connectSourceHrefRenders(href: string | null | undefined, baseOrigin?: string): href is string;
48
+ /**
49
+ * True when there is any way at all to connect a source.
50
+ *
51
+ * ★ A handler needs no URL, so it short-circuits. A href has to survive the
52
+ * same test the item applies before it counts as a capability.
53
+ */
54
+ export declare function hasConnectSource(source: AssistantConnectSource): boolean;
8
55
  //# sourceMappingURL=connectSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connectSource.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/connectSource.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAA6B,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3E,eAAO,MAAM,8BAA8B,EAAE,EAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;CACrB,CAIA,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAEzD"}
1
+ {"version":3,"file":"connectSource.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/composer/connectSource.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAIL,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB;;;;;;;;;;;;;;OAcG;IACH,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3B;AAOD,eAAO,MAAM,8BAA8B,EAAE,EAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAYA,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,sBAAsB,CAElE;AA8BD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,IAAI,MAAM,CAMhB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAExE"}
@@ -1,12 +1,47 @@
1
- import { createContext as e, useContext as t } from "react";
2
- import { jsx as n } from "react/jsx-runtime";
1
+ import { assistantRoutePath as e, classifyAssistantHref as t } from "../AssistantMarkdownRenderer.js";
2
+ import { createContext as n, useContext as r, useMemo as i } from "react";
3
+ import { jsx as a } from "react/jsx-runtime";
3
4
  //#region src/shared/assistant/ui/composer/connectSource.tsx
4
- var r = e(null), i = ({ value: e, children: t }) => /* @__PURE__ */ n(r.Provider, {
5
- value: e ?? null,
6
- children: t
7
- });
8
- function a() {
9
- return t(r);
5
+ var o = n({
6
+ href: null,
7
+ open: null
8
+ }), s = ({ value: e, onOpen: t, children: n }) => {
9
+ let r = i(() => ({
10
+ href: e ?? null,
11
+ open: t ?? null
12
+ }), [e, t]);
13
+ return /* @__PURE__ */ a(o.Provider, {
14
+ value: r,
15
+ children: n
16
+ });
17
+ };
18
+ function c() {
19
+ return r(o);
20
+ }
21
+ function l(e, t) {
22
+ let n = (e ?? "").trim();
23
+ if (!n) return !1;
24
+ let r = t;
25
+ if (!r) try {
26
+ r = typeof window > "u" ? void 0 : window.location.origin;
27
+ } catch {
28
+ r = void 0;
29
+ }
30
+ if (!r) return !1;
31
+ try {
32
+ let { protocol: e } = new URL(n, r);
33
+ return e === "https:" || e === "http:";
34
+ } catch {
35
+ return !1;
36
+ }
37
+ }
38
+ function u(n, r) {
39
+ if (!n) return !1;
40
+ let i = t(n, r);
41
+ return i === "internal" ? e(n, r) !== null : i === "external" && l(n, r);
42
+ }
43
+ function d(e) {
44
+ return !!e.open || u(e.href);
10
45
  }
11
46
  //#endregion
12
- export { i as AssistantConnectSourceProvider, a as useAssistantConnectSource };
47
+ export { s as AssistantConnectSourceProvider, u as connectSourceHrefRenders, d as hasConnectSource, c as useAssistantConnectSource };
@@ -1 +1 @@
1
- {"version":3,"file":"RybbitSink.d.ts","sourceRoot":"","sources":["../../../../src/shared/events/sinks/RybbitSink.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,EAiCxD,CAAC;AAqDF,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,yFAAyF;IACzF,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAWD,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,IAAI,sBAAsB,GAAG,IAAI,CAI1E;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ1D;AA2BD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAM1F;AA6BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAiD,EACjD,MAAqB,EACrB,SAAoC,EACpC,UAA6B,GAC9B,EAAE,eAAe,QAqEjB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,WAA4B,EAAE,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,kDA6ChG"}
1
+ {"version":3,"file":"RybbitSink.d.ts","sourceRoot":"","sources":["../../../../src/shared/events/sinks/RybbitSink.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,EAiCxD,CAAC;AAqDF,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,yFAAyF;IACzF,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAWD,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,IAAI,sBAAsB,GAAG,IAAI,CAI1E;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ1D;AA2BD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAM1F;AA6BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAiD,EACjD,MAAqB,EACrB,SAAoC,EACpC,UAA6B,GAC9B,EAAE,eAAe,QAqEjB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,WAA4B,EAAE,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,kDA4DhG"}
@@ -151,7 +151,6 @@ function D({ productName: e = "this product" }) {
151
151
  let [t, n] = r(() => _() === null);
152
152
  return !t || g() ? null : /* @__PURE__ */ a("aside", {
153
153
  className: "fixed bottom-4 left-4 z-[100] w-[calc(100%-2rem)] max-w-sm rounded-xl border border-border-seam bg-bg-surface p-4 text-text-primary shadow-pop",
154
- role: "dialog",
155
154
  "aria-label": "Privacy choices",
156
155
  "data-testid": "analytics-consent-banner",
157
156
  children: [/* @__PURE__ */ a("p", {
@@ -71,61 +71,61 @@ import { AssistantLanguageMenu as Aa } from "./shared/assistant/ui/AssistantLang
71
71
  import { AssistantReplyLanguageSelector as ja } from "./shared/assistant/ui/AssistantReplyLanguageSelector.js";
72
72
  import { AssistantSpeakButton as Ma } from "./shared/assistant/ui/AssistantSpeakButton.js";
73
73
  import { AssistantSpokenTurnsNotice as Na } from "./shared/assistant/ui/AssistantSpokenTurnsNotice.js";
74
- import { AssistantConnectSourceProvider as Pa, useAssistantConnectSource as Fa } from "./shared/assistant/ui/composer/connectSource.js";
75
- import { AssistantConnectSourceItem as Ia } from "./shared/assistant/ui/composer/AssistantConnectSourceItem.js";
76
- import { ASSISTANT_OVERLAY_ATTR as La, ASSISTANT_PANEL_ATTR as Ra, NO_PANEL_OVERLAY as za, activePanelOverlay as Ba, assistantPanelOwnsEscape as Va, escapeDismisses as Ha, focusIsInsidePanel as Ua, nextPanelOverlays as Wa, panelOwnsEscape as Ga } from "./shared/assistant/ui/panelOverlays.js";
77
- import { useDropdownEscape as Ka } from "./shared/assistant/ui/useDropdownEscape.js";
78
- import { AssistantAttachmentButton as qa } from "./shared/assistant/ui/composer/AssistantAttachmentButton.js";
79
- import { AssistantAttachmentChips as Ja } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
80
- import { AssistantPreviewProvider as Ya, useAssistantPreview as Xa } from "./shared/assistant/preview/context.js";
81
- import { IDLE_PREVIEW_STATE as Za, isBlankProse as Qa, isRunningStatus as $a, nextPreviewEvents as eo } from "./shared/assistant/preview/previewTransitions.js";
82
- import { IDLE_PREVIEW as to, NO_OWNER as no, applyPreviewEvent as ro, createAssistantPreviewSurface as io, currentPreviewOwner as ao, runBelongsTo as oo, sameOwner as so } from "./shared/assistant/preview/surfaceState.js";
83
- import { createRunIdentityCache as co, runIdentities as lo } from "./shared/assistant/preview/runIdentity.js";
84
- import { IDLE_ACTIVE_TAB as uo, nextActiveTab as fo, pinActiveTab as po, shouldPinOnMove as mo, shouldPinOnSelect as ho, stepsFromToolActivity as go, tabForArrowKey as _o } from "./shared/assistant/preview/entity/entityPreviewState.js";
85
- import { AssistantStepRail as vo } from "./shared/assistant/preview/entity/AssistantStepRail.js";
86
- import { AssistantEntityPreview as yo } from "./shared/assistant/preview/entity/AssistantEntityPreview.js";
87
- import { useOverlayFocus as bo } from "./shared/assistant/ui/useOverlayFocus.js";
88
- import { REDUCED_MOTION_ATTRIBUTE as xo, REDUCED_MOTION_QUERY as So, readReducedMotion as Co, subscribeReducedMotion as wo, usePrefersReducedMotion as To } from "./shared/assistant/ui/usePrefersReducedMotion.js";
89
- import { useAssistantPreviewBridge as Eo } from "./shared/assistant/preview/useAssistantPreviewBridge.js";
90
- import { HostedPreviewBridgeContext as Do, panelOwnedPreviewBridge as Oo, useHostedAssistantPreviewBridge as ko } from "./shared/assistant/preview/bridgeHostContext.js";
91
- import { AssistantPreviewBridgeHost as Ao } from "./shared/assistant/preview/bridgeHost.js";
92
- import { AssistantPreviewOverlay as jo } from "./shared/assistant/preview/AssistantPreviewOverlay.js";
93
- import { AssistantLanguageSelector as Mo, FOLLOW_APP_LOCALE as No } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
94
- import { ASSISTANT_MODE_META as Po, AssistantModeSelector as Fo, assistantModeMeta as Io, nextModeIndex as Lo } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
95
- import { AssistantVoiceButton as Ro } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
96
- import { AUTO_VOICE as zo, AssistantVoiceSelector as Bo } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
97
- import { AssistantVoiceOrb as Vo } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
98
- import { AssistantVoiceSessionButton as Ho } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
99
- import { CAPTION_SCROLL_ATTR as Uo, VoiceCaption as Wo } from "./shared/assistant/ui/voice/VoiceCaption.js";
100
- import { VoiceConversationView as Go } from "./shared/assistant/ui/voice/VoiceConversationView.js";
101
- import { VoiceWaveform as Ko } from "./shared/assistant/ui/voice/VoiceWaveform.js";
102
- import { VoiceStatusLine as qo, VoiceStatusText as Jo } from "./shared/assistant/ui/voice/VoiceStatusText.js";
103
- import { VoiceMiniController as Yo } from "./shared/assistant/ui/voice/VoiceMiniController.js";
104
- import { VoiceStage as Xo } from "./shared/assistant/ui/voice/VoiceStage.js";
105
- import { VoiceTranscriptDrawer as Zo } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
106
- import { downloadFile as Qo, exportConversation as $o } from "./shared/assistant/exportConversation.js";
107
- import { AssistantMoreMenu as es } from "./shared/assistant/ui/AssistantMoreMenu.js";
108
- import { AssistantHeader as ts } from "./shared/assistant/ui/AssistantHeader.js";
109
- import { AssistantConversationList as ns } from "./shared/assistant/ui/AssistantConversationList.js";
110
- import { AssistantEmptyState as rs } from "./shared/assistant/ui/AssistantEmptyState.js";
111
- import { AssistantTurnActivity as is, TurnActivityLine as as } from "./shared/assistant/ui/AssistantTurnActivity.js";
112
- import { AssistantMessageItem as os } from "./shared/assistant/ui/AssistantMessageItem.js";
113
- import { AssistantMessageList as ss } from "./shared/assistant/ui/AssistantMessageList.js";
114
- import { AssistantVoiceSession as cs } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
115
- import { useAssistantApiAccess as ls } from "./shared/assistant/useAssistantApiAccess.js";
116
- import { useConversationTurns as us } from "./shared/assistant/useConversationTurns.js";
117
- import { isMultimodalBodyRejection as ds, isRecoverableAssistantError as fs } from "./shared/assistant/transportErrors.js";
118
- import { aiCreditsUpdatedEventName as ps, dispatchAssistantQuotaExhausted as ms, notifyAiCreditsUpdated as hs } from "./shared/assistant/aiCredits.js";
119
- import { useWorkspaceWriteAccess as gs } from "./shared/assistant/useWorkspaceWriteAccess.js";
120
- import { extractDocumentText as _s } from "./shared/assistant/documentExtract.js";
121
- import { useAssistantAttachments as vs } from "./shared/assistant/useAssistantAttachments.js";
122
- import { AssistantComposer as ys } from "./shared/assistant/ui/composer/AssistantComposer.js";
123
- import { isProdRuntime as bs } from "./shared/assistant/env.js";
124
- import { useAssistantHeartbeat as xs } from "./shared/assistant/useAssistantHeartbeat.js";
125
- import { useAssistantKeyboardShortcuts as Ss } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
126
- import { AssistantApiCallsConsentDialog as Cs } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
127
- import { AssistantChatArea as ws } from "./shared/assistant/ui/AssistantChatArea.js";
128
- import { AIAssistantPanel as Ts } from "./shared/assistant/ui/AIAssistantPanel.js";
129
- import { ASSISTANT_BOTTOM_CHROME_CLEARANCE as Es, ASSISTANT_DIALOG_SELECTOR as Ds, ASSISTANT_DOCKED_DESKTOP_CLASS as Os, ASSISTANT_DOCK_WIDTH_PX as ks, ASSISTANT_DOCK_WIDTH_VAR as As, ASSISTANT_FLOATING_DESKTOP_CLASS as js, ASSISTANT_OVERLAY_DEFAULT_TOP_PX as Ms, ASSISTANT_OVERLAY_DESKTOP_QUERY as Ns, ASSISTANT_OVERLAY_TOP_VAR as Ps, ASSISTANT_SHEET_BASE_CLASS as Fs, ASSISTANT_SHEET_COMPACT_CLASS as Is, ASSISTANT_SHEET_EXPANDED_CLASS as Ls, ASSISTANT_TOGGLE_SHORTCUT_LABEL as Rs, aboveAssistantBottomChrome as zs, assistantOverlayClassName as Bs, assistantOverlayEscapeAction as Vs, assistantOverlayKeys as Hs, assistantQuotaKindOf as Us, createAssistantNavigate as Ws, isAssistantToggleShortcut as Gs, nextAssistantOpenState as Ks, publishedAssistantDockWidth as qs, readAssistantOverlayFlag as Js, requestedAssistantOpenState as Ys, writeAssistantOverlayFlag as Xs } from "./shared/assistant/ui/assistantOverlayState.js";
130
- import { AssistantOverlay as Zs, AssistantOverlayProvider as Qs, useAssistantDockWidth as $s, useAssistantOverlayOrNull as ec, useAssistantQuotaExhausted as tc } from "./shared/assistant/ui/AssistantOverlay.js";
131
- export { Oi as ADMIN_MODE_ACCESS_WAIT_MS, Ts as AIAssistantPanel, Y as ASSISTANT_API_AUTH_STRATEGY, Es as ASSISTANT_BOTTOM_CHROME_CLEARANCE, Ds as ASSISTANT_DIALOG_SELECTOR, Os as ASSISTANT_DOCKED_DESKTOP_CLASS, ks as ASSISTANT_DOCK_WIDTH_PX, As as ASSISTANT_DOCK_WIDTH_VAR, js as ASSISTANT_FLOATING_DESKTOP_CLASS, Ci as ASSISTANT_I18N_COMPUTED_COPY, wi as ASSISTANT_I18N_LITERAL_COPY, Ti as ASSISTANT_I18N_MANIFEST, lr as ASSISTANT_LANGUAGES, z as ASSISTANT_MODE_FALLBACK_LABELS, B as ASSISTANT_MODE_IDS, Po as ASSISTANT_MODE_META, La as ASSISTANT_OVERLAY_ATTR, Ms as ASSISTANT_OVERLAY_DEFAULT_TOP_PX, Ns as ASSISTANT_OVERLAY_DESKTOP_QUERY, Ps as ASSISTANT_OVERLAY_TOP_VAR, Ra as ASSISTANT_PANEL_ATTR, Fs as ASSISTANT_SHEET_BASE_CLASS, Is as ASSISTANT_SHEET_COMPACT_CLASS, Ls as ASSISTANT_SHEET_EXPANDED_CLASS, Rs as ASSISTANT_TOGGLE_SHORTCUT_LABEL, Lr as ATTACHMENT_ACCEPT, bi as ATTACHMENT_SOURCES, zo as AUTO_VOICE, Cs as AssistantApiCallsConsentDialog, qa as AssistantAttachmentButton, Ja as AssistantAttachmentChips, Da as AssistantAutoSpeakToggle, _a as AssistantAvatar, ws as AssistantChatArea, ys as AssistantComposer, Ia as AssistantConnectSourceItem, Pa as AssistantConnectSourceProvider, ns as AssistantConversationList, rs as AssistantEmptyState, yo as AssistantEntityPreview, ts as AssistantHeader, l as AssistantI18nProvider, Aa as AssistantLanguageMenu, Mo as AssistantLanguageSelector, m as AssistantMarkdownImage, _ as AssistantMarkdownRenderer, Oa as AssistantMessageAttachments, os as AssistantMessageItem, ss as AssistantMessageList, Fo as AssistantModeSelector, es as AssistantMoreMenu, v as AssistantNavigateProvider, Zs as AssistantOverlay, Qs as AssistantOverlayProvider, ka as AssistantPendingWriteCard, Ao as AssistantPreviewBridgeHost, jo as AssistantPreviewOverlay, Ya as AssistantPreviewProvider, r as AssistantProductProvider, ja as AssistantReplyLanguageSelector, Ie as AssistantRuntimeManager, Ma as AssistantSpeakButton, va as AssistantSpeechProvider, Na as AssistantSpokenTurnsNotice, vo as AssistantStepRail, pa as AssistantToolActivity, is as AssistantTurnActivity, Ro as AssistantVoiceButton, Vo as AssistantVoiceOrb, Bo as AssistantVoiceSelector, cs as AssistantVoiceSession, Ho as AssistantVoiceSessionButton, Rr as AttachmentRejectedError, _r as BOILERPLATE_PAGE_SHARE, Ye as BUILT_IN_MODE_CAPABILITIES, Uo as CAPTION_SCROLL_ATTR, A as CHECK_AI_CREDITS, j as CREATE_SANDBOX, zr as DEFAULT_INLINE_LIMITS, Hn as DEFAULT_SPEAKABLE_LABELS, ur as DEFAULT_SPEECH_RATE, rt as DEFAULT_STREAM_BUDGET_MS, Dn as ENDPOINT_GRACE_MS, M as EXTEND_SANDBOX_TTL, No as FOLLOW_APP_LOCALE, N as GET_ACTIVE_SANDBOXES, P as GET_SANDBOX, xt as HOSTED_DISABLE_MS, St as HOSTED_TTS_MAX_CHARS, _t as HOSTED_TTS_TIER, vt as HOSTED_VOICES, It as HOSTED_VOICE_RANK, Do as HostedPreviewBridgeContext, uo as IDLE_ACTIVE_TAB, Gi as IDLE_PLAYBACK, to as IDLE_PREVIEW, Za as IDLE_PREVIEW_STATE, Sn as IDLE_ROTATION_CLOCK, it as INCOMPLETE_TURN_NOTICES, On as INITIAL_SESSION, Br as INLINE_IMAGE_MAX_DIM, Vr as INLINE_IMAGE_QUALITY, kn as INTERRUPT_MAX_MS, An as INTERRUPT_MIN_MS, Pi as LEGACY_WRITE_CONSENT_KEY, Xe as MAX_ASSISTANT_STREAM_BUDGET_MS, Hr as MAX_ATTACHMENTS, vr as MAX_BOILERPLATE_LINE_CHARS, Ur as MAX_CONFIGURABLE_INLINE_CHARS, yr as MAX_EXTRACTED_CHARS, Wr as MAX_FILE_BYTES, Gr as MAX_INLINE_CHARS_PER_FILE, Kr as MAX_INLINE_CHARS_TOTAL, oe as MAX_INLINE_IMAGE_BASE64_BYTES, qr as MAX_INLINE_IMAGE_BASE64_CHARS, Jr as MAX_INLINE_IMAGE_PARTS, Yr as MAX_INLINE_TURN_BODY_BYTES, br as MAX_PDF_PAGES_SCANNED, se as MAX_REQUEST_BODY_BYTES, Un as MAX_SPEAKABLE_CHARS, Wn as MAX_SPOKEN_TABLE_ROWS, Xr as MAX_TURN_BODY_BYTES, er as MINI_CAPTION_BUDGET, xr as MIN_PAGE_TEXT_CHARS, Sr as MIN_TEXT_PAGE_SHARE, no as NO_OWNER, za as NO_PANEL_OVERLAY, un as PHRASE_ROTATE_MS, nr as POLL_FAST_MS, rr as POLL_FAST_UNTIL_MS, ir as POLL_SLOW_MS, ar as POLL_STEADY_MS, or as POLL_STEADY_UNTIL_MS, Qn as PREVIEW_LANGUAGES, U as PRODUCT_ASSISTANT_MODE_ID_MAX_LENGTH, W as PRODUCT_ASSISTANT_MODE_ID_PATTERN, Zr as PROMPT_ENVELOPE_RESERVE_BYTES, Qr as PROVIDER_READABLE_FILE_MEDIA_TYPES, F as PROXY_SANDBOX_REQUEST, xo as REDUCED_MOTION_ATTRIBUTE, So as REDUCED_MOTION_QUERY, I as REPORT_AI_TOKEN_USAGE, ce as REQUEST_TOO_LARGE_REFUSAL, wa as SANDBOX_READY_TTL_MS, jn as SILENCE_SUBMIT_MS, Ct as SPEAKING_RATE_MAX, wt as SPEAKING_RATE_MAX_STREAMING, Tt as SPEAKING_RATE_MAX_SYNC, Et as SPEAKING_RATE_MIN, Gn as SPEECH_CHUNK_CHARS, Kn as SPEECH_CHUNK_CJK_CHARS, Lt as SPEECH_LANG, Vi as SPOKEN_LABEL_LANGUAGES, dn as STAGE_COPY, e as START_RETRY_COOLDOWN_MS, L as STOP_ASSISTANT_SANDBOX, at as STREAM_BUDGET_MS, Fi as TAKE_ACTION_ENGLISH, fn as THINKING_PHRASES, $r as TURN_BODY_HEADROOM_BYTES, as as TurnActivityLine, Ze as UNAVAILABLE_MODE_REFUSAL, Qe as UNDECLARED_MODE_CAPABILITIES, Rt as VOICE_LIST_TIMEOUT_MS, _n as VOICE_MUTED_LABEL, vn as VOICE_THINKING_LABEL, Wo as VoiceCaption, Go as VoiceConversationView, Yo as VoiceMiniController, Xo as VoiceStage, qo as VoiceStatusLine, Jo as VoiceStatusText, Zo as VoiceTranscriptDrawer, Ko as VoiceWaveform, R as WAIT_FOR_SANDBOX_RUNNING, le as abortAssistantTurn, zs as aboveAssistantBottomChrome, Ba as activePanelOverlay, $e as adminOnlyModeSendRefusal, ki as adminOnlyModeSendRefusalAfterAccess, Cn as advanceRotationClock, ps as aiCreditsUpdatedEventName, ro as applyPreviewEvent, ue as approvePendingWrite, Ei as assistantI18nSeedCopy, V as assistantModeFallbackLabel, Di as assistantModeI18nCopy, Io as assistantModeMeta, Bs as assistantOverlayClassName, Vs as assistantOverlayEscapeAction, Hs as assistantOverlayKeys, Va as assistantPanelOwnsEscape, Us as assistantQuotaKindOf, y as assistantRoutePath, u as assistantTranslationKey, b as assistantUrlTransform, xi as availableAttachmentSources, Dt as base64ToBytes, x as browserShouldHandle, gt as browserSpeechEngine, fa as buildAssistantProgress, de as buildAssistantSandboxEnv, ei as buildAttachmentPromptBlock, Ni as buildBoundedAttachmentTurn, zn as buildContinuedFromVoiceNote, Le as buildProgress, fe as buildPromptGatewayRequest, ti as buildPromptParts, pe as buildPromptRequestBody, ni as buildPromptWithAttachments, Ot as buildRequest, O as buildSandboxContextInput, Bn as buildVoiceTranscriptMarkdown, G as builtInModeExtendedBy, lt as chatTurns, me as checkAssistantAiCredits, qn as chunkForSpeech, S as classifyAssistantHref, ri as classifyAttachment, kt as classifyHttpFailure, w as classifyQuotaError, Cr as columnLetterToIndex, yn as composeVoiceStatus, Zt as configureSpeechEngine, Jn as containsCjk, p as copyToClipboard, ii as countInlineImageCandidates, ai as countInlinedImageParts, ha as countSpokenTurns, Ai as createAdminModeAccessGate, Ws as createAssistantNavigate, io as createAssistantPreviewSurface, he as createAssistantSandbox, ge as createAssistantSession, Pt as createHostedTtsEngine, Ta as createReadinessTracker, Xt as createRoutingSpeechEngine, co as createRunIdentityCache, qe as createSandboxAssistantTransport, Qt as createSpeechEngines, ao as currentPreviewOwner, K as declareAssistantMode, At as decodeAudioResponse, wr as decodeXmlEntities, T as describeQuotaError, oi as detectDocumentFormat, Ui as detectScriptLocale, Si as deviceHasCamera, jt as disableDurationMs, ms as dispatchAssistantQuotaExhausted, Tr as docxXmlToText, _e as downloadAssistantArtifact, Qo as downloadFile, sa as elapsedSince, Ha as escapeDismisses, si as estimateTurnBodyBytes, k as executeSandboxGraphQL, $o as exportConversation, ve as extendAssistantSandboxTTL, _s as extractDocumentText, dr as findAssistantLanguage, et as findAssistantModeConfig, ye as findExistingSandbox, hr as findPendingWrite, Er as fitPdfPages, Ua as focusIsInsidePanel, ci as formatBytes, Dr as formatPageRanges, be as forwardsUserTokensToSandbox, xa as getActorId, xe as getAssistantArtifacts, oa as getAssistantDisplayContent, Re as getAssistantMedia, Se as getAssistantMessages, Ce as getAssistantSession, we as getAssistantStreamAccess, ze as getAssistantText, li as getAttachmentSendBlocker, ne as getCapability, ui as getExtension, X as getImageForMode, Z as getImageTagForMode, Sa as getOrganizationId, Be as getRawMessageCreatedAt, Q as getResourcesForMode, $ as getSandboxImageRegistry, di as getSendableAttachments, $t as getSpeechEngine, Ve as getToolProgress, Ca as getWorkspaceId, ut as groupBySession, dt as groupConsecutiveBySession, fi as hasAttachmentWorkInFlight, yt as hostedLocaleFor, bt as hostedSupportsLanguage, h as imageHostLabel, ot as incompleteTurnNotice, q as isAssistantModeId, Gs as isAssistantToggleShortcut, Qa as isBlankProse, H as isBuiltInAssistantMode, Mn as isCapturing, Nn as isEcho, zt as isHostedVoice, na as isLegacyFiller, ra as isLegacyStopped, Or as isMostlyImagePages, ds as isMultimodalBodyRejection, bs as isProdRuntime, J as isProductAssistantModeId, pi as isProviderReadableFilePart, E as isQuotaExhaustedError, He as isReapedSandboxConnectionError, Ea as isRecentlyVerified, Ue as isRecoverable, fs as isRecoverableAssistantError, g as isRemoteImageSrc, $a as isRunningStatus, Ki as isSpeakingMessage, Bt as isSpeechBlocked, ia as isStageCopy, Pn as isSubmittable, $i as isTurnInFlight, re as isUnknownFieldError, ft as isVoiceTurn, Ii as isWriteModeAcknowledged, kr as joinSheets, Vt as languageDisplayName, mi as largestInlineCharsPerFile, We as mapSessionToHistory, ie as markSupported, ae as markUnsupported, Ge as mergeMessagesById, Xi as mergePersistedAssistantState, rn as micIsInterrupt, Te as modeRequiresConfirmWrites, ca as msUntilNextPhrase, fo as nextActiveTab, Ks as nextAssistantOpenState, Lo as nextModeIndex, Wa as nextPanelOverlays, eo as nextPreviewEvents, Ht as normalizeLangTag, hs as notifyAiCreditsUpdated, Fn as orbMode, Ar as pageMarker, Oo as panelOwnedPreviewBridge, Ga as panelOwnsEscape, gr as parseConfirmationRefusal, hi as parseDataUrl, jr as parseSharedStrings, ma as parseToolActivity, Mr as parseWorkbookSheets, Nr as pdfTextItemsToPage, po as pinActiveTab, ea as planAbandonedTurn, In as planReplyConsumption, ta as planTurnAbort, sr as pollDelayMs, Ut as primaryLanguageSubtag, Ee as promptGatewayRequestBytes, qs as publishedAssistantDockWidth, qi as publishedChunks, D as quotaExhaustedEventName, Js as readAssistantOverlayFlag, Co as readReducedMotion, en as readSpeechEngineConfig, De as releaseSupersededAssistantSandboxes, pr as replyFollowsInput, Oe as reportAssistantAiTokenUsage, Ys as requestedAssistantOpenState, Ji as requiresCancel, tn as resetSpeechEngine, Zi as resolveActiveModeSandbox, gi as resolveAssistantInlineLimits, fr as resolveAssistantLanguage, tt as resolveAssistantModeCapabilities, ji as resolveAssistantSendModeAfterAccess, mr as resolveLanguagePair, i as resolveModeConfig, ee as resolveSandboxAssistantMode, Wi as resolveSpeechLocale, Li as restoreAcknowledgedWriteModes, Ft as retryDelayMs, wn as rotationElapsedMs, oo as runBelongsTo, lo as runIdentities, so as sameOwner, te as sandboxBaseModeFor, Ke as sanitize, ke as selectExistingAssistantSandbox, Ae as selectSupersededAssistantSandboxes, Wt as selectVoiceForLocale, je as sendAssistantPromptAsync, Me as sendHeartbeat, Pr as sheetXmlToRows, Mt as shouldDisableEngine, mo as shouldPinOnMove, ho as shouldPinOnSelect, tr as showPreviousChunk, an as showsAssistantCaption, on as showsUserCaption, Yn as speakableEmail, Gt as speechGate, Hi as speechLabelsFor, Kt as speechLangForLocale, Yi as speechPlaybackReducer, Nt as splitForVendor, Xn as splitTableRow, Ln as spokenSoFar, ga as spokenTurnText, pn as stageText, t as startIsCoolingDown, la as startPhraseTicker, Tn as startRotationTicker, mn as statusStageCopy, go as stepsFromToolActivity, Ne as stopReapedAssistantSandbox, st as streamBudgetMs, aa as stripLegacyFillerPrefix, wo as subscribeReducedMotion, nn as subscribeSpeechEngine, Fr as summarisePageText, En as syncRotationClock, _o as tabForArrowKey, hn as thinkingPhrase, gn as thinkingPhraseEntry, cr as toCaptionText, _i as toMessageAttachment, Zn as toSpeakableText, vi as truncateForInline, Ir as truncatePagesForInline, ua as turnActivityCopy, da as turnActivityStage, nt as unofferedModeSendRefusal, Mi as unofferedModeSendRefusalAfterAccess, ls as useAssistantApiAccess, vs as useAssistantAttachments, Fa as useAssistantConnectSource, $s as useAssistantDockWidth, xs as useAssistantHeartbeat, d as useAssistantI18nNamespace, Ss as useAssistantKeyboardShortcuts, C as useAssistantNavigate, ec as useAssistantOverlayOrNull, a as useAssistantPageLabel, Xa as useAssistantPreview, Eo as useAssistantPreviewBridge, o as useAssistantProduct, s as useAssistantProductOrNull, tc as useAssistantQuotaExhausted, ya as useAssistantSpeech, c as useAssistantStorageFolders, Qi as useAssistantStore, f as useAssistantTr, us as useConversationTurns, Ka as useDropdownEscape, ko as useHostedAssistantPreviewBridge, bo as useOverlayFocus, To as usePrefersReducedMotion, Je as useSandboxAssistantTransport, n as useVoiceInput, ba as useVoiceSession, gs as useWorkspaceWriteAccess, yi as validateFile, qt as voiceAvailability, pt as voiceMarker, $n as voicePreviewText, Jt as voiceQualityRank, mt as voiceSessionIdOf, Rn as voiceSessionReducer, sn as voiceStageState, bn as voiceStatusParts, xn as voiceStatusSuffix, Vn as voiceTranscriptFilename, ht as voiceTurnsOnly, Yt as voicesForLocale, Pe as waitForAssistantServiceReady, Fe as waitForSandboxRunning, cn as waveformIsActive, ln as waveformIsSettled, ct as withIncompleteTurnNotice, Ri as withWriteModeAcknowledged, Xs as writeAssistantOverlayFlag, zi as writeModeConsentCopy, Bi as writeModeSendRefusal };
74
+ import { AssistantConnectSourceProvider as Pa, connectSourceHrefRenders as Fa, hasConnectSource as Ia, useAssistantConnectSource as La } from "./shared/assistant/ui/composer/connectSource.js";
75
+ import { AssistantConnectSourceItem as Ra, connectSourceActivation as za } from "./shared/assistant/ui/composer/AssistantConnectSourceItem.js";
76
+ import { ASSISTANT_OVERLAY_ATTR as Ba, ASSISTANT_PANEL_ATTR as Va, NO_PANEL_OVERLAY as Ha, activePanelOverlay as Ua, assistantPanelOwnsEscape as Wa, escapeDismisses as Ga, focusIsInsidePanel as Ka, nextPanelOverlays as qa, panelOwnsEscape as Ja } from "./shared/assistant/ui/panelOverlays.js";
77
+ import { useDropdownEscape as Ya } from "./shared/assistant/ui/useDropdownEscape.js";
78
+ import { AssistantAttachmentButton as Xa } from "./shared/assistant/ui/composer/AssistantAttachmentButton.js";
79
+ import { AssistantAttachmentChips as Za } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
80
+ import { AssistantPreviewProvider as Qa, useAssistantPreview as $a } from "./shared/assistant/preview/context.js";
81
+ import { IDLE_PREVIEW_STATE as eo, isBlankProse as to, isRunningStatus as no, nextPreviewEvents as ro } from "./shared/assistant/preview/previewTransitions.js";
82
+ import { IDLE_PREVIEW as io, NO_OWNER as ao, applyPreviewEvent as oo, createAssistantPreviewSurface as so, currentPreviewOwner as co, runBelongsTo as lo, sameOwner as uo } from "./shared/assistant/preview/surfaceState.js";
83
+ import { createRunIdentityCache as fo, runIdentities as po } from "./shared/assistant/preview/runIdentity.js";
84
+ import { IDLE_ACTIVE_TAB as mo, nextActiveTab as ho, pinActiveTab as go, shouldPinOnMove as _o, shouldPinOnSelect as vo, stepsFromToolActivity as yo, tabForArrowKey as bo } from "./shared/assistant/preview/entity/entityPreviewState.js";
85
+ import { AssistantStepRail as xo } from "./shared/assistant/preview/entity/AssistantStepRail.js";
86
+ import { AssistantEntityPreview as So } from "./shared/assistant/preview/entity/AssistantEntityPreview.js";
87
+ import { useOverlayFocus as Co } from "./shared/assistant/ui/useOverlayFocus.js";
88
+ import { REDUCED_MOTION_ATTRIBUTE as wo, REDUCED_MOTION_QUERY as To, readReducedMotion as Eo, subscribeReducedMotion as Do, usePrefersReducedMotion as Oo } from "./shared/assistant/ui/usePrefersReducedMotion.js";
89
+ import { useAssistantPreviewBridge as ko } from "./shared/assistant/preview/useAssistantPreviewBridge.js";
90
+ import { HostedPreviewBridgeContext as Ao, panelOwnedPreviewBridge as jo, useHostedAssistantPreviewBridge as Mo } from "./shared/assistant/preview/bridgeHostContext.js";
91
+ import { AssistantPreviewBridgeHost as No } from "./shared/assistant/preview/bridgeHost.js";
92
+ import { AssistantPreviewOverlay as Po } from "./shared/assistant/preview/AssistantPreviewOverlay.js";
93
+ import { AssistantLanguageSelector as Fo, FOLLOW_APP_LOCALE as Io } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
94
+ import { ASSISTANT_MODE_META as Lo, AssistantModeSelector as Ro, assistantModeMeta as zo, nextModeIndex as Bo } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
95
+ import { AssistantVoiceButton as Vo } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
96
+ import { AUTO_VOICE as Ho, AssistantVoiceSelector as Uo } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
97
+ import { AssistantVoiceOrb as Wo } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
98
+ import { AssistantVoiceSessionButton as Go } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
99
+ import { CAPTION_SCROLL_ATTR as Ko, VoiceCaption as qo } from "./shared/assistant/ui/voice/VoiceCaption.js";
100
+ import { VoiceConversationView as Jo } from "./shared/assistant/ui/voice/VoiceConversationView.js";
101
+ import { VoiceWaveform as Yo } from "./shared/assistant/ui/voice/VoiceWaveform.js";
102
+ import { VoiceStatusLine as Xo, VoiceStatusText as Zo } from "./shared/assistant/ui/voice/VoiceStatusText.js";
103
+ import { VoiceMiniController as Qo } from "./shared/assistant/ui/voice/VoiceMiniController.js";
104
+ import { VoiceStage as $o } from "./shared/assistant/ui/voice/VoiceStage.js";
105
+ import { VoiceTranscriptDrawer as es } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
106
+ import { downloadFile as ts, exportConversation as ns } from "./shared/assistant/exportConversation.js";
107
+ import { AssistantMoreMenu as rs } from "./shared/assistant/ui/AssistantMoreMenu.js";
108
+ import { AssistantHeader as is } from "./shared/assistant/ui/AssistantHeader.js";
109
+ import { AssistantConversationList as as } from "./shared/assistant/ui/AssistantConversationList.js";
110
+ import { AssistantEmptyState as os } from "./shared/assistant/ui/AssistantEmptyState.js";
111
+ import { AssistantTurnActivity as ss, TurnActivityLine as cs } from "./shared/assistant/ui/AssistantTurnActivity.js";
112
+ import { AssistantMessageItem as ls } from "./shared/assistant/ui/AssistantMessageItem.js";
113
+ import { AssistantMessageList as us } from "./shared/assistant/ui/AssistantMessageList.js";
114
+ import { AssistantVoiceSession as ds } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
115
+ import { useAssistantApiAccess as fs } from "./shared/assistant/useAssistantApiAccess.js";
116
+ import { useConversationTurns as ps } from "./shared/assistant/useConversationTurns.js";
117
+ import { isMultimodalBodyRejection as ms, isRecoverableAssistantError as hs } from "./shared/assistant/transportErrors.js";
118
+ import { aiCreditsUpdatedEventName as gs, dispatchAssistantQuotaExhausted as _s, notifyAiCreditsUpdated as vs } from "./shared/assistant/aiCredits.js";
119
+ import { useWorkspaceWriteAccess as ys } from "./shared/assistant/useWorkspaceWriteAccess.js";
120
+ import { extractDocumentText as bs } from "./shared/assistant/documentExtract.js";
121
+ import { useAssistantAttachments as xs } from "./shared/assistant/useAssistantAttachments.js";
122
+ import { AssistantComposer as Ss } from "./shared/assistant/ui/composer/AssistantComposer.js";
123
+ import { isProdRuntime as Cs } from "./shared/assistant/env.js";
124
+ import { useAssistantHeartbeat as ws } from "./shared/assistant/useAssistantHeartbeat.js";
125
+ import { useAssistantKeyboardShortcuts as Ts } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
126
+ import { AssistantApiCallsConsentDialog as Es } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
127
+ import { AssistantChatArea as Ds } from "./shared/assistant/ui/AssistantChatArea.js";
128
+ import { AIAssistantPanel as Os } from "./shared/assistant/ui/AIAssistantPanel.js";
129
+ import { ASSISTANT_BOTTOM_CHROME_CLEARANCE as ks, ASSISTANT_DIALOG_SELECTOR as As, ASSISTANT_DOCKED_DESKTOP_CLASS as js, ASSISTANT_DOCK_WIDTH_PX as Ms, ASSISTANT_DOCK_WIDTH_VAR as Ns, ASSISTANT_FLOATING_DESKTOP_CLASS as Ps, ASSISTANT_OVERLAY_DEFAULT_TOP_PX as Fs, ASSISTANT_OVERLAY_DESKTOP_QUERY as Is, ASSISTANT_OVERLAY_TOP_VAR as Ls, ASSISTANT_SHEET_BASE_CLASS as Rs, ASSISTANT_SHEET_COMPACT_CLASS as zs, ASSISTANT_SHEET_EXPANDED_CLASS as Bs, ASSISTANT_TOGGLE_SHORTCUT_LABEL as Vs, aboveAssistantBottomChrome as Hs, assistantOverlayClassName as Us, assistantOverlayEscapeAction as Ws, assistantOverlayKeys as Gs, assistantQuotaKindOf as Ks, createAssistantNavigate as qs, isAssistantToggleShortcut as Js, nextAssistantOpenState as Ys, publishedAssistantDockWidth as Xs, readAssistantOverlayFlag as Zs, requestedAssistantOpenState as Qs, writeAssistantOverlayFlag as $s } from "./shared/assistant/ui/assistantOverlayState.js";
130
+ import { AssistantOverlay as ec, AssistantOverlayProvider as tc, useAssistantDockWidth as nc, useAssistantOverlayOrNull as rc, useAssistantQuotaExhausted as ic } from "./shared/assistant/ui/AssistantOverlay.js";
131
+ export { Oi as ADMIN_MODE_ACCESS_WAIT_MS, Os as AIAssistantPanel, Y as ASSISTANT_API_AUTH_STRATEGY, ks as ASSISTANT_BOTTOM_CHROME_CLEARANCE, As as ASSISTANT_DIALOG_SELECTOR, js as ASSISTANT_DOCKED_DESKTOP_CLASS, Ms as ASSISTANT_DOCK_WIDTH_PX, Ns as ASSISTANT_DOCK_WIDTH_VAR, Ps as ASSISTANT_FLOATING_DESKTOP_CLASS, Ci as ASSISTANT_I18N_COMPUTED_COPY, wi as ASSISTANT_I18N_LITERAL_COPY, Ti as ASSISTANT_I18N_MANIFEST, lr as ASSISTANT_LANGUAGES, z as ASSISTANT_MODE_FALLBACK_LABELS, B as ASSISTANT_MODE_IDS, Lo as ASSISTANT_MODE_META, Ba as ASSISTANT_OVERLAY_ATTR, Fs as ASSISTANT_OVERLAY_DEFAULT_TOP_PX, Is as ASSISTANT_OVERLAY_DESKTOP_QUERY, Ls as ASSISTANT_OVERLAY_TOP_VAR, Va as ASSISTANT_PANEL_ATTR, Rs as ASSISTANT_SHEET_BASE_CLASS, zs as ASSISTANT_SHEET_COMPACT_CLASS, Bs as ASSISTANT_SHEET_EXPANDED_CLASS, Vs as ASSISTANT_TOGGLE_SHORTCUT_LABEL, Lr as ATTACHMENT_ACCEPT, bi as ATTACHMENT_SOURCES, Ho as AUTO_VOICE, Es as AssistantApiCallsConsentDialog, Xa as AssistantAttachmentButton, Za as AssistantAttachmentChips, Da as AssistantAutoSpeakToggle, _a as AssistantAvatar, Ds as AssistantChatArea, Ss as AssistantComposer, Ra as AssistantConnectSourceItem, Pa as AssistantConnectSourceProvider, as as AssistantConversationList, os as AssistantEmptyState, So as AssistantEntityPreview, is as AssistantHeader, l as AssistantI18nProvider, Aa as AssistantLanguageMenu, Fo as AssistantLanguageSelector, m as AssistantMarkdownImage, _ as AssistantMarkdownRenderer, Oa as AssistantMessageAttachments, ls as AssistantMessageItem, us as AssistantMessageList, Ro as AssistantModeSelector, rs as AssistantMoreMenu, v as AssistantNavigateProvider, ec as AssistantOverlay, tc as AssistantOverlayProvider, ka as AssistantPendingWriteCard, No as AssistantPreviewBridgeHost, Po as AssistantPreviewOverlay, Qa as AssistantPreviewProvider, r as AssistantProductProvider, ja as AssistantReplyLanguageSelector, Ie as AssistantRuntimeManager, Ma as AssistantSpeakButton, va as AssistantSpeechProvider, Na as AssistantSpokenTurnsNotice, xo as AssistantStepRail, pa as AssistantToolActivity, ss as AssistantTurnActivity, Vo as AssistantVoiceButton, Wo as AssistantVoiceOrb, Uo as AssistantVoiceSelector, ds as AssistantVoiceSession, Go as AssistantVoiceSessionButton, Rr as AttachmentRejectedError, _r as BOILERPLATE_PAGE_SHARE, Ye as BUILT_IN_MODE_CAPABILITIES, Ko as CAPTION_SCROLL_ATTR, A as CHECK_AI_CREDITS, j as CREATE_SANDBOX, zr as DEFAULT_INLINE_LIMITS, Hn as DEFAULT_SPEAKABLE_LABELS, ur as DEFAULT_SPEECH_RATE, rt as DEFAULT_STREAM_BUDGET_MS, Dn as ENDPOINT_GRACE_MS, M as EXTEND_SANDBOX_TTL, Io as FOLLOW_APP_LOCALE, N as GET_ACTIVE_SANDBOXES, P as GET_SANDBOX, xt as HOSTED_DISABLE_MS, St as HOSTED_TTS_MAX_CHARS, _t as HOSTED_TTS_TIER, vt as HOSTED_VOICES, It as HOSTED_VOICE_RANK, Ao as HostedPreviewBridgeContext, mo as IDLE_ACTIVE_TAB, Gi as IDLE_PLAYBACK, io as IDLE_PREVIEW, eo as IDLE_PREVIEW_STATE, Sn as IDLE_ROTATION_CLOCK, it as INCOMPLETE_TURN_NOTICES, On as INITIAL_SESSION, Br as INLINE_IMAGE_MAX_DIM, Vr as INLINE_IMAGE_QUALITY, kn as INTERRUPT_MAX_MS, An as INTERRUPT_MIN_MS, Pi as LEGACY_WRITE_CONSENT_KEY, Xe as MAX_ASSISTANT_STREAM_BUDGET_MS, Hr as MAX_ATTACHMENTS, vr as MAX_BOILERPLATE_LINE_CHARS, Ur as MAX_CONFIGURABLE_INLINE_CHARS, yr as MAX_EXTRACTED_CHARS, Wr as MAX_FILE_BYTES, Gr as MAX_INLINE_CHARS_PER_FILE, Kr as MAX_INLINE_CHARS_TOTAL, oe as MAX_INLINE_IMAGE_BASE64_BYTES, qr as MAX_INLINE_IMAGE_BASE64_CHARS, Jr as MAX_INLINE_IMAGE_PARTS, Yr as MAX_INLINE_TURN_BODY_BYTES, br as MAX_PDF_PAGES_SCANNED, se as MAX_REQUEST_BODY_BYTES, Un as MAX_SPEAKABLE_CHARS, Wn as MAX_SPOKEN_TABLE_ROWS, Xr as MAX_TURN_BODY_BYTES, er as MINI_CAPTION_BUDGET, xr as MIN_PAGE_TEXT_CHARS, Sr as MIN_TEXT_PAGE_SHARE, ao as NO_OWNER, Ha as NO_PANEL_OVERLAY, un as PHRASE_ROTATE_MS, nr as POLL_FAST_MS, rr as POLL_FAST_UNTIL_MS, ir as POLL_SLOW_MS, ar as POLL_STEADY_MS, or as POLL_STEADY_UNTIL_MS, Qn as PREVIEW_LANGUAGES, U as PRODUCT_ASSISTANT_MODE_ID_MAX_LENGTH, W as PRODUCT_ASSISTANT_MODE_ID_PATTERN, Zr as PROMPT_ENVELOPE_RESERVE_BYTES, Qr as PROVIDER_READABLE_FILE_MEDIA_TYPES, F as PROXY_SANDBOX_REQUEST, wo as REDUCED_MOTION_ATTRIBUTE, To as REDUCED_MOTION_QUERY, I as REPORT_AI_TOKEN_USAGE, ce as REQUEST_TOO_LARGE_REFUSAL, wa as SANDBOX_READY_TTL_MS, jn as SILENCE_SUBMIT_MS, Ct as SPEAKING_RATE_MAX, wt as SPEAKING_RATE_MAX_STREAMING, Tt as SPEAKING_RATE_MAX_SYNC, Et as SPEAKING_RATE_MIN, Gn as SPEECH_CHUNK_CHARS, Kn as SPEECH_CHUNK_CJK_CHARS, Lt as SPEECH_LANG, Vi as SPOKEN_LABEL_LANGUAGES, dn as STAGE_COPY, e as START_RETRY_COOLDOWN_MS, L as STOP_ASSISTANT_SANDBOX, at as STREAM_BUDGET_MS, Fi as TAKE_ACTION_ENGLISH, fn as THINKING_PHRASES, $r as TURN_BODY_HEADROOM_BYTES, cs as TurnActivityLine, Ze as UNAVAILABLE_MODE_REFUSAL, Qe as UNDECLARED_MODE_CAPABILITIES, Rt as VOICE_LIST_TIMEOUT_MS, _n as VOICE_MUTED_LABEL, vn as VOICE_THINKING_LABEL, qo as VoiceCaption, Jo as VoiceConversationView, Qo as VoiceMiniController, $o as VoiceStage, Xo as VoiceStatusLine, Zo as VoiceStatusText, es as VoiceTranscriptDrawer, Yo as VoiceWaveform, R as WAIT_FOR_SANDBOX_RUNNING, le as abortAssistantTurn, Hs as aboveAssistantBottomChrome, Ua as activePanelOverlay, $e as adminOnlyModeSendRefusal, ki as adminOnlyModeSendRefusalAfterAccess, Cn as advanceRotationClock, gs as aiCreditsUpdatedEventName, oo as applyPreviewEvent, ue as approvePendingWrite, Ei as assistantI18nSeedCopy, V as assistantModeFallbackLabel, Di as assistantModeI18nCopy, zo as assistantModeMeta, Us as assistantOverlayClassName, Ws as assistantOverlayEscapeAction, Gs as assistantOverlayKeys, Wa as assistantPanelOwnsEscape, Ks as assistantQuotaKindOf, y as assistantRoutePath, u as assistantTranslationKey, b as assistantUrlTransform, xi as availableAttachmentSources, Dt as base64ToBytes, x as browserShouldHandle, gt as browserSpeechEngine, fa as buildAssistantProgress, de as buildAssistantSandboxEnv, ei as buildAttachmentPromptBlock, Ni as buildBoundedAttachmentTurn, zn as buildContinuedFromVoiceNote, Le as buildProgress, fe as buildPromptGatewayRequest, ti as buildPromptParts, pe as buildPromptRequestBody, ni as buildPromptWithAttachments, Ot as buildRequest, O as buildSandboxContextInput, Bn as buildVoiceTranscriptMarkdown, G as builtInModeExtendedBy, lt as chatTurns, me as checkAssistantAiCredits, qn as chunkForSpeech, S as classifyAssistantHref, ri as classifyAttachment, kt as classifyHttpFailure, w as classifyQuotaError, Cr as columnLetterToIndex, yn as composeVoiceStatus, Zt as configureSpeechEngine, za as connectSourceActivation, Fa as connectSourceHrefRenders, Jn as containsCjk, p as copyToClipboard, ii as countInlineImageCandidates, ai as countInlinedImageParts, ha as countSpokenTurns, Ai as createAdminModeAccessGate, qs as createAssistantNavigate, so as createAssistantPreviewSurface, he as createAssistantSandbox, ge as createAssistantSession, Pt as createHostedTtsEngine, Ta as createReadinessTracker, Xt as createRoutingSpeechEngine, fo as createRunIdentityCache, qe as createSandboxAssistantTransport, Qt as createSpeechEngines, co as currentPreviewOwner, K as declareAssistantMode, At as decodeAudioResponse, wr as decodeXmlEntities, T as describeQuotaError, oi as detectDocumentFormat, Ui as detectScriptLocale, Si as deviceHasCamera, jt as disableDurationMs, _s as dispatchAssistantQuotaExhausted, Tr as docxXmlToText, _e as downloadAssistantArtifact, ts as downloadFile, sa as elapsedSince, Ga as escapeDismisses, si as estimateTurnBodyBytes, k as executeSandboxGraphQL, ns as exportConversation, ve as extendAssistantSandboxTTL, bs as extractDocumentText, dr as findAssistantLanguage, et as findAssistantModeConfig, ye as findExistingSandbox, hr as findPendingWrite, Er as fitPdfPages, Ka as focusIsInsidePanel, ci as formatBytes, Dr as formatPageRanges, be as forwardsUserTokensToSandbox, xa as getActorId, xe as getAssistantArtifacts, oa as getAssistantDisplayContent, Re as getAssistantMedia, Se as getAssistantMessages, Ce as getAssistantSession, we as getAssistantStreamAccess, ze as getAssistantText, li as getAttachmentSendBlocker, ne as getCapability, ui as getExtension, X as getImageForMode, Z as getImageTagForMode, Sa as getOrganizationId, Be as getRawMessageCreatedAt, Q as getResourcesForMode, $ as getSandboxImageRegistry, di as getSendableAttachments, $t as getSpeechEngine, Ve as getToolProgress, Ca as getWorkspaceId, ut as groupBySession, dt as groupConsecutiveBySession, fi as hasAttachmentWorkInFlight, Ia as hasConnectSource, yt as hostedLocaleFor, bt as hostedSupportsLanguage, h as imageHostLabel, ot as incompleteTurnNotice, q as isAssistantModeId, Js as isAssistantToggleShortcut, to as isBlankProse, H as isBuiltInAssistantMode, Mn as isCapturing, Nn as isEcho, zt as isHostedVoice, na as isLegacyFiller, ra as isLegacyStopped, Or as isMostlyImagePages, ms as isMultimodalBodyRejection, Cs as isProdRuntime, J as isProductAssistantModeId, pi as isProviderReadableFilePart, E as isQuotaExhaustedError, He as isReapedSandboxConnectionError, Ea as isRecentlyVerified, Ue as isRecoverable, hs as isRecoverableAssistantError, g as isRemoteImageSrc, no as isRunningStatus, Ki as isSpeakingMessage, Bt as isSpeechBlocked, ia as isStageCopy, Pn as isSubmittable, $i as isTurnInFlight, re as isUnknownFieldError, ft as isVoiceTurn, Ii as isWriteModeAcknowledged, kr as joinSheets, Vt as languageDisplayName, mi as largestInlineCharsPerFile, We as mapSessionToHistory, ie as markSupported, ae as markUnsupported, Ge as mergeMessagesById, Xi as mergePersistedAssistantState, rn as micIsInterrupt, Te as modeRequiresConfirmWrites, ca as msUntilNextPhrase, ho as nextActiveTab, Ys as nextAssistantOpenState, Bo as nextModeIndex, qa as nextPanelOverlays, ro as nextPreviewEvents, Ht as normalizeLangTag, vs as notifyAiCreditsUpdated, Fn as orbMode, Ar as pageMarker, jo as panelOwnedPreviewBridge, Ja as panelOwnsEscape, gr as parseConfirmationRefusal, hi as parseDataUrl, jr as parseSharedStrings, ma as parseToolActivity, Mr as parseWorkbookSheets, Nr as pdfTextItemsToPage, go as pinActiveTab, ea as planAbandonedTurn, In as planReplyConsumption, ta as planTurnAbort, sr as pollDelayMs, Ut as primaryLanguageSubtag, Ee as promptGatewayRequestBytes, Xs as publishedAssistantDockWidth, qi as publishedChunks, D as quotaExhaustedEventName, Zs as readAssistantOverlayFlag, Eo as readReducedMotion, en as readSpeechEngineConfig, De as releaseSupersededAssistantSandboxes, pr as replyFollowsInput, Oe as reportAssistantAiTokenUsage, Qs as requestedAssistantOpenState, Ji as requiresCancel, tn as resetSpeechEngine, Zi as resolveActiveModeSandbox, gi as resolveAssistantInlineLimits, fr as resolveAssistantLanguage, tt as resolveAssistantModeCapabilities, ji as resolveAssistantSendModeAfterAccess, mr as resolveLanguagePair, i as resolveModeConfig, ee as resolveSandboxAssistantMode, Wi as resolveSpeechLocale, Li as restoreAcknowledgedWriteModes, Ft as retryDelayMs, wn as rotationElapsedMs, lo as runBelongsTo, po as runIdentities, uo as sameOwner, te as sandboxBaseModeFor, Ke as sanitize, ke as selectExistingAssistantSandbox, Ae as selectSupersededAssistantSandboxes, Wt as selectVoiceForLocale, je as sendAssistantPromptAsync, Me as sendHeartbeat, Pr as sheetXmlToRows, Mt as shouldDisableEngine, _o as shouldPinOnMove, vo as shouldPinOnSelect, tr as showPreviousChunk, an as showsAssistantCaption, on as showsUserCaption, Yn as speakableEmail, Gt as speechGate, Hi as speechLabelsFor, Kt as speechLangForLocale, Yi as speechPlaybackReducer, Nt as splitForVendor, Xn as splitTableRow, Ln as spokenSoFar, ga as spokenTurnText, pn as stageText, t as startIsCoolingDown, la as startPhraseTicker, Tn as startRotationTicker, mn as statusStageCopy, yo as stepsFromToolActivity, Ne as stopReapedAssistantSandbox, st as streamBudgetMs, aa as stripLegacyFillerPrefix, Do as subscribeReducedMotion, nn as subscribeSpeechEngine, Fr as summarisePageText, En as syncRotationClock, bo as tabForArrowKey, hn as thinkingPhrase, gn as thinkingPhraseEntry, cr as toCaptionText, _i as toMessageAttachment, Zn as toSpeakableText, vi as truncateForInline, Ir as truncatePagesForInline, ua as turnActivityCopy, da as turnActivityStage, nt as unofferedModeSendRefusal, Mi as unofferedModeSendRefusalAfterAccess, fs as useAssistantApiAccess, xs as useAssistantAttachments, La as useAssistantConnectSource, nc as useAssistantDockWidth, ws as useAssistantHeartbeat, d as useAssistantI18nNamespace, Ts as useAssistantKeyboardShortcuts, C as useAssistantNavigate, rc as useAssistantOverlayOrNull, a as useAssistantPageLabel, $a as useAssistantPreview, ko as useAssistantPreviewBridge, o as useAssistantProduct, s as useAssistantProductOrNull, ic as useAssistantQuotaExhausted, ya as useAssistantSpeech, c as useAssistantStorageFolders, Qi as useAssistantStore, f as useAssistantTr, ps as useConversationTurns, Ya as useDropdownEscape, Mo as useHostedAssistantPreviewBridge, Co as useOverlayFocus, Oo as usePrefersReducedMotion, Je as useSandboxAssistantTransport, n as useVoiceInput, ba as useVoiceSession, ys as useWorkspaceWriteAccess, yi as validateFile, qt as voiceAvailability, pt as voiceMarker, $n as voicePreviewText, Jt as voiceQualityRank, mt as voiceSessionIdOf, Rn as voiceSessionReducer, sn as voiceStageState, bn as voiceStatusParts, xn as voiceStatusSuffix, Vn as voiceTranscriptFilename, ht as voiceTurnsOnly, Yt as voicesForLocale, Pe as waitForAssistantServiceReady, Fe as waitForSandboxRunning, cn as waveformIsActive, ln as waveformIsSettled, ct as withIncompleteTurnNotice, Ri as withWriteModeAcknowledged, $s as writeAssistantOverlayFlag, zi as writeModeConsentCopy, Bi as writeModeSendRefusal };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.923.2",
3
+ "version": "2026.923.4",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {