@burdenoff/fe-libs 2026.1024.2 → 2026.1024.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/dist/chrome/FooterBar.d.ts +1 -1
  2. package/dist/chrome/NativePageTransition.d.ts +1 -1
  3. package/dist/chrome/ProductPickerSheet.js +42 -42
  4. package/dist/chrome/ProductSwitcher.d.ts +8 -0
  5. package/dist/chrome/ProductSwitcher.js +83 -72
  6. package/dist/chrome/index.d.ts +9 -9
  7. package/dist/chrome/swipe/swipeMath.d.ts +1 -1
  8. package/dist/shared/assistant/api.d.ts +3 -3
  9. package/dist/shared/assistant/appControls/grammar.d.ts +21 -21
  10. package/dist/shared/assistant/appControls/languageReply.d.ts +1 -1
  11. package/dist/shared/assistant/appControls/names.d.ts +3 -3
  12. package/dist/shared/assistant/appControls/pageAdapters.d.ts +5 -5
  13. package/dist/shared/assistant/appControls/plan.d.ts +38 -38
  14. package/dist/shared/assistant/appControls/types.d.ts +15 -15
  15. package/dist/shared/assistant/appControls/useAssistantControl.d.ts +1 -1
  16. package/dist/shared/assistant/attachmentSources.d.ts +2 -2
  17. package/dist/shared/assistant/attachments.d.ts +5 -5
  18. package/dist/shared/assistant/autoRouting.d.ts +6 -6
  19. package/dist/shared/assistant/avatar/live/LiveAvatarMinutes.d.ts +24 -0
  20. package/dist/shared/assistant/avatar/live/LiveAvatarMinutes.js +161 -0
  21. package/dist/shared/assistant/avatar/live/LiveAvatarStage.js +95 -73
  22. package/dist/shared/assistant/avatar/live/LiveAvatarTabView.d.ts +6 -0
  23. package/dist/shared/assistant/avatar/live/LiveAvatarTabView.js +195 -171
  24. package/dist/shared/assistant/avatar/live/avatarSessionClient.d.ts +77 -1
  25. package/dist/shared/assistant/avatar/live/avatarSessionClient.js +193 -72
  26. package/dist/shared/assistant/avatar/live/createLiveAvatarSeam.d.ts +14 -1
  27. package/dist/shared/assistant/avatar/live/createLiveAvatarSeam.js +65 -40
  28. package/dist/shared/assistant/avatar/live/liveAvatarController.d.ts +64 -2
  29. package/dist/shared/assistant/avatar/live/liveAvatarController.js +403 -242
  30. package/dist/shared/assistant/avatar/live/liveAvatarMinutesView.d.ts +127 -0
  31. package/dist/shared/assistant/avatar/live/liveAvatarMinutesView.js +168 -0
  32. package/dist/shared/assistant/avatar/live/liveAvatarStatus.d.ts +3 -0
  33. package/dist/shared/assistant/avatar/live/liveAvatarStatus.js +11 -7
  34. package/dist/shared/assistant/avatar/useAvatarCopy.d.ts +127 -2
  35. package/dist/shared/assistant/avatar/useAvatarCopy.js +116 -7
  36. package/dist/shared/assistant/conversation.d.ts +20 -20
  37. package/dist/shared/assistant/displayContent.d.ts +4 -4
  38. package/dist/shared/assistant/documentText.d.ts +3 -3
  39. package/dist/shared/assistant/exportConversation.d.ts +1 -1
  40. package/dist/shared/assistant/history/historyControls.d.ts +4 -4
  41. package/dist/shared/assistant/history/historyErrors.d.ts +3 -3
  42. package/dist/shared/assistant/history/historyList.d.ts +5 -5
  43. package/dist/shared/assistant/history/historyMerge.d.ts +4 -4
  44. package/dist/shared/assistant/history/historyOperations.d.ts +1 -1
  45. package/dist/shared/assistant/history/historySearch.d.ts +5 -5
  46. package/dist/shared/assistant/history/historyStatus.d.ts +1 -1
  47. package/dist/shared/assistant/history/historyTypes.d.ts +12 -12
  48. package/dist/shared/assistant/history/profileBoundStorage.d.ts +2 -2
  49. package/dist/shared/assistant/i18n.d.ts +1 -1
  50. package/dist/shared/assistant/i18nManifest.d.ts +566 -535
  51. package/dist/shared/assistant/i18nManifest.js +55 -24
  52. package/dist/shared/assistant/index.d.ts +2 -0
  53. package/dist/shared/assistant/liveDeltas.d.ts +1 -1
  54. package/dist/shared/assistant/liveOverlay.d.ts +1 -1
  55. package/dist/shared/assistant/localUiCommandCopy.d.ts +1 -1
  56. package/dist/shared/assistant/localUiCommands.d.ts +22 -22
  57. package/dist/shared/assistant/localeCommands/engine.d.ts +5 -5
  58. package/dist/shared/assistant/localeCommands/evaluate.d.ts +8 -8
  59. package/dist/shared/assistant/localeCommands/fold.d.ts +2 -2
  60. package/dist/shared/assistant/localeCommands/frames.d.ts +3 -3
  61. package/dist/shared/assistant/localeCommands/gate.d.ts +3 -3
  62. package/dist/shared/assistant/localeCommands/languageNames.d.ts +1 -1
  63. package/dist/shared/assistant/localeCommands/normalise.d.ts +1 -1
  64. package/dist/shared/assistant/localeCommands/types.d.ts +4 -4
  65. package/dist/shared/assistant/modeCapabilities.d.ts +1 -1
  66. package/dist/shared/assistant/modeCopy.d.ts +2 -2
  67. package/dist/shared/assistant/permissionError.d.ts +2 -2
  68. package/dist/shared/assistant/preview/surfaceState.d.ts +1 -1
  69. package/dist/shared/assistant/preview/types.d.ts +5 -5
  70. package/dist/shared/assistant/preview/writeActionResults.d.ts +1 -1
  71. package/dist/shared/assistant/prewarm.d.ts +5 -5
  72. package/dist/shared/assistant/quota.d.ts +2 -2
  73. package/dist/shared/assistant/sandboxReadiness.d.ts +2 -2
  74. package/dist/shared/assistant/speech/speechFeed.d.ts +3 -3
  75. package/dist/shared/assistant/turnOutcome.d.ts +2 -2
  76. package/dist/shared/assistant/turnProgress.d.ts +1 -1
  77. package/dist/shared/assistant/turnState.d.ts +1 -1
  78. package/dist/shared/assistant/turnStream.d.ts +3 -3
  79. package/dist/shared/assistant/turnTimeline.d.ts +13 -13
  80. package/dist/shared/assistant/turnTimingReport.d.ts +1 -1
  81. package/dist/shared/assistant/turnTimingReporter.d.ts +3 -3
  82. package/dist/shared/assistant/ui/AssistantAvatarTabs.d.ts +1 -1
  83. package/dist/shared/assistant/ui/AssistantChatArea.js +17 -17
  84. package/dist/shared/assistant/ui/AssistantHistoryNotices.d.ts +1 -1
  85. package/dist/shared/assistant/ui/AssistantMarkdownRenderer.d.ts +5 -2
  86. package/dist/shared/assistant/ui/AssistantToolActivity.d.ts +1 -1
  87. package/dist/shared/assistant/ui/AssistantUiOfferLink.d.ts +2 -2
  88. package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts +3 -3
  89. package/dist/shared/assistant/ui/assistantLiveAvatarSeam.d.ts +10 -2
  90. package/dist/shared/assistant/ui/avatar/AssistantAvatarTab.js +78 -76
  91. package/dist/shared/assistant/ui/avatar/avatarAskGate.d.ts +2 -0
  92. package/dist/shared/assistant/ui/avatar/avatarAskGate.js +1 -0
  93. package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts +1 -1
  94. package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts +1 -1
  95. package/dist/shared/assistant/ui/leaveConfirmFocus.d.ts +1 -1
  96. package/dist/shared/assistant/ui/leaveConfirmNavigate.d.ts +3 -3
  97. package/dist/shared/assistant/ui/panelOverlays.d.ts +5 -5
  98. package/dist/shared/assistant/ui/useVoiceSession.d.ts +5 -5
  99. package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts +4 -4
  100. package/dist/shared/assistant/ui/useWriteProposals.d.ts +2 -2
  101. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts +1 -1
  102. package/dist/shared/assistant/ui/voice/VoiceCaption.d.ts +1 -1
  103. package/dist/shared/assistant/ui/voice/VoiceWaveform.d.ts +1 -1
  104. package/dist/shared/assistant/ui/voice/voiceSessionEscape.d.ts +2 -2
  105. package/dist/shared/assistant/ui/voice/voiceStartGate.d.ts +6 -6
  106. package/dist/shared/assistant/ui/writeProposalPresentation.d.ts +1 -1
  107. package/dist/shared/assistant/uiActions/actOnResolve.d.ts +5 -5
  108. package/dist/shared/assistant/uiActions/assistantHref.d.ts +2 -2
  109. package/dist/shared/assistant/uiActions/backStack.d.ts +1 -1
  110. package/dist/shared/assistant/uiActions/deixis.d.ts +3 -3
  111. package/dist/shared/assistant/uiActions/entityRoutes.d.ts +1 -1
  112. package/dist/shared/assistant/uiActions/navigationOutcome.d.ts +8 -8
  113. package/dist/shared/assistant/uiActions/offerYesOnSurface.d.ts +1 -1
  114. package/dist/shared/assistant/uiActions/resolveTarget.d.ts +2 -2
  115. package/dist/shared/assistant/uiActions/uiOffers.d.ts +5 -5
  116. package/dist/shared/assistant/usageReporting.d.ts +2 -2
  117. package/dist/shared/assistant/useWorkspaceWriteAccess.d.ts +1 -1
  118. package/dist/shared/assistant/voice/affirmations.d.ts +1 -1
  119. package/dist/shared/assistant/voice/handsFree.d.ts +3 -3
  120. package/dist/shared/assistant/voice/handsfree/bargeIn.d.ts +5 -5
  121. package/dist/shared/assistant/voice/handsfree/echoGate.d.ts +6 -6
  122. package/dist/shared/assistant/voice/handsfree/handsFreeController.d.ts +7 -7
  123. package/dist/shared/assistant/voice/handsfree/handsFreeSetting.d.ts +2 -2
  124. package/dist/shared/assistant/voice/handsfree/micCapture.d.ts +1 -1
  125. package/dist/shared/assistant/voice/handsfree/playbackReference.d.ts +1 -1
  126. package/dist/shared/assistant/voice/handsfree/sttTransport.d.ts +3 -3
  127. package/dist/shared/assistant/voice/handsfree/useHandsFreeInterrupt.d.ts +4 -4
  128. package/dist/shared/assistant/voice/handsfree/vad.d.ts +1 -1
  129. package/dist/shared/assistant/voice/speechPlayback.d.ts +7 -7
  130. package/dist/shared/assistant/voice/useVoiceInput.d.ts +1 -1
  131. package/dist/shared/assistant/voice/voiceReopen.d.ts +8 -8
  132. package/dist/shared/assistant/writeConfirmSeam.d.ts +1 -1
  133. package/dist/shared/assistant/writeModeConsent.d.ts +7 -7
  134. package/dist/shared/assistant/writeProposalDiscovery.d.ts +3 -3
  135. package/dist/shared/assistant/writeProposalErrorCopy.d.ts +1 -1
  136. package/dist/shared/assistant/writeProposals.d.ts +23 -23
  137. package/dist/shared/assistant/writeReplyBinder.d.ts +11 -11
  138. package/dist/shared/assistant/writeReplySend.d.ts +7 -7
  139. package/dist/shared/components/LandingOrDashboardRedirect.d.ts +18 -3
  140. package/dist/shared/components/LandingOrDashboardRedirect.js +58 -28
  141. package/dist/shared/components/index.d.ts +2 -1
  142. package/dist/shared/events/index.d.ts +2 -1
  143. package/dist/shared/hooks/shell/globalSearchError.d.ts +2 -2
  144. package/dist/shared/navigation/productSwitchHandoff.d.ts +45 -0
  145. package/dist/shared/navigation/productSwitchHandoff.js +27 -0
  146. package/dist/shared/navigation/unsavedChanges.d.ts +1 -1
  147. package/dist/shared/utils/index.d.ts +3 -3
  148. package/dist/shared-assistant.js +227 -225
  149. package/dist/shared-components.js +7 -6
  150. package/dist/shared.js +71 -70
  151. package/package.json +3 -2
