@assistant-ui/react 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  useContentPartContext,
10
10
  useMessageContext,
11
11
  useThreadContext
12
- } from "./chunk-KIP3YFVM.mjs";
12
+ } from "./chunk-RITM2IUH.mjs";
13
13
 
14
14
  // src/actions/useCopyMessage.tsx
15
15
  import { useCallback } from "react";
@@ -150,9 +150,7 @@ __export(thread_exports, {
150
150
  });
151
151
 
152
152
  // src/primitives/thread/ThreadRoot.tsx
153
- import {
154
- Primitive
155
- } from "@radix-ui/react-primitive";
153
+ import { Primitive } from "@radix-ui/react-primitive";
156
154
  import { forwardRef } from "react";
157
155
  import { jsx } from "react/jsx-runtime";
158
156
  var ThreadRoot = forwardRef(
@@ -160,6 +158,7 @@ var ThreadRoot = forwardRef(
160
158
  return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref });
161
159
  }
162
160
  );
161
+ ThreadRoot.displayName = "ThreadRoot";
163
162
 
164
163
  // src/primitives/thread/ThreadIf.tsx
165
164
  var useThreadIf = (props) => {
@@ -186,18 +185,19 @@ var ThreadEmpty = ({ children }) => {
186
185
  // src/primitives/thread/ThreadViewport.tsx
187
186
  import { composeEventHandlers } from "@radix-ui/primitive";
188
187
  import { useComposedRefs } from "@radix-ui/react-compose-refs";
188
+ import { Primitive as Primitive2 } from "@radix-ui/react-primitive";
189
189
  import {
190
- Primitive as Primitive2
191
- } from "@radix-ui/react-primitive";
192
- import { forwardRef as forwardRef2, useRef } from "react";
190
+ forwardRef as forwardRef2,
191
+ useRef
192
+ } from "react";
193
193
 
194
194
  // src/utils/hooks/useOnResizeContent.tsx
195
195
  import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
196
196
  import { useEffect } from "react";
197
197
  var useOnResizeContent = (ref, callback) => {
198
198
  const callbackRef = useCallbackRef(callback);
199
+ const el = ref.current;
199
200
  useEffect(() => {
200
- const el = ref.current;
201
201
  if (!el) return;
202
202
  const resizeObserver = new ResizeObserver(() => {
203
203
  callbackRef();
@@ -226,7 +226,7 @@ var useOnResizeContent = (ref, callback) => {
226
226
  resizeObserver.disconnect();
227
227
  mutationObserver.disconnect();
228
228
  };
229
- }, [ref.current, callbackRef]);
229
+ }, [el, callbackRef]);
230
230
  };
231
231
 
232
232
  // src/utils/hooks/useOnScrollToBottom.tsx
@@ -295,6 +295,7 @@ var ThreadViewport = forwardRef2(({ autoScroll = true, onScroll, children, ...re
295
295
  }
296
296
  );
297
297
  });
298
+ ThreadViewport.displayName = "ThreadViewport";
298
299
 
299
300
  // src/primitives/thread/ThreadMessages.tsx
300
301
  import { memo } from "react";
