@burdenoff/fe-libs 2026.910.5 → 2026.910.6

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.
@@ -89,6 +89,8 @@ export * from './ui/AssistantSpeakButton';
89
89
  export * from './ui/AssistantSpokenTurnsNotice';
90
90
  export * from './ui/composer/AssistantAttachmentButton';
91
91
  export * from './ui/composer/AssistantAttachmentChips';
92
+ export * from './ui/composer/AssistantConnectSourceItem';
93
+ export * from './ui/composer/connectSource';
92
94
  export * from './ui/composer/AssistantLanguageSelector';
93
95
  export * from './ui/composer/AssistantModeSelector';
94
96
  export * from './ui/composer/AssistantVoiceButton';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AAGxB,cAAc,wBAAwB,CAAC;AAKvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAG9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,gBAAgB,CAAC;AAK/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAG3C,cAAc,QAAQ,CAAC;AAEvB,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AAGrC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AAGzC,cAAc,WAAW,CAAC;AAE1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAErC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAE1C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAElC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAE1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,iCAAiC,CAAC;AAGhD,cAAc,OAAO,CAAC;AACtB,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,17 @@ export type AIAssistantPanelProps = PanelProps & {
24
24
  * stay ordinary same-tab anchors — the assistant never navigates on its own.
25
25
  */
26
26
  onNavigate?: AssistantNavigate;
27
+ /**
28
+ * Where this product's "connect a data source" page lives, e.g.
29
+ * `/integrations/connections`. Absence is the off-switch: with no href the
30
+ * attach menu shows no such item.
31
+ *
32
+ * ★ Threaded through rather than assumed, for the same reason as `onNavigate`:
33
+ * only the product knows its own routes. It is classified like any other link
34
+ * before it is used, so a same-origin path routes in-app and anything else
35
+ * opens in a new tab.
36
+ */
37
+ connectSourceHref?: string;
27
38
  };
