@burdenoff/fe-libs 2026.914.1 → 2026.914.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/shared/assistant/index.d.ts +1 -0
  2. package/dist/shared/assistant/index.d.ts.map +1 -1
  3. package/dist/shared/assistant/speech/browserSpeechEngine.d.ts.map +1 -1
  4. package/dist/shared/assistant/speech/browserSpeechEngine.js +53 -26
  5. package/dist/shared/assistant/speech/createSpeechEngine.d.ts +25 -2
  6. package/dist/shared/assistant/speech/createSpeechEngine.d.ts.map +1 -1
  7. package/dist/shared/assistant/speech/createSpeechEngine.js +36 -13
  8. package/dist/shared/assistant/speech/hostedTtsProtocol.d.ts +25 -1
  9. package/dist/shared/assistant/speech/hostedTtsProtocol.d.ts.map +1 -1
  10. package/dist/shared/assistant/speech/hostedTtsProtocol.js +15 -8
  11. package/dist/shared/assistant/speech/hostedTtsSpeechEngine.d.ts +16 -1
  12. package/dist/shared/assistant/speech/hostedTtsSpeechEngine.d.ts.map +1 -1
  13. package/dist/shared/assistant/speech/hostedTtsSpeechEngine.js +84 -52
  14. package/dist/shared/assistant/speech/hostedVoiceCatalogue.d.ts.map +1 -1
  15. package/dist/shared/assistant/speech/hostedVoiceCatalogue.js +2 -1
  16. package/dist/shared/assistant/speech/index.d.ts +1 -1
  17. package/dist/shared/assistant/speech/index.d.ts.map +1 -1
  18. package/dist/shared/assistant/speech/routingSpeechEngine.d.ts.map +1 -1
  19. package/dist/shared/assistant/speech/routingSpeechEngine.js +41 -20
  20. package/dist/shared/assistant/speech/types.d.ts +10 -0
  21. package/dist/shared/assistant/speech/types.d.ts.map +1 -1
  22. package/dist/shared/assistant/turnActivity.d.ts +5 -1
  23. package/dist/shared/assistant/turnActivity.d.ts.map +1 -1
  24. package/dist/shared/assistant/ui/AssistantMessageList.d.ts.map +1 -1
  25. package/dist/shared/assistant/ui/AssistantMessageList.js +28 -27
  26. package/dist/shared/assistant/ui/AssistantSpeechProvider.d.ts.map +1 -1
  27. package/dist/shared/assistant/ui/AssistantSpeechProvider.js +209 -190
  28. package/dist/shared/assistant/ui/AssistantTurnActivity.d.ts +6 -3
  29. package/dist/shared/assistant/ui/AssistantTurnActivity.d.ts.map +1 -1
  30. package/dist/shared/assistant/ui/AssistantTurnActivity.js +8 -8
  31. package/dist/shared/assistant/ui/usePrefersReducedMotion.d.ts +55 -0
  32. package/dist/shared/assistant/ui/usePrefersReducedMotion.d.ts.map +1 -0
  33. package/dist/shared/assistant/ui/usePrefersReducedMotion.js +28 -0
  34. package/dist/shared/assistant/ui/voice/VoiceMiniController.d.ts +4 -2
  35. package/dist/shared/assistant/ui/voice/VoiceMiniController.d.ts.map +1 -1
  36. package/dist/shared/assistant/ui/voice/VoiceStage.d.ts +4 -2
  37. package/dist/shared/assistant/ui/voice/VoiceStage.d.ts.map +1 -1
  38. package/dist/shared/assistant/ui/voice/VoiceStatusText.d.ts +12 -1
  39. package/dist/shared/assistant/ui/voice/VoiceStatusText.d.ts.map +1 -1
  40. package/dist/shared/assistant/ui/voice/VoiceStatusText.js +19 -18
  41. package/dist/shared/assistant/voice/speechVoices.d.ts +15 -0
  42. package/dist/shared/assistant/voice/speechVoices.d.ts.map +1 -1
  43. package/dist/shared/assistant/voice/speechVoices.js +31 -26
  44. package/dist/shared/assistant/voice/voiceStatus.d.ts +8 -2
  45. package/dist/shared/assistant/voice/voiceStatus.d.ts.map +1 -1
  46. package/dist/shared-assistant.js +100 -99
  47. package/package.json +1 -1