@@ -499,9 +500,7 @@ var ThreadMessages = ({ components }) => {
499
500
 
500
501
  // src/primitives/thread/ThreadScrollToBottom.tsx
501
502
  import { composeEventHandlers as composeEventHandlers2 } from "@radix-ui/primitive";
502
- import {
503
- Primitive as Primitive3
504
- } from "@radix-ui/react-primitive";
503
+ import { Primitive as Primitive3 } from "@radix-ui/react-primitive";
505
504
  import { forwardRef as forwardRef3 } from "react";
506
505
  import { jsx as jsx6 } from "react/jsx-runtime";
507
506
  var ThreadScrollToBottom = forwardRef3(({ onClick, ...rest }, ref) => {
@@ -520,12 +519,11 @@ var ThreadScrollToBottom = forwardRef3(({ onClick, ...rest }, ref) => {
520
519
  }
521
520
  );
522
521
  });
522
+ ThreadScrollToBottom.displayName = "ThreadScrollToBottom";
523
523
 
524
524
  // src/primitives/thread/ThreadSuggestion.tsx
525
525
  import { composeEventHandlers as composeEventHandlers3 } from "@radix-ui/primitive";
526
- import {
527
- Primitive as Primitive4
528
- } from "@radix-ui/react-primitive";
526
+ import { Primitive as Primitive4 } from "@radix-ui/react-primitive";
529
527
  import { forwardRef as forwardRef4 } from "react";
530
528
  import { jsx as jsx7 } from "react/jsx-runtime";
531
529
  var ThreadSuggestion = forwardRef4(({ onClick, prompt, method, autoSend: send, ...rest }, ref) => {
@@ -549,6 +547,7 @@ var ThreadSuggestion = forwardRef4(({ onClick, prompt, method, autoSend: send, .
549
547
  }
550
548
  );
551
549
  });
550
+ ThreadSuggestion.displayName = "ThreadSuggestion";
552
551
 
553
552
  // src/primitives/composer/index.ts
554
553
  var composer_exports = {};
@@ -563,10 +562,11 @@ __export(composer_exports, {
563
562
  // src/primitives/composer/ComposerRoot.tsx
564
563
  import { composeEventHandlers as composeEventHandlers4 } from "@radix-ui/primitive";
565
564
  import { useComposedRefs as useComposedRefs2 } from "@radix-ui/react-compose-refs";
565
+ import { Primitive as Primitive5 } from "@radix-ui/react-primitive";
566
566
  import {
567
- Primitive as Primitive5
568
- } from "@radix-ui/react-primitive";
569
- import { forwardRef as forwardRef5, useRef as useRef2 } from "react";
567
+ forwardRef as forwardRef5,
568
+ useRef as useRef2
569
+ } from "react";
570
570
  import { jsx as jsx8 } from "react/jsx-runtime";
571
571
  var ComposerRoot = forwardRef5(
572
572
  ({ onSubmit, ...rest }, forwardedRef) => {
@@ -591,6 +591,7 @@ var ComposerRoot = forwardRef5(
591
591
  );
592
592
  }
593
593
  );
594
+ ComposerRoot.displayName = "ComposerRoot";
594
595
 
595
596
  // src/primitives/composer/ComposerInput.tsx
596
597
  import { composeEventHandlers as composeEventHandlers5 } from "@radix-ui/primitive";
@@ -665,11 +666,10 @@ var ComposerInput = forwardRef6(
665
666
  );
666
667
  }
667
668
  );
669
+ ComposerInput.displayName = "ComposerInput";
668
670
 
669
671
  // src/primitives/composer/ComposerSend.tsx
670
- import {
671
- Primitive as Primitive6
672
- } from "@radix-ui/react-primitive";
672
+ import { Primitive as Primitive6 } from "@radix-ui/react-primitive";
673
673
  import { forwardRef as forwardRef7 } from "react";
674
674
  import { jsx as jsx10 } from "react/jsx-runtime";
675
675
  var ComposerSend = forwardRef7(
@@ -687,12 +687,11 @@ var ComposerSend = forwardRef7(
687
687
  );
688
688
  }
689
689
  );
690
+ ComposerSend.displayName = "ComposerSend";
690
691
 
691
692
  // src/primitives/composer/ComposerCancel.tsx
692
693
  import { composeEventHandlers as composeEventHandlers6 } from "@radix-ui/primitive";
693
- import {
694
- Primitive as Primitive7
695
- } from "@radix-ui/react-primitive";
694
+ import { Primitive as Primitive7 } from "@radix-ui/react-primitive";
696
695
  import { forwardRef as forwardRef8 } from "react";
697
696
  import { jsx as jsx11 } from "react/jsx-runtime";
698
697
  var ComposerCancel = forwardRef8(({ onClick, ...rest }, ref) => {
@@ -710,6 +709,7 @@ var ComposerCancel = forwardRef8(({ onClick, ...rest }, ref) => {
710
709
  }
711
710
  );
712
711
  });
712
+ ComposerCancel.displayName = "ComposerCancel";
713
713
 
714
714
  // src/primitives/message/index.ts
715
715
  var message_exports = {};
