@usecrow/ui 0.1.24 → 0.1.26
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 +31 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -3
- package/dist/index.d.ts +14 -3
- package/dist/index.js +31 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -73,10 +73,12 @@ function useChat({
|
|
|
73
73
|
apiUrl = "",
|
|
74
74
|
persistAnonymousConversations,
|
|
75
75
|
welcomeMessage,
|
|
76
|
+
selectedModel: initialSelectedModel,
|
|
76
77
|
onVerificationStatus,
|
|
77
78
|
onConversationId,
|
|
78
79
|
onWorkflowEvent,
|
|
79
80
|
onToolCall,
|
|
81
|
+
onToolResult,
|
|
80
82
|
onRestoredConversation
|
|
81
83
|
}) {
|
|
82
84
|
const effectiveWelcomeMessage = welcomeMessage || DEFAULT_WELCOME_MESSAGE;
|
|
@@ -91,9 +93,14 @@ function useChat({
|
|
|
91
93
|
const [isLoading, setIsLoading] = React3.useState(false);
|
|
92
94
|
const [activeToolCalls, setActiveToolCalls] = React3.useState([]);
|
|
93
95
|
const [conversationId, setConversationId] = React3.useState(null);
|
|
94
|
-
const [selectedModel, setSelectedModel] = React3.useState(DEFAULT_MODEL);
|
|
96
|
+
const [selectedModel, setSelectedModel] = React3.useState(initialSelectedModel || DEFAULT_MODEL);
|
|
95
97
|
const abortControllerRef = React3.useRef(null);
|
|
96
98
|
const hasCheckedPersistRef = React3.useRef(false);
|
|
99
|
+
React3.useEffect(() => {
|
|
100
|
+
if (initialSelectedModel) {
|
|
101
|
+
setSelectedModel((prev) => prev !== initialSelectedModel ? initialSelectedModel : prev);
|
|
102
|
+
}
|
|
103
|
+
}, [initialSelectedModel]);
|
|
97
104
|
React3.useEffect(() => {
|
|
98
105
|
if (messages.length === 1 && messages[0].id === "welcome" && !conversationId) {
|
|
99
106
|
setMessages([
|
|
@@ -284,6 +291,11 @@ function useChat({
|
|
|
284
291
|
);
|
|
285
292
|
}
|
|
286
293
|
break;
|
|
294
|
+
case "tool_result":
|
|
295
|
+
if (parsed.tool_name && parsed.result) {
|
|
296
|
+
onToolResult?.(parsed.tool_name, parsed.result);
|
|
297
|
+
}
|
|
298
|
+
break;
|
|
287
299
|
case "client_tool_call":
|
|
288
300
|
pendingClientTools.push({
|
|
289
301
|
toolName: parsed.tool_name,
|
|
@@ -343,7 +355,7 @@ function useChat({
|
|
|
343
355
|
abortControllerRef.current = null;
|
|
344
356
|
}
|
|
345
357
|
},
|
|
346
|
-
[apiUrl, productId, conversationId, selectedModel, persistAnonymousConversations, onVerificationStatus, onConversationId, onWorkflowEvent, onToolCall]
|
|
358
|
+
[apiUrl, productId, conversationId, selectedModel, persistAnonymousConversations, onVerificationStatus, onConversationId, onWorkflowEvent, onToolCall, onToolResult]
|
|
347
359
|
);
|
|
348
360
|
const sendMessage = React3.useCallback(
|
|
349
361
|
(content) => {
|
|
@@ -1128,6 +1140,9 @@ function useWidgetStyles({
|
|
|
1128
1140
|
const [welcomeMessage, setWelcomeMessage] = React3.useState(
|
|
1129
1141
|
styleCache.get(key)?.welcomeMessage ?? void 0
|
|
1130
1142
|
);
|
|
1143
|
+
const [selectedModel, setSelectedModel] = React3.useState(
|
|
1144
|
+
styleCache.get(key)?.model ?? void 0
|
|
1145
|
+
);
|
|
1131
1146
|
const hasFetchedRef = React3.useRef(false);
|
|
1132
1147
|
const fetchStyles = async () => {
|
|
1133
1148
|
if (skip) return;
|
|
@@ -1142,6 +1157,7 @@ function useWidgetStyles({
|
|
|
1142
1157
|
setShowThinking(config.showThinking ?? true);
|
|
1143
1158
|
setPersistAnonymousConversations(config.persistAnonymousConversations ?? true);
|
|
1144
1159
|
setWelcomeMessage(config.welcomeMessage ?? void 0);
|
|
1160
|
+
setSelectedModel(config.model ?? void 0);
|
|
1145
1161
|
} catch (err) {
|
|
1146
1162
|
console.error("[CrowWidget] Failed to fetch styles:", err);
|
|
1147
1163
|
setError(err instanceof Error ? err : new Error(String(err)));
|
|
@@ -1159,6 +1175,7 @@ function useWidgetStyles({
|
|
|
1159
1175
|
setShowThinking(cached.showThinking ?? true);
|
|
1160
1176
|
setPersistAnonymousConversations(cached.persistAnonymousConversations ?? true);
|
|
1161
1177
|
setWelcomeMessage(cached.welcomeMessage ?? void 0);
|
|
1178
|
+
setSelectedModel(cached.model ?? void 0);
|
|
1162
1179
|
setIsLoading(false);
|
|
1163
1180
|
return;
|
|
1164
1181
|
}
|
|
@@ -1175,6 +1192,7 @@ function useWidgetStyles({
|
|
|
1175
1192
|
showThinking,
|
|
1176
1193
|
persistAnonymousConversations,
|
|
1177
1194
|
welcomeMessage,
|
|
1195
|
+
selectedModel,
|
|
1178
1196
|
refetch: fetchStyles
|
|
1179
1197
|
};
|
|
1180
1198
|
}
|
|
@@ -2761,7 +2779,8 @@ function CrowWidget({
|
|
|
2761
2779
|
welcomeMessage: welcomeMessageProp,
|
|
2762
2780
|
onReady,
|
|
2763
2781
|
onIdentify,
|
|
2764
|
-
tools
|
|
2782
|
+
tools,
|
|
2783
|
+
onToolResult
|
|
2765
2784
|
}) {
|
|
2766
2785
|
const {
|
|
2767
2786
|
styles,
|
|
@@ -2770,7 +2789,8 @@ function CrowWidget({
|
|
|
2770
2789
|
browserUseEnabled,
|
|
2771
2790
|
showThinking: showThinkingFromAPI,
|
|
2772
2791
|
persistAnonymousConversations,
|
|
2773
|
-
welcomeMessage: welcomeMessageFromAPI
|
|
2792
|
+
welcomeMessage: welcomeMessageFromAPI,
|
|
2793
|
+
selectedModel: selectedModelFromAPI
|
|
2774
2794
|
} = useWidgetStyles({
|
|
2775
2795
|
productId,
|
|
2776
2796
|
apiUrl,
|
|
@@ -2779,6 +2799,7 @@ function CrowWidget({
|
|
|
2779
2799
|
});
|
|
2780
2800
|
const agentName = agentNameProp ?? agentNameFromAPI;
|
|
2781
2801
|
const welcomeMessage = welcomeMessageProp ?? welcomeMessageFromAPI;
|
|
2802
|
+
const selectedModel = selectedModelFromAPI ?? DEFAULT_MODEL;
|
|
2782
2803
|
const showThinking = showThinkingProp ?? showThinkingFromAPI;
|
|
2783
2804
|
const [autoTools, setAutoTools] = React3.useState({});
|
|
2784
2805
|
const cssVars = stylesToCssVars(styles);
|
|
@@ -2801,7 +2822,7 @@ function CrowWidget({
|
|
|
2801
2822
|
productId,
|
|
2802
2823
|
apiUrl,
|
|
2803
2824
|
conversationId: null,
|
|
2804
|
-
selectedModel
|
|
2825
|
+
selectedModel
|
|
2805
2826
|
});
|
|
2806
2827
|
const conversations = useConversations({ productId, apiUrl });
|
|
2807
2828
|
const [shouldRestoreHistory, setShouldRestoreHistory] = React3.useState(false);
|
|
@@ -2811,6 +2832,7 @@ function CrowWidget({
|
|
|
2811
2832
|
apiUrl,
|
|
2812
2833
|
persistAnonymousConversations,
|
|
2813
2834
|
welcomeMessage,
|
|
2835
|
+
selectedModel,
|
|
2814
2836
|
onVerificationStatus: (isVerified) => {
|
|
2815
2837
|
setIsVerifiedUser(isVerified);
|
|
2816
2838
|
},
|
|
@@ -2836,6 +2858,7 @@ function CrowWidget({
|
|
|
2836
2858
|
break;
|
|
2837
2859
|
}
|
|
2838
2860
|
},
|
|
2861
|
+
onToolResult,
|
|
2839
2862
|
onToolCall: async (event) => {
|
|
2840
2863
|
if (event.type === "client_call" && event.toolName && event.toolCallId) {
|
|
2841
2864
|
try {
|
|
@@ -3275,7 +3298,8 @@ function CrowCopilot({
|
|
|
3275
3298
|
styles: propStyles,
|
|
3276
3299
|
previewMode = false,
|
|
3277
3300
|
className,
|
|
3278
|
-
onReady
|
|
3301
|
+
onReady,
|
|
3302
|
+
onToolResult
|
|
3279
3303
|
}) {
|
|
3280
3304
|
const {
|
|
3281
3305
|
styles,
|
|
@@ -3316,6 +3340,7 @@ function CrowCopilot({
|
|
|
3316
3340
|
},
|
|
3317
3341
|
onConversationId: () => {
|
|
3318
3342
|
},
|
|
3343
|
+
onToolResult,
|
|
3319
3344
|
onToolCall: (event) => {
|
|
3320
3345
|
if (event.type === "client_call" && event.toolName) {
|
|
3321
3346
|
console.log(
|