@assistant-ui/react 0.15.32 → 0.15.34

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 (53) hide show
  1. package/dist/adapters/GeminiLiveVoiceAdapter.d.ts +26 -0
  2. package/dist/adapters/GeminiLiveVoiceAdapter.d.ts.map +1 -0
  3. package/dist/adapters/GeminiLiveVoiceAdapter.js +346 -0
  4. package/dist/adapters/GeminiLiveVoiceAdapter.js.map +1 -0
  5. package/dist/adapters/gemini-live/audio.d.ts +27 -0
  6. package/dist/adapters/gemini-live/audio.d.ts.map +1 -0
  7. package/dist/adapters/gemini-live/audio.js +291 -0
  8. package/dist/adapters/gemini-live/audio.js.map +1 -0
  9. package/dist/context/stores/ThreadViewport.js +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -1
  13. package/dist/internal.js +1 -1
  14. package/dist/mcp-apps/McpAppRenderer.js +1 -1
  15. package/dist/mcp-apps/app-frame.js +1 -1
  16. package/dist/primitives/actionBar/ActionBarRefreshRun.d.ts +26 -0
  17. package/dist/primitives/actionBar/ActionBarRefreshRun.d.ts.map +1 -0
  18. package/dist/primitives/actionBar/ActionBarRefreshRun.js +26 -0
  19. package/dist/primitives/actionBar/ActionBarRefreshRun.js.map +1 -0
  20. package/dist/primitives/actionBar/ActionBarResume.d.ts +30 -0
  21. package/dist/primitives/actionBar/ActionBarResume.d.ts.map +1 -0
  22. package/dist/primitives/actionBar/ActionBarResume.js +30 -0
  23. package/dist/primitives/actionBar/ActionBarResume.js.map +1 -0
  24. package/dist/primitives/actionBar/ActionBarRoot.d.ts +4 -2
  25. package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
  26. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  27. package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts.map +1 -1
  28. package/dist/primitives/actionBar/useActionBarFloatStatus.js +1 -1
  29. package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
  30. package/dist/primitives/actionBar.d.ts +2 -0
  31. package/dist/primitives/actionBar.d.ts.map +1 -1
  32. package/dist/primitives/actionBar.js +5 -1
  33. package/dist/primitives/actionBar.js.map +1 -1
  34. package/dist/primitives/error/ErrorRoot.d.ts +5 -0
  35. package/dist/primitives/error/ErrorRoot.d.ts.map +1 -1
  36. package/dist/primitives/error/ErrorRoot.js +30 -10
  37. package/dist/primitives/error/ErrorRoot.js.map +1 -1
  38. package/dist/primitives/message/MessagePartsGrouped.js +1 -1
  39. package/dist/sandbox-host/SandboxHost.js +1 -1
  40. package/dist/unstable/useComposerInputHistory.js +1 -1
  41. package/package.json +6 -6
  42. package/src/adapters/GeminiLiveVoiceAdapter.test.ts +992 -0
  43. package/src/adapters/GeminiLiveVoiceAdapter.ts +454 -0
  44. package/src/adapters/gemini-live/audio.test.ts +880 -0
  45. package/src/adapters/gemini-live/audio.ts +333 -0
  46. package/src/index.test.ts +34 -0
  47. package/src/index.ts +4 -0
  48. package/src/primitives/actionBar/ActionBarRefreshRun.ts +37 -0
  49. package/src/primitives/actionBar/ActionBarResume.ts +41 -0
  50. package/src/primitives/actionBar/ActionBarRoot.tsx +2 -1
  51. package/src/primitives/actionBar/useActionBarFloatStatus.ts +5 -1
  52. package/src/primitives/actionBar.ts +2 -0
  53. package/src/primitives/error/ErrorRoot.tsx +15 -1
@@ -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,6 +1,6 @@
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
5
  // src/context/stores/ThreadViewport.ts
