@usecrow/ui 0.1.23 → 0.1.25

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.cjs CHANGED
@@ -73,6 +73,7 @@ function useChat({
73
73
  apiUrl = "",
74
74
  persistAnonymousConversations,
75
75
  welcomeMessage,
76
+ selectedModel: initialSelectedModel,
76
77
  onVerificationStatus,
77
78
  onConversationId,
78
79
  onWorkflowEvent,
@@ -91,9 +92,14 @@ function useChat({
91
92
  const [isLoading, setIsLoading] = React3.useState(false);
92
93
  const [activeToolCalls, setActiveToolCalls] = React3.useState([]);
93
94
  const [conversationId, setConversationId] = React3.useState(null);
94
- const [selectedModel, setSelectedModel] = React3.useState(DEFAULT_MODEL);
95
+ const [selectedModel, setSelectedModel] = React3.useState(initialSelectedModel || DEFAULT_MODEL);
95
96
  const abortControllerRef = React3.useRef(null);
96
97
  const hasCheckedPersistRef = React3.useRef(false);
98
+ React3.useEffect(() => {
99
+ if (initialSelectedModel) {
100
+ setSelectedModel((prev) => prev !== initialSelectedModel ? initialSelectedModel : prev);
101
+ }
102
+ }, [initialSelectedModel]);
97
103
  React3.useEffect(() => {
98
104
  if (messages.length === 1 && messages[0].id === "welcome" && !conversationId) {
99
105
  setMessages([
@@ -275,6 +281,15 @@ function useChat({
275
281
  )
276
282
  );
277
283
  break;
284
+ case "tool_result_links":
285
+ if (parsed.links && Array.isArray(parsed.links)) {
286
+ setMessages(
287
+ (prev) => prev.map(
288
+ (msg) => msg.id === botMsgId ? { ...msg, links: [...msg.links || [], ...parsed.links] } : msg
289
+ )
290
+ );
291
+ }
292
+ break;
278
293
  case "client_tool_call":
279
294
  pendingClientTools.push({
280
295
  toolName: parsed.tool_name,
@@ -1119,6 +1134,9 @@ function useWidgetStyles({
1119
1134
  const [welcomeMessage, setWelcomeMessage] = React3.useState(
1120
1135
  styleCache.get(key)?.welcomeMessage ?? void 0
1121
1136
  );
1137
+ const [selectedModel, setSelectedModel] = React3.useState(
1138
+ styleCache.get(key)?.model ?? void 0
1139
+ );
1122
1140
  const hasFetchedRef = React3.useRef(false);
1123
1141
  const fetchStyles = async () => {
1124
1142
  if (skip) return;
@@ -1133,6 +1151,7 @@ function useWidgetStyles({
1133
1151
  setShowThinking(config.showThinking ?? true);
1134
1152
  setPersistAnonymousConversations(config.persistAnonymousConversations ?? true);
1135
1153
  setWelcomeMessage(config.welcomeMessage ?? void 0);
1154
+ setSelectedModel(config.model ?? void 0);
1136
1155
  } catch (err) {
1137
1156
  console.error("[CrowWidget] Failed to fetch styles:", err);
1138
1157
  setError(err instanceof Error ? err : new Error(String(err)));
@@ -1150,6 +1169,7 @@ function useWidgetStyles({
1150
1169
  setShowThinking(cached.showThinking ?? true);
1151
1170
  setPersistAnonymousConversations(cached.persistAnonymousConversations ?? true);
1152
1171
  setWelcomeMessage(cached.welcomeMessage ?? void 0);
1172
+ setSelectedModel(cached.model ?? void 0);
1153
1173
  setIsLoading(false);
1154
1174
  return;
1155
1175
  }
@@ -1166,6 +1186,7 @@ function useWidgetStyles({
1166
1186
  showThinking,
1167
1187
  persistAnonymousConversations,
1168
1188
  welcomeMessage,
1189
+ selectedModel,
1169
1190
  refetch: fetchStyles
1170
1191
  };
1171
1192
  }
@@ -2761,7 +2782,8 @@ function CrowWidget({
2761
2782
  browserUseEnabled,
2762
2783
  showThinking: showThinkingFromAPI,
2763
2784
  persistAnonymousConversations,
2764
- welcomeMessage: welcomeMessageFromAPI
2785
+ welcomeMessage: welcomeMessageFromAPI,
2786
+ selectedModel: selectedModelFromAPI
2765
2787
  } = useWidgetStyles({
2766
2788
  productId,
2767
2789
  apiUrl,
@@ -2770,6 +2792,7 @@ function CrowWidget({
2770
2792
  });
2771
2793
  const agentName = agentNameProp ?? agentNameFromAPI;
2772
2794
  const welcomeMessage = welcomeMessageProp ?? welcomeMessageFromAPI;
2795
+ const selectedModel = selectedModelFromAPI ?? DEFAULT_MODEL;
2773
2796
  const showThinking = showThinkingProp ?? showThinkingFromAPI;
2774
2797
  const [autoTools, setAutoTools] = React3.useState({});
2775
2798
  const cssVars = stylesToCssVars(styles);
@@ -2792,7 +2815,7 @@ function CrowWidget({
2792
2815
  productId,
2793
2816
  apiUrl,
2794
2817
  conversationId: null,
2795
- selectedModel: DEFAULT_MODEL
2818
+ selectedModel
2796
2819
  });
2797
2820
  const conversations = useConversations({ productId, apiUrl });
2798
2821
  const [shouldRestoreHistory, setShouldRestoreHistory] = React3.useState(false);
@@ -2802,6 +2825,7 @@ function CrowWidget({
2802
2825
  apiUrl,
2803
2826
  persistAnonymousConversations,
2804
2827
  welcomeMessage,
2828
+ selectedModel,
2805
2829
  onVerificationStatus: (isVerified) => {
2806
2830
  setIsVerifiedUser(isVerified);
2807
2831
  },