@assistant-ui/react 0.15.31 → 0.15.33

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 (228) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +1 -2
  2. package/dist/adapters/GeminiLiveVoiceAdapter.d.ts +26 -0
  3. package/dist/adapters/GeminiLiveVoiceAdapter.d.ts.map +1 -0
  4. package/dist/adapters/GeminiLiveVoiceAdapter.js +346 -0
  5. package/dist/adapters/GeminiLiveVoiceAdapter.js.map +1 -0
  6. package/dist/adapters/OpenAIRealtimeVoiceAdapter.js +1 -2
  7. package/dist/adapters/gemini-live/audio.d.ts +27 -0
  8. package/dist/adapters/gemini-live/audio.d.ts.map +1 -0
  9. package/dist/adapters/gemini-live/audio.js +291 -0
  10. package/dist/adapters/gemini-live/audio.js.map +1 -0
  11. package/dist/assistant-transport.js +1 -2
  12. package/dist/cloud-renderer/CloudRendererHost.js +1 -2
  13. package/dist/context/ReadonlyStore.js +1 -2
  14. package/dist/context/providers/MessageProvider.js +1 -2
  15. package/dist/context/providers/ThreadViewportProvider.js +1 -2
  16. package/dist/context/react/ThreadViewportContext.js +1 -2
  17. package/dist/context/react/utils/createContextHook.js +1 -2
  18. package/dist/context/react/utils/createContextStoreHook.js +1 -2
  19. package/dist/context/stores/ThreadViewport.js +2 -3
  20. package/dist/devtools/DevToolsHooks.js +1 -2
  21. package/dist/hooks/useMessageQuote.js +1 -2
  22. package/dist/hooks/useMessageTiming.js +1 -2
  23. package/dist/hooks/useToolCallElapsed.js +1 -2
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -1
  27. package/dist/internal.js +2 -3
  28. package/dist/legacy-runtime/AssistantRuntimeProvider.js +1 -2
  29. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  30. package/dist/mcp-apps/McpAppRenderer.js +4 -4
  31. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  32. package/dist/mcp-apps/McpAppsRemoteHost.js +1 -2
  33. package/dist/mcp-apps/app-frame.js +2 -3
  34. package/dist/mcp-apps/bridge.js +1 -2
  35. package/dist/mcp-apps/csp.js +1 -2
  36. package/dist/mcp-apps/types.js +1 -2
  37. package/dist/mcp-apps/utils.js +1 -2
  38. package/dist/model-context/frame/useAssistantFrameHost.js +1 -2
  39. package/dist/model-context/makeAssistantVisible.js +1 -2
  40. package/dist/primitives/actionBar/ActionBarCopy.js +1 -2
  41. package/dist/primitives/actionBar/ActionBarEdit.js +1 -2
  42. package/dist/primitives/actionBar/ActionBarExportMarkdown.js +1 -2
  43. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +1 -2
  44. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +1 -2
  45. package/dist/primitives/actionBar/ActionBarInteractionContext.js +1 -2
  46. package/dist/primitives/actionBar/ActionBarReload.js +1 -2
  47. package/dist/primitives/actionBar/ActionBarRoot.js +1 -2
  48. package/dist/primitives/actionBar/ActionBarSpeak.js +1 -2
  49. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +1 -2
  50. package/dist/primitives/actionBar/useActionBarFloatStatus.js +1 -2
  51. package/dist/primitives/actionBar.js +1 -2
  52. package/dist/primitives/actionBarMore/ActionBarMoreContent.js +1 -2
  53. package/dist/primitives/actionBarMore/ActionBarMoreItem.js +1 -2
  54. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +1 -2
  55. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +1 -2
  56. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +1 -2
  57. package/dist/primitives/actionBarMore/scope.js +1 -2
  58. package/dist/primitives/actionBarMore.js +1 -2
  59. package/dist/primitives/assistantModal/AssistantModalAnchor.js +1 -2
  60. package/dist/primitives/assistantModal/AssistantModalContent.js +1 -2
  61. package/dist/primitives/assistantModal/AssistantModalRoot.js +1 -2
  62. package/dist/primitives/assistantModal/AssistantModalTrigger.js +1 -2
  63. package/dist/primitives/assistantModal/popoverRenderPrimitives.js +1 -2
  64. package/dist/primitives/assistantModal/scope.js +1 -2
  65. package/dist/primitives/assistantModal.js +1 -2
  66. package/dist/primitives/attachment/AttachmentName.js +1 -2
  67. package/dist/primitives/attachment/AttachmentRemove.js +1 -2
  68. package/dist/primitives/attachment/AttachmentRoot.js +1 -2
  69. package/dist/primitives/attachment/AttachmentThumb.js +1 -2
  70. package/dist/primitives/attachment.js +1 -2
  71. package/dist/primitives/branchPicker/BranchPickerCount.js +1 -2
  72. package/dist/primitives/branchPicker/BranchPickerNext.js +1 -2
  73. package/dist/primitives/branchPicker/BranchPickerNumber.js +1 -2
  74. package/dist/primitives/branchPicker/BranchPickerPrevious.js +1 -2
  75. package/dist/primitives/branchPicker/BranchPickerRoot.js +1 -2
  76. package/dist/primitives/branchPicker.js +1 -2
  77. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts +5 -4
  78. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -1
  79. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +57 -20
  80. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
  81. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +1 -2
  82. package/dist/primitives/chainOfThought.js +1 -2
  83. package/dist/primitives/composer/ComposerAddAttachment.js +1 -2
  84. package/dist/primitives/composer/ComposerAttachmentDropzone.js +1 -2
  85. package/dist/primitives/composer/ComposerCancel.js +1 -2
  86. package/dist/primitives/composer/ComposerCompactContext.js +1 -2
  87. package/dist/primitives/composer/ComposerDictate.js +1 -2
  88. package/dist/primitives/composer/ComposerDictationTranscript.js +1 -2
  89. package/dist/primitives/composer/ComposerInput.js +1 -2
  90. package/dist/primitives/composer/ComposerInputPluginContext.js +1 -2
  91. package/dist/primitives/composer/ComposerQuote.js +1 -2
  92. package/dist/primitives/composer/ComposerResume.js +1 -2
  93. package/dist/primitives/composer/ComposerRoot.js +1 -2
  94. package/dist/primitives/composer/ComposerSend.js +1 -2
  95. package/dist/primitives/composer/ComposerStopDictation.js +1 -2
  96. package/dist/primitives/composer/composerInputSelector.js +1 -2
  97. package/dist/primitives/composer/trigger/TriggerPopover.js +1 -2
  98. package/dist/primitives/composer/trigger/TriggerPopoverAction.js +1 -2
  99. package/dist/primitives/composer/trigger/TriggerPopoverBack.js +1 -2
  100. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +1 -2
  101. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js +1 -2
  102. package/dist/primitives/composer/trigger/TriggerPopoverItems.js +1 -2
  103. package/dist/primitives/composer/trigger/TriggerPopoverResource.js +1 -2
  104. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +1 -2
  105. package/dist/primitives/composer/trigger/detectTrigger.js +1 -2
  106. package/dist/primitives/composer/trigger/index.js +1 -2
  107. package/dist/primitives/composer/trigger/matchesTriggerItemQuery.js +1 -2
  108. package/dist/primitives/composer/trigger/triggerDetectionResource.js +1 -2
  109. package/dist/primitives/composer/trigger/triggerKeyboardResource.js +1 -2
  110. package/dist/primitives/composer/trigger/triggerNavigationResource.js +1 -2
  111. package/dist/primitives/composer/trigger/triggerSelectionResource.js +1 -2
  112. package/dist/primitives/composer/useComposerCancelWithFocus.js +1 -2
  113. package/dist/primitives/composer/useComposerInputState.js +1 -2
  114. package/dist/primitives/composer.js +1 -2
  115. package/dist/primitives/dropdownMenuRenderPrimitives.js +1 -2
  116. package/dist/primitives/error/ErrorMessage.js +1 -2
  117. package/dist/primitives/error/ErrorRoot.js +1 -2
  118. package/dist/primitives/error.js +1 -2
  119. package/dist/primitives/message/MessageError.js +1 -2
  120. package/dist/primitives/message/MessageIf.js +1 -2
  121. package/dist/primitives/message/MessageParts.js +1 -2
  122. package/dist/primitives/message/MessagePartsGrouped.js +2 -3
  123. package/dist/primitives/message/MessageRoot.js +1 -2
  124. package/dist/primitives/message.js +1 -2
  125. package/dist/primitives/messagePart/MessagePartImage.js +1 -2
  126. package/dist/primitives/messagePart/MessagePartText.js +1 -2
  127. package/dist/primitives/messagePart/useMessagePartData.js +1 -2
  128. package/dist/primitives/messagePart/useMessagePartFile.js +1 -2
  129. package/dist/primitives/messagePart/useMessagePartImage.js +1 -2
  130. package/dist/primitives/messagePart/useMessagePartReasoning.js +1 -2
  131. package/dist/primitives/messagePart/useMessagePartSource.js +1 -2
  132. package/dist/primitives/messagePart/useMessagePartText.js +1 -2
  133. package/dist/primitives/messagePart.js +1 -2
  134. package/dist/primitives/queueItem/QueueItemRemove.js +1 -2
  135. package/dist/primitives/queueItem/QueueItemSteer.js +1 -2
  136. package/dist/primitives/queueItem/QueueItemText.js +1 -2
  137. package/dist/primitives/queueItem.js +1 -2
  138. package/dist/primitives/reasoning/useScrollLock.d.ts.map +1 -1
  139. package/dist/primitives/reasoning/useScrollLock.js +41 -25
  140. package/dist/primitives/reasoning/useScrollLock.js.map +1 -1
  141. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +1 -2
  142. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +1 -2
  143. package/dist/primitives/selectionToolbar.js +1 -2
  144. package/dist/primitives/suggestion/SuggestionDescription.js +1 -2
  145. package/dist/primitives/suggestion/SuggestionTitle.js +1 -2
  146. package/dist/primitives/suggestion/SuggestionTrigger.js +1 -2
  147. package/dist/primitives/suggestion.js +1 -2
  148. package/dist/primitives/thread/ThreadEmpty.js +1 -2
  149. package/dist/primitives/thread/ThreadIf.js +1 -2
  150. package/dist/primitives/thread/ThreadLoadEarlier.js +1 -2
  151. package/dist/primitives/thread/ThreadRoot.js +1 -2
  152. package/dist/primitives/thread/ThreadRootElementContext.js +1 -2
  153. package/dist/primitives/thread/ThreadScrollToBottom.js +1 -2
  154. package/dist/primitives/thread/ThreadSuggestion.js +1 -2
  155. package/dist/primitives/thread/ThreadViewport.js +1 -2
  156. package/dist/primitives/thread/ThreadViewportFooter.js +1 -2
  157. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js +1 -2
  158. package/dist/primitives/thread/topAnchor/createReserveObservers.js +1 -2
  159. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js +1 -2
  160. package/dist/primitives/thread/topAnchor/topAnchorTurn.js +1 -2
  161. package/dist/primitives/thread/topAnchor/topAnchorUtils.js +1 -2
  162. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +1 -2
  163. package/dist/primitives/thread/useThreadViewportAutoScroll.js +1 -2
  164. package/dist/primitives/thread.js +1 -2
  165. package/dist/primitives/threadList/ThreadListLoadMore.js +1 -2
  166. package/dist/primitives/threadList/ThreadListNew.js +1 -2
  167. package/dist/primitives/threadList/ThreadListRoot.js +1 -2
  168. package/dist/primitives/threadList.js +1 -2
  169. package/dist/primitives/threadListFocusGroup.js +1 -2
  170. package/dist/primitives/threadListItem/ThreadListItemArchive.js +1 -2
  171. package/dist/primitives/threadListItem/ThreadListItemDelete.js +1 -2
  172. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
  173. package/dist/primitives/threadListItem/ThreadListItemRoot.js +2 -3
  174. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  175. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +1 -2
  176. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +1 -2
  177. package/dist/primitives/threadListItem.js +1 -2
  178. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +1 -2
  179. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +1 -2
  180. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +1 -2
  181. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +1 -2
  182. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +1 -2
  183. package/dist/primitives/threadListItemMore/scope.js +1 -2
  184. package/dist/primitives/threadListItemMore.js +1 -2
  185. package/dist/sandbox-host/SandboxHost.js +2 -3
  186. package/dist/unstable/useComposerInput.js +1 -2
  187. package/dist/unstable/useComposerInputHistory.js +2 -3
  188. package/dist/unstable/useLiveCompletionAdapter.js +1 -2
  189. package/dist/unstable/useMentionAdapter.js +1 -2
  190. package/dist/unstable/useMessageStallDetection.js +1 -2
  191. package/dist/unstable/useModelContextSnapshot.js +1 -2
  192. package/dist/unstable/useSlashCommandAdapter.js +1 -2
  193. package/dist/unstable/webmcp/WebMcpRegistrationResource.js +1 -2
  194. package/dist/unstable/webmcp/convertTools.js +1 -2
  195. package/dist/unstable/webmcp/useWebMcpProvider.js +1 -2
  196. package/dist/unstable/webmcp/webmcp-host.js +1 -2
  197. package/dist/utils/Primitive.js +1 -2
  198. package/dist/utils/createActionButton.js +1 -2
  199. package/dist/utils/getSelectionMessageId.js +1 -2
  200. package/dist/utils/hooks/useManagedRef.js +1 -2
  201. package/dist/utils/hooks/useMediaQuery.js +1 -2
  202. package/dist/utils/hooks/useOnScrollToBottom.js +1 -2
  203. package/dist/utils/hooks/useSizeHandle.js +1 -2
  204. package/dist/utils/isCompositionKey.js +1 -2
  205. package/dist/utils/smooth/SmoothContext.js +1 -2
  206. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  207. package/dist/utils/smooth/useSmooth.js +11 -4
  208. package/dist/utils/smooth/useSmooth.js.map +1 -1
  209. package/dist/utils/useIsomorphicLayoutEffect.js +0 -1
  210. package/package.json +8 -8
  211. package/src/adapters/GeminiLiveVoiceAdapter.test.ts +992 -0
  212. package/src/adapters/GeminiLiveVoiceAdapter.ts +454 -0
  213. package/src/adapters/gemini-live/audio.test.ts +880 -0
  214. package/src/adapters/gemini-live/audio.ts +333 -0
  215. package/src/index.test.ts +34 -0
  216. package/src/index.ts +4 -0
  217. package/src/mcp-apps/McpAppRenderer.composer.test.tsx +111 -0
  218. package/src/mcp-apps/McpAppRenderer.test.tsx +24 -23
  219. package/src/mcp-apps/McpAppRenderer.tsx +9 -1
  220. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.test.tsx +91 -0
  221. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.tsx +54 -0
  222. package/src/primitives/reasoning/useScrollLock.test.tsx +71 -2
  223. package/src/primitives/reasoning/useScrollLock.ts +78 -51
  224. package/src/primitives/threadListItem/ThreadListItemRoot.tsx +4 -1
  225. package/src/primitives/threadListItem/ThreadListKeyboardNav.test.tsx +25 -0
  226. package/src/utils/smooth/useSmooth.test.tsx +113 -4
  227. package/src/utils/smooth/useSmooth.ts +16 -2
  228. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.ts +0 -49