6
6
  const createSizeRegistry = (onChange) => {
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":";AAGA,OAAO,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,WAAW,EACX,WAAW,EACX,KAAK,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAG5E,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGtE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,GACvC,iDAA8C;AAC/C,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,YAAY,EACV,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,iBAAiB,EACjB,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,0BAA0B,GAC3B,iCAA8B;AAC/B,YAAY,EACV,oCAAoC,EACpC,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,GACxB,iCAA8B;AAG/B,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,oBAAoB,EACpB,6BAA6B,EAC7B,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EACL,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GACjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EACL,2BAA2B;AAC3B,+GAA+G;AAC/G,uBAAuB,IAAI,gCAAgC;AAC3D,+GAA+G;AAC/G,oCAAoC,IAAI,6CAA6C;AACrF,+GAA+G;AAC/G,KAAK,8BAA8B,IAAI,uCAAuC,GAC/E,MAAM,0BAA0B,CAAC;AAClC,OAAO;AACL,+GAA+G;AAC/G,sBAAsB,IAAI,+BAA+B,GAC1D,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,YAAY,EACV,uBAAuB,EACvB,iCAAiC,GAClC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,YAAY,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,mCAA0B;AAG1B,OAAO,EACL,iBAAiB,EACjB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,eAAe,EACpB,mBAAmB,EACnB,KAAK,eAAe,EACpB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,EACL,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACrC,6BAA6B,EAC7B,gCAAgC,EAChC,yBAAyB,EACzB,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,gCAAgC,EACrC,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,iCAAiC,EACtC,KAAK,6BAA6B,EAClC,KAAK,mCAAmC,EACxC,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,EAC3C,KAAK,kCAAkC,EACvC,KAAK,4BAA4B,EACjC,iBAAiB,EACjB,KAAK,cAAc,GACpB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,iCAAiC,EACjC,mCAAmC,EACnC,gCAAgC,EAChC,KAAK,kCAAkC,EACvC,KAAK,4BAA4B,GAClC,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,YAAY,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,gDAA6C;AAG5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EACV,8BAA8B,EAC9B,qCAAqC,EACrC,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EACV,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,uDAAoD;AAEpF,OAAO,KAAK,kBAAkB,kCAA+B;AAC7D,OAAO,KAAK,sBAAsB,sCAAmC;AACrE,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,qBAAqB,qCAAkC;AACnE,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,iBAAiB,iCAA8B;AAC3D,OAAO,KAAK,kBAAkB,kCAA+B;AAC7D,OAAO,KAAK,oBAAoB,oCAAiC;AACjE,OAAO,KAAK,cAAc,8BAA2B;AACrD,OAAO,KAAK,gBAAgB,gCAA6B;AACzD,OAAO,KAAK,eAAe,+BAA4B;AACvD,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,mBAAmB,mCAAgC;AAC/D,OAAO,KAAK,uBAAuB,uCAAoC;AACvE,OAAO,KAAK,2BAA2B,2CAAwC;AAC/E,OAAO,KAAK,yBAAyB,yCAAsC;AAE3E,OAAO,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EACL,wBAAwB,EACxB,KAAK,SAAS,EACd,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,uDAAoD;AACjF,OAAO,EAAE,uBAAuB,EAAE,4DAAyD;AAC3F,OAAO,EAAE,oBAAoB,EAAE,yDAAsD;AACrF,OAAO,EAAE,kBAAkB,EAAE,uDAAoD;AACjF,OAAO,EAAE,mBAAmB,EAAE,wDAAqD;AACnF,OAAO,EAAE,kBAAkB,EAAE,uDAAoD;AACjF,OAAO,EAAE,2BAA2B,EAAE,2DAAwD;AAC9F,OAAO,EAAE,aAAa,EAAE,gDAA6C;AACrE,OAAO,EAAE,eAAe,EAAE,mCAAgC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,oCAAiC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,sCAAmC;AAChE,OAAO,EACL,iCAAiC,EACjC,KAAK,8BAA8B,EACnC,KAAK,qCAAqC,GAC3C,+CAA4C;AAC7C,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,oCAAiC;AAGzE,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,4BAA4B,EAC5B,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,EAClC,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,6BAA6B,EAC7B,gCAAgC,EAChC,4BAA4B,EAC5B,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,GACV,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,oCAAiC;AAE9E,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,QAAQ,sBAAmB;AAGvC,OAAO,EACL,0BAA0B,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,iCAAiC,EACtC,KAAK,iCAAiC,GACvC,wCAAqC;AAGtC,OAAO,EACL,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,sCAAsC,GAC5C,6CAA0C;AAG3C,OAAO,EACL,iCAAiC,EACjC,KAAK,wCAAwC,GAC9C,+CAA4C;AAE7C,YAAY,EAAE,mBAAmB,EAAE,sBAAmB;AAGtD,OAAO;AACL,+GAA+G;AAC/G,4BAA4B,IAAI,qCAAqC;AACrE,+GAA+G;AAC/G,oCAAoC,IAAI,6CAA6C;AACrF,+GAA+G;AAC/G,6BAA6B,IAAI,sCAAsC;AACvE,+GAA+G;AAC/G,qCAAqC,IAAI,8CAA8C;AACvF,+GAA+G;AAC/G,yBAAyB,IAAI,kCAAkC;AAC/D,+GAA+G;AAC/G,iCAAiC,IAAI,0CAA0C;AAC/E,+GAA+G;AAC/G,KAAK,iBAAiB,IAAI,0BAA0B,EACpD,KAAK,YAAY,EACjB,KAAK,cAAc;AACnB,+GAA+G;AAC/G,KAAK,eAAe,IAAI,wBAAwB,GACjD,+CAAsC;AACvC,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACf,+CAAsC;AACvC,8CAA8C;AAC9C,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC;AACjD,gDAAgD;AAChD,MAAM,MAAM,uBAAuB,GAAG,cAAc,CAAC;AACrD,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,WAAW,EACX,2BAA2B,EAC3B,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,yBAAyB,EACzB,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gCAAgC,EAChC,KAAK,6BAA6B,GACnC,8CAA2C;AAG5C,OAAO,EACL,yBAAyB,EACzB,mCAAmC,EACnC,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,KAAK,gCAAgC,GACtC,uCAAoC;AAErC,YAAY,EAAE,SAAS,EAAE,2BAAwB;AAGjD,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,8CAA2C;AAE5C,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,qBAAqB,GACtB,4BAAmB;AACpB,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,GAC/B,4BAAmB;AACpB,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EACL,0BAA0B,EAC1B,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,GACnC,+CAA4C;AAC7C,OAAO;AACL,+GAA+G;AAC/G,mBAAmB,IAAI,4BAA4B,GACpD,0CAAuC;AAGxC,YAAY,EACV,YAAY,EACZ,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iCAAiC,EACjC,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,SAAS,EACT,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
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 };
package/dist/internal.js CHANGED
@@ -2,8 +2,8 @@ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  import { useComposerInputPluginRegistryOptional } from "./primitives/composer/ComposerInputPluginContext.js";
3
3
  import { useSmoothStatus, withSmoothContextProvider } from "./utils/smooth/SmoothContext.js";