28
39
  /**
29
40
  * The panel.
@@ -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,EAAE,MAAM,OAAO,CAAC;AACxC,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;AAKrC,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;CAChC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA6GtD,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,EAAE,MAAM,OAAO,CAAC;AACxC,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;AAMrC,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;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAgHtD,CAAC"}
@@ -3,52 +3,56 @@ import { useAssistantTr as t } from "../i18n.js";
3
3
  import { AssistantNavigateProvider as n } from "./AssistantMarkdownRenderer.js";
4
4
  import { useAssistantStore as r } from "../store.js";
5
5
  import { AssistantSpeechProvider as i } from "./AssistantSpeechProvider.js";
6
- import { AssistantHeader as a } from "./AssistantHeader.js";
7
- import { AssistantConversationList as o } from "./AssistantConversationList.js";
8
- import { useFilesServiceWarmup as s } from "../../../storage/warmFilesService.js";
9
- import { useAssistantHeartbeat as c } from "../useAssistantHeartbeat.js";
10
- import { useAssistantKeyboardShortcuts as l } from "../useAssistantKeyboardShortcuts.js";
11
- import { AssistantChatArea as u } from "./AssistantChatArea.js";
12
- import { useRef as d } from "react";
13
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
6
+ import { AssistantConnectSourceProvider as a } from "./composer/connectSource.js";
7
+ import { AssistantHeader as o } from "./AssistantHeader.js";
8
+ import { AssistantConversationList as s } from "./AssistantConversationList.js";
9
+ import { useFilesServiceWarmup as c } from "../../../storage/warmFilesService.js";
10
+ import { useAssistantHeartbeat as l } from "../useAssistantHeartbeat.js";
11
+ import { useAssistantKeyboardShortcuts as u } from "../useAssistantKeyboardShortcuts.js";
12
+ import { AssistantChatArea as d } from "./AssistantChatArea.js";
13
+ import { useRef as f } from "react";
14
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
14
15
  //#region src/shared/assistant/ui/AIAssistantPanel.tsx
15
- var m = ({ onClose: m, visible: h, docked: g, onToggleDock: _, writeAccess: v, onNavigate: y }) => {
16
- let b = t(), x = d(null), { conversations: S, activeConversationId: C, conversationListOpen: w, toggleConversationList: T, createConversation: E } = r(), D = S.find((e) => e.id === C);
17
- c(D?.backendSessionId ?? null, D?.mode ?? null, h ?? !0), s(h ?? !0);
18
- let O = e(h !== !1);
19
- return l({
20
- panelRef: x,
21
- onClose: m
22
- }), /* @__PURE__ */ f(i, {
23
- visible: h ?? !0,
24
- children: /* @__PURE__ */ f(n, {
25
- value: y,
26
- children: /* @__PURE__ */ p("div", {
27
- ref: x,
28
- className: "relative flex h-full w-full flex-col bg-bg-surface",
29
- role: "complementary",
30
- "aria-label": b("panel.ariaLabel", "AI Assistant"),
31
- "data-testid": "ai-assistant-panel",
32
- tabIndex: -1,
33
- children: [
34
- /* @__PURE__ */ f(a, {
35
- contextLabel: O,
36
- onNewConversation: () => E(),
37
- onOpenHistory: T,
38
- historyOpen: w,
39
- onClose: m,
40
- docked: g,
41
- onToggleDock: _
42
- }),
43
- w && /* @__PURE__ */ f(o, {}),
44
- /* @__PURE__ */ f(u, {
45
- visible: h ?? !0,
46
- writeAccess: v
47
- })
48
- ]
16
+ var h = ({ onClose: h, visible: g, docked: _, onToggleDock: v, writeAccess: y, onNavigate: b, connectSourceHref: x }) => {
17
+ let S = t(), C = f(null), { conversations: w, activeConversationId: T, conversationListOpen: E, toggleConversationList: D, createConversation: O } = r(), k = w.find((e) => e.id === T);
18
+ l(k?.backendSessionId ?? null, k?.mode ?? null, g ?? !0), c(g ?? !0);
19
+ let A = e(g !== !1);
20
+ return u({
21
+ panelRef: C,
22
+ onClose: h
23
+ }), /* @__PURE__ */ p(i, {
24
+ visible: g ?? !0,
25
+ children: /* @__PURE__ */ p(n, {
26
+ value: b,
27
+ children: /* @__PURE__ */ p(a, {
28
+ value: x,
29
+ children: /* @__PURE__ */ m("div", {
30
+ ref: C,
31
+ className: "relative flex h-full w-full flex-col bg-bg-surface",
32
+ role: "complementary",
33
+ "aria-label": S("panel.ariaLabel", "AI Assistant"),
34
+ "data-testid": "ai-assistant-panel",
35
+ tabIndex: -1,
36
+ children: [
37
+ /* @__PURE__ */ p(o, {
38
+ contextLabel: A,
39
+ onNewConversation: () => O(),
40
+ onOpenHistory: D,
41
+ historyOpen: E,
42
+ onClose: h,
43
+ docked: _,
44
+ onToggleDock: v
45
+ }),
46
+ E && /* @__PURE__ */ p(s, {}),
47
+ /* @__PURE__ */ p(d, {
48
+ visible: g ?? !0,
49
+ writeAccess: y
50
+ })
51
+ ]
52
+ })
49
53
  })
50
54
  })
51
55
  });
52
56
  };
53
57
  //#endregion
54
- export { m as AIAssistantPanel };
58
+ export { h as AIAssistantPanel };
@@ -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;AAWf,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,CA4I/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;AAaf,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,CA4J/C,CAAC"}
@@ -1,86 +1,89 @@
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 { useCallback as r, useEffect as i, useMemo as a, useRef as o, useState as s } from "react";
5
- import { Camera as c, FileText as l, FolderOpen as u, ImageIcon as d, Plus as f } from "lucide-react";
6
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
4
+ import { useAssistantConnectSource as r } from "./connectSource.js";
5
+ import { AssistantConnectSourceItem as i } from "./AssistantConnectSourceItem.js";
6
+ import { useCallback as a, useEffect as o, useMemo as s, useRef as c, useState as l } from "react";
7
+ import { Camera as u, FileText as d, FolderOpen as f, ImageIcon as p, Plus as m } from "lucide-react";
8
+ import { jsx as h, jsxs as g } from "react/jsx-runtime";
7
9
  //#region src/shared/assistant/ui/composer/AssistantAttachmentButton.tsx
8
- var h = {
9
- camera: c,
10
- gallery: d,
11
- documents: l,
12
- files: u
13
- }, g = ({ onFiles: c, onPickerOpen: l, direction: u = "up", canAddMore: d, disabled: g = !1 }) => {
14
- let _ = e(), v = o(null), y = o(null), b = o(null), [x, S] = s(!1), C = o(l);
15
- C.current = l;
16
- let w = a(() => t(n()), []), T = d ? _("composer.attach", "Attach files or photos") : _("composer.attachFull", "Attachment limit reached ({{max}})", { max: 5 });
17
- i(() => {
18
- if (!x) return;
10
+ var _ = {
11
+ camera: u,
12
+ gallery: p,
13
+ documents: d,
14
+ files: f
15
+ }, v = ({ onFiles: u, onPickerOpen: d, direction: f = "up", canAddMore: p, disabled: v = !1 }) => {
16
+ let y = e(), b = c(null), x = c(null), S = c(null), [C, w] = l(!1), T = c(d);
17
+ T.current = d;
18
+ let E = s(() => t(n()), []), D = r(), O = p || !!D, k = p ? y("composer.attach", "Attach files or photos") : y("composer.attachFull", "Attachment limit reached ({{max}})", { max: 5 });
19
+ o(() => {
20
+ if (!C) return;
19
21
  let e = (e) => {
20
- e.key === "Escape" && (S(!1), b.current?.focus());
22
+ e.key === "Escape" && (w(!1), S.current?.focus());
21
23
  }, t = (e) => {
22
24
  let t = e.target;
23
- y.current?.contains(t) || b.current?.contains(t) || S(!1);
25
+ x.current?.contains(t) || S.current?.contains(t) || w(!1);
24
26
  };
25
27
  return window.addEventListener("keydown", e), window.addEventListener("mousedown", t), () => {
26
28
  window.removeEventListener("keydown", e), window.removeEventListener("mousedown", t);
27
29
  };
28
- }, [x]);
29
- let E = r((e) => {
30
- c(e.target.files), e.target.value = "";
31
- }, [c]), D = r((e) => {
32
- let t = v.current;
33
- t && (t.accept = e.accept, t.multiple = e.multiple, e.capture ? t.setAttribute("capture", e.capture) : t.removeAttribute("capture"), S(!1), C.current?.(), t.click());
30
+ }, [C]);
31
+ let A = a((e) => {
32
+ u(e.target.files), e.target.value = "";
33
+ }, [u]), j = a((e) => {
34
+ let t = b.current;
35
+ t && (t.accept = e.accept, t.multiple = e.multiple, e.capture ? t.setAttribute("capture", e.capture) : t.removeAttribute("capture"), w(!1), T.current?.(), t.click());
34
36
  }, []);
35
- return /* @__PURE__ */ m("div", {
37
+ return /* @__PURE__ */ g("div", {
36
38
  className: "relative flex-shrink-0",
37
39
  children: [
38
- /* @__PURE__ */ p("input", {
39
- ref: v,
40
+ /* @__PURE__ */ h("input", {
41
+ ref: b,
40
42
  type: "file",
41
43
  multiple: !0,
42
44
  className: "hidden",
43
- onChange: E,
45
+ onChange: A,
44
46
  tabIndex: -1,
45
47
  "aria-hidden": "true",
46
48
  "data-testid": "assistant-attach-input"
47
49
  }),
48
- /* @__PURE__ */ p("button", {
49
- ref: b,
50
+ /* @__PURE__ */ h("button", {
51
+ ref: S,
50
52
  type: "button",
51
- onClick: () => S((e) => !e),
52
- disabled: g || !d,
53
- title: T,
54
- "aria-label": T,
53
+ onClick: () => w((e) => !e),
54
+ disabled: v || !O,
55
+ title: k,
56
+ "aria-label": k,
55
57
  "aria-haspopup": "menu",
56
- "aria-expanded": x,
58
+ "aria-expanded": C,
57
59
  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",
58
60
  "data-testid": "assistant-attach",
59
- children: /* @__PURE__ */ p(f, { className: "size-4" })
61
+ children: /* @__PURE__ */ h(m, { className: "size-4" })
60
62
  }),
61
- x ? /* @__PURE__ */ p("div", {
62
- ref: y,
63
+ C ? /* @__PURE__ */ g("div", {
64
+ ref: x,
63
65
  role: "menu",
64
- "aria-label": _("composer.attachSource", "Attach from"),
65
- className: `absolute ${u === "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`,
66
+ "aria-label": y("composer.attachSource", "Attach from"),
67
+ className: `absolute ${f === "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`,
66
68
  "data-testid": "assistant-attach-menu",
67
- children: w.map((e) => {
68
- let t = h[e.id];
69
- return /* @__PURE__ */ m("button", {
69
+ children: [E.map((e) => {
70
+ let t = _[e.id];
71
+ return /* @__PURE__ */ g("button", {
70
72
  type: "button",
71
73
  role: "menuitem",
72
- onClick: () => D(e),
73
- 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",
74
+ disabled: !p,
75
+ onClick: () => j(e),
76
+ 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",
74
77
  "data-testid": `assistant-attach-source-${e.id}`,
75
- children: [/* @__PURE__ */ p(t, {
78
+ children: [/* @__PURE__ */ h(t, {
76
79
  className: "size-4 flex-shrink-0 text-text-secondary",
77
80
  "aria-hidden": "true"
78
- }), _(e.labelKey, e.labelFallback)]
81
+ }), y(e.labelKey, e.labelFallback)]
79
82
  }, e.id);
80
- })
83
+ }), /* @__PURE__ */ h(i, { onActivate: () => w(!1) })]
81
84
  }) : null
82
85
  ]
83
86
  });
84
87
  };
85
88
  //#endregion
86
- export { g as AssistantAttachmentButton };
89
+ export { v as AssistantAttachmentButton };
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ export interface AssistantConnectSourceItemProps {
3
+ /** Close the surrounding menu. Fired only when this item actually acts. */
4
+ onActivate?: () => void;
5
+ }
6
+ export declare const AssistantConnectSourceItem: FC<AssistantConnectSourceItemProps>;
7
+ //# sourceMappingURL=AssistantConnectSourceItem.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,52 @@
1
+ import { useAssistantTr as e } from "../../i18n.js";
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";
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
+ }
24
+ }
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)));
28
+ }, [
29
+ p,
30
+ 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,
37
+ role: "menuitem",
38
+ onClick: _,
39
+ ...g ? {
40
+ target: "_blank",
41
+ rel: "noopener noreferrer"
42
+ } : {},
43
+ 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
+ "data-testid": "assistant-connect-source",
45
+ children: [/* @__PURE__ */ s(o, {
46
+ className: "size-4 flex-shrink-0 text-text-secondary",
47
+ "aria-hidden": "true"
48
+ }), v]
49
+ });
50
+ };
51
+ //#endregion
52
+ export { u as AssistantConnectSourceItem };
@@ -0,0 +1,8 @@
1
+ import { FC, ReactNode } from 'react';
2
+ export declare const AssistantConnectSourceProvider: FC<{
3
+ value?: string;
4
+ children: ReactNode;
5
+ }>;
6
+ /** The product's connections href, or null when the product supplied none. */
7
+ export declare function useAssistantConnectSource(): string | null;
8
+ //# sourceMappingURL=connectSource.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,12 @@
1
+ import { createContext as e, useContext as t } from "react";
2
+ import { jsx as n } from "react/jsx-runtime";
3
+ //#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);
10
+ }
11
+ //#endregion
12
+ export { i as AssistantConnectSourceProvider, a as useAssistantConnectSource };
@@ -55,40 +55,42 @@ import { AssistantLanguageMenu as Zr } from "./shared/assistant/ui/AssistantLang
55
55
  import { AssistantReplyLanguageSelector as Qr } from "./shared/assistant/ui/AssistantReplyLanguageSelector.js";
56
56
  import { AssistantSpeakButton as $r } from "./shared/assistant/ui/AssistantSpeakButton.js";
57
57
  import { AssistantSpokenTurnsNotice as ei } from "./shared/assistant/ui/AssistantSpokenTurnsNotice.js";
58
- import { AssistantAttachmentButton as ti } from "./shared/assistant/ui/composer/AssistantAttachmentButton.js";
59
- import { AssistantAttachmentChips as ni } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
60
- import { AssistantLanguageSelector as ri, FOLLOW_APP_LOCALE as ii } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
61
- import { ASSISTANT_MODE_META as ai, AssistantModeSelector as oi, nextModeIndex as si } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
62
- import { AssistantVoiceButton as ci } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
63
- import { AUTO_VOICE as li, AssistantVoiceSelector as ui } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
64
- import { AssistantVoiceOrb as di } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
65
- import { AssistantVoiceSessionButton as fi } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
66
- import { CAPTION_SCROLL_ATTR as pi, VoiceCaption as mi } from "./shared/assistant/ui/voice/VoiceCaption.js";
67
- import { VoiceConversationView as hi } from "./shared/assistant/ui/voice/VoiceConversationView.js";
68
- import { VoiceWaveform as gi } from "./shared/assistant/ui/voice/VoiceWaveform.js";
69
- import { VoiceMiniController as _i } from "./shared/assistant/ui/voice/VoiceMiniController.js";
70
- import { VoiceStage as vi } from "./shared/assistant/ui/voice/VoiceStage.js";
71
- import { VoiceTranscriptDrawer as yi } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
72
- import { downloadFile as bi, exportConversation as xi } from "./shared/assistant/exportConversation.js";
73
- import { AssistantMoreMenu as Si } from "./shared/assistant/ui/AssistantMoreMenu.js";
74
- import { AssistantHeader as Ci } from "./shared/assistant/ui/AssistantHeader.js";
75
- import { AssistantConversationList as wi } from "./shared/assistant/ui/AssistantConversationList.js";
76
- import { AssistantEmptyState as Ti } from "./shared/assistant/ui/AssistantEmptyState.js";
77
- import { AssistantMessageItem as Ei } from "./shared/assistant/ui/AssistantMessageItem.js";
78
- import { AssistantMessageList as Di } from "./shared/assistant/ui/AssistantMessageList.js";
79
- import { AssistantVoiceSession as Oi } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
80
- import { useAssistantApiAccess as ki } from "./shared/assistant/useAssistantApiAccess.js";
81
- import { useConversationTurns as Ai } from "./shared/assistant/useConversationTurns.js";
82
- import { isMultimodalBodyRejection as ji, isRecoverableAssistantError as Mi } from "./shared/assistant/transportErrors.js";
83
- import { aiCreditsUpdatedEventName as Ni, dispatchAssistantQuotaExhausted as Pi, notifyAiCreditsUpdated as Fi } from "./shared/assistant/aiCredits.js";
84
- import { useWorkspaceWriteAccess as Ii } from "./shared/assistant/useWorkspaceWriteAccess.js";
85
- import { extractDocumentText as Li } from "./shared/assistant/documentExtract.js";
86
- import { useAssistantAttachments as Ri } from "./shared/assistant/useAssistantAttachments.js";
87
- import { AssistantComposer as zi } from "./shared/assistant/ui/composer/AssistantComposer.js";
88
- import { isProdRuntime as Bi } from "./shared/assistant/env.js";
89
- import { useAssistantHeartbeat as Vi } from "./shared/assistant/useAssistantHeartbeat.js";
90
- import { useAssistantKeyboardShortcuts as Hi } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
91
- import { AssistantApiCallsConsentDialog as Ui } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
92
- import { AssistantChatArea as Wi } from "./shared/assistant/ui/AssistantChatArea.js";
93
- import { AIAssistantPanel as Gi } from "./shared/assistant/ui/AIAssistantPanel.js";
94
- export { Gi as AIAssistantPanel, L as ASSISTANT_API_AUTH_STRATEGY, sn as ASSISTANT_LANGUAGES, ai as ASSISTANT_MODE_META, Kn as ATTACHMENT_ACCEPT, Hr as ATTACHMENT_SOURCES, li as AUTO_VOICE, Ui as AssistantApiCallsConsentDialog, ti as AssistantAttachmentButton, ni as AssistantAttachmentChips, Jr as AssistantAutoSpeakToggle, Wi as AssistantChatArea, zi as AssistantComposer, wi as AssistantConversationList, Ti as AssistantEmptyState, Ci as AssistantHeader, s as AssistantI18nProvider, Zr as AssistantLanguageMenu, ri as AssistantLanguageSelector, f as AssistantMarkdownImage, h as AssistantMarkdownRenderer, Yr as AssistantMessageAttachments, Ei as AssistantMessageItem, Di as AssistantMessageList, oi as AssistantModeSelector, Si as AssistantMoreMenu, g as AssistantNavigateProvider, Xr as AssistantPendingWriteCard, t as AssistantProductProvider, Qr as AssistantReplyLanguageSelector, _e as AssistantRuntimeManager, $r as AssistantSpeakButton, Ir as AssistantSpeechProvider, ei as AssistantSpokenTurnsNotice, Pr as AssistantToolActivity, ci as AssistantVoiceButton, di as AssistantVoiceOrb, ui as AssistantVoiceSelector, Oi as AssistantVoiceSession, fi as AssistantVoiceSessionButton, qn as AttachmentRejectedError, En as BOILERPLATE_PAGE_SHARE, pi 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, ii 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, 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, 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, mi as VoiceCaption, hi as VoiceConversationView, _i as VoiceMiniController, vi as VoiceStage, yi as VoiceTranscriptDrawer, gi as VoiceWaveform, I as WAIT_FOR_SANDBOX_RUNNING, q as abortAssistantTurn, Ni 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, Pi as dispatchAssistantQuotaExhausted, Pn as docxXmlToText, ee as downloadAssistantArtifact, bi as downloadFile, pr as estimateTurnBodyBytes, D as executeSandboxGraphQL, xi as exportConversation, te as extendAssistantSandboxTTL, Li 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, ji as isMultimodalBodyRejection, Bi as isProdRuntime, w as isQuotaExhaustedError, Ce as isReapedSandboxConnectionError, qr as isRecentlyVerified, we as isRecoverable, Mi 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, si as nextModeIndex, Ot as normalizeLangTag, Fi 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, ki as useAssistantApiAccess, Ri as useAssistantAttachments, Vi as useAssistantHeartbeat, l as useAssistantI18nNamespace, Hi as useAssistantKeyboardShortcuts, x as useAssistantNavigate, r as useAssistantPageLabel, i as useAssistantProduct, a as useAssistantProductOrNull, Lr as useAssistantSpeech, o as useAssistantStorageFolders, Cr as useAssistantStore, u as useAssistantTr, Ai as useConversationTurns, ke as useSandboxAssistantTransport, e as useVoiceInput, Rr as useVoiceSession, Ii 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 };
58
+ import { AssistantConnectSourceProvider as ti, useAssistantConnectSource as ni } from "./shared/assistant/ui/composer/connectSource.js";
59
+ import { AssistantConnectSourceItem as ri } from "./shared/assistant/ui/composer/AssistantConnectSourceItem.js";
60
+ import { AssistantAttachmentButton as ii } from "./shared/assistant/ui/composer/AssistantAttachmentButton.js";
61
+ import { AssistantAttachmentChips as ai } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
62
+ import { AssistantLanguageSelector as oi, FOLLOW_APP_LOCALE as si } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
63
+ import { ASSISTANT_MODE_META as ci, AssistantModeSelector as li, nextModeIndex as ui } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
64
+ import { AssistantVoiceButton as di } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
65
+ import { AUTO_VOICE as fi, AssistantVoiceSelector as pi } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
66
+ import { AssistantVoiceOrb as mi } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
67
+ import { AssistantVoiceSessionButton as hi } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
68
+ import { CAPTION_SCROLL_ATTR as gi, VoiceCaption as _i } from "./shared/assistant/ui/voice/VoiceCaption.js";
69
+ import { VoiceConversationView as vi } from "./shared/assistant/ui/voice/VoiceConversationView.js";
70
+ import { VoiceWaveform as yi } from "./shared/assistant/ui/voice/VoiceWaveform.js";
71
+ import { VoiceMiniController as bi } from "./shared/assistant/ui/voice/VoiceMiniController.js";
72
+ import { VoiceStage as xi } from "./shared/assistant/ui/voice/VoiceStage.js";
73
+ import { VoiceTranscriptDrawer as Si } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
74
+ import { downloadFile as Ci, exportConversation as wi } from "./shared/assistant/exportConversation.js";
75
+ import { AssistantMoreMenu as Ti } from "./shared/assistant/ui/AssistantMoreMenu.js";
76
+ import { AssistantHeader as Ei } from "./shared/assistant/ui/AssistantHeader.js";
77
+ import { AssistantConversationList as Di } from "./shared/assistant/ui/AssistantConversationList.js";
78
+ import { AssistantEmptyState as Oi } from "./shared/assistant/ui/AssistantEmptyState.js";
79
+ import { AssistantMessageItem as ki } from "./shared/assistant/ui/AssistantMessageItem.js";
80
+ import { AssistantMessageList as Ai } from "./shared/assistant/ui/AssistantMessageList.js";
81
+ import { AssistantVoiceSession as ji } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
82
+ import { useAssistantApiAccess as Mi } from "./shared/assistant/useAssistantApiAccess.js";
83
+ import { useConversationTurns as Ni } from "./shared/assistant/useConversationTurns.js";
84
+ import { isMultimodalBodyRejection as Pi, isRecoverableAssistantError as Fi } from "./shared/assistant/transportErrors.js";
85
+ import { aiCreditsUpdatedEventName as Ii, dispatchAssistantQuotaExhausted as Li, notifyAiCreditsUpdated as Ri } from "./shared/assistant/aiCredits.js";
86
+ import { useWorkspaceWriteAccess as zi } from "./shared/assistant/useWorkspaceWriteAccess.js";
87
+ import { extractDocumentText as Bi } from "./shared/assistant/documentExtract.js";
88
+ import { useAssistantAttachments as Vi } from "./shared/assistant/useAssistantAttachments.js";
89
+ import { AssistantComposer as Hi } from "./shared/assistant/ui/composer/AssistantComposer.js";
90
+ import { isProdRuntime as Ui } from "./shared/assistant/env.js";
91
+ import { useAssistantHeartbeat as Wi } from "./shared/assistant/useAssistantHeartbeat.js";
92
+ import { useAssistantKeyboardShortcuts as Gi } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
93
+ import { AssistantApiCallsConsentDialog as Ki } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
94
+ import { AssistantChatArea as qi } from "./shared/assistant/ui/AssistantChatArea.js";
95
+ import { AIAssistantPanel as Ji } from "./shared/assistant/ui/AIAssistantPanel.js";
96
+ export { Ji as AIAssistantPanel, L as ASSISTANT_API_AUTH_STRATEGY, sn as ASSISTANT_LANGUAGES, ci as ASSISTANT_MODE_META, Kn as ATTACHMENT_ACCEPT, Hr as ATTACHMENT_SOURCES, fi as AUTO_VOICE, Ki as AssistantApiCallsConsentDialog, ii as AssistantAttachmentButton, ai as AssistantAttachmentChips, Jr as AssistantAutoSpeakToggle, qi as AssistantChatArea, Hi as AssistantComposer, ri as AssistantConnectSourceItem, ti as AssistantConnectSourceProvider, Di as AssistantConversationList, Oi as AssistantEmptyState, Ei as AssistantHeader, s as AssistantI18nProvider, Zr as AssistantLanguageMenu, oi as AssistantLanguageSelector, f as AssistantMarkdownImage, h as AssistantMarkdownRenderer, Yr as AssistantMessageAttachments, ki as AssistantMessageItem, Ai as AssistantMessageList, li as AssistantModeSelector, Ti as AssistantMoreMenu, g as AssistantNavigateProvider, Xr as AssistantPendingWriteCard, t as AssistantProductProvider, Qr as AssistantReplyLanguageSelector, _e as AssistantRuntimeManager, $r as AssistantSpeakButton, Ir as AssistantSpeechProvider, ei as AssistantSpokenTurnsNotice, Pr as AssistantToolActivity, di as AssistantVoiceButton, mi as AssistantVoiceOrb, pi as AssistantVoiceSelector, ji as AssistantVoiceSession, hi as AssistantVoiceSessionButton, qn as AttachmentRejectedError, En as BOILERPLATE_PAGE_SHARE, gi 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, si 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, 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, 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, _i as VoiceCaption, vi as VoiceConversationView, bi as VoiceMiniController, xi as VoiceStage, Si as VoiceTranscriptDrawer, yi as VoiceWaveform, I as WAIT_FOR_SANDBOX_RUNNING, q as abortAssistantTurn, Ii 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, Li as dispatchAssistantQuotaExhausted, Pn as docxXmlToText, ee as downloadAssistantArtifact, Ci as downloadFile, pr as estimateTurnBodyBytes, D as executeSandboxGraphQL, wi as exportConversation, te as extendAssistantSandboxTTL, Bi 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, Pi as isMultimodalBodyRejection, Ui as isProdRuntime, w as isQuotaExhaustedError, Ce as isReapedSandboxConnectionError, qr as isRecentlyVerified, we as isRecoverable, Fi 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, ui as nextModeIndex, Ot as normalizeLangTag, Ri 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, Mi as useAssistantApiAccess, Vi as useAssistantAttachments, ni as useAssistantConnectSource, Wi as useAssistantHeartbeat, l as useAssistantI18nNamespace, Gi as useAssistantKeyboardShortcuts, x as useAssistantNavigate, r as useAssistantPageLabel, i as useAssistantProduct, a as useAssistantProductOrNull, Lr as useAssistantSpeech, o as useAssistantStorageFolders, Cr as useAssistantStore, u as useAssistantTr, Ni as useConversationTurns, ke as useSandboxAssistantTransport, e as useVoiceInput, Rr as useVoiceSession, zi 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.910.5",
3
+ "version": "2026.910.6",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {