@burdenoff/fe-libs 2026.904.29 → 2026.905.2

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.
@@ -147,4 +147,21 @@ export declare function useAssistantStorageFolders(): {
147
147
  attachments: string;
148
148
  artifacts: string;
149
149
  };
150
+ /**
151
+ * The product's label for the page the user is on — LIVE, not frozen at mount.
152
+ *
153
+ * ★★ One implementation, two consumers. The header polled and the empty state
154
+ * did not: it was `useMemo(() => describeCurrentPage?.(), [describeCurrentPage])`,
155
+ * and `describeCurrentPage` is a stable module-level function, so that memo
156
+ * never re-ran. Open the panel on Crops, navigate to Livestock, and the header
157
+ * said "Context: Livestock" while the empty state four lines below still said
158
+ * "You're viewing Crops" — the same freeze the header was fixed for once
159
+ * already, surviving in the component next to it.
160
+ *
161
+ * ★ Not `useLocation()`. This is exported for a HOST app to mount, and a
162
+ * consumer outside a Router would get a thrown hook rather than a stale label.
163
+ * Polling is router-agnostic and catches pushState, which `popstate` alone
164
+ * misses entirely.
165
+ */
166
+ export declare function useAssistantPageLabel(active?: boolean): string | null;
150
167
  //# sourceMappingURL=product.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/product.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;;;OAMG;IACH,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtC;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1C;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,WAAW,CAAC;IACtC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,OAAO,EAC1B,QAAQ,CAAC,EAAE,OAAO,KACf,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,MAAM,WAAW,qBAAsB,SAAQ,4BAA4B;IACzE;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,6BAA8B,SAAQ,4BAA4B;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,OAAO,EACP,KAAK,EACL,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,QAAQ,GACT,EAAE,6BAA6B,2CAwB/B;AAED,iEAAiE;AACjE,wBAAgB,yBAAyB,IAAI,qBAAqB,GAAG,IAAI,CAExE;AAID;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,qBAAqB,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,mBAAmB,GAAG,SAAS,CAEjC;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAYA"}
1
+ {"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/product.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;;;OAMG;IACH,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtC;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1C;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,WAAW,CAAC;IACtC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,OAAO,EAC1B,QAAQ,CAAC,EAAE,OAAO,KACf,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,MAAM,WAAW,qBAAsB,SAAQ,4BAA4B;IACzE;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,6BAA8B,SAAQ,4BAA4B;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,OAAO,EACP,KAAK,EACL,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,QAAQ,GACT,EAAE,6BAA6B,2CAwB/B;AAED,iEAAiE;AACjE,wBAAgB,yBAAyB,IAAI,qBAAqB,GAAG,IAAI,CAExE;AAID;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,qBAAqB,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,mBAAmB,GAAG,SAAS,CAEjC;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,IAAI;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAYA;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,OAAc,GAAG,MAAM,GAAG,IAAI,CAqB3E"}
@@ -1,46 +1,46 @@
1
- import { createContext as e, useContext as t, useMemo as n } from "react";
2
- import { jsx as r } from "react/jsx-runtime";
1
+ import { createContext as e, useContext as t, useEffect as n, useMemo as r, useState as i } from "react";
2
+ import { jsx as a } from "react/jsx-runtime";
3
3
  //#region src/shared/assistant/product.tsx