4
4
  import { useSmooth } from "./utils/smooth/useSmooth.js";
5
- import { splitLocalRuntimeOptions } from "@assistant-ui/core/react";
6
5
  import { AssistantRuntimeImpl, BaseAssistantRuntimeCore, CompositeContextProvider, DefaultThreadComposerRuntimeCore, MessageRepository, ThreadRuntimeImpl, getAutoStatus } from "@assistant-ui/core/internal";
6
+ import { splitLocalRuntimeOptions } from "@assistant-ui/core/react";
7
7
  // src/internal.ts
8
8
  var internal_exports = /* @__PURE__ */ __exportAll({
9
9
  AssistantRuntimeImpl: () => AssistantRuntimeImpl,
@@ -2,11 +2,11 @@
2
2
  import { useIsomorphicLayoutEffect } from "../utils/useIsomorphicLayoutEffect.js";
3
3
  import { McpAppFrame } from "./app-frame.js";
4
4
  import { getMcpAppFromToolPart } from "./utils.js";
5
+ import { isRecord } from "@assistant-ui/core/internal";
5
6
  import { useEffect, useMemo, useRef, useState } from "@assistant-ui/tap/react-shim";
6
7
  import { useAui } from "@assistant-ui/store";
7
8
  import { resource, useResource } from "@assistant-ui/tap";
8
9
  import { create } from "zustand";
9
- import { isRecord } from "@assistant-ui/core/internal";
10
10
  import { Fragment, jsx } from "react/jsx-runtime";
11
11
  // src/mcp-apps/McpAppRenderer.tsx
12
12
  const isSameOptions = (a, b) => {
@@ -3,9 +3,9 @@ import { useIsomorphicLayoutEffect } from "../utils/useIsomorphicLayoutEffect.js
3
3
  import { createMcpAppBridge } from "./bridge.js";
4
4
  import { SandboxHost } from "../sandbox-host/SandboxHost.js";
5
5
  import { applyMcpAppCsp } from "./csp.js";
6
+ import { isRecord } from "@assistant-ui/core/internal";
6
7
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
7
8
  import { useEffect, useRef } from "@assistant-ui/tap/react-shim";
8
- import { isRecord } from "@assistant-ui/core/internal";
9
9
  import { jsx } from "react/jsx-runtime";
10
10
  // src/mcp-apps/app-frame.tsx
11
11
  const DEFAULT_PRODUCT = "assistant-ui-mcp-app";
@@ -0,0 +1,26 @@
1
+ import { type ActionButtonElement, type ActionButtonProps } from "../../utils/createActionButton.js";
2
+ declare const useActionBarRefreshRun: () => (() => void) | null;
3
+ export declare namespace ActionBarPrimitiveRefreshRun {
4
+ type Element = ActionButtonElement;
5
+ type Props = ActionButtonProps<typeof useActionBarRefreshRun>;
6
+ }
7
+ /**
8
+ * A button that re-reads an assistant message whose run another tab or
9
+ * session is still writing, so the thread shows its latest stored state
10
+ * without a page reload. The thread also re-reads it on its own around the
11
+ * moment the run would cross `staleAfter`. It renders disabled unless
12
+ * Assistant Cloud reported the run in progress elsewhere, and while a
13
+ * refresh is in flight.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * <ActionBarPrimitive.RefreshRun>Refresh</ActionBarPrimitive.RefreshRun>
18
+ * ```
19
+ */
20
+ export declare const ActionBarPrimitiveRefreshRun: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
21
+ asChild?: boolean | undefined;
22
+ }, "ref"> & {
23
+ render?: import("react").ReactElement | undefined;
24
+ } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
25
+ export {};
26
+ //# sourceMappingURL=ActionBarRefreshRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionBarRefreshRun.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarRefreshRun.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAEvB,0CAAuC;AAGxC,QAAA,MAAM,sBAAsB,2BAI3B,CAAC;AAEF,yBAAiB,4BAA4B,CAAC;IAC5C,KAAY,OAAO,GAAG,mBAAmB,CAAC;IAC1C,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,sBAAsB,CAAC,CAAC;CACtE;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,4BAA4B;;;;gHAGxC,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { createActionButton } from "../../utils/createActionButton.js";
3
+ import { useActionBarRefreshRun } from "@assistant-ui/core/react";
4
+ // src/primitives/actionBar/ActionBarRefreshRun.ts
5
+ const useActionBarRefreshRun$1 = () => {
6
+ const { disabled, refresh } = useActionBarRefreshRun();
7
+ if (disabled) return null;
8
+ return refresh;
9
+ };
10
+ /**
11
+ * A button that re-reads an assistant message whose run another tab or
12
+ * session is still writing, so the thread shows its latest stored state
13
+ * without a page reload. The thread also re-reads it on its own around the
14
+ * moment the run would cross `staleAfter`. It renders disabled unless
15
+ * Assistant Cloud reported the run in progress elsewhere, and while a
16
+ * refresh is in flight.
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * <ActionBarPrimitive.RefreshRun>Refresh</ActionBarPrimitive.RefreshRun>
21
+ * ```
22
+ */
23
+ const ActionBarPrimitiveRefreshRun = createActionButton("ActionBarPrimitive.RefreshRun", useActionBarRefreshRun$1);
24
+ export { ActionBarPrimitiveRefreshRun };
25
+
26
+ //# sourceMappingURL=ActionBarRefreshRun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionBarRefreshRun.js","names":["ActionButtonElement","ActionButtonProps","createActionButton","useActionBarRefreshRun","useActionBarRefreshRunBehavior","disabled","refresh","ActionBarPrimitiveRefreshRun","Element","Props","useActionBarRefreshRun","useActionBarRefreshRunBehavior"],"sources":["../../../src/primitives/actionBar/ActionBarRefreshRun.ts"],"sourcesContent":["\"use client\";\n\nimport {\n type ActionButtonElement,\n type ActionButtonProps,\n createActionButton,\n} from \"../../utils/createActionButton\";\nimport { useActionBarRefreshRun as useActionBarRefreshRunBehavior } from \"@assistant-ui/core/react\";\n\nconst useActionBarRefreshRun = () => {\n const { disabled, refresh } = useActionBarRefreshRunBehavior();\n if (disabled) return null;\n return refresh;\n};\n\nexport namespace ActionBarPrimitiveRefreshRun {\n export type Element = ActionButtonElement;\n export type Props = ActionButtonProps<typeof useActionBarRefreshRun>;\n}\n\n/**\n * A button that re-reads an assistant message whose run another tab or\n * session is still writing, so the thread shows its latest stored state\n * without a page reload. The thread also re-reads it on its own around the\n * moment the run would cross `staleAfter`. It renders disabled unless\n * Assistant Cloud reported the run in progress elsewhere, and while a\n * refresh is in flight.\n *\n * @example\n * ```tsx\n * <ActionBarPrimitive.RefreshRun>Refresh</ActionBarPrimitive.RefreshRun>\n * ```\n */\nexport const ActionBarPrimitiveRefreshRun = createActionButton(\n \"ActionBarPrimitive.RefreshRun\",\n useActionBarRefreshRun,\n);\n"],"mappings":";;;;AASA,MAAMG,iCAAyB;CAC7B,MAAA,EAAAE,UAAAC,YAA8BF,uBAA+B;CAC7D,IAAIC,UAAQ,OAAS;CAAK,OACnBC;AAAO;;;;;;;;;;;;;;AAqBhB,MAAaC,+BAA+BL,mBAC1C,iCACAC,wBACF"}
@@ -0,0 +1,30 @@
1
+ import { type ActionButtonElement, type ActionButtonProps } from "../../utils/createActionButton.js";
2
+ declare const useActionBarResume: () => (() => void) | null;
3
+ export declare namespace ActionBarPrimitiveResume {
4
+ type Element = ActionButtonElement;
5
+ type Props = ActionButtonProps<typeof useActionBarResume>;
6
+ }
7
+ /**
8
+ * A button that answers again in place of an assistant message whose run
9
+ * stopped before it finished (its tab closed or lost its connection). Like
10
+ * Regenerate, it starts a new branch beside the interrupted reply, which
11
+ * stays as it is. It renders disabled unless the message is the last one on
12
+ * its branch and its run went `staleAfter` without a heartbeat.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <MessagePrimitive.Error>
17
+ * <ErrorPrimitive.Root>
18
+ * <ErrorPrimitive.Message />
19
+ * <ActionBarPrimitive.Resume>Resume</ActionBarPrimitive.Resume>
20
+ * </ErrorPrimitive.Root>
21
+ * </MessagePrimitive.Error>
22
+ * ```
23
+ */
24
+ export declare const ActionBarPrimitiveResume: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
25
+ asChild?: boolean | undefined;
26
+ }, "ref"> & {
27
+ render?: import("react").ReactElement | undefined;
28
+ } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
29
+ export {};
30
+ //# sourceMappingURL=ActionBarResume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionBarResume.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarResume.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAEvB,0CAAuC;AAGxC,QAAA,MAAM,kBAAkB,2BAIvB,CAAC;AAEF,yBAAiB,wBAAwB,CAAC;IACxC,KAAY,OAAO,GAAG,mBAAmB,CAAC;IAC1C,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,kBAAkB,CAAC,CAAC;CAClE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB;;;;gHAGpC,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { createActionButton } from "../../utils/createActionButton.js";
3
+ import { useActionBarResume } from "@assistant-ui/core/react";
4
+ // src/primitives/actionBar/ActionBarResume.ts
5
+ const useActionBarResume$1 = () => {
6
+ const { disabled, resume } = useActionBarResume();
7
+ if (disabled) return null;
8
+ return resume;
9
+ };
10
+ /**
11
+ * A button that answers again in place of an assistant message whose run
12
+ * stopped before it finished (its tab closed or lost its connection). Like
13
+ * Regenerate, it starts a new branch beside the interrupted reply, which
14
+ * stays as it is. It renders disabled unless the message is the last one on
15
+ * its branch and its run went `staleAfter` without a heartbeat.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <MessagePrimitive.Error>
20
+ * <ErrorPrimitive.Root>
21
+ * <ErrorPrimitive.Message />
22
+ * <ActionBarPrimitive.Resume>Resume</ActionBarPrimitive.Resume>
23
+ * </ErrorPrimitive.Root>
24
+ * </MessagePrimitive.Error>
25
+ * ```
26
+ */
27
+ const ActionBarPrimitiveResume = createActionButton("ActionBarPrimitive.Resume", useActionBarResume$1);
28
+ export { ActionBarPrimitiveResume };
29
+
30
+ //# sourceMappingURL=ActionBarResume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionBarResume.js","names":["ActionButtonElement","ActionButtonProps","createActionButton","useActionBarResume","useActionBarResumeBehavior","disabled","resume","ActionBarPrimitiveResume","Element","Props","useActionBarResume","useActionBarResumeBehavior"],"sources":["../../../src/primitives/actionBar/ActionBarResume.ts"],"sourcesContent":["\"use client\";\n\nimport {\n type ActionButtonElement,\n type ActionButtonProps,\n createActionButton,\n} from \"../../utils/createActionButton\";\nimport { useActionBarResume as useActionBarResumeBehavior } from \"@assistant-ui/core/react\";\n\nconst useActionBarResume = () => {\n const { disabled, resume } = useActionBarResumeBehavior();\n if (disabled) return null;\n return resume;\n};\n\nexport namespace ActionBarPrimitiveResume {\n export type Element = ActionButtonElement;\n export type Props = ActionButtonProps<typeof useActionBarResume>;\n}\n\n/**\n * A button that answers again in place of an assistant message whose run\n * stopped before it finished (its tab closed or lost its connection). Like\n * Regenerate, it starts a new branch beside the interrupted reply, which\n * stays as it is. It renders disabled unless the message is the last one on\n * its branch and its run went `staleAfter` without a heartbeat.\n *\n * @example\n * ```tsx\n * <MessagePrimitive.Error>\n * <ErrorPrimitive.Root>\n * <ErrorPrimitive.Message />\n * <ActionBarPrimitive.Resume>Resume</ActionBarPrimitive.Resume>\n * </ErrorPrimitive.Root>\n * </MessagePrimitive.Error>\n * ```\n */\nexport const ActionBarPrimitiveResume = createActionButton(\n \"ActionBarPrimitive.Resume\",\n useActionBarResume,\n);\n"],"mappings":";;;;AASA,MAAMG,6BAAqB;CACzB,MAAA,EAAAE,UAAAC,WAA6BF,mBAA2B;CACxD,IAAIC,UAAQ,OAAS;CAAK,OACnBC;AAAM;;;;;;;;;;;;;;;;;;AAyBf,MAAaC,2BAA2BL,mBACtC,6BACAC,oBACF"}
@@ -5,7 +5,8 @@ export declare namespace ActionBarPrimitiveRoot {
5
5
  type Element = ComponentRef<typeof Primitive.div>;
6
6
  type Props = PrimitiveDivProps & {
7
7
  /**
8
- * Whether to hide the action bar when the thread is running.
8
+ * Whether to hide the action bar when the thread is running, or while
9
+ * another tab or session is still writing this message.
9
10
  * @default false
10
11
  */
11
12
  hideWhenRunning?: boolean | undefined;
@@ -53,7 +54,8 @@ export declare const ActionBarPrimitiveRoot: import("react").ForwardRefExoticCom
53
54
  render?: import("react").ReactElement | undefined;
54
55
  } & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
55
56
  /**
56
- * Whether to hide the action bar when the thread is running.
57
+ * Whether to hide the action bar when the thread is running, or while
58
+ * another tab or session is still writing this message.
57
59
  * @default false
58
60
  */
59
61
  hideWhenRunning?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBarRoot.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iCAA8B;AAClD,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,wBAAwB,EAI9B,MAAM,OAAO,CAAC;AAOf,KAAK,iBAAiB,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AAExE,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,iBAAiB,GAAG;QACtC;;;WAGG;QACH,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACtC;;;;;;WAMG;QACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;QACvD;;;;;;WAMG;QACH,aAAa,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;KAClE,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,sBAAsB;;;;;IA5C/B;;;OAGG;sBACe,OAAO,GAAG,SAAS;IACrC;;;;;;OAMG;eACQ,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS;IACtD;;;;;;OAMG;oBACa,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS;kDAmElE,CAAC"}
1
+ {"version":3,"file":"ActionBarRoot.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iCAA8B;AAClD,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,wBAAwB,EAI9B,MAAM,OAAO,CAAC;AAOf,KAAK,iBAAiB,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AAExE,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,iBAAiB,GAAG;QACtC;;;;WAIG;QACH,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACtC;;;;;;WAMG;QACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;QACvD;;;;;;WAMG;QACH,aAAa,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;KAClE,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,sBAAsB;;;;;IA7C/B;;;;OAIG;sBACe,OAAO,GAAG,SAAS;IACrC;;;;;;OAMG;eACQ,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS;IACtD;;;;;;OAMG;oBACa,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS;kDAmElE,CAAC"}