@@ -0,0 +1,291 @@
1
+ import { bytesToBase64, raceWithAbortSignal } from "@assistant-ui/core/internal";
2
+ // src/adapters/gemini-live/audio.ts
3
+ const encodePcm16 = (samples) => {
4
+ const bytes = new Uint8Array(samples.length * 2);
5
+ const view = new DataView(bytes.buffer);
6
+ for (let i = 0; i < samples.length; i++) {
7
+ const s = Math.max(-1, Math.min(1, samples[i]));
8
+ view.setInt16(i * 2, s < 0 ? s * 32768 : s * 32767, true);
9
+ }
10
+ return bytesToBase64(bytes);
11
+ };
12
+ const decodePcm16 = (base64) => {
13
+ const binary = atob(base64);
14
+ const samples = new Float32Array(/* @__PURE__ */ new ArrayBuffer((binary.length >> 1) * 4));
15
+ const view = /* @__PURE__ */ new DataView(/* @__PURE__ */ new ArrayBuffer(samples.length * 2));
16
+ for (let i = 0; i < samples.length * 2; i++) view.setUint8(i, binary.charCodeAt(i));
17
+ for (let i = 0; i < samples.length; i++) samples[i] = view.getInt16(i * 2, true) / 32768;
18
+ return samples;
19
+ };
20
+ const readLevel = (analyser) => {
21
+ const data = new Uint8Array(analyser.fftSize);
22
+ analyser.getByteTimeDomainData(data);
23
+ let sum = 0;
24
+ for (const v of data) {
25
+ const centered = (v - 128) / 128;
26
+ sum += centered * centered;
27
+ }
28
+ return Math.min(1, Math.sqrt(sum / data.length) * 2);
29
+ };
30
+ const createLowPass = (ratio) => {
31
+ const omega = Math.PI * .9 / ratio;
32
+ const cosine = Math.cos(omega);
33
+ const sine = Math.sin(omega);
34
+ const sections = [
35
+ .5176380902,
36
+ .7071067812,
37
+ 1.9318516526
38
+ ].map((q) => {
39
+ const alpha = sine / (2 * q);
40
+ const a0 = 1 + alpha;
41
+ return {
42
+ b: (1 - cosine) / (2 * a0),
43
+ a1: -2 * cosine / a0,
44
+ a2: (1 - alpha) / a0,
45
+ z1: 0,
46
+ z2: 0
47
+ };
48
+ });
49
+ return (samples) => {
50
+ for (let i = 0; i < samples.length; i++) {
51
+ let x = samples[i];
52
+ for (const s of sections) {
53
+ const y = s.b * x + s.z1;
54
+ s.z1 = 2 * s.b * x - s.a1 * y + s.z2;
55
+ s.z2 = s.b * x - s.a2 * y;
56
+ x = y;
57
+ }
58
+ samples[i] = x;
59
+ }
60
+ };
61
+ };
62
+ const WORKLET_SOURCE = `
63
+ class PcmCapture extends AudioWorkletProcessor {
64
+ constructor(options) {
65
+ super();
66
+ this.ratio = sampleRate / options.processorOptions.targetRate;
67
+ this.chunk = Math.round(options.processorOptions.targetRate / 50);
68
+ this.position = 0;
69
+ this.last = 0;
70
+ this.pending = [];
71
+ this.sections = [];
72
+ if (this.ratio > 1) {
73
+ const omega = (Math.PI * 0.9) / this.ratio;
74
+ const cosine = Math.cos(omega);
75
+ const sine = Math.sin(omega);
76
+ for (const q of [0.5176380902, 0.7071067812, 1.9318516526]) {
77
+ const alpha = sine / (2 * q);
78
+ const a0 = 1 + alpha;
79
+ const b = (1 - cosine) / (2 * a0);
80
+ this.sections.push({ b, a1: (-2 * cosine) / a0, a2: (1 - alpha) / a0, z1: 0, z2: 0 });
81
+ }
82
+ }
83
+ }
84
+ process(inputs) {
85
+ const channels = inputs[0];
86
+ if (!channels || channels.length === 0 || channels[0].length === 0) return true;
87
+ const input = channels[0].slice();
88
+ for (let c = 1; c < channels.length; c++)
89
+ for (let i = 0; i < input.length; i++) input[i] += channels[c][i];
90
+ if (channels.length > 1)
91
+ for (let i = 0; i < input.length; i++) input[i] /= channels.length;
92
+ for (let i = 0; i < input.length; i++) {
93
+ let x = input[i];
94
+ for (const s of this.sections) {
95
+ const y = s.b * x + s.z1;
96
+ s.z1 = 2 * s.b * x - s.a1 * y + s.z2;
97
+ s.z2 = s.b * x - s.a2 * y;
98
+ x = y;
99
+ }
100
+ input[i] = x;
101
+ }
102
+ while (this.position < input.length - 1) {
103
+ const index = Math.floor(this.position);
104
+ const prev = index < 0 ? this.last : input[index];
105
+ const next = input[index + 1];
106
+ this.pending.push(prev + (next - prev) * (this.position - index));
107
+ this.position += this.ratio;
108
+ }
109
+ this.position -= input.length;
110
+ this.last = input[input.length - 1];
111
+ if (this.pending.length >= this.chunk) {
112
+ this.port.postMessage(Float32Array.from(this.pending));
113
+ this.pending = [];
114
+ }
115
+ return true;
116
+ }
117
+ }
118
+ registerProcessor("pcm-capture", PcmCapture);
119
+ `;
120
+ const createResampler = (ratio) => {
121
+ let position = 0;
122
+ let last = 0;
123
+ const lowPass = ratio > 1 ? createLowPass(ratio) : void 0;
124
+ return (input) => {
125
+ if (input.length === 0) return /* @__PURE__ */ new Float32Array(0);
126
+ const samples = lowPass ? input.slice() : input;
127
+ lowPass?.(samples);
128
+ const out = [];
129
+ while (position < samples.length - 1) {
130
+ const index = Math.floor(position);
131
+ const prev = index < 0 ? last : samples[index];
132
+ const next = samples[index + 1];
133
+ out.push(prev + (next - prev) * (position - index));
134
+ position += ratio;
135
+ }
136
+ position -= samples.length;
137
+ last = samples[samples.length - 1];
138
+ return Float32Array.from(out);
139
+ };
140
+ };
141
+ const openMicrophone = async (options) => {
142
+ let stream;
143
+ const stopTracks = () => {
144
+ stream?.getTracks().forEach((track) => track.stop());
145
+ stream = void 0;
146
+ };
147
+ const throwIfAborted = () => {
148
+ if (options.signal?.aborted) throw options.signal.reason;
149
+ };
150
+ let context;
151
+ try {
152
+ const openedStream = await raceWithAbortSignal(options.signal, async () => {
153
+ const acquired = await navigator.mediaDevices.getUserMedia({ audio: true });
154
+ stream = acquired;
155
+ if (options.signal?.aborted) {
156
+ stopTracks();
157
+ throw options.signal.reason;
158
+ }
159
+ return acquired;
160
+ });
161
+ throwIfAborted();
162
+ context = new AudioContext();
163
+ if (context.state === "suspended") await raceWithAbortSignal(options.signal, () => context.resume());
164
+ throwIfAborted();
165
+ const source = context.createMediaStreamSource(openedStream);
166
+ const analyser = context.createAnalyser();
167
+ analyser.fftSize = 256;
168
+ source.connect(analyser);
169
+ let muted = false;
170
+ let closed = false;
171
+ let closing;
172
+ const push = (samples) => {
173
+ if (!muted && !closed && samples.length) options.onChunk(encodePcm16(samples));
174
+ };
175
+ let node;
176
+ let detach = () => {};
177
+ if (context.audioWorklet) {
178
+ const url = URL.createObjectURL(new Blob([WORKLET_SOURCE], { type: "text/javascript" }));
179
+ try {
180
+ await raceWithAbortSignal(options.signal, () => context.audioWorklet.addModule(url));
181
+ throwIfAborted();
182
+ const worklet = new AudioWorkletNode(context, "pcm-capture", { processorOptions: { targetRate: options.sampleRate } });
183
+ worklet.port.onmessage = (event) => push(event.data);
184
+ detach = () => {
185
+ worklet.port.onmessage = null;
186
+ };
187
+ node = worklet;
188
+ } catch {
189
+ throwIfAborted();
190
+ } finally {
191
+ URL.revokeObjectURL(url);
192
+ }
193
+ }
194
+ if (!node) {
195
+ const resample = createResampler(context.sampleRate / options.sampleRate);
196
+ const processor = context.createScriptProcessor(1024, 1, 1);
197
+ processor.onaudioprocess = (event) => push(resample(event.inputBuffer.getChannelData(0)));
198
+ detach = () => {
199
+ processor.onaudioprocess = null;
200
+ };
201
+ node = processor;
202
+ }
203
+ analyser.connect(node);
204
+ node.connect(context.destination);
205
+ const opened = context;
206
+ return {
207
+ setMuted: (value) => {
208
+ muted = value;
209
+ openedStream.getAudioTracks().forEach((track) => {
210
+ track.enabled = !value;
211
+ });
212
+ },
213
+ level: () => readLevel(analyser),
214
+ close: () => {
215
+ if (closing) return closing;
216
+ closed = true;
217
+ detach();
218
+ node.disconnect();
219
+ source.disconnect();
220
+ stopTracks();
221
+ return closing = opened.close();
222
+ }
223
+ };
224
+ } catch (error) {
225
+ stopTracks();
226
+ await context?.close().catch(() => {});
227
+ throw error;
228
+ }
229
+ };
230
+ const IDLE_GRACE_MS = 100;
231
+ const createPcmPlayer = (options) => {
232
+ const context = new AudioContext({ sampleRate: options.sampleRate });
233
+ const analyser = context.createAnalyser();
234
+ analyser.fftSize = 256;
235
+ analyser.connect(context.destination);
236
+ const sources = /* @__PURE__ */ new Set();
237
+ let cursor = 0;
238
+ let closing;
239
+ let idleTimer;
240
+ const scheduleIdle = () => {
241
+ clearTimeout(idleTimer);
242
+ idleTimer = setTimeout(() => {
243
+ if (sources.size === 0) options.onIdle?.();
244
+ }, IDLE_GRACE_MS);
245
+ };
246
+ return {
247
+ enqueue: (base64) => {
248
+ const samples = decodePcm16(base64);
249
+ if (samples.length === 0) return;
250
+ const buffer = context.createBuffer(1, samples.length, options.sampleRate);
251
+ buffer.copyToChannel(samples, 0);
252
+ const source = context.createBufferSource();
253
+ source.buffer = buffer;
254
+ source.connect(analyser);
255
+ const start = Math.max(context.currentTime, cursor);
256
+ source.start(start);
257
+ cursor = start + buffer.duration;
258
+ sources.add(source);
259
+ source.onended = () => {
260
+ sources.delete(source);
261
+ if (sources.size === 0) scheduleIdle();
262
+ };
263
+ clearTimeout(idleTimer);
264
+ if (context.state === "suspended") context.resume().catch(() => {});
265
+ },
266
+ clear: () => {
267
+ clearTimeout(idleTimer);
268
+ for (const source of sources) {
269
+ source.onended = null;
270
+ source.stop();
271
+ }
272
+ sources.clear();
273
+ cursor = 0;
274
+ },
275
+ isPlaying: () => sources.size > 0,
276
+ level: () => readLevel(analyser),
277
+ close: () => {
278
+ if (closing) return closing;
279
+ clearTimeout(idleTimer);
280
+ for (const source of sources) {
281
+ source.onended = null;
282
+ source.stop();
283
+ }
284
+ sources.clear();
285
+ return closing = context.close();
286
+ }
287
+ };
288
+ };
289
+ export { WORKLET_SOURCE, createPcmPlayer, createResampler, decodePcm16, encodePcm16, openMicrophone, readLevel };
290
+
291
+ //# sourceMappingURL=audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.js","names":["bytesToBase64","raceWithAbortSignal","encodePcm16","samples","Float32Array","bytes","Uint8Array","length","view","DataView","buffer","i","s","Math","max","min","setInt16","decodePcm16","base64","ArrayBuffer","binary","atob","setUint8","charCodeAt","getInt16","readLevel","analyser","AnalyserNode","data","fftSize","getByteTimeDomainData","sum","v","centered","sqrt","MicrophoneCapture","setMuted","muted","level","close","Promise","createLowPass","ratio","omega","PI","cosine","cos","sine","sin","sections","map","q","alpha","a0","b","a1","a2","z1","z2","x","y","WORKLET_SOURCE","createResampler","position","last","lowPass","undefined","input","slice","out","index","floor","prev","next","push","from","openMicrophone","options","sampleRate","onChunk","signal","AbortSignal","stream","MediaStream","stopTracks","getTracks","forEach","track","stop","throwIfAborted","aborted","reason","context","AudioContext","openedStream","acquired","navigator","mediaDevices","getUserMedia","audio","state","resume","source","createMediaStreamSource","createAnalyser","connect","closed","closing","node","AudioNode","detach","audioWorklet","url","URL","createObjectURL","Blob","type","addModule","worklet","AudioWorkletNode","processorOptions","targetRate","port","onmessage","event","revokeObjectURL","resample","processor","createScriptProcessor","onaudioprocess","inputBuffer","getChannelData","destination","opened","value","getAudioTracks","enabled","disconnect","error","catch","PcmPlayer","enqueue","clear","isPlaying","IDLE_GRACE_MS","createPcmPlayer","onIdle","sources","Set","AudioBufferSourceNode","cursor","idleTimer","ReturnType","setTimeout","scheduleIdle","clearTimeout","size","createBuffer","copyToChannel","createBufferSource","start","currentTime","duration","add","onended","delete"],"sources":["../../../src/adapters/gemini-live/audio.ts"],"sourcesContent":["import {\n bytesToBase64,\n raceWithAbortSignal,\n} from \"@assistant-ui/core/internal\";\n\nexport const encodePcm16 = (samples: Float32Array): string => {\n const bytes = new Uint8Array(samples.length * 2);\n const view = new DataView(bytes.buffer);\n for (let i = 0; i < samples.length; i++) {\n const s = Math.max(-1, Math.min(1, samples[i]!));\n view.setInt16(i * 2, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n }\n return bytesToBase64(bytes);\n};\n\nexport const decodePcm16 = (base64: string): Float32Array<ArrayBuffer> => {\n const binary = atob(base64);\n const samples = new Float32Array(new ArrayBuffer((binary.length >> 1) * 4));\n const view = new DataView(new ArrayBuffer(samples.length * 2));\n for (let i = 0; i < samples.length * 2; i++)\n view.setUint8(i, binary.charCodeAt(i));\n for (let i = 0; i < samples.length; i++)\n samples[i] = view.getInt16(i * 2, true) / 0x8000;\n return samples;\n};\n\nexport const readLevel = (analyser: AnalyserNode): number => {\n const data = new Uint8Array(analyser.fftSize);\n analyser.getByteTimeDomainData(data);\n let sum = 0;\n for (const v of data) {\n const centered = (v - 128) / 128;\n sum += centered * centered;\n }\n return Math.min(1, Math.sqrt(sum / data.length) * 2);\n};\n\nexport type MicrophoneCapture = {\n setMuted: (muted: boolean) => void;\n level: () => number;\n close: () => Promise<void>;\n};\n\nconst createLowPass = (ratio: number) => {\n const omega = (Math.PI * 0.9) / ratio;\n const cosine = Math.cos(omega);\n const sine = Math.sin(omega);\n const sections = [0.5176380902, 0.7071067812, 1.9318516526].map((q) => {\n const alpha = sine / (2 * q);\n const a0 = 1 + alpha;\n const b = (1 - cosine) / (2 * a0);\n return { b, a1: (-2 * cosine) / a0, a2: (1 - alpha) / a0, z1: 0, z2: 0 };\n });\n return (samples: Float32Array) => {\n for (let i = 0; i < samples.length; i++) {\n let x = samples[i]!;\n for (const s of sections) {\n const y = s.b * x + s.z1;\n s.z1 = 2 * s.b * x - s.a1 * y + s.z2;\n s.z2 = s.b * x - s.a2 * y;\n x = y;\n }\n samples[i] = x;\n }\n };\n};\n\nexport const WORKLET_SOURCE = `\nclass PcmCapture extends AudioWorkletProcessor {\n constructor(options) {\n super();\n this.ratio = sampleRate / options.processorOptions.targetRate;\n this.chunk = Math.round(options.processorOptions.targetRate / 50);\n this.position = 0;\n this.last = 0;\n this.pending = [];\n this.sections = [];\n if (this.ratio > 1) {\n const omega = (Math.PI * 0.9) / this.ratio;\n const cosine = Math.cos(omega);\n const sine = Math.sin(omega);\n for (const q of [0.5176380902, 0.7071067812, 1.9318516526]) {\n const alpha = sine / (2 * q);\n const a0 = 1 + alpha;\n const b = (1 - cosine) / (2 * a0);\n this.sections.push({ b, a1: (-2 * cosine) / a0, a2: (1 - alpha) / a0, z1: 0, z2: 0 });\n }\n }\n }\n process(inputs) {\n const channels = inputs[0];\n if (!channels || channels.length === 0 || channels[0].length === 0) return true;\n const input = channels[0].slice();\n for (let c = 1; c < channels.length; c++)\n for (let i = 0; i < input.length; i++) input[i] += channels[c][i];\n if (channels.length > 1)\n for (let i = 0; i < input.length; i++) input[i] /= channels.length;\n for (let i = 0; i < input.length; i++) {\n let x = input[i];\n for (const s of this.sections) {\n const y = s.b * x + s.z1;\n s.z1 = 2 * s.b * x - s.a1 * y + s.z2;\n s.z2 = s.b * x - s.a2 * y;\n x = y;\n }\n input[i] = x;\n }\n while (this.position < input.length - 1) {\n const index = Math.floor(this.position);\n const prev = index < 0 ? this.last : input[index];\n const next = input[index + 1];\n this.pending.push(prev + (next - prev) * (this.position - index));\n this.position += this.ratio;\n }\n this.position -= input.length;\n this.last = input[input.length - 1];\n if (this.pending.length >= this.chunk) {\n this.port.postMessage(Float32Array.from(this.pending));\n this.pending = [];\n }\n return true;\n }\n}\nregisterProcessor(\"pcm-capture\", PcmCapture);\n`;\n\nexport const createResampler = (ratio: number) => {\n let position = 0;\n let last = 0;\n const lowPass = ratio > 1 ? createLowPass(ratio) : undefined;\n return (input: Float32Array): Float32Array => {\n if (input.length === 0) return new Float32Array(0);\n const samples = lowPass ? input.slice() : input;\n lowPass?.(samples);\n const out: number[] = [];\n while (position < samples.length - 1) {\n const index = Math.floor(position);\n const prev = index < 0 ? last : samples[index]!;\n const next = samples[index + 1]!;\n out.push(prev + (next - prev) * (position - index));\n position += ratio;\n }\n position -= samples.length;\n last = samples[samples.length - 1]!;\n return Float32Array.from(out);\n };\n};\n\nexport const openMicrophone = async (options: {\n sampleRate: number;\n onChunk: (base64: string) => void;\n signal?: AbortSignal;\n}): Promise<MicrophoneCapture> => {\n let stream: MediaStream | undefined;\n const stopTracks = () => {\n stream?.getTracks().forEach((track) => track.stop());\n stream = undefined;\n };\n const throwIfAborted = () => {\n if (options.signal?.aborted) throw options.signal.reason;\n };\n let context: AudioContext | undefined;\n try {\n const openedStream = await raceWithAbortSignal(options.signal, async () => {\n const acquired = await navigator.mediaDevices.getUserMedia({\n audio: true,\n });\n stream = acquired;\n if (options.signal?.aborted) {\n stopTracks();\n throw options.signal.reason;\n }\n return acquired;\n });\n throwIfAborted();\n context = new AudioContext();\n if (context.state === \"suspended\")\n await raceWithAbortSignal(options.signal, () => context!.resume());\n throwIfAborted();\n const source = context.createMediaStreamSource(openedStream);\n const analyser = context.createAnalyser();\n analyser.fftSize = 256;\n source.connect(analyser);\n\n let muted = false;\n let closed = false;\n let closing: Promise<void> | undefined;\n const push = (samples: Float32Array) => {\n if (!muted && !closed && samples.length)\n options.onChunk(encodePcm16(samples));\n };\n\n let node: AudioNode | undefined;\n let detach = () => {};\n if (context.audioWorklet) {\n const url = URL.createObjectURL(\n new Blob([WORKLET_SOURCE], { type: \"text/javascript\" }),\n );\n try {\n await raceWithAbortSignal(options.signal, () =>\n context!.audioWorklet.addModule(url),\n );\n throwIfAborted();\n const worklet = new AudioWorkletNode(context, \"pcm-capture\", {\n processorOptions: { targetRate: options.sampleRate },\n });\n worklet.port.onmessage = (event) => push(event.data as Float32Array);\n detach = () => {\n worklet.port.onmessage = null;\n };\n node = worklet;\n } catch {\n // A CSP can block blob worklets even when AudioWorklet is available.\n throwIfAborted();\n } finally {\n URL.revokeObjectURL(url);\n }\n }\n if (!node) {\n const resample = createResampler(context.sampleRate / options.sampleRate);\n const processor = context.createScriptProcessor(1024, 1, 1);\n processor.onaudioprocess = (event) =>\n push(resample(event.inputBuffer.getChannelData(0)));\n detach = () => {\n processor.onaudioprocess = null;\n };\n node = processor;\n }\n analyser.connect(node);\n node.connect(context.destination);\n const opened = context;\n\n return {\n setMuted: (value) => {\n muted = value;\n openedStream.getAudioTracks().forEach((track) => {\n track.enabled = !value;\n });\n },\n level: () => readLevel(analyser),\n close: () => {\n if (closing) return closing;\n closed = true;\n detach();\n node.disconnect();\n source.disconnect();\n stopTracks();\n return (closing = opened.close());\n },\n };\n } catch (error) {\n stopTracks();\n await context?.close().catch(() => {});\n throw error;\n }\n};\n\nexport type PcmPlayer = {\n enqueue: (base64: string) => void;\n clear: () => void;\n isPlaying: () => boolean;\n level: () => number;\n close: () => Promise<void>;\n};\n\nconst IDLE_GRACE_MS = 100;\n\nexport const createPcmPlayer = (options: {\n sampleRate: number;\n onIdle?: () => void;\n}): PcmPlayer => {\n const context = new AudioContext({ sampleRate: options.sampleRate });\n const analyser = context.createAnalyser();\n analyser.fftSize = 256;\n analyser.connect(context.destination);\n const sources = new Set<AudioBufferSourceNode>();\n let cursor = 0;\n let closing: Promise<void> | undefined;\n let idleTimer: ReturnType<typeof setTimeout> | undefined;\n const scheduleIdle = () => {\n clearTimeout(idleTimer);\n idleTimer = setTimeout(() => {\n if (sources.size === 0) options.onIdle?.();\n }, IDLE_GRACE_MS);\n };\n\n return {\n enqueue: (base64) => {\n const samples = decodePcm16(base64);\n if (samples.length === 0) return;\n const buffer = context.createBuffer(\n 1,\n samples.length,\n options.sampleRate,\n );\n buffer.copyToChannel(samples, 0);\n const source = context.createBufferSource();\n source.buffer = buffer;\n source.connect(analyser);\n const start = Math.max(context.currentTime, cursor);\n source.start(start);\n cursor = start + buffer.duration;\n sources.add(source);\n source.onended = () => {\n sources.delete(source);\n if (sources.size === 0) scheduleIdle();\n };\n clearTimeout(idleTimer);\n if (context.state === \"suspended\") void context.resume().catch(() => {});\n },\n clear: () => {\n clearTimeout(idleTimer);\n for (const source of sources) {\n source.onended = null;\n source.stop();\n }\n sources.clear();\n cursor = 0;\n },\n isPlaying: () => sources.size > 0,\n level: () => readLevel(analyser),\n close: () => {\n if (closing) return closing;\n clearTimeout(idleTimer);\n for (const source of sources) {\n source.onended = null;\n source.stop();\n }\n sources.clear();\n return (closing = context.close());\n },\n };\n};\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
3
  import { useAssistantTransportRuntime as useAssistantTransportRuntime$1, useAssistantTransportSendCommand as useAssistantTransportSendCommand$1, useAssistantTransportState as useAssistantTransportState$1 } from "@assistant-ui/core/react";