4
- var i = e(null);
5
- function a({ product: e, modes: t, describeCurrentPage: a, gatherPageContext: o, buildPrompt: s, reportTokenUsage: c, storageFolders: l, children: u }) {
6
- let d = n(() => ({
4
+ var o = e(null);
5
+ function s({ product: e, modes: t, describeCurrentPage: n, gatherPageContext: i, buildPrompt: s, reportTokenUsage: c, storageFolders: l, children: u }) {
6
+ let d = r(() => ({
7
7
  product: e,
8
8
  modes: t,
9
- describeCurrentPage: a,
10
- gatherPageContext: o,
9
+ describeCurrentPage: n,
10
+ gatherPageContext: i,
11
11
  buildPrompt: s,
12
12
  reportTokenUsage: c,
13
13
  storageFolders: l
14
14
  }), [
15
15
  e,
16
16
  t,
17
- a,
18
- o,
17
+ n,
18
+ i,
19
19
  s,
20
20
  c,
21
21
  l
22
22
  ]);
23
- return /* @__PURE__ */ r(i.Provider, {
23
+ return /* @__PURE__ */ a(o.Provider, {
24
24
  value: d,
25
25
  children: u
26
26
  });
27
27
  }
28
- function o() {
29
- return t(i);
28
+ function c() {
29
+ return t(o);
30
30
  }
31
- var s = {
31
+ var l = {
32
32
  product: "",
33
33
  modes: []
34
34
  };
35
- function c() {
36
- return t(i) ?? s;
35
+ function u() {
36
+ return t(o) ?? l;
37
37
  }
38
- function l(e, t) {
38
+ function d(e, t) {
39
39
  return e.find((e) => e.id === t) ?? e[0];
40
40
  }
41
- function u() {
42
- let { product: e, storageFolders: t } = c();
43
- return n(() => {
41
+ function f() {
42
+ let { product: e, storageFolders: t } = u();
43
+ return r(() => {
44
44
  if (t) return t;
45
45
  let n = e ? `/${e}` : "";
46
46
  return {
@@ -49,5 +49,21 @@ function u() {
49
49
  };
50
50
  }, [e, t]);
51
51
  }
52
+ var p = 1e3;
53
+ function m(e = !0) {
54
+ let { describeCurrentPage: t } = u(), [r, a] = i(() => t?.() ?? null);
55
+ return n(() => {
56
+ if (!e) return;
57
+ let n = () => a((e) => {
58
+ let n = t?.() ?? null;
59
+ return n === e ? e : n;
60
+ });
61
+ n(), window.addEventListener("popstate", n);
62
+ let r = window.setInterval(n, p);
63
+ return () => {
64
+ window.removeEventListener("popstate", n), window.clearInterval(r);
65
+ };
66
+ }, [e, t]), r;
67
+ }
52
68
  //#endregion
53
- export { a as AssistantProductProvider, l as resolveModeConfig, c as useAssistantProduct, o as useAssistantProductOrNull, u as useAssistantStorageFolders };
69
+ export { s as AssistantProductProvider, d as resolveModeConfig, m as useAssistantPageLabel, u as useAssistantProduct, c as useAssistantProductOrNull, f as useAssistantStorageFolders };
@@ -1 +1 @@
1
- {"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAA+B,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAgBvE,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;CACpC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAgHtD,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;AAQvE,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;CACpC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA+FtD,CAAC"}
@@ -1,4 +1,4 @@
1
- import { useAssistantProduct as e } from "../product.js";
1
+ import { useAssistantPageLabel as e } from "../product.js";
2
2
  import { useAssistantTr as t } from "../i18n.js";
3
3
  import { useAssistantStore as n } from "../store.js";
4
4
  import { AssistantSpeechProvider as r } from "./AssistantSpeechProvider.js";
@@ -8,54 +8,43 @@ import { useFilesServiceWarmup as o } from "../../../storage/warmFilesService.js
8
8
  import { useAssistantHeartbeat as s } from "../useAssistantHeartbeat.js";
9
9
  import { useAssistantKeyboardShortcuts as c } from "../useAssistantKeyboardShortcuts.js";
10
10
  import { AssistantChatArea as l } from "./AssistantChatArea.js";
11
- import { useEffect as u, useRef as d, useState as f } from "react";
12
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
11
+ import { useRef as u } from "react";
12
+ import { jsx as d, jsxs as f } from "react/jsx-runtime";
13
13
  //#region src/shared/assistant/ui/AIAssistantPanel.tsx
14
- var h = 1e3, g = ({ onClose: g, visible: _, docked: v, onToggleDock: y, writeAccess: b }) => {
15
- let x = t(), { describeCurrentPage: S } = e(), C = d(null), { conversations: w, activeConversationId: T, conversationListOpen: E, toggleConversationList: D, createConversation: O } = n(), k = w.find((e) => e.id === T);
16
- s(k?.backendSessionId ?? null, k?.mode ?? null, _ ?? !0), o(_ ?? !0);
17
- let [A, j] = f(() => S?.() ?? null);
18
- return u(() => {
19
- if (_ === !1) return;
20
- let e = () => j((e) => {
21
- let t = S?.() ?? null;
22
- return t === e ? e : t;
23
- });
24
- e(), window.addEventListener("popstate", e);
25
- let t = window.setInterval(e, h);
26
- return () => {
27
- window.removeEventListener("popstate", e), window.clearInterval(t);
28
- };
29
- }, [_, S]), c({
30
- panelRef: C,
31
- onClose: g
32
- }), /* @__PURE__ */ p(r, {
33
- visible: _ ?? !0,
34
- children: /* @__PURE__ */ m("div", {
35
- ref: C,
14
+ var p = ({ onClose: p, visible: m, docked: h, onToggleDock: g, writeAccess: _ }) => {
15
+ let v = t(), y = u(null), { conversations: b, activeConversationId: x, conversationListOpen: S, toggleConversationList: C, createConversation: w } = n(), T = b.find((e) => e.id === x);
16
+ s(T?.backendSessionId ?? null, T?.mode ?? null, m ?? !0), o(m ?? !0);
17
+ let E = e(m !== !1);
18
+ return c({
19
+ panelRef: y,
20
+ onClose: p
21
+ }), /* @__PURE__ */ d(r, {
22
+ visible: m ?? !0,
23
+ children: /* @__PURE__ */ f("div", {
24
+ ref: y,
36
25
  className: "relative flex h-full w-full flex-col bg-bg-surface",
37
26
  role: "complementary",
38
- "aria-label": x("panel.ariaLabel", "AI Assistant"),
27
+ "aria-label": v("panel.ariaLabel", "AI Assistant"),
39
28
  "data-testid": "ai-assistant-panel",
40
29
  tabIndex: -1,
41
30
  children: [
42
- /* @__PURE__ */ p(i, {
43
- contextLabel: A,
44
- onNewConversation: () => O(),
45
- onOpenHistory: D,
46
- historyOpen: E,
47
- onClose: g,
48
- docked: v,
49
- onToggleDock: y
31
+ /* @__PURE__ */ d(i, {
32
+ contextLabel: E,
33
+ onNewConversation: () => w(),
34
+ onOpenHistory: C,
35
+ historyOpen: S,
36
+ onClose: p,
37
+ docked: h,
38
+ onToggleDock: g
50
39
  }),
51
- E && /* @__PURE__ */ p(a, {}),
52
- /* @__PURE__ */ p(l, {
53
- visible: _ ?? !0,
54
- writeAccess: b
40
+ S && /* @__PURE__ */ d(a, {}),
41
+ /* @__PURE__ */ d(l, {
42
+ visible: m ?? !0,
43
+ writeAccess: _
55
44
  })
56
45
  ]
57
46
  })
58
47
  });
59
48
  };
60
49
  //#endregion
61
- export { g as AIAssistantPanel };
50
+ export { p as AIAssistantPanel };
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantEmptyState.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantEmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9C,UAAU,KAAK;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,KAAK,CA2DzC,CAAC"}
1
+ {"version":3,"file":"AssistantEmptyState.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantEmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9C,UAAU,KAAK;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,KAAK,CAyDzC,CAAC"}
@@ -1,11 +1,10 @@
1
- import { resolveModeConfig as e, useAssistantProduct as t } from "../product.js";
2
- import { useAssistantTr as n } from "../i18n.js";
3
- import { useMemo as r } from "react";
1
+ import { resolveModeConfig as e, useAssistantPageLabel as t, useAssistantProduct as n } from "../product.js";
2
+ import { useAssistantTr as r } from "../i18n.js";
4
3
  import { Sparkles as i } from "lucide-react";
5
4
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
5
  //#region src/shared/assistant/ui/AssistantEmptyState.tsx
7
6
  var s = ({ mode: s, onSuggestionClick: c }) => {
8
- let l = n(), { modes: u, describeCurrentPage: d } = t(), f = e(u, s), p = r(() => d?.() ?? null, [d]), m = f?.suggestions.slice(0, 4) ?? [];
7
+ let l = r(), { modes: u } = n(), d = e(u, s), f = t(), p = d?.suggestions.slice(0, 4) ?? [];
9
8
  return /* @__PURE__ */ o("div", {
10
9
  className: "flex flex-1 flex-col items-center justify-center overflow-y-auto px-6 py-8 text-center",
11
10
  children: [
@@ -19,11 +18,11 @@ var s = ({ mode: s, onSuggestionClick: c }) => {
19
18
  }),
20
19
  /* @__PURE__ */ a("p", {
21
20
  className: "mt-2 max-w-[16rem] text-[13px] leading-relaxed text-text-muted",
22
- children: p ? l("empty.subtitle", "You're viewing {{page}}. Ask about it, or pick a suggestion below.", { page: p }) : l("empty.subtitleNoPage", "Ask me anything, or pick a suggestion below.")
21
+ children: f ? l("empty.subtitle", "You're viewing {{page}}. Ask about it, or pick a suggestion below.", { page: f }) : l("empty.subtitleNoPage", "Ask me anything, or pick a suggestion below.")
23
22
  }),
24
23
  /* @__PURE__ */ a("div", {
25
24
  className: "mt-6 flex flex-wrap items-center justify-center gap-2",
26
- children: m.map((e) => /* @__PURE__ */ a("button", {
25
+ children: p.map((e) => /* @__PURE__ */ a("button", {
27
26
  type: "button",
28
27
  onClick: () => c(e),
29
28
  className: "rounded-full border border-border-subtle bg-bg-surface px-3.5 py-2 text-[13px] leading-tight text-text-primary shadow-sm transition-all hover:border-action-primary-bg/40 hover:bg-bg-elevated hover:shadow-md",
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantHeader.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,UAAU,KAAK;IACb,qEAAqE;IACrE;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,CAwGrC,CAAC"}
1
+ {"version":3,"file":"AssistantHeader.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,UAAU,KAAK;IACb,qEAAqE;IACrE;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,KAAK,CAmHrC,CAAC"}
@@ -16,7 +16,7 @@ var d = ({ contextLabel: d, onNewConversation: f, onOpenHistory: p, historyOpen:
16
16
  className: "min-w-0 flex-1",
17
17
  children: [/* @__PURE__ */ l("span", {
18
18
  className: "block truncate text-[14px] font-semibold leading-tight text-text-primary",
19
- children: v("header.title", "AI Assistant")
19
+ children: v("header.title", "HealthyBowl AI")
20
20
  }), /* @__PURE__ */ u("span", {
21
21
  className: "block truncate text-[11px] leading-tight text-text-muted",
22
22
  children: [v("header.ready", "Ready"), d && /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l("span", {
@@ -27,65 +27,65 @@ import { toCaptionText as jt } from "./shared/assistant/voice/captionText.js";
27
27
  import { ASSISTANT_LANGUAGES as Mt, DEFAULT_SPEECH_RATE as Nt, findAssistantLanguage as Pt, resolveAssistantLanguage as Ft } from "./shared/assistant/voice/languages.js";
28
28
  import { replyFollowsInput as It, resolveLanguagePair as Lt } from "./shared/assistant/voice/languagePair.js";
29
29
  import { findPendingWrite as Rt, parseConfirmationRefusal as zt } from "./shared/assistant/pendingWrite.js";
30
- import { AssistantProductProvider as Bt, resolveModeConfig as Vt, useAssistantProduct as Ht, useAssistantProductOrNull as Ut, useAssistantStorageFolders as Wt } from "./shared/assistant/product.js";
31
- import { AssistantI18nProvider as Gt, assistantTranslationKey as Kt, useAssistantI18nNamespace as qt, useAssistantTr as Jt } from "./shared/assistant/i18n.js";
32
- import { SPOKEN_LABEL_LANGUAGES as Yt, speechLabelsFor as Xt } from "./shared/assistant/voice/speechLabels.js";
33
- import { detectScriptLocale as Zt, resolveSpeechLocale as Qt } from "./shared/assistant/voice/replyLanguage.js";
34
- import { IDLE_PLAYBACK as $t, isSpeakingMessage as en, requiresCancel as tn, speechPlaybackReducer as nn } from "./shared/assistant/voice/speechPlayback.js";
35
- import { MAX_INLINE_IMAGE_BASE64_BYTES as rn, MAX_REQUEST_BODY_BYTES as an } from "./shared/assistant/gatewayLimits.js";
36
- import { BOILERPLATE_PAGE_SHARE as on, MAX_BOILERPLATE_LINE_CHARS as sn, MAX_EXTRACTED_CHARS as cn, MAX_PDF_PAGES_SCANNED as ln, MIN_PAGE_TEXT_CHARS as un, MIN_TEXT_PAGE_SHARE as dn, columnLetterToIndex as fn, decodeXmlEntities as pn, docxXmlToText as mn, fitPdfPages as hn, formatPageRanges as gn, isMostlyImagePages as _n, joinSheets as vn, pageMarker as yn, parseSharedStrings as bn, parseWorkbookSheets as xn, pdfTextItemsToPage as Sn, sheetXmlToRows as Cn, summarisePageText as wn, truncatePagesForInline as Tn } from "./shared/assistant/documentText.js";
37
- import { ATTACHMENT_ACCEPT as En, AttachmentRejectedError as Dn, INLINE_IMAGE_MAX_DIM as On, INLINE_IMAGE_QUALITY as kn, MAX_ATTACHMENTS as An, MAX_FILE_BYTES as jn, MAX_INLINE_CHARS_PER_FILE as Mn, MAX_INLINE_CHARS_TOTAL as Nn, MAX_INLINE_IMAGE_BASE64_CHARS as Pn, MAX_INLINE_IMAGE_PARTS as Fn, MAX_INLINE_TURN_BODY_BYTES as In, MAX_TURN_BODY_BYTES as Ln, PROMPT_ENVELOPE_RESERVE_BYTES as Rn, TURN_BODY_HEADROOM_BYTES as zn, buildAttachmentPromptBlock as Bn, buildPromptParts as Vn, buildPromptWithAttachments as Hn, classifyAttachment as Un, countInlineImageCandidates as Wn, countInlinedImageParts as Gn, detectDocumentFormat as Kn, estimateTurnBodyBytes as qn, formatBytes as Jn, getAttachmentSendBlocker as Yn, getExtension as Xn, getSendableAttachments as Zn, hasAttachmentWorkInFlight as Qn, parseDataUrl as $n, toMessageAttachment as er, truncateForInline as tr, validateFile as nr } from "./shared/assistant/attachments.js";
38
- import { useAssistantStore as rr } from "./shared/assistant/store.js";
39
- import { isTurnInFlight as ir } from "./shared/assistant/turnState.js";
40
- import { AssistantToolActivity as ar, parseToolActivity as or } from "./shared/assistant/ui/AssistantToolActivity.js";
41
- import { AssistantSpeechProvider as sr, useAssistantSpeech as cr } from "./shared/assistant/ui/AssistantSpeechProvider.js";
42
- import { useVoiceSession as lr } from "./shared/assistant/ui/useVoiceSession.js";
43
- import { copyToClipboard as ur } from "./shared/assistant/clipboard.js";
44
- import { getActorId as dr, getOrganizationId as fr, getWorkspaceId as pr } from "./shared/assistant/context.js";
45
- import { ATTACHMENT_SOURCES as mr, availableAttachmentSources as hr, deviceHasCamera as gr } from "./shared/assistant/attachmentSources.js";
46
- import { SANDBOX_READY_TTL_MS as _r, createReadinessTracker as vr, isRecentlyVerified as yr } from "./shared/assistant/sandboxReadiness.js";
47
- import { AssistantAutoSpeakToggle as br } from "./shared/assistant/ui/AssistantAutoSpeakToggle.js";
48
- import { AssistantMarkdownImage as xr, imageHostLabel as Sr, isRemoteImageSrc as Cr } from "./shared/assistant/ui/AssistantMarkdownImage.js";
49
- import { AssistantMarkdownRenderer as wr, assistantUrlTransform as Tr } from "./shared/assistant/ui/AssistantMarkdownRenderer.js";
50
- import { AssistantMessageAttachments as Er } from "./shared/assistant/ui/AssistantMessageAttachments.js";
51
- import { AssistantPendingWriteCard as Dr } from "./shared/assistant/ui/AssistantPendingWriteCard.js";
52
- import { AssistantReplyLanguageSelector as Or } from "./shared/assistant/ui/AssistantReplyLanguageSelector.js";
53
- import { AssistantSpeakButton as kr } from "./shared/assistant/ui/AssistantSpeakButton.js";
54
- import { AssistantSpokenTurnsNotice as Ar } from "./shared/assistant/ui/AssistantSpokenTurnsNotice.js";
55
- import { AssistantAttachmentButton as jr } from "./shared/assistant/ui/composer/AssistantAttachmentButton.js";
56
- import { AssistantAttachmentChips as Mr } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
57
- import { AssistantLanguageSelector as Nr, FOLLOW_APP_LOCALE as Pr } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
58
- import { ASSISTANT_MODE_META as Fr, AssistantModeSelector as Ir, nextModeIndex as Lr } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
59
- import { AssistantVoiceButton as Rr } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
60
- import { AUTO_VOICE as zr, AssistantVoiceSelector as Br } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
61
- import { AssistantVoiceOrb as Vr } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
62
- import { AssistantVoiceSessionButton as Hr } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
63
- import { VoiceCaption as Ur } from "./shared/assistant/ui/voice/VoiceCaption.js";
64
- import { VoiceConversationView as Wr } from "./shared/assistant/ui/voice/VoiceConversationView.js";
65
- import { VoiceWaveform as Gr } from "./shared/assistant/ui/voice/VoiceWaveform.js";
66
- import { VoiceMiniController as Kr } from "./shared/assistant/ui/voice/VoiceMiniController.js";
67
- import { VoiceStage as qr } from "./shared/assistant/ui/voice/VoiceStage.js";
68
- import { VoiceTranscriptDrawer as Jr } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
69
- import { downloadFile as Yr, exportConversation as Xr } from "./shared/assistant/exportConversation.js";
70
- import { AssistantMoreMenu as Zr } from "./shared/assistant/ui/AssistantMoreMenu.js";
71
- import { AssistantHeader as Qr } from "./shared/assistant/ui/AssistantHeader.js";
72
- import { AssistantConversationList as $r } from "./shared/assistant/ui/AssistantConversationList.js";
73
- import { AssistantEmptyState as ei } from "./shared/assistant/ui/AssistantEmptyState.js";
74
- import { AssistantMessageItem as ti } from "./shared/assistant/ui/AssistantMessageItem.js";
75
- import { AssistantMessageList as ni } from "./shared/assistant/ui/AssistantMessageList.js";
76
- import { AssistantVoiceSession as ri } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
77
- import { useAssistantApiAccess as ii } from "./shared/assistant/useAssistantApiAccess.js";
78
- import { useConversationTurns as ai } from "./shared/assistant/useConversationTurns.js";
79
- import { isMultimodalBodyRejection as oi, isRecoverableAssistantError as si } from "./shared/assistant/transportErrors.js";
80
- import { aiCreditsUpdatedEventName as ci, dispatchAssistantQuotaExhausted as li, notifyAiCreditsUpdated as ui } from "./shared/assistant/aiCredits.js";
81
- import { useWorkspaceWriteAccess as di } from "./shared/assistant/useWorkspaceWriteAccess.js";
82
- import { extractDocumentText as fi } from "./shared/assistant/documentExtract.js";
83
- import { useAssistantAttachments as pi } from "./shared/assistant/useAssistantAttachments.js";
84
- import { AssistantComposer as mi } from "./shared/assistant/ui/composer/AssistantComposer.js";
85
- import { isProdRuntime as hi } from "./shared/assistant/env.js";
86
- import { useAssistantHeartbeat as gi } from "./shared/assistant/useAssistantHeartbeat.js";
87
- import { useAssistantKeyboardShortcuts as _i } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
88
- import { AssistantApiCallsConsentDialog as vi } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
89
- import { AssistantChatArea as yi } from "./shared/assistant/ui/AssistantChatArea.js";
90
- import { AIAssistantPanel as bi } from "./shared/assistant/ui/AIAssistantPanel.js";
91
- export { bi as AIAssistantPanel, h as ASSISTANT_API_AUTH_STRATEGY, Mt as ASSISTANT_LANGUAGES, Fr as ASSISTANT_MODE_META, En as ATTACHMENT_ACCEPT, mr as ATTACHMENT_SOURCES, zr as AUTO_VOICE, vi as AssistantApiCallsConsentDialog, jr as AssistantAttachmentButton, Mr as AssistantAttachmentChips, br as AssistantAutoSpeakToggle, yi as AssistantChatArea, mi as AssistantComposer, $r as AssistantConversationList, ei as AssistantEmptyState, Qr as AssistantHeader, Gt as AssistantI18nProvider, Nr as AssistantLanguageSelector, xr as AssistantMarkdownImage, wr as AssistantMarkdownRenderer, Er as AssistantMessageAttachments, ti as AssistantMessageItem, ni as AssistantMessageList, Ir as AssistantModeSelector, Zr as AssistantMoreMenu, Dr as AssistantPendingWriteCard, Bt as AssistantProductProvider, Or as AssistantReplyLanguageSelector, G as AssistantRuntimeManager, kr as AssistantSpeakButton, sr as AssistantSpeechProvider, Ar as AssistantSpokenTurnsNotice, ar as AssistantToolActivity, Rr as AssistantVoiceButton, Vr as AssistantVoiceOrb, Br as AssistantVoiceSelector, ri as AssistantVoiceSession, Hr as AssistantVoiceSessionButton, Dn as AttachmentRejectedError, on as BOILERPLATE_PAGE_SHARE, o as CHECK_AI_CREDITS, s as CREATE_SANDBOX, pt as DEFAULT_SPEAKABLE_LABELS, Nt as DEFAULT_SPEECH_RATE, Be as ENDPOINT_GRACE_MS, c as EXTEND_SANDBOX_TTL, Pr as FOLLOW_APP_LOCALE, l as GET_ACTIVE_SANDBOXES, u as GET_SANDBOX, ge as HOSTED_TTS_MAX_CHARS, fe as HOSTED_TTS_TIER, pe as HOSTED_VOICES, $t as IDLE_PLAYBACK, Ve as INITIAL_SESSION, On as INLINE_IMAGE_MAX_DIM, kn as INLINE_IMAGE_QUALITY, He as INTERRUPT_MAX_MS, Ue as INTERRUPT_MIN_MS, An as MAX_ATTACHMENTS, sn as MAX_BOILERPLATE_LINE_CHARS, cn as MAX_EXTRACTED_CHARS, jn as MAX_FILE_BYTES, Mn as MAX_INLINE_CHARS_PER_FILE, Nn as MAX_INLINE_CHARS_TOTAL, rn as MAX_INLINE_IMAGE_BASE64_BYTES, Pn as MAX_INLINE_IMAGE_BASE64_CHARS, Fn as MAX_INLINE_IMAGE_PARTS, In as MAX_INLINE_TURN_BODY_BYTES, ln as MAX_PDF_PAGES_SCANNED, an as MAX_REQUEST_BODY_BYTES, mt as MAX_SPEAKABLE_CHARS, ht as MAX_SPOKEN_TABLE_ROWS, Ln as MAX_TURN_BODY_BYTES, un as MIN_PAGE_TEXT_CHARS, dn as MIN_TEXT_PAGE_SHARE, Tt as POLL_FAST_MS, Et as POLL_FAST_UNTIL_MS, Dt as POLL_SLOW_MS, Ot as POLL_STEADY_MS, kt as POLL_STEADY_UNTIL_MS, Ct as PREVIEW_LANGUAGES, Rn as PROMPT_ENVELOPE_RESERVE_BYTES, d as PROXY_SANDBOX_REQUEST, f as REPORT_AI_TOKEN_USAGE, _r as SANDBOX_READY_TTL_MS, We as SILENCE_SUBMIT_MS, _e as SPEAKING_RATE_MAX, ve as SPEAKING_RATE_MAX_STREAMING, ye as SPEAKING_RATE_MAX_SYNC, be as SPEAKING_RATE_MIN, gt as SPEECH_CHUNK_CHARS, _t as SPEECH_CHUNK_CJK_CHARS, Qe as SPEECH_LANG, Yt as SPOKEN_LABEL_LANGUAGES, p as STOP_ASSISTANT_SANDBOX, zn as TURN_BODY_HEADROOM_BYTES, $e as VOICE_LIST_TIMEOUT_MS, Ur as VoiceCaption, Wr as VoiceConversationView, Kr as VoiceMiniController, qr as VoiceStage, Jr as VoiceTranscriptDrawer, Gr as VoiceWaveform, m as WAIT_FOR_SANDBOX_RUNNING, ci as aiCreditsUpdatedEventName, Kt as assistantTranslationKey, Tr as assistantUrlTransform, hr as availableAttachmentSources, xe as base64ToBytes, de as browserSpeechEngine, T as buildAssistantSandboxEnv, Bn as buildAttachmentPromptBlock, ut as buildContinuedFromVoiceNote, K as buildProgress, Vn as buildPromptParts, E as buildPromptRequestBody, Hn as buildPromptWithAttachments, Se as buildRequest, i as buildSandboxContextInput, dt as buildVoiceTranscriptMarkdown, ie as chatTurns, D as checkAssistantAiCredits, vt as chunkForSpeech, Un as classifyAttachment, Ce as classifyHttpFailure, t as classifyQuotaError, fn as columnLetterToIndex, ke as configureSpeechEngine, yt as containsCjk, ur as copyToClipboard, Wn as countInlineImageCandidates, Gn as countInlinedImageParts, O as createAssistantSandbox, k as createAssistantSession, De as createHostedTtsEngine, vr as createReadinessTracker, Oe as createRoutingSpeechEngine, ne as createSandboxAssistantTransport, Ae as createSpeechEngines, we as decodeAudioResponse, pn as decodeXmlEntities, Kn as detectDocumentFormat, Zt as detectScriptLocale, gr as deviceHasCamera, li as dispatchAssistantQuotaExhausted, mn as docxXmlToText, A as downloadAssistantArtifact, Yr as downloadFile, qn as estimateTurnBodyBytes, a as executeSandboxGraphQL, Xr as exportConversation, j as extendAssistantSandboxTTL, fi as extractDocumentText, Pt as findAssistantLanguage, M as findExistingSandbox, Rt as findPendingWrite, hn as fitPdfPages, Jn as formatBytes, gn as formatPageRanges, dr as getActorId, N as getAssistantArtifacts, q as getAssistantMedia, P as getAssistantMessages, F as getAssistantSession, I as getAssistantStreamAccess, J as getAssistantText, Yn as getAttachmentSendBlocker, x as getCapability, Xn as getExtension, g as getImageForMode, _ as getImageTagForMode, fr as getOrganizationId, Y as getRawMessageCreatedAt, v as getResourcesForMode, y as getSandboxImageRegistry, Zn as getSendableAttachments, je as getSpeechEngine, X as getToolProgress, pr as getWorkspaceId, ae as groupBySession, oe as groupConsecutiveBySession, Qn as hasAttachmentWorkInFlight, me as hostedLocaleFor, he as hostedSupportsLanguage, Sr as imageHostLabel, Ge as isCapturing, Ke as isEcho, _n as isMostlyImagePages, oi as isMultimodalBodyRejection, hi as isProdRuntime, n as isQuotaExhaustedError, Z as isReapedSandboxConnectionError, yr as isRecentlyVerified, Q as isRecoverable, si as isRecoverableAssistantError, Cr as isRemoteImageSrc, en as isSpeakingMessage, et as isSpeechBlocked, qe as isSubmittable, ir as isTurnInFlight, S as isUnknownFieldError, se as isVoiceTurn, vn as joinSheets, tt as languageDisplayName, $ as mapSessionToHistory, C as markSupported, w as markUnsupported, ee as mergeMessagesById, Pe as micIsInterrupt, L as modeRequiresConfirmWrites, Lr as nextModeIndex, nt as normalizeLangTag, ui as notifyAiCreditsUpdated, Je as orbMode, yn as pageMarker, zt as parseConfirmationRefusal, $n as parseDataUrl, bn as parseSharedStrings, or as parseToolActivity, xn as parseWorkbookSheets, Sn as pdfTextItemsToPage, Ye as planReplyConsumption, At as pollDelayMs, rt as primaryLanguageSubtag, r as quotaExhaustedEventName, Me as readSpeechEngineConfig, It as replyFollowsInput, R as reportAssistantAiTokenUsage, tn as requiresCancel, Ne as resetSpeechEngine, Ft as resolveAssistantLanguage, Lt as resolveLanguagePair, Vt as resolveModeConfig, b as resolveSandboxAssistantMode, Qt as resolveSpeechLocale, te as sanitize, z as selectExistingAssistantSandbox, it as selectVoiceForLocale, B as sendAssistantPromptAsync, V as sendHeartbeat, Cn as sheetXmlToRows, Te as shouldDisableEngine, Fe as showsAssistantCaption, Ie as showsUserCaption, bt as speakableEmail, at as speechGate, Xt as speechLabelsFor, ot as speechLangForLocale, nn as speechPlaybackReducer, Ee as splitForVendor, xt as splitTableRow, Xe as spokenSoFar, H as stopReapedAssistantSandbox, wn as summarisePageText, jt as toCaptionText, er as toMessageAttachment, St as toSpeakableText, tr as truncateForInline, Tn as truncatePagesForInline, ii as useAssistantApiAccess, pi as useAssistantAttachments, gi as useAssistantHeartbeat, qt as useAssistantI18nNamespace, _i as useAssistantKeyboardShortcuts, Ht as useAssistantProduct, Ut as useAssistantProductOrNull, cr as useAssistantSpeech, Wt as useAssistantStorageFolders, rr as useAssistantStore, Jt as useAssistantTr, ai as useConversationTurns, re as useSandboxAssistantTransport, e as useVoiceInput, lr as useVoiceSession, di as useWorkspaceWriteAccess, nr as validateFile, st as voiceAvailability, ce as voiceMarker, wt as voicePreviewText, ct as voiceQualityRank, le as voiceSessionIdOf, Ze as voiceSessionReducer, Le as voiceStageState, ft as voiceTranscriptFilename, ue as voiceTurnsOnly, lt as voicesForLocale, U as waitForAssistantServiceReady, W as waitForSandboxRunning, Re as waveformIsActive, ze as waveformIsSettled };
30
+ import { AssistantProductProvider as Bt, resolveModeConfig as Vt, useAssistantPageLabel as Ht, useAssistantProduct as Ut, useAssistantProductOrNull as Wt, useAssistantStorageFolders as Gt } from "./shared/assistant/product.js";
31
+ import { AssistantI18nProvider as Kt, assistantTranslationKey as qt, useAssistantI18nNamespace as Jt, useAssistantTr as Yt } from "./shared/assistant/i18n.js";
32
+ import { SPOKEN_LABEL_LANGUAGES as Xt, speechLabelsFor as Zt } from "./shared/assistant/voice/speechLabels.js";
33
+ import { detectScriptLocale as Qt, resolveSpeechLocale as $t } from "./shared/assistant/voice/replyLanguage.js";
34
+ import { IDLE_PLAYBACK as en, isSpeakingMessage as tn, requiresCancel as nn, speechPlaybackReducer as rn } from "./shared/assistant/voice/speechPlayback.js";
35
+ import { MAX_INLINE_IMAGE_BASE64_BYTES as an, MAX_REQUEST_BODY_BYTES as on } from "./shared/assistant/gatewayLimits.js";
36
+ import { BOILERPLATE_PAGE_SHARE as sn, MAX_BOILERPLATE_LINE_CHARS as cn, MAX_EXTRACTED_CHARS as ln, MAX_PDF_PAGES_SCANNED as un, MIN_PAGE_TEXT_CHARS as dn, MIN_TEXT_PAGE_SHARE as fn, columnLetterToIndex as pn, decodeXmlEntities as mn, docxXmlToText as hn, fitPdfPages as gn, formatPageRanges as _n, isMostlyImagePages as vn, joinSheets as yn, pageMarker as bn, parseSharedStrings as xn, parseWorkbookSheets as Sn, pdfTextItemsToPage as Cn, sheetXmlToRows as wn, summarisePageText as Tn, truncatePagesForInline as En } from "./shared/assistant/documentText.js";
37
+ import { ATTACHMENT_ACCEPT as Dn, AttachmentRejectedError as On, INLINE_IMAGE_MAX_DIM as kn, INLINE_IMAGE_QUALITY as An, MAX_ATTACHMENTS as jn, MAX_FILE_BYTES as Mn, MAX_INLINE_CHARS_PER_FILE as Nn, MAX_INLINE_CHARS_TOTAL as Pn, MAX_INLINE_IMAGE_BASE64_CHARS as Fn, MAX_INLINE_IMAGE_PARTS as In, MAX_INLINE_TURN_BODY_BYTES as Ln, MAX_TURN_BODY_BYTES as Rn, PROMPT_ENVELOPE_RESERVE_BYTES as zn, TURN_BODY_HEADROOM_BYTES as Bn, buildAttachmentPromptBlock as Vn, buildPromptParts as Hn, buildPromptWithAttachments as Un, classifyAttachment as Wn, countInlineImageCandidates as Gn, countInlinedImageParts as Kn, detectDocumentFormat as qn, estimateTurnBodyBytes as Jn, formatBytes as Yn, getAttachmentSendBlocker as Xn, getExtension as Zn, getSendableAttachments as Qn, hasAttachmentWorkInFlight as $n, parseDataUrl as er, toMessageAttachment as tr, truncateForInline as nr, validateFile as rr } from "./shared/assistant/attachments.js";
38
+ import { useAssistantStore as ir } from "./shared/assistant/store.js";
39
+ import { isTurnInFlight as ar } from "./shared/assistant/turnState.js";
40
+ import { AssistantToolActivity as or, parseToolActivity as sr } from "./shared/assistant/ui/AssistantToolActivity.js";
41
+ import { AssistantSpeechProvider as cr, useAssistantSpeech as lr } from "./shared/assistant/ui/AssistantSpeechProvider.js";
42
+ import { useVoiceSession as ur } from "./shared/assistant/ui/useVoiceSession.js";
43
+ import { copyToClipboard as dr } from "./shared/assistant/clipboard.js";
44
+ import { getActorId as fr, getOrganizationId as pr, getWorkspaceId as mr } from "./shared/assistant/context.js";
45
+ import { ATTACHMENT_SOURCES as hr, availableAttachmentSources as gr, deviceHasCamera as _r } from "./shared/assistant/attachmentSources.js";
46
+ import { SANDBOX_READY_TTL_MS as vr, createReadinessTracker as yr, isRecentlyVerified as br } from "./shared/assistant/sandboxReadiness.js";
47
+ import { AssistantAutoSpeakToggle as xr } from "./shared/assistant/ui/AssistantAutoSpeakToggle.js";
48
+ import { AssistantMarkdownImage as Sr, imageHostLabel as Cr, isRemoteImageSrc as wr } from "./shared/assistant/ui/AssistantMarkdownImage.js";
49
+ import { AssistantMarkdownRenderer as Tr, assistantUrlTransform as Er } from "./shared/assistant/ui/AssistantMarkdownRenderer.js";
50
+ import { AssistantMessageAttachments as Dr } from "./shared/assistant/ui/AssistantMessageAttachments.js";
51
+ import { AssistantPendingWriteCard as Or } from "./shared/assistant/ui/AssistantPendingWriteCard.js";
52
+ import { AssistantReplyLanguageSelector as kr } from "./shared/assistant/ui/AssistantReplyLanguageSelector.js";
53
+ import { AssistantSpeakButton as Ar } from "./shared/assistant/ui/AssistantSpeakButton.js";
54
+ import { AssistantSpokenTurnsNotice as jr } from "./shared/assistant/ui/AssistantSpokenTurnsNotice.js";
55
+ import { AssistantAttachmentButton as Mr } from "./shared/assistant/ui/composer/AssistantAttachmentButton.js";
56
+ import { AssistantAttachmentChips as Nr } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
57
+ import { AssistantLanguageSelector as Pr, FOLLOW_APP_LOCALE as Fr } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
58
+ import { ASSISTANT_MODE_META as Ir, AssistantModeSelector as Lr, nextModeIndex as Rr } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
59
+ import { AssistantVoiceButton as zr } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
60
+ import { AUTO_VOICE as Br, AssistantVoiceSelector as Vr } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
61
+ import { AssistantVoiceOrb as Hr } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
62
+ import { AssistantVoiceSessionButton as Ur } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
63
+ import { VoiceCaption as Wr } from "./shared/assistant/ui/voice/VoiceCaption.js";
64
+ import { VoiceConversationView as Gr } from "./shared/assistant/ui/voice/VoiceConversationView.js";
65
+ import { VoiceWaveform as Kr } from "./shared/assistant/ui/voice/VoiceWaveform.js";
66
+ import { VoiceMiniController as qr } from "./shared/assistant/ui/voice/VoiceMiniController.js";
67
+ import { VoiceStage as Jr } from "./shared/assistant/ui/voice/VoiceStage.js";
68
+ import { VoiceTranscriptDrawer as Yr } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
69
+ import { downloadFile as Xr, exportConversation as Zr } from "./shared/assistant/exportConversation.js";
70
+ import { AssistantMoreMenu as Qr } from "./shared/assistant/ui/AssistantMoreMenu.js";
71
+ import { AssistantHeader as $r } from "./shared/assistant/ui/AssistantHeader.js";
72
+ import { AssistantConversationList as ei } from "./shared/assistant/ui/AssistantConversationList.js";
73
+ import { AssistantEmptyState as ti } from "./shared/assistant/ui/AssistantEmptyState.js";
74
+ import { AssistantMessageItem as ni } from "./shared/assistant/ui/AssistantMessageItem.js";
75
+ import { AssistantMessageList as ri } from "./shared/assistant/ui/AssistantMessageList.js";
76
+ import { AssistantVoiceSession as ii } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
77
+ import { useAssistantApiAccess as ai } from "./shared/assistant/useAssistantApiAccess.js";
78
+ import { useConversationTurns as oi } from "./shared/assistant/useConversationTurns.js";
79
+ import { isMultimodalBodyRejection as si, isRecoverableAssistantError as ci } from "./shared/assistant/transportErrors.js";
80
+ import { aiCreditsUpdatedEventName as li, dispatchAssistantQuotaExhausted as ui, notifyAiCreditsUpdated as di } from "./shared/assistant/aiCredits.js";
81
+ import { useWorkspaceWriteAccess as fi } from "./shared/assistant/useWorkspaceWriteAccess.js";
82
+ import { extractDocumentText as pi } from "./shared/assistant/documentExtract.js";
83
+ import { useAssistantAttachments as mi } from "./shared/assistant/useAssistantAttachments.js";
84
+ import { AssistantComposer as hi } from "./shared/assistant/ui/composer/AssistantComposer.js";
85
+ import { isProdRuntime as gi } from "./shared/assistant/env.js";
86
+ import { useAssistantHeartbeat as _i } from "./shared/assistant/useAssistantHeartbeat.js";
87
+ import { useAssistantKeyboardShortcuts as vi } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
88
+ import { AssistantApiCallsConsentDialog as yi } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
89
+ import { AssistantChatArea as bi } from "./shared/assistant/ui/AssistantChatArea.js";
90
+ import { AIAssistantPanel as xi } from "./shared/assistant/ui/AIAssistantPanel.js";
91
+ export { xi as AIAssistantPanel, h as ASSISTANT_API_AUTH_STRATEGY, Mt as ASSISTANT_LANGUAGES, Ir as ASSISTANT_MODE_META, Dn as ATTACHMENT_ACCEPT, hr as ATTACHMENT_SOURCES, Br as AUTO_VOICE, yi as AssistantApiCallsConsentDialog, Mr as AssistantAttachmentButton, Nr as AssistantAttachmentChips, xr as AssistantAutoSpeakToggle, bi as AssistantChatArea, hi as AssistantComposer, ei as AssistantConversationList, ti as AssistantEmptyState, $r as AssistantHeader, Kt as AssistantI18nProvider, Pr as AssistantLanguageSelector, Sr as AssistantMarkdownImage, Tr as AssistantMarkdownRenderer, Dr as AssistantMessageAttachments, ni as AssistantMessageItem, ri as AssistantMessageList, Lr as AssistantModeSelector, Qr as AssistantMoreMenu, Or as AssistantPendingWriteCard, Bt as AssistantProductProvider, kr as AssistantReplyLanguageSelector, G as AssistantRuntimeManager, Ar as AssistantSpeakButton, cr as AssistantSpeechProvider, jr as AssistantSpokenTurnsNotice, or as AssistantToolActivity, zr as AssistantVoiceButton, Hr as AssistantVoiceOrb, Vr as AssistantVoiceSelector, ii as AssistantVoiceSession, Ur as AssistantVoiceSessionButton, On as AttachmentRejectedError, sn as BOILERPLATE_PAGE_SHARE, o as CHECK_AI_CREDITS, s as CREATE_SANDBOX, pt as DEFAULT_SPEAKABLE_LABELS, Nt as DEFAULT_SPEECH_RATE, Be as ENDPOINT_GRACE_MS, c as EXTEND_SANDBOX_TTL, Fr as FOLLOW_APP_LOCALE, l as GET_ACTIVE_SANDBOXES, u as GET_SANDBOX, ge as HOSTED_TTS_MAX_CHARS, fe as HOSTED_TTS_TIER, pe as HOSTED_VOICES, en as IDLE_PLAYBACK, Ve as INITIAL_SESSION, kn as INLINE_IMAGE_MAX_DIM, An as INLINE_IMAGE_QUALITY, He as INTERRUPT_MAX_MS, Ue as INTERRUPT_MIN_MS, jn as MAX_ATTACHMENTS, cn as MAX_BOILERPLATE_LINE_CHARS, ln as MAX_EXTRACTED_CHARS, Mn as MAX_FILE_BYTES, Nn as MAX_INLINE_CHARS_PER_FILE, Pn as MAX_INLINE_CHARS_TOTAL, an as MAX_INLINE_IMAGE_BASE64_BYTES, Fn as MAX_INLINE_IMAGE_BASE64_CHARS, In as MAX_INLINE_IMAGE_PARTS, Ln as MAX_INLINE_TURN_BODY_BYTES, un as MAX_PDF_PAGES_SCANNED, on as MAX_REQUEST_BODY_BYTES, mt as MAX_SPEAKABLE_CHARS, ht as MAX_SPOKEN_TABLE_ROWS, Rn as MAX_TURN_BODY_BYTES, dn as MIN_PAGE_TEXT_CHARS, fn as MIN_TEXT_PAGE_SHARE, Tt as POLL_FAST_MS, Et as POLL_FAST_UNTIL_MS, Dt as POLL_SLOW_MS, Ot as POLL_STEADY_MS, kt as POLL_STEADY_UNTIL_MS, Ct as PREVIEW_LANGUAGES, zn as PROMPT_ENVELOPE_RESERVE_BYTES, d as PROXY_SANDBOX_REQUEST, f as REPORT_AI_TOKEN_USAGE, vr as SANDBOX_READY_TTL_MS, We as SILENCE_SUBMIT_MS, _e as SPEAKING_RATE_MAX, ve as SPEAKING_RATE_MAX_STREAMING, ye as SPEAKING_RATE_MAX_SYNC, be as SPEAKING_RATE_MIN, gt as SPEECH_CHUNK_CHARS, _t as SPEECH_CHUNK_CJK_CHARS, Qe as SPEECH_LANG, Xt as SPOKEN_LABEL_LANGUAGES, p as STOP_ASSISTANT_SANDBOX, Bn as TURN_BODY_HEADROOM_BYTES, $e as VOICE_LIST_TIMEOUT_MS, Wr as VoiceCaption, Gr as VoiceConversationView, qr as VoiceMiniController, Jr as VoiceStage, Yr as VoiceTranscriptDrawer, Kr as VoiceWaveform, m as WAIT_FOR_SANDBOX_RUNNING, li as aiCreditsUpdatedEventName, qt as assistantTranslationKey, Er as assistantUrlTransform, gr as availableAttachmentSources, xe as base64ToBytes, de as browserSpeechEngine, T as buildAssistantSandboxEnv, Vn as buildAttachmentPromptBlock, ut as buildContinuedFromVoiceNote, K as buildProgress, Hn as buildPromptParts, E as buildPromptRequestBody, Un as buildPromptWithAttachments, Se as buildRequest, i as buildSandboxContextInput, dt as buildVoiceTranscriptMarkdown, ie as chatTurns, D as checkAssistantAiCredits, vt as chunkForSpeech, Wn as classifyAttachment, Ce as classifyHttpFailure, t as classifyQuotaError, pn as columnLetterToIndex, ke as configureSpeechEngine, yt as containsCjk, dr as copyToClipboard, Gn as countInlineImageCandidates, Kn as countInlinedImageParts, O as createAssistantSandbox, k as createAssistantSession, De as createHostedTtsEngine, yr as createReadinessTracker, Oe as createRoutingSpeechEngine, ne as createSandboxAssistantTransport, Ae as createSpeechEngines, we as decodeAudioResponse, mn as decodeXmlEntities, qn as detectDocumentFormat, Qt as detectScriptLocale, _r as deviceHasCamera, ui as dispatchAssistantQuotaExhausted, hn as docxXmlToText, A as downloadAssistantArtifact, Xr as downloadFile, Jn as estimateTurnBodyBytes, a as executeSandboxGraphQL, Zr as exportConversation, j as extendAssistantSandboxTTL, pi as extractDocumentText, Pt as findAssistantLanguage, M as findExistingSandbox, Rt as findPendingWrite, gn as fitPdfPages, Yn as formatBytes, _n as formatPageRanges, fr as getActorId, N as getAssistantArtifacts, q as getAssistantMedia, P as getAssistantMessages, F as getAssistantSession, I as getAssistantStreamAccess, J as getAssistantText, Xn as getAttachmentSendBlocker, x as getCapability, Zn as getExtension, g as getImageForMode, _ as getImageTagForMode, pr as getOrganizationId, Y as getRawMessageCreatedAt, v as getResourcesForMode, y as getSandboxImageRegistry, Qn as getSendableAttachments, je as getSpeechEngine, X as getToolProgress, mr as getWorkspaceId, ae as groupBySession, oe as groupConsecutiveBySession, $n as hasAttachmentWorkInFlight, me as hostedLocaleFor, he as hostedSupportsLanguage, Cr as imageHostLabel, Ge as isCapturing, Ke as isEcho, vn as isMostlyImagePages, si as isMultimodalBodyRejection, gi as isProdRuntime, n as isQuotaExhaustedError, Z as isReapedSandboxConnectionError, br as isRecentlyVerified, Q as isRecoverable, ci as isRecoverableAssistantError, wr as isRemoteImageSrc, tn as isSpeakingMessage, et as isSpeechBlocked, qe as isSubmittable, ar as isTurnInFlight, S as isUnknownFieldError, se as isVoiceTurn, yn as joinSheets, tt as languageDisplayName, $ as mapSessionToHistory, C as markSupported, w as markUnsupported, ee as mergeMessagesById, Pe as micIsInterrupt, L as modeRequiresConfirmWrites, Rr as nextModeIndex, nt as normalizeLangTag, di as notifyAiCreditsUpdated, Je as orbMode, bn as pageMarker, zt as parseConfirmationRefusal, er as parseDataUrl, xn as parseSharedStrings, sr as parseToolActivity, Sn as parseWorkbookSheets, Cn as pdfTextItemsToPage, Ye as planReplyConsumption, At as pollDelayMs, rt as primaryLanguageSubtag, r as quotaExhaustedEventName, Me as readSpeechEngineConfig, It as replyFollowsInput, R as reportAssistantAiTokenUsage, nn as requiresCancel, Ne as resetSpeechEngine, Ft as resolveAssistantLanguage, Lt as resolveLanguagePair, Vt as resolveModeConfig, b as resolveSandboxAssistantMode, $t as resolveSpeechLocale, te as sanitize, z as selectExistingAssistantSandbox, it as selectVoiceForLocale, B as sendAssistantPromptAsync, V as sendHeartbeat, wn as sheetXmlToRows, Te as shouldDisableEngine, Fe as showsAssistantCaption, Ie as showsUserCaption, bt as speakableEmail, at as speechGate, Zt as speechLabelsFor, ot as speechLangForLocale, rn as speechPlaybackReducer, Ee as splitForVendor, xt as splitTableRow, Xe as spokenSoFar, H as stopReapedAssistantSandbox, Tn as summarisePageText, jt as toCaptionText, tr as toMessageAttachment, St as toSpeakableText, nr as truncateForInline, En as truncatePagesForInline, ai as useAssistantApiAccess, mi as useAssistantAttachments, _i as useAssistantHeartbeat, Jt as useAssistantI18nNamespace, vi as useAssistantKeyboardShortcuts, Ht as useAssistantPageLabel, Ut as useAssistantProduct, Wt as useAssistantProductOrNull, lr as useAssistantSpeech, Gt as useAssistantStorageFolders, ir as useAssistantStore, Yt as useAssistantTr, oi as useConversationTurns, re as useSandboxAssistantTransport, e as useVoiceInput, ur as useVoiceSession, fi as useWorkspaceWriteAccess, rr as validateFile, st as voiceAvailability, ce as voiceMarker, wt as voicePreviewText, ct as voiceQualityRank, le as voiceSessionIdOf, Ze as voiceSessionReducer, Le as voiceStageState, ft as voiceTranscriptFilename, ue as voiceTurnsOnly, lt as voicesForLocale, U as waitForAssistantServiceReady, W as waitForSandboxRunning, Re as waveformIsActive, ze as waveformIsSettled };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.904.29",
3
+ "version": "2026.905.2",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {