@burdenoff/fe-libs 2026.1007.3 → 2026.1007.5

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 (112) hide show
  1. package/dist/chrome/AutoBreadcrumbs.d.ts.map +1 -1
  2. package/dist/chrome/AutoBreadcrumbs.js +65 -76
  3. package/dist/chrome/Breadcrumb.d.ts.map +1 -1
  4. package/dist/chrome/Breadcrumbs.d.ts.map +1 -1
  5. package/dist/chrome/Breadcrumbs.js +47 -46
  6. package/dist/chrome/ContextSwitcher.js +86 -86
  7. package/dist/chrome/HeaderBar.d.ts.map +1 -1
  8. package/dist/chrome/HeaderBar.js +111 -107
  9. package/dist/chrome/HeaderThemeSwitcher.d.ts.map +1 -1
  10. package/dist/chrome/HeaderThemeSwitcher.js +46 -45
  11. package/dist/chrome/LanguageSwitcher.js +4 -4
  12. package/dist/chrome/MobileTabBar.js +4 -4
  13. package/dist/chrome/PageHeader.d.ts.map +1 -1
  14. package/dist/chrome/PageHeader.js +32 -30
  15. package/dist/chrome/PersonaSurfaceControls.js +8 -8
  16. package/dist/chrome/ProductSideNav.js +6 -6
  17. package/dist/chrome/ProfileSwitcher.d.ts.map +1 -1
  18. package/dist/chrome/ProfileSwitcher.js +89 -88
  19. package/dist/chrome/SideNavigation.js +4 -4
  20. package/dist/chrome/Tabs.d.ts.map +1 -1
  21. package/dist/chrome/Tabs.js +30 -29
  22. package/dist/chrome/breadcrumbLabel.d.ts +10 -0
  23. package/dist/chrome/breadcrumbLabel.d.ts.map +1 -0
  24. package/dist/chrome/breadcrumbLabel.js +31 -0
  25. package/dist/chrome/contextSwitcher/TriggerButton.d.ts.map +1 -1
  26. package/dist/chrome/contextSwitcher/TriggerButton.js +40 -36
  27. package/dist/chrome/notificationCenter/BellButton.d.ts.map +1 -1
  28. package/dist/chrome/notificationCenter/BellButton.js +29 -25
  29. package/dist/chrome/shellLabelManifest.d.ts +27 -0
  30. package/dist/chrome/shellLabelManifest.d.ts.map +1 -0
  31. package/dist/chrome/sideNavigation/SidebarHeader.d.ts.map +1 -1
  32. package/dist/chrome/sideNavigation/SidebarHeader.js +23 -22
  33. package/dist/shared/assistant/appControls/languageReply.d.ts +6 -1
  34. package/dist/shared/assistant/appControls/languageReply.d.ts.map +1 -1
  35. package/dist/shared/assistant/i18nManifest.d.ts +20 -5
  36. package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
  37. package/dist/shared/assistant/i18nManifest.js +30 -22
  38. package/dist/shared/assistant/index.d.ts +3 -0
  39. package/dist/shared/assistant/index.d.ts.map +1 -1
  40. package/dist/shared/assistant/productCopy.d.ts +78 -0
  41. package/dist/shared/assistant/productCopy.d.ts.map +1 -0
  42. package/dist/shared/assistant/productCopy.js +45 -0
  43. package/dist/shared/assistant/store.d.ts +10 -0
  44. package/dist/shared/assistant/store.d.ts.map +1 -1
  45. package/dist/shared/assistant/store.js +19 -8
  46. package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
  47. package/dist/shared/assistant/ui/AssistantChatArea.js +1070 -1067
  48. package/dist/shared/assistant/ui/AssistantEmptyState.d.ts.map +1 -1
  49. package/dist/shared/assistant/ui/AssistantEmptyState.js +30 -22
  50. package/dist/shared/assistant/ui/AssistantHeader.d.ts.map +1 -1
  51. package/dist/shared/assistant/ui/AssistantHeader.js +46 -45
  52. package/dist/shared/assistant/ui/useVoiceSession.d.ts +14 -1
  53. package/dist/shared/assistant/ui/useVoiceSession.d.ts.map +1 -1
  54. package/dist/shared/assistant/ui/useVoiceSession.js +241 -233
  55. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +7 -0
  56. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
  57. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +137 -130
  58. package/dist/shared/assistant/ui/voice/HandsFreePrivacyNotice.d.ts +27 -0
  59. package/dist/shared/assistant/ui/voice/HandsFreePrivacyNotice.d.ts.map +1 -0
  60. package/dist/shared/assistant/ui/voice/HandsFreePrivacyNotice.js +52 -0
  61. package/dist/shared/assistant/voice/handsfree/backendStreamTransport.d.ts +29 -6
  62. package/dist/shared/assistant/voice/handsfree/backendStreamTransport.d.ts.map +1 -1
  63. package/dist/shared/assistant/voice/handsfree/backendStreamTransport.js +138 -63
  64. package/dist/shared/assistant/voice/handsfree/handsFreeController.d.ts +7 -1
  65. package/dist/shared/assistant/voice/handsfree/handsFreeController.d.ts.map +1 -1
  66. package/dist/shared/assistant/voice/handsfree/handsFreeRuntime.d.ts +18 -10
  67. package/dist/shared/assistant/voice/handsfree/handsFreeRuntime.d.ts.map +1 -1
  68. package/dist/shared/assistant/voice/handsfree/handsFreeRuntime.js +46 -57
  69. package/dist/shared/assistant/voice/handsfree/streamingConfig.d.ts +103 -0
  70. package/dist/shared/assistant/voice/handsfree/streamingConfig.d.ts.map +1 -0
  71. package/dist/shared/assistant/voice/handsfree/streamingConfig.js +71 -0
  72. package/dist/shared/assistant/voice/handsfree/sttTransport.d.ts +12 -7
  73. package/dist/shared/assistant/voice/handsfree/sttTransport.d.ts.map +1 -1
  74. package/dist/shared/assistant/voice/handsfree/sttTransport.js +1 -1
  75. package/dist/shared/assistant/voice/handsfree/useHandsFreeInterrupt.d.ts +23 -1
  76. package/dist/shared/assistant/voice/handsfree/useHandsFreeInterrupt.d.ts.map +1 -1
  77. package/dist/shared/assistant/voice/handsfree/useHandsFreeInterrupt.js +63 -50
  78. package/dist/shared/components/ContextConversationWidget.js +1 -1
  79. package/dist/shared/events/sinks/RybbitSink.d.ts.map +1 -1
  80. package/dist/shared/events/sinks/RybbitSink.js +66 -69
  81. package/dist/shared/providers/AppShellProvider.d.ts +17 -0
  82. package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
  83. package/dist/shared/providers/AppShellProvider.js +188 -180
  84. package/dist/shared/providers/shell/I18nProvider.d.ts +92 -4
  85. package/dist/shared/providers/shell/I18nProvider.d.ts.map +1 -1
  86. package/dist/shared/providers/shell/I18nProvider.js +187 -79
  87. package/dist/shared/providers/shell/ProfileI18nBridge.d.ts +18 -2
  88. package/dist/shared/providers/shell/ProfileI18nBridge.d.ts.map +1 -1
  89. package/dist/shared/providers/shell/ProfileI18nBridge.js +55 -41
  90. package/dist/shared/providers/shell/directionMode.d.ts +25 -0
  91. package/dist/shared/providers/shell/directionMode.d.ts.map +1 -0
  92. package/dist/shared/providers/shell/directionMode.js +34 -0
  93. package/dist/shared/providers/shell/index.d.ts +4 -2
  94. package/dist/shared/providers/shell/index.d.ts.map +1 -1
  95. package/dist/shared/providers/shell/translationLayers.d.ts +30 -0
  96. package/dist/shared/providers/shell/translationLayers.d.ts.map +1 -0
  97. package/dist/shared/providers/shell/translationLayers.js +35 -0
  98. package/dist/shared/providers/shell/translationStore.d.ts +55 -0
  99. package/dist/shared/providers/shell/translationStore.d.ts.map +1 -0
  100. package/dist/shared/providers/shell/translationStore.js +100 -0
  101. package/dist/shared/providers/shell/useShellLabel.d.ts +13 -1
  102. package/dist/shared/providers/shell/useShellLabel.d.ts.map +1 -1
  103. package/dist/shared/providers/shell/useShellLabel.js +10 -9
  104. package/dist/shared-assistant.js +190 -187
  105. package/dist/shared-providers-shell.js +20 -19
  106. package/dist/ui/boff-ui2.d.ts.map +1 -1
  107. package/dist/ui/cta-overflow-menu.d.ts.map +1 -1
  108. package/dist/ui/cta-overflow-menu.js +20 -18
  109. package/dist/ui/guidance.d.ts +1 -1
  110. package/dist/ui/guidance.d.ts.map +1 -1
  111. package/dist/ui/guidance.js +53 -52
  112. package/package.json +3 -2