4
- //#region src/assistant-transport.ts
4
+ // src/assistant-transport.ts
5
5
  const useAssistantTransportRuntime = (options) => {
6
6
  return useAssistantTransportRuntime$1(options);
7
7
  };
@@ -21,7 +21,6 @@ const useAssistantTransportSendCommand = () => {
21
21
  function useAssistantTransportState(selector = (state) => state) {
22
22
  return useAssistantTransportState$1(selector);
23
23
  }
24
- //#endregion
25
24
  export { useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState };
26
25
 
27
26
  //# sourceMappingURL=assistant-transport.js.map
@@ -6,7 +6,7 @@ import { Component, useEffect, useRef, useState, useSyncExternalStore } from "@a
6
6
  import { AuiConfig, AuiProvider, useAui } from "@assistant-ui/store";
7
7
  import { resource } from "@assistant-ui/tap";
8
8
  import { jsx } from "react/jsx-runtime";
9
- //#region src/cloud-renderer/CloudRendererHost.tsx
9
+ // src/cloud-renderer/CloudRendererHost.tsx
10
10
  const CHANNEL = "assistant-ui/cloud-renderer";
11
11
  const toOrigin = (value) => {
12
12
  try {
@@ -284,7 +284,6 @@ function _temp2(origin, message) {
284
284
  function _temp(value) {
285
285
  return toOrigin(value) ?? [];
286
286
  }
287
- //#endregion
288
287
  export { CloudRendererHost };
289
288
 
290
289
  //# sourceMappingURL=CloudRendererHost.js.map
@@ -1,8 +1,7 @@
1
- //#region src/context/ReadonlyStore.ts
1
+ // src/context/ReadonlyStore.ts
2
2
  const writableStore = (store) => {
3
3
  return store;
4
4
  };
5
- //#endregion
6
5
  export { writableStore };
7
6
 
8
7
  //# sourceMappingURL=ReadonlyStore.js.map
@@ -3,7 +3,7 @@ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
3
  import { AuiConfig, AuiProvider, useAui } from "@assistant-ui/store";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { ThreadMessageClient } from "@assistant-ui/core/store";
6
- //#region src/context/providers/MessageProvider.tsx
6
+ // src/context/providers/MessageProvider.tsx
7
7
  const MessageProvider = (t0) => {
8
8
  const $ = c(4);
9
9
  const { children, ...props } = t0;
@@ -23,7 +23,6 @@ const MessageProvider = (t0) => {
23
23
  } else t1 = $[3];
24
24
  return t1;
25
25
  };
26
- //#endregion
27
26
  export { MessageProvider };
28
27
 
29
28
  //# sourceMappingURL=MessageProvider.js.map
@@ -5,7 +5,7 @@ import { writableStore } from "../ReadonlyStore.js";
5
5
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
6
6
  import { useEffect, useState } from "@assistant-ui/tap/react-shim";
7
7
  import { jsx } from "react/jsx-runtime";
8
- //#region src/context/providers/ThreadViewportProvider.tsx
8
+ // src/context/providers/ThreadViewportProvider.tsx
9
9
  const useThreadViewportStoreValue = (options) => {
10
10
  const $ = c(11);
11
11
  let t0;
@@ -87,7 +87,6 @@ const ThreadPrimitiveViewportProvider = (t0) => {
87
87
  } else t4 = $[6];
88
88
  return t4;
89
89
  };
90
- //#endregion
91
90
  export { ThreadPrimitiveViewportProvider };
92
91
 
93
92
  //# sourceMappingURL=ThreadViewportProvider.js.map
@@ -2,11 +2,10 @@
2
2
  import { createContextHook } from "./utils/createContextHook.js";
3
3
  import { createContextStoreHook } from "./utils/createContextStoreHook.js";
4
4
  import { createContext } from "@assistant-ui/tap/react-shim";
5
- //#region src/context/react/ThreadViewportContext.ts
5
+ // src/context/react/ThreadViewportContext.ts
6
6
  const ThreadViewportContext = createContext(null);
7
7
  const useThreadViewportContext = createContextHook(ThreadViewportContext, "ThreadPrimitive.Viewport");
8
8
  const { useThreadViewport, useThreadViewportStore } = createContextStoreHook(useThreadViewportContext, "useThreadViewport");
9
- //#endregion
10
9
  export { ThreadViewportContext, useThreadViewport, useThreadViewportStore };
11
10
 
12
11
  //# sourceMappingURL=ThreadViewportContext.js.map
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { useContext } from "@assistant-ui/tap/react-shim";
3
- //#region src/context/react/utils/createContextHook.ts
3
+ // src/context/react/utils/createContextHook.ts
4
4
  /**
5
5
  * Creates a context hook with optional support.
6
6
  * @param context - The React context to consume.
@@ -15,7 +15,6 @@ function createContextHook(context, providerName) {
15
15
  }
16
16
  return useContextHook;
17
17
  }
18
- //#endregion
19
18
  export { createContextHook };
20
19
 
21
20
  //# sourceMappingURL=createContextHook.js.map
@@ -1,4 +1,4 @@
1
- //#region src/context/react/utils/createContextStoreHook.ts
1
+ // src/context/react/utils/createContextStoreHook.ts
2
2
  /**
3
3
  * Creates hooks for accessing a store within a context.
4
4
  * @param contextHook - The hook to access the context.
@@ -28,7 +28,6 @@ function createContextStoreHook(contextHook, contextKey) {
28
28
  [`${contextKey}Store`]: useStoreStoreHook
29
29
  };
30
30
  }
31
- //#endregion
32
31
  export { createContextStoreHook };
33
32
 
34
33
  //# sourceMappingURL=createContextStoreHook.js.map
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { create } from "zustand";
3
2
  import { notifyEventListeners } from "@assistant-ui/core/internal";
3
+ import { create } from "zustand";
4
4
  import { createThreadViewportAutoScroll } from "@assistant-ui/store/client";
5
- //#region src/context/stores/ThreadViewport.ts
5
+ // src/context/stores/ThreadViewport.ts
6
6
  const createSizeRegistry = (onChange) => {
7
7
  const entries = /* @__PURE__ */ new Map();
8
8
  const recalculate = () => {
@@ -125,7 +125,6 @@ const makeThreadViewportStore = (options = {}) => {
125
125
  viewportAutoScroll.set(store, autoScroll);
126
126
  return store;
127
127
  };
128
- //#endregion
129
128
  export { getThreadViewportAutoScroll, makeThreadViewportStore };
130
129
 
131
130
  //# sourceMappingURL=ThreadViewport.js.map
@@ -1,5 +1,5 @@
1
1
  import { notifyEventListeners } from "@assistant-ui/core/internal";
2
- //#region src/devtools/DevToolsHooks.ts
2
+ // src/devtools/DevToolsHooks.ts
3
3
  let cachedHook;
4
4
  const getHook = () => {
5
5
  if (cachedHook) return cachedHook;
@@ -79,7 +79,6 @@ var DevToolsProviderApi = class DevToolsProviderApi {
79
79
  };
80
80
  }
81
81
  };
82
- //#endregion
83
82
  export { DevToolsHooks, DevToolsProviderApi };
84
83
 
85
84
  //# sourceMappingURL=DevToolsHooks.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { getMessageQuote } from "@assistant-ui/core/react";
3
3
  import { useAuiState } from "@assistant-ui/store";
4
- //#region src/hooks/useMessageQuote.ts
4
+ // src/hooks/useMessageQuote.ts
5
5
  /**
6
6
  * Hook that returns the quote info for the current message, if any.
7
7
  *
@@ -19,7 +19,6 @@ import { useAuiState } from "@assistant-ui/store";
19
19
  const useMessageQuote = () => {
20
20
  return useAuiState(getMessageQuote);
21
21
  };
22
- //#endregion
23
22
  export { useMessageQuote };
24
23
 
25
24
  //# sourceMappingURL=useMessageQuote.js.map
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { useAuiState } from "@assistant-ui/store";
3
- //#region src/hooks/useMessageTiming.ts
3
+ // src/hooks/useMessageTiming.ts
4
4
  /**
5
5
  * Hook that returns timing information for the current assistant message.
6
6
  *
@@ -21,7 +21,6 @@ const useMessageTiming = () => {
21
21
  function _temp(s) {
22
22
  return s.message.role === "assistant" ? s.message.metadata?.timing : void 0;
23
23
  }
24
- //#endregion
25
24
  export { useMessageTiming };
26
25
 
27
26
  //# sourceMappingURL=useMessageTiming.js.map
@@ -3,7 +3,7 @@ import { useIsomorphicLayoutEffect } from "../utils/useIsomorphicLayoutEffect.js
3
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  import { useState } from "@assistant-ui/tap/react-shim";
5
5
  import { useAuiState } from "@assistant-ui/store";
6
- //#region src/hooks/useToolCallElapsed.ts
6
+ // src/hooks/useToolCallElapsed.ts
7
7
  /**
8
8
  * Hook that returns the elapsed wall-clock time of the current tool call in
9
9
  * milliseconds, ticking once per second while the call runs.
@@ -61,7 +61,6 @@ function _temp2(s_0) {
61
61
  const part_0 = s_0.optional.part;
62
62
  return part_0?.type === "tool-call" && part_0.status.type === "running";
63
63
  }
64
- //#endregion
65
64
  export { useToolCallElapsed };
66
65
 
67
66
  //# sourceMappingURL=useToolCallElapsed.js.map
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export { CloudFileAttachmentAdapter } from "@assistant-ui/core/react";
10
10
  export type { RealtimeVoiceAdapter } from "@assistant-ui/core";
11
11
  export { createVoiceSession } from "@assistant-ui/core";
12
12
  export { OpenAIRealtimeVoiceAdapter, type OpenAIRealtimeVoiceAdapterOptions, } from "./adapters/OpenAIRealtimeVoiceAdapter.js";
13
+ export { GeminiLiveVoiceAdapter, type GeminiLiveVoiceAdapterOptions, } from "./adapters/GeminiLiveVoiceAdapter.js";
13
14
  export type { VoiceSessionControls, VoiceSessionHelpers, VoiceSessionState, } from "@assistant-ui/core";
14
15
  export { useVoiceState, useVoiceVolume, useVoiceControls, } from "@assistant-ui/core/react";
15
16
  export type { FeedbackAdapter } from "@assistant-ui/core";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { GeminiLiveVoiceAdapter } from "./adapters/GeminiLiveVoiceAdapter.js";
1
2
  import { OpenAIRealtimeVoiceAdapter } from "./adapters/OpenAIRealtimeVoiceAdapter.js";
2
3
  import { useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState } from "./assistant-transport.js";
3
4
  import { useThreadViewport, useThreadViewportStore } from "./context/react/ThreadViewportContext.js";
@@ -63,4 +64,4 @@ import { ChainOfThoughtPartByIndexProvider, CloudFileAttachmentAdapter, DataRend
63
64
  import { AuiConfig, AuiIf, AuiProvider, useAui, useAuiEvent, useAuiState } from "@assistant-ui/store";
64
65
  import { ChainOfThoughtClient, ExternalThread, InMemoryThreadList, ModelContext as ModelContextClient, RemoteThreadList, SingleThreadList, Suggestions } from "@assistant-ui/core/store";
65
66
  import { AssistantCloud, readAnonymousRefreshToken } from "assistant-cloud";
66
- export { actionBarMore_exports as ActionBarMorePrimitive, actionBar_exports as ActionBarPrimitive, AssistantCloud, AssistantFrameHost, AssistantFrameProvider, assistantModal_exports as AssistantModalPrimitive, AssistantRuntimeProvider, attachment_exports as AttachmentPrimitive, AuiConfig, AuiIf, AuiProvider, branchPicker_exports as BranchPickerPrimitive, ChainOfThoughtByIndicesProvider, ChainOfThoughtClient, ChainOfThoughtPartByIndexProvider, chainOfThought_exports as ChainOfThoughtPrimitive, CloudFileAttachmentAdapter, CloudRendererHost, ComposerAttachmentByIndexProvider, composer_exports as ComposerPrimitive, CompositeAttachmentAdapter, DataRenderers, DevToolsHooks, DevToolsProviderApi, error_exports as ErrorPrimitive, ExportedMessageRepository, ExternalThread, FRAME_MESSAGE_CHANNEL, GenerativeUIRender, GenerativeUIRenderError, internal_exports as INTERNAL, InMemoryThreadList, InMemoryThreadListAdapter, Interactables, McpAppRenderer, McpAppsRemoteHost, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessageNotSentError, messagePart_exports as MessagePartPrimitive, message_exports as MessagePrimitive, MessageProvider, ModelContextClient, ModelContextRegistry, OpenAIRealtimeVoiceAdapter, PartByIndexProvider, queueItem_exports as QueueItemPrimitive, ReadonlyThreadProvider, RemoteThreadList, RuntimeAdapterProvider, selectionToolbar_exports as SelectionToolbarPrimitive, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, SingleThreadList, SuggestionByIndexProvider, suggestion_exports as SuggestionPrimitive, Suggestions, TextMessagePartProvider, ThreadListItemByIndexProvider, threadListItemMore_exports as ThreadListItemMorePrimitive, threadListItem_exports as ThreadListItemPrimitive, ThreadListItemRuntimeProvider, threadList_exports as ThreadListPrimitive, thread_exports as ThreadPrimitive, Tools, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createSimpleTitleAdapter, createSuggestionAdapter, createThreadRowsSelector, createVoiceSession, defaultDirectiveFormatter, defineMcpToolkit, defineToolkit, externalTool, fromThreadMessageLike, generateId, getExternalStoreMessages, getMcpAppFromToolPart, groupPartByType, hitl, hitlTool, humanTool, isMessageNotSentError, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, makeAssistantVisible, mergeModelContexts, pickExternalStoreSharedOptions, providerTool, readAnonymousRefreshToken, stubTool, tool, toolApprovalAcceptsText, unstable_Interactables, unstable_convertExternalMessages, unstable_createExternalMessageConversionCache, unstable_createMessageConverter, unstable_defaultDirectiveFormatter, defaultWebMcpFilter as unstable_defaultWebMcpFilter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions, unstable_interactableTool, unstable_useComposerInput, unstable_useComposerInputHistory, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useLiveCompletionAdapter, unstable_useMentionAdapter, unstable_useMessageStallDetection, unstable_useSlashCommandAdapter, unstable_useThreadMessageIds, unstable_useTriggerPopoverAriaProps, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional, unstable_useWebMcpProvider, useAssistantContext, useAssistantDataUI, useAssistantFrameHost, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState, useAui, useAuiEvent, useAuiState, useAuiToolOverrides, useCloudThreadListAdapter, useCloudThreadListRuntime, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessagePartData, useMessagePartFile, useMessagePartImage, useMessagePartReasoning, useMessagePartSource, useMessagePartText, useMessageQuote, useMessageTiming, useRemoteThreadListRuntime, useRuntimeAdapters, useScrollLock, useSmooth, useThreadViewport, useThreadViewportAutoScroll, useThreadViewportStore, useToolArgsStatus, useToolCallElapsed, useVoiceControls, useVoiceState, useVoiceVolume };
67
+ export { actionBarMore_exports as ActionBarMorePrimitive, actionBar_exports as ActionBarPrimitive, AssistantCloud, AssistantFrameHost, AssistantFrameProvider, assistantModal_exports as AssistantModalPrimitive, AssistantRuntimeProvider, attachment_exports as AttachmentPrimitive, AuiConfig, AuiIf, AuiProvider, branchPicker_exports as BranchPickerPrimitive, ChainOfThoughtByIndicesProvider, ChainOfThoughtClient, ChainOfThoughtPartByIndexProvider, chainOfThought_exports as ChainOfThoughtPrimitive, CloudFileAttachmentAdapter, CloudRendererHost, ComposerAttachmentByIndexProvider, composer_exports as ComposerPrimitive, CompositeAttachmentAdapter, DataRenderers, DevToolsHooks, DevToolsProviderApi, error_exports as ErrorPrimitive, ExportedMessageRepository, ExternalThread, FRAME_MESSAGE_CHANNEL, GeminiLiveVoiceAdapter, GenerativeUIRender, GenerativeUIRenderError, internal_exports as INTERNAL, InMemoryThreadList, InMemoryThreadListAdapter, Interactables, McpAppRenderer, McpAppsRemoteHost, MessageAttachmentByIndexProvider, MessageByIndexProvider, MessageNotSentError, messagePart_exports as MessagePartPrimitive, message_exports as MessagePrimitive, MessageProvider, ModelContextClient, ModelContextRegistry, OpenAIRealtimeVoiceAdapter, PartByIndexProvider, queueItem_exports as QueueItemPrimitive, ReadonlyThreadProvider, RemoteThreadList, RuntimeAdapterProvider, selectionToolbar_exports as SelectionToolbarPrimitive, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, SingleThreadList, SuggestionByIndexProvider, suggestion_exports as SuggestionPrimitive, Suggestions, TextMessagePartProvider, ThreadListItemByIndexProvider, threadListItemMore_exports as ThreadListItemMorePrimitive, threadListItem_exports as ThreadListItemPrimitive, ThreadListItemRuntimeProvider, threadList_exports as ThreadListPrimitive, thread_exports as ThreadPrimitive, Tools, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createSimpleTitleAdapter, createSuggestionAdapter, createThreadRowsSelector, createVoiceSession, defaultDirectiveFormatter, defineMcpToolkit, defineToolkit, externalTool, fromThreadMessageLike, generateId, getExternalStoreMessages, getMcpAppFromToolPart, groupPartByType, hitl, hitlTool, humanTool, isMessageNotSentError, makeAssistantDataUI, makeAssistantTool, makeAssistantToolUI, makeAssistantVisible, mergeModelContexts, pickExternalStoreSharedOptions, providerTool, readAnonymousRefreshToken, stubTool, tool, toolApprovalAcceptsText, unstable_Interactables, unstable_convertExternalMessages, unstable_createExternalMessageConversionCache, unstable_createMessageConverter, unstable_defaultDirectiveFormatter, defaultWebMcpFilter as unstable_defaultWebMcpFilter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions, unstable_interactableTool, unstable_useComposerInput, unstable_useComposerInputHistory, unstable_useInteractable, unstable_useInteractableState, unstable_useInteractableVersions, unstable_useLiveCompletionAdapter, unstable_useMentionAdapter, unstable_useMessageStallDetection, unstable_useSlashCommandAdapter, unstable_useThreadMessageIds, unstable_useTriggerPopoverAriaProps, useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext, useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional, useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext, useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional, useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers, useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional, unstable_useWebMcpProvider, useAssistantContext, useAssistantDataUI, useAssistantFrameHost, useAssistantInstructions, useAssistantInteractable, useAssistantTool, useAssistantToolUI, useAssistantTransportRuntime, useAssistantTransportSendCommand, useAssistantTransportState, useAui, useAuiEvent, useAuiState, useAuiToolOverrides, useCloudThreadListAdapter, useCloudThreadListRuntime, useExternalMessageConverter, useExternalStoreRuntime, useExternalStoreSharedOptions, useInlineRender, useInteractableState, useLocalRuntime, useMessagePartData, useMessagePartFile, useMessagePartImage, useMessagePartReasoning, useMessagePartSource, useMessagePartText, useMessageQuote, useMessageTiming, useRemoteThreadListRuntime, useRuntimeAdapters, useScrollLock, useSmooth, useThreadViewport, useThreadViewportAutoScroll, useThreadViewportStore, useToolArgsStatus, useToolCallElapsed, useVoiceControls, useVoiceState, useVoiceVolume };