@@ -722,9 +722,7 @@ __export(message_exports, {
722
722
 
723
723
  // src/primitives/message/MessageRoot.tsx
724
724
  import { composeEventHandlers as composeEventHandlers7 } from "@radix-ui/primitive";
725
- import {
726
- Primitive as Primitive8
727
- } from "@radix-ui/react-primitive";
725
+ import { Primitive as Primitive8 } from "@radix-ui/react-primitive";
728
726
  import { forwardRef as forwardRef9 } from "react";
729
727
  import { jsx as jsx12 } from "react/jsx-runtime";
730
728
  var MessageRoot = forwardRef9(
@@ -748,6 +746,7 @@ var MessageRoot = forwardRef9(
748
746
  );
749
747
  }
750
748
  );
749
+ MessageRoot.displayName = "MessageRoot";
751
750
 
752
751
  // src/primitives/message/MessageContent.tsx
753
752
  import { memo as memo2 } from "react";
@@ -815,9 +814,7 @@ var ContentPartInProgressIndicator = () => {
815
814
  };
816
815
 
817
816
  // src/primitives/contentPart/ContentPartText.tsx
818
- import {
819
- Primitive as Primitive9
820
- } from "@radix-ui/react-primitive";
817
+ import { Primitive as Primitive9 } from "@radix-ui/react-primitive";
821
818
  import { forwardRef as forwardRef10 } from "react";
822
819
  import { jsx as jsx14 } from "react/jsx-runtime";
823
820
  var ContentPartText = forwardRef10((props, forwardedRef) => {
@@ -831,6 +828,7 @@ var ContentPartText = forwardRef10((props, forwardedRef) => {
831
828
  });
832
829
  return /* @__PURE__ */ jsx14(Primitive9.span, { ...props, ref: forwardedRef, children: text });
833
830
  });
831
+ ContentPartText.displayName = "ContentPartText";
834
832
 
835
833
  // src/primitives/message/MessageContent.tsx
836
834
  import { Fragment, jsx as jsx15, jsxs as jsxs3 } from "react/jsx-runtime";
@@ -843,10 +841,8 @@ var defaultComponents = {
843
841
  UI: () => /* @__PURE__ */ jsx15(ContentPartDisplay, {}),
844
842
  tools: {
845
843
  Fallback: (props) => {
846
- const { useToolRenderers } = useAssistantContext();
847
- const Render = useToolRenderers(
848
- (s) => s.getToolRenderer(props.part.toolName)
849
- );
844
+ const { useToolUIs } = useAssistantContext();
845
+ const Render = useToolUIs((s) => s.getToolUI(props.part.toolName));
850
846
  if (!Render) return null;
851
847
  return /* @__PURE__ */ jsx15(Render, { ...props });
852
848
  }
@@ -860,6 +856,8 @@ var MessageContentPartComponent = ({
860
856
  tools: { by_name = {}, Fallback = defaultComponents.tools.Fallback } = {}
861
857
  } = {}
862
858
  }) => {
859
+ const { useThread } = useThreadContext();
860
+ const addToolResult = useThread((t) => t.addToolResult);
863
861
  const { useContentPart } = useContentPartContext();
864
862
  const { part, status } = useContentPart();
865
863
  const type = part.type;
@@ -872,7 +870,8 @@ var MessageContentPartComponent = ({
872
870
  return /* @__PURE__ */ jsx15(UI, { part, status });
873
871
  case "tool-call": {
874
872
  const Tool = by_name[part.toolName] || Fallback;
875
- return /* @__PURE__ */ jsx15(Tool, { part, status });
873
+ const addResult = (result) => addToolResult(part.toolCallId, result);
874
+ return /* @__PURE__ */ jsx15(Tool, { part, status, addResult });
876
875
  }
877
876
  default:
878
877
  throw new Error(`Unknown content part type: ${type}`);
@@ -905,10 +904,11 @@ var MessageContent = ({ components }) => {
905
904
  };
906
905
 
907
906
  // src/primitives/message/MessageInProgress.tsx
907
+ import { Primitive as Primitive10 } from "@radix-ui/react-primitive";
908
908
  import {
909
- Primitive as Primitive10
910
- } from "@radix-ui/react-primitive";
911
- import { forwardRef as forwardRef11, useMemo as useMemo2 } from "react";
909
+ forwardRef as forwardRef11,
910
+ useMemo as useMemo2
911
+ } from "react";
912
912
  import { jsx as jsx16 } from "react/jsx-runtime";
913
913
  var MessageInProgress = forwardRef11((props, ref) => {
914
914
  const { useMessage } = useMessageContext();
@@ -917,6 +917,7 @@ var MessageInProgress = forwardRef11((props, ref) => {
917
917
  }, [useMessage, props, ref]);
918
918
  return null;
919
919
  });
920
+ MessageInProgress.displayName = "MessageInProgress";
920
921
 
921
922
  // src/primitives/branchPicker/index.ts
922
923
  var branchPicker_exports = {};
@@ -930,27 +931,25 @@ __export(branchPicker_exports, {
930
931
 
931
932
  // src/utils/createActionButton.tsx
932
933
  import { composeEventHandlers as composeEventHandlers8 } from "@radix-ui/primitive";
933
- import {
934
- Primitive as Primitive11
935
- } from "@radix-ui/react-primitive";
934
+ import { Primitive as Primitive11 } from "@radix-ui/react-primitive";
936
935
  import { forwardRef as forwardRef12 } from "react";
937
936
  import { jsx as jsx17 } from "react/jsx-runtime";
938
937
  var createActionButton = (useActionButton) => {
939
- return forwardRef12(
940
- (props, forwardedRef) => {
941
- const onClick = useActionButton(props);
942
- return /* @__PURE__ */ jsx17(
943
- Primitive11.button,
944
- {
945
- type: "button",
946
- disabled: !onClick,
947
- ...props,
948
- ref: forwardedRef,
949
- onClick: composeEventHandlers8(props.onClick, onClick ?? void 0)
950
- }
951
- );
952
- }
953
- );
938
+ const ActionButton = forwardRef12((props, forwardedRef) => {
939
+ const onClick = useActionButton(props);
940
+ return /* @__PURE__ */ jsx17(
941
+ Primitive11.button,
942
+ {
943
+ type: "button",
944
+ disabled: !onClick,
945
+ ...props,
946
+ ref: forwardedRef,
947
+ onClick: composeEventHandlers8(props.onClick, onClick ?? void 0)
948
+ }
949
+ );
950
+ });
951
+ ActionButton.displayName = "ActionButton";
952
+ return ActionButton;
954
953
  };
955
954
 
956
955
  // src/primitives/branchPicker/BranchPickerNext.tsx
@@ -976,14 +975,13 @@ var BranchPickerNumber = () => {
976
975
  };
977
976
 
978
977
  // src/primitives/branchPicker/BranchPickerRoot.tsx
979
- import {
980
- Primitive as Primitive12
981
- } from "@radix-ui/react-primitive";
978
+ import { Primitive as Primitive12 } from "@radix-ui/react-primitive";
982
979
  import { forwardRef as forwardRef13 } from "react";
983
980
  import { jsx as jsx20 } from "react/jsx-runtime";
984
981
  var BranchPickerRoot = forwardRef13(({ hideWhenSingleBranch, ...rest }, ref) => {
985
982
  return /* @__PURE__ */ jsx20(MessageIf, { hasBranches: hideWhenSingleBranch ? true : void 0, children: /* @__PURE__ */ jsx20(Primitive12.div, { ...rest, ref }) });
986
983
  });
984
+ BranchPickerRoot.displayName = "BranchPickerRoot";
987
985
 
988
986
  // src/primitives/actionBar/index.ts
989
987
  var actionBar_exports = {};
@@ -995,9 +993,7 @@ __export(actionBar_exports, {
995
993
  });
996
994
 
997
995
  // src/primitives/actionBar/ActionBarRoot.tsx
998
- import {
999
- Primitive as Primitive13
1000
- } from "@radix-ui/react-primitive";
996
+ import { Primitive as Primitive13 } from "@radix-ui/react-primitive";
1001
997
  import { forwardRef as forwardRef14 } from "react";
1002
998
  import { jsx as jsx21 } from "react/jsx-runtime";
1003
999
  var ActionBarRoot = forwardRef14(({ hideWhenRunning, autohide, autohideFloat, ...rest }, ref) => {
@@ -1025,6 +1021,7 @@ var ActionBarRoot = forwardRef14(({ hideWhenRunning, autohide, autohideFloat, ..
1025
1021
  }
1026
1022
  );
1027
1023
  });
1024
+ ActionBarRoot.displayName = "ActionBarRoot";
1028
1025
 
1029
1026
  // src/primitives/actionBar/ActionBarCopy.tsx
1030
1027
  var ActionBarCopy = createActionButton(useCopyMessage);
@@ -1045,9 +1042,7 @@ __export(contentPart_exports, {
1045
1042
  });
1046
1043
 
1047
1044
  // src/primitives/contentPart/ContentPartImage.tsx
1048
- import {
1049
- Primitive as Primitive14
1050
- } from "@radix-ui/react-primitive";
1045
+ import { Primitive as Primitive14 } from "@radix-ui/react-primitive";
1051
1046
  import { forwardRef as forwardRef15 } from "react";
1052
1047
  import { jsx as jsx22 } from "react/jsx-runtime";
1053
1048
  var ContentPartImage = forwardRef15((props, forwardedRef) => {
@@ -1061,6 +1056,7 @@ var ContentPartImage = forwardRef15((props, forwardedRef) => {
1061
1056
  });
1062
1057
  return /* @__PURE__ */ jsx22(Primitive14.img, { src: image, ...props, ref: forwardedRef });
1063
1058
  });
1059
+ ContentPartImage.displayName = "ContentPartImage";
1064
1060
 
1065
1061
  // src/runtime/local/useLocalRuntime.tsx
1066
1062
  import { useInsertionEffect, useState as useState3 } from "react";
@@ -1342,6 +1338,9 @@ var LocalRuntime = class {
1342
1338
  this._configProviders.add(provider);
1343
1339
  return () => this._configProviders.delete(provider);
1344
1340
  }
1341
+ addToolResult() {
1342
+ throw new Error("LocalRuntime does not yet support tool results");
1343
+ }
1345
1344
  };
1346
1345
 
1347
1346
  // src/runtime/local/useLocalRuntime.tsx
@@ -1389,18 +1388,18 @@ var makeAssistantModelConfigStore = () => create4(() => {
1389
1388
  };
1390
1389
  });
1391
1390
 
1392
- // src/context/stores/AssistantToolRenderers.ts
1391
+ // src/context/stores/AssistantToolUIs.ts
1393
1392
  import { create as create5 } from "zustand";
1394
- var makeAssistantToolRenderersStore = () => create5((set) => {
1393
+ var makeAssistantToolUIsStore = () => create5((set) => {
1395
1394
  const renderers = /* @__PURE__ */ new Map();
1396
1395
  return {
1397
- getToolRenderer: (name) => {
1396
+ getToolUI: (name) => {
1398
1397
  const arr = renderers.get(name);
1399
1398
  const last = arr?.at(-1);
1400
1399
  if (last) return last;
1401
1400
  return null;
1402
1401
  },
1403
- setToolRenderer: (name, render) => {
1402
+ setToolUI: (name, render) => {
1404
1403
  let arr = renderers.get(name);
1405
1404
  if (!arr) {
1406
1405
  arr = [];
@@ -1455,7 +1454,8 @@ var makeThreadStore = (runtimeRef) => {
1455
1454
  switchToBranch: (branchId) => runtimeRef.current.switchToBranch(branchId),
1456
1455
  startRun: (parentId) => runtimeRef.current.startRun(parentId),
1457
1456
  append: (message) => runtimeRef.current.append(message),
1458
- cancelRun: () => runtimeRef.current.cancelRun()
1457
+ cancelRun: () => runtimeRef.current.cancelRun(),
1458
+ addToolResult: (toolCallId, result) => runtimeRef.current.addToolResult(toolCallId, result)
1459
1459
  }));
1460
1460
  const onRuntimeUpdate = () => {
1461
1461
  useThread.setState({
@@ -1532,8 +1532,8 @@ var AssistantProvider = ({ children, runtime }) => {
1532
1532
  });
1533
1533
  const [context] = useState5(() => {
1534
1534
  const useModelConfig = makeAssistantModelConfigStore();
1535
- const useToolRenderers = makeAssistantToolRenderersStore();
1536
- return { useModelConfig, useToolRenderers };
1535
+ const useToolUIs = makeAssistantToolUIsStore();
1536
+ return { useModelConfig, useToolUIs };
1537
1537
  });
1538
1538
  const getModelCOnfig = context.useModelConfig((c) => c.getModelConfig);
1539
1539
  useEffect7(() => {