@@ -43,8 +43,10 @@ interface Props {
43
43
  */
44
44
  statusSuffix?: string | null;
45
45
  /**
46
- * Rotate the SHOWN status through the thinking phrases while the assistant
47
- * thinks. What is ANNOUNCED is always `statusText` — see `VoiceStatusText`.
46
+ * Ask for the SHOWN status to rotate through the thinking phrases while the
47
+ * assistant thinks — suppressed under reduced motion (OS or app setting, see
48
+ * `usePrefersReducedMotion`). What is ANNOUNCED is always `statusText` — see
49
+ * `VoiceStatusText`.
48
50
  */
49
51
  rotateStatus?: boolean;
50
52
  /** Mic / interrupt control — the same orb, in its compact size. */
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceMiniController.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceMiniController.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;;;;;GAiBG;AAEH,UAAU,KAAK;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,uEAAuE;IACvE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,KAAK,CAiHzC,CAAC"}
1
+ {"version":3,"file":"VoiceMiniController.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceMiniController.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;;;;;GAiBG;AAEH,UAAU,KAAK;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,uEAAuE;IACvE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,KAAK,CAiHzC,CAAC"}
@@ -33,8 +33,10 @@ interface Props {
33
33
  */
34
34
  statusSuffix?: string | null;
35
35
  /**
36
- * Rotate the SHOWN status through the thinking phrases while the assistant
37
- * thinks. What is ANNOUNCED is always `statusText` — see `VoiceStatusText`.
36
+ * Ask for the SHOWN status to rotate through the thinking phrases while the
37
+ * assistant thinks — suppressed under reduced motion (OS or app setting, see
38
+ * `usePrefersReducedMotion`). What is ANNOUNCED is always `statusText` — see
39
+ * `VoiceStatusText`.
38
40
  */
39
41
  rotateStatus?: boolean;
40
42
  /** The microphone / interrupt control. */
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceStage.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceStage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;;;;;GAiBG;AAEH,UAAU,KAAK;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oCAAoC;IACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,OAAO,EAAE,SAAS,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,+EAA+E;IAC/E,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,KAAK,CAmIhC,CAAC"}
1
+ {"version":3,"file":"VoiceStage.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceStage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;;;;;GAiBG;AAEH,UAAU,KAAK;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,mDAAmD;IACnD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oCAAoC;IACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,OAAO,EAAE,SAAS,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,+EAA+E;IAC/E,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3D;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,KAAK,CAmIhC,CAAC"}
@@ -38,13 +38,24 @@ export declare const VoiceStatusLine: FC<{
38
38
  *
39
39
  * ★ The clock lives HERE, not in `AssistantVoiceSession`: a tick re-renders only
40
40
  * this line, and the orchestrators stay free of timers.
41
+ *
42
+ * ★★ Under reduced motion — the OS setting OR the app's own (BOFF-7284) — the
43
+ * line does not rotate: no clock runs, and it shows the status itself, e.g.
44
+ * "Thinking…" (with "· Microphone off" when muted). A phrase swapped every
45
+ * 2.5 seconds is exactly the self-starting movement that preference asks to stop.
46
+ * The announced text was never affected, so nothing changes for a screen reader.
47
+ * (The WCAG criterion for auto-updating text is 2.2.2 Pause, Stop, Hide; the
48
+ * reduced-motion preferences are how a person asks for it here.)
41
49
  */
42
50
  export declare const VoiceStatusText: FC<{
43
51
  /** The meaningful status. This is what is announced. */
44
52
  status: string;
45
53
  /** Kept visible while the shown phrase rotates, e.g. "Microphone off". */
46
54
  suffix?: string | null;
47
- /** Rotate the SHOWN text through the thinking phrases. */
55
+ /**
56
+ * The stage ASKS to rotate the shown text through the thinking phrases. The
57
+ * line honours it only when motion is allowed — see `usePrefersReducedMotion`.
58
+ */
48
59
  rotating?: boolean;
49
60
  className: string;
50
61
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceStatusText.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceStatusText.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAYrD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAiBA,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC;IAC/B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAiBA,CAAC"}
1
+ {"version":3,"file":"VoiceStatusText.d.ts","sourceRoot":"","sources":["../../../../../src/shared/assistant/ui/voice/VoiceStatusText.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAarD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAiBA,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC;IAC/B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAqBA,CAAC"}
@@ -1,42 +1,43 @@
1
1
  import { useAssistantTr as e } from "../../i18n.js";
2
2
  import { voiceStatusParts as t } from "../../voice/voiceStatus.js";
3
3
  import { IDLE_ROTATION_CLOCK as n, advanceRotationClock as r, rotationElapsedMs as i, startRotationTicker as a, syncRotationClock as o } from "../../voice/rotationClock.js";
4
- import { useEffect as s, useState as c } from "react";
5
- import { jsx as l, jsxs as u } from "react/jsx-runtime";
4
+ import { usePrefersReducedMotion as s } from "../usePrefersReducedMotion.js";
5
+ import { useEffect as c, useState as l } from "react";
6
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
6
7
  //#region src/shared/assistant/ui/voice/VoiceStatusText.tsx
7
- var d = ({ announced: e, shown: t, className: n }) => /* @__PURE__ */ u("p", {
8
+ var f = ({ announced: e, shown: t, className: n }) => /* @__PURE__ */ d("p", {
8
9
  className: `relative ${n}`,
9
10
  "data-testid": "assistant-voice-status-line",
10
- children: [/* @__PURE__ */ l("span", {
11
+ children: [/* @__PURE__ */ u("span", {
11
12
  "aria-hidden": "true",
12
13
  "data-testid": "assistant-voice-status-shown",
13
14
  children: t
14
- }), /* @__PURE__ */ l("span", {
15
+ }), /* @__PURE__ */ u("span", {
15
16
  className: "sr-only left-0 top-0",
16
17
  "aria-live": "polite",
17
18
  "aria-atomic": "true",
18
19
  "data-testid": "assistant-voice-status",
19
20
  children: e
20
21
  })]
21
- }), f = ({ status: n, suffix: r = null, rotating: i = !1, className: a }) => {
22
- let { announced: o, shown: s } = t({
23
- tr: e(),
22
+ }), p = ({ status: n, suffix: r = null, rotating: i = !1, className: a }) => {
23
+ let o = e(), c = s(), l = i && !c, { announced: d, shown: p } = t({
24
+ tr: o,
24
25
  status: n,
25
26
  suffix: r,
26
- rotating: i,
27
- elapsedMs: p(i)
27
+ rotating: l,
28
+ elapsedMs: m(l)
28
29
  });
29
- return /* @__PURE__ */ l(d, {
30
+ return /* @__PURE__ */ u(f, {
30
31
  className: a,
31
- announced: o,
32
- shown: s
32
+ announced: d,
33
+ shown: p
33
34
  });
34
35
  };
35
- function p(e) {
36
- let [t, l] = c(() => o(n, e)), u = o(t, e);
37
- return u !== t && l(u), s(() => {
38
- if (e) return a(() => l((e) => r(e)));
36
+ function m(e) {
37
+ let [t, s] = l(() => o(n, e)), u = o(t, e);
38
+ return u !== t && s(u), c(() => {
39
+ if (e) return a(() => s((e) => r(e)));
39
40
  }, [e]), i(u);
40
41
  }
41
42
  //#endregion
42
- export { d as VoiceStatusLine, f as VoiceStatusText };
43
+ export { f as VoiceStatusLine, p as VoiceStatusText };
@@ -22,7 +22,22 @@ export interface SpeechVoiceLike {
22
22
  readonly default?: boolean;
23
23
  /** On-device rather than server-side — no network, no latency, no vendor. */
24
24
  readonly localService?: boolean;
25
+ /**
26
+ * `'hosted'` for a voice our own TTS proxy speaks (`hostedVoiceCatalogue`).
27
+ * A platform `SpeechSynthesisVoice` never carries it.
28
+ *
29
+ * ★ An explicit marker rather than a name heuristic: a hosted voice id such as
30
+ * `en-IN-Chirp3-HD-Achernar` matches none of the words `voiceQualityRank`
31
+ * looks for, so ranking by name alone let Edge "Natural", Chrome "Google …"
32
+ * and Apple "Enhanced" voices outrank it — and the assistant spoke with the
33
+ * device voice even where hosted speech was configured and working.
34
+ */
35
+ readonly source?: 'hosted';
25
36
  }
37
+ /** A voice our hosted TTS proxy speaks, as opposed to one the device provides. */
38
+ export declare function isHostedVoice(voice: SpeechVoiceLike): boolean;
39
+ /** `voiceQualityRank` for every hosted voice — above any sum of device bonuses. */
40
+ export declare const HOSTED_VOICE_RANK = 1000;
26
41
  /** `en_GB`, `EN-gb` and `en-GB` are the same tag as far as matching goes. */
27
42
  export declare function normalizeLangTag(tag: string): string;
28
43
  /** `ta-IN` → `ta`. The part that decides whether a voice is intelligible at all. */
@@ -1 +1 @@
1
- {"version":3,"file":"speechVoices.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/speechVoices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAU9C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;;;;;GAcG;AACH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAYpG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAa/D;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,eAAe,EAC5D,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,CAAC,GAAG,IAAI,CAQV;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,WAAW,CAAC;AAEpG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,SAAS,eAAe,EAAE,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,UAAQ,GACnB,iBAAiB,CAInB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQjF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,iBAAiB,GAAG,OAAO,CAAC;AAE/D,wBAAgB,UAAU,CAAC,YAAY,EAAE,iBAAiB,GAAG,UAAU,CAItE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO,CAExE;AAED,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,OAAQ,CAAC"}
1
+ {"version":3,"file":"speechVoices.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/speechVoices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAU9C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;CAC5B;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAE7D;AAED,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;;;;;GAcG;AACH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAoBpG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAqB/D;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,eAAe,EAC5D,MAAM,EAAE,SAAS,CAAC,EAAE,EACpB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC5B,CAAC,GAAG,IAAI,CAQV;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,WAAW,CAAC;AAEpG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,SAAS,eAAe,EAAE,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,UAAQ,GACnB,iBAAiB,CAInB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQjF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,iBAAiB,GAAG,OAAO,CAAC;AAE/D,wBAAgB,UAAU,CAAC,YAAY,EAAE,iBAAiB,GAAG,UAAU,CAItE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,iBAAiB,GAAG,OAAO,CAExE;AAED,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,OAAQ,CAAC"}
@@ -11,28 +11,33 @@ var e = {
11
11
  ar: "ar-SA"
12
12
  };
13
13
  function t(e) {
14
+ return e.source === "hosted";
15
+ }
16
+ var n = 1e3;
17
+ function r(e) {
14
18
  return e.trim().toLowerCase().replace(/_/g, "-");
15
19
  }
16
- function n(e) {
17
- return t(e).split("-")[0];
20
+ function i(e) {
21
+ return r(e).split("-")[0];
18
22
  }
19
- function r(t) {
23
+ function a(t) {
20
24
  return e[t] ?? t;
21
25
  }
22
- function i(e, i) {
23
- let o = t(r(i)), s = n(o);
24
- if (!s) return [];
25
- let c = e.filter((e) => n(e.lang) === s);
26
- if (c.length === 0) return [];
27
- let l = c.filter((e) => t(e.lang) === o);
28
- return [...l.length > 0 ? l : c].sort((e, t) => a(t) - a(e));
26
+ function o(e, n) {
27
+ let o = r(a(n)), c = i(o);
28
+ if (!c) return [];
29
+ let l = e.filter((e) => i(e.lang) === c);
30
+ if (l.length === 0) return [];
31
+ let u = l.filter((e) => r(e.lang) === o), d = u.some(t) ? [] : l.filter(t);
32
+ return [...u.length > 0 ? [...u, ...d] : l].sort((e, t) => s(t) - s(e));
29
33
  }
30
- function a(e) {
31
- let t = e.name.toLowerCase(), n = 0;
32
- return /premium|enhanced/.test(t) && (n += 40), /neural|natural|wavenet/.test(t) && (n += 30), /google/.test(t) && (n += 20), e.localService === !1 && (n += 10), e.default && (n += 1), n;
34
+ function s(e) {
35
+ if (t(e)) return n;
36
+ let r = e.name.toLowerCase(), i = 0;
37
+ return /premium|enhanced/.test(r) && (i += 40), /neural|natural|wavenet/.test(r) && (i += 30), /google/.test(r) && (i += 20), e.localService === !1 && (i += 10), e.default && (i += 1), i;
33
38
  }
34
- function o(e, t, n) {
35
- let r = i(e, t);
39
+ function c(e, t, n) {
40
+ let r = o(e, t);
36
41
  if (r.length === 0) return null;
37
42
  if (n) {
38
43
  let e = r.find((e) => e.name === n);
@@ -40,24 +45,24 @@ function o(e, t, n) {
40
45
  }
41
46
  return r[0] ?? null;
42
47
  }
43
- function s(e, t, n, r = !1) {
44
- return e ? t.length === 0 ? r ? "no-voices" : "pending" : o(t, n) ? "ready" : "missing-voice" : "unsupported";
48
+ function l(e, t, n, r = !1) {
49
+ return e ? t.length === 0 ? r ? "no-voices" : "pending" : c(t, n) ? "ready" : "missing-voice" : "unsupported";
45
50
  }
46
- function c(e, t) {
47
- let r = n(e);
48
- if (!r) return e;
51
+ function u(e, t) {
52
+ let n = i(e);
53
+ if (!n) return e;
49
54
  try {
50
- return new Intl.DisplayNames([t], { type: "language" }).of(r) ?? r;
55
+ return new Intl.DisplayNames([t], { type: "language" }).of(n) ?? n;
51
56
  } catch {
52
- return r;
57
+ return n;
53
58
  }
54
59
  }
55
- function l(e) {
60
+ function d(e) {
56
61
  return e === "ready" ? "speak" : e === "pending" ? "wait-for-voices" : "block";
57
62
  }
58
- function u(e) {
63
+ function f(e) {
59
64
  return e === "missing-voice" || e === "no-voices";
60
65
  }
61
- var d = 2e3;
66
+ var p = 2e3;
62
67
  //#endregion
63
- export { e as SPEECH_LANG, d as VOICE_LIST_TIMEOUT_MS, u as isSpeechBlocked, c as languageDisplayName, t as normalizeLangTag, n as primaryLanguageSubtag, o as selectVoiceForLocale, l as speechGate, r as speechLangForLocale, s as voiceAvailability, a as voiceQualityRank, i as voicesForLocale };
68
+ export { n as HOSTED_VOICE_RANK, e as SPEECH_LANG, p as VOICE_LIST_TIMEOUT_MS, t as isHostedVoice, f as isSpeechBlocked, u as languageDisplayName, r as normalizeLangTag, i as primaryLanguageSubtag, c as selectVoiceForLocale, d as speechGate, a as speechLangForLocale, l as voiceAvailability, s as voiceQualityRank, o as voicesForLocale };
@@ -64,7 +64,10 @@ export declare function composeVoiceStatus(label: string, suffix: string | null)
64
64
  export interface VoiceStatusParts {
65
65
  /** For the live region. Changes only when the status does. */
66
66
  readonly announced: string;
67
- /** For the eye. Rotates while thinking; otherwise identical to `announced`. */
67
+ /**
68
+ * For the eye. Rotates while `rotating` (thinking, with motion allowed);
69
+ * otherwise identical to `announced`.
70
+ */
68
71
  readonly shown: string;
69
72
  }
70
73
  export declare function voiceStatusParts(args: {
@@ -73,7 +76,10 @@ export declare function voiceStatusParts(args: {
73
76
  status: string;
74
77
  /** Kept on the shown text while it rotates, e.g. "Microphone off". */
75
78
  suffix: string | null;
76
- /** True only while the assistant is thinking. */
79
+ /**
80
+ * Whether the shown text may rotate: the assistant is thinking AND motion is
81
+ * allowed. `VoiceStatusText` passes false under reduced motion (BOFF-7284).
82
+ */
77
83
  rotating: boolean;
78
84
  /** Time since rotation began. */
79
85
  elapsedMs: number;
@@ -1 +1 @@
1
- {"version":3,"file":"voiceStatus.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/voiceStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,yGAAyG;AACzG,eAAO,MAAM,oBAAoB,EAAE,cAGlC,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,EAAE,cAG/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,EAAE,EAAE,WAAW,CAAC;IAChB,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,GAAG,IAAI,CAKhB;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,MAAM,CAER;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,EAAE,EAAE,WAAW,CAAC;IAChB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iDAAiD;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,gBAAgB,CAmBnB"}
1
+ {"version":3,"file":"voiceStatus.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/voice/voiceStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,yGAAyG;AACzG,eAAO,MAAM,oBAAoB,EAAE,cAGlC,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,EAAE,cAG/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,EAAE,EAAE,WAAW,CAAC;IAChB,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,GAAG,IAAI,CAKhB;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,MAAM,CAER;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,EAAE,EAAE,WAAW,CAAC;IAChB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,gBAAgB,CAmBnB"}
@@ -18,102 +18,103 @@ import { DEFAULT_STREAM_BUDGET_MS as Ae, STREAM_BUDGET_MS as je, incompleteTurnN
18
18
  import { chatTurns as Fe, groupBySession as Ie, groupConsecutiveBySession as Le, isVoiceTurn as Re, voiceMarker as ze, voiceSessionIdOf as Be, voiceTurnsOnly as Ve } from "./shared/assistant/voice/turnVisibility.js";
19
19
  import { browserSpeechEngine as He } from "./shared/assistant/speech/browserSpeechEngine.js";
20
20
  import { HOSTED_TTS_TIER as Ue, HOSTED_VOICES as We, hostedLocaleFor as Ge, hostedSupportsLanguage as Ke } from "./shared/assistant/speech/hostedVoiceCatalogue.js";
21
- import { HOSTED_TTS_MAX_CHARS as qe, SPEAKING_RATE_MAX as Je, SPEAKING_RATE_MAX_STREAMING as Ye, SPEAKING_RATE_MAX_SYNC as Xe, SPEAKING_RATE_MIN as Ze, base64ToBytes as Qe, buildRequest as $e, classifyHttpFailure as et, decodeAudioResponse as tt, shouldDisableEngine as nt, splitForVendor as rt } from "./shared/assistant/speech/hostedTtsProtocol.js";
22
- import { createHostedTtsEngine as it } from "./shared/assistant/speech/hostedTtsSpeechEngine.js";
23
- import { createRoutingSpeechEngine as at } from "./shared/assistant/speech/routingSpeechEngine.js";
24
- import { configureSpeechEngine as ot, createSpeechEngines as st, getSpeechEngine as ct, readSpeechEngineConfig as lt, resetSpeechEngine as ut } from "./shared/assistant/speech/createSpeechEngine.js";
25
- import { micIsInterrupt as dt, showsAssistantCaption as ft, showsUserCaption as pt, voiceStageState as mt, waveformIsActive as ht, waveformIsSettled as gt } from "./shared/assistant/voice/voiceStageState.js";
26
- import { PHRASE_ROTATE_MS as _t, STAGE_COPY as vt, THINKING_PHRASES as yt, stageText as bt, statusStageCopy as xt, thinkingPhrase as St, thinkingPhraseEntry as Ct } from "./shared/assistant/stageCopy.js";
27
- import { VOICE_MUTED_LABEL as wt, VOICE_THINKING_LABEL as Tt, composeVoiceStatus as Et, voiceStatusParts as Dt, voiceStatusSuffix as Ot } from "./shared/assistant/voice/voiceStatus.js";
28
- import { IDLE_ROTATION_CLOCK as kt, advanceRotationClock as At, rotationElapsedMs as jt, startRotationTicker as Mt, syncRotationClock as Nt } from "./shared/assistant/voice/rotationClock.js";
29
- import { ENDPOINT_GRACE_MS as Pt, INITIAL_SESSION as Ft, INTERRUPT_MAX_MS as It, INTERRUPT_MIN_MS as Lt, SILENCE_SUBMIT_MS as Rt, isCapturing as zt, isEcho as Bt, isSubmittable as Vt, orbMode as Ht, planReplyConsumption as Ut, spokenSoFar as Wt, voiceSessionReducer as Gt } from "./shared/assistant/voice/voiceSession.js";
30
- import { SPEECH_LANG as Kt, VOICE_LIST_TIMEOUT_MS as qt, isSpeechBlocked as Jt, languageDisplayName as Yt, normalizeLangTag as Xt, primaryLanguageSubtag as Zt, selectVoiceForLocale as Qt, speechGate as $t, speechLangForLocale as en, voiceAvailability as tn, voiceQualityRank as nn, voicesForLocale as rn } from "./shared/assistant/voice/speechVoices.js";
31
- import { buildContinuedFromVoiceNote as an, buildVoiceTranscriptMarkdown as on, voiceTranscriptFilename as sn } from "./shared/assistant/voice/voiceTranscript.js";
32
- import { DEFAULT_SPEAKABLE_LABELS as cn, MAX_SPEAKABLE_CHARS as ln, MAX_SPOKEN_TABLE_ROWS as un, SPEECH_CHUNK_CHARS as dn, SPEECH_CHUNK_CJK_CHARS as fn, chunkForSpeech as pn, containsCjk as mn, speakableEmail as hn, splitTableRow as gn, toSpeakableText as _n } from "./shared/assistant/voice/speakableText.js";
33
- import { PREVIEW_LANGUAGES as vn, voicePreviewText as yn } from "./shared/assistant/voice/voicePreview.js";
34
- import { MINI_CAPTION_BUDGET as bn, showPreviousChunk as xn } from "./shared/assistant/voice/miniCaptionBudget.js";
35
- import { POLL_FAST_MS as Sn, POLL_FAST_UNTIL_MS as Cn, POLL_SLOW_MS as wn, POLL_STEADY_MS as Tn, POLL_STEADY_UNTIL_MS as En, pollDelayMs as Dn } from "./shared/assistant/voice/assistantPollSchedule.js";
36
- import { toCaptionText as On } from "./shared/assistant/voice/captionText.js";
37
- import { ASSISTANT_LANGUAGES as kn, DEFAULT_SPEECH_RATE as An, findAssistantLanguage as jn, resolveAssistantLanguage as Mn } from "./shared/assistant/voice/languages.js";
38
- import { replyFollowsInput as Nn, resolveLanguagePair as Pn } from "./shared/assistant/voice/languagePair.js";
39
- import { findPendingWrite as Fn, parseConfirmationRefusal as In } from "./shared/assistant/pendingWrite.js";
40
- import { SPOKEN_LABEL_LANGUAGES as Ln, speechLabelsFor as Rn } from "./shared/assistant/voice/speechLabels.js";
41
- import { detectScriptLocale as zn, resolveSpeechLocale as Bn } from "./shared/assistant/voice/replyLanguage.js";
42
- import { IDLE_PLAYBACK as Vn, isSpeakingMessage as Hn, publishedChunks as Un, requiresCancel as Wn, speechPlaybackReducer as Gn } from "./shared/assistant/voice/speechPlayback.js";
43
- import { MAX_INLINE_IMAGE_BASE64_BYTES as Kn, MAX_REQUEST_BODY_BYTES as qn } from "./shared/assistant/gatewayLimits.js";
44
- import { BOILERPLATE_PAGE_SHARE as Jn, MAX_BOILERPLATE_LINE_CHARS as Yn, MAX_EXTRACTED_CHARS as Xn, MAX_PDF_PAGES_SCANNED as Zn, MIN_PAGE_TEXT_CHARS as Qn, MIN_TEXT_PAGE_SHARE as $n, columnLetterToIndex as er, decodeXmlEntities as tr, docxXmlToText as nr, fitPdfPages as rr, formatPageRanges as ir, isMostlyImagePages as ar, joinSheets as or, pageMarker as sr, parseSharedStrings as cr, parseWorkbookSheets as lr, pdfTextItemsToPage as ur, sheetXmlToRows as dr, summarisePageText as fr, truncatePagesForInline as pr } from "./shared/assistant/documentText.js";
45
- import { ATTACHMENT_ACCEPT as mr, AttachmentRejectedError as hr, INLINE_IMAGE_MAX_DIM as gr, INLINE_IMAGE_QUALITY as _r, MAX_ATTACHMENTS as vr, MAX_FILE_BYTES as yr, MAX_INLINE_CHARS_PER_FILE as br, MAX_INLINE_CHARS_TOTAL as xr, MAX_INLINE_IMAGE_BASE64_CHARS as Sr, MAX_INLINE_IMAGE_PARTS as Cr, MAX_INLINE_TURN_BODY_BYTES as wr, MAX_TURN_BODY_BYTES as Tr, PROMPT_ENVELOPE_RESERVE_BYTES as Er, PROVIDER_READABLE_FILE_MEDIA_TYPES as Dr, TURN_BODY_HEADROOM_BYTES as Or, buildAttachmentPromptBlock as kr, buildPromptParts as Ar, buildPromptWithAttachments as jr, classifyAttachment as Mr, countInlineImageCandidates as Nr, countInlinedImageParts as Pr, detectDocumentFormat as Fr, estimateTurnBodyBytes as Ir, formatBytes as Lr, getAttachmentSendBlocker as Rr, getExtension as zr, getSendableAttachments as Br, hasAttachmentWorkInFlight as Vr, isProviderReadableFilePart as Hr, parseDataUrl as Ur, toMessageAttachment as Wr, truncateForInline as Gr, validateFile as Kr } from "./shared/assistant/attachments.js";
46
- import { useAssistantStore as qr } from "./shared/assistant/store.js";
47
- import { isTurnInFlight as Jr, planAbandonedTurn as Yr, planTurnAbort as Xr } from "./shared/assistant/turnState.js";
48
- import { isLegacyFiller as Zr, isLegacyStopped as Qr, isStageCopy as $r, stripLegacyFillerPrefix as ei } from "./shared/assistant/legacyFiller.js";
49
- import { getAssistantDisplayContent as ti } from "./shared/assistant/displayContent.js";
50
- import { elapsedSince as ni, msUntilNextPhrase as ri, startPhraseTicker as ii, turnActivityCopy as ai, turnActivityStage as oi } from "./shared/assistant/turnActivity.js";
51
- import { buildAssistantProgress as si } from "./shared/assistant/turnProgress.js";
52
- import { AssistantToolActivity as ci, parseToolActivity as li } from "./shared/assistant/ui/AssistantToolActivity.js";
53
- import { countSpokenTurns as ui, spokenTurnText as di } from "./shared/assistant/spokenTurns.js";
54
- import { AssistantAvatar as fi } from "./shared/assistant/ui/AssistantAvatar.js";
55
- import { AssistantSpeechProvider as pi, useAssistantSpeech as mi } from "./shared/assistant/ui/AssistantSpeechProvider.js";
56
- import { useVoiceSession as hi } from "./shared/assistant/ui/useVoiceSession.js";
57
- import { getActorId as gi, getOrganizationId as _i, getWorkspaceId as vi } from "./shared/assistant/context.js";
58
- import { ATTACHMENT_SOURCES as yi, availableAttachmentSources as bi, deviceHasCamera as xi } from "./shared/assistant/attachmentSources.js";
59
- import { SANDBOX_READY_TTL_MS as Si, createReadinessTracker as Ci, isRecentlyVerified as wi } from "./shared/assistant/sandboxReadiness.js";
60
- import { AssistantAutoSpeakToggle as Ti } from "./shared/assistant/ui/AssistantAutoSpeakToggle.js";
61
- import { AssistantMessageAttachments as Ei } from "./shared/assistant/ui/AssistantMessageAttachments.js";
62
- import { AssistantPendingWriteCard as Di } from "./shared/assistant/ui/AssistantPendingWriteCard.js";
63
- import { AssistantLanguageMenu as Oi } from "./shared/assistant/ui/AssistantLanguageMenu.js";
64
- import { AssistantReplyLanguageSelector as ki } from "./shared/assistant/ui/AssistantReplyLanguageSelector.js";
65
- import { AssistantSpeakButton as Ai } from "./shared/assistant/ui/AssistantSpeakButton.js";
66
- import { AssistantSpokenTurnsNotice as ji } from "./shared/assistant/ui/AssistantSpokenTurnsNotice.js";
67
- import { AssistantConnectSourceProvider as Mi, useAssistantConnectSource as Ni } from "./shared/assistant/ui/composer/connectSource.js";
68
- import { AssistantConnectSourceItem as Pi } from "./shared/assistant/ui/composer/AssistantConnectSourceItem.js";
69
- import { ASSISTANT_OVERLAY_ATTR as Fi, ASSISTANT_PANEL_ATTR as Ii, NO_PANEL_OVERLAY as Li, activePanelOverlay as Ri, assistantPanelOwnsEscape as zi, escapeDismisses as Bi, focusIsInsidePanel as Vi, nextPanelOverlays as Hi, panelOwnsEscape as Ui } from "./shared/assistant/ui/panelOverlays.js";
70
- import { useDropdownEscape as Wi } from "./shared/assistant/ui/useDropdownEscape.js";
71
- import { AssistantAttachmentButton as Gi } from "./shared/assistant/ui/composer/AssistantAttachmentButton.js";
72
- import { AssistantAttachmentChips as Ki } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
73
- import { AssistantPreviewProvider as qi, useAssistantPreview as Ji } from "./shared/assistant/preview/context.js";
74
- import { IDLE_PREVIEW_STATE as Yi, isBlankProse as Xi, isRunningStatus as Zi, nextPreviewEvents as Qi } from "./shared/assistant/preview/previewTransitions.js";
75
- import { IDLE_PREVIEW as $i, NO_OWNER as ea, applyPreviewEvent as ta, createAssistantPreviewSurface as na, currentPreviewOwner as ra, runBelongsTo as ia, sameOwner as aa } from "./shared/assistant/preview/surfaceState.js";
76
- import { createRunIdentityCache as oa, runIdentities as sa } from "./shared/assistant/preview/runIdentity.js";
77
- import { IDLE_ACTIVE_TAB as ca, nextActiveTab as la, pinActiveTab as ua, shouldPinOnMove as da, shouldPinOnSelect as fa, stepsFromToolActivity as pa, tabForArrowKey as ma } from "./shared/assistant/preview/entity/entityPreviewState.js";
78
- import { AssistantStepRail as ha } from "./shared/assistant/preview/entity/AssistantStepRail.js";
79
- import { AssistantEntityPreview as ga } from "./shared/assistant/preview/entity/AssistantEntityPreview.js";
80
- import { useOverlayFocus as _a } from "./shared/assistant/ui/useOverlayFocus.js";
81
- import { useAssistantPreviewBridge as va } from "./shared/assistant/preview/useAssistantPreviewBridge.js";
82
- import { AssistantPreviewOverlay as ya } from "./shared/assistant/preview/AssistantPreviewOverlay.js";
83
- import { AssistantLanguageSelector as ba, FOLLOW_APP_LOCALE as xa } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
84
- import { ASSISTANT_MODE_META as Sa, AssistantModeSelector as Ca, nextModeIndex as wa } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
85
- import { AssistantVoiceButton as Ta } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
86
- import { AUTO_VOICE as Ea, AssistantVoiceSelector as Da } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
87
- import { AssistantVoiceOrb as Oa } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
88
- import { AssistantVoiceSessionButton as ka } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
89
- import { CAPTION_SCROLL_ATTR as Aa, VoiceCaption as ja } from "./shared/assistant/ui/voice/VoiceCaption.js";
90
- import { VoiceConversationView as Ma } from "./shared/assistant/ui/voice/VoiceConversationView.js";
91
- import { VoiceWaveform as Na } from "./shared/assistant/ui/voice/VoiceWaveform.js";
92
- import { VoiceStatusLine as Pa, VoiceStatusText as Fa } from "./shared/assistant/ui/voice/VoiceStatusText.js";
93
- import { VoiceMiniController as Ia } from "./shared/assistant/ui/voice/VoiceMiniController.js";
94
- import { VoiceStage as La } from "./shared/assistant/ui/voice/VoiceStage.js";
95
- import { VoiceTranscriptDrawer as Ra } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
96
- import { downloadFile as za, exportConversation as Ba } from "./shared/assistant/exportConversation.js";
97
- import { AssistantMoreMenu as Va } from "./shared/assistant/ui/AssistantMoreMenu.js";
98
- import { AssistantHeader as Ha } from "./shared/assistant/ui/AssistantHeader.js";
99
- import { AssistantConversationList as Ua } from "./shared/assistant/ui/AssistantConversationList.js";
100
- import { AssistantEmptyState as Wa } from "./shared/assistant/ui/AssistantEmptyState.js";
101
- import { AssistantTurnActivity as Ga, TurnActivityLine as Ka } from "./shared/assistant/ui/AssistantTurnActivity.js";
102
- import { AssistantMessageItem as qa } from "./shared/assistant/ui/AssistantMessageItem.js";
103
- import { AssistantMessageList as Ja } from "./shared/assistant/ui/AssistantMessageList.js";
104
- import { AssistantVoiceSession as Ya } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
105
- import { useAssistantApiAccess as Xa } from "./shared/assistant/useAssistantApiAccess.js";
106
- import { useConversationTurns as Za } from "./shared/assistant/useConversationTurns.js";
107
- import { isMultimodalBodyRejection as Qa, isRecoverableAssistantError as $a } from "./shared/assistant/transportErrors.js";
108
- import { aiCreditsUpdatedEventName as eo, dispatchAssistantQuotaExhausted as to, notifyAiCreditsUpdated as no } from "./shared/assistant/aiCredits.js";
109
- import { useWorkspaceWriteAccess as ro } from "./shared/assistant/useWorkspaceWriteAccess.js";
110
- import { extractDocumentText as io } from "./shared/assistant/documentExtract.js";
111
- import { useAssistantAttachments as ao } from "./shared/assistant/useAssistantAttachments.js";
112
- import { AssistantComposer as oo } from "./shared/assistant/ui/composer/AssistantComposer.js";
113
- import { isProdRuntime as so } from "./shared/assistant/env.js";
114
- import { useAssistantHeartbeat as co } from "./shared/assistant/useAssistantHeartbeat.js";
115
- import { useAssistantKeyboardShortcuts as lo } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
116
- import { AssistantApiCallsConsentDialog as uo } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
117
- import { AssistantChatArea as fo } from "./shared/assistant/ui/AssistantChatArea.js";
118
- import { AIAssistantPanel as po } from "./shared/assistant/ui/AIAssistantPanel.js";
119
- export { po as AIAssistantPanel, L as ASSISTANT_API_AUTH_STRATEGY, kn as ASSISTANT_LANGUAGES, Sa as ASSISTANT_MODE_META, Fi as ASSISTANT_OVERLAY_ATTR, Ii as ASSISTANT_PANEL_ATTR, mr as ATTACHMENT_ACCEPT, yi as ATTACHMENT_SOURCES, Ea as AUTO_VOICE, uo as AssistantApiCallsConsentDialog, Gi as AssistantAttachmentButton, Ki as AssistantAttachmentChips, Ti as AssistantAutoSpeakToggle, fi as AssistantAvatar, fo as AssistantChatArea, oo as AssistantComposer, Pi as AssistantConnectSourceItem, Mi as AssistantConnectSourceProvider, Ua as AssistantConversationList, Wa as AssistantEmptyState, ga as AssistantEntityPreview, Ha as AssistantHeader, s as AssistantI18nProvider, Oi as AssistantLanguageMenu, ba as AssistantLanguageSelector, f as AssistantMarkdownImage, h as AssistantMarkdownRenderer, Ei as AssistantMessageAttachments, qa as AssistantMessageItem, Ja as AssistantMessageList, Ca as AssistantModeSelector, Va as AssistantMoreMenu, g as AssistantNavigateProvider, Di as AssistantPendingWriteCard, ya as AssistantPreviewOverlay, qi as AssistantPreviewProvider, t as AssistantProductProvider, ki as AssistantReplyLanguageSelector, _e as AssistantRuntimeManager, Ai as AssistantSpeakButton, pi as AssistantSpeechProvider, ji as AssistantSpokenTurnsNotice, ha as AssistantStepRail, ci as AssistantToolActivity, Ga as AssistantTurnActivity, Ta as AssistantVoiceButton, Oa as AssistantVoiceOrb, Da as AssistantVoiceSelector, Ya as AssistantVoiceSession, ka as AssistantVoiceSessionButton, hr as AttachmentRejectedError, Jn as BOILERPLATE_PAGE_SHARE, Aa as CAPTION_SCROLL_ATTR, O as CHECK_AI_CREDITS, k as CREATE_SANDBOX, cn as DEFAULT_SPEAKABLE_LABELS, An as DEFAULT_SPEECH_RATE, Ae as DEFAULT_STREAM_BUDGET_MS, Pt as ENDPOINT_GRACE_MS, A as EXTEND_SANDBOX_TTL, xa as FOLLOW_APP_LOCALE, j as GET_ACTIVE_SANDBOXES, M as GET_SANDBOX, qe as HOSTED_TTS_MAX_CHARS, Ue as HOSTED_TTS_TIER, We as HOSTED_VOICES, ca as IDLE_ACTIVE_TAB, Vn as IDLE_PLAYBACK, $i as IDLE_PREVIEW, Yi as IDLE_PREVIEW_STATE, kt as IDLE_ROTATION_CLOCK, Ft as INITIAL_SESSION, gr as INLINE_IMAGE_MAX_DIM, _r as INLINE_IMAGE_QUALITY, It as INTERRUPT_MAX_MS, Lt as INTERRUPT_MIN_MS, vr as MAX_ATTACHMENTS, Yn as MAX_BOILERPLATE_LINE_CHARS, Xn as MAX_EXTRACTED_CHARS, yr as MAX_FILE_BYTES, br as MAX_INLINE_CHARS_PER_FILE, xr as MAX_INLINE_CHARS_TOTAL, Kn as MAX_INLINE_IMAGE_BASE64_BYTES, Sr as MAX_INLINE_IMAGE_BASE64_CHARS, Cr as MAX_INLINE_IMAGE_PARTS, wr as MAX_INLINE_TURN_BODY_BYTES, Zn as MAX_PDF_PAGES_SCANNED, qn as MAX_REQUEST_BODY_BYTES, ln as MAX_SPEAKABLE_CHARS, un as MAX_SPOKEN_TABLE_ROWS, Tr as MAX_TURN_BODY_BYTES, bn as MINI_CAPTION_BUDGET, Qn as MIN_PAGE_TEXT_CHARS, $n as MIN_TEXT_PAGE_SHARE, ea as NO_OWNER, Li as NO_PANEL_OVERLAY, _t as PHRASE_ROTATE_MS, Sn as POLL_FAST_MS, Cn as POLL_FAST_UNTIL_MS, wn as POLL_SLOW_MS, Tn as POLL_STEADY_MS, En as POLL_STEADY_UNTIL_MS, vn as PREVIEW_LANGUAGES, Er as PROMPT_ENVELOPE_RESERVE_BYTES, Dr as PROVIDER_READABLE_FILE_MEDIA_TYPES, N as PROXY_SANDBOX_REQUEST, P as REPORT_AI_TOKEN_USAGE, Si as SANDBOX_READY_TTL_MS, Rt as SILENCE_SUBMIT_MS, Je as SPEAKING_RATE_MAX, Ye as SPEAKING_RATE_MAX_STREAMING, Xe as SPEAKING_RATE_MAX_SYNC, Ze as SPEAKING_RATE_MIN, dn as SPEECH_CHUNK_CHARS, fn as SPEECH_CHUNK_CJK_CHARS, Kt as SPEECH_LANG, Ln as SPOKEN_LABEL_LANGUAGES, vt as STAGE_COPY, F as STOP_ASSISTANT_SANDBOX, je as STREAM_BUDGET_MS, yt as THINKING_PHRASES, Or as TURN_BODY_HEADROOM_BYTES, Ka as TurnActivityLine, qt as VOICE_LIST_TIMEOUT_MS, wt as VOICE_MUTED_LABEL, Tt as VOICE_THINKING_LABEL, ja as VoiceCaption, Ma as VoiceConversationView, Ia as VoiceMiniController, La as VoiceStage, Pa as VoiceStatusLine, Fa as VoiceStatusText, Ra as VoiceTranscriptDrawer, Na as VoiceWaveform, I as WAIT_FOR_SANDBOX_RUNNING, q as abortAssistantTurn, Ri as activePanelOverlay, At as advanceRotationClock, eo as aiCreditsUpdatedEventName, ta as applyPreviewEvent, J as approvePendingWrite, zi as assistantPanelOwnsEscape, _ as assistantRoutePath, c as assistantTranslationKey, v as assistantUrlTransform, bi as availableAttachmentSources, Qe as base64ToBytes, y as browserShouldHandle, He as browserSpeechEngine, si as buildAssistantProgress, Y as buildAssistantSandboxEnv, kr as buildAttachmentPromptBlock, an as buildContinuedFromVoiceNote, ve as buildProgress, Ar as buildPromptParts, X as buildPromptRequestBody, jr as buildPromptWithAttachments, $e as buildRequest, E as buildSandboxContextInput, on as buildVoiceTranscriptMarkdown, Fe as chatTurns, Z as checkAssistantAiCredits, pn as chunkForSpeech, b as classifyAssistantHref, Mr as classifyAttachment, et as classifyHttpFailure, S as classifyQuotaError, er as columnLetterToIndex, Et as composeVoiceStatus, ot as configureSpeechEngine, mn as containsCjk, d as copyToClipboard, Nr as countInlineImageCandidates, Pr as countInlinedImageParts, ui as countSpokenTurns, na as createAssistantPreviewSurface, Q as createAssistantSandbox, $ as createAssistantSession, it as createHostedTtsEngine, Ci as createReadinessTracker, at as createRoutingSpeechEngine, oa as createRunIdentityCache, Oe as createSandboxAssistantTransport, st as createSpeechEngines, ra as currentPreviewOwner, tt as decodeAudioResponse, tr as decodeXmlEntities, C as describeQuotaError, Fr as detectDocumentFormat, zn as detectScriptLocale, xi as deviceHasCamera, to as dispatchAssistantQuotaExhausted, nr as docxXmlToText, ee as downloadAssistantArtifact, za as downloadFile, ni as elapsedSince, Bi as escapeDismisses, Ir as estimateTurnBodyBytes, D as executeSandboxGraphQL, Ba as exportConversation, te as extendAssistantSandboxTTL, io as extractDocumentText, jn as findAssistantLanguage, ne as findExistingSandbox, Fn as findPendingWrite, rr as fitPdfPages, Vi as focusIsInsidePanel, Lr as formatBytes, ir as formatPageRanges, gi as getActorId, re as getAssistantArtifacts, ti as getAssistantDisplayContent, ye as getAssistantMedia, ie as getAssistantMessages, ae as getAssistantSession, oe as getAssistantStreamAccess, be as getAssistantText, Rr as getAttachmentSendBlocker, U as getCapability, zr as getExtension, R as getImageForMode, z as getImageTagForMode, _i as getOrganizationId, xe as getRawMessageCreatedAt, B as getResourcesForMode, V as getSandboxImageRegistry, Br as getSendableAttachments, ct as getSpeechEngine, Se as getToolProgress, vi as getWorkspaceId, Ie as groupBySession, Le as groupConsecutiveBySession, Vr as hasAttachmentWorkInFlight, Ge as hostedLocaleFor, Ke as hostedSupportsLanguage, p as imageHostLabel, Me as incompleteTurnNotice, Xi as isBlankProse, zt as isCapturing, Bt as isEcho, Zr as isLegacyFiller, Qr as isLegacyStopped, ar as isMostlyImagePages, Qa as isMultimodalBodyRejection, so as isProdRuntime, Hr as isProviderReadableFilePart, w as isQuotaExhaustedError, Ce as isReapedSandboxConnectionError, wi as isRecentlyVerified, we as isRecoverable, $a as isRecoverableAssistantError, m as isRemoteImageSrc, Zi as isRunningStatus, Hn as isSpeakingMessage, Jt as isSpeechBlocked, $r as isStageCopy, Vt as isSubmittable, Jr as isTurnInFlight, W as isUnknownFieldError, Re as isVoiceTurn, or as joinSheets, Yt as languageDisplayName, Te as mapSessionToHistory, G as markSupported, K as markUnsupported, Ee as mergeMessagesById, dt as micIsInterrupt, se as modeRequiresConfirmWrites, ri as msUntilNextPhrase, la as nextActiveTab, wa as nextModeIndex, Hi as nextPanelOverlays, Qi as nextPreviewEvents, Xt as normalizeLangTag, no as notifyAiCreditsUpdated, Ht as orbMode, sr as pageMarker, Ui as panelOwnsEscape, In as parseConfirmationRefusal, Ur as parseDataUrl, cr as parseSharedStrings, li as parseToolActivity, lr as parseWorkbookSheets, ur as pdfTextItemsToPage, ua as pinActiveTab, Yr as planAbandonedTurn, Ut as planReplyConsumption, Xr as planTurnAbort, Dn as pollDelayMs, Zt as primaryLanguageSubtag, Un as publishedChunks, T as quotaExhaustedEventName, lt as readSpeechEngineConfig, ce as releaseSupersededAssistantSandboxes, Nn as replyFollowsInput, le as reportAssistantAiTokenUsage, Wn as requiresCancel, ut as resetSpeechEngine, Mn as resolveAssistantLanguage, Pn as resolveLanguagePair, n as resolveModeConfig, H as resolveSandboxAssistantMode, Bn as resolveSpeechLocale, jt as rotationElapsedMs, ia as runBelongsTo, sa as runIdentities, aa as sameOwner, De as sanitize, ue as selectExistingAssistantSandbox, de as selectSupersededAssistantSandboxes, Qt as selectVoiceForLocale, fe as sendAssistantPromptAsync, pe as sendHeartbeat, dr as sheetXmlToRows, nt as shouldDisableEngine, da as shouldPinOnMove, fa as shouldPinOnSelect, xn as showPreviousChunk, ft as showsAssistantCaption, pt as showsUserCaption, hn as speakableEmail, $t as speechGate, Rn as speechLabelsFor, en as speechLangForLocale, Gn as speechPlaybackReducer, rt as splitForVendor, gn as splitTableRow, Wt as spokenSoFar, di as spokenTurnText, bt as stageText, ii as startPhraseTicker, Mt as startRotationTicker, xt as statusStageCopy, pa as stepsFromToolActivity, me as stopReapedAssistantSandbox, Ne as streamBudgetMs, ei as stripLegacyFillerPrefix, fr as summarisePageText, Nt as syncRotationClock, ma as tabForArrowKey, St as thinkingPhrase, Ct as thinkingPhraseEntry, On as toCaptionText, Wr as toMessageAttachment, _n as toSpeakableText, Gr as truncateForInline, pr as truncatePagesForInline, ai as turnActivityCopy, oi as turnActivityStage, Xa as useAssistantApiAccess, ao as useAssistantAttachments, Ni as useAssistantConnectSource, co as useAssistantHeartbeat, l as useAssistantI18nNamespace, lo as useAssistantKeyboardShortcuts, x as useAssistantNavigate, r as useAssistantPageLabel, Ji as useAssistantPreview, va as useAssistantPreviewBridge, i as useAssistantProduct, a as useAssistantProductOrNull, mi as useAssistantSpeech, o as useAssistantStorageFolders, qr as useAssistantStore, u as useAssistantTr, Za as useConversationTurns, Wi as useDropdownEscape, _a as useOverlayFocus, ke as useSandboxAssistantTransport, e as useVoiceInput, hi as useVoiceSession, ro as useWorkspaceWriteAccess, Kr as validateFile, tn as voiceAvailability, ze as voiceMarker, yn as voicePreviewText, nn as voiceQualityRank, Be as voiceSessionIdOf, Gt as voiceSessionReducer, mt as voiceStageState, Dt as voiceStatusParts, Ot as voiceStatusSuffix, sn as voiceTranscriptFilename, Ve as voiceTurnsOnly, rn as voicesForLocale, he as waitForAssistantServiceReady, ge as waitForSandboxRunning, ht as waveformIsActive, gt as waveformIsSettled, Pe as withIncompleteTurnNotice };
21
+ import { HOSTED_DISABLE_MS as qe, HOSTED_TTS_MAX_CHARS as Je, SPEAKING_RATE_MAX as Ye, SPEAKING_RATE_MAX_STREAMING as Xe, SPEAKING_RATE_MAX_SYNC as Ze, SPEAKING_RATE_MIN as Qe, base64ToBytes as $e, buildRequest as et, classifyHttpFailure as tt, decodeAudioResponse as nt, disableDurationMs as rt, shouldDisableEngine as it, splitForVendor as at } from "./shared/assistant/speech/hostedTtsProtocol.js";
22
+ import { createHostedTtsEngine as ot } from "./shared/assistant/speech/hostedTtsSpeechEngine.js";
23
+ import { HOSTED_VOICE_RANK as st, SPEECH_LANG as ct, VOICE_LIST_TIMEOUT_MS as lt, isHostedVoice as ut, isSpeechBlocked as dt, languageDisplayName as ft, normalizeLangTag as pt, primaryLanguageSubtag as mt, selectVoiceForLocale as ht, speechGate as gt, speechLangForLocale as _t, voiceAvailability as vt, voiceQualityRank as yt, voicesForLocale as bt } from "./shared/assistant/voice/speechVoices.js";
24
+ import { createRoutingSpeechEngine as xt } from "./shared/assistant/speech/routingSpeechEngine.js";
25
+ import { configureSpeechEngine as St, createSpeechEngines as Ct, getSpeechEngine as wt, readSpeechEngineConfig as Tt, resetSpeechEngine as Et, subscribeSpeechEngine as Dt } from "./shared/assistant/speech/createSpeechEngine.js";
26
+ import { micIsInterrupt as Ot, showsAssistantCaption as kt, showsUserCaption as At, voiceStageState as jt, waveformIsActive as Mt, waveformIsSettled as Nt } from "./shared/assistant/voice/voiceStageState.js";
27
+ import { PHRASE_ROTATE_MS as Pt, STAGE_COPY as Ft, THINKING_PHRASES as It, stageText as Lt, statusStageCopy as Rt, thinkingPhrase as zt, thinkingPhraseEntry as Bt } from "./shared/assistant/stageCopy.js";
28
+ import { VOICE_MUTED_LABEL as Vt, VOICE_THINKING_LABEL as Ht, composeVoiceStatus as Ut, voiceStatusParts as Wt, voiceStatusSuffix as Gt } from "./shared/assistant/voice/voiceStatus.js";
29
+ import { IDLE_ROTATION_CLOCK as Kt, advanceRotationClock as qt, rotationElapsedMs as Jt, startRotationTicker as Yt, syncRotationClock as Xt } from "./shared/assistant/voice/rotationClock.js";
30
+ import { ENDPOINT_GRACE_MS as Zt, INITIAL_SESSION as Qt, INTERRUPT_MAX_MS as $t, INTERRUPT_MIN_MS as en, SILENCE_SUBMIT_MS as tn, isCapturing as nn, isEcho as rn, isSubmittable as an, orbMode as on, planReplyConsumption as sn, spokenSoFar as cn, voiceSessionReducer as ln } from "./shared/assistant/voice/voiceSession.js";
31
+ import { buildContinuedFromVoiceNote as un, buildVoiceTranscriptMarkdown as dn, voiceTranscriptFilename as fn } from "./shared/assistant/voice/voiceTranscript.js";
32
+ import { DEFAULT_SPEAKABLE_LABELS as pn, MAX_SPEAKABLE_CHARS as mn, MAX_SPOKEN_TABLE_ROWS as hn, SPEECH_CHUNK_CHARS as gn, SPEECH_CHUNK_CJK_CHARS as _n, chunkForSpeech as vn, containsCjk as yn, speakableEmail as bn, splitTableRow as xn, toSpeakableText as Sn } from "./shared/assistant/voice/speakableText.js";
33
+ import { PREVIEW_LANGUAGES as Cn, voicePreviewText as wn } from "./shared/assistant/voice/voicePreview.js";
34
+ import { MINI_CAPTION_BUDGET as Tn, showPreviousChunk as En } from "./shared/assistant/voice/miniCaptionBudget.js";
35
+ import { POLL_FAST_MS as Dn, POLL_FAST_UNTIL_MS as On, POLL_SLOW_MS as kn, POLL_STEADY_MS as An, POLL_STEADY_UNTIL_MS as jn, pollDelayMs as Mn } from "./shared/assistant/voice/assistantPollSchedule.js";
36
+ import { toCaptionText as Nn } from "./shared/assistant/voice/captionText.js";
37
+ import { ASSISTANT_LANGUAGES as Pn, DEFAULT_SPEECH_RATE as Fn, findAssistantLanguage as In, resolveAssistantLanguage as Ln } from "./shared/assistant/voice/languages.js";
38
+ import { replyFollowsInput as Rn, resolveLanguagePair as zn } from "./shared/assistant/voice/languagePair.js";
39
+ import { findPendingWrite as Bn, parseConfirmationRefusal as Vn } from "./shared/assistant/pendingWrite.js";
40
+ import { SPOKEN_LABEL_LANGUAGES as Hn, speechLabelsFor as Un } from "./shared/assistant/voice/speechLabels.js";
41
+ import { detectScriptLocale as Wn, resolveSpeechLocale as Gn } from "./shared/assistant/voice/replyLanguage.js";
42
+ import { IDLE_PLAYBACK as Kn, isSpeakingMessage as qn, publishedChunks as Jn, requiresCancel as Yn, speechPlaybackReducer as Xn } from "./shared/assistant/voice/speechPlayback.js";
43
+ import { MAX_INLINE_IMAGE_BASE64_BYTES as Zn, MAX_REQUEST_BODY_BYTES as Qn } from "./shared/assistant/gatewayLimits.js";
44
+ import { BOILERPLATE_PAGE_SHARE as $n, MAX_BOILERPLATE_LINE_CHARS as er, MAX_EXTRACTED_CHARS as tr, MAX_PDF_PAGES_SCANNED as nr, MIN_PAGE_TEXT_CHARS as rr, MIN_TEXT_PAGE_SHARE as ir, columnLetterToIndex as ar, decodeXmlEntities as or, docxXmlToText as sr, fitPdfPages as cr, formatPageRanges as lr, isMostlyImagePages as ur, joinSheets as dr, pageMarker as fr, parseSharedStrings as pr, parseWorkbookSheets as mr, pdfTextItemsToPage as hr, sheetXmlToRows as gr, summarisePageText as _r, truncatePagesForInline as vr } from "./shared/assistant/documentText.js";
45
+ import { ATTACHMENT_ACCEPT as yr, AttachmentRejectedError as br, INLINE_IMAGE_MAX_DIM as xr, INLINE_IMAGE_QUALITY as Sr, MAX_ATTACHMENTS as Cr, MAX_FILE_BYTES as wr, MAX_INLINE_CHARS_PER_FILE as Tr, MAX_INLINE_CHARS_TOTAL as Er, MAX_INLINE_IMAGE_BASE64_CHARS as Dr, MAX_INLINE_IMAGE_PARTS as Or, MAX_INLINE_TURN_BODY_BYTES as kr, MAX_TURN_BODY_BYTES as Ar, PROMPT_ENVELOPE_RESERVE_BYTES as jr, PROVIDER_READABLE_FILE_MEDIA_TYPES as Mr, TURN_BODY_HEADROOM_BYTES as Nr, buildAttachmentPromptBlock as Pr, buildPromptParts as Fr, buildPromptWithAttachments as Ir, classifyAttachment as Lr, countInlineImageCandidates as Rr, countInlinedImageParts as zr, detectDocumentFormat as Br, estimateTurnBodyBytes as Vr, formatBytes as Hr, getAttachmentSendBlocker as Ur, getExtension as Wr, getSendableAttachments as Gr, hasAttachmentWorkInFlight as Kr, isProviderReadableFilePart as qr, parseDataUrl as Jr, toMessageAttachment as Yr, truncateForInline as Xr, validateFile as Zr } from "./shared/assistant/attachments.js";
46
+ import { useAssistantStore as Qr } from "./shared/assistant/store.js";
47
+ import { isTurnInFlight as $r, planAbandonedTurn as ei, planTurnAbort as ti } from "./shared/assistant/turnState.js";
48
+ import { isLegacyFiller as ni, isLegacyStopped as ri, isStageCopy as ii, stripLegacyFillerPrefix as ai } from "./shared/assistant/legacyFiller.js";
49
+ import { getAssistantDisplayContent as oi } from "./shared/assistant/displayContent.js";
50
+ import { elapsedSince as si, msUntilNextPhrase as ci, startPhraseTicker as li, turnActivityCopy as ui, turnActivityStage as di } from "./shared/assistant/turnActivity.js";
51
+ import { buildAssistantProgress as fi } from "./shared/assistant/turnProgress.js";
52
+ import { AssistantToolActivity as pi, parseToolActivity as mi } from "./shared/assistant/ui/AssistantToolActivity.js";
53
+ import { countSpokenTurns as hi, spokenTurnText as gi } from "./shared/assistant/spokenTurns.js";
54
+ import { AssistantAvatar as _i } from "./shared/assistant/ui/AssistantAvatar.js";
55
+ import { AssistantSpeechProvider as vi, useAssistantSpeech as yi } from "./shared/assistant/ui/AssistantSpeechProvider.js";
56
+ import { useVoiceSession as bi } from "./shared/assistant/ui/useVoiceSession.js";
57
+ import { getActorId as xi, getOrganizationId as Si, getWorkspaceId as Ci } from "./shared/assistant/context.js";
58
+ import { ATTACHMENT_SOURCES as wi, availableAttachmentSources as Ti, deviceHasCamera as Ei } from "./shared/assistant/attachmentSources.js";
59
+ import { SANDBOX_READY_TTL_MS as Di, createReadinessTracker as Oi, isRecentlyVerified as ki } from "./shared/assistant/sandboxReadiness.js";
60
+ import { AssistantAutoSpeakToggle as Ai } from "./shared/assistant/ui/AssistantAutoSpeakToggle.js";
61
+ import { AssistantMessageAttachments as ji } from "./shared/assistant/ui/AssistantMessageAttachments.js";
62
+ import { AssistantPendingWriteCard as Mi } from "./shared/assistant/ui/AssistantPendingWriteCard.js";
63
+ import { AssistantLanguageMenu as Ni } from "./shared/assistant/ui/AssistantLanguageMenu.js";
64
+ import { AssistantReplyLanguageSelector as Pi } from "./shared/assistant/ui/AssistantReplyLanguageSelector.js";
65
+ import { AssistantSpeakButton as Fi } from "./shared/assistant/ui/AssistantSpeakButton.js";
66
+ import { AssistantSpokenTurnsNotice as Ii } from "./shared/assistant/ui/AssistantSpokenTurnsNotice.js";
67
+ import { AssistantConnectSourceProvider as Li, useAssistantConnectSource as Ri } from "./shared/assistant/ui/composer/connectSource.js";
68
+ import { AssistantConnectSourceItem as zi } from "./shared/assistant/ui/composer/AssistantConnectSourceItem.js";
69
+ import { ASSISTANT_OVERLAY_ATTR as Bi, ASSISTANT_PANEL_ATTR as Vi, NO_PANEL_OVERLAY as Hi, activePanelOverlay as Ui, assistantPanelOwnsEscape as Wi, escapeDismisses as Gi, focusIsInsidePanel as Ki, nextPanelOverlays as qi, panelOwnsEscape as Ji } from "./shared/assistant/ui/panelOverlays.js";
70
+ import { useDropdownEscape as Yi } from "./shared/assistant/ui/useDropdownEscape.js";
71
+ import { AssistantAttachmentButton as Xi } from "./shared/assistant/ui/composer/AssistantAttachmentButton.js";
72
+ import { AssistantAttachmentChips as Zi } from "./shared/assistant/ui/composer/AssistantAttachmentChips.js";
73
+ import { AssistantPreviewProvider as Qi, useAssistantPreview as $i } from "./shared/assistant/preview/context.js";
74
+ import { IDLE_PREVIEW_STATE as ea, isBlankProse as ta, isRunningStatus as na, nextPreviewEvents as ra } from "./shared/assistant/preview/previewTransitions.js";
75
+ import { IDLE_PREVIEW as ia, NO_OWNER as aa, applyPreviewEvent as oa, createAssistantPreviewSurface as sa, currentPreviewOwner as ca, runBelongsTo as la, sameOwner as ua } from "./shared/assistant/preview/surfaceState.js";
76
+ import { createRunIdentityCache as da, runIdentities as fa } from "./shared/assistant/preview/runIdentity.js";
77
+ import { IDLE_ACTIVE_TAB as pa, nextActiveTab as ma, pinActiveTab as ha, shouldPinOnMove as ga, shouldPinOnSelect as _a, stepsFromToolActivity as va, tabForArrowKey as ya } from "./shared/assistant/preview/entity/entityPreviewState.js";
78
+ import { AssistantStepRail as ba } from "./shared/assistant/preview/entity/AssistantStepRail.js";
79
+ import { AssistantEntityPreview as xa } from "./shared/assistant/preview/entity/AssistantEntityPreview.js";
80
+ import { useOverlayFocus as Sa } from "./shared/assistant/ui/useOverlayFocus.js";
81
+ import { REDUCED_MOTION_ATTRIBUTE as Ca, REDUCED_MOTION_QUERY as wa, readReducedMotion as Ta, subscribeReducedMotion as Ea, usePrefersReducedMotion as Da } from "./shared/assistant/ui/usePrefersReducedMotion.js";
82
+ import { useAssistantPreviewBridge as Oa } from "./shared/assistant/preview/useAssistantPreviewBridge.js";
83
+ import { AssistantPreviewOverlay as ka } from "./shared/assistant/preview/AssistantPreviewOverlay.js";
84
+ import { AssistantLanguageSelector as Aa, FOLLOW_APP_LOCALE as ja } from "./shared/assistant/ui/composer/AssistantLanguageSelector.js";
85
+ import { ASSISTANT_MODE_META as Ma, AssistantModeSelector as Na, nextModeIndex as Pa } from "./shared/assistant/ui/composer/AssistantModeSelector.js";
86
+ import { AssistantVoiceButton as Fa } from "./shared/assistant/ui/composer/AssistantVoiceButton.js";
87
+ import { AUTO_VOICE as Ia, AssistantVoiceSelector as La } from "./shared/assistant/ui/composer/AssistantVoiceSelector.js";
88
+ import { AssistantVoiceOrb as Ra } from "./shared/assistant/ui/voice/AssistantVoiceOrb.js";
89
+ import { AssistantVoiceSessionButton as za } from "./shared/assistant/ui/voice/AssistantVoiceSessionButton.js";
90
+ import { CAPTION_SCROLL_ATTR as Ba, VoiceCaption as Va } from "./shared/assistant/ui/voice/VoiceCaption.js";
91
+ import { VoiceConversationView as Ha } from "./shared/assistant/ui/voice/VoiceConversationView.js";
92
+ import { VoiceWaveform as Ua } from "./shared/assistant/ui/voice/VoiceWaveform.js";
93
+ import { VoiceStatusLine as Wa, VoiceStatusText as Ga } from "./shared/assistant/ui/voice/VoiceStatusText.js";
94
+ import { VoiceMiniController as Ka } from "./shared/assistant/ui/voice/VoiceMiniController.js";
95
+ import { VoiceStage as qa } from "./shared/assistant/ui/voice/VoiceStage.js";
96
+ import { VoiceTranscriptDrawer as Ja } from "./shared/assistant/ui/voice/VoiceTranscriptDrawer.js";
97
+ import { downloadFile as Ya, exportConversation as Xa } from "./shared/assistant/exportConversation.js";
98
+ import { AssistantMoreMenu as Za } from "./shared/assistant/ui/AssistantMoreMenu.js";
99
+ import { AssistantHeader as Qa } from "./shared/assistant/ui/AssistantHeader.js";
100
+ import { AssistantConversationList as $a } from "./shared/assistant/ui/AssistantConversationList.js";
101
+ import { AssistantEmptyState as eo } from "./shared/assistant/ui/AssistantEmptyState.js";
102
+ import { AssistantTurnActivity as to, TurnActivityLine as no } from "./shared/assistant/ui/AssistantTurnActivity.js";
103
+ import { AssistantMessageItem as ro } from "./shared/assistant/ui/AssistantMessageItem.js";
104
+ import { AssistantMessageList as io } from "./shared/assistant/ui/AssistantMessageList.js";
105
+ import { AssistantVoiceSession as ao } from "./shared/assistant/ui/voice/AssistantVoiceSession.js";
106
+ import { useAssistantApiAccess as oo } from "./shared/assistant/useAssistantApiAccess.js";
107
+ import { useConversationTurns as so } from "./shared/assistant/useConversationTurns.js";
108
+ import { isMultimodalBodyRejection as co, isRecoverableAssistantError as lo } from "./shared/assistant/transportErrors.js";
109
+ import { aiCreditsUpdatedEventName as uo, dispatchAssistantQuotaExhausted as fo, notifyAiCreditsUpdated as po } from "./shared/assistant/aiCredits.js";
110
+ import { useWorkspaceWriteAccess as mo } from "./shared/assistant/useWorkspaceWriteAccess.js";
111
+ import { extractDocumentText as ho } from "./shared/assistant/documentExtract.js";
112
+ import { useAssistantAttachments as go } from "./shared/assistant/useAssistantAttachments.js";
113
+ import { AssistantComposer as _o } from "./shared/assistant/ui/composer/AssistantComposer.js";
114
+ import { isProdRuntime as vo } from "./shared/assistant/env.js";
115
+ import { useAssistantHeartbeat as yo } from "./shared/assistant/useAssistantHeartbeat.js";
116
+ import { useAssistantKeyboardShortcuts as bo } from "./shared/assistant/useAssistantKeyboardShortcuts.js";
117
+ import { AssistantApiCallsConsentDialog as xo } from "./shared/assistant/ui/AssistantApiCallsConsentDialog.js";
118
+ import { AssistantChatArea as So } from "./shared/assistant/ui/AssistantChatArea.js";
119
+ import { AIAssistantPanel as Co } from "./shared/assistant/ui/AIAssistantPanel.js";
120
+ export { Co as AIAssistantPanel, L as ASSISTANT_API_AUTH_STRATEGY, Pn as ASSISTANT_LANGUAGES, Ma as ASSISTANT_MODE_META, Bi as ASSISTANT_OVERLAY_ATTR, Vi as ASSISTANT_PANEL_ATTR, yr as ATTACHMENT_ACCEPT, wi as ATTACHMENT_SOURCES, Ia as AUTO_VOICE, xo as AssistantApiCallsConsentDialog, Xi as AssistantAttachmentButton, Zi as AssistantAttachmentChips, Ai as AssistantAutoSpeakToggle, _i as AssistantAvatar, So as AssistantChatArea, _o as AssistantComposer, zi as AssistantConnectSourceItem, Li as AssistantConnectSourceProvider, $a as AssistantConversationList, eo as AssistantEmptyState, xa as AssistantEntityPreview, Qa as AssistantHeader, s as AssistantI18nProvider, Ni as AssistantLanguageMenu, Aa as AssistantLanguageSelector, f as AssistantMarkdownImage, h as AssistantMarkdownRenderer, ji as AssistantMessageAttachments, ro as AssistantMessageItem, io as AssistantMessageList, Na as AssistantModeSelector, Za as AssistantMoreMenu, g as AssistantNavigateProvider, Mi as AssistantPendingWriteCard, ka as AssistantPreviewOverlay, Qi as AssistantPreviewProvider, t as AssistantProductProvider, Pi as AssistantReplyLanguageSelector, _e as AssistantRuntimeManager, Fi as AssistantSpeakButton, vi as AssistantSpeechProvider, Ii as AssistantSpokenTurnsNotice, ba as AssistantStepRail, pi as AssistantToolActivity, to as AssistantTurnActivity, Fa as AssistantVoiceButton, Ra as AssistantVoiceOrb, La as AssistantVoiceSelector, ao as AssistantVoiceSession, za as AssistantVoiceSessionButton, br as AttachmentRejectedError, $n as BOILERPLATE_PAGE_SHARE, Ba as CAPTION_SCROLL_ATTR, O as CHECK_AI_CREDITS, k as CREATE_SANDBOX, pn as DEFAULT_SPEAKABLE_LABELS, Fn as DEFAULT_SPEECH_RATE, Ae as DEFAULT_STREAM_BUDGET_MS, Zt as ENDPOINT_GRACE_MS, A as EXTEND_SANDBOX_TTL, ja as FOLLOW_APP_LOCALE, j as GET_ACTIVE_SANDBOXES, M as GET_SANDBOX, qe as HOSTED_DISABLE_MS, Je as HOSTED_TTS_MAX_CHARS, Ue as HOSTED_TTS_TIER, We as HOSTED_VOICES, st as HOSTED_VOICE_RANK, pa as IDLE_ACTIVE_TAB, Kn as IDLE_PLAYBACK, ia as IDLE_PREVIEW, ea as IDLE_PREVIEW_STATE, Kt as IDLE_ROTATION_CLOCK, Qt as INITIAL_SESSION, xr as INLINE_IMAGE_MAX_DIM, Sr as INLINE_IMAGE_QUALITY, $t as INTERRUPT_MAX_MS, en as INTERRUPT_MIN_MS, Cr as MAX_ATTACHMENTS, er as MAX_BOILERPLATE_LINE_CHARS, tr as MAX_EXTRACTED_CHARS, wr as MAX_FILE_BYTES, Tr as MAX_INLINE_CHARS_PER_FILE, Er as MAX_INLINE_CHARS_TOTAL, Zn as MAX_INLINE_IMAGE_BASE64_BYTES, Dr as MAX_INLINE_IMAGE_BASE64_CHARS, Or as MAX_INLINE_IMAGE_PARTS, kr as MAX_INLINE_TURN_BODY_BYTES, nr as MAX_PDF_PAGES_SCANNED, Qn as MAX_REQUEST_BODY_BYTES, mn as MAX_SPEAKABLE_CHARS, hn as MAX_SPOKEN_TABLE_ROWS, Ar as MAX_TURN_BODY_BYTES, Tn as MINI_CAPTION_BUDGET, rr as MIN_PAGE_TEXT_CHARS, ir as MIN_TEXT_PAGE_SHARE, aa as NO_OWNER, Hi as NO_PANEL_OVERLAY, Pt as PHRASE_ROTATE_MS, Dn as POLL_FAST_MS, On as POLL_FAST_UNTIL_MS, kn as POLL_SLOW_MS, An as POLL_STEADY_MS, jn as POLL_STEADY_UNTIL_MS, Cn as PREVIEW_LANGUAGES, jr as PROMPT_ENVELOPE_RESERVE_BYTES, Mr as PROVIDER_READABLE_FILE_MEDIA_TYPES, N as PROXY_SANDBOX_REQUEST, Ca as REDUCED_MOTION_ATTRIBUTE, wa as REDUCED_MOTION_QUERY, P as REPORT_AI_TOKEN_USAGE, Di as SANDBOX_READY_TTL_MS, tn as SILENCE_SUBMIT_MS, Ye as SPEAKING_RATE_MAX, Xe as SPEAKING_RATE_MAX_STREAMING, Ze as SPEAKING_RATE_MAX_SYNC, Qe as SPEAKING_RATE_MIN, gn as SPEECH_CHUNK_CHARS, _n as SPEECH_CHUNK_CJK_CHARS, ct as SPEECH_LANG, Hn as SPOKEN_LABEL_LANGUAGES, Ft as STAGE_COPY, F as STOP_ASSISTANT_SANDBOX, je as STREAM_BUDGET_MS, It as THINKING_PHRASES, Nr as TURN_BODY_HEADROOM_BYTES, no as TurnActivityLine, lt as VOICE_LIST_TIMEOUT_MS, Vt as VOICE_MUTED_LABEL, Ht as VOICE_THINKING_LABEL, Va as VoiceCaption, Ha as VoiceConversationView, Ka as VoiceMiniController, qa as VoiceStage, Wa as VoiceStatusLine, Ga as VoiceStatusText, Ja as VoiceTranscriptDrawer, Ua as VoiceWaveform, I as WAIT_FOR_SANDBOX_RUNNING, q as abortAssistantTurn, Ui as activePanelOverlay, qt as advanceRotationClock, uo as aiCreditsUpdatedEventName, oa as applyPreviewEvent, J as approvePendingWrite, Wi as assistantPanelOwnsEscape, _ as assistantRoutePath, c as assistantTranslationKey, v as assistantUrlTransform, Ti as availableAttachmentSources, $e as base64ToBytes, y as browserShouldHandle, He as browserSpeechEngine, fi as buildAssistantProgress, Y as buildAssistantSandboxEnv, Pr as buildAttachmentPromptBlock, un as buildContinuedFromVoiceNote, ve as buildProgress, Fr as buildPromptParts, X as buildPromptRequestBody, Ir as buildPromptWithAttachments, et as buildRequest, E as buildSandboxContextInput, dn as buildVoiceTranscriptMarkdown, Fe as chatTurns, Z as checkAssistantAiCredits, vn as chunkForSpeech, b as classifyAssistantHref, Lr as classifyAttachment, tt as classifyHttpFailure, S as classifyQuotaError, ar as columnLetterToIndex, Ut as composeVoiceStatus, St as configureSpeechEngine, yn as containsCjk, d as copyToClipboard, Rr as countInlineImageCandidates, zr as countInlinedImageParts, hi as countSpokenTurns, sa as createAssistantPreviewSurface, Q as createAssistantSandbox, $ as createAssistantSession, ot as createHostedTtsEngine, Oi as createReadinessTracker, xt as createRoutingSpeechEngine, da as createRunIdentityCache, Oe as createSandboxAssistantTransport, Ct as createSpeechEngines, ca as currentPreviewOwner, nt as decodeAudioResponse, or as decodeXmlEntities, C as describeQuotaError, Br as detectDocumentFormat, Wn as detectScriptLocale, Ei as deviceHasCamera, rt as disableDurationMs, fo as dispatchAssistantQuotaExhausted, sr as docxXmlToText, ee as downloadAssistantArtifact, Ya as downloadFile, si as elapsedSince, Gi as escapeDismisses, Vr as estimateTurnBodyBytes, D as executeSandboxGraphQL, Xa as exportConversation, te as extendAssistantSandboxTTL, ho as extractDocumentText, In as findAssistantLanguage, ne as findExistingSandbox, Bn as findPendingWrite, cr as fitPdfPages, Ki as focusIsInsidePanel, Hr as formatBytes, lr as formatPageRanges, xi as getActorId, re as getAssistantArtifacts, oi as getAssistantDisplayContent, ye as getAssistantMedia, ie as getAssistantMessages, ae as getAssistantSession, oe as getAssistantStreamAccess, be as getAssistantText, Ur as getAttachmentSendBlocker, U as getCapability, Wr as getExtension, R as getImageForMode, z as getImageTagForMode, Si as getOrganizationId, xe as getRawMessageCreatedAt, B as getResourcesForMode, V as getSandboxImageRegistry, Gr as getSendableAttachments, wt as getSpeechEngine, Se as getToolProgress, Ci as getWorkspaceId, Ie as groupBySession, Le as groupConsecutiveBySession, Kr as hasAttachmentWorkInFlight, Ge as hostedLocaleFor, Ke as hostedSupportsLanguage, p as imageHostLabel, Me as incompleteTurnNotice, ta as isBlankProse, nn as isCapturing, rn as isEcho, ut as isHostedVoice, ni as isLegacyFiller, ri as isLegacyStopped, ur as isMostlyImagePages, co as isMultimodalBodyRejection, vo as isProdRuntime, qr as isProviderReadableFilePart, w as isQuotaExhaustedError, Ce as isReapedSandboxConnectionError, ki as isRecentlyVerified, we as isRecoverable, lo as isRecoverableAssistantError, m as isRemoteImageSrc, na as isRunningStatus, qn as isSpeakingMessage, dt as isSpeechBlocked, ii as isStageCopy, an as isSubmittable, $r as isTurnInFlight, W as isUnknownFieldError, Re as isVoiceTurn, dr as joinSheets, ft as languageDisplayName, Te as mapSessionToHistory, G as markSupported, K as markUnsupported, Ee as mergeMessagesById, Ot as micIsInterrupt, se as modeRequiresConfirmWrites, ci as msUntilNextPhrase, ma as nextActiveTab, Pa as nextModeIndex, qi as nextPanelOverlays, ra as nextPreviewEvents, pt as normalizeLangTag, po as notifyAiCreditsUpdated, on as orbMode, fr as pageMarker, Ji as panelOwnsEscape, Vn as parseConfirmationRefusal, Jr as parseDataUrl, pr as parseSharedStrings, mi as parseToolActivity, mr as parseWorkbookSheets, hr as pdfTextItemsToPage, ha as pinActiveTab, ei as planAbandonedTurn, sn as planReplyConsumption, ti as planTurnAbort, Mn as pollDelayMs, mt as primaryLanguageSubtag, Jn as publishedChunks, T as quotaExhaustedEventName, Ta as readReducedMotion, Tt as readSpeechEngineConfig, ce as releaseSupersededAssistantSandboxes, Rn as replyFollowsInput, le as reportAssistantAiTokenUsage, Yn as requiresCancel, Et as resetSpeechEngine, Ln as resolveAssistantLanguage, zn as resolveLanguagePair, n as resolveModeConfig, H as resolveSandboxAssistantMode, Gn as resolveSpeechLocale, Jt as rotationElapsedMs, la as runBelongsTo, fa as runIdentities, ua as sameOwner, De as sanitize, ue as selectExistingAssistantSandbox, de as selectSupersededAssistantSandboxes, ht as selectVoiceForLocale, fe as sendAssistantPromptAsync, pe as sendHeartbeat, gr as sheetXmlToRows, it as shouldDisableEngine, ga as shouldPinOnMove, _a as shouldPinOnSelect, En as showPreviousChunk, kt as showsAssistantCaption, At as showsUserCaption, bn as speakableEmail, gt as speechGate, Un as speechLabelsFor, _t as speechLangForLocale, Xn as speechPlaybackReducer, at as splitForVendor, xn as splitTableRow, cn as spokenSoFar, gi as spokenTurnText, Lt as stageText, li as startPhraseTicker, Yt as startRotationTicker, Rt as statusStageCopy, va as stepsFromToolActivity, me as stopReapedAssistantSandbox, Ne as streamBudgetMs, ai as stripLegacyFillerPrefix, Ea as subscribeReducedMotion, Dt as subscribeSpeechEngine, _r as summarisePageText, Xt as syncRotationClock, ya as tabForArrowKey, zt as thinkingPhrase, Bt as thinkingPhraseEntry, Nn as toCaptionText, Yr as toMessageAttachment, Sn as toSpeakableText, Xr as truncateForInline, vr as truncatePagesForInline, ui as turnActivityCopy, di as turnActivityStage, oo as useAssistantApiAccess, go as useAssistantAttachments, Ri as useAssistantConnectSource, yo as useAssistantHeartbeat, l as useAssistantI18nNamespace, bo as useAssistantKeyboardShortcuts, x as useAssistantNavigate, r as useAssistantPageLabel, $i as useAssistantPreview, Oa as useAssistantPreviewBridge, i as useAssistantProduct, a as useAssistantProductOrNull, yi as useAssistantSpeech, o as useAssistantStorageFolders, Qr as useAssistantStore, u as useAssistantTr, so as useConversationTurns, Yi as useDropdownEscape, Sa as useOverlayFocus, Da as usePrefersReducedMotion, ke as useSandboxAssistantTransport, e as useVoiceInput, bi as useVoiceSession, mo as useWorkspaceWriteAccess, Zr as validateFile, vt as voiceAvailability, ze as voiceMarker, wn as voicePreviewText, yt as voiceQualityRank, Be as voiceSessionIdOf, ln as voiceSessionReducer, jt as voiceStageState, Wt as voiceStatusParts, Gt as voiceStatusSuffix, fn as voiceTranscriptFilename, Ve as voiceTurnsOnly, bt as voicesForLocale, he as waitForAssistantServiceReady, ge as waitForSandboxRunning, Mt as waveformIsActive, Nt as waveformIsSettled, Pe as withIncompleteTurnNotice };