@@ -1,145 +1,167 @@
1
1
  import { useAvatarCopy as e } from "../useAvatarCopy.js";
2
- import { liveAvatarStatusText as t } from "./liveAvatarStatus.js";
3
- import { useCallback as n, useEffect as r, useId as i, useRef as a, useSyncExternalStore as o } from "react";
4
- import { Video as s, VideoOff as c, Volume2 as l } from "lucide-react";
5
- import { jsx as u, jsxs as d } from "react/jsx-runtime";
2
+ import { liveAvatarMinutesBlockStart as t, liveAvatarMinutesView as n } from "./liveAvatarMinutesView.js";
3
+ import { liveAvatarStatusText as r } from "./liveAvatarStatus.js";
4
+ import { useCallback as i, useEffect as a, useId as o, useRef as s, useSyncExternalStore as c } from "react";
5
+ import { Video as l, VideoOff as u, Volume2 as d } from "lucide-react";
6
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
6
7
  //#region src/shared/assistant/avatar/live/LiveAvatarStage.tsx
7
- var f = "inline-flex h-8 items-center gap-1.5 rounded-full border border-border-default bg-bg-elevated px-3 text-xs font-medium text-text-secondary transition-colors hover:bg-bg-raised hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong aria-disabled:cursor-default aria-disabled:opacity-60", p = "inline-flex h-8 cursor-pointer items-center gap-1.5 rounded-full border px-3 text-xs font-medium transition-colors focus-within:ring-2 focus-within:ring-border-strong", m = "inline-flex h-8 items-center rounded-full bg-action-primary-bg px-3 text-xs font-medium text-action-primary-text transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong aria-disabled:cursor-default aria-disabled:opacity-60", h = ({ controller: h, expanded: g, fallback: _, avatarNames: v }) => {
8
- let y = e(), b = i(), x = i(), S = i(), C = a(null), w = a(null), T = n((e) => {
8
+ var m = "inline-flex h-8 items-center gap-1.5 rounded-full border border-border-default bg-bg-elevated px-3 text-xs font-medium text-text-secondary transition-colors hover:bg-bg-raised hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong aria-disabled:cursor-default aria-disabled:opacity-60", h = "inline-flex h-8 cursor-pointer items-center gap-1.5 rounded-full border px-3 text-xs font-medium transition-colors focus-within:ring-2 focus-within:ring-border-strong", g = "inline-flex h-8 items-center rounded-full bg-action-primary-bg px-3 text-xs font-medium text-action-primary-text transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong aria-disabled:cursor-default aria-disabled:opacity-60", _ = ({ controller: _, expanded: v, fallback: y, avatarNames: b }) => {
9
+ let x = e(), S = o(), C = o(), w = o(), T = o(), E = s(null), D = s(null), O = i((e) => {
9
10
  e?.focus();
10
- }, []), E = n((e) => (w.current = e, () => {
11
- w.current = null, document.activeElement === e && C.current?.focus();
12
- }), []), D = o(h.subscribe, h.getSnapshot, h.getSnapshot);
13
- r(() => (h.setStageMounted(!0), () => h.setStageMounted(!1)), [h]);
14
- let { phase: O } = D, k = O === "starting" || O === "connecting" || O === "ready" || O === "ending", A = O === "checking" || O === "ending", j = Date.now(), M = D.retryAt !== null && D.retryAt > j, N = t(D, y, j), P = (e, t) => v?.[e] ?? `${y.chooserLabel} ${t + 1}`;
15
- return /* @__PURE__ */ d("div", {
16
- ref: C,
11
+ }, []), k = i((e) => (D.current = e, () => {
12
+ D.current = null, document.activeElement === e && E.current?.focus();
13
+ }), []), A = c(_.subscribe, _.getSnapshot, _.getSnapshot);
14
+ a(() => (_.setStageMounted(!0), () => _.setStageMounted(!1)), [_]);
15
+ let { phase: j } = A, M = j === "starting" || j === "connecting" || j === "ready" || j === "ending", N = j === "checking" || j === "ending", P = Date.now(), F = A.retryAt !== null && A.retryAt > P, I = r(A, x, P), L = n({
16
+ snapshot: A,
17
+ access: { status: "absent" },
18
+ now: P
19
+ }, x)?.stageLines ?? [], R = t(A, P), z = F || R, B = F ? `${S} ${C}` : R ? [
20
+ S,
21
+ I === null ? null : C,
22
+ L.length > 0 ? T : null
23
+ ].filter((e) => e !== null).join(" ") : S, V = (e, t) => b?.[e] ?? `${x.chooserLabel} ${t + 1}`;
24
+ return /* @__PURE__ */ p("div", {
25
+ ref: E,
17
26
  tabIndex: -1,
18
27
  className: "flex flex-col items-center gap-2 focus:outline-none",
19
28
  "data-testid": "assistant-live-avatar",
20
29
  children: [
21
- k ? /* @__PURE__ */ d("div", {
22
- className: `relative overflow-hidden rounded-2xl border border-border-subtle bg-bg-sunken ${g ? "size-64" : "size-40"}`,
30
+ M ? /* @__PURE__ */ p("div", {
31
+ className: `relative overflow-hidden rounded-2xl border border-border-subtle bg-bg-sunken ${v ? "size-64" : "size-40"}`,
23
32
  "data-testid": "assistant-live-avatar-frame",
24
- "data-phase": O,
33
+ "data-phase": j,
25
34
  children: [
26
- /* @__PURE__ */ u("video", {
27
- ref: h.attachVideo,
28
- className: `size-full object-cover ${D.videoReady ? "" : "invisible"}`,
29
- "aria-label": y.stageLabel,
35
+ /* @__PURE__ */ f("video", {
36
+ ref: _.attachVideo,
37
+ className: `size-full object-cover ${A.videoReady ? "" : "invisible"}`,
38
+ "aria-label": x.stageLabel,
30
39
  autoPlay: !0,
31
40
  muted: !0,
32
41
  playsInline: !0,
33
42
  "data-testid": "assistant-live-avatar-video"
34
43
  }),
35
- D.videoReady ? null : /* @__PURE__ */ u("p", {
44
+ A.videoReady ? null : /* @__PURE__ */ f("p", {
36
45
  className: "absolute inset-0 flex items-center justify-center p-3 text-center text-xs text-text-muted",
37
- children: O === "ending" ? y.stateEnding : O === "connecting" ? y.stageWaiting : y.stateStarting
46
+ children: j === "ending" ? x.stateEnding : j === "connecting" ? x.stageWaiting : x.stateStarting
38
47
  }),
39
- D.audioBlocked ? /* @__PURE__ */ d("button", {
48
+ A.audioBlocked ? /* @__PURE__ */ p("button", {
40
49
  type: "button",
41
- onClick: () => h.resumeAudio(),
50
+ onClick: () => _.resumeAudio(),
42
51
  className: "absolute inset-x-2 bottom-2 inline-flex items-center justify-center gap-1.5 rounded-xl bg-bg-elevated px-2 py-1.5 text-xs font-medium text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong",
43
52
  "data-testid": "assistant-live-avatar-sound",
44
- children: [/* @__PURE__ */ u(l, {
53
+ children: [/* @__PURE__ */ f(d, {
45
54
  className: "size-4 shrink-0",
46
55
  "aria-hidden": "true"
47
- }), /* @__PURE__ */ u("span", { children: y.problem("playback-blocked") })]
56
+ }), /* @__PURE__ */ f("span", { children: x.problem("playback-blocked") })]
48
57
  }) : null
49
58
  ]
50
- }) : _,
51
- D.offered || k ? /* @__PURE__ */ d("button", {
52
- ref: E,
59
+ }) : y,
60
+ A.offered || M ? /* @__PURE__ */ p("button", {
61
+ ref: k,
53
62
  type: "button",
54
63
  onClick: () => {
55
- A || (k ? h.switchOff() : O === "choosing" ? h.cancelChoice() : h.requestOn());
64
+ N || (M ? _.switchOff() : j === "choosing" ? _.cancelChoice() : _.requestOn());
56
65
  },
57
- className: f,
58
- "aria-pressed": k,
59
- title: y.toggleHint,
60
- "aria-disabled": A,
66
+ className: m,
67
+ "aria-pressed": M,
68
+ title: x.toggleHint,
69
+ "aria-disabled": N,
61
70
  "data-testid": "assistant-live-avatar-toggle",
62
- children: [u(k ? c : s, {
71
+ children: [f(M ? u : l, {
63
72
  className: "size-4",
64
73
  "aria-hidden": "true"
65
- }), /* @__PURE__ */ u("span", { children: y.toggle })]
74
+ }), /* @__PURE__ */ f("span", { children: x.toggle })]
66
75
  }) : null,
67
- O === "choosing" ? /* @__PURE__ */ d("fieldset", {
76
+ j === "choosing" ? /* @__PURE__ */ p("fieldset", {
68
77
  className: "flex max-w-xs flex-col gap-2 rounded-xl border border-border-default bg-bg-elevated p-3 text-start",
69
78
  "data-testid": "assistant-live-avatar-consent",
70
79
  children: [
71
- /* @__PURE__ */ u("legend", {
80
+ /* @__PURE__ */ f("legend", {
72
81
  className: "sr-only",
73
- children: y.toggle
82
+ children: x.toggle
74
83
  }),
75
- D.avatars.length > 1 ? /* @__PURE__ */ d("fieldset", {
84
+ A.avatars.length > 1 ? /* @__PURE__ */ p("fieldset", {
76
85
  className: "flex flex-wrap gap-1.5",
77
86
  "data-testid": "assistant-live-avatar-chooser",
78
- children: [/* @__PURE__ */ u("legend", {
87
+ children: [/* @__PURE__ */ f("legend", {
79
88
  className: "sr-only",
80
- children: y.chooserTitle
81
- }), D.avatars.map((e, t) => {
82
- let n = e === D.selectedAvatarId, r = P(e, t);
83
- return /* @__PURE__ */ d("label", {
84
- className: `${p} ${n ? "border-transparent bg-action-primary-bg text-action-primary-text" : "border-border-default bg-bg-elevated text-text-secondary hover:bg-bg-raised hover:text-text-primary"}`,
85
- title: n ? y.chooserSelected(r) : y.chooserOption(r),
86
- children: [/* @__PURE__ */ u("input", {
89
+ children: x.chooserTitle
90
+ }), A.avatars.map((e, t) => {
91
+ let n = e === A.selectedAvatarId, r = V(e, t);
92
+ return /* @__PURE__ */ p("label", {
93
+ className: `${h} ${n ? "border-transparent bg-action-primary-bg text-action-primary-text" : "border-border-default bg-bg-elevated text-text-secondary hover:bg-bg-raised hover:text-text-primary"}`,
94
+ title: n ? x.chooserSelected(r) : x.chooserOption(r),
95
+ children: [/* @__PURE__ */ f("input", {
87
96
  type: "radio",
88
- name: S,
97
+ name: w,
89
98
  value: e,
90
99
  checked: n,
91
- onChange: () => h.selectAvatar(e),
100
+ onChange: () => _.selectAvatar(e),
92
101
  className: "sr-only",
93
102
  "data-avatar-id": e
94
103
  }), r]
95
104
  }, e);
96
105
  })]
97
106
  }) : null,
98
- /* @__PURE__ */ u("p", {
99
- ref: T,
100
- id: b,
107
+ /* @__PURE__ */ f("p", {
108
+ ref: O,
109
+ id: S,
101
110
  tabIndex: -1,
102
111
  className: "text-xs text-text-secondary focus:outline-none",
103
112
  "data-testid": "assistant-live-avatar-disclosure",
104
- children: y.consent
113
+ children: x.consent
105
114
  }),
106
- /* @__PURE__ */ d("div", {
115
+ L.length > 0 ? /* @__PURE__ */ f("div", {
116
+ id: T,
117
+ className: "flex flex-col gap-0.5 text-xs text-text-secondary",
118
+ "data-testid": "assistant-live-avatar-minutes",
119
+ children: L.map((e) => /* @__PURE__ */ f("p", {
120
+ "data-testid": "assistant-live-avatar-minutes-line",
121
+ children: e
122
+ }, e))
123
+ }) : null,
124
+ /* @__PURE__ */ p("div", {
107
125
  className: "flex justify-end gap-2",
108
- children: [/* @__PURE__ */ u("button", {
126
+ children: [/* @__PURE__ */ f("button", {
109
127
  type: "button",
110
128
  onClick: () => {
111
- w.current?.focus(), h.cancelChoice();
129
+ D.current?.focus(), _.cancelChoice();
112
130
  },
113
- className: f,
114
- children: y.consentCancel
115
- }), /* @__PURE__ */ u("button", {
131
+ className: m,
132
+ children: x.consentCancel
133
+ }), /* @__PURE__ */ f("button", {
116
134
  type: "button",
117
135
  onClick: () => {
118
- if (M) {
119
- h.recheckRetry();
136
+ if (F) {
137
+ _.recheckRetry();
120
138
  return;
121
139
  }
122
- w.current?.focus(), h.confirm();
140
+ if (R) {
141
+ A.retryAt !== null && _.recheckRetry();
142
+ return;
143
+ }
144
+ D.current?.focus(), _.confirm();
123
145
  },
124
- "aria-describedby": M ? `${b} ${x}` : b,
125
- "aria-disabled": M,
126
- className: m,
127
- disabled: D.selectedAvatarId === null,
146
+ "aria-describedby": B,
147
+ "aria-disabled": z,
148
+ className: g,
149
+ disabled: A.selectedAvatarId === null,
128
150
  "data-testid": "assistant-live-avatar-confirm",
129
- children: y.consentConfirm
151
+ children: x.consentConfirm
130
152
  })]
131
153
  })
132
154
  ]
133
155
  }) : null,
134
- /* @__PURE__ */ u("p", {
135
- id: x,
136
- className: N === null ? "sr-only" : "max-w-xs text-center text-xs text-text-muted",
156
+ /* @__PURE__ */ f("p", {
157
+ id: C,
158
+ className: I === null ? "sr-only" : "max-w-xs text-center text-xs text-text-muted",
137
159
  role: "status",
138
160
  "data-testid": "assistant-live-avatar-status",
139
- children: N ?? ""
161
+ children: I ?? ""
140
162
  })
141
163
  ]
142
164
  });
143
165
  };
144
166
  //#endregion
145
- export { h as LiveAvatarStageView };
167
+ export { _ as LiveAvatarStageView };
@@ -5,6 +5,7 @@ import { LiveAvatarTabProps } from '../../ui/assistantLiveAvatarSeam';
5
5
  import { AvatarVoiceDefault, AvatarVoicePreference } from '../avatarPreferences';
6
6
  import { LiveAvatarVoices } from './avatarVoice';
7
7
  import { LiveAvatarController } from './liveAvatarController';
8
+ import { LiveAvatarMinutesPurchase } from './liveAvatarMinutesView';
8
9
  /** The person's avatar voice choice: read by the engine decorator per reply, written by the tab's select. STABLE. */
9
10
  export interface LiveAvatarVoiceStore {
10
11
  getState(): AvatarVoicePreference;
@@ -24,6 +25,11 @@ export interface LiveAvatarTabViewProps extends LiveAvatarTabProps {
24
25
  readonly voiceStore: LiveAvatarVoiceStore;
25
26
  /** Wall-clock milliseconds: the retry time and the Turn off guard. Tests pass their own. */
26
27
  readonly now?: () => number;
28
+ /**
29
+ * ★ BOFF-9446: the host's purchase access (`LiveAvatarSeamOptions.minutesPurchase`, copied once by the seam). Absent: nobody is
30
+ * offered "See plans" here.
31
+ */
32
+ readonly minutesPurchase?: LiveAvatarMinutesPurchase;
27
33
  }
28
34
  /** A voice name as the person reads it: a hosted voice by its speaker ("Kore"), any other by its own name. */
29
35
  export declare function avatarVoiceDisplayName(name: string): string;