@@ -1,27 +1,31 @@
1
- import { jsx as e, jsxs as t } from "react/jsx-runtime";
1
+ import { useShellLabel as e } from "../../shared/providers/shell/useShellLabel.js";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
2
3
  //#region src/chrome/notificationCenter/BellButton.tsx
3
- var n = ({ unreadCount: n, isOpen: r, onToggle: i }) => /* @__PURE__ */ t("button", {
4
- type: "button",
5
- onClick: i,
6
- className: "relative p-2 hover:bg-bg-sunken rounded-button text-text-primary transition-colors",
7
- "aria-label": `Notifications${n > 0 ? ` (${n} unread)` : ""}`,
8
- "aria-expanded": r,
9
- "aria-haspopup": "true",
10
- children: [/* @__PURE__ */ e("svg", {
11
- className: "w-icon-md h-icon-md",
12
- fill: "none",
13
- stroke: "currentColor",
14
- viewBox: "0 0 24 24",
15
- children: /* @__PURE__ */ e("path", {
16
- strokeLinecap: "round",
17
- strokeLinejoin: "round",
18
- strokeWidth: 2,
19
- d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"
20
- })
21
- }), n > 0 && /* @__PURE__ */ e("span", {
22
- className: "absolute -top-0.5 -right-0.5 flex items-center justify-center min-w-[18px] h-[18px] px-1 text-[10px] font-bold text-action-primary-text bg-action-primary-bg rounded-full border-2 border-bg-elevated",
23
- children: n > 9 ? "9+" : n
24
- })]
25
- });
4
+ var r = ({ unreadCount: r, isOpen: i, onToggle: a }) => {
5
+ let o = e();
6
+ return /* @__PURE__ */ n("button", {
7
+ type: "button",
8
+ onClick: a,
9
+ className: "relative p-2 hover:bg-bg-sunken rounded-button text-text-primary transition-colors",
10
+ "aria-label": r > 0 ? o("notifications.bellLabelUnread", "Notifications ({{count}} unread)", { count: r }) : o("notifications.bellLabel", "Notifications"),
11
+ "aria-expanded": i,
12
+ "aria-haspopup": "true",
13
+ children: [/* @__PURE__ */ t("svg", {
14
+ className: "w-icon-md h-icon-md",
15
+ fill: "none",
16
+ stroke: "currentColor",
17
+ viewBox: "0 0 24 24",
18
+ children: /* @__PURE__ */ t("path", {
19
+ strokeLinecap: "round",
20
+ strokeLinejoin: "round",
21
+ strokeWidth: 2,
22
+ d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"
23
+ })
24
+ }), r > 0 && /* @__PURE__ */ t("span", {
25
+ className: "absolute -top-0.5 -right-0.5 flex items-center justify-center min-w-[18px] h-[18px] px-1 text-[10px] font-bold text-action-primary-text bg-action-primary-bg rounded-full border-2 border-bg-elevated",
26
+ children: r > 9 ? "9+" : r
27
+ })]
28
+ });
29
+ };
26
30
  //#endregion
