@usecrow/ui 0.1.15 → 0.1.17
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 +59 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -2
- package/dist/index.d.ts +19 -2
- package/dist/index.js +59 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -71,16 +71,19 @@ var getConversationStorageKey = (productId) => `crow_conv_${productId}`;
|
|
|
71
71
|
function useChat({
|
|
72
72
|
productId,
|
|
73
73
|
apiUrl = "",
|
|
74
|
+
persistAnonymousConversations: _persistAnonymousConversations,
|
|
75
|
+
welcomeMessage,
|
|
74
76
|
onVerificationStatus,
|
|
75
77
|
onConversationId,
|
|
76
78
|
onWorkflowEvent,
|
|
77
79
|
onToolCall,
|
|
78
80
|
onRestoredConversation
|
|
79
81
|
}) {
|
|
82
|
+
const effectiveWelcomeMessage = welcomeMessage || DEFAULT_WELCOME_MESSAGE;
|
|
80
83
|
const [messages, setMessages] = React3.useState([
|
|
81
84
|
{
|
|
82
85
|
id: "welcome",
|
|
83
|
-
content:
|
|
86
|
+
content: effectiveWelcomeMessage,
|
|
84
87
|
isBot: true,
|
|
85
88
|
timestamp: /* @__PURE__ */ new Date()
|
|
86
89
|
}
|
|
@@ -97,6 +100,18 @@ function useChat({
|
|
|
97
100
|
const [selectedModel, setSelectedModel] = React3.useState(DEFAULT_MODEL);
|
|
98
101
|
const abortControllerRef = React3.useRef(null);
|
|
99
102
|
const hasRestoredRef = React3.useRef(false);
|
|
103
|
+
React3.useEffect(() => {
|
|
104
|
+
if (messages.length === 1 && messages[0].id === "welcome" && !conversationId) {
|
|
105
|
+
setMessages([
|
|
106
|
+
{
|
|
107
|
+
id: "welcome",
|
|
108
|
+
content: effectiveWelcomeMessage,
|
|
109
|
+
isBot: true,
|
|
110
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
111
|
+
}
|
|
112
|
+
]);
|
|
113
|
+
}
|
|
114
|
+
}, [effectiveWelcomeMessage]);
|
|
100
115
|
React3.useEffect(() => {
|
|
101
116
|
if (conversationId && onRestoredConversation && !hasRestoredRef.current) {
|
|
102
117
|
hasRestoredRef.current = true;
|
|
@@ -347,7 +362,7 @@ function useChat({
|
|
|
347
362
|
setMessages([
|
|
348
363
|
{
|
|
349
364
|
id: "welcome",
|
|
350
|
-
content:
|
|
365
|
+
content: effectiveWelcomeMessage,
|
|
351
366
|
isBot: true,
|
|
352
367
|
timestamp: /* @__PURE__ */ new Date()
|
|
353
368
|
}
|
|
@@ -357,7 +372,7 @@ function useChat({
|
|
|
357
372
|
localStorage.removeItem(getConversationStorageKey(productId));
|
|
358
373
|
} catch {
|
|
359
374
|
}
|
|
360
|
-
}, [productId]);
|
|
375
|
+
}, [productId, effectiveWelcomeMessage]);
|
|
361
376
|
const loadMessages = React3.useCallback((historyMessages) => {
|
|
362
377
|
setMessages(historyMessages);
|
|
363
378
|
}, []);
|
|
@@ -1042,6 +1057,12 @@ function useWidgetStyles({
|
|
|
1042
1057
|
const [showThinking, setShowThinking] = React3.useState(
|
|
1043
1058
|
styleCache.get(key)?.showThinking ?? true
|
|
1044
1059
|
);
|
|
1060
|
+
const [persistAnonymousConversations, setPersistAnonymousConversations] = React3.useState(
|
|
1061
|
+
styleCache.has(key) ? styleCache.get(key)?.persistAnonymousConversations ?? true : void 0
|
|
1062
|
+
);
|
|
1063
|
+
const [welcomeMessage, setWelcomeMessage] = React3.useState(
|
|
1064
|
+
styleCache.get(key)?.welcomeMessage ?? void 0
|
|
1065
|
+
);
|
|
1045
1066
|
const hasFetchedRef = React3.useRef(false);
|
|
1046
1067
|
const fetchStyles = async () => {
|
|
1047
1068
|
if (skip) return;
|
|
@@ -1054,6 +1075,8 @@ function useWidgetStyles({
|
|
|
1054
1075
|
setAgentName(config.agentName || "Assistant");
|
|
1055
1076
|
setBrowserUseEnabled(config.browserUseEnabled || false);
|
|
1056
1077
|
setShowThinking(config.showThinking ?? true);
|
|
1078
|
+
setPersistAnonymousConversations(config.persistAnonymousConversations ?? true);
|
|
1079
|
+
setWelcomeMessage(config.welcomeMessage ?? void 0);
|
|
1057
1080
|
} catch (err) {
|
|
1058
1081
|
console.error("[CrowWidget] Failed to fetch styles:", err);
|
|
1059
1082
|
setError(err instanceof Error ? err : new Error(String(err)));
|
|
@@ -1069,6 +1092,8 @@ function useWidgetStyles({
|
|
|
1069
1092
|
setAgentName(cached.agentName || "Assistant");
|
|
1070
1093
|
setBrowserUseEnabled(cached.browserUseEnabled || false);
|
|
1071
1094
|
setShowThinking(cached.showThinking ?? true);
|
|
1095
|
+
setPersistAnonymousConversations(cached.persistAnonymousConversations ?? true);
|
|
1096
|
+
setWelcomeMessage(cached.welcomeMessage ?? void 0);
|
|
1072
1097
|
setIsLoading(false);
|
|
1073
1098
|
return;
|
|
1074
1099
|
}
|
|
@@ -1083,6 +1108,8 @@ function useWidgetStyles({
|
|
|
1083
1108
|
agentName,
|
|
1084
1109
|
browserUseEnabled,
|
|
1085
1110
|
showThinking,
|
|
1111
|
+
persistAnonymousConversations,
|
|
1112
|
+
welcomeMessage,
|
|
1086
1113
|
refetch: fetchStyles
|
|
1087
1114
|
};
|
|
1088
1115
|
}
|
|
@@ -1102,6 +1129,12 @@ function useCopilotStyles({
|
|
|
1102
1129
|
const [agentName, setAgentName] = React3.useState(
|
|
1103
1130
|
styleCache.get(key)?.agentName || "Assistant"
|
|
1104
1131
|
);
|
|
1132
|
+
const [persistAnonymousConversations, setPersistAnonymousConversations] = React3.useState(
|
|
1133
|
+
styleCache.has(key) ? styleCache.get(key)?.persistAnonymousConversations ?? true : void 0
|
|
1134
|
+
);
|
|
1135
|
+
const [welcomeMessage, setWelcomeMessage] = React3.useState(
|
|
1136
|
+
styleCache.get(key)?.welcomeMessage ?? void 0
|
|
1137
|
+
);
|
|
1105
1138
|
const hasFetchedRef = React3.useRef(false);
|
|
1106
1139
|
const fetchStyles = async () => {
|
|
1107
1140
|
if (skip) return;
|
|
@@ -1112,6 +1145,8 @@ function useCopilotStyles({
|
|
|
1112
1145
|
styleCache.set(key, config);
|
|
1113
1146
|
setDbStyles(config.copilotStyles);
|
|
1114
1147
|
setAgentName(config.agentName || "Assistant");
|
|
1148
|
+
setPersistAnonymousConversations(config.persistAnonymousConversations ?? true);
|
|
1149
|
+
setWelcomeMessage(config.welcomeMessage ?? void 0);
|
|
1115
1150
|
} catch (err) {
|
|
1116
1151
|
console.error("[CrowCopilot] Failed to fetch styles:", err);
|
|
1117
1152
|
setError(err instanceof Error ? err : new Error(String(err)));
|
|
@@ -1125,6 +1160,8 @@ function useCopilotStyles({
|
|
|
1125
1160
|
if (cached) {
|
|
1126
1161
|
setDbStyles(cached.copilotStyles);
|
|
1127
1162
|
setAgentName(cached.agentName || "Assistant");
|
|
1163
|
+
setPersistAnonymousConversations(cached.persistAnonymousConversations ?? true);
|
|
1164
|
+
setWelcomeMessage(cached.welcomeMessage ?? void 0);
|
|
1128
1165
|
setIsLoading(false);
|
|
1129
1166
|
return;
|
|
1130
1167
|
}
|
|
@@ -1137,6 +1174,8 @@ function useCopilotStyles({
|
|
|
1137
1174
|
isLoading,
|
|
1138
1175
|
error,
|
|
1139
1176
|
agentName,
|
|
1177
|
+
persistAnonymousConversations,
|
|
1178
|
+
welcomeMessage,
|
|
1140
1179
|
refetch: fetchStyles
|
|
1141
1180
|
};
|
|
1142
1181
|
}
|
|
@@ -2449,16 +2488,27 @@ function CrowWidget({
|
|
|
2449
2488
|
styles: propStyles,
|
|
2450
2489
|
previewMode = false,
|
|
2451
2490
|
showThinking: showThinkingProp,
|
|
2491
|
+
welcomeMessage: welcomeMessageProp,
|
|
2452
2492
|
onReady,
|
|
2453
2493
|
onIdentify,
|
|
2454
2494
|
tools
|
|
2455
2495
|
}) {
|
|
2456
|
-
const {
|
|
2496
|
+
const {
|
|
2497
|
+
styles,
|
|
2498
|
+
isLoading: isLoadingStyles,
|
|
2499
|
+
agentName,
|
|
2500
|
+
browserUseEnabled,
|
|
2501
|
+
showThinking: showThinkingFromAPI,
|
|
2502
|
+
persistAnonymousConversations,
|
|
2503
|
+
welcomeMessage: welcomeMessageFromAPI
|
|
2504
|
+
} = useWidgetStyles({
|
|
2457
2505
|
productId,
|
|
2458
2506
|
apiUrl,
|
|
2459
2507
|
propStyles,
|
|
2460
2508
|
skip: previewMode
|
|
2461
2509
|
});
|
|
2510
|
+
const welcomeMessage = welcomeMessageProp ?? welcomeMessageFromAPI;
|
|
2511
|
+
console.log("[Crow Widget] persistAnonymousConversations from API:", persistAnonymousConversations, "isLoading:", isLoadingStyles);
|
|
2462
2512
|
const showThinking = showThinkingProp ?? showThinkingFromAPI;
|
|
2463
2513
|
const [autoTools, setAutoTools] = React3.useState({});
|
|
2464
2514
|
const cssVars = stylesToCssVars(styles);
|
|
@@ -2486,6 +2536,8 @@ function CrowWidget({
|
|
|
2486
2536
|
const chat = useChat({
|
|
2487
2537
|
productId,
|
|
2488
2538
|
apiUrl,
|
|
2539
|
+
persistAnonymousConversations,
|
|
2540
|
+
welcomeMessage,
|
|
2489
2541
|
onVerificationStatus: (isVerified) => {
|
|
2490
2542
|
setIsVerifiedUser(isVerified);
|
|
2491
2543
|
},
|
|
@@ -2730,7 +2782,7 @@ function CrowCopilot({
|
|
|
2730
2782
|
className,
|
|
2731
2783
|
onReady
|
|
2732
2784
|
}) {
|
|
2733
|
-
const { styles, isLoading: isLoadingStyles, agentName } = useCopilotStyles({
|
|
2785
|
+
const { styles, isLoading: isLoadingStyles, agentName, persistAnonymousConversations, welcomeMessage } = useCopilotStyles({
|
|
2734
2786
|
productId,
|
|
2735
2787
|
apiUrl,
|
|
2736
2788
|
propStyles,
|
|
@@ -2746,6 +2798,8 @@ function CrowCopilot({
|
|
|
2746
2798
|
const chat = useChat({
|
|
2747
2799
|
productId,
|
|
2748
2800
|
apiUrl,
|
|
2801
|
+
persistAnonymousConversations,
|
|
2802
|
+
welcomeMessage,
|
|
2749
2803
|
onVerificationStatus: (isVerified) => {
|
|
2750
2804
|
setIsVerifiedUser(isVerified);
|
|
2751
2805
|
},
|