@assistant-ui/react 0.5.18 → 0.5.20

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.mjs CHANGED
@@ -1118,8 +1118,8 @@ var BranchPickerPrimitiveNumber = () => {
1118
1118
  BranchPickerPrimitiveNumber.displayName = "BranchPickerPrimitive.Number";
1119
1119
 
1120
1120
  // src/primitives/branchPicker/BranchPickerRoot.tsx
1121
- import { Primitive as Primitive6 } from "@radix-ui/react-primitive";
1122
- import { forwardRef as forwardRef9 } from "react";
1121
+ import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
1122
+ import { forwardRef as forwardRef10 } from "react";
1123
1123
 
1124
1124
  // src/primitives/message/index.ts
1125
1125
  var message_exports = {};
@@ -1161,9 +1161,9 @@ var useIsHoveringRef = () => {
1161
1161
  );
1162
1162
  return useManagedRef(callbackRef);
1163
1163
  };
1164
- var MessagePrimitiveRoot = forwardRef6(({ onMouseEnter, onMouseLeave, ...rest }, forwardRef28) => {
1164
+ var MessagePrimitiveRoot = forwardRef6(({ onMouseEnter, onMouseLeave, ...rest }, forwardRef29) => {
1165
1165
  const isHoveringRef = useIsHoveringRef();
1166
- const ref = useComposedRefs(forwardRef28, isHoveringRef);
1166
+ const ref = useComposedRefs(forwardRef29, isHoveringRef);
1167
1167
  return /* @__PURE__ */ jsx12(Primitive3.div, { ...rest, ref });
1168
1168
  });
1169
1169
  MessagePrimitiveRoot.displayName = "MessagePrimitive.Root";
@@ -1225,7 +1225,6 @@ var useContentPartContext2 = (partIndex) => {
1225
1225
  const useContentPart = create10(
1226
1226
  () => getContentPartState(useMessage.getState(), void 0, partIndex)
1227
1227
  );
1228
- getContentPartState(useMessage.getState(), useContentPart, partIndex);
1229
1228
  return { useContentPart };
1230
1229
  });
1231
1230
  useEffect6(() => {
@@ -1252,11 +1251,58 @@ var ContentPartProvider = ({
1252
1251
  };
1253
1252
 
1254
1253
  // src/primitives/contentPart/ContentPartText.tsx
1255
- import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
1256
- import { forwardRef as forwardRef7 } from "react";
1254
+ import {
1255
+ forwardRef as forwardRef8
1256
+ } from "react";
1257
+
1258
+ // src/utils/smooth/useSmooth.tsx
1259
+ import { useEffect as useEffect7, useMemo as useMemo3, useRef as useRef3, useState as useState6 } from "react";
1260
+
1261
+ // src/utils/smooth/SmoothContext.tsx
1262
+ import {
1263
+ createContext as createContext5,
1264
+ forwardRef as forwardRef7,
1265
+ useContext as useContext5,
1266
+ useState as useState5
1267
+ } from "react";
1268
+ import { create as create11 } from "zustand";
1269
+ import { jsx as jsx14 } from "react/jsx-runtime";
1270
+ var SmoothContext = createContext5(null);
1271
+ var makeSmoothContext = (initialState) => {
1272
+ const useSmoothStatus2 = create11(() => initialState);
1273
+ return { useSmoothStatus: useSmoothStatus2 };
1274
+ };
1275
+ var SmoothContextProvider = ({ children }) => {
1276
+ const outer = useSmoothContext({ optional: true });
1277
+ const { useContentPart } = useContentPartContext();
1278
+ const [context] = useState5(
1279
+ () => makeSmoothContext(useContentPart.getState().status)
1280
+ );
1281
+ if (outer) return children;
1282
+ return /* @__PURE__ */ jsx14(SmoothContext.Provider, { value: context, children });
1283
+ };
1284
+ var withSmoothContextProvider = (Component) => {
1285
+ const Wrapped = forwardRef7((props, ref) => {
1286
+ return /* @__PURE__ */ jsx14(SmoothContextProvider, { children: /* @__PURE__ */ jsx14(Component, { ...props, ref }) });
1287
+ });
1288
+ Wrapped.displayName = Component.displayName;
1289
+ return Wrapped;
1290
+ };
1291
+ function useSmoothContext(options) {
1292
+ const context = useContext5(SmoothContext);
1293
+ if (!options?.optional && !context)
1294
+ throw new Error(
1295
+ "This component must be used within a SmoothContextProvider."
1296
+ );
1297
+ return context;
1298
+ }
1299
+ var useSmoothStatus = () => {
1300
+ const { useSmoothStatus: useSmoothStatus2 } = useSmoothContext();
1301
+ return useSmoothStatus2();
1302
+ };
1257
1303
 
1258
- // src/utils/hooks/useSmooth.tsx
1259
- import { useEffect as useEffect7, useRef as useRef3, useState as useState5 } from "react";
1304
+ // src/utils/smooth/useSmooth.tsx
1305
+ import { useCallbackRef as useCallbackRef2 } from "@radix-ui/react-use-callback-ref";
1260
1306
  var TextStreamAnimator = class {
1261
1307
  constructor(currentText, setText) {
1262
1308
  this.currentText = currentText;
@@ -1301,13 +1347,24 @@ var TextStreamAnimator = class {
1301
1347
  this.setText(this.currentText);
1302
1348
  };
1303
1349
  };
1304
- var useSmooth = (text, smooth = false) => {
1350
+ var SMOOTH_STATUS = Object.freeze({
1351
+ type: "running"
1352
+ });
1353
+ var useSmooth = (state, smooth = false) => {
1354
+ const { useSmoothStatus: useSmoothStatus2 } = useSmoothContext({ optional: true }) ?? {};
1355
+ const {
1356
+ part: { text }
1357
+ } = state;
1305
1358
  const { useMessage } = useMessageContext();
1306
1359
  const id = useMessage((m) => m.message.id);
1307
1360
  const idRef = useRef3(id);
1308
- const [displayedText, setDisplayedText] = useState5(text);
1309
- const [animatorRef] = useState5(
1310
- new TextStreamAnimator(text, setDisplayedText)
1361
+ const [displayedText, setDisplayedText] = useState6(text);
1362
+ const setText = useCallbackRef2((text2) => {
1363
+ setDisplayedText(text2);
1364
+ useSmoothStatus2?.setState(text2 !== state.part.text ? SMOOTH_STATUS : state.status);
1365
+ });
1366
+ const [animatorRef] = useState6(
1367
+ new TextStreamAnimator(text, setText)
1311
1368
  );
1312
1369
  useEffect7(() => {
1313
1370
  if (!smooth) {
@@ -1316,7 +1373,7 @@ var useSmooth = (text, smooth = false) => {
1316
1373
  }
1317
1374
  if (idRef.current !== id || !text.startsWith(animatorRef.targetText)) {
1318
1375
  idRef.current = id;
1319
- setDisplayedText(text);
1376
+ setText(text);
1320
1377
  animatorRef.currentText = text;
1321
1378
  animatorRef.targetText = text;
1322
1379
  animatorRef.stop();
@@ -1324,36 +1381,41 @@ var useSmooth = (text, smooth = false) => {
1324
1381
  }
1325
1382
  animatorRef.targetText = text;
1326
1383
  animatorRef.start();
1327
- }, [animatorRef, id, smooth, text]);
1384
+ }, [setText, animatorRef, id, smooth, text]);
1328
1385
  useEffect7(() => {
1329
1386
  return () => {
1330
1387
  animatorRef.stop();
1331
1388
  };
1332
1389
  }, [animatorRef]);
1333
- return smooth ? displayedText : text;
1390
+ return useMemo3(
1391
+ () => smooth ? {
1392
+ part: { type: "text", text: displayedText },
1393
+ status: text === displayedText ? state.status : SMOOTH_STATUS
1394
+ } : state,
1395
+ [smooth, displayedText, state, text]
1396
+ );
1334
1397
  };
1335
1398
 
1336
1399
  // src/primitives/contentPart/ContentPartText.tsx
1337
- import { jsx as jsx14 } from "react/jsx-runtime";
1338
- var ContentPartPrimitiveText = forwardRef7(({ smooth = true, ...rest }, forwardedRef) => {
1400
+ import { jsx as jsx15 } from "react/jsx-runtime";
1401
+ var ContentPartPrimitiveText = forwardRef8(({ smooth = true, component: Component = "span", ...rest }, forwardedRef) => {
1339
1402
  const {
1340
- status,
1341
- part: { text }
1342
- } = useContentPartText();
1343
- const smoothText = useSmooth(text, smooth);
1344
- return /* @__PURE__ */ jsx14(Primitive4.span, { "data-status": status.type, ...rest, ref: forwardedRef, children: smoothText });
1403
+ part: { text },
1404
+ status
1405
+ } = useSmooth(useContentPartText(), smooth);
1406
+ return /* @__PURE__ */ jsx15(Component, { "data-status": status.type, ...rest, ref: forwardedRef, children: text });
1345
1407
  });
1346
1408
  ContentPartPrimitiveText.displayName = "ContentPartPrimitive.Text";
1347
1409
 
1348
1410
  // src/primitives/contentPart/ContentPartImage.tsx
1349
- import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
1350
- import { forwardRef as forwardRef8 } from "react";
1351
- import { jsx as jsx15 } from "react/jsx-runtime";
1352
- var ContentPartPrimitiveImage = forwardRef8((props, forwardedRef) => {
1411
+ import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
1412
+ import { forwardRef as forwardRef9 } from "react";
1413
+ import { jsx as jsx16 } from "react/jsx-runtime";
1414
+ var ContentPartPrimitiveImage = forwardRef9((props, forwardedRef) => {
1353
1415
  const {
1354
1416
  part: { image }
1355
1417
  } = useContentPartImage();
1356
- return /* @__PURE__ */ jsx15(Primitive5.img, { src: image, ...props, ref: forwardedRef });
1418
+ return /* @__PURE__ */ jsx16(Primitive4.img, { src: image, ...props, ref: forwardedRef });
1357
1419
  });
1358
1420
  ContentPartPrimitiveImage.displayName = "ContentPartPrimitive.Image";
1359
1421
 
@@ -1375,25 +1437,26 @@ var ContentPartPrimitiveInProgress = ({ children }) => {
1375
1437
  ContentPartPrimitiveInProgress.displayName = "ContentPartPrimitive.InProgress";
1376
1438
 
1377
1439
  // src/primitives/message/MessageContent.tsx
1378
- import { jsx as jsx16, jsxs as jsxs2 } from "react/jsx-runtime";
1440
+ import { jsx as jsx17, jsxs as jsxs2 } from "react/jsx-runtime";
1379
1441
  var defaultComponents = {
1380
1442
  Text: () => /* @__PURE__ */ jsxs2("p", { style: { whiteSpace: "pre-line" }, children: [
1381
- /* @__PURE__ */ jsx16(ContentPartPrimitiveText, {}),
1382
- /* @__PURE__ */ jsx16(ContentPartPrimitiveInProgress, { children: /* @__PURE__ */ jsx16("span", { style: { fontFamily: "revert" }, children: " \u25CF" }) })
1443
+ /* @__PURE__ */ jsx17(ContentPartPrimitiveText, {}),
1444
+ /* @__PURE__ */ jsx17(ContentPartPrimitiveInProgress, { children: /* @__PURE__ */ jsx17("span", { style: { fontFamily: "revert" }, children: " \u25CF" }) })
1383
1445
  ] }),
1384
- Image: () => /* @__PURE__ */ jsx16(ContentPartPrimitiveImage, {}),
1385
- UI: () => /* @__PURE__ */ jsx16(ContentPartPrimitiveDisplay, {}),
1446
+ Image: () => /* @__PURE__ */ jsx17(ContentPartPrimitiveImage, {}),
1447
+ UI: () => /* @__PURE__ */ jsx17(ContentPartPrimitiveDisplay, {}),
1386
1448
  tools: {
1387
1449
  Fallback: (props) => {
1388
1450
  const { useToolUIs } = useAssistantContext();
1389
1451
  const Render = useToolUIs((s) => s.getToolUI(props.part.toolName));
1390
1452
  if (!Render) return null;
1391
- return /* @__PURE__ */ jsx16(Render, { ...props });
1453
+ return /* @__PURE__ */ jsx17(Render, { ...props });
1392
1454
  }
1393
1455
  }
1394
1456
  };
1395
1457
  var MessageContentPartComponent = ({
1396
1458
  components: {
1459
+ Empty = defaultComponents.Text,
1397
1460
  Text: Text2 = defaultComponents.Text,
1398
1461
  Image: Image2 = defaultComponents.Image,
1399
1462
  UI = defaultComponents.UI,
@@ -1410,15 +1473,16 @@ var MessageContentPartComponent = ({
1410
1473
  case "text":
1411
1474
  if (status.type === "requires-action")
1412
1475
  throw new Error("Encountered unexpected requires-action status");
1413
- return /* @__PURE__ */ jsx16(Text2, { part, status });
1476
+ if (part === EMPTY_CONTENT) return /* @__PURE__ */ jsx17(Empty, { part, status });
1477
+ return /* @__PURE__ */ jsx17(Text2, { part, status });
1414
1478
  case "image":
1415
1479
  if (status.type === "requires-action")
1416
1480
  throw new Error("Encountered unexpected requires-action status");
1417
- return /* @__PURE__ */ jsx16(Image2, { part, status });
1481
+ return /* @__PURE__ */ jsx17(Image2, { part, status });
1418
1482
  case "ui":
1419
1483
  if (status.type === "requires-action")
1420
1484
  throw new Error("Encountered unexpected requires-action status");
1421
- return /* @__PURE__ */ jsx16(UI, { part, status });
1485
+ return /* @__PURE__ */ jsx17(UI, { part, status });
1422
1486
  case "tool-call": {
1423
1487
  const Tool = by_name[part.toolName] || Fallback2;
1424
1488
  const addResult = (result) => addToolResult({
@@ -1426,7 +1490,7 @@ var MessageContentPartComponent = ({
1426
1490
  toolCallId: part.toolCallId,
1427
1491
  result
1428
1492
  });
1429
- return /* @__PURE__ */ jsx16(Tool, { part, status, addResult });
1493
+ return /* @__PURE__ */ jsx17(Tool, { part, status, addResult });
1430
1494
  }
1431
1495
  default:
1432
1496
  const unhandledType = type;
@@ -1437,7 +1501,7 @@ var MessageContentPartImpl = ({
1437
1501
  partIndex,
1438
1502
  components
1439
1503
  }) => {
1440
- return /* @__PURE__ */ jsx16(ContentPartProvider, { partIndex, children: /* @__PURE__ */ jsx16(MessageContentPartComponent, { components }) });
1504
+ return /* @__PURE__ */ jsx17(ContentPartProvider, { partIndex, children: /* @__PURE__ */ jsx17(MessageContentPartComponent, { components }) });
1441
1505
  };
1442
1506
  var MessageContentPart = memo2(
1443
1507
  MessageContentPartImpl,
@@ -1450,7 +1514,7 @@ var MessagePrimitiveContent = ({
1450
1514
  const contentLength = useMessage((s) => s.message.content.length) || 1;
1451
1515
  return new Array(contentLength).fill(null).map((_, idx) => {
1452
1516
  const partIndex = idx;
1453
- return /* @__PURE__ */ jsx16(
1517
+ return /* @__PURE__ */ jsx17(
1454
1518
  MessageContentPart,
1455
1519
  {
1456
1520
  partIndex,
@@ -1469,9 +1533,9 @@ var MessagePrimitiveInProgress = () => {
1469
1533
  MessagePrimitiveInProgress.displayName = "MessagePrimitive.InProgress";
1470
1534
 
1471
1535
  // src/primitives/branchPicker/BranchPickerRoot.tsx
1472
- import { jsx as jsx17 } from "react/jsx-runtime";
1473
- var BranchPickerPrimitiveRoot = forwardRef9(({ hideWhenSingleBranch, ...rest }, ref) => {
1474
- return /* @__PURE__ */ jsx17(MessagePrimitiveIf, { hasBranches: hideWhenSingleBranch ? true : void 0, children: /* @__PURE__ */ jsx17(Primitive6.div, { ...rest, ref }) });
1536
+ import { jsx as jsx18 } from "react/jsx-runtime";
1537
+ var BranchPickerPrimitiveRoot = forwardRef10(({ hideWhenSingleBranch, ...rest }, ref) => {
1538
+ return /* @__PURE__ */ jsx18(MessagePrimitiveIf, { hasBranches: hideWhenSingleBranch ? true : void 0, children: /* @__PURE__ */ jsx18(Primitive5.div, { ...rest, ref }) });
1475
1539
  });
1476
1540
  BranchPickerPrimitiveRoot.displayName = "BranchPickerPrimitive.Root";
1477
1541
 
@@ -1487,20 +1551,20 @@ __export(composer_exports, {
1487
1551
 
1488
1552
  // src/primitives/composer/ComposerRoot.tsx
1489
1553
  import { composeEventHandlers as composeEventHandlers4 } from "@radix-ui/primitive";
1490
- import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
1554
+ import { Primitive as Primitive6 } from "@radix-ui/react-primitive";
1491
1555
  import {
1492
- forwardRef as forwardRef10
1556
+ forwardRef as forwardRef11
1493
1557
  } from "react";
1494
- import { jsx as jsx18 } from "react/jsx-runtime";
1495
- var ComposerPrimitiveRoot = forwardRef10(({ onSubmit, ...rest }, forwardedRef) => {
1558
+ import { jsx as jsx19 } from "react/jsx-runtime";
1559
+ var ComposerPrimitiveRoot = forwardRef11(({ onSubmit, ...rest }, forwardedRef) => {
1496
1560
  const send = useComposerSend();
1497
1561
  const handleSubmit = (e) => {
1498
1562
  e.preventDefault();
1499
1563
  if (!send) return;
1500
1564
  send();
1501
1565
  };
1502
- return /* @__PURE__ */ jsx18(
1503
- Primitive7.form,
1566
+ return /* @__PURE__ */ jsx19(
1567
+ Primitive6.form,
1504
1568
  {
1505
1569
  ...rest,
1506
1570
  ref: forwardedRef,
@@ -1515,15 +1579,15 @@ import { composeEventHandlers as composeEventHandlers5 } from "@radix-ui/primiti
1515
1579
  import { useComposedRefs as useComposedRefs2 } from "@radix-ui/react-compose-refs";
1516
1580
  import { Slot } from "@radix-ui/react-slot";
1517
1581
  import {
1518
- forwardRef as forwardRef11,
1582
+ forwardRef as forwardRef12,
1519
1583
  useCallback as useCallback15,
1520
1584
  useEffect as useEffect8,
1521
1585
  useRef as useRef4
1522
1586
  } from "react";
1523
1587
  import TextareaAutosize from "react-textarea-autosize";
1524
1588
  import { useEscapeKeydown } from "@radix-ui/react-use-escape-keydown";
1525
- import { jsx as jsx19 } from "react/jsx-runtime";
1526
- var ComposerPrimitiveInput = forwardRef11(
1589
+ import { jsx as jsx20 } from "react/jsx-runtime";
1590
+ var ComposerPrimitiveInput = forwardRef12(
1527
1591
  ({
1528
1592
  autoFocus = false,
1529
1593
  asChild,
@@ -1575,7 +1639,7 @@ var ComposerPrimitiveInput = forwardRef11(
1575
1639
  focus();
1576
1640
  }
1577
1641
  });
1578
- return /* @__PURE__ */ jsx19(
1642
+ return /* @__PURE__ */ jsx20(
1579
1643
  Component,
1580
1644
  {
1581
1645
  name: "input",
@@ -1596,14 +1660,14 @@ var ComposerPrimitiveInput = forwardRef11(
1596
1660
  ComposerPrimitiveInput.displayName = "ComposerPrimitive.Input";
1597
1661
 
1598
1662
  // src/primitives/composer/ComposerSend.tsx
1599
- import { forwardRef as forwardRef12 } from "react";
1600
- import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
1601
- import { jsx as jsx20 } from "react/jsx-runtime";
1602
- var ComposerPrimitiveSend = forwardRef12(({ disabled, ...rest }, ref) => {
1663
+ import { forwardRef as forwardRef13 } from "react";
1664
+ import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
1665
+ import { jsx as jsx21 } from "react/jsx-runtime";
1666
+ var ComposerPrimitiveSend = forwardRef13(({ disabled, ...rest }, ref) => {
1603
1667
  const { useComposer } = useComposerContext();
1604
1668
  const hasValue = useComposer((c) => c.isEditing && c.value.length > 0);
1605
- return /* @__PURE__ */ jsx20(
1606
- Primitive8.button,
1669
+ return /* @__PURE__ */ jsx21(
1670
+ Primitive7.button,
1607
1671
  {
1608
1672
  type: "submit",
1609
1673
  ...rest,
@@ -1652,11 +1716,11 @@ __export(thread_exports, {
1652
1716
  });
1653
1717
 
1654
1718
  // src/primitives/thread/ThreadRoot.tsx
1655
- import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
1656
- import { forwardRef as forwardRef13 } from "react";
1657
- import { jsx as jsx21 } from "react/jsx-runtime";
1658
- var ThreadPrimitiveRoot = forwardRef13((props, ref) => {
1659
- return /* @__PURE__ */ jsx21(Primitive9.div, { ...props, ref });
1719
+ import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
1720
+ import { forwardRef as forwardRef14 } from "react";
1721
+ import { jsx as jsx22 } from "react/jsx-runtime";
1722
+ var ThreadPrimitiveRoot = forwardRef14((props, ref) => {
1723
+ return /* @__PURE__ */ jsx22(Primitive8.div, { ...props, ref });
1660
1724
  });
1661
1725
  ThreadPrimitiveRoot.displayName = "ThreadPrimitive.Root";
1662
1726
 
@@ -1681,18 +1745,18 @@ ThreadPrimitiveIf.displayName = "ThreadPrimitive.If";
1681
1745
 
1682
1746
  // src/primitives/thread/ThreadViewport.tsx
1683
1747
  import { useComposedRefs as useComposedRefs4 } from "@radix-ui/react-compose-refs";
1684
- import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
1685
- import { forwardRef as forwardRef14 } from "react";
1748
+ import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
1749
+ import { forwardRef as forwardRef15 } from "react";
1686
1750
 
1687
1751
  // src/primitive-hooks/thread/useThreadViewportAutoScroll.tsx
1688
1752
  import { useComposedRefs as useComposedRefs3 } from "@radix-ui/react-compose-refs";
1689
1753
  import { useRef as useRef5 } from "react";
1690
1754
 
1691
1755
  // src/utils/hooks/useOnResizeContent.tsx
1692
- import { useCallbackRef as useCallbackRef2 } from "@radix-ui/react-use-callback-ref";
1756
+ import { useCallbackRef as useCallbackRef3 } from "@radix-ui/react-use-callback-ref";
1693
1757
  import { useCallback as useCallback16 } from "react";
1694
1758
  var useOnResizeContent = (callback) => {
1695
- const callbackRef = useCallbackRef2(callback);
1759
+ const callbackRef = useCallbackRef3(callback);
1696
1760
  const refCallback = useCallback16(
1697
1761
  (el) => {
1698
1762
  const resizeObserver = new ResizeObserver(() => {
@@ -1729,10 +1793,10 @@ var useOnResizeContent = (callback) => {
1729
1793
  };
1730
1794
 
1731
1795
  // src/utils/hooks/useOnScrollToBottom.tsx
1732
- import { useCallbackRef as useCallbackRef3 } from "@radix-ui/react-use-callback-ref";
1796
+ import { useCallbackRef as useCallbackRef4 } from "@radix-ui/react-use-callback-ref";
1733
1797
  import { useEffect as useEffect9 } from "react";
1734
1798
  var useOnScrollToBottom = (callback) => {
1735
- const callbackRef = useCallbackRef3(callback);
1799
+ const callbackRef = useCallbackRef4(callback);
1736
1800
  const { useViewport } = useThreadContext();
1737
1801
  useEffect9(() => {
1738
1802
  return useViewport.getState().onScrollToBottom(() => {
@@ -1793,13 +1857,13 @@ var useThreadViewportAutoScroll = ({
1793
1857
  };
1794
1858
 
1795
1859
  // src/primitives/thread/ThreadViewport.tsx
1796
- import { jsx as jsx22 } from "react/jsx-runtime";
1797
- var ThreadPrimitiveViewport = forwardRef14(({ autoScroll, onScroll, children, ...rest }, forwardedRef) => {
1860
+ import { jsx as jsx23 } from "react/jsx-runtime";
1861
+ var ThreadPrimitiveViewport = forwardRef15(({ autoScroll, onScroll, children, ...rest }, forwardedRef) => {
1798
1862
  const autoScrollRef = useThreadViewportAutoScroll({
1799
1863
  autoScroll
1800
1864
  });
1801
1865
  const ref = useComposedRefs4(forwardedRef, autoScrollRef);
1802
- return /* @__PURE__ */ jsx22(Primitive10.div, { ...rest, ref, children });
1866
+ return /* @__PURE__ */ jsx23(Primitive9.div, { ...rest, ref, children });
1803
1867
  });
1804
1868
  ThreadPrimitiveViewport.displayName = "ThreadPrimitive.Viewport";
1805
1869
 
@@ -1807,15 +1871,15 @@ ThreadPrimitiveViewport.displayName = "ThreadPrimitive.Viewport";
1807
1871
  import { memo as memo3 } from "react";
1808
1872
 
1809
1873
  // src/context/providers/MessageProvider.tsx
1810
- import { useEffect as useEffect10, useState as useState6 } from "react";
1811
- import { create as create13 } from "zustand";
1874
+ import { useEffect as useEffect10, useState as useState7 } from "react";
1875
+ import { create as create14 } from "zustand";
1812
1876
 
1813
1877
  // src/context/stores/EditComposer.ts
1814
- import { create as create11 } from "zustand";
1878
+ import { create as create12 } from "zustand";
1815
1879
  var makeEditComposerStore = ({
1816
1880
  onEdit,
1817
1881
  onSend
1818
- }) => create11()((set, get, store) => ({
1882
+ }) => create12()((set, get, store) => ({
1819
1883
  ...makeBaseComposer(set, get, store),
1820
1884
  canCancel: false,
1821
1885
  isEditing: false,
@@ -1834,8 +1898,8 @@ var makeEditComposerStore = ({
1834
1898
  }));
1835
1899
 
1836
1900
  // src/context/stores/MessageUtils.ts
1837
- import { create as create12 } from "zustand";
1838
- var makeMessageUtilsStore = () => create12((set) => ({
1901
+ import { create as create13 } from "zustand";
1902
+ var makeMessageUtilsStore = () => create13((set) => ({
1839
1903
  isCopied: false,
1840
1904
  setIsCopied: (value) => {
1841
1905
  set({ isCopied: value });
@@ -1847,7 +1911,7 @@ var makeMessageUtilsStore = () => create12((set) => ({
1847
1911
  }));
1848
1912
 
1849
1913
  // src/context/providers/MessageProvider.tsx
1850
- import { jsx as jsx23 } from "react/jsx-runtime";
1914
+ import { jsx as jsx24 } from "react/jsx-runtime";
1851
1915
  var getIsLast = (messages, message) => {
1852
1916
  return messages[messages.length - 1]?.id === message.id;
1853
1917
  };
@@ -1869,8 +1933,8 @@ var getMessageState = (messages, getBranches, useMessage, messageIndex) => {
1869
1933
  };
1870
1934
  var useMessageContext2 = (messageIndex) => {
1871
1935
  const { useThreadMessages, useThreadActions } = useThreadContext();
1872
- const [context] = useState6(() => {
1873
- const useMessage = create13(
1936
+ const [context] = useState7(() => {
1937
+ const useMessage = create14(
1874
1938
  () => getMessageState(
1875
1939
  useThreadMessages.getState(),
1876
1940
  useThreadActions.getState().getBranches,
@@ -1931,11 +1995,11 @@ var MessageProvider = ({
1931
1995
  children
1932
1996
  }) => {
1933
1997
  const context = useMessageContext2(messageIndex);
1934
- return /* @__PURE__ */ jsx23(MessageContext.Provider, { value: context, children });
1998
+ return /* @__PURE__ */ jsx24(MessageContext.Provider, { value: context, children });
1935
1999
  };
1936
2000
 
1937
2001
  // src/primitives/thread/ThreadMessages.tsx
1938
- import { jsx as jsx24, jsxs as jsxs3 } from "react/jsx-runtime";
2002
+ import { jsx as jsx25, jsxs as jsxs3 } from "react/jsx-runtime";
1939
2003
  var DEFAULT_SYSTEM_MESSAGE = () => null;
1940
2004
  var getComponents = (components) => {
1941
2005
  return {
@@ -1952,11 +2016,11 @@ var ThreadMessageImpl = ({
1952
2016
  const { UserMessage: UserMessage2, EditComposer: EditComposer2, AssistantMessage: AssistantMessage2, SystemMessage: SystemMessage2 } = getComponents(components);
1953
2017
  return /* @__PURE__ */ jsxs3(MessageProvider, { messageIndex, children: [
1954
2018
  /* @__PURE__ */ jsxs3(MessagePrimitiveIf, { user: true, children: [
1955
- /* @__PURE__ */ jsx24(ComposerPrimitiveIf, { editing: false, children: /* @__PURE__ */ jsx24(UserMessage2, {}) }),
1956
- /* @__PURE__ */ jsx24(ComposerPrimitiveIf, { editing: true, children: /* @__PURE__ */ jsx24(EditComposer2, {}) })
2019
+ /* @__PURE__ */ jsx25(ComposerPrimitiveIf, { editing: false, children: /* @__PURE__ */ jsx25(UserMessage2, {}) }),
2020
+ /* @__PURE__ */ jsx25(ComposerPrimitiveIf, { editing: true, children: /* @__PURE__ */ jsx25(EditComposer2, {}) })
1957
2021
  ] }),
1958
- /* @__PURE__ */ jsx24(MessagePrimitiveIf, { assistant: true, children: /* @__PURE__ */ jsx24(AssistantMessage2, {}) }),
1959
- /* @__PURE__ */ jsx24(MessagePrimitiveIf, { system: true, children: /* @__PURE__ */ jsx24(SystemMessage2, {}) })
2022
+ /* @__PURE__ */ jsx25(MessagePrimitiveIf, { assistant: true, children: /* @__PURE__ */ jsx25(AssistantMessage2, {}) }),
2023
+ /* @__PURE__ */ jsx25(MessagePrimitiveIf, { system: true, children: /* @__PURE__ */ jsx25(SystemMessage2, {}) })
1960
2024
  ] });
1961
2025
  };
1962
2026
  var ThreadMessage = memo3(
@@ -1971,7 +2035,7 @@ var ThreadPrimitiveMessagesImpl = ({
1971
2035
  if (messagesLength === 0) return null;
1972
2036
  return new Array(messagesLength).fill(null).map((_, idx) => {
1973
2037
  const messageIndex = idx;
1974
- return /* @__PURE__ */ jsx24(
2038
+ return /* @__PURE__ */ jsx25(
1975
2039
  ThreadMessage,
1976
2040
  {
1977
2041
  messageIndex,
@@ -2001,7 +2065,7 @@ var ThreadPrimitiveSuggestion = createActionButton(
2001
2065
  );
2002
2066
 
2003
2067
  // src/runtimes/local/useLocalRuntime.tsx
2004
- import { useInsertionEffect as useInsertionEffect3, useState as useState8 } from "react";
2068
+ import { useInsertionEffect as useInsertionEffect3, useState as useState9 } from "react";
2005
2069
 
2006
2070
  // src/runtimes/core/BaseAssistantRuntime.tsx
2007
2071
  var BaseAssistantRuntime = class {
@@ -2034,7 +2098,9 @@ __export(internal_exports, {
2034
2098
  ProxyConfigProvider: () => ProxyConfigProvider,
2035
2099
  TooltipIconButton: () => TooltipIconButton,
2036
2100
  generateId: () => generateId,
2037
- useSmooth: () => useSmooth
2101
+ useSmooth: () => useSmooth,
2102
+ useSmoothStatus: () => useSmoothStatus,
2103
+ withSmoothContextProvider: () => withSmoothContextProvider
2038
2104
  });
2039
2105
 
2040
2106
  // src/utils/idUtils.tsx
@@ -2258,17 +2324,17 @@ var MessageRepository = class {
2258
2324
  };
2259
2325
 
2260
2326
  // src/ui/base/tooltip-icon-button.tsx
2261
- import { forwardRef as forwardRef17 } from "react";
2327
+ import { forwardRef as forwardRef18 } from "react";
2262
2328
 
2263
2329
  // src/ui/base/tooltip.tsx
2264
2330
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
2265
2331
 
2266
2332
  // src/ui/utils/withDefaults.tsx
2267
2333
  import {
2268
- forwardRef as forwardRef15
2334
+ forwardRef as forwardRef16
2269
2335
  } from "react";
2270
2336
  import classNames from "classnames";
2271
- import { jsx as jsx25 } from "react/jsx-runtime";
2337
+ import { jsx as jsx26 } from "react/jsx-runtime";
2272
2338
  var withDefaultProps = ({
2273
2339
  className,
2274
2340
  ...defaultProps
@@ -2281,10 +2347,10 @@ var withDefaultProps = ({
2281
2347
  };
2282
2348
  var withDefaults = (Component, defaultProps) => {
2283
2349
  const getProps = withDefaultProps(defaultProps);
2284
- const WithDefaults = forwardRef15(
2350
+ const WithDefaults = forwardRef16(
2285
2351
  (props, ref) => {
2286
2352
  const ComponentAsAny = Component;
2287
- return /* @__PURE__ */ jsx25(ComponentAsAny, { ...getProps(props), ref });
2353
+ return /* @__PURE__ */ jsx26(ComponentAsAny, { ...getProps(props), ref });
2288
2354
  }
2289
2355
  );
2290
2356
  WithDefaults.displayName = "withDefaults(" + (typeof Component === "string" ? Component : Component.displayName) + ")";
@@ -2292,9 +2358,9 @@ var withDefaults = (Component, defaultProps) => {
2292
2358
  };
2293
2359
 
2294
2360
  // src/ui/base/tooltip.tsx
2295
- import { jsx as jsx26 } from "react/jsx-runtime";
2361
+ import { jsx as jsx27 } from "react/jsx-runtime";
2296
2362
  var Tooltip = (props) => {
2297
- return /* @__PURE__ */ jsx26(TooltipPrimitive.Provider, { children: /* @__PURE__ */ jsx26(TooltipPrimitive.Root, { ...props }) });
2363
+ return /* @__PURE__ */ jsx27(TooltipPrimitive.Provider, { children: /* @__PURE__ */ jsx27(TooltipPrimitive.Root, { ...props }) });
2298
2364
  };
2299
2365
  Tooltip.displayName = "Tooltip";
2300
2366
  var TooltipTrigger = TooltipPrimitive.Trigger;
@@ -2306,9 +2372,9 @@ TooltipContent.displayName = "TooltipContent";
2306
2372
 
2307
2373
  // src/ui/base/button.tsx
2308
2374
  import { cva } from "class-variance-authority";
2309
- import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
2310
- import { forwardRef as forwardRef16 } from "react";
2311
- import { jsx as jsx27 } from "react/jsx-runtime";
2375
+ import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
2376
+ import { forwardRef as forwardRef17 } from "react";
2377
+ import { jsx as jsx28 } from "react/jsx-runtime";
2312
2378
  var buttonVariants = cva("aui-button", {
2313
2379
  variants: {
2314
2380
  variant: {
@@ -2326,10 +2392,10 @@ var buttonVariants = cva("aui-button", {
2326
2392
  size: "default"
2327
2393
  }
2328
2394
  });
2329
- var Button = forwardRef16(
2395
+ var Button = forwardRef17(
2330
2396
  ({ className, variant, size, ...props }, ref) => {
2331
- return /* @__PURE__ */ jsx27(
2332
- Primitive11.button,
2397
+ return /* @__PURE__ */ jsx28(
2398
+ Primitive10.button,
2333
2399
  {
2334
2400
  className: buttonVariants({ variant, size, className }),
2335
2401
  ...props,
@@ -2341,14 +2407,14 @@ var Button = forwardRef16(
2341
2407
  Button.displayName = "Button";
2342
2408
 
2343
2409
  // src/ui/base/tooltip-icon-button.tsx
2344
- import { jsx as jsx28, jsxs as jsxs4 } from "react/jsx-runtime";
2345
- var TooltipIconButton = forwardRef17(({ children, tooltip, side = "bottom", ...rest }, ref) => {
2410
+ import { jsx as jsx29, jsxs as jsxs4 } from "react/jsx-runtime";
2411
+ var TooltipIconButton = forwardRef18(({ children, tooltip, side = "bottom", ...rest }, ref) => {
2346
2412
  return /* @__PURE__ */ jsxs4(Tooltip, { children: [
2347
- /* @__PURE__ */ jsx28(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs4(Button, { variant: "ghost", size: "icon", ...rest, ref, children: [
2413
+ /* @__PURE__ */ jsx29(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs4(Button, { variant: "ghost", size: "icon", ...rest, ref, children: [
2348
2414
  children,
2349
- /* @__PURE__ */ jsx28("span", { className: "aui-sr-only", children: tooltip })
2415
+ /* @__PURE__ */ jsx29("span", { className: "aui-sr-only", children: tooltip })
2350
2416
  ] }) }),
2351
- /* @__PURE__ */ jsx28(TooltipContent, { side, children: tooltip })
2417
+ /* @__PURE__ */ jsx29(TooltipContent, { side, children: tooltip })
2352
2418
  ] });
2353
2419
  });
2354
2420
  TooltipIconButton.displayName = "TooltipIconButton";
@@ -2638,7 +2704,7 @@ var toLanguageModelTools = (tools) => {
2638
2704
  };
2639
2705
 
2640
2706
  // src/runtimes/edge/useEdgeRuntime.ts
2641
- import { useState as useState7 } from "react";
2707
+ import { useState as useState8 } from "react";
2642
2708
 
2643
2709
  // src/runtimes/edge/streams/assistantDecoderStream.ts
2644
2710
  function assistantDecoderStream() {
@@ -3378,7 +3444,7 @@ var useEdgeRuntime = ({
3378
3444
  initialMessages,
3379
3445
  ...options
3380
3446
  }) => {
3381
- const [adapter] = useState7(() => new EdgeChatAdapter(options));
3447
+ const [adapter] = useState8(() => new EdgeChatAdapter(options));
3382
3448
  return useLocalRuntime(adapter, { initialMessages });
3383
3449
  };
3384
3450
 
@@ -3592,7 +3658,7 @@ var LocalRuntime = class extends BaseAssistantRuntime {
3592
3658
 
3593
3659
  // src/runtimes/local/useLocalRuntime.tsx
3594
3660
  var useLocalRuntime = (adapter, options) => {
3595
- const [runtime] = useState8(() => new LocalRuntime(adapter, options));
3661
+ const [runtime] = useState9(() => new LocalRuntime(adapter, options));
3596
3662
  useInsertionEffect3(() => {
3597
3663
  runtime.adapter = adapter;
3598
3664
  });
@@ -3600,7 +3666,7 @@ var useLocalRuntime = (adapter, options) => {
3600
3666
  };
3601
3667
 
3602
3668
  // src/runtimes/external-store/ExternalStoreThreadRuntime.tsx
3603
- import { create as create14 } from "zustand";
3669
+ import { create as create15 } from "zustand";
3604
3670
 
3605
3671
  // src/runtimes/external-store/getExternalStoreMessage.tsx
3606
3672
  var symbolInnerMessage = Symbol("innerMessage");
@@ -3609,7 +3675,7 @@ var getExternalStoreMessage = (message) => {
3609
3675
  };
3610
3676
 
3611
3677
  // src/runtimes/external-store/useExternalStoreSync.tsx
3612
- import { useEffect as useEffect11, useInsertionEffect as useInsertionEffect4, useMemo as useMemo3, useRef as useRef6 } from "react";
3678
+ import { useEffect as useEffect11, useInsertionEffect as useInsertionEffect4, useMemo as useMemo4, useRef as useRef6 } from "react";
3613
3679
 
3614
3680
  // src/runtimes/external-store/ThreadMessageConverter.ts
3615
3681
  var ThreadMessageConverter = class {
@@ -3707,7 +3773,7 @@ var useExternalStoreSync = (adapter, updateData) => {
3707
3773
  useInsertionEffect4(() => {
3708
3774
  adapterRef.current = adapter;
3709
3775
  });
3710
- const [converter, convertCallback] = useMemo3(() => {
3776
+ const [converter, convertCallback] = useMemo4(() => {
3711
3777
  const converter2 = adapter.convertMessage ?? ((m) => m);
3712
3778
  const convertCallback2 = (cache, m, idx) => {
3713
3779
  const autoStatus = getAutoStatus(
@@ -3754,7 +3820,7 @@ var ExternalStoreThreadRuntime = class {
3754
3820
  store.isRunning ?? false,
3755
3821
  store.messages
3756
3822
  );
3757
- this.useStore = create14(() => ({
3823
+ this.useStore = create15(() => ({
3758
3824
  store
3759
3825
  }));
3760
3826
  }
@@ -3895,9 +3961,9 @@ var ExternalStoreRuntime = class extends BaseAssistantRuntime {
3895
3961
  };
3896
3962
 
3897
3963
  // src/runtimes/external-store/useExternalStoreRuntime.tsx
3898
- import { useEffect as useEffect12, useInsertionEffect as useInsertionEffect5, useState as useState9 } from "react";
3964
+ import { useEffect as useEffect12, useInsertionEffect as useInsertionEffect5, useState as useState10 } from "react";
3899
3965
  var useExternalStoreRuntime = (store) => {
3900
- const [runtime] = useState9(() => new ExternalStoreRuntime(store));
3966
+ const [runtime] = useState10(() => new ExternalStoreRuntime(store));
3901
3967
  useInsertionEffect5(() => {
3902
3968
  runtime.store = store;
3903
3969
  });
@@ -3909,34 +3975,34 @@ var useExternalStoreRuntime = (store) => {
3909
3975
 
3910
3976
  // src/ui/thread-config.tsx
3911
3977
  import {
3912
- createContext as createContext5,
3913
- useContext as useContext5
3978
+ createContext as createContext6,
3979
+ useContext as useContext6
3914
3980
  } from "react";
3915
- import { Fragment as Fragment3, jsx as jsx29 } from "react/jsx-runtime";
3916
- var ThreadConfigContext = createContext5({});
3981
+ import { Fragment as Fragment3, jsx as jsx30 } from "react/jsx-runtime";
3982
+ var ThreadConfigContext = createContext6({});
3917
3983
  var useThreadConfig = () => {
3918
- return useContext5(ThreadConfigContext);
3984
+ return useContext6(ThreadConfigContext);
3919
3985
  };
3920
3986
  var ThreadConfigProvider = ({
3921
3987
  children,
3922
3988
  config
3923
3989
  }) => {
3924
3990
  const assistant = useAssistantContext({ optional: true });
3925
- const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */ jsx29(ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ jsx29(Fragment3, { children });
3991
+ const configProvider = config && Object.keys(config ?? {}).length > 0 ? /* @__PURE__ */ jsx30(ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ jsx30(Fragment3, { children });
3926
3992
  if (!config?.runtime) return configProvider;
3927
3993
  if (assistant) {
3928
3994
  throw new Error(
3929
3995
  "You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
3930
3996
  );
3931
3997
  }
3932
- return /* @__PURE__ */ jsx29(AssistantRuntimeProvider, { runtime: config.runtime, children: configProvider });
3998
+ return /* @__PURE__ */ jsx30(AssistantRuntimeProvider, { runtime: config.runtime, children: configProvider });
3933
3999
  };
3934
4000
  ThreadConfigProvider.displayName = "ThreadConfigProvider";
3935
4001
 
3936
4002
  // src/ui/assistant-action-bar.tsx
3937
- import { forwardRef as forwardRef18 } from "react";
4003
+ import { forwardRef as forwardRef19 } from "react";
3938
4004
  import { CheckIcon, CopyIcon, RefreshCwIcon } from "lucide-react";
3939
- import { Fragment as Fragment4, jsx as jsx30, jsxs as jsxs5 } from "react/jsx-runtime";
4005
+ import { Fragment as Fragment4, jsx as jsx31, jsxs as jsxs5 } from "react/jsx-runtime";
3940
4006
  var useAllowCopy = () => {
3941
4007
  const { assistantMessage: { allowCopy = true } = {} } = useThreadConfig();
3942
4008
  const { useThreadActions } = useThreadContext();
@@ -3960,8 +4026,8 @@ var AssistantActionBar = () => {
3960
4026
  autohide: "not-last",
3961
4027
  autohideFloat: "single-branch",
3962
4028
  children: [
3963
- /* @__PURE__ */ jsx30(AssistantActionBarCopy, {}),
3964
- /* @__PURE__ */ jsx30(AssistantActionBarReload, {})
4029
+ /* @__PURE__ */ jsx31(AssistantActionBarCopy, {}),
4030
+ /* @__PURE__ */ jsx31(AssistantActionBarReload, {})
3965
4031
  ]
3966
4032
  }
3967
4033
  );
@@ -3971,7 +4037,7 @@ var AssistantActionBarRoot = withDefaults(actionBar_exports.Root, {
3971
4037
  className: "aui-assistant-action-bar-root"
3972
4038
  });
3973
4039
  AssistantActionBarRoot.displayName = "AssistantActionBarRoot";
3974
- var AssistantActionBarCopy = forwardRef18((props, ref) => {
4040
+ var AssistantActionBarCopy = forwardRef19((props, ref) => {
3975
4041
  const {
3976
4042
  strings: {
3977
4043
  assistantMessage: { reload: { tooltip = "Copy" } = {} } = {}
@@ -3979,13 +4045,13 @@ var AssistantActionBarCopy = forwardRef18((props, ref) => {
3979
4045
  } = useThreadConfig();
3980
4046
  const allowCopy = useAllowCopy();
3981
4047
  if (!allowCopy) return null;
3982
- return /* @__PURE__ */ jsx30(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ jsx30(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsxs5(Fragment4, { children: [
3983
- /* @__PURE__ */ jsx30(message_exports.If, { copied: true, children: /* @__PURE__ */ jsx30(CheckIcon, {}) }),
3984
- /* @__PURE__ */ jsx30(message_exports.If, { copied: false, children: /* @__PURE__ */ jsx30(CopyIcon, {}) })
4048
+ return /* @__PURE__ */ jsx31(actionBar_exports.Copy, { asChild: true, children: /* @__PURE__ */ jsx31(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsxs5(Fragment4, { children: [
4049
+ /* @__PURE__ */ jsx31(message_exports.If, { copied: true, children: /* @__PURE__ */ jsx31(CheckIcon, {}) }),
4050
+ /* @__PURE__ */ jsx31(message_exports.If, { copied: false, children: /* @__PURE__ */ jsx31(CopyIcon, {}) })
3985
4051
  ] }) }) });
3986
4052
  });
3987
4053
  AssistantActionBarCopy.displayName = "AssistantActionBarCopy";
3988
- var AssistantActionBarReload = forwardRef18((props, ref) => {
4054
+ var AssistantActionBarReload = forwardRef19((props, ref) => {
3989
4055
  const {
3990
4056
  strings: {
3991
4057
  assistantMessage: { reload: { tooltip = "Refresh" } = {} } = {}
@@ -3993,7 +4059,7 @@ var AssistantActionBarReload = forwardRef18((props, ref) => {
3993
4059
  } = useThreadConfig();
3994
4060
  const allowReload = useAllowReload();
3995
4061
  if (!allowReload) return null;
3996
- return /* @__PURE__ */ jsx30(actionBar_exports.Reload, { asChild: true, children: /* @__PURE__ */ jsx30(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ jsx30(RefreshCwIcon, {}) }) });
4062
+ return /* @__PURE__ */ jsx31(actionBar_exports.Reload, { asChild: true, children: /* @__PURE__ */ jsx31(TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ jsx31(RefreshCwIcon, {}) }) });
3997
4063
  });
3998
4064
  AssistantActionBarReload.displayName = "AssistantActionBarReload";
3999
4065
  var exports = {
@@ -4007,12 +4073,12 @@ var assistant_action_bar_default = Object.assign(
4007
4073
  );
4008
4074
 
4009
4075
  // src/ui/assistant-message.tsx
4010
- import { forwardRef as forwardRef20 } from "react";
4076
+ import { forwardRef as forwardRef21 } from "react";
4011
4077
 
4012
4078
  // src/ui/branch-picker.tsx
4013
- import { forwardRef as forwardRef19 } from "react";
4079
+ import { forwardRef as forwardRef20 } from "react";
4014
4080
  import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
4015
- import { jsx as jsx31, jsxs as jsxs6 } from "react/jsx-runtime";
4081
+ import { jsx as jsx32, jsxs as jsxs6 } from "react/jsx-runtime";
4016
4082
  var useAllowBranchPicker = () => {
4017
4083
  const { branchPicker: { allowBranchPicker = true } = {} } = useThreadConfig();
4018
4084
  const { useThreadActions } = useThreadContext();
@@ -4023,9 +4089,9 @@ var BranchPicker = () => {
4023
4089
  const allowBranchPicker = useAllowBranchPicker();
4024
4090
  if (!allowBranchPicker) return null;
4025
4091
  return /* @__PURE__ */ jsxs6(BranchPickerRoot, { hideWhenSingleBranch: true, children: [
4026
- /* @__PURE__ */ jsx31(BranchPickerPrevious2, {}),
4027
- /* @__PURE__ */ jsx31(BranchPickerState, {}),
4028
- /* @__PURE__ */ jsx31(BranchPickerNext, {})
4092
+ /* @__PURE__ */ jsx32(BranchPickerPrevious2, {}),
4093
+ /* @__PURE__ */ jsx32(BranchPickerState, {}),
4094
+ /* @__PURE__ */ jsx32(BranchPickerNext, {})
4029
4095
  ] });
4030
4096
  };
4031
4097
  BranchPicker.displayName = "BranchPicker";
@@ -4033,31 +4099,31 @@ var BranchPickerRoot = withDefaults(branchPicker_exports.Root, {
4033
4099
  className: "aui-branch-picker-root"
4034
4100
  });
4035
4101
  BranchPickerRoot.displayName = "BranchPickerRoot";
4036
- var BranchPickerPrevious2 = forwardRef19((props, ref) => {
4102
+ var BranchPickerPrevious2 = forwardRef20((props, ref) => {
4037
4103
  const {
4038
4104
  strings: {
4039
4105
  branchPicker: { previous: { tooltip = "Previous" } = {} } = {}
4040
4106
  } = {}
4041
4107
  } = useThreadConfig();
4042
- return /* @__PURE__ */ jsx31(branchPicker_exports.Previous, { asChild: true, children: /* @__PURE__ */ jsx31(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx31(ChevronLeftIcon, {}) }) });
4108
+ return /* @__PURE__ */ jsx32(branchPicker_exports.Previous, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx32(ChevronLeftIcon, {}) }) });
4043
4109
  });
4044
4110
  BranchPickerPrevious2.displayName = "BranchPickerPrevious";
4045
4111
  var BranchPickerStateWrapper = withDefaults("span", {
4046
4112
  className: "aui-branch-picker-state"
4047
4113
  });
4048
- var BranchPickerState = forwardRef19((props, ref) => {
4114
+ var BranchPickerState = forwardRef20((props, ref) => {
4049
4115
  return /* @__PURE__ */ jsxs6(BranchPickerStateWrapper, { ...props, ref, children: [
4050
- /* @__PURE__ */ jsx31(branchPicker_exports.Number, {}),
4116
+ /* @__PURE__ */ jsx32(branchPicker_exports.Number, {}),
4051
4117
  " / ",
4052
- /* @__PURE__ */ jsx31(branchPicker_exports.Count, {})
4118
+ /* @__PURE__ */ jsx32(branchPicker_exports.Count, {})
4053
4119
  ] });
4054
4120
  });
4055
4121
  BranchPickerState.displayName = "BranchPickerState";
4056
- var BranchPickerNext = forwardRef19((props, ref) => {
4122
+ var BranchPickerNext = forwardRef20((props, ref) => {
4057
4123
  const {
4058
4124
  strings: { branchPicker: { next: { tooltip = "Next" } = {} } = {} } = {}
4059
4125
  } = useThreadConfig();
4060
- return /* @__PURE__ */ jsx31(branchPicker_exports.Next, { asChild: true, children: /* @__PURE__ */ jsx31(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx31(ChevronRightIcon, {}) }) });
4126
+ return /* @__PURE__ */ jsx32(branchPicker_exports.Next, { asChild: true, children: /* @__PURE__ */ jsx32(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx32(ChevronRightIcon, {}) }) });
4061
4127
  });
4062
4128
  BranchPickerNext.displayName = "BranchPickerNext";
4063
4129
  var exports2 = {
@@ -4069,12 +4135,12 @@ var branch_picker_default = Object.assign(BranchPicker, exports2);
4069
4135
 
4070
4136
  // src/ui/base/avatar.tsx
4071
4137
  import * as AvatarPrimitive from "@radix-ui/react-avatar";
4072
- import { jsx as jsx32, jsxs as jsxs7 } from "react/jsx-runtime";
4138
+ import { jsx as jsx33, jsxs as jsxs7 } from "react/jsx-runtime";
4073
4139
  var Avatar = ({ src, alt, fallback }) => {
4074
4140
  if (src == null && fallback == null) return null;
4075
4141
  return /* @__PURE__ */ jsxs7(AvatarRoot, { children: [
4076
- src != null && /* @__PURE__ */ jsx32(AvatarImage, { src, alt }),
4077
- fallback != null && /* @__PURE__ */ jsx32(AvatarFallback, { children: fallback })
4142
+ src != null && /* @__PURE__ */ jsx33(AvatarImage, { src, alt }),
4143
+ fallback != null && /* @__PURE__ */ jsx33(AvatarFallback, { children: fallback })
4078
4144
  ] });
4079
4145
  };
4080
4146
  Avatar.displayName = "Avatar";
@@ -4093,36 +4159,37 @@ AvatarFallback.displayName = "AvatarFallback";
4093
4159
 
4094
4160
  // src/ui/content-part.tsx
4095
4161
  import classNames2 from "classnames";
4096
- import { jsx as jsx33 } from "react/jsx-runtime";
4097
- var Text = ({ status }) => {
4098
- return /* @__PURE__ */ jsx33(
4099
- "p",
4162
+ import { jsx as jsx34 } from "react/jsx-runtime";
4163
+ var Text = () => {
4164
+ const status = useSmoothStatus();
4165
+ return /* @__PURE__ */ jsx34(
4166
+ contentPart_exports.Text,
4100
4167
  {
4101
4168
  className: classNames2(
4102
4169
  "aui-text",
4103
- status.type === "running" && "aui-text-in-progress"
4170
+ status.type === "running" && "aui-text-running"
4104
4171
  ),
4105
- children: /* @__PURE__ */ jsx33(contentPart_exports.Text, {})
4172
+ component: "p"
4106
4173
  }
4107
4174
  );
4108
4175
  };
4109
- var exports3 = { Text };
4176
+ var exports3 = { Text: withSmoothContextProvider(Text) };
4110
4177
  var content_part_default = exports3;
4111
4178
 
4112
4179
  // src/ui/assistant-message.tsx
4113
- import { jsx as jsx34, jsxs as jsxs8 } from "react/jsx-runtime";
4180
+ import { jsx as jsx35, jsxs as jsxs8 } from "react/jsx-runtime";
4114
4181
  var AssistantMessage = () => {
4115
4182
  return /* @__PURE__ */ jsxs8(AssistantMessageRoot, { children: [
4116
- /* @__PURE__ */ jsx34(AssistantMessageAvatar, {}),
4117
- /* @__PURE__ */ jsx34(AssistantMessageContent, {}),
4118
- /* @__PURE__ */ jsx34(branch_picker_default, {}),
4119
- /* @__PURE__ */ jsx34(assistant_action_bar_default, {})
4183
+ /* @__PURE__ */ jsx35(AssistantMessageAvatar, {}),
4184
+ /* @__PURE__ */ jsx35(AssistantMessageContent, {}),
4185
+ /* @__PURE__ */ jsx35(branch_picker_default, {}),
4186
+ /* @__PURE__ */ jsx35(assistant_action_bar_default, {})
4120
4187
  ] });
4121
4188
  };
4122
4189
  AssistantMessage.displayName = "AssistantMessage";
4123
4190
  var AssistantMessageAvatar = () => {
4124
4191
  const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
4125
- return /* @__PURE__ */ jsx34(Avatar, { ...avatar });
4192
+ return /* @__PURE__ */ jsx35(Avatar, { ...avatar });
4126
4193
  };
4127
4194
  var AssistantMessageRoot = withDefaults(message_exports.Root, {
4128
4195
  className: "aui-assistant-message-root"
@@ -4131,9 +4198,9 @@ AssistantMessageRoot.displayName = "AssistantMessageRoot";
4131
4198
  var AssistantMessageContentWrapper = withDefaults("div", {
4132
4199
  className: "aui-assistant-message-content"
4133
4200
  });
4134
- var AssistantMessageContent = forwardRef20(({ components: componentsProp, ...rest }, ref) => {
4201
+ var AssistantMessageContent = forwardRef21(({ components: componentsProp, ...rest }, ref) => {
4135
4202
  const { assistantMessage: { components = {} } = {} } = useThreadConfig();
4136
- return /* @__PURE__ */ jsx34(AssistantMessageContentWrapper, { ...rest, ref, children: /* @__PURE__ */ jsx34(
4203
+ return /* @__PURE__ */ jsx35(AssistantMessageContentWrapper, { ...rest, ref, children: /* @__PURE__ */ jsx35(
4137
4204
  message_exports.Content,
4138
4205
  {
4139
4206
  components: {
@@ -4155,38 +4222,38 @@ var assistant_message_default = Object.assign(
4155
4222
  );
4156
4223
 
4157
4224
  // src/ui/assistant-modal.tsx
4158
- import { forwardRef as forwardRef27 } from "react";
4225
+ import { forwardRef as forwardRef28 } from "react";
4159
4226
  import { BotIcon, ChevronDownIcon } from "lucide-react";
4160
4227
 
4161
4228
  // src/ui/thread.tsx
4162
- import { forwardRef as forwardRef26 } from "react";
4229
+ import { forwardRef as forwardRef27 } from "react";
4163
4230
  import { ArrowDownIcon } from "lucide-react";
4164
4231
 
4165
4232
  // src/ui/composer.tsx
4166
- import { forwardRef as forwardRef21 } from "react";
4233
+ import { forwardRef as forwardRef22 } from "react";
4167
4234
  import { SendHorizontalIcon } from "lucide-react";
4168
4235
 
4169
4236
  // src/ui/base/CircleStopIcon.tsx
4170
- import { jsx as jsx35 } from "react/jsx-runtime";
4237
+ import { jsx as jsx36 } from "react/jsx-runtime";
4171
4238
  var CircleStopIcon = () => {
4172
- return /* @__PURE__ */ jsx35(
4239
+ return /* @__PURE__ */ jsx36(
4173
4240
  "svg",
4174
4241
  {
4175
4242
  xmlns: "http://www.w3.org/2000/svg",
4176
4243
  viewBox: "0 0 16 16",
4177
4244
  fill: "currentColor",
4178
- children: /* @__PURE__ */ jsx35("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" })
4245
+ children: /* @__PURE__ */ jsx36("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" })
4179
4246
  }
4180
4247
  );
4181
4248
  };
4182
4249
  CircleStopIcon.displayName = "CircleStopIcon";
4183
4250
 
4184
4251
  // src/ui/composer.tsx
4185
- import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs9 } from "react/jsx-runtime";
4252
+ import { Fragment as Fragment5, jsx as jsx37, jsxs as jsxs9 } from "react/jsx-runtime";
4186
4253
  var Composer = () => {
4187
4254
  return /* @__PURE__ */ jsxs9(ComposerRoot, { children: [
4188
- /* @__PURE__ */ jsx36(ComposerInput, { autoFocus: true }),
4189
- /* @__PURE__ */ jsx36(ComposerAction, {})
4255
+ /* @__PURE__ */ jsx37(ComposerInput, { autoFocus: true }),
4256
+ /* @__PURE__ */ jsx37(ComposerAction, {})
4190
4257
  ] });
4191
4258
  };
4192
4259
  Composer.displayName = "Composer";
@@ -4199,14 +4266,14 @@ var ComposerInputStyled = withDefaults(composer_exports.Input, {
4199
4266
  autoFocus: true,
4200
4267
  className: "aui-composer-input"
4201
4268
  });
4202
- var ComposerInput = forwardRef21(
4269
+ var ComposerInput = forwardRef22(
4203
4270
  (props, ref) => {
4204
4271
  const {
4205
4272
  strings: {
4206
4273
  composer: { input: { placeholder = "Write a message..." } = {} } = {}
4207
4274
  } = {}
4208
4275
  } = useThreadConfig();
4209
- return /* @__PURE__ */ jsx36(ComposerInputStyled, { placeholder, ...props, ref });
4276
+ return /* @__PURE__ */ jsx37(ComposerInputStyled, { placeholder, ...props, ref });
4210
4277
  }
4211
4278
  );
4212
4279
  ComposerInput.displayName = "ComposerInput";
@@ -4217,10 +4284,10 @@ var useAllowCancel = () => {
4217
4284
  };
4218
4285
  var ComposerAction = () => {
4219
4286
  const allowCancel = useAllowCancel();
4220
- if (!allowCancel) return /* @__PURE__ */ jsx36(ComposerSend, {});
4287
+ if (!allowCancel) return /* @__PURE__ */ jsx37(ComposerSend, {});
4221
4288
  return /* @__PURE__ */ jsxs9(Fragment5, { children: [
4222
- /* @__PURE__ */ jsx36(thread_exports.If, { running: false, children: /* @__PURE__ */ jsx36(ComposerSend, {}) }),
4223
- /* @__PURE__ */ jsx36(thread_exports.If, { running: true, children: /* @__PURE__ */ jsx36(ComposerCancel, {}) })
4289
+ /* @__PURE__ */ jsx37(thread_exports.If, { running: false, children: /* @__PURE__ */ jsx37(ComposerSend, {}) }),
4290
+ /* @__PURE__ */ jsx37(thread_exports.If, { running: true, children: /* @__PURE__ */ jsx37(ComposerCancel, {}) })
4224
4291
  ] });
4225
4292
  };
4226
4293
  ComposerAction.displayName = "ComposerAction";
@@ -4228,22 +4295,22 @@ var ComposerSendButton = withDefaults(TooltipIconButton, {
4228
4295
  variant: "default",
4229
4296
  className: "aui-composer-send"
4230
4297
  });
4231
- var ComposerSend = forwardRef21((props, ref) => {
4298
+ var ComposerSend = forwardRef22((props, ref) => {
4232
4299
  const {
4233
4300
  strings: { composer: { send: { tooltip = "Send" } = {} } = {} } = {}
4234
4301
  } = useThreadConfig();
4235
- return /* @__PURE__ */ jsx36(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx36(ComposerSendButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx36(SendHorizontalIcon, {}) }) });
4302
+ return /* @__PURE__ */ jsx37(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx37(ComposerSendButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx37(SendHorizontalIcon, {}) }) });
4236
4303
  });
4237
4304
  ComposerSend.displayName = "ComposerSend";
4238
4305
  var ComposerCancelButton = withDefaults(TooltipIconButton, {
4239
4306
  variant: "default",
4240
4307
  className: "aui-composer-cancel"
4241
4308
  });
4242
- var ComposerCancel = forwardRef21((props, ref) => {
4309
+ var ComposerCancel = forwardRef22((props, ref) => {
4243
4310
  const {
4244
4311
  strings: { composer: { cancel: { tooltip = "Cancel" } = {} } = {} } = {}
4245
4312
  } = useThreadConfig();
4246
- return /* @__PURE__ */ jsx36(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx36(ComposerCancelButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx36(CircleStopIcon, {}) }) });
4313
+ return /* @__PURE__ */ jsx37(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx37(ComposerCancelButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx37(CircleStopIcon, {}) }) });
4247
4314
  });
4248
4315
  ComposerCancel.displayName = "ComposerCancel";
4249
4316
  var exports5 = {
@@ -4256,15 +4323,15 @@ var exports5 = {
4256
4323
  var composer_default = Object.assign(Composer, exports5);
4257
4324
 
4258
4325
  // src/ui/thread-welcome.tsx
4259
- import { forwardRef as forwardRef22 } from "react";
4260
- import { jsx as jsx37, jsxs as jsxs10 } from "react/jsx-runtime";
4326
+ import { forwardRef as forwardRef23 } from "react";
4327
+ import { jsx as jsx38, jsxs as jsxs10 } from "react/jsx-runtime";
4261
4328
  var ThreadWelcome = () => {
4262
4329
  return /* @__PURE__ */ jsxs10(ThreadWelcomeRoot, { children: [
4263
4330
  /* @__PURE__ */ jsxs10(ThreadWelcomeCenter, { children: [
4264
- /* @__PURE__ */ jsx37(ThreadWelcomeAvatar, {}),
4265
- /* @__PURE__ */ jsx37(ThreadWelcomeMessage, {})
4331
+ /* @__PURE__ */ jsx38(ThreadWelcomeAvatar, {}),
4332
+ /* @__PURE__ */ jsx38(ThreadWelcomeMessage, {})
4266
4333
  ] }),
4267
- /* @__PURE__ */ jsx37(ThreadWelcomeSuggestions, {})
4334
+ /* @__PURE__ */ jsx38(ThreadWelcomeSuggestions, {})
4268
4335
  ] });
4269
4336
  };
4270
4337
  ThreadWelcome.displayName = "ThreadWelcome";
@@ -4274,22 +4341,22 @@ var ThreadWelcomeRootStyled = withDefaults("div", {
4274
4341
  var ThreadWelcomeCenter = withDefaults("div", {
4275
4342
  className: "aui-thread-welcome-center"
4276
4343
  });
4277
- var ThreadWelcomeRoot = forwardRef22(
4344
+ var ThreadWelcomeRoot = forwardRef23(
4278
4345
  (props, ref) => {
4279
- return /* @__PURE__ */ jsx37(thread_exports.Empty, { children: /* @__PURE__ */ jsx37(ThreadWelcomeRootStyled, { ...props, ref }) });
4346
+ return /* @__PURE__ */ jsx38(thread_exports.Empty, { children: /* @__PURE__ */ jsx38(ThreadWelcomeRootStyled, { ...props, ref }) });
4280
4347
  }
4281
4348
  );
4282
4349
  ThreadWelcomeRoot.displayName = "ThreadWelcomeRoot";
4283
4350
  var ThreadWelcomeAvatar = () => {
4284
4351
  const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
4285
- return /* @__PURE__ */ jsx37(Avatar, { ...avatar });
4352
+ return /* @__PURE__ */ jsx38(Avatar, { ...avatar });
4286
4353
  };
4287
4354
  var ThreadWelcomeMessageStyled = withDefaults("p", {
4288
4355
  className: "aui-thread-welcome-message"
4289
4356
  });
4290
- var ThreadWelcomeMessage = forwardRef22(({ message: messageProp, ...rest }, ref) => {
4357
+ var ThreadWelcomeMessage = forwardRef23(({ message: messageProp, ...rest }, ref) => {
4291
4358
  const { welcome: { message = "How can I help you today?" } = {} } = useThreadConfig();
4292
- return /* @__PURE__ */ jsx37(ThreadWelcomeMessageStyled, { ...rest, ref, children: messageProp ?? message });
4359
+ return /* @__PURE__ */ jsx38(ThreadWelcomeMessageStyled, { ...rest, ref, children: messageProp ?? message });
4293
4360
  });
4294
4361
  ThreadWelcomeMessage.displayName = "ThreadWelcomeMessage";
4295
4362
  var ThreadWelcomeSuggestionContainer = withDefaults("div", {
@@ -4301,21 +4368,21 @@ var ThreadWelcomeSuggestionStyled = withDefaults(thread_exports.Suggestion, {
4301
4368
  var ThreadWelcomeSuggestion = ({
4302
4369
  suggestion: { text, prompt }
4303
4370
  }) => {
4304
- return /* @__PURE__ */ jsx37(
4371
+ return /* @__PURE__ */ jsx38(
4305
4372
  ThreadWelcomeSuggestionStyled,
4306
4373
  {
4307
4374
  prompt,
4308
4375
  method: "replace",
4309
4376
  autoSend: true,
4310
- children: /* @__PURE__ */ jsx37("span", { className: "aui-thread-welcome-suggestion-text", children: text ?? prompt })
4377
+ children: /* @__PURE__ */ jsx38("span", { className: "aui-thread-welcome-suggestion-text", children: text ?? prompt })
4311
4378
  }
4312
4379
  );
4313
4380
  };
4314
4381
  var ThreadWelcomeSuggestions = () => {
4315
4382
  const { welcome: { suggestions } = {} } = useThreadConfig();
4316
- return /* @__PURE__ */ jsx37(ThreadWelcomeSuggestionContainer, { children: suggestions?.map((suggestion, idx) => {
4383
+ return /* @__PURE__ */ jsx38(ThreadWelcomeSuggestionContainer, { children: suggestions?.map((suggestion, idx) => {
4317
4384
  const key = `${suggestion.prompt}-${idx}`;
4318
- return /* @__PURE__ */ jsx37(ThreadWelcomeSuggestion, { suggestion }, key);
4385
+ return /* @__PURE__ */ jsx38(ThreadWelcomeSuggestion, { suggestion }, key);
4319
4386
  }) });
4320
4387
  };
4321
4388
  ThreadWelcomeSuggestions.displayName = "ThreadWelcomeSuggestions";
@@ -4330,12 +4397,12 @@ var exports6 = {
4330
4397
  var thread_welcome_default = Object.assign(ThreadWelcome, exports6);
4331
4398
 
4332
4399
  // src/ui/user-message.tsx
4333
- import { forwardRef as forwardRef24 } from "react";
4400
+ import { forwardRef as forwardRef25 } from "react";
4334
4401
 
4335
4402
  // src/ui/user-action-bar.tsx
4336
- import { forwardRef as forwardRef23 } from "react";
4403
+ import { forwardRef as forwardRef24 } from "react";
4337
4404
  import { PencilIcon } from "lucide-react";
4338
- import { jsx as jsx38 } from "react/jsx-runtime";
4405
+ import { jsx as jsx39 } from "react/jsx-runtime";
4339
4406
  var useAllowEdit = () => {
4340
4407
  const { userMessage: { allowEdit = true } = {} } = useThreadConfig();
4341
4408
  const { useThreadActions } = useThreadContext();
@@ -4345,20 +4412,20 @@ var useAllowEdit = () => {
4345
4412
  var UserActionBar = () => {
4346
4413
  const allowEdit = useAllowEdit();
4347
4414
  if (!allowEdit) return null;
4348
- return /* @__PURE__ */ jsx38(UserActionBarRoot, { hideWhenRunning: true, autohide: "not-last", children: /* @__PURE__ */ jsx38(UserActionBarEdit, {}) });
4415
+ return /* @__PURE__ */ jsx39(UserActionBarRoot, { hideWhenRunning: true, autohide: "not-last", children: /* @__PURE__ */ jsx39(UserActionBarEdit, {}) });
4349
4416
  };
4350
4417
  UserActionBar.displayName = "UserActionBar";
4351
4418
  var UserActionBarRoot = withDefaults(actionBar_exports.Root, {
4352
4419
  className: "aui-user-action-bar-root"
4353
4420
  });
4354
4421
  UserActionBarRoot.displayName = "UserActionBarRoot";
4355
- var UserActionBarEdit = forwardRef23((props, ref) => {
4422
+ var UserActionBarEdit = forwardRef24((props, ref) => {
4356
4423
  const {
4357
4424
  strings: { userMessage: { edit: { tooltip = "Edit" } = {} } = {} } = {}
4358
4425
  } = useThreadConfig();
4359
4426
  const allowEdit = useAllowEdit();
4360
4427
  if (!allowEdit) return null;
4361
- return /* @__PURE__ */ jsx38(actionBar_exports.Edit, { asChild: true, children: /* @__PURE__ */ jsx38(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx38(PencilIcon, {}) }) });
4428
+ return /* @__PURE__ */ jsx39(actionBar_exports.Edit, { asChild: true, children: /* @__PURE__ */ jsx39(TooltipIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx39(PencilIcon, {}) }) });
4362
4429
  });
4363
4430
  UserActionBarEdit.displayName = "UserActionBarEdit";
4364
4431
  var exports7 = {
@@ -4368,12 +4435,12 @@ var exports7 = {
4368
4435
  var user_action_bar_default = Object.assign(UserActionBar, exports7);
4369
4436
 
4370
4437
  // src/ui/user-message.tsx
4371
- import { jsx as jsx39, jsxs as jsxs11 } from "react/jsx-runtime";
4438
+ import { jsx as jsx40, jsxs as jsxs11 } from "react/jsx-runtime";
4372
4439
  var UserMessage = () => {
4373
4440
  return /* @__PURE__ */ jsxs11(UserMessageRoot, { children: [
4374
- /* @__PURE__ */ jsx39(user_action_bar_default, {}),
4375
- /* @__PURE__ */ jsx39(UserMessageContent, {}),
4376
- /* @__PURE__ */ jsx39(branch_picker_default, {})
4441
+ /* @__PURE__ */ jsx40(user_action_bar_default, {}),
4442
+ /* @__PURE__ */ jsx40(UserMessageContent, {}),
4443
+ /* @__PURE__ */ jsx40(branch_picker_default, {})
4377
4444
  ] });
4378
4445
  };
4379
4446
  UserMessage.displayName = "UserMessage";
@@ -4384,9 +4451,9 @@ UserMessageRoot.displayName = "UserMessageRoot";
4384
4451
  var UserMessageContentWrapper = withDefaults("div", {
4385
4452
  className: "aui-user-message-content"
4386
4453
  });
4387
- var UserMessageContent = forwardRef24(
4454
+ var UserMessageContent = forwardRef25(
4388
4455
  ({ components, ...props }, ref) => {
4389
- return /* @__PURE__ */ jsx39(UserMessageContentWrapper, { ...props, ref, children: /* @__PURE__ */ jsx39(
4456
+ return /* @__PURE__ */ jsx40(UserMessageContentWrapper, { ...props, ref, children: /* @__PURE__ */ jsx40(
4390
4457
  message_exports.Content,
4391
4458
  {
4392
4459
  components: {
@@ -4405,14 +4472,14 @@ var exports8 = {
4405
4472
  var user_message_default = Object.assign(UserMessage, exports8);
4406
4473
 
4407
4474
  // src/ui/edit-composer.tsx
4408
- import { forwardRef as forwardRef25 } from "react";
4409
- import { jsx as jsx40, jsxs as jsxs12 } from "react/jsx-runtime";
4475
+ import { forwardRef as forwardRef26 } from "react";
4476
+ import { jsx as jsx41, jsxs as jsxs12 } from "react/jsx-runtime";
4410
4477
  var EditComposer = () => {
4411
4478
  return /* @__PURE__ */ jsxs12(EditComposerRoot, { children: [
4412
- /* @__PURE__ */ jsx40(EditComposerInput, {}),
4479
+ /* @__PURE__ */ jsx41(EditComposerInput, {}),
4413
4480
  /* @__PURE__ */ jsxs12(EditComposerFooter, { children: [
4414
- /* @__PURE__ */ jsx40(EditComposerCancel, {}),
4415
- /* @__PURE__ */ jsx40(EditComposerSend, {})
4481
+ /* @__PURE__ */ jsx41(EditComposerCancel, {}),
4482
+ /* @__PURE__ */ jsx41(EditComposerSend, {})
4416
4483
  ] })
4417
4484
  ] });
4418
4485
  };
@@ -4429,23 +4496,23 @@ var EditComposerFooter = withDefaults("div", {
4429
4496
  className: "aui-edit-composer-footer"
4430
4497
  });
4431
4498
  EditComposerFooter.displayName = "EditComposerFooter";
4432
- var EditComposerCancel = forwardRef25(
4499
+ var EditComposerCancel = forwardRef26(
4433
4500
  (props, ref) => {
4434
4501
  const {
4435
4502
  strings: {
4436
4503
  editComposer: { cancel: { label = "Cancel" } = {} } = {}
4437
4504
  } = {}
4438
4505
  } = useThreadConfig();
4439
- return /* @__PURE__ */ jsx40(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx40(Button, { variant: "ghost", ...props, ref, children: props.children ?? label }) });
4506
+ return /* @__PURE__ */ jsx41(composer_exports.Cancel, { asChild: true, children: /* @__PURE__ */ jsx41(Button, { variant: "ghost", ...props, ref, children: props.children ?? label }) });
4440
4507
  }
4441
4508
  );
4442
4509
  EditComposerCancel.displayName = "EditComposerCancel";
4443
- var EditComposerSend = forwardRef25(
4510
+ var EditComposerSend = forwardRef26(
4444
4511
  (props, ref) => {
4445
4512
  const {
4446
4513
  strings: { editComposer: { send: { label = "Send" } = {} } = {} } = {}
4447
4514
  } = useThreadConfig();
4448
- return /* @__PURE__ */ jsx40(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx40(Button, { ...props, ref, children: props.children ?? label }) });
4515
+ return /* @__PURE__ */ jsx41(composer_exports.Send, { asChild: true, children: /* @__PURE__ */ jsx41(Button, { ...props, ref, children: props.children ?? label }) });
4449
4516
  }
4450
4517
  );
4451
4518
  EditComposerSend.displayName = "EditComposerSend";
@@ -4459,23 +4526,23 @@ var exports9 = {
4459
4526
  var edit_composer_default = Object.assign(EditComposer, exports9);
4460
4527
 
4461
4528
  // src/ui/thread.tsx
4462
- import { jsx as jsx41, jsxs as jsxs13 } from "react/jsx-runtime";
4529
+ import { jsx as jsx42, jsxs as jsxs13 } from "react/jsx-runtime";
4463
4530
  var Thread = (config) => {
4464
- return /* @__PURE__ */ jsx41(ThreadRoot, { config, children: /* @__PURE__ */ jsxs13(ThreadViewport, { children: [
4465
- /* @__PURE__ */ jsx41(thread_welcome_default, {}),
4466
- /* @__PURE__ */ jsx41(ThreadMessages, {}),
4531
+ return /* @__PURE__ */ jsx42(ThreadRoot, { config, children: /* @__PURE__ */ jsxs13(ThreadViewport, { children: [
4532
+ /* @__PURE__ */ jsx42(thread_welcome_default, {}),
4533
+ /* @__PURE__ */ jsx42(ThreadMessages, {}),
4467
4534
  /* @__PURE__ */ jsxs13(ThreadViewportFooter, { children: [
4468
- /* @__PURE__ */ jsx41(ThreadScrollToBottom, {}),
4469
- /* @__PURE__ */ jsx41(composer_default, {})
4535
+ /* @__PURE__ */ jsx42(ThreadScrollToBottom, {}),
4536
+ /* @__PURE__ */ jsx42(composer_default, {})
4470
4537
  ] })
4471
4538
  ] }) });
4472
4539
  };
4473
4540
  var ThreadRootStyled = withDefaults(thread_exports.Root, {
4474
4541
  className: "aui-root aui-thread-root"
4475
4542
  });
4476
- var ThreadRoot = forwardRef26(
4543
+ var ThreadRoot = forwardRef27(
4477
4544
  ({ config, ...props }, ref) => {
4478
- return /* @__PURE__ */ jsx41(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx41(ThreadRootStyled, { ...props, ref }) });
4545
+ return /* @__PURE__ */ jsx42(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx42(ThreadRootStyled, { ...props, ref }) });
4479
4546
  }
4480
4547
  );
4481
4548
  ThreadRoot.displayName = "ThreadRoot";
@@ -4489,7 +4556,7 @@ var ThreadViewportFooter = withDefaults("div", {
4489
4556
  ThreadViewportFooter.displayName = "ThreadViewportFooter";
4490
4557
  var SystemMessage = () => null;
4491
4558
  var ThreadMessages = ({ components, ...rest }) => {
4492
- return /* @__PURE__ */ jsx41(
4559
+ return /* @__PURE__ */ jsx42(
4493
4560
  thread_exports.Messages,
4494
4561
  {
4495
4562
  components: {
@@ -4507,13 +4574,13 @@ var ThreadScrollToBottomIconButton = withDefaults(TooltipIconButton, {
4507
4574
  variant: "outline",
4508
4575
  className: "aui-thread-scroll-to-bottom"
4509
4576
  });
4510
- var ThreadScrollToBottom = forwardRef26((props, ref) => {
4577
+ var ThreadScrollToBottom = forwardRef27((props, ref) => {
4511
4578
  const {
4512
4579
  strings: {
4513
4580
  thread: { scrollToBottom: { tooltip = "Scroll to bottom" } = {} } = {}
4514
4581
  } = {}
4515
4582
  } = useThreadConfig();
4516
- return /* @__PURE__ */ jsx41(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ jsx41(ThreadScrollToBottomIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx41(ArrowDownIcon, {}) }) });
4583
+ return /* @__PURE__ */ jsx42(thread_exports.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ jsx42(ThreadScrollToBottomIconButton, { tooltip, ...props, ref, children: props.children ?? /* @__PURE__ */ jsx42(ArrowDownIcon, {}) }) });
4517
4584
  });
4518
4585
  ThreadScrollToBottom.displayName = "ThreadScrollToBottom";
4519
4586
  var exports10 = {
@@ -4526,20 +4593,20 @@ var exports10 = {
4526
4593
  var thread_default = Object.assign(Thread, exports10);
4527
4594
 
4528
4595
  // src/ui/assistant-modal.tsx
4529
- import { Fragment as Fragment6, jsx as jsx42, jsxs as jsxs14 } from "react/jsx-runtime";
4596
+ import { Fragment as Fragment6, jsx as jsx43, jsxs as jsxs14 } from "react/jsx-runtime";
4530
4597
  var AssistantModal = (config) => {
4531
4598
  return /* @__PURE__ */ jsxs14(AssistantModalRoot, { config, children: [
4532
- /* @__PURE__ */ jsx42(AssistantModalTrigger, {}),
4533
- /* @__PURE__ */ jsx42(AssistantModalContent, { children: /* @__PURE__ */ jsx42(thread_default, {}) })
4599
+ /* @__PURE__ */ jsx43(AssistantModalTrigger, {}),
4600
+ /* @__PURE__ */ jsx43(AssistantModalContent, { children: /* @__PURE__ */ jsx43(thread_default, {}) })
4534
4601
  ] });
4535
4602
  };
4536
4603
  AssistantModal.displayName = "AssistantModal";
4537
4604
  var AssistantModalRoot = ({ config, ...props }) => {
4538
- return /* @__PURE__ */ jsx42(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx42(assistantModal_exports.Root, { ...props }) });
4605
+ return /* @__PURE__ */ jsx43(ThreadConfigProvider, { config, children: /* @__PURE__ */ jsx43(assistantModal_exports.Root, { ...props }) });
4539
4606
  };
4540
4607
  AssistantModalRoot.displayName = "AssistantModalRoot";
4541
- var AssistantModalTrigger = forwardRef27((props, ref) => {
4542
- return /* @__PURE__ */ jsx42(AssistantModalAnchor, { children: /* @__PURE__ */ jsx42(assistantModal_exports.Trigger, { asChild: true, children: /* @__PURE__ */ jsx42(AssistantModalButton, { ...props, ref }) }) });
4608
+ var AssistantModalTrigger = forwardRef28((props, ref) => {
4609
+ return /* @__PURE__ */ jsx43(AssistantModalAnchor, { children: /* @__PURE__ */ jsx43(assistantModal_exports.Trigger, { asChild: true, children: /* @__PURE__ */ jsx43(AssistantModalButton, { ...props, ref }) }) });
4543
4610
  });
4544
4611
  AssistantModalTrigger.displayName = "AssistantModalTrigger";
4545
4612
  var AssistantModalAnchor = withDefaults(assistantModal_exports.Anchor, {
@@ -4550,7 +4617,7 @@ var ModalButtonStyled = withDefaults(TooltipIconButton, {
4550
4617
  variant: "default",
4551
4618
  className: "aui-modal-button"
4552
4619
  });
4553
- var AssistantModalButton = forwardRef27(({ "data-state": state, ...rest }, ref) => {
4620
+ var AssistantModalButton = forwardRef28(({ "data-state": state, ...rest }, ref) => {
4554
4621
  const {
4555
4622
  strings: {
4556
4623
  assistantModal: {
@@ -4564,7 +4631,7 @@ var AssistantModalButton = forwardRef27(({ "data-state": state, ...rest }, ref)
4564
4631
  } = {}
4565
4632
  } = useThreadConfig();
4566
4633
  const tooltip = state === "open" ? openTooltip : closedTooltip;
4567
- return /* @__PURE__ */ jsx42(
4634
+ return /* @__PURE__ */ jsx43(
4568
4635
  ModalButtonStyled,
4569
4636
  {
4570
4637
  side: "left",
@@ -4573,14 +4640,14 @@ var AssistantModalButton = forwardRef27(({ "data-state": state, ...rest }, ref)
4573
4640
  ...rest,
4574
4641
  ref,
4575
4642
  children: rest.children ?? /* @__PURE__ */ jsxs14(Fragment6, { children: [
4576
- /* @__PURE__ */ jsx42(
4643
+ /* @__PURE__ */ jsx43(
4577
4644
  BotIcon,
4578
4645
  {
4579
4646
  "data-state": state,
4580
4647
  className: "aui-modal-button-closed-icon"
4581
4648
  }
4582
4649
  ),
4583
- /* @__PURE__ */ jsx42(
4650
+ /* @__PURE__ */ jsx43(
4584
4651
  ChevronDownIcon,
4585
4652
  {
4586
4653
  "data-state": state,