27
- export { n as BellButton };
31
+ export { r as BellButton };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Every key the shell chrome resolves through `useShellLabel`, with its English
3
+ * (BOFF-8060).
4
+ *
5
+ * WHY. The chrome sits on every page of every product, and its keys live in
6
+ * generic namespaces (`nav.*`, `appShell.*`, `contextSwitcher.*`, …) that each
7
+ * product used to copy into its own dictionary by hand. With the platform
8
+ * dictionary layered under every product (fallback < platform < product), the
9
+ * shared chrome needs these keys ONCE, in the `workspaces` dictionary. This is
10
+ * the list a seed is built from, so nothing has to be hand-extracted again.
11
+ *
12
+ * `src/chrome/__tests__/shellLabelManifest.test.ts` parses every module that
13
+ * calls `useShellLabel` and fails on a key missing here, an English that
14
+ * differs, or an entry nothing requests. Two keys are requested with two
15
+ * spellings of their English (pre-existing; the test lists them); the value
16
+ * here is the one the products already seeded.
17
+ *
18
+ * Pure data, no imports: loadable by any seed or extractor script.
19
+ */
20
+ export declare const SHELL_LABEL_MANIFEST: Readonly<Record<string, string>>;
21
+ /**
22
+ * The keys this change introduced (BOFF-8060, F1). Their translations are not
23
+ * in any dictionary yet: seed them into `workspaces` (S1). Until then every
24
+ * one renders its English, exactly as before.
25
+ */
26
+ export declare const SHELL_LABELS_ADDED_BOFF_8060: readonly string[];
27
+ //# sourceMappingURL=shellLabelManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shellLabelManifest.d.ts","sourceRoot":"","sources":["../../src/chrome/shellLabelManifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2DhE,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAqBxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarHeader.d.ts","sourceRoot":"","sources":["../../../src/chrome/sideNavigation/SidebarHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG3C,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAmDhD,CAAC"}
1
+ {"version":3,"file":"SidebarHeader.d.ts","sourceRoot":"","sources":["../../../src/chrome/sideNavigation/SidebarHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3C,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAoDhD,CAAC"}
@@ -1,37 +1,38 @@
1
- import { ChevronUp as e, PanelLeft as t } from "lucide-react";
2
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
1
+ import { useShellLabel as e } from "../../shared/providers/shell/useShellLabel.js";
2
+ import { ChevronUp as t, PanelLeft as n } from "lucide-react";
3
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
3
4
  //#region src/chrome/sideNavigation/SidebarHeader.tsx
4
- var i = ({ header: i, collapsed: a, expandedCount: o, onCollapseAll: s, onToggleCollapse: c, collapseLabel: l, expandLabel: u }) => {
5
- let d = a ? u : l;
6
- return /* @__PURE__ */ n("div", {
7
- className: `py-card-padding border-b border-border-subtle ${a ? "md:px-2" : "px-card-padding"}`,
8
- children: /* @__PURE__ */ r("div", {
9
- className: `flex items-center gap-2 ${a ? "justify-center" : ""}`,
5
+ var a = ({ header: a, collapsed: o, expandedCount: s, onCollapseAll: c, onToggleCollapse: l, collapseLabel: u, expandLabel: d }) => {
6
+ let f = e(), p = o ? d : u;
7
+ return /* @__PURE__ */ r("div", {
8
+ className: `py-card-padding border-b border-border-subtle ${o ? "md:px-2" : "px-card-padding"}`,
9
+ children: /* @__PURE__ */ i("div", {
10
+ className: `flex items-center gap-2 ${o ? "justify-center" : ""}`,
10
11
  children: [
11
- i && !a && /* @__PURE__ */ n("div", {
12
+ a && !o && /* @__PURE__ */ r("div", {
12
13
  className: "min-w-0 flex-1",
13
- children: i
14
+ children: a
14
15
  }),
15
- !a && o > 0 && /* @__PURE__ */ n("button", {
16
+ !o && s > 0 && /* @__PURE__ */ r("button", {
16
17
  type: "button",
17
- onClick: s,
18
+ onClick: c,
18
19
  className: "shrink-0 rounded-button p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
19
- title: "Collapse all",
20
- "aria-label": "Collapse all menu items",
21
- children: /* @__PURE__ */ n(e, { className: "size-4" })
20
+ title: f("nav.collapseAll", "Collapse all"),
21
+ "aria-label": f("nav.collapseAllHint", "Collapse all menu items"),
22
+ children: /* @__PURE__ */ r(t, { className: "size-4" })
22
23
  }),
23
- c && /* @__PURE__ */ n("button", {
24
+ l && /* @__PURE__ */ r("button", {
24
25
  type: "button",
25
- onClick: c,
26
+ onClick: l,
26
27
  className: "hidden shrink-0 rounded-button p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary md:block",
27
- "aria-label": d,
28
- "aria-expanded": !a,
29
- title: d,
30
- children: /* @__PURE__ */ n(t, { className: "size-5" })
28
+ "aria-label": p,
29
+ "aria-expanded": !o,
30
+ title: p,
31
+ children: /* @__PURE__ */ r(n, { className: "size-5" })
31
32
  })
32
33
  ]
33
34
  })
34
35
  });
35
36
  };
36
37
  //#endregion
37
- export { i as SidebarHeader };
38
+ export { a as SidebarHeader };
@@ -17,7 +17,12 @@ export interface LanguageReplyView {
17
17
  wanted: string;
18
18
  /** The language the i18n provider is in NOW. */
19
19
  locale: string;
20
- /** The provider is fetching translations. */
20
+ /**
21
+ * The provider is still fetching THE WANTED language's dictionary
22
+ * (`useI18n().isLocaleLoading(wanted)`). ★ BOFF-8823: not the provider-wide
23
+ * `isLoading` — after A -> B with A still in flight, A settling cleared that
24
+ * flag while B was loading, and the reply fell to English after the grace.
25
+ */
21
26
  isLoading: boolean;
22
27
  /** The sentence, made with the translator in force now, came back translated. */
23
28
  translatedNow: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"languageReply.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/appControls/languageReply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,wFAAwF;AACxF,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAKhD,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,CAO5E;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,WAAW,GACd,gBAAgB,GAAG,IAAI,CAkBzB"}
1
+ {"version":3,"file":"languageReply.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/appControls/languageReply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,wFAAwF;AACxF,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAKhD,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,CAO5E;AAED,0FAA0F;AAC1F,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,WAAW,GACd,gBAAgB,GAAG,IAAI,CAkBzB"}
@@ -39,8 +39,13 @@ import { AssistantModeConfig } from './conversation';
39
39
  * and `assistant` pills — the exact defect `AssistantModeSelector` fixed. Use
40
40
  * `assistantModeI18nCopy(modes)`, which takes the words from the product.
41
41
  * - A mode's `description` and `suggestions`, and the page label from
42
- * `describeCurrentPage()`, are rendered exactly as passed and never reach
43
- * `tr()`. Translate them in the product before passing them.
42
+ * `describeCurrentPage()`, are the product's words too. Since BOFF-8060 (F5)
43
+ * they are translated AT DISPLAY TIME under keys derived from their English
44
+ * (`suggestion.<mode>.<slug>`, `modeDescription.<mode>`, `page.<slug>`; see
45
+ * `productCopy.ts`). They stay out of the shared manifest, and
46
+ * `assistantI18nSeedCopy` emits them from the product's own modes and the
47
+ * `pageLabels` it passes — so a product passes its ENGLISH, never a
48
+ * pre-translated string (that would key the translation by itself).
44
49
  *
45
50
  * HOW A PRODUCT'S EXTRACTOR USES IT
46
51
  *
@@ -455,6 +460,9 @@ export declare const ASSISTANT_I18N_LITERAL_COPY: {
455
460
  readonly "voiceSession.speakerYou": "You";
456
461
  readonly "voiceSession.speaking": "Speaking — tap to stop";
457
462
  readonly "voiceSession.start": "Start a voice conversation";
463
+ readonly "voiceSession.streamNoticeBody": "Your voice is sent to Google Cloud Speech-to-Text and processed in the EU. We don't store the audio.";
464
+ readonly "voiceSession.streamNoticeContinue": "Continue";
465
+ readonly "voiceSession.streamNoticeNotNow": "Not now";
458
466
  readonly "voiceSession.title": "Voice conversation";
459
467
  readonly "voiceSession.transcript": "Voice conversation";
460
468
  readonly "voiceSession.transcriptClose": "Close the transcript";
@@ -543,8 +551,11 @@ export declare const ASSISTANT_I18N_SEED_COMPAT_COPY: Readonly<{
543
551
  * see `overrides` on `assistantI18nSeedCopy`.
544
552
  */
545
553
  export declare const ASSISTANT_I18N_MANIFEST: Readonly<Record<string, string>>;
546
- /** The part of a mode that decides its pill's key and English. */
547
- export type AssistantModeCopySource = Pick<AssistantModeConfig, "id" | "label" | "producesArtifacts">;
554
+ /**
555
+ * The part of a mode that decides its keys and English: the pill, plus (when
556
+ * given) its description and suggestion chips (BOFF-8060, F5).
557
+ */
558
+ export type AssistantModeCopySource = Pick<AssistantModeConfig, "id" | "label" | "producesArtifacts"> & Partial<Pick<AssistantModeConfig, "description" | "suggestions">>;
548
559
  /**
549
560
  * `mode.<id>` for each mode a product offers, in the product's own words.
550
561
  *
@@ -561,7 +572,9 @@ export declare function assistantModeI18nCopy(modes: readonly AssistantModeCopyS
561
572
  /**
562
573
  * Everything a product seeds for the shared assistant, as FULL keys under its
563
574
  * namespace: the manifest, its own mode labels, and its own English for any
564
- * shared key it has customised.
575
+ * shared key it has customised — plus its own display copy (BOFF-8060, F5):
576
+ * each mode's description and suggestion chips, and the `pageLabels` its
577
+ * `describeCurrentPage()` can return (pass every label it can produce).
565
578
  *
566
579
  * `namespace` is the id given to `AssistantProductProvider` /
567
580
  * `AssistantI18nProvider`; the keys are built by `assistantTranslationKey`, the
@@ -579,5 +592,7 @@ export declare function assistantI18nSeedCopy(args: {
579
592
  namespace: string;
580
593
  modes: readonly AssistantModeCopySource[];
581
594
  overrides?: Readonly<Record<string, string>>;
595
+ /** Every English label the product's `describeCurrentPage()` can return. */
596
+ pageLabels?: readonly string[];
582
597
  }): Record<string, string>;
583
598
  //# sourceMappingURL=i18nManifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i18nManifest.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/i18nManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAa1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0GG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2dG,CAAC;AAE5C,mDAAmD;AACnD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAW/E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgCtE,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,+BAA+B;;EAGjC,CAAC;AAEZ;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKjE,CAAC;AAEL,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,mBAAmB,EACnB,IAAI,GAAG,OAAO,GAAG,mBAAmB,CACrC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiCzB"}
1
+ {"version":3,"file":"i18nManifest.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/i18nManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAc1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+GG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+dG,CAAC;AAE5C,mDAAmD;AACnD,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAW/E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgCtE,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,+BAA+B;;EAGjC,CAAC;AAEZ;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKjE,CAAC;AAEL;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,mBAAmB,EACnB,IAAI,GAAG,OAAO,GAAG,mBAAmB,CACrC,GACC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,4EAA4E;IAC5E,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuCzB"}
@@ -7,10 +7,11 @@ import { INCOMPLETE_TURN_NOTICES as a } from "./streamBudget.js";
7
7
  import { STAGE_COPY as o, THINKING_PHRASES as s } from "./stageCopy.js";
8
8
  import { VOICE_MUTED_LABEL as c, VOICE_THINKING_LABEL as l } from "./voice/voiceStatus.js";
9
9
  import { ATTACHMENT_SOURCES as u } from "./attachmentSources.js";
10
- import { WRITE_PROPOSAL_ERROR_COPY as d } from "./writeProposalErrorCopy.js";
11
- import { WRITE_PROPOSAL_VOICE_COPY as f } from "./writeProposalVoice.js";
10
+ import { assistantProductCopyEntries as d } from "./productCopy.js";
11
+ import { WRITE_PROPOSAL_ERROR_COPY as f } from "./writeProposalErrorCopy.js";
12
+ import { WRITE_PROPOSAL_VOICE_COPY as p } from "./writeProposalVoice.js";
12
13
  //#region src/shared/assistant/i18nManifest.ts
13
- var p = {
14
+ var m = {
14
15
  "apiCalls.consentBody": "In Take action mode the assistant can read AND change your data — creating records, logging activity, updating details, and more, on your behalf.",
15
16
  "apiCalls.consentBody2": "It will describe what it is about to do and ask you to confirm before making a change. Only continue if you want the assistant to take actions for you.",
16
17
  "apiCalls.consentCancel": "Stay in Ask",
@@ -353,6 +354,9 @@ var p = {
353
354
  "voiceSession.speakerYou": "You",
354
355
  "voiceSession.speaking": "Speaking — tap to stop",
355
356
  "voiceSession.start": "Start a voice conversation",
357
+ "voiceSession.streamNoticeBody": "Your voice is sent to Google Cloud Speech-to-Text and processed in the EU. We don't store the audio.",
358
+ "voiceSession.streamNoticeContinue": "Continue",
359
+ "voiceSession.streamNoticeNotNow": "Not now",
356
360
  "voiceSession.title": "Voice conversation",
357
361
  "voiceSession.transcript": "Voice conversation",
358
362
  "voiceSession.transcriptClose": "Close the transcript",
@@ -418,39 +422,43 @@ var p = {
418
422
  "writeProposal.values": "Values",
419
423
  "writeProposal.variablesOmitted": "{{count}} more values not shown",
420
424
  "writeProposal.waitForTurn": "You can confirm once the assistant finishes replying."
421
- }, m = (e) => Object.fromEntries(e.map((e) => [e.key, e.fallback])), h = Object.freeze({
422
- ...m(Object.values(o)),
423
- ...m(s),
424
- ...m([l, c]),
425
- ...m(a),
426
- ...m(Object.values(i)),
427
- ...m(Object.values(r)),
428
- ...m(Object.values(d)),
429
- ...m(Object.values(f)),
425
+ }, h = (e) => Object.fromEntries(e.map((e) => [e.key, e.fallback])), g = Object.freeze({
426
+ ...h(Object.values(o)),
427
+ ...h(s),
428
+ ...h([l, c]),
429
+ ...h(a),
430
+ ...h(Object.values(i)),
431
+ ...h(Object.values(r)),
432
+ ...h(Object.values(f)),
433
+ ...h(Object.values(p)),
430
434
  ...Object.fromEntries(u.map((e) => [e.labelKey, e.labelFallback]))
431
- }), g = Object.freeze({ "outcome.usageDailyLimitReachedNoTime": "You've reached today's AI assistant limit. Try again tomorrow." }), _ = Object.freeze({
432
- ...p,
433
- ...h,
434
- ...g
435
+ }), _ = Object.freeze({ "outcome.usageDailyLimitReachedNoTime": "You've reached today's AI assistant limit. Try again tomorrow." }), v = Object.freeze({
436
+ ...m,
437
+ ...g,
438
+ ..._
435
439
  });
436
- function v(e) {
440
+ function y(e) {
437
441
  let r = e.map((e) => e.id).filter((e) => !n(e));
438
442
  if (r.length > 0) throw Error(`assistantModeI18nCopy: malformed mode id ${r.map((e) => JSON.stringify(e)).join(", ")}. Declare product modes with declareAssistantMode().`);
439
443
  return Object.fromEntries(e.map((e) => [`mode.${e.id}`, e.label || t(e)]));
440
444
  }
441
- function y(t) {
445
+ function b(t) {
442
446
  let n = {
443
- ..._,
444
- ...v(t.modes)
447
+ ...v,
448
+ ...y(t.modes)
445
449
  }, r = Object.entries(t.overrides ?? {}), i = r.filter(([e]) => !Object.hasOwn(n, e)).map(([e]) => e);
446
450
  if (i.length > 0) throw Error(`assistantI18nSeedCopy: no shared assistant key ${i.join(", ")} to override. Check the spelling, or that the key is a mode this product offers; a key fe-libs no longer requests belongs with the product's own keys.`);
447
451
  let a = r.filter(([, e]) => e.trim() === "").map(([e]) => e);
448
452
  if (a.length > 0) throw Error(`assistantI18nSeedCopy: blank English for ${a.join(", ")}. Omit the override to keep the shared English.`);
449
453
  let o = {
450
454
  ...n,
451
- ...Object.fromEntries(r)
455
+ ...Object.fromEntries(r),
456
+ ...d({
457
+ modes: t.modes,
458
+ pageLabels: t.pageLabels
459
+ })
452
460
  };
453
461
  return Object.fromEntries(Object.entries(o).map(([n, r]) => [e(t.namespace, n), r]));
454
462
  }
455
463
  //#endregion
456
- export { h as ASSISTANT_I18N_COMPUTED_COPY, p as ASSISTANT_I18N_LITERAL_COPY, _ as ASSISTANT_I18N_MANIFEST, g as ASSISTANT_I18N_SEED_COMPAT_COPY, y as assistantI18nSeedCopy, v as assistantModeI18nCopy };
464
+ export { g as ASSISTANT_I18N_COMPUTED_COPY, m as ASSISTANT_I18N_LITERAL_COPY, v as ASSISTANT_I18N_MANIFEST, _ as ASSISTANT_I18N_SEED_COMPAT_COPY, b as assistantI18nSeedCopy, y as assistantModeI18nCopy };
@@ -62,6 +62,7 @@ export * from './voice/handsfree/handsFreeSetting';
62
62
  export * from './voice/handsfree/micCapture';
63
63
  export * from './voice/handsfree/playbackReference';
64
64
  export * from './voice/handsfree/preRollRing';
65
+ export * from './voice/handsfree/streamingConfig';
65
66
  export * from './voice/handsfree/sttTransport';
66
67
  export * from './voice/handsfree/useHandsFreeInterrupt';
67
68
  export * from './voice/handsfree/vad';
@@ -89,6 +90,7 @@ export * from './i18nManifest';
89
90
  export * from './modeCopy';
90
91
  export * from './modeIds';
91
92
  export * from './modeCapabilities';
93
+ export * from './productCopy';
92
94
  export * from './adminModeSendGate';
93
95
  export * from './attachmentTurn';
94
96
  export * from './writeModeConsent';
@@ -209,6 +211,7 @@ export * from './ui/AssistantMessageItem';
209
211
  export * from './ui/AssistantMessageList';
210
212
  export * from './ui/AssistantTurnActivity';
211
213
  export * from './ui/voice/AssistantVoiceSession';
214
+ export * from './ui/voice/HandsFreePrivacyNotice';
212
215
  export * from './useAssistantApiAccess';
213
216
  export * from './useConversationTurns';
214
217
  export * from './transportErrors';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Display-time translation of the copy a PRODUCT hands the shared assistant
3
+ * (BOFF-8060, F5): its suggestion chips, its mode descriptions, and the page
4
+ * label from `describeCurrentPage()`.
5
+ *
6
+ * WHY. Products pass these as English constants, and the assistant rendered
7
+ * them exactly as passed, so the chips under "How can I help?" and the
8
+ * "Context: <page>" line stayed English in every locale (production check,
9
+ * 2026-10-07: BigConsole 8 chips / 6 page names, VibeControls 12 / 13).
10
+ *
11
+ * HOW. Each string gets a key DERIVED FROM ITS ENGLISH, under the product's
12
+ * assistant namespace:
13
+ *
14
+ * suggestion.<modeId>.<slug(english)> a suggestion chip
15
+ * modeDescription.<modeId> a mode's description
16
+ * page.<slug(english)> a page label
17
+ *
18
+ * `slug` is the lower-camel ASCII of the English ("Show overdue tasks" ->
19
+ * `showOverdueTasks`). Deriving the key from the words means:
20
+ * - a product needs no key table: `assistantI18nSeedCopy` emits these keys
21
+ * from the same mode list and page labels the product already passes;
22
+ * - when the English CHANGES, the key changes with it, so a stale translation
23
+ * of the old words can never be shown — the new English shows until the new
24
+ * key is translated.
25
+ *
26
+ * ★ Not `mode.<id>.suggestion.*`. `mode.<id>` is already a live LEAF (the
27
+ * pill label). The served dictionary COULD hold it as a branch too: the label
28
+ * would move to the branch's `_` slot, which `resolveTranslationValue` reads.
29
+ * This is a choice, not a limit. Separate families add no child under any
30
+ * live leaf, so no served key changes shape and a seed has no leaf/branch
31
+ * collisions to account for.
32
+ *
33
+ * ★★ THESE IDS ARE THE SEED CONTRACT. The prepared seeds (BigConsole B5,
34
+ * VibeControls V1) are generated by calling `assistantI18nSeedCopy` /
35
+ * `assistantProductCopyEntries`, never by re-deriving the slug elsewhere. The
36
+ * ids are pinned in `productCopy.test.ts` ("seed plan ids"). A change to this
37
+ * derivation re-keys every seeded translation, so regenerate those seeds with
38
+ * it.
39
+ *
40
+ * `modeDescription.<id>` is seeded, but no fe-libs UI displays a mode
41
+ * description yet. The key exists so a description can be translated once it
42
+ * is shown.
43
+ *
44
+ * ★ The model still reads English page context: `describeCurrentPage()` is
45
+ * unchanged and only its DISPLAY is translated. A clicked chip sends the text
46
+ * as displayed, i.e. localized (operator decision D-7, 2026-10-07): it is what
47
+ * the person saw and chose.
48
+ *
49
+ * Pure and import-free, so it loads in any test or extractor script.
50
+ */
51
+ /** Keys longer than this get a hash suffix instead of the full slug. */
52
+ export declare const MAX_COPY_SLUG_LENGTH = 64;
53
+ /**
54
+ * Lower-camel ASCII slug of an English string; `null` when nothing ASCII
55
+ * alphanumeric is left (such copy is shown as passed, never keyed).
56
+ *
57
+ * Over-long slugs keep a readable prefix plus a hash of the whole English, so
58
+ * two long chips that share a prefix still get different keys.
59
+ */
60
+ export declare function assistantCopySlug(english: string): string | null;
61
+ /** `suggestion.<modeId>.<slug>`, or null for copy that cannot be keyed. */
62
+ export declare function assistantSuggestionKey(modeId: string, english: string): string | null;
63
+ /** `modeDescription.<modeId>`. */
64
+ export declare function assistantModeDescriptionKey(modeId: string): string;
65
+ /** `page.<slug>`, or null for a label that cannot be keyed. */
66
+ export declare function assistantPageLabelKey(english: string): string | null;
67
+ /** Translate one piece of product copy, or return it unchanged when unkeyable. */
68
+ export declare function translateProductCopy(tr: (key: string, fallback: string) => string, key: string | null, english: string): string;
69
+ /** The relative keys and English for a product's modes and page labels. */
70
+ export declare function assistantProductCopyEntries(args: {
71
+ modes: readonly {
72
+ id: string;
73
+ description?: string;
74
+ suggestions?: readonly string[];
75
+ }[];
76
+ pageLabels?: readonly string[];
77
+ }): Record<string, string>;
78
+ //# sourceMappingURL=productCopy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productCopy.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/productCopy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAcvC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBhE;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAGf;AAED,kCAAkC;AAClC,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAGlC,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,EAC7C,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,EAAE,MAAM,GACd,MAAM,CAER;AAED,2EAA2E;AAC3E,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,KAAK,EAAE,SAAS;QACd,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KACjC,EAAE,CAAC;IACJ,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BzB"}
@@ -0,0 +1,45 @@
1
+ //#region src/shared/assistant/productCopy.ts
2
+ var e = 64, t = 2166136261, n = 16777619;
3
+ function r(e) {
4
+ let r = t;
5
+ for (let t = 0; t < e.length; t += 1) r ^= e.charCodeAt(t), r = Math.imul(r, n);
6
+ return (r >>> 0).toString(36);
7
+ }
8
+ function i(e) {
9
+ let t = e.normalize("NFKD").replace(/[̀-ͯ]/g, "").split(/[^A-Za-z0-9]+/).filter((e) => e.length > 0).map((e) => e.toLowerCase());
10
+ if (t.length === 0) return null;
11
+ let n = t.map((e, t) => t === 0 ? e : e.charAt(0).toUpperCase() + e.slice(1)).join("");
12
+ if (n.length <= 64) return n;
13
+ let i = r(e.trim());
14
+ return `${n.slice(0, 64 - i.length - 1)}H${i}`;
15
+ }
16
+ function a(e, t) {
17
+ let n = i(t);
18
+ return n === null ? null : `suggestion.${e}.${n}`;
19
+ }
20
+ function o(e) {
21
+ return `modeDescription.${e}`;
22
+ }
23
+ function s(e) {
24
+ let t = i(e);
25
+ return t === null ? null : `page.${t}`;
26
+ }
27
+ function c(e, t, n) {
28
+ return t === null ? n : e(t, n);
29
+ }
30
+ function l(e) {
31
+ let t = {}, n = (e, n) => {
32
+ if (e === null) return;
33
+ let r = t[e];
34
+ if (r !== void 0 && r !== n) throw Error(`assistantProductCopyEntries: ${JSON.stringify(r)} and ${JSON.stringify(n)} both map to ${e}. Reword one of them.`);
35
+ t[e] = n;
36
+ };
37
+ for (let t of e.modes) {
38
+ t.description && t.description.trim() !== "" && n(o(t.id), t.description);
39
+ for (let e of t.suggestions ?? []) n(a(t.id, e), e);
40
+ }
41
+ for (let t of e.pageLabels ?? []) n(s(t), t);
42
+ return t;
43
+ }
44
+ //#endregion
45
+ export { e as MAX_COPY_SLUG_LENGTH, i as assistantCopySlug, o as assistantModeDescriptionKey, s as assistantPageLabelKey, l as assistantProductCopyEntries, a as assistantSuggestionKey, c as translateProductCopy };
@@ -97,6 +97,14 @@ interface AssistantState {
97
97
  voiceGraceMs: VoiceGraceMs;
98
98
  /** BOFF-8613 H3: "Hands-free interrupt (beta)" - listen while the assistant answers. Default OFF. */
99
99
  handsFreeInterrupt: boolean;
100
+ /**
101
+ * BOFF-8613 H3: the version of the backend speech stream's privacy notice
102
+ * this profile accepted ("Continue"), or null. Persisted per profile, so the
103
+ * notice is shown once per person and again when its wording changes
104
+ * (`HANDS_FREE_STREAM_NOTICE_VERSION`). "Not now" is not stored: it holds
105
+ * for that conversation only.
106
+ */
107
+ handsFreeStreamNoticeAccepted: string | null;
100
108
  /**
101
109
  * With no `mode`, a new conversation in whatever is SELECTED: Auto's while
102
110
  * Auto is (BOFF-7800), otherwise the mode the person picked — never
@@ -178,6 +186,8 @@ interface AssistantState {
178
186
  /** Choose the voice session's end-of-speech grace (H1); other values are ignored. */
179
187
  setVoiceGraceMs: (ms: number) => void;
180
188
  setHandsFreeInterrupt: (enabled: boolean) => void;
189
+ /** Remember that this profile accepted the backend stream's privacy notice `noticeVersion`. */
190
+ acceptHandsFreeStreamNotice: (noticeVersion: string) => void;
181
191
  /**
182
192
  * Add a conversation read from the server (a header being opened). A
183
193
  * conversation already here is left exactly as it is: its local messages
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACV,+BAA+B,EAC/B,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,OAAO,EACP,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAY3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAOjE,UAAU,cAAc;IACtB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,IAAI,EAAE,aAAa,CAAC;IACpB;;;;;;;;;;OAUG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;IAC5E,oBAAoB,EAAE,OAAO,CAAC;IAC9B,+CAA+C;IAC/C,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC,CAAC;IACzE;;;;;;;;;;;;OAYG;IACH,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACnE;;;;;OAKG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;;;;;OASG;IACH,sBAAsB,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD;;;;;;;OAOG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;;;;;;OAUG;IACH,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC;;;;;OAKG;IACH,YAAY,EAAE,YAAY,CAAC;IAC3B,qGAAqG;IACrG,kBAAkB,EAAE,OAAO,CAAC;IAG5B;;;;;OAKG;IACH,kBAAkB,EAAE,CAClB,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,mBAAmB,CAAA;KAAE,KACzC,MAAM,CAAC;IACZ,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;;;;;;OAOG;IACH,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACvC,6EAA6E;IAC7E,mBAAmB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3E,yDAAyD;IACzD,cAAc,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,iBAAiB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACzE,UAAU,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CACb,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,IAAI,CAAC;IACV,YAAY,EAAE,CACZ,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KACpB,IAAI,CAAC;IACV;;;;;;;;OAQG;IACH,oBAAoB,EAAE,CACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC,KACrC,IAAI,CAAC;IACV;;;;;;;OAOG;IACH,yBAAyB,EAAE,CACzB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,2BAA2B,EACnC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,CAAC,EAAE,kBAAkB,GAAG,IAAI,KAC9B,IAAI,CAAC;IACV,2BAA2B,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,mBAAmB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,qBAAqB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,UAAU,EAAE,CACV,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,EAAE,sBAAsB,KAC3B,IAAI,CAAC;IACV,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,4EAA4E;IAC5E,2BAA2B,EAAE,CAC3B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,wBAAwB,GAAG,IAAI,KAC1C,IAAI,CAAC;IACV,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,oEAAoE;IACpE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1C,yEAAyE;IACzE,oBAAoB,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACpD,sEAAsE;IACtE,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,8FAA8F;IAC9F,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,8EAA8E;IAC9E,iBAAiB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5E,qFAAqF;IACrF,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,qBAAqB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAOlD;;;;OAIG;IACH,wBAAwB,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/D;;;;OAIG;IACH,mBAAmB,EAAE,CACnB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,SAAS,EAAE,OAAO,CAAC,qBAAqB,CAAC,KACtC,IAAI,CAAC;IACV,gGAAgG;IAChG,gBAAgB,EAAE,CAChB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,KAAK,EAAE,mBAAmB,EAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACpC,IAAI,CAAC;IACV;;;OAGG;IACH,qBAAqB,EAAE,CACrB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,qBAAqB,EAC7D,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAChC,IAAI,CAAC;IACV;;;;;OAKG;IACH,2BAA2B,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9D;;;;OAIG;IACH,kBAAkB,EAAE,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;CACtD;AAMD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC,CAAC;CAC1E,GAAG,0BAA0B,GAAG,IAAI,CAGpC;AAaD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,MAAM,EAC3D,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,CAAC,GACT,CAAC,CAiBH;AAgDD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EA6hB7B,CAAC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/store.ts"],"names":[],"mappings":"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"}