@assistant-ui/react 0.5.65 → 0.5.66

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.mjs CHANGED
@@ -16,10 +16,7 @@ import {
16
16
  } from "./chunk-BJPOCE4O.mjs";
17
17
 
18
18
  // src/context/providers/AssistantRuntimeProvider.tsx
19
- import { memo } from "react";
20
-
21
- // src/context/providers/AssistantProvider.tsx
22
- import { useEffect as useEffect2, useInsertionEffect, useRef, useState as useState2 } from "react";
19
+ import { memo, useEffect as useEffect2, useMemo as useMemo2, useState as useState2 } from "react";
23
20
 
24
21
  // src/context/react/AssistantContext.ts
25
22
  import { createContext } from "react";
@@ -122,8 +119,8 @@ var makeAssistantToolUIsStore = () => create((set) => {
122
119
  });
123
120
  });
124
121
 
125
- // src/context/providers/ThreadProvider.tsx
126
- import { useEffect, useState } from "react";
122
+ // src/context/providers/ThreadRuntimeProvider.tsx
123
+ import { useEffect, useMemo, useState } from "react";
127
124
 
128
125
  // src/context/react/ThreadContext.ts
129
126
  import { createContext as createContext2 } from "react";
@@ -160,10 +157,9 @@ var {
160
157
 
161
158
  // src/context/stores/ThreadComposer.ts
162
159
  import { create as create2 } from "zustand";
163
- var makeThreadComposerStore = (useThreadRuntime2) => {
160
+ var makeThreadComposerStore = (runtime) => {
164
161
  const focusListeners = /* @__PURE__ */ new Set();
165
162
  return create2()((_, get) => {
166
- const runtime = useThreadRuntime2.getState();
167
163
  return {
168
164
  type: "thread",
169
165
  get value() {
@@ -172,30 +168,27 @@ var makeThreadComposerStore = (useThreadRuntime2) => {
172
168
  setValue(value) {
173
169
  get().setText(value);
174
170
  },
175
- attachmentAccept: runtime.composer.attachmentAccept,
176
- attachments: runtime.composer.attachments,
171
+ ...runtime.getState(),
172
+ canCancel: false,
173
+ // "TODO",
174
+ isEditing: true,
177
175
  addAttachment: (file) => {
178
- useThreadRuntime2.getState().composer.addAttachment(file);
176
+ runtime.addAttachment(file);
179
177
  },
180
178
  removeAttachment: (attachmentId) => {
181
- useThreadRuntime2.getState().composer.removeAttachment(attachmentId);
179
+ runtime.removeAttachment(attachmentId);
182
180
  },
183
181
  reset: () => {
184
- useThreadRuntime2.getState().composer.reset();
182
+ runtime.reset();
185
183
  },
186
- text: runtime.composer.text,
187
184
  setText: (text) => {
188
- useThreadRuntime2.getState().composer.setText(text);
185
+ runtime.setText(text);
189
186
  },
190
- canCancel: runtime.capabilities.cancel,
191
- isEditing: true,
192
- isEmpty: runtime.composer.isEmpty,
193
187
  send: () => {
194
- const runtime2 = useThreadRuntime2.getState();
195
- runtime2.composer.send();
188
+ runtime.send();
196
189
  },
197
190
  cancel: () => {
198
- useThreadRuntime2.getState().cancelRun();
191
+ runtime.cancel();
199
192
  },
200
193
  focus: () => {
201
194
  for (const listener of focusListeners) {
@@ -212,27 +205,11 @@ var makeThreadComposerStore = (useThreadRuntime2) => {
212
205
  });
213
206
  };
214
207
 
215
- // src/context/stores/Thread.ts
216
- import { create as create3 } from "zustand";
217
- var getThreadStateFromRuntime = (runtime) => {
218
- const lastMessage = runtime.messages.at(-1);
219
- return Object.freeze({
220
- threadId: runtime.threadId,
221
- capabilities: runtime.capabilities,
222
- isDisabled: runtime.isDisabled,
223
- isRunning: lastMessage?.role !== "assistant" ? false : lastMessage.status.type === "running"
224
- });
225
- };
226
- var makeThreadStore = (runtimeRef) => {
227
- const runtime = runtimeRef.getState();
228
- return create3(() => getThreadStateFromRuntime(runtime));
229
- };
230
-
231
208
  // src/context/stores/ThreadViewport.tsx
232
- import { create as create4 } from "zustand";
209
+ import { create as create3 } from "zustand";
233
210
  var makeThreadViewportStore = () => {
234
211
  const scrollToBottomListeners = /* @__PURE__ */ new Set();
235
- return create4(() => ({
212
+ return create3(() => ({
236
213
  isAtBottom: true,
237
214
  scrollToBottom: () => {
238
215
  for (const listener of scrollToBottomListeners) {
@@ -248,85 +225,65 @@ var makeThreadViewportStore = () => {
248
225
  }));
249
226
  };
250
227
 
251
- // src/context/stores/ThreadMessages.ts
252
- import { create as create5 } from "zustand";
253
- var makeThreadMessagesStore = (runtimeRef) => {
254
- return create5(() => runtimeRef.getState().messages);
255
- };
256
-
257
228
  // src/context/ReadonlyStore.ts
258
229
  var writableStore = (store) => {
259
230
  return store;
260
231
  };
261
232
 
262
- // src/context/providers/ThreadProvider.tsx
263
- import { create as create6 } from "zustand";
233
+ // src/context/providers/ThreadRuntimeProvider.tsx
234
+ import { create as create4 } from "zustand";
264
235
  import { jsx, jsxs } from "react/jsx-runtime";
265
- var ThreadProvider = ({
266
- children,
267
- provider: thread
268
- }) => {
269
- const [context] = useState(() => {
270
- const useThreadRuntime2 = create6(() => thread);
271
- const useThread2 = makeThreadStore(useThreadRuntime2);
272
- const useThreadMessages2 = makeThreadMessagesStore(useThreadRuntime2);
236
+ var useThreadRuntimeStore2 = (runtime) => {
237
+ const [store] = useState(() => create4(() => runtime));
238
+ useEffect(() => {
239
+ writableStore(store).setState(runtime, true);
240
+ }, [runtime, store]);
241
+ return store;
242
+ };
243
+ var useThreadStore2 = (runtime) => {
244
+ const [store] = useState(() => create4(() => runtime.getState()));
245
+ useEffect(() => {
246
+ const updateState = () => writableStore(store).setState(runtime.getState(), true);
247
+ updateState();
248
+ return runtime.subscribe(updateState);
249
+ }, [runtime, store]);
250
+ return store;
251
+ };
252
+ var useThreadMessagesStore2 = (runtime) => {
253
+ const [store] = useState(() => create4(() => runtime.messages));
254
+ useEffect(() => {
255
+ const updateState = () => writableStore(store).setState(runtime.messages, true);
256
+ updateState();
257
+ return runtime.subscribe(updateState);
258
+ }, [runtime, store]);
259
+ return store;
260
+ };
261
+ var useThreadComposerStore2 = (runtime) => {
262
+ const [store] = useState(() => makeThreadComposerStore(runtime));
263
+ useEffect(() => {
264
+ const updateState = () => writableStore(store).setState(runtime.getState());
265
+ updateState();
266
+ return runtime.subscribe(updateState);
267
+ }, [runtime, store]);
268
+ return store;
269
+ };
270
+ var ThreadRuntimeProvider = ({ children, runtime }) => {
271
+ const useThreadRuntime2 = useThreadRuntimeStore2(runtime);
272
+ const useThread2 = useThreadStore2(runtime);
273
+ const useThreadMessages2 = useThreadMessagesStore2(runtime);
274
+ const useThreadComposer2 = useThreadComposerStore2(runtime.composer);
275
+ const context = useMemo(() => {
273
276
  const useViewport = makeThreadViewportStore();
274
- const useComposer2 = makeThreadComposerStore(useThreadRuntime2);
275
277
  return {
276
278
  useThread: useThread2,
277
279
  useThreadRuntime: useThreadRuntime2,
278
280
  useThreadMessages: useThreadMessages2,
279
281
  useThreadActions: useThreadRuntime2,
280
- useComposer: useComposer2,
282
+ useComposer: useThreadComposer2,
281
283
  useViewport
282
284
  };
283
- });
284
- useEffect(() => {
285
- const onThreadUpdate = () => {
286
- const oldState = context.useThread.getState();
287
- const state = getThreadStateFromRuntime(thread);
288
- if (oldState.threadId !== state.threadId || oldState.isDisabled !== state.isDisabled || oldState.isRunning !== state.isRunning || oldState.capabilities !== state.capabilities) {
289
- writableStore(context.useThread).setState(state, true);
290
- }
291
- if (thread.messages !== context.useThreadMessages.getState()) {
292
- writableStore(context.useThreadMessages).setState(
293
- thread.messages,
294
- true
295
- );
296
- }
297
- const composerState = context.useComposer.getState();
298
- if (state.capabilities.cancel !== composerState.canCancel) {
299
- writableStore(context.useComposer).setState({
300
- canCancel: state.capabilities.cancel
301
- });
302
- }
303
- };
304
- onThreadUpdate();
305
- return thread.subscribe(onThreadUpdate);
306
- }, [thread, context]);
307
- useEffect(() => {
308
- const onComposerUpdate = () => {
309
- const composer = thread.composer;
310
- const composerState = context.useComposer.getState();
311
- if (composer.isEmpty !== composerState.isEmpty || composer.text !== composerState.text || composer.attachmentAccept !== composerState.attachmentAccept || composer.attachments !== composerState.attachments) {
312
- writableStore(context.useComposer).setState({
313
- isEmpty: composer.isEmpty,
314
- text: composer.text,
315
- attachmentAccept: composer.attachmentAccept,
316
- attachments: composer.attachments
317
- });
318
- }
319
- };
320
- onComposerUpdate();
321
- return thread.composer.subscribe(onComposerUpdate);
322
- }, [thread, context]);
323
- useEffect(
324
- () => thread.subscribe(() => {
325
- writableStore(context.useThreadRuntime).setState(thread, true);
326
- }),
327
- [thread, context]
328
- );
329
- const Synchronizer = context.useThreadRuntime(
285
+ }, [useThread2, useThreadRuntime2, useThreadMessages2, useThreadComposer2]);
286
+ const Synchronizer = context.useThread(
330
287
  (t) => t.unstable_synchronizer
331
288
  );
332
289
  return /* @__PURE__ */ jsxs(ThreadContext.Provider, { value: context, children: [
@@ -335,40 +292,36 @@ var ThreadProvider = ({
335
292
  ] });
336
293
  };
337
294
 
338
- // src/context/providers/AssistantProvider.tsx
339
- import { create as create7 } from "zustand";
295
+ // src/context/providers/AssistantRuntimeProvider.tsx
296
+ import { create as create5 } from "zustand";
340
297
  import { jsx as jsx2 } from "react/jsx-runtime";
341
- var AssistantProvider = ({ children, runtime }) => {
342
- const runtimeRef = useRef(runtime);
343
- useInsertionEffect(() => {
344
- runtimeRef.current = runtime;
345
- });
346
- const [context] = useState2(() => {
347
- const useAssistantRuntime2 = create7(() => runtime);
348
- const useToolUIs2 = makeAssistantToolUIsStore();
298
+ var useAssistantRuntimeStore2 = (runtime) => {
299
+ const [store] = useState2(() => create5(() => runtime));
300
+ useEffect2(() => {
301
+ writableStore(store).setState(runtime, true);
302
+ }, [runtime, store]);
303
+ return store;
304
+ };
305
+ var useAssistantToolUIsStore = () => {
306
+ return useMemo2(() => makeAssistantToolUIsStore(), []);
307
+ };
308
+ var AssistantRuntimeProviderImpl = ({ children, runtime }) => {
309
+ const useAssistantRuntime2 = useAssistantRuntimeStore2(runtime);
310
+ const useToolUIs2 = useAssistantToolUIsStore();
311
+ const context = useMemo2(() => {
349
312
  return {
350
313
  useToolUIs: useToolUIs2,
351
314
  useAssistantRuntime: useAssistantRuntime2,
352
315
  useAssistantActions: useAssistantRuntime2
353
316
  };
354
- });
355
- useEffect2(
356
- () => writableStore(context.useAssistantRuntime).setState(runtime, true),
357
- [runtime, context]
358
- );
359
- return /* @__PURE__ */ jsx2(AssistantContext.Provider, { value: context, children: /* @__PURE__ */ jsx2(ThreadProvider, { provider: runtime.thread, children }) });
360
- };
361
-
362
- // src/context/providers/AssistantRuntimeProvider.tsx
363
- import { jsx as jsx3 } from "react/jsx-runtime";
364
- var AssistantRuntimeProviderImpl = ({ children, runtime }) => {
365
- return /* @__PURE__ */ jsx3(AssistantProvider, { runtime, children });
317
+ }, [useAssistantRuntime2, useToolUIs2]);
318
+ return /* @__PURE__ */ jsx2(AssistantContext.Provider, { value: context, children: /* @__PURE__ */ jsx2(ThreadRuntimeProvider, { runtime: runtime.thread, children }) });
366
319
  };
367
320
  var AssistantRuntimeProvider = memo(AssistantRuntimeProviderImpl);
368
321
 
369
322
  // src/context/providers/TextContentPartProvider.tsx
370
323
  import { useEffect as useEffect3, useState as useState3 } from "react";
371
- import { create as create8 } from "zustand";
324
+ import { create as create6 } from "zustand";
372
325
 
373
326
  // src/context/react/ContentPartContext.ts
374
327
  import { createContext as createContext3 } from "react";
@@ -385,7 +338,7 @@ var { useContentPart, useContentPartStore } = createContextStoreHook(
385
338
  );
386
339
 
387
340
  // src/context/providers/TextContentPartProvider.tsx
388
- import { jsx as jsx4 } from "react/jsx-runtime";
341
+ import { jsx as jsx3 } from "react/jsx-runtime";
389
342
  var COMPLETE_STATUS = {
390
343
  type: "complete"
391
344
  };
@@ -394,7 +347,7 @@ var RUNNING_STATUS = {
394
347
  };
395
348
  var TextContentPartProvider = ({ children, text, isRunning }) => {
396
349
  const [context] = useState3(() => {
397
- const useContentPart2 = create8(() => ({
350
+ const useContentPart2 = create6(() => ({
398
351
  status: isRunning ? RUNNING_STATUS : COMPLETE_STATUS,
399
352
  part: { type: "text", text }
400
353
  }));
@@ -417,7 +370,7 @@ var TextContentPartProvider = ({ children, text, isRunning }) => {
417
370
  true
418
371
  );
419
372
  }, [context, isRunning, text]);
420
- return /* @__PURE__ */ jsx4(ContentPartContext.Provider, { value: context, children });
373
+ return /* @__PURE__ */ jsx3(ContentPartContext.Provider, { value: context, children });
421
374
  };
422
375
 
423
376
  // src/context/react/MessageContext.ts
@@ -427,6 +380,11 @@ var useMessageContext = createContextHook(
427
380
  MessageContext,
428
381
  "a component passed to <ThreadPrimitive.Messages components={...} />"
429
382
  );
383
+ function useMessageRuntime(options) {
384
+ const context = useMessageContext(options);
385
+ if (!context) return null;
386
+ return context.useMessageRuntime();
387
+ }
430
388
  var { useMessage, useMessageStore } = createContextStoreHook(
431
389
  useMessageContext,
432
390
  "useMessage"
@@ -441,11 +399,11 @@ var { useEditComposer, useEditComposerStore } = createContextStoreHook(
441
399
  );
442
400
 
443
401
  // src/context/react/ComposerContext.ts
444
- import { useMemo } from "react";
402
+ import { useMemo as useMemo3 } from "react";
445
403
  var useComposerContext = () => {
446
404
  const { useComposer: useComposer2 } = useThreadContext();
447
405
  const { useEditComposer: useEditComposer2 } = useMessageContext({ optional: true }) ?? {};
448
- return useMemo(
406
+ return useMemo3(
449
407
  () => ({
450
408
  useComposer: useEditComposer2 ?? useComposer2,
451
409
  type: useEditComposer2 ? "edit" : "new"
@@ -460,40 +418,17 @@ var { useComposer, useComposerStore } = createContextStoreHook(
460
418
 
461
419
  // src/hooks/useAppendMessage.tsx
462
420
  import { useCallback } from "react";
463
- var toAppendMessage = (useThreadMessages2, message) => {
464
- if (typeof message === "string") {
465
- return {
466
- parentId: useThreadMessages2.getState().at(-1)?.id ?? null,
467
- role: "user",
468
- content: [{ type: "text", text: message }],
469
- attachments: []
470
- };
471
- }
472
- return {
473
- parentId: message.parentId ?? useThreadMessages2.getState().at(-1)?.id ?? null,
474
- role: message.role ?? "user",
475
- content: message.content,
476
- attachments: message.attachments ?? []
477
- };
478
- };
479
421
  var useAppendMessage = () => {
480
- const threadMessagesStore = useThreadMessagesStore();
481
422
  const threadRuntime = useThreadRuntime();
482
423
  const threadViewportStore = useThreadViewportStore();
483
424
  const threadComposerStore = useThreadComposerStore();
484
425
  const append = useCallback(
485
426
  (message) => {
486
- const appendMessage = toAppendMessage(threadMessagesStore, message);
487
- threadRuntime.append(appendMessage);
427
+ threadRuntime.append(message);
488
428
  threadViewportStore.getState().scrollToBottom();
489
429
  threadComposerStore.getState().focus();
490
430
  },
491
- [
492
- threadMessagesStore,
493
- threadRuntime,
494
- threadViewportStore,
495
- threadComposerStore
496
- ]
431
+ [threadRuntime, threadViewportStore, threadComposerStore]
497
432
  );
498
433
  return append;
499
434
  };
@@ -582,7 +517,7 @@ var useAssistantInstructions = (instruction) => {
582
517
  import { useCallback as useCallback3 } from "react";
583
518
 
584
519
  // src/utils/combined/useCombinedStore.ts
585
- import { useMemo as useMemo2 } from "react";
520
+ import { useMemo as useMemo4 } from "react";
586
521
 
587
522
  // src/utils/combined/createCombinedStore.ts
588
523
  import { useSyncExternalStore } from "react";
@@ -603,7 +538,7 @@ var createCombinedStore = (stores) => {
603
538
 
604
539
  // src/utils/combined/useCombinedStore.ts
605
540
  var useCombinedStore = (stores, selector) => {
606
- const useCombined = useMemo2(() => createCombinedStore(stores), stores);
541
+ const useCombined = useMemo4(() => createCombinedStore(stores), stores);
607
542
  return useCombined(selector);
608
543
  };
609
544
 
@@ -624,12 +559,12 @@ var useActionBarCopy = ({
624
559
  const editComposerStore = useEditComposerStore();
625
560
  const hasCopyableContent = useCombinedStore(
626
561
  [messageStore, editComposerStore],
627
- ({ message }, c) => {
562
+ (message, c) => {
628
563
  return !c.isEditing && (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c2) => c2.type === "text" && c2.text.length > 0);
629
564
  }
630
565
  );
631
566
  const callback = useCallback3(() => {
632
- const { message } = messageStore.getState();
567
+ const message = messageStore.getState();
633
568
  const { setIsCopied } = messageUtilsStore.getState();
634
569
  const { isEditing, text: composerValue } = editComposerStore.getState();
635
570
  const valueToCopy = isEditing ? composerValue : getThreadMessageText(message);
@@ -665,7 +600,7 @@ var useActionBarReload = () => {
665
600
  const threadViewportStore = useThreadViewportStore();
666
601
  const disabled = useCombinedStore(
667
602
  [threadStore, messageStore],
668
- (t, m) => t.isRunning || t.isDisabled || m.message.role !== "assistant"
603
+ (t, m) => t.isRunning || t.isDisabled || m.role !== "assistant"
669
604
  );
670
605
  const callback = useCallback5(() => {
671
606
  const { parentId } = messageStore.getState();
@@ -719,7 +654,7 @@ var useActionBarFeedbackPositive = () => {
719
654
  const messageUtilsStore = useMessageUtilsStore();
720
655
  const callback = useCallback8(() => {
721
656
  threadRuntime.submitFeedback({
722
- messageId: messageStore.getState().message.id,
657
+ messageId: messageStore.getState().id,
723
658
  type: "positive"
724
659
  });
725
660
  messageUtilsStore.getState().setSubmittedFeedback("positive");
@@ -735,7 +670,7 @@ var useActionBarFeedbackNegative = () => {
735
670
  const messageUtilsStore = useMessageUtilsStore();
736
671
  const callback = useCallback9(() => {
737
672
  threadRuntime.submitFeedback({
738
- messageId: messageStore.getState().message.id,
673
+ messageId: messageStore.getState().id,
739
674
  type: "negative"
740
675
  });
741
676
  messageUtilsStore.getState().setSubmittedFeedback("negative");
@@ -745,48 +680,46 @@ var useActionBarFeedbackNegative = () => {
745
680
 
746
681
  // src/primitive-hooks/branchPicker/useBranchPickerCount.tsx
747
682
  var useBranchPickerCount = () => {
748
- const branchCount = useMessage((s) => s.branches.length);
683
+ const branchCount = useMessage((s) => s.branchCount);
749
684
  return branchCount;
750
685
  };
751
686
 
752
687
  // src/primitive-hooks/branchPicker/useBranchPickerNext.tsx
753
688
  import { useCallback as useCallback10 } from "react";
754
689
  var useBranchPickerNext = () => {
690
+ const messageRuntime = useMessageRuntime();
755
691
  const messageStore = useMessageStore();
756
692
  const editComposerStore = useEditComposerStore();
757
- const threadRuntime = useThreadRuntime();
758
693
  const disabled = useCombinedStore(
759
694
  [messageStore, editComposerStore],
760
- (m, c) => c.isEditing || m.branches.indexOf(m.message.id) + 1 >= m.branches.length
695
+ (m, c) => c.isEditing || m.branchNumber >= m.branchCount
761
696
  );
762
697
  const callback = useCallback10(() => {
763
- const { message, branches } = messageStore.getState();
764
- threadRuntime.switchToBranch(branches[branches.indexOf(message.id) + 1]);
765
- }, [threadRuntime, messageStore]);
698
+ messageRuntime.switchToBranch({ position: "next" });
699
+ }, [messageRuntime]);
766
700
  if (disabled) return null;
767
701
  return callback;
768
702
  };
769
703
 
770
704
  // src/primitive-hooks/branchPicker/useBranchPickerNumber.tsx
771
705
  var useBranchPickerNumber = () => {
772
- const branchIdx = useMessage((s) => s.branches.indexOf(s.message.id));
773
- return branchIdx + 1;
706
+ const branchNumber = useMessage((s) => s.branchNumber);
707
+ return branchNumber;
774
708
  };
775
709
 
776
710
  // src/primitive-hooks/branchPicker/useBranchPickerPrevious.tsx
777
711
  import { useCallback as useCallback11 } from "react";
778
712
  var useBranchPickerPrevious = () => {
713
+ const messageRuntime = useMessageRuntime();
779
714
  const messageStore = useMessageStore();
780
715
  const editComposerStore = useEditComposerStore();
781
- const threadRuntime = useThreadRuntime();
782
716
  const disabled = useCombinedStore(
783
717
  [messageStore, editComposerStore],
784
- (m, c) => c.isEditing || m.branches.indexOf(m.message.id) <= 0
718
+ (m, c) => c.isEditing || m.branchNumber <= 1
785
719
  );
786
720
  const callback = useCallback11(() => {
787
- const { message, branches } = messageStore.getState();
788
- threadRuntime.switchToBranch(branches[branches.indexOf(message.id) - 1]);
789
- }, [threadRuntime, messageStore]);
721
+ messageRuntime.switchToBranch({ position: "previous" });
722
+ }, [messageRuntime]);
790
723
  if (disabled) return null;
791
724
  return callback;
792
725
  };
@@ -902,19 +835,19 @@ var useMessageIf = (props) => {
902
835
  const messageUtilsStore = useMessageUtilsStore();
903
836
  return useCombinedStore(
904
837
  [messageStore, messageUtilsStore],
905
- ({ message, branches, isLast }, { isCopied, isHovering, isSpeaking, submittedFeedback }) => {
906
- if (props.hasBranches === true && branches.length < 2) return false;
907
- if (props.user && message.role !== "user") return false;
908
- if (props.assistant && message.role !== "assistant") return false;
909
- if (props.system && message.role !== "system") return false;
838
+ ({ role, attachments, branchCount, isLast }, { isCopied, isHovering, isSpeaking, submittedFeedback }) => {
839
+ if (props.hasBranches === true && branchCount < 2) return false;
840
+ if (props.user && role !== "user") return false;
841
+ if (props.assistant && role !== "assistant") return false;
842
+ if (props.system && role !== "system") return false;
910
843
  if (props.lastOrHover === true && !isHovering && !isLast) return false;
911
844
  if (props.copied === true && !isCopied) return false;
912
845
  if (props.copied === false && isCopied) return false;
913
846
  if (props.speaking === true && !isSpeaking) return false;
914
847
  if (props.speaking === false && isSpeaking) return false;
915
- if (props.hasAttachments === true && (message.role !== "user" || !message.attachments.length))
848
+ if (props.hasAttachments === true && (role !== "user" || !attachments.length))
916
849
  return false;
917
- if (props.hasAttachments === false && message.role === "user" && !!message.attachments.length)
850
+ if (props.hasAttachments === false && role === "user" && !!attachments.length)
918
851
  return false;
919
852
  if (props.submittedFeedback !== void 0 && submittedFeedback !== props.submittedFeedback)
920
853
  return false;
@@ -1025,7 +958,7 @@ var useActionBarFloatStatus = ({
1025
958
  };
1026
959
 
1027
960
  // src/primitives/actionBar/ActionBarRoot.tsx
1028
- import { jsx as jsx5 } from "react/jsx-runtime";
961
+ import { jsx as jsx4 } from "react/jsx-runtime";
1029
962
  var ActionBarPrimitiveRoot = forwardRef(({ hideWhenRunning, autohide, autohideFloat, ...rest }, ref) => {
1030
963
  const hideAndfloatStatus = useActionBarFloatStatus({
1031
964
  hideWhenRunning,
@@ -1033,7 +966,7 @@ var ActionBarPrimitiveRoot = forwardRef(({ hideWhenRunning, autohide, autohideFl
1033
966
  autohideFloat
1034
967
  });
1035
968
  if (hideAndfloatStatus === "hidden" /* Hidden */) return null;
1036
- return /* @__PURE__ */ jsx5(
969
+ return /* @__PURE__ */ jsx4(
1037
970
  Primitive.div,
1038
971
  {
1039
972
  ...hideAndfloatStatus === "floating" /* Floating */ ? { "data-floating": "true" } : null,
@@ -1048,11 +981,11 @@ ActionBarPrimitiveRoot.displayName = "ActionBarPrimitive.Root";
1048
981
  import { forwardRef as forwardRef2 } from "react";
1049
982
  import { composeEventHandlers } from "@radix-ui/primitive";
1050
983
  import { Primitive as Primitive2 } from "@radix-ui/react-primitive";
1051
- import { jsx as jsx6 } from "react/jsx-runtime";
984
+ import { jsx as jsx5 } from "react/jsx-runtime";
1052
985
  var ActionBarPrimitiveCopy = forwardRef2(({ copiedDuration, onClick, disabled, ...props }, forwardedRef) => {
1053
986
  const isCopied = useMessageUtils((u) => u.isCopied);
1054
987
  const callback = useActionBarCopy({ copiedDuration });
1055
- return /* @__PURE__ */ jsx6(
988
+ return /* @__PURE__ */ jsx5(
1056
989
  Primitive2.button,
1057
990
  {
1058
991
  type: "button",
@@ -1072,7 +1005,7 @@ ActionBarPrimitiveCopy.displayName = "ActionBarPrimitive.Copy";
1072
1005
  import { forwardRef as forwardRef3 } from "react";
1073
1006
  import { Primitive as Primitive3 } from "@radix-ui/react-primitive";
1074
1007
  import { composeEventHandlers as composeEventHandlers2 } from "@radix-ui/primitive";
1075
- import { jsx as jsx7 } from "react/jsx-runtime";
1008
+ import { jsx as jsx6 } from "react/jsx-runtime";
1076
1009
  var createActionButton = (displayName, useActionButton, forwardProps = []) => {
1077
1010
  const ActionButton = forwardRef3((props, forwardedRef) => {
1078
1011
  const forwardedProps = {};
@@ -1085,7 +1018,7 @@ var createActionButton = (displayName, useActionButton, forwardProps = []) => {
1085
1018
  }
1086
1019
  });
1087
1020
  const callback = useActionButton(forwardedProps);
1088
- return /* @__PURE__ */ jsx7(
1021
+ return /* @__PURE__ */ jsx6(
1089
1022
  Primitive3.button,
1090
1023
  {
1091
1024
  type: "button",
@@ -1125,7 +1058,7 @@ import { forwardRef as forwardRef4 } from "react";
1125
1058
  import { useEscapeKeydown } from "@radix-ui/react-use-escape-keydown";
1126
1059
  import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
1127
1060
  import { composeEventHandlers as composeEventHandlers3 } from "@radix-ui/primitive";
1128
- import { jsx as jsx8 } from "react/jsx-runtime";
1061
+ import { jsx as jsx7 } from "react/jsx-runtime";
1129
1062
  var ActionBarPrimitiveStopSpeaking = forwardRef4((props, ref) => {
1130
1063
  const callback = useActionBarStopSpeaking();
1131
1064
  useEscapeKeydown((e) => {
@@ -1134,7 +1067,7 @@ var ActionBarPrimitiveStopSpeaking = forwardRef4((props, ref) => {
1134
1067
  callback();
1135
1068
  }
1136
1069
  });
1137
- return /* @__PURE__ */ jsx8(
1070
+ return /* @__PURE__ */ jsx7(
1138
1071
  Primitive4.button,
1139
1072
  {
1140
1073
  type: "button",
@@ -1153,13 +1086,13 @@ ActionBarPrimitiveStopSpeaking.displayName = "ActionBarPrimitive.StopSpeaking";
1153
1086
  import { forwardRef as forwardRef5 } from "react";
1154
1087
  import { composeEventHandlers as composeEventHandlers4 } from "@radix-ui/primitive";
1155
1088
  import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
1156
- import { jsx as jsx9 } from "react/jsx-runtime";
1089
+ import { jsx as jsx8 } from "react/jsx-runtime";
1157
1090
  var ActionBarPrimitiveFeedbackPositive = forwardRef5(({ onClick, disabled, ...props }, forwardedRef) => {
1158
1091
  const isSubmitted = useMessageUtils(
1159
1092
  (u) => u.submittedFeedback === "positive"
1160
1093
  );
1161
1094
  const callback = useActionBarFeedbackPositive();
1162
- return /* @__PURE__ */ jsx9(
1095
+ return /* @__PURE__ */ jsx8(
1163
1096
  Primitive5.button,
1164
1097
  {
1165
1098
  type: "button",
@@ -1179,13 +1112,13 @@ ActionBarPrimitiveFeedbackPositive.displayName = "ActionBarPrimitive.FeedbackPos
1179
1112
  import { forwardRef as forwardRef6 } from "react";
1180
1113
  import { composeEventHandlers as composeEventHandlers5 } from "@radix-ui/primitive";
1181
1114
  import { Primitive as Primitive6 } from "@radix-ui/react-primitive";
1182
- import { jsx as jsx10 } from "react/jsx-runtime";
1115
+ import { jsx as jsx9 } from "react/jsx-runtime";
1183
1116
  var ActionBarPrimitiveFeedbackNegative = forwardRef6(({ onClick, disabled, ...props }, forwardedRef) => {
1184
1117
  const isSubmitted = useMessageUtils(
1185
1118
  (u) => u.submittedFeedback === "negative"
1186
1119
  );
1187
1120
  const callback = useActionBarFeedbackNegative();
1188
- return /* @__PURE__ */ jsx10(
1121
+ return /* @__PURE__ */ jsx9(
1189
1122
  Primitive6.button,
1190
1123
  {
1191
1124
  type: "button",
@@ -1233,7 +1166,7 @@ import * as PopoverPrimitive from "@radix-ui/react-popover";
1233
1166
  var usePopoverScope = PopoverPrimitive.createPopoverScope();
1234
1167
 
1235
1168
  // src/primitives/assistantModal/AssistantModalRoot.tsx
1236
- import { jsx as jsx11 } from "react/jsx-runtime";
1169
+ import { jsx as jsx10 } from "react/jsx-runtime";
1237
1170
  var useAssistantModalOpenState = (defaultOpen = false) => {
1238
1171
  const state = useState4(defaultOpen);
1239
1172
  const [, setOpen] = state;
@@ -1251,7 +1184,7 @@ var AssistantModalPrimitiveRoot = ({
1251
1184
  }) => {
1252
1185
  const scope = usePopoverScope(__scopeAssistantModal);
1253
1186
  const [modalOpen, setOpen] = useAssistantModalOpenState(defaultOpen);
1254
- return /* @__PURE__ */ jsx11(
1187
+ return /* @__PURE__ */ jsx10(
1255
1188
  PopoverPrimitive2.Root,
1256
1189
  {
1257
1190
  ...scope,
@@ -1266,14 +1199,14 @@ AssistantModalPrimitiveRoot.displayName = "AssistantModalPrimitive.Root";
1266
1199
  // src/primitives/assistantModal/AssistantModalTrigger.tsx
1267
1200
  import { forwardRef as forwardRef7 } from "react";
1268
1201
  import * as PopoverPrimitive3 from "@radix-ui/react-popover";
1269
- import { jsx as jsx12 } from "react/jsx-runtime";
1202
+ import { jsx as jsx11 } from "react/jsx-runtime";
1270
1203
  var AssistantModalPrimitiveTrigger = forwardRef7(
1271
1204
  ({
1272
1205
  __scopeAssistantModal,
1273
1206
  ...rest
1274
1207
  }, ref) => {
1275
1208
  const scope = usePopoverScope(__scopeAssistantModal);
1276
- return /* @__PURE__ */ jsx12(PopoverPrimitive3.Trigger, { ...scope, ...rest, ref });
1209
+ return /* @__PURE__ */ jsx11(PopoverPrimitive3.Trigger, { ...scope, ...rest, ref });
1277
1210
  }
1278
1211
  );
1279
1212
  AssistantModalPrimitiveTrigger.displayName = "AssistantModalPrimitive.Trigger";
@@ -1282,7 +1215,7 @@ AssistantModalPrimitiveTrigger.displayName = "AssistantModalPrimitive.Trigger";
1282
1215
  import { forwardRef as forwardRef8 } from "react";
1283
1216
  import * as PopoverPrimitive4 from "@radix-ui/react-popover";
1284
1217
  import { composeEventHandlers as composeEventHandlers7 } from "@radix-ui/primitive";
1285
- import { jsx as jsx13 } from "react/jsx-runtime";
1218
+ import { jsx as jsx12 } from "react/jsx-runtime";
1286
1219
  var AssistantModalPrimitiveContent = forwardRef8(
1287
1220
  ({
1288
1221
  __scopeAssistantModal,
@@ -1293,7 +1226,7 @@ var AssistantModalPrimitiveContent = forwardRef8(
1293
1226
  ...props
1294
1227
  }, forwardedRef) => {
1295
1228
  const scope = usePopoverScope(__scopeAssistantModal);
1296
- return /* @__PURE__ */ jsx13(PopoverPrimitive4.Portal, { ...scope, children: /* @__PURE__ */ jsx13(
1229
+ return /* @__PURE__ */ jsx12(PopoverPrimitive4.Portal, { ...scope, children: /* @__PURE__ */ jsx12(
1297
1230
  PopoverPrimitive4.Content,
1298
1231
  {
1299
1232
  ...scope,
@@ -1314,14 +1247,14 @@ AssistantModalPrimitiveContent.displayName = "AssistantModalPrimitive.Content";
1314
1247
  // src/primitives/assistantModal/AssistantModalAnchor.tsx
1315
1248
  import { forwardRef as forwardRef9 } from "react";
1316
1249
  import * as PopoverPrimitive5 from "@radix-ui/react-popover";
1317
- import { jsx as jsx14 } from "react/jsx-runtime";
1250
+ import { jsx as jsx13 } from "react/jsx-runtime";
1318
1251
  var AssistantModalPrimitiveAnchor = forwardRef9(
1319
1252
  ({
1320
1253
  __scopeAssistantModal,
1321
1254
  ...rest
1322
1255
  }, ref) => {
1323
1256
  const scope = usePopoverScope(__scopeAssistantModal);
1324
- return /* @__PURE__ */ jsx14(PopoverPrimitive5.Anchor, { ...scope, ...rest, ref });
1257
+ return /* @__PURE__ */ jsx13(PopoverPrimitive5.Anchor, { ...scope, ...rest, ref });
1325
1258
  }
1326
1259
  );
1327
1260
  AssistantModalPrimitiveAnchor.displayName = "AssistantModalPrimitive.Anchor";
@@ -1349,18 +1282,18 @@ var BranchPickerPrevious = createActionButton(
1349
1282
  );
1350
1283
 
1351
1284
  // src/primitives/branchPicker/BranchPickerCount.tsx
1352
- import { Fragment, jsx as jsx15 } from "react/jsx-runtime";
1285
+ import { Fragment, jsx as jsx14 } from "react/jsx-runtime";
1353
1286
  var BranchPickerPrimitiveCount = () => {
1354
1287
  const branchCount = useBranchPickerCount();
1355
- return /* @__PURE__ */ jsx15(Fragment, { children: branchCount });
1288
+ return /* @__PURE__ */ jsx14(Fragment, { children: branchCount });
1356
1289
  };
1357
1290
  BranchPickerPrimitiveCount.displayName = "BranchPickerPrimitive.Count";
1358
1291
 
1359
1292
  // src/primitives/branchPicker/BranchPickerNumber.tsx
1360
- import { Fragment as Fragment2, jsx as jsx16 } from "react/jsx-runtime";
1293
+ import { Fragment as Fragment2, jsx as jsx15 } from "react/jsx-runtime";
1361
1294
  var BranchPickerPrimitiveNumber = () => {
1362
1295
  const branchNumber = useBranchPickerNumber();
1363
- return /* @__PURE__ */ jsx16(Fragment2, { children: branchNumber });
1296
+ return /* @__PURE__ */ jsx15(Fragment2, { children: branchNumber });
1364
1297
  };
1365
1298
  BranchPickerPrimitiveNumber.displayName = "BranchPickerPrimitive.Number";
1366
1299
 
@@ -1386,9 +1319,9 @@ import {
1386
1319
  } from "react";
1387
1320
 
1388
1321
  // src/utils/hooks/useManagedRef.ts
1389
- import { useCallback as useCallback17, useRef as useRef2 } from "react";
1322
+ import { useCallback as useCallback17, useRef } from "react";
1390
1323
  var useManagedRef = (callback) => {
1391
- const cleanupRef = useRef2();
1324
+ const cleanupRef = useRef();
1392
1325
  const ref = useCallback17(
1393
1326
  (el) => {
1394
1327
  if (cleanupRef.current) {
@@ -1405,7 +1338,7 @@ var useManagedRef = (callback) => {
1405
1338
 
1406
1339
  // src/primitives/message/MessageRoot.tsx
1407
1340
  import { useComposedRefs } from "@radix-ui/react-compose-refs";
1408
- import { jsx as jsx17 } from "react/jsx-runtime";
1341
+ import { jsx as jsx16 } from "react/jsx-runtime";
1409
1342
  var useIsHoveringRef = () => {
1410
1343
  const messageUtilsStore = useMessageUtilsStore();
1411
1344
  const callbackRef = useCallback18(
@@ -1432,7 +1365,7 @@ var useIsHoveringRef = () => {
1432
1365
  var MessagePrimitiveRoot = forwardRef10((props, forwardRef33) => {
1433
1366
  const isHoveringRef = useIsHoveringRef();
1434
1367
  const ref = useComposedRefs(forwardRef33, isHoveringRef);
1435
- return /* @__PURE__ */ jsx17(Primitive7.div, { ...props, ref });
1368
+ return /* @__PURE__ */ jsx16(Primitive7.div, { ...props, ref });
1436
1369
  });
1437
1370
  MessagePrimitiveRoot.displayName = "MessagePrimitive.Root";
1438
1371
 
@@ -1451,8 +1384,8 @@ import { memo as memo2 } from "react";
1451
1384
 
1452
1385
  // src/context/providers/ContentPartProvider.tsx
1453
1386
  import { useEffect as useEffect8, useState as useState5 } from "react";
1454
- import { create as create9 } from "zustand";
1455
- import { jsx as jsx18 } from "react/jsx-runtime";
1387
+ import { create as create7 } from "zustand";
1388
+ import { jsx as jsx17 } from "react/jsx-runtime";
1456
1389
  var COMPLETE_STATUS2 = {
1457
1390
  type: "complete"
1458
1391
  };
@@ -1492,7 +1425,7 @@ var getContentPartState = ({ message }, useContentPart2, partIndex) => {
1492
1425
  var useContentPartContext2 = (partIndex) => {
1493
1426
  const messageStore = useMessageStore();
1494
1427
  const [context] = useState5(() => {
1495
- const useContentPart2 = create9(
1428
+ const useContentPart2 = create7(
1496
1429
  () => getContentPartState(messageStore.getState(), void 0, partIndex)
1497
1430
  );
1498
1431
  return { useContentPart: useContentPart2 };
@@ -1517,7 +1450,7 @@ var ContentPartProvider = ({
1517
1450
  children
1518
1451
  }) => {
1519
1452
  const context = useContentPartContext2(partIndex);
1520
- return /* @__PURE__ */ jsx18(ContentPartContext.Provider, { value: context, children });
1453
+ return /* @__PURE__ */ jsx17(ContentPartContext.Provider, { value: context, children });
1521
1454
  };
1522
1455
 
1523
1456
  // src/primitives/contentPart/ContentPartText.tsx
@@ -1526,7 +1459,7 @@ import {
1526
1459
  } from "react";
1527
1460
 
1528
1461
  // src/utils/smooth/useSmooth.tsx
1529
- import { useEffect as useEffect9, useMemo as useMemo3, useRef as useRef3, useState as useState7 } from "react";
1462
+ import { useEffect as useEffect9, useMemo as useMemo5, useRef as useRef2, useState as useState7 } from "react";
1530
1463
  import { useCallbackRef as useCallbackRef2 } from "@radix-ui/react-use-callback-ref";
1531
1464
 
1532
1465
  // src/utils/smooth/SmoothContext.tsx
@@ -1536,11 +1469,11 @@ import {
1536
1469
  useContext as useContext2,
1537
1470
  useState as useState6
1538
1471
  } from "react";
1539
- import { create as create10 } from "zustand";
1540
- import { jsx as jsx19 } from "react/jsx-runtime";
1472
+ import { create as create8 } from "zustand";
1473
+ import { jsx as jsx18 } from "react/jsx-runtime";
1541
1474
  var SmoothContext = createContext5(null);
1542
1475
  var makeSmoothContext = (initialState) => {
1543
- const useSmoothStatus2 = create10(() => initialState);
1476
+ const useSmoothStatus2 = create8(() => initialState);
1544
1477
  return { useSmoothStatus: useSmoothStatus2 };
1545
1478
  };
1546
1479
  var SmoothContextProvider = ({ children }) => {
@@ -1550,11 +1483,11 @@ var SmoothContextProvider = ({ children }) => {
1550
1483
  () => makeSmoothContext(contentPartStore.getState().status)
1551
1484
  );
1552
1485
  if (outer) return children;
1553
- return /* @__PURE__ */ jsx19(SmoothContext.Provider, { value: context, children });
1486
+ return /* @__PURE__ */ jsx18(SmoothContext.Provider, { value: context, children });
1554
1487
  };
1555
1488
  var withSmoothContextProvider = (Component) => {
1556
1489
  const Wrapped = forwardRef11((props, ref) => {
1557
- return /* @__PURE__ */ jsx19(SmoothContextProvider, { children: /* @__PURE__ */ jsx19(Component, { ...props, ref }) });
1490
+ return /* @__PURE__ */ jsx18(SmoothContextProvider, { children: /* @__PURE__ */ jsx18(Component, { ...props, ref }) });
1558
1491
  });
1559
1492
  Wrapped.displayName = Component.displayName;
1560
1493
  return Wrapped;
@@ -1626,9 +1559,9 @@ var useSmooth = (state, smooth = false) => {
1626
1559
  } = state;
1627
1560
  const id = useMessage({
1628
1561
  optional: true,
1629
- selector: (m) => m.message.id
1562
+ selector: (m) => m.id
1630
1563
  });
1631
- const idRef = useRef3(id);
1564
+ const idRef = useRef2(id);
1632
1565
  const [displayedText, setDisplayedText] = useState7(text);
1633
1566
  const smoothStatusStore = useSmoothStatusStore({ optional: true });
1634
1567
  const setText = useCallbackRef2((text2) => {
@@ -1670,7 +1603,7 @@ var useSmooth = (state, smooth = false) => {
1670
1603
  animatorRef.stop();
1671
1604
  };
1672
1605
  }, [animatorRef]);
1673
- return useMemo3(
1606
+ return useMemo5(
1674
1607
  () => smooth ? {
1675
1608
  part: { type: "text", text: displayedText },
1676
1609
  status: text === displayedText ? state.status : SMOOTH_STATUS
@@ -1680,25 +1613,25 @@ var useSmooth = (state, smooth = false) => {
1680
1613
  };
1681
1614
 
1682
1615
  // src/primitives/contentPart/ContentPartText.tsx
1683
- import { jsx as jsx20 } from "react/jsx-runtime";
1616
+ import { jsx as jsx19 } from "react/jsx-runtime";
1684
1617
  var ContentPartPrimitiveText = forwardRef12(({ smooth = true, component: Component = "span", ...rest }, forwardedRef) => {
1685
1618
  const {
1686
1619
  part: { text },
1687
1620
  status
1688
1621
  } = useSmooth(useContentPartText(), smooth);
1689
- return /* @__PURE__ */ jsx20(Component, { "data-status": status.type, ...rest, ref: forwardedRef, children: text });
1622
+ return /* @__PURE__ */ jsx19(Component, { "data-status": status.type, ...rest, ref: forwardedRef, children: text });
1690
1623
  });
1691
1624
  ContentPartPrimitiveText.displayName = "ContentPartPrimitive.Text";
1692
1625
 
1693
1626
  // src/primitives/contentPart/ContentPartImage.tsx
1694
1627
  import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
1695
1628
  import { forwardRef as forwardRef13 } from "react";
1696
- import { jsx as jsx21 } from "react/jsx-runtime";
1629
+ import { jsx as jsx20 } from "react/jsx-runtime";
1697
1630
  var ContentPartPrimitiveImage = forwardRef13((props, forwardedRef) => {
1698
1631
  const {
1699
1632
  part: { image }
1700
1633
  } = useContentPartImage();
1701
- return /* @__PURE__ */ jsx21(Primitive8.img, { src: image, ...props, ref: forwardedRef });
1634
+ return /* @__PURE__ */ jsx20(Primitive8.img, { src: image, ...props, ref: forwardedRef });
1702
1635
  });
1703
1636
  ContentPartPrimitiveImage.displayName = "ContentPartPrimitive.Image";
1704
1637
 
@@ -1719,22 +1652,22 @@ var ContentPartPrimitiveInProgress = ({ children }) => {
1719
1652
  ContentPartPrimitiveInProgress.displayName = "ContentPartPrimitive.InProgress";
1720
1653
 
1721
1654
  // src/primitives/message/MessageContent.tsx
1722
- import { jsx as jsx22, jsxs as jsxs2 } from "react/jsx-runtime";
1655
+ import { jsx as jsx21, jsxs as jsxs2 } from "react/jsx-runtime";
1723
1656
  var ToolUIDisplay = ({
1724
1657
  UI,
1725
1658
  ...props
1726
1659
  }) => {
1727
1660
  const Render = useToolUIs((s) => s.getToolUI(props.part.toolName)) ?? UI;
1728
1661
  if (!Render) return null;
1729
- return /* @__PURE__ */ jsx22(Render, { ...props });
1662
+ return /* @__PURE__ */ jsx21(Render, { ...props });
1730
1663
  };
1731
1664
  var defaultComponents = {
1732
1665
  Text: () => /* @__PURE__ */ jsxs2("p", { style: { whiteSpace: "pre-line" }, children: [
1733
- /* @__PURE__ */ jsx22(ContentPartPrimitiveText, {}),
1734
- /* @__PURE__ */ jsx22(ContentPartPrimitiveInProgress, { children: /* @__PURE__ */ jsx22("span", { style: { fontFamily: "revert" }, children: " \u25CF" }) })
1666
+ /* @__PURE__ */ jsx21(ContentPartPrimitiveText, {}),
1667
+ /* @__PURE__ */ jsx21(ContentPartPrimitiveInProgress, { children: /* @__PURE__ */ jsx21("span", { style: { fontFamily: "revert" }, children: " \u25CF" }) })
1735
1668
  ] }),
1736
- Image: () => /* @__PURE__ */ jsx22(ContentPartPrimitiveImage, {}),
1737
- UI: () => /* @__PURE__ */ jsx22(ContentPartPrimitiveDisplay, {})
1669
+ Image: () => /* @__PURE__ */ jsx21(ContentPartPrimitiveImage, {}),
1670
+ UI: () => /* @__PURE__ */ jsx21(ContentPartPrimitiveDisplay, {})
1738
1671
  };
1739
1672
  var MessageContentPartComponent = ({
1740
1673
  components: {
@@ -1754,26 +1687,26 @@ var MessageContentPartComponent = ({
1754
1687
  if (status.type === "requires-action")
1755
1688
  throw new Error("Encountered unexpected requires-action status");
1756
1689
  if (part === EMPTY_CONTENT && !!Empty) {
1757
- return /* @__PURE__ */ jsx22(Empty, { status });
1690
+ return /* @__PURE__ */ jsx21(Empty, { status });
1758
1691
  }
1759
- return /* @__PURE__ */ jsx22(Text2, { part, status });
1692
+ return /* @__PURE__ */ jsx21(Text2, { part, status });
1760
1693
  case "image":
1761
1694
  if (status.type === "requires-action")
1762
1695
  throw new Error("Encountered unexpected requires-action status");
1763
- return /* @__PURE__ */ jsx22(Image2, { part, status });
1696
+ return /* @__PURE__ */ jsx21(Image2, { part, status });
1764
1697
  case "ui":
1765
1698
  if (status.type === "requires-action")
1766
1699
  throw new Error("Encountered unexpected requires-action status");
1767
- return /* @__PURE__ */ jsx22(UI, { part, status });
1700
+ return /* @__PURE__ */ jsx21(UI, { part, status });
1768
1701
  case "tool-call": {
1769
1702
  const Tool = by_name[part.toolName] || Fallback2;
1770
1703
  const addResult = (result) => threadRuntime.addToolResult({
1771
- messageId: messageStore.getState().message.id,
1704
+ messageId: messageStore.getState().id,
1772
1705
  toolName: part.toolName,
1773
1706
  toolCallId: part.toolCallId,
1774
1707
  result
1775
1708
  });
1776
- return /* @__PURE__ */ jsx22(
1709
+ return /* @__PURE__ */ jsx21(
1777
1710
  ToolUIDisplay,
1778
1711
  {
1779
1712
  UI: Tool,
@@ -1792,7 +1725,7 @@ var MessageContentPartImpl = ({
1792
1725
  partIndex,
1793
1726
  components
1794
1727
  }) => {
1795
- return /* @__PURE__ */ jsx22(ContentPartProvider, { partIndex, children: /* @__PURE__ */ jsx22(MessageContentPartComponent, { components }) });
1728
+ return /* @__PURE__ */ jsx21(ContentPartProvider, { partIndex, children: /* @__PURE__ */ jsx21(MessageContentPartComponent, { components }) });
1796
1729
  };
1797
1730
  var MessageContentPart = memo2(
1798
1731
  MessageContentPartImpl,
@@ -1801,8 +1734,8 @@ var MessageContentPart = memo2(
1801
1734
  var MessagePrimitiveContent = ({
1802
1735
  components
1803
1736
  }) => {
1804
- const contentLength = useMessage((s) => s.message.content.length) || 1;
1805
- return Array.from({ length: contentLength }, (_, index) => /* @__PURE__ */ jsx22(MessageContentPart, { partIndex: index, components }, index));
1737
+ const contentLength = useMessage((s) => s.content.length) || 1;
1738
+ return Array.from({ length: contentLength }, (_, index) => /* @__PURE__ */ jsx21(MessageContentPart, { partIndex: index, components }, index));
1806
1739
  };
1807
1740
  MessagePrimitiveContent.displayName = "MessagePrimitive.Content";
1808
1741
 
@@ -1861,9 +1794,9 @@ var {
1861
1794
 
1862
1795
  // src/context/providers/MessageAttachmentProvider.tsx
1863
1796
  import { useEffect as useEffect10, useState as useState8 } from "react";
1864
- import { create as create11 } from "zustand";
1865
- import { jsx as jsx23 } from "react/jsx-runtime";
1866
- var getAttachment = ({ message }, useAttachment2, partIndex) => {
1797
+ import { create as create9 } from "zustand";
1798
+ import { jsx as jsx22 } from "react/jsx-runtime";
1799
+ var getAttachment = (message, useAttachment2, partIndex) => {
1867
1800
  if (message.role !== "user") return null;
1868
1801
  const attachments = message.attachments;
1869
1802
  const attachment = attachments[partIndex];
@@ -1876,7 +1809,7 @@ var useMessageAttachmentContext2 = (partIndex) => {
1876
1809
  const messageStore = useMessageStore();
1877
1810
  const [context] = useState8(
1878
1811
  () => {
1879
- const useAttachment2 = create11(
1812
+ const useAttachment2 = create9(
1880
1813
  () => getAttachment(messageStore.getState(), void 0, partIndex)
1881
1814
  );
1882
1815
  return { type: "message", useAttachment: useAttachment2 };
@@ -1902,11 +1835,11 @@ var MessageAttachmentProvider = ({
1902
1835
  children
1903
1836
  }) => {
1904
1837
  const context = useMessageAttachmentContext2(partIndex);
1905
- return /* @__PURE__ */ jsx23(AttachmentContext.Provider, { value: context, children });
1838
+ return /* @__PURE__ */ jsx22(AttachmentContext.Provider, { value: context, children });
1906
1839
  };
1907
1840
 
1908
1841
  // src/primitives/message/MessageAttachments.tsx
1909
- import { jsx as jsx24 } from "react/jsx-runtime";
1842
+ import { jsx as jsx23 } from "react/jsx-runtime";
1910
1843
  var getComponent = (components, attachment) => {
1911
1844
  const type = attachment.type;
1912
1845
  switch (type) {
@@ -1926,10 +1859,10 @@ var AttachmentComponent = ({ components }) => {
1926
1859
  (a) => getComponent(components, a.attachment)
1927
1860
  );
1928
1861
  if (!Component) return null;
1929
- return /* @__PURE__ */ jsx24(Component, {});
1862
+ return /* @__PURE__ */ jsx23(Component, {});
1930
1863
  };
1931
1864
  var MessageAttachmentImpl = ({ components, attachmentIndex }) => {
1932
- return /* @__PURE__ */ jsx24(MessageAttachmentProvider, { attachmentIndex, children: /* @__PURE__ */ jsx24(AttachmentComponent, { components }) });
1865
+ return /* @__PURE__ */ jsx23(MessageAttachmentProvider, { attachmentIndex, children: /* @__PURE__ */ jsx23(AttachmentComponent, { components }) });
1933
1866
  };
1934
1867
  var MessageAttachment = memo3(
1935
1868
  MessageAttachmentImpl,
@@ -1940,7 +1873,7 @@ var MessagePrimitiveAttachments = ({ components }) => {
1940
1873
  if (message.role !== "user") return 0;
1941
1874
  return message.attachments.length;
1942
1875
  });
1943
- return Array.from({ length: attachmentsCount }, (_, index) => /* @__PURE__ */ jsx24(
1876
+ return Array.from({ length: attachmentsCount }, (_, index) => /* @__PURE__ */ jsx23(
1944
1877
  MessageAttachment,
1945
1878
  {
1946
1879
  attachmentIndex: index,
@@ -1952,9 +1885,9 @@ var MessagePrimitiveAttachments = ({ components }) => {
1952
1885
  MessagePrimitiveAttachments.displayName = "MessagePrimitive.Attachments";
1953
1886
 
1954
1887
  // src/primitives/branchPicker/BranchPickerRoot.tsx
1955
- import { jsx as jsx25 } from "react/jsx-runtime";
1888
+ import { jsx as jsx24 } from "react/jsx-runtime";
1956
1889
  var BranchPickerPrimitiveRoot = forwardRef14(({ hideWhenSingleBranch, ...rest }, ref) => {
1957
- return /* @__PURE__ */ jsx25(MessagePrimitiveIf, { hasBranches: hideWhenSingleBranch ? true : void 0, children: /* @__PURE__ */ jsx25(Primitive9.div, { ...rest, ref }) });
1890
+ return /* @__PURE__ */ jsx24(MessagePrimitiveIf, { hasBranches: hideWhenSingleBranch ? true : void 0, children: /* @__PURE__ */ jsx24(Primitive9.div, { ...rest, ref }) });
1958
1891
  });
1959
1892
  BranchPickerPrimitiveRoot.displayName = "BranchPickerPrimitive.Root";
1960
1893
 
@@ -1976,7 +1909,7 @@ import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
1976
1909
  import {
1977
1910
  forwardRef as forwardRef15
1978
1911
  } from "react";
1979
- import { jsx as jsx26 } from "react/jsx-runtime";
1912
+ import { jsx as jsx25 } from "react/jsx-runtime";
1980
1913
  var ComposerPrimitiveRoot = forwardRef15(({ onSubmit, ...rest }, forwardedRef) => {
1981
1914
  const send = useComposerSend();
1982
1915
  const handleSubmit = (e) => {
@@ -1984,7 +1917,7 @@ var ComposerPrimitiveRoot = forwardRef15(({ onSubmit, ...rest }, forwardedRef) =
1984
1917
  if (!send) return;
1985
1918
  send();
1986
1919
  };
1987
- return /* @__PURE__ */ jsx26(
1920
+ return /* @__PURE__ */ jsx25(
1988
1921
  Primitive10.form,
1989
1922
  {
1990
1923
  ...rest,
@@ -2003,11 +1936,11 @@ import {
2003
1936
  forwardRef as forwardRef16,
2004
1937
  useCallback as useCallback19,
2005
1938
  useEffect as useEffect11,
2006
- useRef as useRef4
1939
+ useRef as useRef3
2007
1940
  } from "react";
2008
1941
  import TextareaAutosize from "react-textarea-autosize";
2009
1942
  import { useEscapeKeydown as useEscapeKeydown2 } from "@radix-ui/react-use-escape-keydown";
2010
- import { jsx as jsx27 } from "react/jsx-runtime";
1943
+ import { jsx as jsx26 } from "react/jsx-runtime";
2011
1944
  var ComposerPrimitiveInput = forwardRef16(
2012
1945
  ({
2013
1946
  autoFocus = false,
@@ -2027,7 +1960,7 @@ var ComposerPrimitiveInput = forwardRef16(
2027
1960
  });
2028
1961
  const Component = asChild ? Slot : TextareaAutosize;
2029
1962
  const isDisabled = useThread((t) => t.isDisabled) ?? disabledProp ?? false;
2030
- const textareaRef = useRef4(null);
1963
+ const textareaRef = useRef3(null);
2031
1964
  const ref = useComposedRefs2(forwardedRef, textareaRef);
2032
1965
  useEscapeKeydown2((e) => {
2033
1966
  if (!cancelOnEscape) return;
@@ -2064,7 +1997,7 @@ var ComposerPrimitiveInput = forwardRef16(
2064
1997
  focus();
2065
1998
  }
2066
1999
  });
2067
- return /* @__PURE__ */ jsx27(
2000
+ return /* @__PURE__ */ jsx26(
2068
2001
  Component,
2069
2002
  {
2070
2003
  name: "input",
@@ -2107,8 +2040,8 @@ import { memo as memo4 } from "react";
2107
2040
 
2108
2041
  // src/context/providers/ComposerAttachmentProvider.tsx
2109
2042
  import { useEffect as useEffect12, useState as useState9 } from "react";
2110
- import { create as create12 } from "zustand";
2111
- import { jsx as jsx28 } from "react/jsx-runtime";
2043
+ import { create as create10 } from "zustand";
2044
+ import { jsx as jsx27 } from "react/jsx-runtime";
2112
2045
  var getAttachment2 = ({ attachments }, useAttachment2, partIndex) => {
2113
2046
  const attachment = attachments[partIndex];
2114
2047
  if (!attachment) return null;
@@ -2120,7 +2053,7 @@ var useComposerAttachmentContext2 = (partIndex) => {
2120
2053
  const threadComposerStore = useThreadComposerStore();
2121
2054
  const [context] = useState9(
2122
2055
  () => {
2123
- const useAttachment2 = create12(
2056
+ const useAttachment2 = create10(
2124
2057
  () => getAttachment2(threadComposerStore.getState(), void 0, partIndex)
2125
2058
  );
2126
2059
  return { type: "composer", useAttachment: useAttachment2 };
@@ -2143,11 +2076,11 @@ var useComposerAttachmentContext2 = (partIndex) => {
2143
2076
  };
2144
2077
  var ComposerAttachmentProvider = ({ attachmentIndex: partIndex, children }) => {
2145
2078
  const context = useComposerAttachmentContext2(partIndex);
2146
- return /* @__PURE__ */ jsx28(AttachmentContext.Provider, { value: context, children });
2079
+ return /* @__PURE__ */ jsx27(AttachmentContext.Provider, { value: context, children });
2147
2080
  };
2148
2081
 
2149
2082
  // src/primitives/composer/ComposerAttachments.tsx
2150
- import { jsx as jsx29 } from "react/jsx-runtime";
2083
+ import { jsx as jsx28 } from "react/jsx-runtime";
2151
2084
  var getComponent2 = (components, attachment) => {
2152
2085
  const type = attachment.type;
2153
2086
  switch (type) {
@@ -2167,10 +2100,10 @@ var AttachmentComponent2 = ({ components }) => {
2167
2100
  (a) => getComponent2(components, a.attachment)
2168
2101
  );
2169
2102
  if (!Component) return null;
2170
- return /* @__PURE__ */ jsx29(Component, {});
2103
+ return /* @__PURE__ */ jsx28(Component, {});
2171
2104
  };
2172
2105
  var ComposerAttachmentImpl = ({ components, attachmentIndex }) => {
2173
- return /* @__PURE__ */ jsx29(ComposerAttachmentProvider, { attachmentIndex, children: /* @__PURE__ */ jsx29(AttachmentComponent2, { components }) });
2106
+ return /* @__PURE__ */ jsx28(ComposerAttachmentProvider, { attachmentIndex, children: /* @__PURE__ */ jsx28(AttachmentComponent2, { components }) });
2174
2107
  };
2175
2108
  var ComposerAttachment = memo4(
2176
2109
  ComposerAttachmentImpl,
@@ -2178,7 +2111,7 @@ var ComposerAttachment = memo4(
2178
2111
  );
2179
2112
  var ComposerPrimitiveAttachments = ({ components }) => {
2180
2113
  const attachmentsCount = useThreadComposer((s) => s.attachments.length);
2181
- return Array.from({ length: attachmentsCount }, (_, index) => /* @__PURE__ */ jsx29(
2114
+ return Array.from({ length: attachmentsCount }, (_, index) => /* @__PURE__ */ jsx28(
2182
2115
  ComposerAttachment,
2183
2116
  {
2184
2117
  attachmentIndex: index,
@@ -2223,9 +2156,9 @@ __export(thread_exports, {
2223
2156
  // src/primitives/thread/ThreadRoot.tsx
2224
2157
  import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
2225
2158
  import { forwardRef as forwardRef17 } from "react";
2226
- import { jsx as jsx30 } from "react/jsx-runtime";
2159
+ import { jsx as jsx29 } from "react/jsx-runtime";
2227
2160
  var ThreadPrimitiveRoot = forwardRef17((props, ref) => {
2228
- return /* @__PURE__ */ jsx30(Primitive11.div, { ...props, ref });
2161
+ return /* @__PURE__ */ jsx29(Primitive11.div, { ...props, ref });
2229
2162
  });
2230
2163
  ThreadPrimitiveRoot.displayName = "ThreadPrimitive.Root";
2231
2164
 
@@ -2255,7 +2188,7 @@ import { forwardRef as forwardRef18 } from "react";
2255
2188
 
2256
2189
  // src/primitive-hooks/thread/useThreadViewportAutoScroll.tsx
2257
2190
  import { useComposedRefs as useComposedRefs3 } from "@radix-ui/react-compose-refs";
2258
- import { useRef as useRef5 } from "react";
2191
+ import { useRef as useRef4 } from "react";
2259
2192
 
2260
2193
  // src/utils/hooks/useOnResizeContent.tsx
2261
2194
  import { useCallbackRef as useCallbackRef3 } from "@radix-ui/react-use-callback-ref";
@@ -2314,10 +2247,10 @@ var useOnScrollToBottom = (callback) => {
2314
2247
  var useThreadViewportAutoScroll = ({
2315
2248
  autoScroll = true
2316
2249
  }) => {
2317
- const divRef = useRef5(null);
2250
+ const divRef = useRef4(null);
2318
2251
  const threadViewportStore = useThreadViewportStore();
2319
- const lastScrollTop = useRef5(0);
2320
- const isScrollingToBottomRef = useRef5(false);
2252
+ const lastScrollTop = useRef4(0);
2253
+ const isScrollingToBottomRef = useRef4(false);
2321
2254
  const scrollToBottom = (behavior) => {
2322
2255
  const div = divRef.current;
2323
2256
  if (!div || !autoScroll) return;
@@ -2362,29 +2295,29 @@ var useThreadViewportAutoScroll = ({
2362
2295
  };
2363
2296
 
2364
2297
  // src/primitives/thread/ThreadViewport.tsx
2365
- import { jsx as jsx31 } from "react/jsx-runtime";
2298
+ import { jsx as jsx30 } from "react/jsx-runtime";
2366
2299
  var ThreadPrimitiveViewport = forwardRef18(({ autoScroll, children, ...rest }, forwardedRef) => {
2367
2300
  const autoScrollRef = useThreadViewportAutoScroll({
2368
2301
  autoScroll
2369
2302
  });
2370
2303
  const ref = useComposedRefs4(forwardedRef, autoScrollRef);
2371
- return /* @__PURE__ */ jsx31(Primitive12.div, { ...rest, ref, children });
2304
+ return /* @__PURE__ */ jsx30(Primitive12.div, { ...rest, ref, children });
2372
2305
  });
2373
2306
  ThreadPrimitiveViewport.displayName = "ThreadPrimitive.Viewport";
2374
2307
 
2375
2308
  // src/primitives/thread/ThreadMessages.tsx
2376
- import { memo as memo5 } from "react";
2309
+ import { memo as memo5, useMemo as useMemo6 } from "react";
2377
2310
 
2378
- // src/context/providers/MessageProvider.tsx
2311
+ // src/context/providers/MessageRuntimeProvider.tsx
2379
2312
  import { useEffect as useEffect14, useState as useState10 } from "react";
2380
- import { create as create15 } from "zustand";
2313
+ import { create as create13 } from "zustand";
2381
2314
 
2382
2315
  // src/context/stores/EditComposer.ts
2383
- import { create as create13 } from "zustand";
2316
+ import { create as create11 } from "zustand";
2384
2317
  var makeEditComposerStore = ({
2385
2318
  onEdit,
2386
2319
  onSend
2387
- }) => create13()((set, get) => ({
2320
+ }) => create11()((set, get) => ({
2388
2321
  type: "edit",
2389
2322
  get value() {
2390
2323
  return get().text;
@@ -2419,8 +2352,8 @@ var makeEditComposerStore = ({
2419
2352
  }));
2420
2353
 
2421
2354
  // src/context/stores/MessageUtils.ts
2422
- import { create as create14 } from "zustand";
2423
- var makeMessageUtilsStore = () => create14((set) => {
2355
+ import { create as create12 } from "zustand";
2356
+ var makeMessageUtilsStore = () => create12((set) => {
2424
2357
  let utterance = null;
2425
2358
  return {
2426
2359
  isCopied: false,
@@ -2449,89 +2382,70 @@ var makeMessageUtilsStore = () => create14((set) => {
2449
2382
  };
2450
2383
  });
2451
2384
 
2452
- // src/context/providers/MessageProvider.tsx
2453
- import { jsx as jsx32 } from "react/jsx-runtime";
2454
- var getIsLast = (messages, message) => {
2455
- return messages[messages.length - 1]?.id === message.id;
2456
- };
2457
- var getMessageState = (messages, getBranches, useMessage2, messageIndex) => {
2458
- const parentId = messages[messageIndex - 1]?.id ?? null;
2459
- const message = messages[messageIndex];
2460
- if (!message) return null;
2461
- const isLast = getIsLast(messages, message);
2462
- const branches = getBranches(message.id);
2463
- const currentState = useMessage2?.getState();
2464
- if (currentState && currentState.message === message && currentState.parentId === parentId && currentState.branches === branches && currentState.isLast === isLast)
2465
- return null;
2466
- return Object.freeze({
2467
- message,
2468
- parentId,
2469
- branches,
2470
- isLast
2471
- });
2385
+ // src/context/providers/MessageRuntimeProvider.tsx
2386
+ import { jsx as jsx31 } from "react/jsx-runtime";
2387
+ var useMessageRuntimeStore = (runtime) => {
2388
+ const [store] = useState10(() => create13(() => runtime));
2389
+ useEffect14(() => {
2390
+ writableStore(store).setState(runtime, true);
2391
+ }, [runtime, store]);
2392
+ return store;
2472
2393
  };
2473
- var useMessageContext2 = (messageIndex) => {
2474
- const threadMessagesStore = useThreadMessagesStore();
2475
- const threadRuntime = useThreadRuntime();
2476
- const [context] = useState10(() => {
2477
- const useMessage2 = create15(
2478
- () => getMessageState(
2479
- threadMessagesStore.getState(),
2480
- threadRuntime.getBranches.bind(threadRuntime),
2481
- void 0,
2482
- messageIndex
2483
- )
2484
- );
2485
- const useMessageUtils2 = makeMessageUtilsStore();
2486
- const useEditComposer2 = makeEditComposerStore({
2394
+ var useMessageStore2 = (runtime) => {
2395
+ const [store] = useState10(() => create13(() => runtime.getState()));
2396
+ useEffect14(() => {
2397
+ const updateState = () => writableStore(store).setState(runtime.getState(), true);
2398
+ updateState();
2399
+ return runtime.subscribe(updateState);
2400
+ }, [runtime, store]);
2401
+ return store;
2402
+ };
2403
+ var useMessageUtilsStore2 = () => {
2404
+ const [store] = useState10(() => makeMessageUtilsStore());
2405
+ return store;
2406
+ };
2407
+ var useEditComposerStore2 = (useMessageRuntime2) => {
2408
+ const [store] = useState10(
2409
+ () => makeEditComposerStore({
2487
2410
  onEdit: () => {
2488
- const message = useMessage2.getState().message;
2489
- const text = getThreadMessageText(message);
2411
+ const text = getThreadMessageText(
2412
+ useMessageRuntime2.getState().getState()
2413
+ );
2490
2414
  return text;
2491
2415
  },
2492
2416
  onSend: (text) => {
2493
- const { message, parentId } = useMessage2.getState();
2417
+ const message = useMessageRuntime2.getState().getState();
2494
2418
  const previousText = getThreadMessageText(message);
2495
2419
  if (previousText === text) return;
2496
2420
  const nonTextParts = message.content.filter(
2497
2421
  (part) => part.type !== "text" && part.type !== "ui"
2498
2422
  );
2499
- threadRuntime.append({
2500
- parentId,
2423
+ useMessageRuntime2.getState().edit({
2501
2424
  role: message.role,
2502
2425
  content: [{ type: "text", text }, ...nonTextParts],
2503
- attachments: message.attachments
2426
+ attachments: message.attachments ?? []
2504
2427
  });
2505
2428
  }
2506
- });
2507
- return { useMessage: useMessage2, useMessageUtils: useMessageUtils2, useEditComposer: useEditComposer2 };
2508
- });
2509
- useEffect14(() => {
2510
- const syncMessage = (thread) => {
2511
- const newState = getMessageState(
2512
- thread,
2513
- threadRuntime.getBranches.bind(threadRuntime),
2514
- context.useMessage,
2515
- messageIndex
2516
- );
2517
- if (!newState) return;
2518
- writableStore(context.useMessage).setState(newState, true);
2519
- };
2520
- syncMessage(threadMessagesStore.getState());
2521
- return threadMessagesStore.subscribe(syncMessage);
2522
- }, [threadMessagesStore, threadRuntime, context, messageIndex]);
2523
- return context;
2429
+ })
2430
+ );
2431
+ return store;
2524
2432
  };
2525
- var MessageProvider = ({
2526
- messageIndex,
2433
+ var MessageRuntimeProvider = ({
2434
+ runtime,
2527
2435
  children
2528
2436
  }) => {
2529
- const context = useMessageContext2(messageIndex);
2530
- return /* @__PURE__ */ jsx32(MessageContext.Provider, { value: context, children });
2437
+ const useMessageRuntime2 = useMessageRuntimeStore(runtime);
2438
+ const useMessage2 = useMessageStore2(runtime);
2439
+ const useMessageUtils2 = useMessageUtilsStore2();
2440
+ const useEditComposer2 = useEditComposerStore2(useMessageRuntime2);
2441
+ const [context] = useState10(() => {
2442
+ return { useMessageRuntime: useMessageRuntime2, useMessage: useMessage2, useMessageUtils: useMessageUtils2, useEditComposer: useEditComposer2 };
2443
+ });
2444
+ return /* @__PURE__ */ jsx31(MessageContext.Provider, { value: context, children });
2531
2445
  };
2532
2446
 
2533
2447
  // src/primitives/thread/ThreadMessages.tsx
2534
- import { jsx as jsx33 } from "react/jsx-runtime";
2448
+ import { jsx as jsx32 } from "react/jsx-runtime";
2535
2449
  var isComponentsSame = (prev, next) => {
2536
2450
  return prev.Message === next.Message && prev.EditComposer === next.EditComposer && prev.UserEditComposer === next.UserEditComposer && prev.AssistantEditComposer === next.AssistantEditComposer && prev.SystemEditComposer === next.SystemEditComposer && prev.UserMessage === next.UserMessage && prev.AssistantMessage === next.AssistantMessage && prev.SystemMessage === next.SystemMessage;
2537
2451
  };
@@ -2564,16 +2478,21 @@ var getComponent3 = (components, role, isEditing) => {
2564
2478
  var ThreadMessageComponent = ({
2565
2479
  components
2566
2480
  }) => {
2567
- const role = useMessage((m) => m.message.role);
2481
+ const role = useMessage((m) => m.role);
2568
2482
  const isEditing = useEditComposer((c) => c.isEditing);
2569
2483
  const Component = getComponent3(components, role, isEditing);
2570
- return /* @__PURE__ */ jsx33(Component, {});
2484
+ return /* @__PURE__ */ jsx32(Component, {});
2571
2485
  };
2572
2486
  var ThreadMessageImpl = ({
2573
2487
  messageIndex,
2574
2488
  components
2575
2489
  }) => {
2576
- return /* @__PURE__ */ jsx33(MessageProvider, { messageIndex, children: /* @__PURE__ */ jsx33(ThreadMessageComponent, { components }) });
2490
+ const threadRuntime = useThreadRuntime();
2491
+ const runtime = useMemo6(
2492
+ () => threadRuntime.unstable_getMesssageByIndex(messageIndex),
2493
+ [threadRuntime, messageIndex]
2494
+ );
2495
+ return /* @__PURE__ */ jsx32(MessageRuntimeProvider, { runtime, children: /* @__PURE__ */ jsx32(ThreadMessageComponent, { components }) });
2577
2496
  };
2578
2497
  var ThreadMessage = memo5(
2579
2498
  ThreadMessageImpl,
@@ -2584,7 +2503,7 @@ var ThreadPrimitiveMessagesImpl = ({
2584
2503
  }) => {
2585
2504
  const messagesLength = useThreadMessages((t) => t.length);
2586
2505
  if (messagesLength === 0) return null;
2587
- return Array.from({ length: messagesLength }, (_, index) => /* @__PURE__ */ jsx33(ThreadMessage, { messageIndex: index, components }, index));
2506
+ return Array.from({ length: messagesLength }, (_, index) => /* @__PURE__ */ jsx32(ThreadMessage, { messageIndex: index, components }, index));
2588
2507
  };
2589
2508
  ThreadPrimitiveMessagesImpl.displayName = "ThreadPrimitive.Messages";
2590
2509
  var ThreadPrimitiveMessages = memo5(
@@ -2626,7 +2545,7 @@ var subscribeToMainThread = (runtime, callback) => {
2626
2545
  };
2627
2546
 
2628
2547
  // src/runtimes/local/useLocalRuntime.tsx
2629
- import { useInsertionEffect as useInsertionEffect2, useMemo as useMemo4, useState as useState12 } from "react";
2548
+ import { useInsertionEffect, useMemo as useMemo7, useState as useState12 } from "react";
2630
2549
 
2631
2550
  // src/runtimes/core/BaseAssistantRuntimeCore.tsx
2632
2551
  var BaseAssistantRuntimeCore = class {
@@ -2656,7 +2575,7 @@ var internal_exports = {};
2656
2575
  __export(internal_exports, {
2657
2576
  AssistantRuntime: () => AssistantRuntime,
2658
2577
  BaseAssistantRuntimeCore: () => BaseAssistantRuntimeCore,
2659
- BaseThreadRuntimeComposerCore: () => BaseThreadComposerRuntimeCore,
2578
+ BaseThreadComposerRuntimeCore: () => BaseThreadComposerRuntimeCore,
2660
2579
  MessageRepository: () => MessageRepository,
2661
2580
  ProxyConfigProvider: () => ProxyConfigProvider,
2662
2581
  ThreadRuntime: () => ThreadRuntime,
@@ -2671,12 +2590,25 @@ __export(internal_exports, {
2671
2590
  var BaseThreadComposerRuntimeCore = class {
2672
2591
  constructor(runtime) {
2673
2592
  this.runtime = runtime;
2593
+ this.connect();
2674
2594
  }
2675
2595
  _attachmentAdapter;
2676
2596
  attachmentAccept = "*";
2677
2597
  get isEmpty() {
2678
2598
  return !this.text.trim() && !this.attachments.length;
2679
2599
  }
2600
+ _canCancel = false;
2601
+ get canCancel() {
2602
+ return this._canCancel;
2603
+ }
2604
+ connect() {
2605
+ return this.runtime.subscribe(() => {
2606
+ if (this.canCancel !== this.runtime.capabilities.cancel) {
2607
+ this._canCancel = this.runtime.capabilities.cancel;
2608
+ this.notifySubscribers();
2609
+ }
2610
+ });
2611
+ }
2680
2612
  setAttachmentAdapter(adapter) {
2681
2613
  this._attachmentAdapter = adapter;
2682
2614
  const accept = adapter?.accept ?? "*";
@@ -2734,6 +2666,9 @@ var BaseThreadComposerRuntimeCore = class {
2734
2666
  });
2735
2667
  this.reset();
2736
2668
  }
2669
+ async cancel() {
2670
+ this.runtime.cancelRun();
2671
+ }
2737
2672
  _subscriptions = /* @__PURE__ */ new Set();
2738
2673
  notifySubscribers() {
2739
2674
  for (const callback of this._subscriptions) callback();
@@ -3018,7 +2953,7 @@ import {
3018
2953
  forwardRef as forwardRef19
3019
2954
  } from "react";
3020
2955
  import classNames from "classnames";
3021
- import { jsx as jsx34 } from "react/jsx-runtime";
2956
+ import { jsx as jsx33 } from "react/jsx-runtime";
3022
2957
  var withDefaultProps = ({
3023
2958
  className,
3024
2959
  ...defaultProps
@@ -3034,7 +2969,7 @@ var withDefaults = (Component, defaultProps) => {
3034
2969
  const WithDefaults = forwardRef19(
3035
2970
  (props, ref) => {
3036
2971
  const ComponentAsAny = Component;
3037
- return /* @__PURE__ */ jsx34(ComponentAsAny, { ...getProps(props), ref });
2972
+ return /* @__PURE__ */ jsx33(ComponentAsAny, { ...getProps(props), ref });
3038
2973
  }
3039
2974
  );
3040
2975
  WithDefaults.displayName = "withDefaults(" + (typeof Component === "string" ? Component : Component.displayName) + ")";
@@ -3042,9 +2977,9 @@ var withDefaults = (Component, defaultProps) => {
3042
2977
  };
3043
2978
 
3044
2979
  // src/ui/base/tooltip.tsx
3045
- import { jsx as jsx35 } from "react/jsx-runtime";
2980
+ import { jsx as jsx34 } from "react/jsx-runtime";
3046
2981
  var Tooltip = (props) => {
3047
- return /* @__PURE__ */ jsx35(TooltipPrimitive.Provider, { children: /* @__PURE__ */ jsx35(TooltipPrimitive.Root, { ...props }) });
2982
+ return /* @__PURE__ */ jsx34(TooltipPrimitive.Provider, { children: /* @__PURE__ */ jsx34(TooltipPrimitive.Root, { ...props }) });
3048
2983
  };
3049
2984
  Tooltip.displayName = "Tooltip";
3050
2985
  var TooltipTrigger = TooltipPrimitive.Trigger;
@@ -3058,7 +2993,7 @@ TooltipContent.displayName = "TooltipContent";
3058
2993
  import { cva } from "class-variance-authority";
3059
2994
  import { Primitive as Primitive13 } from "@radix-ui/react-primitive";
3060
2995
  import { forwardRef as forwardRef20 } from "react";
3061
- import { jsx as jsx36 } from "react/jsx-runtime";
2996
+ import { jsx as jsx35 } from "react/jsx-runtime";
3062
2997
  var buttonVariants = cva("aui-button", {
3063
2998
  variants: {
3064
2999
  variant: {
@@ -3078,7 +3013,7 @@ var buttonVariants = cva("aui-button", {
3078
3013
  });
3079
3014
  var Button = forwardRef20(
3080
3015
  ({ className, variant, size, ...props }, ref) => {
3081
- return /* @__PURE__ */ jsx36(
3016
+ return /* @__PURE__ */ jsx35(
3082
3017
  Primitive13.button,
3083
3018
  {
3084
3019
  className: buttonVariants({ variant, size, className }),
@@ -3091,14 +3026,14 @@ var Button = forwardRef20(
3091
3026
  Button.displayName = "Button";
3092
3027
 
3093
3028
  // src/ui/base/tooltip-icon-button.tsx
3094
- import { jsx as jsx37, jsxs as jsxs3 } from "react/jsx-runtime";
3029
+ import { jsx as jsx36, jsxs as jsxs3 } from "react/jsx-runtime";
3095
3030
  var TooltipIconButton = forwardRef21(({ children, tooltip, side = "bottom", ...rest }, ref) => {
3096
3031
  return /* @__PURE__ */ jsxs3(Tooltip, { children: [
3097
- /* @__PURE__ */ jsx37(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs3(Button, { variant: "ghost", size: "icon", ...rest, ref, children: [
3032
+ /* @__PURE__ */ jsx36(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs3(Button, { variant: "ghost", size: "icon", ...rest, ref, children: [
3098
3033
  children,
3099
- /* @__PURE__ */ jsx37("span", { className: "aui-sr-only", children: tooltip })
3034
+ /* @__PURE__ */ jsx36("span", { className: "aui-sr-only", children: tooltip })
3100
3035
  ] }) }),
3101
- /* @__PURE__ */ jsx37(TooltipContent, { side, children: tooltip })
3036
+ /* @__PURE__ */ jsx36(TooltipContent, { side, children: tooltip })
3102
3037
  ] });
3103
3038
  });
3104
3039
  TooltipIconButton.displayName = "TooltipIconButton";
@@ -3213,7 +3148,7 @@ var ContentPartRuntime = class {
3213
3148
  const toolName = state.part.toolName;
3214
3149
  const toolCallId = state.part.toolCallId;
3215
3150
  this.threadApi.getState().addToolResult({
3216
- messageId: message.message.id,
3151
+ messageId: message.id,
3217
3152
  toolName,
3218
3153
  toolCallId,
3219
3154
  result
@@ -3267,60 +3202,13 @@ var ShallowMemoizeSubject = class extends BaseSubject {
3267
3202
  };
3268
3203
 
3269
3204
  // src/api/MessageRuntime.ts
3270
- var MessageState = class {
3271
- constructor(snapshot) {
3272
- this.snapshot = snapshot;
3273
- }
3274
- /**
3275
- * @deprecated Replace `.message.content` with `.content` etc. This will be removed in 0.6.0.
3276
- */
3277
- get message() {
3278
- return this.snapshot.message;
3279
- }
3280
- get id() {
3281
- return this.snapshot.message.id;
3282
- }
3283
- get createdAt() {
3284
- return this.snapshot.message.createdAt;
3285
- }
3286
- get role() {
3287
- return this.snapshot.message.role;
3288
- }
3289
- get content() {
3290
- return this.snapshot.message.content;
3291
- }
3292
- get attachments() {
3293
- return this.snapshot.message.attachments;
3294
- }
3295
- get metadata() {
3296
- return this.snapshot.message.metadata;
3297
- }
3298
- get status() {
3299
- return this.snapshot.message.status;
3300
- }
3301
- get parentId() {
3302
- return this.snapshot.parentId;
3303
- }
3304
- get isLast() {
3305
- return this.snapshot.isLast;
3306
- }
3307
- get branches() {
3308
- return this.snapshot.branches;
3309
- }
3310
- get branchNumber() {
3311
- return this.snapshot.branchNumber;
3312
- }
3313
- get branchCount() {
3314
- return this.snapshot.branchCount;
3315
- }
3316
- };
3317
3205
  var MessageRuntime = class {
3318
3206
  constructor(_core, _threadBinding) {
3319
3207
  this._core = _core;
3320
3208
  this._threadBinding = _threadBinding;
3321
3209
  }
3322
3210
  getState() {
3323
- return new MessageState(this._core.getState());
3211
+ return this._core.getState();
3324
3212
  }
3325
3213
  // TODO improve type
3326
3214
  edit(message) {
@@ -3339,13 +3227,13 @@ var MessageRuntime = class {
3339
3227
  speak() {
3340
3228
  const state = this._core.getState();
3341
3229
  if (!state) throw new Error("Message is not available");
3342
- this._threadBinding.getState().speak(state.message.id);
3230
+ this._threadBinding.getState().speak(state.id);
3343
3231
  }
3344
3232
  submitFeedback({ type }) {
3345
3233
  const state = this._core.getState();
3346
3234
  if (!state) throw new Error("Message is not available");
3347
3235
  this._threadBinding.getState().submitFeedback({
3348
- messageId: state.message.id,
3236
+ messageId: state.id,
3349
3237
  type
3350
3238
  });
3351
3239
  }
@@ -3361,7 +3249,7 @@ var MessageRuntime = class {
3361
3249
  throw new Error("Must specify either branchId or position");
3362
3250
  }
3363
3251
  const thread = this._threadBinding.getState();
3364
- const branches = thread.getBranches(state.message.id);
3252
+ const branches = thread.getBranches(state.id);
3365
3253
  let targetBranch = branchId;
3366
3254
  if (position === "previous") {
3367
3255
  targetBranch = branches[state.branchNumber - 2];
@@ -3398,27 +3286,18 @@ var MessageRuntime = class {
3398
3286
  };
3399
3287
 
3400
3288
  // src/api/ThreadComposerRuntime.ts
3401
- var ComposerState = class {
3402
- constructor(_composerBinding) {
3403
- this._composerBinding = _composerBinding;
3404
- }
3405
- get isEmpty() {
3406
- return this._composerBinding.getState().isEmpty;
3407
- }
3408
- get text() {
3409
- return this._composerBinding.getState().text;
3410
- }
3411
- get attachmentAccept() {
3412
- return this._composerBinding.getState().attachmentAccept;
3413
- }
3414
- get attachments() {
3415
- return this._composerBinding.getState().attachments;
3416
- }
3289
+ var getThreadComposerState = (runtime) => {
3290
+ return Object.freeze({
3291
+ canCancel: runtime.canCancel,
3292
+ isEmpty: runtime.isEmpty,
3293
+ text: runtime.text,
3294
+ attachments: runtime.attachments,
3295
+ attachmentAccept: runtime.attachmentAccept
3296
+ });
3417
3297
  };
3418
3298
  var ThreadComposerRuntime = class {
3419
3299
  constructor(_core) {
3420
3300
  this._core = _core;
3421
- this._state = new ComposerState(_core);
3422
3301
  }
3423
3302
  /**
3424
3303
  * @deprecated Use `getState().isEmpty` instead. This will be removed in 0.6.0.
@@ -3426,6 +3305,12 @@ var ThreadComposerRuntime = class {
3426
3305
  get isEmpty() {
3427
3306
  return this._core.getState().isEmpty;
3428
3307
  }
3308
+ /**
3309
+ * @deprecated Use `getState().canCancel` instead. This will be removed in 0.6.0.
3310
+ */
3311
+ get canCancel() {
3312
+ return this._core.getState().canCancel;
3313
+ }
3429
3314
  /**
3430
3315
  * @deprecated Use `getState().text` instead. This will be removed in 0.6.0.
3431
3316
  */
@@ -3445,9 +3330,8 @@ var ThreadComposerRuntime = class {
3445
3330
  get attachments() {
3446
3331
  return this._core.getState().attachments;
3447
3332
  }
3448
- _state;
3449
3333
  getState() {
3450
- return this._state;
3334
+ return getThreadComposerState(this._core.getState());
3451
3335
  }
3452
3336
  setText(text) {
3453
3337
  this._core.getState().setText(text);
@@ -3470,30 +3354,43 @@ var ThreadComposerRuntime = class {
3470
3354
  send() {
3471
3355
  this._core.getState().send();
3472
3356
  }
3357
+ cancel() {
3358
+ this._core.getState().cancel();
3359
+ }
3473
3360
  subscribe(callback) {
3474
3361
  return this._core.subscribe(callback);
3475
3362
  }
3476
3363
  };
3477
3364
 
3478
3365
  // src/api/ThreadRuntime.ts
3479
- var ThreadState = class {
3480
- constructor(_core) {
3481
- this._core = _core;
3482
- }
3483
- get threadId() {
3484
- return this._core.threadId;
3485
- }
3486
- get isDisabled() {
3487
- return this._core.isDisabled;
3488
- }
3489
- get isRunning() {
3490
- const messages = this._core.messages;
3491
- const lastMessage = messages[messages.length - 1];
3492
- return lastMessage?.role !== "assistant" ? false : lastMessage.status.type === "running";
3366
+ var toAppendMessage = (messages, message) => {
3367
+ if (typeof message === "string") {
3368
+ return {
3369
+ parentId: messages.at(-1)?.id ?? null,
3370
+ role: "user",
3371
+ content: [{ type: "text", text: message }],
3372
+ attachments: []
3373
+ };
3493
3374
  }
3494
- get capabilities() {
3495
- return this._core.capabilities;
3375
+ if (message.role && message.parentId && message.attachments) {
3376
+ return message;
3496
3377
  }
3378
+ return {
3379
+ parentId: message.parentId ?? messages.at(-1)?.id ?? null,
3380
+ role: message.role ?? "user",
3381
+ content: message.content,
3382
+ attachments: message.attachments ?? []
3383
+ };
3384
+ };
3385
+ var getThreadState = (runtime) => {
3386
+ const lastMessage = runtime.messages.at(-1);
3387
+ return Object.freeze({
3388
+ threadId: runtime.threadId,
3389
+ capabilities: runtime.capabilities,
3390
+ isDisabled: runtime.isDisabled,
3391
+ isRunning: lastMessage?.role !== "assistant" ? false : lastMessage.status.type === "running",
3392
+ unstable_synchronizer: runtime.unstable_synchronizer
3393
+ });
3497
3394
  };
3498
3395
  var ThreadRuntime = class {
3499
3396
  constructor(_threadBinding) {
@@ -3538,10 +3435,12 @@ var ThreadRuntime = class {
3538
3435
  })
3539
3436
  );
3540
3437
  getState() {
3541
- return new ThreadState(this._threadBinding.getState());
3438
+ return getThreadState(this._threadBinding.getState());
3542
3439
  }
3543
3440
  append(message) {
3544
- this._threadBinding.getState().append(message);
3441
+ this._threadBinding.getState().append(
3442
+ toAppendMessage(this._threadBinding.getState().messages, message)
3443
+ );
3545
3444
  }
3546
3445
  subscribe(callback) {
3547
3446
  return this._threadBinding.subscribe(callback);
@@ -3601,6 +3500,7 @@ var ThreadRuntime = class {
3601
3500
  if (!message) return void 0;
3602
3501
  const branches = this._threadBinding.getState().getBranches(message.id);
3603
3502
  return {
3503
+ ...message,
3604
3504
  message,
3605
3505
  isLast: idx === messages.length - 1,
3606
3506
  parentId: messages[idx - 1]?.id ?? null,
@@ -4239,15 +4139,15 @@ var LocalRuntime = class extends AssistantRuntime {
4239
4139
  };
4240
4140
  var useLocalRuntime = (adapter, options = {}) => {
4241
4141
  const [runtime] = useState12(() => new LocalRuntimeCore(adapter, options));
4242
- useInsertionEffect2(() => {
4142
+ useInsertionEffect(() => {
4243
4143
  runtime.thread.adapter = adapter;
4244
4144
  runtime.thread.options = options;
4245
4145
  });
4246
- return useMemo4(() => new LocalRuntime(runtime), [runtime]);
4146
+ return useMemo7(() => new LocalRuntime(runtime), [runtime]);
4247
4147
  };
4248
4148
 
4249
4149
  // src/runtimes/external-store/useExternalStoreRuntime.tsx
4250
- import { useEffect as useEffect15, useMemo as useMemo5, useState as useState13 } from "react";
4150
+ import { useEffect as useEffect15, useMemo as useMemo8, useState as useState13 } from "react";
4251
4151
 
4252
4152
  // src/runtimes/external-store/getExternalStoreMessage.tsx
4253
4153
  var symbolInnerMessage = Symbol("innerMessage");
@@ -4587,11 +4487,11 @@ var useExternalStoreRuntime = (store) => {
4587
4487
  useEffect15(() => {
4588
4488
  runtime.thread.store = store;
4589
4489
  });
4590
- return useMemo5(() => new AssistantRuntime(runtime, ThreadRuntime), [runtime]);
4490
+ return useMemo8(() => new AssistantRuntime(runtime, ThreadRuntime), [runtime]);
4591
4491
  };
4592
4492
 
4593
4493
  // src/runtimes/external-store/external-message-converter.tsx
4594
- import { useMemo as useMemo6 } from "react";
4494
+ import { useMemo as useMemo9 } from "react";
4595
4495
  var joinExternalMessages = (messages) => {
4596
4496
  const assistantMessage = {
4597
4497
  role: "assistant",
@@ -4620,19 +4520,18 @@ var joinExternalMessages = (messages) => {
4620
4520
  );
4621
4521
  }
4622
4522
  } else {
4623
- const content = output.content;
4624
4523
  const role = output.role;
4625
4524
  switch (role) {
4626
4525
  case "system":
4627
4526
  case "user":
4628
- return { role, content };
4527
+ return output;
4629
4528
  case "assistant":
4630
4529
  if (assistantMessage.content.length === 0) {
4631
4530
  assistantMessage.id = output.id;
4632
4531
  assistantMessage.createdAt ??= output.createdAt;
4633
4532
  assistantMessage.status ??= output.status;
4634
4533
  }
4635
- assistantMessage.content.push(...content);
4534
+ assistantMessage.content.push(...output.content);
4636
4535
  break;
4637
4536
  default: {
4638
4537
  const unsupportedRole = role;
@@ -4678,7 +4577,7 @@ var useExternalMessageConverter = ({
4678
4577
  messages,
4679
4578
  isRunning
4680
4579
  }) => {
4681
- const state = useMemo6(
4580
+ const state = useMemo9(
4682
4581
  () => ({
4683
4582
  callback,
4684
4583
  callbackCache: /* @__PURE__ */ new WeakMap(),
@@ -4687,7 +4586,7 @@ var useExternalMessageConverter = ({
4687
4586
  }),
4688
4587
  [callback]
4689
4588
  );
4690
- return useMemo6(() => {
4589
+ return useMemo9(() => {
4691
4590
  const callbackResults = [];
4692
4591
  for (const message of messages) {
4693
4592
  let result = state.callbackCache.get(message);
@@ -4955,7 +4854,7 @@ import {
4955
4854
  createContext as createContext7,
4956
4855
  useContext as useContext4
4957
4856
  } from "react";
4958
- import { Fragment as Fragment3, jsx as jsx38 } from "react/jsx-runtime";
4857
+ import { Fragment as Fragment3, jsx as jsx37 } from "react/jsx-runtime";
4959
4858
  var ThreadConfigContext = createContext7({});
4960
4859
  var useThreadConfig = () => {
4961
4860
  return useContext4(ThreadConfigContext);
@@ -4965,14 +4864,14 @@ var ThreadConfigProvider = ({
4965
4864
  config
4966
4865
  }) => {
4967
4866
  const hasAssistant = !!useAssistantRuntime({ optional: true });
4968
- const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */ jsx38(ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ jsx38(Fragment3, { children });
4867
+ const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */ jsx37(ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ jsx37(Fragment3, { children });
4969
4868
  if (!config?.runtime) return configProvider;
4970
4869
  if (hasAssistant) {
4971
4870
  throw new Error(
4972
4871
  "You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
4973
4872
  );
4974
4873
  }
4975
- return /* @__PURE__ */ jsx38(AssistantRuntimeProvider, { runtime: config.runtime, children: configProvider });
4874
+ return /* @__PURE__ */ jsx37(AssistantRuntimeProvider, { runtime: config.runtime, children: configProvider });
4976
4875
  };
4977
4876
  ThreadConfigProvider.displayName = "ThreadConfigProvider";
4978
4877
 
@@ -4987,7 +4886,7 @@ import {
4987
4886
  ThumbsDownIcon,
4988
4887
  ThumbsUpIcon
4989
4888
  } from "lucide-react";
4990
- import { Fragment as Fragment4, jsx as jsx39, jsxs as jsxs4 } from "react/jsx-runtime";
4889
+ import { Fragment as Fragment4, jsx as jsx38, jsxs as jsxs4 } from "react/jsx-runtime";
4991
4890
  var useAllowCopy = (ensureCapability = false) => {
4992
4891
  const { assistantMessage: { allowCopy = true } = {} } = useThreadConfig();
4993
4892
  const copySupported = useThread((t) => t.capabilities.unstable_copy);
@@ -5028,11 +4927,11 @@ var AssistantActionBar = () => {
5028
4927
  autohide: "not-last",
5029
4928
  autohideFloat: "single-branch",
5030
4929
  children: [
5031
- allowSpeak && /* @__PURE__ */ jsx39(AssistantActionBarSpeechControl, {}),
5032
- allowCopy && /* @__PURE__ */ jsx39(AssistantActionBarCopy, {}),
5033
- allowReload && /* @__PURE__ */ jsx39(AssistantActionBarReload, {}),
5034
- allowFeedbackPositive && /* @__PURE__ */ jsx39(AssistantActionBarFeedbackPositive, {}),
5035
- allowFeedbackNegative && /* @__PURE__ */ jsx39(AssistantActionBarFeedbackNegative, {})
4930
+ allowSpeak && /* @__PURE__ */ jsx38(AssistantActionBarSpeechControl, {}),
4931
+ allowCopy && /* @__PURE__ */ jsx38(AssistantActionBarCopy, {}),
4932
+ allowReload && /* @__PURE__ */ jsx38(AssistantActionBarReload, {}),
4933
+ allowFeedbackPositive && /* @__PURE__ */ jsx38(AssistantActionBarFeedbackPositive, {}),
4934
+ allowFeedbackNegative && /* @__PURE__ */ jsx38(AssistantActionBarFeedbackNegative, {})
5036
4935
  ]
5037
4936
  }
5038
4937
  );
@@ -5048,16 +4947,16 @@ var AssistantActionBarCopy = forwardRef22((props, ref) => {
5048
4947
  assistantMessage: { copy: { tooltip = "Copy" } = {} } = {}
5049
4948
  } = {}
5050
4949
  } = useThreadConfig();
5051
- return /* @__PURE__ */ jsx39(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ jsx39(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsxs4(Fragment4, { children: [
5052
- /* @__PURE__ */ jsx39(message_exports.If, { copied: true, children: /* @__PURE__ */ jsx39(CheckIcon, {}) }),
5053
- /* @__PURE__ */ jsx39(message_exports.If, { copied: false, children: /* @__PURE__ */ jsx39(CopyIcon, {}) })
4950
+ return /* @__PURE__ */ jsx38(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsxs4(Fragment4, { children: [
4951
+ /* @__PURE__ */ jsx38(message_exports.If, { copied: true, children: /* @__PURE__ */ jsx38(CheckIcon, {}) }),
4952
+ /* @__PURE__ */ jsx38(message_exports.If, { copied: false, children: /* @__PURE__ */ jsx38(CopyIcon, {}) })
5054
4953
  ] }) }) });
5055
4954
  });
5056
4955
  AssistantActionBarCopy.displayName = "AssistantActionBarCopy";
5057
4956
  var AssistantActionBarSpeechControl = () => {
5058
4957
  return /* @__PURE__ */ jsxs4(Fragment4, { children: [
5059
- /* @__PURE__ */ jsx39(message_exports.If, { speaking: false, children: /* @__PURE__ */ jsx39(AssistantActionBarSpeak, {}) }),
5060
- /* @__PURE__ */ jsx39(message_exports.If, { speaking: true, children: /* @__PURE__ */ jsx39(AssistantActionBarStopSpeaking, {}) })
4958
+ /* @__PURE__ */ jsx38(message_exports.If, { speaking: false, children: /* @__PURE__ */ jsx38(AssistantActionBarSpeak, {}) }),
4959
+ /* @__PURE__ */ jsx38(message_exports.If, { speaking: true, children: /* @__PURE__ */ jsx38(AssistantActionBarStopSpeaking, {}) })
5061
4960
  ] });
5062
4961
  };
5063
4962
  var AssistantActionBarSpeak = forwardRef22((props, ref) => {
@@ -5067,7 +4966,7 @@ var AssistantActionBarSpeak = forwardRef22((props, ref) => {
5067
4966
  } = {}
5068
4967
  } = useThreadConfig();
5069
4968
  const allowSpeak = useAllowSpeak();
5070
- return /* @__PURE__ */ jsx39(actionBar_exports.Speak, { disabled: !allowSpeak, asChild: true, children: /* @__PURE__ */ jsx39(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx39(AudioLinesIcon, {}) }) });
4969
+ return /* @__PURE__ */ jsx38(actionBar_exports.Speak, { disabled: !allowSpeak, asChild: true, children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(AudioLinesIcon, {}) }) });
5071
4970
  });
5072
4971
  AssistantActionBarSpeak.displayName = "AssistantActionBarSpeak";
5073
4972
  var AssistantActionBarStopSpeaking = forwardRef22((props, ref) => {
@@ -5079,7 +4978,7 @@ var AssistantActionBarStopSpeaking = forwardRef22((props, ref) => {
5079
4978
  } = {}
5080
4979
  } = useThreadConfig();
5081
4980
  const allowSpeak = useAllowSpeak();
5082
- return /* @__PURE__ */ jsx39(actionBar_exports.StopSpeaking, { disabled: !allowSpeak, asChild: true, children: /* @__PURE__ */ jsx39(TooltipIconButton, { tooltip: stopTooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx39(StopCircleIcon, {}) }) });
4981
+ return /* @__PURE__ */ jsx38(actionBar_exports.StopSpeaking, { disabled: !allowSpeak, asChild: true, children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip: stopTooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(StopCircleIcon, {}) }) });
5083
4982
  });
5084
4983
  AssistantActionBarStopSpeaking.displayName = "AssistantActionBarStopSpeaking";
5085
4984
  var AssistantActionBarReload = forwardRef22((props, ref) => {
@@ -5089,7 +4988,7 @@ var AssistantActionBarReload = forwardRef22((props, ref) => {
5089
4988
  } = {}
5090
4989
  } = useThreadConfig();
5091
4990
  const allowReload = useAllowReload();
5092
- return /* @__PURE__ */ jsx39(actionBar_exports.Reload, { disabled: !allowReload, asChild: true, children: /* @__PURE__ */ jsx39(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx39(RefreshCwIcon, {}) }) });
4991
+ return /* @__PURE__ */ jsx38(actionBar_exports.Reload, { disabled: !allowReload, asChild: true, children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(RefreshCwIcon, {}) }) });
5093
4992
  });
5094
4993
  AssistantActionBarReload.displayName = "AssistantActionBarReload";
5095
4994
  var AssistantActionBarFeedbackPositive = forwardRef22((props, ref) => {
@@ -5101,13 +5000,13 @@ var AssistantActionBarFeedbackPositive = forwardRef22((props, ref) => {
5101
5000
  } = {}
5102
5001
  } = useThreadConfig();
5103
5002
  const allowFeedbackPositive = useAllowFeedbackPositive();
5104
- return /* @__PURE__ */ jsx39(
5003
+ return /* @__PURE__ */ jsx38(
5105
5004
  actionBar_exports.FeedbackPositive,
5106
5005
  {
5107
5006
  disabled: !allowFeedbackPositive,
5108
5007
  className: "aui-assistant-action-bar-feedback-positive",
5109
5008
  asChild: true,
5110
- children: /* @__PURE__ */ jsx39(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx39(ThumbsUpIcon, {}) })
5009
+ children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(ThumbsUpIcon, {}) })
5111
5010
  }
5112
5011
  );
5113
5012
  });
@@ -5121,13 +5020,13 @@ var AssistantActionBarFeedbackNegative = forwardRef22((props, ref) => {
5121
5020
  } = {}
5122
5021
  } = useThreadConfig();
5123
5022
  const allowFeedbackNegative = useAllowFeedbackNegative();
5124
- return /* @__PURE__ */ jsx39(
5023
+ return /* @__PURE__ */ jsx38(
5125
5024
  actionBar_exports.FeedbackNegative,
5126
5025
  {
5127
5026
  disabled: !allowFeedbackNegative,
5128
5027
  className: "aui-assistant-action-bar-feedback-negative",
5129
5028
  asChild: true,
5130
- children: /* @__PURE__ */ jsx39(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx39(ThumbsDownIcon, {}) })
5029
+ children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(ThumbsDownIcon, {}) })
5131
5030
  }
5132
5031
  );
5133
5032
  });
@@ -5148,12 +5047,12 @@ var assistant_action_bar_default = Object.assign(
5148
5047
  );
5149
5048
 
5150
5049
  // src/ui/assistant-message.tsx
5151
- import { forwardRef as forwardRef24, useMemo as useMemo7 } from "react";
5050
+ import { forwardRef as forwardRef24, useMemo as useMemo10 } from "react";
5152
5051
 
5153
5052
  // src/ui/branch-picker.tsx
5154
5053
  import { forwardRef as forwardRef23 } from "react";
5155
5054
  import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
5156
- import { jsx as jsx40, jsxs as jsxs5 } from "react/jsx-runtime";
5055
+ import { jsx as jsx39, jsxs as jsxs5 } from "react/jsx-runtime";
5157
5056
  var useAllowBranchPicker = (ensureCapability = false) => {
5158
5057
  const { branchPicker: { allowBranchPicker = true } = {} } = useThreadConfig();
5159
5058
  const branchPickerSupported = useThread((t) => t.capabilities.edit);
@@ -5163,9 +5062,9 @@ var BranchPicker = () => {
5163
5062
  const allowBranchPicker = useAllowBranchPicker();
5164
5063
  if (!allowBranchPicker) return null;
5165
5064
  return /* @__PURE__ */ jsxs5(BranchPickerRoot, { hideWhenSingleBranch: true, children: [
5166
- /* @__PURE__ */ jsx40(BranchPickerPrevious2, {}),
5167
- /* @__PURE__ */ jsx40(BranchPickerState, {}),
5168
- /* @__PURE__ */ jsx40(BranchPickerNext, {})
5065
+ /* @__PURE__ */ jsx39(BranchPickerPrevious2, {}),
5066
+ /* @__PURE__ */ jsx39(BranchPickerState, {}),
5067
+ /* @__PURE__ */ jsx39(BranchPickerNext, {})
5169
5068
  ] });
5170
5069
  };
5171
5070
  BranchPicker.displayName = "BranchPicker";
@@ -5180,7 +5079,7 @@ var BranchPickerPrevious2 = forwardRef23((props, ref) => {
5180
5079
  } = {}
5181
5080
  } = useThreadConfig();
5182
5081
  const allowBranchPicker = useAllowBranchPicker();
5183
- return /* @__PURE__ */ jsx40(branchPicker_exports.Previous, { disabled: !allowBranchPicker, asChild: true, children: /* @__PURE__ */ jsx40(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx40(ChevronLeftIcon, {}) }) });
5082
+ return /* @__PURE__ */ jsx39(branchPicker_exports.Previous, { disabled: !allowBranchPicker, asChild: true, children: /* @__PURE__ */ jsx39(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx39(ChevronLeftIcon, {}) }) });
5184
5083
  });
5185
5084
  BranchPickerPrevious2.displayName = "BranchPickerPrevious";
5186
5085
  var BranchPickerStateWrapper = withDefaults("span", {
@@ -5188,9 +5087,9 @@ var BranchPickerStateWrapper = withDefaults("span", {
5188
5087
  });
5189
5088
  var BranchPickerState = forwardRef23((props, ref) => {
5190
5089
  return /* @__PURE__ */ jsxs5(BranchPickerStateWrapper, { ...props, ref, children: [
5191
- /* @__PURE__ */ jsx40(branchPicker_exports.Number, {}),
5090
+ /* @__PURE__ */ jsx39(branchPicker_exports.Number, {}),
5192
5091
  " / ",
5193
- /* @__PURE__ */ jsx40(branchPicker_exports.Count, {})
5092
+ /* @__PURE__ */ jsx39(branchPicker_exports.Count, {})
5194
5093
  ] });
5195
5094
  });
5196
5095
  BranchPickerState.displayName = "BranchPickerState";
@@ -5199,7 +5098,7 @@ var BranchPickerNext = forwardRef23((props, ref) => {
5199
5098
  strings: { branchPicker: { next: { tooltip = "Next" } = {} } = {} } = {}
5200
5099
  } = useThreadConfig();
5201
5100
  const allowBranchPicker = useAllowBranchPicker();
5202
- return /* @__PURE__ */ jsx40(branchPicker_exports.Next, { disabled: !allowBranchPicker, asChild: true, children: /* @__PURE__ */ jsx40(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx40(ChevronRightIcon, {}) }) });
5101
+ return /* @__PURE__ */ jsx39(branchPicker_exports.Next, { disabled: !allowBranchPicker, asChild: true, children: /* @__PURE__ */ jsx39(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx39(ChevronRightIcon, {}) }) });
5203
5102
  });
5204
5103
  BranchPickerNext.displayName = "BranchPickerNext";
5205
5104
  var exports2 = {
@@ -5211,12 +5110,12 @@ var branch_picker_default = Object.assign(BranchPicker, exports2);
5211
5110
 
5212
5111
  // src/ui/base/avatar.tsx
5213
5112
  import * as AvatarPrimitive from "@radix-ui/react-avatar";
5214
- import { jsx as jsx41, jsxs as jsxs6 } from "react/jsx-runtime";
5113
+ import { jsx as jsx40, jsxs as jsxs6 } from "react/jsx-runtime";
5215
5114
  var Avatar = ({ src, alt, fallback }) => {
5216
5115
  if (src == null && fallback == null) return null;
5217
5116
  return /* @__PURE__ */ jsxs6(AvatarRoot, { children: [
5218
- src != null && /* @__PURE__ */ jsx41(AvatarImage, { src, alt }),
5219
- fallback != null && /* @__PURE__ */ jsx41(AvatarFallback, { children: fallback })
5117
+ src != null && /* @__PURE__ */ jsx40(AvatarImage, { src, alt }),
5118
+ fallback != null && /* @__PURE__ */ jsx40(AvatarFallback, { children: fallback })
5220
5119
  ] });
5221
5120
  };
5222
5121
  Avatar.displayName = "Avatar";
@@ -5235,10 +5134,10 @@ AvatarFallback.displayName = "AvatarFallback";
5235
5134
 
5236
5135
  // src/ui/content-part.tsx
5237
5136
  import classNames2 from "classnames";
5238
- import { jsx as jsx42 } from "react/jsx-runtime";
5137
+ import { jsx as jsx41 } from "react/jsx-runtime";
5239
5138
  var Text = () => {
5240
5139
  const status = useSmoothStatus();
5241
- return /* @__PURE__ */ jsx42(
5140
+ return /* @__PURE__ */ jsx41(
5242
5141
  contentPart_exports.Text,
5243
5142
  {
5244
5143
  className: classNames2(
@@ -5253,19 +5152,19 @@ var exports3 = { Text: withSmoothContextProvider(Text) };
5253
5152
  var content_part_default = exports3;
5254
5153
 
5255
5154
  // src/ui/assistant-message.tsx
5256
- import { jsx as jsx43, jsxs as jsxs7 } from "react/jsx-runtime";
5155
+ import { jsx as jsx42, jsxs as jsxs7 } from "react/jsx-runtime";
5257
5156
  var AssistantMessage = () => {
5258
5157
  return /* @__PURE__ */ jsxs7(AssistantMessageRoot, { children: [
5259
- /* @__PURE__ */ jsx43(AssistantMessageAvatar, {}),
5260
- /* @__PURE__ */ jsx43(AssistantMessageContent, {}),
5261
- /* @__PURE__ */ jsx43(branch_picker_default, {}),
5262
- /* @__PURE__ */ jsx43(assistant_action_bar_default, {})
5158
+ /* @__PURE__ */ jsx42(AssistantMessageAvatar, {}),
5159
+ /* @__PURE__ */ jsx42(AssistantMessageContent, {}),
5160
+ /* @__PURE__ */ jsx42(branch_picker_default, {}),
5161
+ /* @__PURE__ */ jsx42(assistant_action_bar_default, {})
5263
5162
  ] });
5264
5163
  };
5265
5164
  AssistantMessage.displayName = "AssistantMessage";
5266
5165
  var AssistantMessageAvatar = () => {
5267
5166
  const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
5268
- return /* @__PURE__ */ jsx43(Avatar, { ...avatar });
5167
+ return /* @__PURE__ */ jsx42(Avatar, { ...avatar });
5269
5168
  };
5270
5169
  var AssistantMessageRoot = withDefaults(message_exports.Root, {
5271
5170
  className: "aui-assistant-message-root"
@@ -5276,7 +5175,7 @@ var AssistantMessageContentWrapper = withDefaults("div", {
5276
5175
  });
5277
5176
  var AssistantMessageContent = forwardRef24(({ components: componentsProp, ...rest }, ref) => {
5278
5177
  const { tools, assistantMessage: { components = {} } = {} } = useThreadConfig();
5279
- const toolsComponents = useMemo7(
5178
+ const toolsComponents = useMemo10(
5280
5179
  () => ({
5281
5180
  by_name: !tools ? void 0 : Object.fromEntries(
5282
5181
  tools.map((t) => [
@@ -5289,7 +5188,7 @@ var AssistantMessageContent = forwardRef24(({ components: componentsProp, ...res
5289
5188
  // eslint-disable-next-line react-hooks/exhaustive-deps
5290
5189
  [...tools ?? [], components.ToolFallback]
5291
5190
  );
5292
- return /* @__PURE__ */ jsx43(AssistantMessageContentWrapper, { ...rest, ref, children: /* @__PURE__ */ jsx43(
5191
+ return /* @__PURE__ */ jsx42(AssistantMessageContentWrapper, { ...rest, ref, children: /* @__PURE__ */ jsx42(
5293
5192
  message_exports.Content,
5294
5193
  {
5295
5194
  components: {
@@ -5324,9 +5223,9 @@ import { forwardRef as forwardRef26 } from "react";
5324
5223
  import { PaperclipIcon, SendHorizontalIcon } from "lucide-react";
5325
5224
 
5326
5225
  // src/ui/base/CircleStopIcon.tsx
5327
- import { jsx as jsx44 } from "react/jsx-runtime";
5226
+ import { jsx as jsx43 } from "react/jsx-runtime";
5328
5227
  var CircleStopIcon = () => {
5329
- return /* @__PURE__ */ jsx44(
5228
+ return /* @__PURE__ */ jsx43(
5330
5229
  "svg",
5331
5230
  {
5332
5231
  xmlns: "http://www.w3.org/2000/svg",
@@ -5334,7 +5233,7 @@ var CircleStopIcon = () => {
5334
5233
  fill: "currentColor",
5335
5234
  width: "16",
5336
5235
  height: "16",
5337
- children: /* @__PURE__ */ jsx44("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" })
5236
+ children: /* @__PURE__ */ jsx43("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" })
5338
5237
  }
5339
5238
  );
5340
5239
  };
@@ -5343,7 +5242,7 @@ CircleStopIcon.displayName = "CircleStopIcon";
5343
5242
  // src/ui/composer-attachment.tsx
5344
5243
  import { forwardRef as forwardRef25 } from "react";
5345
5244
  import { CircleXIcon } from "lucide-react";
5346
- import { jsx as jsx45, jsxs as jsxs8 } from "react/jsx-runtime";
5245
+ import { jsx as jsx44, jsxs as jsxs8 } from "react/jsx-runtime";
5347
5246
  var ComposerAttachmentRoot = withDefaults("div", {
5348
5247
  className: "aui-composer-attachment-root"
5349
5248
  });
@@ -5353,7 +5252,7 @@ var ComposerAttachment2 = () => {
5353
5252
  return /* @__PURE__ */ jsxs8(ComposerAttachmentRoot, { children: [
5354
5253
  ".",
5355
5254
  attachment.name.split(".").pop(),
5356
- /* @__PURE__ */ jsx45(ComposerAttachmentRemove, {})
5255
+ /* @__PURE__ */ jsx44(ComposerAttachmentRemove, {})
5357
5256
  ] });
5358
5257
  };
5359
5258
  ComposerAttachment2.displayName = "ComposerAttachment";
@@ -5368,7 +5267,7 @@ var ComposerAttachmentRemove = forwardRef25((props, ref) => {
5368
5267
  const handleRemoveAttachment = () => {
5369
5268
  composerStore.getState().removeAttachment(attachmentStore.getState().attachment.id);
5370
5269
  };
5371
- return /* @__PURE__ */ jsx45(
5270
+ return /* @__PURE__ */ jsx44(
5372
5271
  TooltipIconButton,
5373
5272
  {
5374
5273
  tooltip,
@@ -5377,7 +5276,7 @@ var ComposerAttachmentRemove = forwardRef25((props, ref) => {
5377
5276
  ...props,
5378
5277
  onClick: handleRemoveAttachment,
5379
5278
  ref,
5380
- children: props.children ?? /* @__PURE__ */ jsx45(CircleXIcon, {})
5279
+ children: props.children ?? /* @__PURE__ */ jsx44(CircleXIcon, {})
5381
5280
  }
5382
5281
  );
5383
5282
  });
@@ -5392,7 +5291,7 @@ var composer_attachment_default = Object.assign(
5392
5291
  );
5393
5292
 
5394
5293
  // src/ui/composer.tsx
5395
- import { Fragment as Fragment5, jsx as jsx46, jsxs as jsxs9 } from "react/jsx-runtime";
5294
+ import { Fragment as Fragment5, jsx as jsx45, jsxs as jsxs9 } from "react/jsx-runtime";
5396
5295
  var useAllowAttachments = (ensureCapability = false) => {
5397
5296
  const { composer: { allowAttachments = true } = {} } = useThreadConfig();
5398
5297
  const attachmentsSupported = useThread((t) => t.capabilities.attachments);
@@ -5401,10 +5300,10 @@ var useAllowAttachments = (ensureCapability = false) => {
5401
5300
  var Composer = () => {
5402
5301
  const allowAttachments = useAllowAttachments(true);
5403
5302
  return /* @__PURE__ */ jsxs9(ComposerRoot, { children: [
5404
- allowAttachments && /* @__PURE__ */ jsx46(ComposerAttachments, {}),
5405
- allowAttachments && /* @__PURE__ */ jsx46(ComposerAddAttachment, {}),
5406
- /* @__PURE__ */ jsx46(ComposerInput, { autoFocus: true }),
5407
- /* @__PURE__ */ jsx46(ComposerAction, {})
5303
+ allowAttachments && /* @__PURE__ */ jsx45(ComposerAttachments, {}),
5304
+ allowAttachments && /* @__PURE__ */ jsx45(ComposerAddAttachment, {}),
5305
+ /* @__PURE__ */ jsx45(ComposerInput, { autoFocus: true }),
5306
+ /* @__PURE__ */ jsx45(ComposerAction, {})
5408
5307
  ] });
5409
5308
  };
5410
5309
  Composer.displayName = "Composer";
@@ -5424,7 +5323,7 @@ var ComposerInput = forwardRef26(
5424
5323
  composer: { input: { placeholder = "Write a message..." } = {} } = {}
5425
5324
  } = {}
5426
5325
  } = useThreadConfig();
5427
- return /* @__PURE__ */ jsx46(ComposerInputStyled, { placeholder, ...props, ref });
5326
+ return /* @__PURE__ */ jsx45(ComposerInputStyled, { placeholder, ...props, ref });
5428
5327
  }
5429
5328
  );
5430
5329
  ComposerInput.displayName = "ComposerInput";
@@ -5432,7 +5331,7 @@ var ComposerAttachmentsContainer = withDefaults("div", {
5432
5331
  className: "aui-composer-attachments"
5433
5332
  });
5434
5333
  var ComposerAttachments = ({ components }) => {
5435
- return /* @__PURE__ */ jsx46(ComposerAttachmentsContainer, { children: /* @__PURE__ */ jsx46(
5334
+ return /* @__PURE__ */ jsx45(ComposerAttachmentsContainer, { children: /* @__PURE__ */ jsx45(
5436
5335
  composer_exports.Attachments,
5437
5336
  {
5438
5337
  components: {
@@ -5453,14 +5352,14 @@ var ComposerAddAttachment = forwardRef26((props, ref) => {
5453
5352
  } = {}
5454
5353
  } = useThreadConfig();
5455
5354
  const allowAttachments = useAllowAttachments();
5456
- return /* @__PURE__ */ jsx46(composer_exports.AddAttachment, { disabled: !allowAttachments, asChild: true, children: /* @__PURE__ */ jsx46(
5355
+ return /* @__PURE__ */ jsx45(composer_exports.AddAttachment, { disabled: !allowAttachments, asChild: true, children: /* @__PURE__ */ jsx45(
5457
5356
  ComposerAttachButton,
5458
5357
  {
5459
5358
  tooltip,
5460
5359
  variant: "ghost",
5461
5360
  ...props,
5462
5361
  ref,
5463
- children: props.children ?? /* @__PURE__ */ jsx46(PaperclipIcon, {})
5362
+ children: props.children ?? /* @__PURE__ */ jsx45(PaperclipIcon, {})
5464
5363
  }
5465
5364
  ) });
5466
5365
  });
@@ -5471,10 +5370,10 @@ var useAllowCancel = () => {
5471
5370
  };
5472
5371
  var ComposerAction = () => {
5473
5372
  const allowCancel = useAllowCancel();
5474
- if (!allowCancel) return /* @__PURE__ */ jsx46(ComposerSend, {});
5373
+ if (!allowCancel) return /* @__PURE__ */ jsx45(ComposerSend, {});
5475
5374
  return /* @__PURE__ */ jsxs9(Fragment5, { children: [
5476
- /* @__PURE__ */ jsx46(thread_exports.If, { running: false, children: /* @__PURE__ */ jsx46(ComposerSend, {}) }),
5477
- /* @__PURE__ */ jsx46(thread_exports.If, { running: true, children: /* @__PURE__ */ jsx46(ComposerCancel, {}) })
5375
+ /* @__PURE__ */ jsx45(thread_exports.If, { running: false, children: /* @__PURE__ */ jsx45(ComposerSend, {}) }),
5376
+ /* @__PURE__ */ jsx45(thread_exports.If, { running: true, children: /* @__PURE__ */ jsx45(ComposerCancel, {}) })
5478
5377
  ] });
5479
5378
  };
5480
5379
  ComposerAction.displayName = "ComposerAction";
@@ -5486,7 +5385,7 @@ var ComposerSend = forwardRef26((props, ref) => {
5486
5385
  const {
5487
5386
  strings: { composer: { send: { tooltip = "Send" } = {} } = {} } = {}
5488
5387
  } = useThreadConfig();
5489
- return /* @__PURE__ */ jsx46(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx46(ComposerSendButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx46(SendHorizontalIcon, {}) }) });
5388
+ return /* @__PURE__ */ jsx45(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx45(ComposerSendButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx45(SendHorizontalIcon, {}) }) });
5490
5389
  });
5491
5390
  ComposerSend.displayName = "ComposerSend";
5492
5391
  var ComposerCancelButton = withDefaults(TooltipIconButton, {
@@ -5497,7 +5396,7 @@ var ComposerCancel = forwardRef26((props, ref) => {
5497
5396
  const {
5498
5397
  strings: { composer: { cancel: { tooltip = "Cancel" } = {} } = {} } = {}
5499
5398
  } = useThreadConfig();
5500
- return /* @__PURE__ */ jsx46(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx46(ComposerCancelButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx46(CircleStopIcon, {}) }) });
5399
+ return /* @__PURE__ */ jsx45(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx45(ComposerCancelButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx45(CircleStopIcon, {}) }) });
5501
5400
  });
5502
5401
  ComposerCancel.displayName = "ComposerCancel";
5503
5402
  var exports6 = {
@@ -5513,14 +5412,14 @@ var composer_default = Object.assign(Composer, exports6);
5513
5412
 
5514
5413
  // src/ui/thread-welcome.tsx
5515
5414
  import { forwardRef as forwardRef27 } from "react";
5516
- import { jsx as jsx47, jsxs as jsxs10 } from "react/jsx-runtime";
5415
+ import { jsx as jsx46, jsxs as jsxs10 } from "react/jsx-runtime";
5517
5416
  var ThreadWelcome = () => {
5518
5417
  return /* @__PURE__ */ jsxs10(ThreadWelcomeRoot, { children: [
5519
5418
  /* @__PURE__ */ jsxs10(ThreadWelcomeCenter, { children: [
5520
- /* @__PURE__ */ jsx47(ThreadWelcomeAvatar, {}),
5521
- /* @__PURE__ */ jsx47(ThreadWelcomeMessage, {})
5419
+ /* @__PURE__ */ jsx46(ThreadWelcomeAvatar, {}),
5420
+ /* @__PURE__ */ jsx46(ThreadWelcomeMessage, {})
5522
5421
  ] }),
5523
- /* @__PURE__ */ jsx47(ThreadWelcomeSuggestions, {})
5422
+ /* @__PURE__ */ jsx46(ThreadWelcomeSuggestions, {})
5524
5423
  ] });
5525
5424
  };
5526
5425
  ThreadWelcome.displayName = "ThreadWelcome";
@@ -5532,20 +5431,20 @@ var ThreadWelcomeCenter = withDefaults("div", {
5532
5431
  });
5533
5432
  var ThreadWelcomeRoot = forwardRef27(
5534
5433
  (props, ref) => {
5535
- return /* @__PURE__ */ jsx47(thread_exports.Empty, { children: /* @__PURE__ */ jsx47(ThreadWelcomeRootStyled, { ...props, ref }) });
5434
+ return /* @__PURE__ */ jsx46(thread_exports.Empty, { children: /* @__PURE__ */ jsx46(ThreadWelcomeRootStyled, { ...props, ref }) });
5536
5435
  }
5537
5436
  );
5538
5437
  ThreadWelcomeRoot.displayName = "ThreadWelcomeRoot";
5539
5438
  var ThreadWelcomeAvatar = () => {
5540
5439
  const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
5541
- return /* @__PURE__ */ jsx47(Avatar, { ...avatar });
5440
+ return /* @__PURE__ */ jsx46(Avatar, { ...avatar });
5542
5441
  };
5543
5442
  var ThreadWelcomeMessageStyled = withDefaults("p", {
5544
5443
  className: "aui-thread-welcome-message"
5545
5444
  });
5546
5445
  var ThreadWelcomeMessage = forwardRef27(({ message: messageProp, ...rest }, ref) => {
5547
5446
  const { welcome: { message = "How can I help you today?" } = {} } = useThreadConfig();
5548
- return /* @__PURE__ */ jsx47(ThreadWelcomeMessageStyled, { ...rest, ref, children: messageProp ?? message });
5447
+ return /* @__PURE__ */ jsx46(ThreadWelcomeMessageStyled, { ...rest, ref, children: messageProp ?? message });
5549
5448
  });
5550
5449
  ThreadWelcomeMessage.displayName = "ThreadWelcomeMessage";
5551
5450
  var ThreadWelcomeSuggestionContainer = withDefaults("div", {
@@ -5557,21 +5456,21 @@ var ThreadWelcomeSuggestionStyled = withDefaults(thread_exports.Suggestion, {
5557
5456
  var ThreadWelcomeSuggestion = ({
5558
5457
  suggestion: { text, prompt }
5559
5458
  }) => {
5560
- return /* @__PURE__ */ jsx47(
5459
+ return /* @__PURE__ */ jsx46(
5561
5460
  ThreadWelcomeSuggestionStyled,
5562
5461
  {
5563
5462
  prompt,
5564
5463
  method: "replace",
5565
5464
  autoSend: true,
5566
- children: /* @__PURE__ */ jsx47("span", { className: "aui-thread-welcome-suggestion-text", children: text ?? prompt })
5465
+ children: /* @__PURE__ */ jsx46("span", { className: "aui-thread-welcome-suggestion-text", children: text ?? prompt })
5567
5466
  }
5568
5467
  );
5569
5468
  };
5570
5469
  var ThreadWelcomeSuggestions = () => {
5571
5470
  const { welcome: { suggestions } = {} } = useThreadConfig();
5572
- return /* @__PURE__ */ jsx47(ThreadWelcomeSuggestionContainer, { children: suggestions?.map((suggestion, idx) => {
5471
+ return /* @__PURE__ */ jsx46(ThreadWelcomeSuggestionContainer, { children: suggestions?.map((suggestion, idx) => {
5573
5472
  const key = `${suggestion.prompt}-${idx}`;
5574
- return /* @__PURE__ */ jsx47(ThreadWelcomeSuggestion, { suggestion }, key);
5473
+ return /* @__PURE__ */ jsx46(ThreadWelcomeSuggestion, { suggestion }, key);
5575
5474
  }) });
5576
5475
  };
5577
5476
  ThreadWelcomeSuggestions.displayName = "ThreadWelcomeSuggestions";
@@ -5591,7 +5490,7 @@ import { forwardRef as forwardRef29 } from "react";
5591
5490
  // src/ui/user-action-bar.tsx
5592
5491
  import { forwardRef as forwardRef28 } from "react";
5593
5492
  import { PencilIcon } from "lucide-react";
5594
- import { jsx as jsx48 } from "react/jsx-runtime";
5493
+ import { jsx as jsx47 } from "react/jsx-runtime";
5595
5494
  var useAllowEdit = (ensureCapability = false) => {
5596
5495
  const { userMessage: { allowEdit = true } = {} } = useThreadConfig();
5597
5496
  const editSupported = useThread((t) => t.capabilities.edit);
@@ -5600,7 +5499,7 @@ var useAllowEdit = (ensureCapability = false) => {
5600
5499
  var UserActionBar = () => {
5601
5500
  const allowEdit = useAllowEdit(true);
5602
5501
  if (!allowEdit) return null;
5603
- return /* @__PURE__ */ jsx48(UserActionBarRoot, { hideWhenRunning: true, autohide: "not-last", children: /* @__PURE__ */ jsx48(UserActionBarEdit, {}) });
5502
+ return /* @__PURE__ */ jsx47(UserActionBarRoot, { hideWhenRunning: true, autohide: "not-last", children: /* @__PURE__ */ jsx47(UserActionBarEdit, {}) });
5604
5503
  };
5605
5504
  UserActionBar.displayName = "UserActionBar";
5606
5505
  var UserActionBarRoot = withDefaults(actionBar_exports.Root, {
@@ -5612,7 +5511,7 @@ var UserActionBarEdit = forwardRef28((props, ref) => {
5612
5511
  strings: { userMessage: { edit: { tooltip = "Edit" } = {} } = {} } = {}
5613
5512
  } = useThreadConfig();
5614
5513
  const allowEdit = useAllowEdit();
5615
- return /* @__PURE__ */ jsx48(actionBar_exports.Edit, { disabled: !allowEdit, asChild: true, children: /* @__PURE__ */ jsx48(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx48(PencilIcon, {}) }) });
5514
+ return /* @__PURE__ */ jsx47(actionBar_exports.Edit, { disabled: !allowEdit, asChild: true, children: /* @__PURE__ */ jsx47(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx47(PencilIcon, {}) }) });
5616
5515
  });
5617
5516
  UserActionBarEdit.displayName = "UserActionBarEdit";
5618
5517
  var exports8 = {
@@ -5644,13 +5543,13 @@ var user_message_attachment_default = Object.assign(
5644
5543
  );
5645
5544
 
5646
5545
  // src/ui/user-message.tsx
5647
- import { jsx as jsx49, jsxs as jsxs12 } from "react/jsx-runtime";
5546
+ import { jsx as jsx48, jsxs as jsxs12 } from "react/jsx-runtime";
5648
5547
  var UserMessage = () => {
5649
5548
  return /* @__PURE__ */ jsxs12(UserMessageRoot, { children: [
5650
- /* @__PURE__ */ jsx49(UserMessageAttachments, {}),
5651
- /* @__PURE__ */ jsx49(user_action_bar_default, {}),
5652
- /* @__PURE__ */ jsx49(UserMessageContent, {}),
5653
- /* @__PURE__ */ jsx49(branch_picker_default, {})
5549
+ /* @__PURE__ */ jsx48(UserMessageAttachments, {}),
5550
+ /* @__PURE__ */ jsx48(user_action_bar_default, {}),
5551
+ /* @__PURE__ */ jsx48(UserMessageContent, {}),
5552
+ /* @__PURE__ */ jsx48(branch_picker_default, {})
5654
5553
  ] });
5655
5554
  };
5656
5555
  UserMessage.displayName = "UserMessage";
@@ -5663,7 +5562,7 @@ var UserMessageContentWrapper = withDefaults("div", {
5663
5562
  });
5664
5563
  var UserMessageContent = forwardRef29(
5665
5564
  ({ components, ...props }, ref) => {
5666
- return /* @__PURE__ */ jsx49(UserMessageContentWrapper, { ...props, ref, children: /* @__PURE__ */ jsx49(
5565
+ return /* @__PURE__ */ jsx48(UserMessageContentWrapper, { ...props, ref, children: /* @__PURE__ */ jsx48(
5667
5566
  message_exports.Content,
5668
5567
  {
5669
5568
  components: {
@@ -5681,7 +5580,7 @@ var UserMessageAttachmentsContainer = withDefaults("div", {
5681
5580
  var UserMessageAttachments = ({
5682
5581
  components
5683
5582
  }) => {
5684
- return /* @__PURE__ */ jsx49(message_exports.If, { hasAttachments: true, children: /* @__PURE__ */ jsx49(UserMessageAttachmentsContainer, { children: /* @__PURE__ */ jsx49(
5583
+ return /* @__PURE__ */ jsx48(message_exports.If, { hasAttachments: true, children: /* @__PURE__ */ jsx48(UserMessageAttachmentsContainer, { children: /* @__PURE__ */ jsx48(
5685
5584
  message_exports.Attachments,
5686
5585
  {
5687
5586
  components: {
@@ -5700,13 +5599,13 @@ var user_message_default = Object.assign(UserMessage, exports10);
5700
5599
 
5701
5600
  // src/ui/edit-composer.tsx
5702
5601
  import { forwardRef as forwardRef30 } from "react";
5703
- import { jsx as jsx50, jsxs as jsxs13 } from "react/jsx-runtime";
5602
+ import { jsx as jsx49, jsxs as jsxs13 } from "react/jsx-runtime";
5704
5603
  var EditComposer = () => {
5705
5604
  return /* @__PURE__ */ jsxs13(EditComposerRoot, { children: [
5706
- /* @__PURE__ */ jsx50(EditComposerInput, {}),
5605
+ /* @__PURE__ */ jsx49(EditComposerInput, {}),
5707
5606
  /* @__PURE__ */ jsxs13(EditComposerFooter, { children: [
5708
- /* @__PURE__ */ jsx50(EditComposerCancel, {}),
5709
- /* @__PURE__ */ jsx50(EditComposerSend, {})
5607
+ /* @__PURE__ */ jsx49(EditComposerCancel, {}),
5608
+ /* @__PURE__ */ jsx49(EditComposerSend, {})
5710
5609
  ] })
5711
5610
  ] });
5712
5611
  };
@@ -5730,7 +5629,7 @@ var EditComposerCancel = forwardRef30(
5730
5629
  editComposer: { cancel: { label = "Cancel" } = {} } = {}
5731
5630
  } = {}
5732
5631
  } = useThreadConfig();
5733
- return /* @__PURE__ */ jsx50(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx50(Button, { variant: "ghost", ...props, ref, children: props.children ?? label }) });
5632
+ return /* @__PURE__ */ jsx49(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx49(Button, { variant: "ghost", ...props, ref, children: props.children ?? label }) });
5734
5633
  }
5735
5634
  );
5736
5635
  EditComposerCancel.displayName = "EditComposerCancel";
@@ -5739,7 +5638,7 @@ var EditComposerSend = forwardRef30(
5739
5638
  const {
5740
5639
  strings: { editComposer: { send: { label = "Send" } = {} } = {} } = {}
5741
5640
  } = useThreadConfig();
5742
- return /* @__PURE__ */ jsx50(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx50(Button, { ...props, ref, children: props.children ?? label }) });
5641
+ return /* @__PURE__ */ jsx49(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx49(Button, { ...props, ref, children: props.children ?? label }) });
5743
5642
  }
5744
5643
  );
5745
5644
  EditComposerSend.displayName = "EditComposerSend";
@@ -5753,14 +5652,14 @@ var exports11 = {
5753
5652
  var edit_composer_default = Object.assign(EditComposer, exports11);
5754
5653
 
5755
5654
  // src/ui/thread.tsx
5756
- import { jsx as jsx51, jsxs as jsxs14 } from "react/jsx-runtime";
5655
+ import { jsx as jsx50, jsxs as jsxs14 } from "react/jsx-runtime";
5757
5656
  var Thread = (config) => {
5758
- return /* @__PURE__ */ jsx51(ThreadRoot, { config, children: /* @__PURE__ */ jsxs14(ThreadViewport, { children: [
5759
- /* @__PURE__ */ jsx51(thread_welcome_default, {}),
5760
- /* @__PURE__ */ jsx51(ThreadMessages, {}),
5657
+ return /* @__PURE__ */ jsx50(ThreadRoot, { config, children: /* @__PURE__ */ jsxs14(ThreadViewport, { children: [
5658
+ /* @__PURE__ */ jsx50(thread_welcome_default, {}),
5659
+ /* @__PURE__ */ jsx50(ThreadMessages, {}),
5761
5660
  /* @__PURE__ */ jsxs14(ThreadViewportFooter, { children: [
5762
- /* @__PURE__ */ jsx51(ThreadScrollToBottom, {}),
5763
- /* @__PURE__ */ jsx51(composer_default, {})
5661
+ /* @__PURE__ */ jsx50(ThreadScrollToBottom, {}),
5662
+ /* @__PURE__ */ jsx50(composer_default, {})
5764
5663
  ] })
5765
5664
  ] }) });
5766
5665
  };
@@ -5769,7 +5668,7 @@ var ThreadRootStyled = withDefaults(thread_exports.Root, {
5769
5668
  });
5770
5669
  var ThreadRoot = forwardRef31(
5771
5670
  ({ config, ...props }, ref) => {
5772
- return /* @__PURE__ */ jsx51(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx51(ThreadRootStyled, { ...props, ref }) });
5671
+ return /* @__PURE__ */ jsx50(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx50(ThreadRootStyled, { ...props, ref }) });
5773
5672
  }
5774
5673
  );
5775
5674
  ThreadRoot.displayName = "ThreadRoot";
@@ -5783,7 +5682,7 @@ var ThreadViewportFooter = withDefaults("div", {
5783
5682
  ThreadViewportFooter.displayName = "ThreadViewportFooter";
5784
5683
  var SystemMessage = () => null;
5785
5684
  var ThreadMessages = ({ components, ...rest }) => {
5786
- return /* @__PURE__ */ jsx51(
5685
+ return /* @__PURE__ */ jsx50(
5787
5686
  thread_exports.Messages,
5788
5687
  {
5789
5688
  components: {
@@ -5807,7 +5706,7 @@ var ThreadScrollToBottom = forwardRef31((props, ref) => {
5807
5706
  thread: { scrollToBottom: { tooltip = "Scroll to bottom" } = {} } = {}
5808
5707
  } = {}
5809
5708
  } = useThreadConfig();
5810
- return /* @__PURE__ */ jsx51(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ jsx51(ThreadScrollToBottomIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx51(ArrowDownIcon, {}) }) });
5709
+ return /* @__PURE__ */ jsx50(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ jsx50(ThreadScrollToBottomIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx50(ArrowDownIcon, {}) }) });
5811
5710
  });
5812
5711
  ThreadScrollToBottom.displayName = "ThreadScrollToBottom";
5813
5712
  var exports12 = {
@@ -5820,20 +5719,20 @@ var exports12 = {
5820
5719
  var thread_default = Object.assign(Thread, exports12);
5821
5720
 
5822
5721
  // src/ui/assistant-modal.tsx
5823
- import { Fragment as Fragment6, jsx as jsx52, jsxs as jsxs15 } from "react/jsx-runtime";
5722
+ import { Fragment as Fragment6, jsx as jsx51, jsxs as jsxs15 } from "react/jsx-runtime";
5824
5723
  var AssistantModal = (config) => {
5825
5724
  return /* @__PURE__ */ jsxs15(AssistantModalRoot, { config, children: [
5826
- /* @__PURE__ */ jsx52(AssistantModalTrigger, {}),
5827
- /* @__PURE__ */ jsx52(AssistantModalContent, { children: /* @__PURE__ */ jsx52(thread_default, {}) })
5725
+ /* @__PURE__ */ jsx51(AssistantModalTrigger, {}),
5726
+ /* @__PURE__ */ jsx51(AssistantModalContent, { children: /* @__PURE__ */ jsx51(thread_default, {}) })
5828
5727
  ] });
5829
5728
  };
5830
5729
  AssistantModal.displayName = "AssistantModal";
5831
5730
  var AssistantModalRoot = ({ config, ...props }) => {
5832
- return /* @__PURE__ */ jsx52(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx52(assistantModal_exports.Root, { ...props }) });
5731
+ return /* @__PURE__ */ jsx51(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx51(assistantModal_exports.Root, { ...props }) });
5833
5732
  };
5834
5733
  AssistantModalRoot.displayName = "AssistantModalRoot";
5835
5734
  var AssistantModalTrigger = forwardRef32((props, ref) => {
5836
- return /* @__PURE__ */ jsx52(AssistantModalAnchor, { children: /* @__PURE__ */ jsx52(assistantModal_exports.Trigger, { asChild: true, children: /* @__PURE__ */ jsx52(AssistantModalButton, { ...props, ref }) }) });
5735
+ return /* @__PURE__ */ jsx51(AssistantModalAnchor, { children: /* @__PURE__ */ jsx51(assistantModal_exports.Trigger, { asChild: true, children: /* @__PURE__ */ jsx51(AssistantModalButton, { ...props, ref }) }) });
5837
5736
  });
5838
5737
  AssistantModalTrigger.displayName = "AssistantModalTrigger";
5839
5738
  var AssistantModalAnchor = withDefaults(assistantModal_exports.Anchor, {
@@ -5858,7 +5757,7 @@ var AssistantModalButton = forwardRef32(({ "data-state": state, ...rest }, ref)
5858
5757
  } = {}
5859
5758
  } = useThreadConfig();
5860
5759
  const tooltip = state === "open" ? openTooltip : closedTooltip;
5861
- return /* @__PURE__ */ jsx52(
5760
+ return /* @__PURE__ */ jsx51(
5862
5761
  ModalButtonStyled,
5863
5762
  {
5864
5763
  side: "left",
@@ -5867,14 +5766,14 @@ var AssistantModalButton = forwardRef32(({ "data-state": state, ...rest }, ref)
5867
5766
  ...rest,
5868
5767
  ref,
5869
5768
  children: rest.children ?? /* @__PURE__ */ jsxs15(Fragment6, { children: [
5870
- /* @__PURE__ */ jsx52(
5769
+ /* @__PURE__ */ jsx51(
5871
5770
  BotIcon,
5872
5771
  {
5873
5772
  "data-state": state,
5874
5773
  className: "aui-modal-button-closed-icon"
5875
5774
  }
5876
5775
  ),
5877
- /* @__PURE__ */ jsx52(
5776
+ /* @__PURE__ */ jsx51(
5878
5777
  ChevronDownIcon,
5879
5778
  {
5880
5779
  "data-state": state,
@@ -5985,6 +5884,7 @@ export {
5985
5884
  useMessage,
5986
5885
  useMessageContext,
5987
5886
  useMessageIf,
5887
+ useMessageRuntime,
5988
5888
  useMessageStore,
5989
5889
  useMessageUtils,
5990
5890
  useMessageUtilsStore,