flowdit-chatbot-library 1.0.0
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/LICENSE +21 -0
- package/README.md +218 -0
- package/dist/assets/data/types/index.d.ts +2 -0
- package/dist/assets/data/types/index.d.ts.map +1 -0
- package/dist/assets/data/types/index.js +2 -0
- package/dist/assets/data/types/index.js.map +1 -0
- package/dist/assets/data/types/redux/action.d.ts +8 -0
- package/dist/assets/data/types/redux/action.d.ts.map +1 -0
- package/dist/assets/data/types/redux/action.js +9 -0
- package/dist/assets/data/types/redux/action.js.map +1 -0
- package/dist/assets/data/types/redux/index.d.ts +2 -0
- package/dist/assets/data/types/redux/index.d.ts.map +1 -0
- package/dist/assets/data/types/redux/index.js +2 -0
- package/dist/assets/data/types/redux/index.js.map +1 -0
- package/dist/assets/data/types/vm/chatbot.d.ts +5 -0
- package/dist/assets/data/types/vm/chatbot.d.ts.map +1 -0
- package/dist/assets/data/types/vm/chatbot.js +8 -0
- package/dist/assets/data/types/vm/chatbot.js.map +1 -0
- package/dist/assets/data/types/vm/index.d.ts +2 -0
- package/dist/assets/data/types/vm/index.d.ts.map +1 -0
- package/dist/assets/data/types/vm/index.js +2 -0
- package/dist/assets/data/types/vm/index.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/redux/Provider.d.ts +11 -0
- package/dist/redux/Provider.d.ts.map +1 -0
- package/dist/redux/Provider.js +12 -0
- package/dist/redux/Provider.js.map +1 -0
- package/dist/redux/actions/index.d.ts +8 -0
- package/dist/redux/actions/index.d.ts.map +1 -0
- package/dist/redux/actions/index.js +73 -0
- package/dist/redux/actions/index.js.map +1 -0
- package/dist/redux/hooks.d.ts +6 -0
- package/dist/redux/hooks.d.ts.map +1 -0
- package/dist/redux/hooks.js +27 -0
- package/dist/redux/hooks.js.map +1 -0
- package/dist/redux/reducers/actions/general.d.ts +7 -0
- package/dist/redux/reducers/actions/general.d.ts.map +1 -0
- package/dist/redux/reducers/actions/general.js +16 -0
- package/dist/redux/reducers/actions/general.js.map +1 -0
- package/dist/redux/reducers/actions/index.d.ts +5 -0
- package/dist/redux/reducers/actions/index.d.ts.map +1 -0
- package/dist/redux/reducers/actions/index.js +8 -0
- package/dist/redux/reducers/actions/index.js.map +1 -0
- package/dist/redux/reducers/index.d.ts +4 -0
- package/dist/redux/reducers/index.d.ts.map +1 -0
- package/dist/redux/reducers/index.js +15 -0
- package/dist/redux/reducers/index.js.map +1 -0
- package/dist/redux/store.d.ts +11 -0
- package/dist/redux/store.d.ts.map +1 -0
- package/dist/redux/store.js +20 -0
- package/dist/redux/store.js.map +1 -0
- package/dist/styles.css +434 -0
- package/dist/utilities/API.d.ts +17 -0
- package/dist/utilities/API.d.ts.map +1 -0
- package/dist/utilities/API.js +71 -0
- package/dist/utilities/API.js.map +1 -0
- package/dist/utilities/external-tools.d.ts +19 -0
- package/dist/utilities/external-tools.d.ts.map +1 -0
- package/dist/utilities/external-tools.js +27 -0
- package/dist/utilities/external-tools.js.map +1 -0
- package/dist/views/fullscreen/index.d.ts +20 -0
- package/dist/views/fullscreen/index.d.ts.map +1 -0
- package/dist/views/fullscreen/index.functions.d.ts +38 -0
- package/dist/views/fullscreen/index.functions.d.ts.map +1 -0
- package/dist/views/fullscreen/index.functions.js +484 -0
- package/dist/views/fullscreen/index.functions.js.map +1 -0
- package/dist/views/fullscreen/index.js +569 -0
- package/dist/views/fullscreen/index.js.map +1 -0
- package/dist/views/tools/ChecklistPreview.d.ts +4 -0
- package/dist/views/tools/ChecklistPreview.d.ts.map +1 -0
- package/dist/views/tools/ChecklistPreview.js +29 -0
- package/dist/views/tools/ChecklistPreview.js.map +1 -0
- package/dist/views/tools/index.d.ts +6 -0
- package/dist/views/tools/index.d.ts.map +1 -0
- package/dist/views/tools/index.js +8 -0
- package/dist/views/tools/index.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
import React, { useState, useRef, useEffect } from "react";
|
|
2
|
+
// Styles should be imported separately: import '@flowdit/chatbot-library/dist/styles.css'
|
|
3
|
+
import { sendMessage, stopStreaming } from "./index.functions";
|
|
4
|
+
import ReactMarkdown from "react-markdown";
|
|
5
|
+
import { openChecklistPreview } from "../../utilities/external-tools";
|
|
6
|
+
import { v4 as uuidv4 } from "uuid";
|
|
7
|
+
// Tool handlers should be provided by the consuming application
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
+
const TOOL_HANDLERS = {
|
|
10
|
+
generate_checklist: (data) => {
|
|
11
|
+
console.log("Routing to Checklist Module:", data);
|
|
12
|
+
openChecklistPreview(data);
|
|
13
|
+
},
|
|
14
|
+
preview_generated_checklist: (data) => {
|
|
15
|
+
console.log("Preview Checklist Module:", data);
|
|
16
|
+
},
|
|
17
|
+
translate_text: (data) => {
|
|
18
|
+
console.log("Routing to Translation Module:", data);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const MAX_TEXTAREA_LINES = 5;
|
|
22
|
+
const LINE_HEIGHT_PX = 24; // Updated for new font size
|
|
23
|
+
export const FullScreenChat = () => {
|
|
24
|
+
// =========================================
|
|
25
|
+
// State Definitions
|
|
26
|
+
// =========================================
|
|
27
|
+
// Stores the list of chat messages (user and assistant)
|
|
28
|
+
const [messages, setMessages] = useState([]);
|
|
29
|
+
// Current value of the input textarea
|
|
30
|
+
const [input, setInput] = useState("");
|
|
31
|
+
// Flag indicating if a response is currently being streamed from the API
|
|
32
|
+
const [isStreaming, setIsStreaming] = useState(false);
|
|
33
|
+
// -- Animation States --
|
|
34
|
+
// Holds the complete raw text received from the API so far
|
|
35
|
+
// The text currently visible to the user (animated char-by-char)
|
|
36
|
+
const [displayedChars, setDisplayedChars] = useState("");
|
|
37
|
+
// ID of the message currently being animated; null if none
|
|
38
|
+
const [animatingMessageId, setAnimatingMessageId] = useState(null);
|
|
39
|
+
// Flag indicating if the network stream has fully finished
|
|
40
|
+
const [streamingComplete, setStreamingComplete] = useState(false);
|
|
41
|
+
// -- Scroll States --
|
|
42
|
+
// Tracks if the user has manually scrolled up to pause auto-scrolling
|
|
43
|
+
const [userScrolledUp, setUserScrolledUp] = useState(false);
|
|
44
|
+
// -- UI States --
|
|
45
|
+
// Tracks which dropdown menu is currently open (Tools, Mode, or Model)
|
|
46
|
+
const [activeDropdown, setActiveDropdown] = useState(null);
|
|
47
|
+
// =========================================
|
|
48
|
+
// Refs
|
|
49
|
+
// =========================================
|
|
50
|
+
// AbortController to cancel active network requests
|
|
51
|
+
const controllerRef = useRef(null);
|
|
52
|
+
// ID of the current requestAnimationFrame loop
|
|
53
|
+
const animationFrameRef = useRef(null);
|
|
54
|
+
// Timestamp of the last character added for animation timing control
|
|
55
|
+
const lastCharTimeRef = useRef(0);
|
|
56
|
+
// Unique ID for the current conversation session
|
|
57
|
+
const conversationIdRef = useRef(uuidv4());
|
|
58
|
+
// Reference to the textarea element for auto-resizing
|
|
59
|
+
const textareaRef = useRef(null);
|
|
60
|
+
// Tracks the previous animation ID to detect message switches
|
|
61
|
+
const prevAnimatingIdRef = useRef(null);
|
|
62
|
+
// Reference to the dummy div at the bottom of the chat for scrolling
|
|
63
|
+
const scrollEndRef = useRef(null);
|
|
64
|
+
// Reference to the main chat scroll container
|
|
65
|
+
const chatContainerRef = useRef(null);
|
|
66
|
+
// -- Stable Refs for Animation Loop --
|
|
67
|
+
// These refs allow the animation loop to access fresh state without triggering re-renders
|
|
68
|
+
const displayedContentRef = useRef("");
|
|
69
|
+
const charBufferRef = useRef("");
|
|
70
|
+
const streamingCompleteRef = useRef(false);
|
|
71
|
+
// =========================================
|
|
72
|
+
// Effects
|
|
73
|
+
// =========================================
|
|
74
|
+
/**
|
|
75
|
+
* Effect: Handle clicks outside of dropdowns to close them.
|
|
76
|
+
*/
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
const handleClickOutside = (event) => {
|
|
79
|
+
// If click is inside a dropdown trigger or menu, ignore it
|
|
80
|
+
if (event.target.closest('.dropdown-trigger') || event.target.closest('.custom-dropdown-menu'))
|
|
81
|
+
return;
|
|
82
|
+
setActiveDropdown(null);
|
|
83
|
+
};
|
|
84
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
85
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
86
|
+
}, []);
|
|
87
|
+
/**
|
|
88
|
+
* Effect: Auto-scroll when new content (displayedChars) or messages update.
|
|
89
|
+
*/
|
|
90
|
+
const scrollToBottom = () => {
|
|
91
|
+
if (!userScrolledUp) {
|
|
92
|
+
scrollEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
scrollToBottom();
|
|
97
|
+
}, [messages, displayedChars]);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
streamingCompleteRef.current = streamingComplete;
|
|
100
|
+
}, [streamingComplete]);
|
|
101
|
+
// CLEANUP: Reset animation refs when no message is animating (e.g. Stop clicked or Finished)
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
if (!animatingMessageId) {
|
|
104
|
+
displayedContentRef.current = "";
|
|
105
|
+
charBufferRef.current = "";
|
|
106
|
+
streamingCompleteRef.current = false;
|
|
107
|
+
}
|
|
108
|
+
}, [animatingMessageId]);
|
|
109
|
+
/**
|
|
110
|
+
* Effect: Main Character-by-Character Animation Loop.
|
|
111
|
+
* Logic:
|
|
112
|
+
* 1. Detaches from React render cycle using refs to prevent race conditions.
|
|
113
|
+
* 2. Adds characters from `charBufferRef` to `displayedContentRef` at a fixed speed.
|
|
114
|
+
* 3. Syncs the visual state `setDisplayedChars` and message content.
|
|
115
|
+
* 4. Stops when all characters are displayed AND the stream is marked complete.
|
|
116
|
+
*/
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
if (!animatingMessageId)
|
|
119
|
+
return;
|
|
120
|
+
// -- Setup for a NEW message --
|
|
121
|
+
if (prevAnimatingIdRef.current !== animatingMessageId) {
|
|
122
|
+
lastCharTimeRef.current = 0;
|
|
123
|
+
setDisplayedChars("");
|
|
124
|
+
displayedContentRef.current = "";
|
|
125
|
+
setStreamingComplete(false);
|
|
126
|
+
charBufferRef.current = "";
|
|
127
|
+
streamingCompleteRef.current = false;
|
|
128
|
+
prevAnimatingIdRef.current = animatingMessageId;
|
|
129
|
+
}
|
|
130
|
+
const CHARS_PER_FRAME = 2; // Number of characters to type per frame
|
|
131
|
+
const FRAME_DELAY = 15; // Milliseconds between frames (controls typing speed)
|
|
132
|
+
const animate = (currentTime) => {
|
|
133
|
+
// NOTE: Always read from refs to get latest data inside the loop
|
|
134
|
+
const targetBuffer = charBufferRef.current;
|
|
135
|
+
const isComplete = streamingCompleteRef.current;
|
|
136
|
+
// Fail-safe: Detect if target buffer shrank (e.g. new stream started), force reset
|
|
137
|
+
if (targetBuffer.length < displayedContentRef.current.length) {
|
|
138
|
+
displayedContentRef.current = "";
|
|
139
|
+
lastCharTimeRef.current = 0;
|
|
140
|
+
}
|
|
141
|
+
if (!lastCharTimeRef.current)
|
|
142
|
+
lastCharTimeRef.current = currentTime;
|
|
143
|
+
const elapsed = currentTime - lastCharTimeRef.current;
|
|
144
|
+
// Frame execution logic
|
|
145
|
+
if (elapsed >= FRAME_DELAY) {
|
|
146
|
+
const currentLength = displayedContentRef.current.length;
|
|
147
|
+
const targetLength = targetBuffer.length;
|
|
148
|
+
// If we have more characters to type...
|
|
149
|
+
if (currentLength < targetLength) {
|
|
150
|
+
const newLength = Math.min(currentLength + CHARS_PER_FRAME, targetLength);
|
|
151
|
+
const newContent = targetBuffer.slice(0, newLength);
|
|
152
|
+
displayedContentRef.current = newContent;
|
|
153
|
+
// Sync UI state
|
|
154
|
+
setDisplayedChars(newContent);
|
|
155
|
+
setMessages((msgs) => msgs.map((m) => {
|
|
156
|
+
if (m.id === animatingMessageId) {
|
|
157
|
+
return { ...m, content: newContent };
|
|
158
|
+
}
|
|
159
|
+
return m;
|
|
160
|
+
}));
|
|
161
|
+
lastCharTimeRef.current = currentTime;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// -- Completion Check --
|
|
165
|
+
const currentDisplayedLen = displayedContentRef.current.length;
|
|
166
|
+
const currentTargetLen = targetBuffer.length;
|
|
167
|
+
if (currentDisplayedLen < currentTargetLen) {
|
|
168
|
+
// Case 1: Still catching up to the buffer -> Continue animation
|
|
169
|
+
animationFrameRef.current = requestAnimationFrame(animate);
|
|
170
|
+
}
|
|
171
|
+
else if (isComplete) {
|
|
172
|
+
// Case 2: Caught up AND stream is finished -> Cleanup and Stop
|
|
173
|
+
animationFrameRef.current = null;
|
|
174
|
+
lastCharTimeRef.current = 0;
|
|
175
|
+
// Don't reset prevAnimatingIdRef here - let the completion handler use it
|
|
176
|
+
// Clear all animation states
|
|
177
|
+
setAnimatingMessageId(null);
|
|
178
|
+
setDisplayedChars("");
|
|
179
|
+
displayedContentRef.current = "";
|
|
180
|
+
setStreamingComplete(false);
|
|
181
|
+
// Refocus text area for next input
|
|
182
|
+
setTimeout(() => {
|
|
183
|
+
textareaRef.current?.focus();
|
|
184
|
+
}, 0);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// Case 3: Caught up but stream is NOT finished -> Wait for more data (Keep loop alive)
|
|
188
|
+
animationFrameRef.current = requestAnimationFrame(animate);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
// Start the loop
|
|
192
|
+
animationFrameRef.current = requestAnimationFrame(animate);
|
|
193
|
+
// Cleanup on unmount or ID change
|
|
194
|
+
return () => {
|
|
195
|
+
if (animationFrameRef.current) {
|
|
196
|
+
cancelAnimationFrame(animationFrameRef.current);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
}, [animatingMessageId]);
|
|
200
|
+
// =========================================
|
|
201
|
+
// Animation Completion Handler
|
|
202
|
+
// =========================================
|
|
203
|
+
/**
|
|
204
|
+
* When animation completes (animatingMessageId becomes null),
|
|
205
|
+
* move any pendingToolCalls to toolCalls and set isStreaming to false
|
|
206
|
+
*/
|
|
207
|
+
useEffect(() => {
|
|
208
|
+
console.log("Animation completion check:", {
|
|
209
|
+
animatingMessageId,
|
|
210
|
+
prevAnimatingId: prevAnimatingIdRef.current
|
|
211
|
+
});
|
|
212
|
+
// Only run when animation stops (becomes null from a non-null value)
|
|
213
|
+
if (animatingMessageId === null && prevAnimatingIdRef.current !== null) {
|
|
214
|
+
const completedMessageId = prevAnimatingIdRef.current;
|
|
215
|
+
console.log("Animation completed for message:", completedMessageId);
|
|
216
|
+
setMessages(prev => prev.map(m => {
|
|
217
|
+
if (m.id === completedMessageId) {
|
|
218
|
+
// When animation completes, mark animation as complete and ensure tool calls are properly set
|
|
219
|
+
// If there are pending tool calls, move them to toolCalls only if they're completed
|
|
220
|
+
// (toolCalls should already be set from tool.completed events, but this is a fallback)
|
|
221
|
+
if (m.pendingToolCalls && m.pendingToolCalls.length > 0) {
|
|
222
|
+
console.log("Moving pending tool calls to visible for message:", m.id, m.pendingToolCalls);
|
|
223
|
+
// Only move if they have data (completed)
|
|
224
|
+
const completedPending = m.pendingToolCalls.filter(tc => tc.data);
|
|
225
|
+
return {
|
|
226
|
+
...m,
|
|
227
|
+
isStreaming: false,
|
|
228
|
+
animationComplete: true, // Mark animation as complete
|
|
229
|
+
toolCalls: completedPending.length > 0 ? completedPending : m.toolCalls,
|
|
230
|
+
pendingToolCalls: undefined
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// Mark animation as complete - buttons will show if toolCalls exist
|
|
235
|
+
return {
|
|
236
|
+
...m,
|
|
237
|
+
isStreaming: false,
|
|
238
|
+
animationComplete: true // Mark animation as complete
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return m;
|
|
243
|
+
}));
|
|
244
|
+
// Reset for next animation
|
|
245
|
+
prevAnimatingIdRef.current = null;
|
|
246
|
+
}
|
|
247
|
+
}, [animatingMessageId]);
|
|
248
|
+
// =========================================
|
|
249
|
+
// Helper Functions
|
|
250
|
+
// =========================================
|
|
251
|
+
/**
|
|
252
|
+
* Scroll Handling Logic
|
|
253
|
+
* Detects if the user is scrolling up to disable auto-scroll.
|
|
254
|
+
*/
|
|
255
|
+
const handleScroll = () => {
|
|
256
|
+
if (!chatContainerRef.current)
|
|
257
|
+
return;
|
|
258
|
+
const { scrollTop, scrollHeight, clientHeight } = chatContainerRef.current;
|
|
259
|
+
// If user is within 50px of the bottom, we consider them "at the bottom"
|
|
260
|
+
const isAtBottom = scrollHeight - scrollTop - clientHeight < 50;
|
|
261
|
+
if (isAtBottom) {
|
|
262
|
+
setUserScrolledUp(false);
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
setUserScrolledUp(true);
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
269
|
+
* Manually scrolls the chat to the absolute bottom.
|
|
270
|
+
*/
|
|
271
|
+
const handleScrollToBottom = () => {
|
|
272
|
+
scrollEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
273
|
+
setUserScrolledUp(false);
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* Auto-resizes the textarea based on content height.
|
|
277
|
+
* Capped at MAX_TEXTAREA_LINES to prevent it from growing too large.
|
|
278
|
+
*/
|
|
279
|
+
const adjustTextareaHeight = () => {
|
|
280
|
+
const el = textareaRef.current;
|
|
281
|
+
if (!el)
|
|
282
|
+
return;
|
|
283
|
+
const maxHeight = LINE_HEIGHT_PX * MAX_TEXTAREA_LINES;
|
|
284
|
+
el.style.height = 'auto';
|
|
285
|
+
const newHeight = Math.min(el.scrollHeight, maxHeight);
|
|
286
|
+
const finalHeight = Math.max(newHeight, LINE_HEIGHT_PX);
|
|
287
|
+
el.style.height = `${finalHeight}px`;
|
|
288
|
+
};
|
|
289
|
+
// Trigger resize whenever input changes
|
|
290
|
+
useEffect(() => {
|
|
291
|
+
adjustTextareaHeight();
|
|
292
|
+
}, [input]);
|
|
293
|
+
/**
|
|
294
|
+
* Handles the action of sending a message.
|
|
295
|
+
* 1. Validates that input is not empty and no stream is active.
|
|
296
|
+
* 2. Resets the user scroll state so the chat follows the new stream.
|
|
297
|
+
* 3. Calls the core `sendMessage` logic.
|
|
298
|
+
*
|
|
299
|
+
* @param text - Optional text to send. If not provided, uses `input` state.
|
|
300
|
+
*/
|
|
301
|
+
const handleSend = (text) => {
|
|
302
|
+
const textToSend = text || input;
|
|
303
|
+
if (!textToSend.trim() || isStreaming)
|
|
304
|
+
return;
|
|
305
|
+
// Reset scroll state and follow stream immediately
|
|
306
|
+
setUserScrolledUp(false);
|
|
307
|
+
setTimeout(() => {
|
|
308
|
+
scrollEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
309
|
+
}, 0);
|
|
310
|
+
// FORCE CLEAR REFS to prevent ghost text from previous sessions
|
|
311
|
+
charBufferRef.current = "";
|
|
312
|
+
displayedContentRef.current = "";
|
|
313
|
+
sendMessage({
|
|
314
|
+
input,
|
|
315
|
+
setInput,
|
|
316
|
+
isStreaming,
|
|
317
|
+
setIsStreaming,
|
|
318
|
+
setMessages,
|
|
319
|
+
controllerRef,
|
|
320
|
+
conversationIdRef,
|
|
321
|
+
charBufferRef,
|
|
322
|
+
setAnimatingMessageId,
|
|
323
|
+
animatingMessageId,
|
|
324
|
+
setDisplayedChars,
|
|
325
|
+
setStreamingComplete,
|
|
326
|
+
textFromInput: textToSend,
|
|
327
|
+
resetAnimationState: () => {
|
|
328
|
+
// Callback to clear the detached ref state from outside
|
|
329
|
+
displayedContentRef.current = "";
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
};
|
|
333
|
+
/**
|
|
334
|
+
* Stops the current stream immediately.
|
|
335
|
+
* Aborts the network request and finalizes the message state.
|
|
336
|
+
*/
|
|
337
|
+
const handleStop = () => {
|
|
338
|
+
stopStreaming({
|
|
339
|
+
controllerRef,
|
|
340
|
+
setIsStreaming,
|
|
341
|
+
animatingMessageId,
|
|
342
|
+
charBufferRef,
|
|
343
|
+
setMessages,
|
|
344
|
+
setAnimatingMessageId,
|
|
345
|
+
setDisplayedChars,
|
|
346
|
+
setStreamingComplete
|
|
347
|
+
});
|
|
348
|
+
};
|
|
349
|
+
return (React.createElement("div", { className: "chat-gpt-interface" },
|
|
350
|
+
React.createElement("div", { className: "chat-scroll-area", ref: chatContainerRef, onScroll: handleScroll },
|
|
351
|
+
messages.length === 0 ? (React.createElement("div", { className: "empty-state-container" },
|
|
352
|
+
React.createElement("div", { className: "empty-state-content" },
|
|
353
|
+
React.createElement("div", { className: "logo-placeholder" },
|
|
354
|
+
React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" },
|
|
355
|
+
React.createElement("path", { d: "M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm0 18a8 8 0 1 1 8-8 8 8 0 0 1-8 8z" }),
|
|
356
|
+
React.createElement("path", { d: "M12 6v6l4 2" }))),
|
|
357
|
+
React.createElement("h2", null, "How can I help you today?"),
|
|
358
|
+
React.createElement("div", { className: "capabilities-grid" },
|
|
359
|
+
React.createElement("div", { className: "capability-card" }, "Generate a checklist for a project"),
|
|
360
|
+
React.createElement("div", { className: "capability-card" }, "Analyze this data set"),
|
|
361
|
+
React.createElement("div", { className: "capability-card" }, "Translate text to Spanish"))))) : (messages.map((m) => {
|
|
362
|
+
const isUser = m.role === "user";
|
|
363
|
+
return (React.createElement("div", { key: m.id, className: `message-row ${m.role}` },
|
|
364
|
+
React.createElement("div", { className: "message-content-container" },
|
|
365
|
+
React.createElement("div", { className: `avatar ${isUser ? 'user-avatar' : 'assistant-avatar'}` }, isUser ? (React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
366
|
+
React.createElement("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
|
|
367
|
+
React.createElement("circle", { cx: "12", cy: "7", r: "4" }))) : (React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
368
|
+
React.createElement("rect", { x: "3", y: "11", width: "18", height: "10", rx: "2" }),
|
|
369
|
+
React.createElement("circle", { cx: "12", cy: "5", r: "2" }),
|
|
370
|
+
React.createElement("path", { d: "M12 7v4" }),
|
|
371
|
+
React.createElement("line", { x1: "8", y1: "16", x2: "8", y2: "16" }),
|
|
372
|
+
React.createElement("line", { x1: "16", y1: "16", x2: "16", y2: "16" })))),
|
|
373
|
+
React.createElement("div", { className: "text-content" }, isUser ? (React.createElement("p", { style: { whiteSpace: 'pre-wrap' } }, m.content)) : (React.createElement(React.Fragment, null,
|
|
374
|
+
!m.content && !m.status && (React.createElement("div", { className: "typing-indicator", style: {
|
|
375
|
+
display: 'flex',
|
|
376
|
+
gap: '4px',
|
|
377
|
+
padding: '8px 0'
|
|
378
|
+
} },
|
|
379
|
+
React.createElement("span", { className: "dot", style: {
|
|
380
|
+
width: '8px',
|
|
381
|
+
height: '8px',
|
|
382
|
+
backgroundColor: '#94a3b8',
|
|
383
|
+
borderRadius: '50%',
|
|
384
|
+
animation: 'typingDot 1.4s infinite ease-in-out',
|
|
385
|
+
animationDelay: '0s'
|
|
386
|
+
} }),
|
|
387
|
+
React.createElement("span", { className: "dot", style: {
|
|
388
|
+
width: '8px',
|
|
389
|
+
height: '8px',
|
|
390
|
+
backgroundColor: '#94a3b8',
|
|
391
|
+
borderRadius: '50%',
|
|
392
|
+
animation: 'typingDot 1.4s infinite ease-in-out',
|
|
393
|
+
animationDelay: '0.2s'
|
|
394
|
+
} }),
|
|
395
|
+
React.createElement("span", { className: "dot", style: {
|
|
396
|
+
width: '8px',
|
|
397
|
+
height: '8px',
|
|
398
|
+
backgroundColor: '#94a3b8',
|
|
399
|
+
borderRadius: '50%',
|
|
400
|
+
animation: 'typingDot 1.4s infinite ease-in-out',
|
|
401
|
+
animationDelay: '0.4s'
|
|
402
|
+
} }),
|
|
403
|
+
React.createElement("style", null, `
|
|
404
|
+
@keyframes typingDot {
|
|
405
|
+
0%, 60%, 100% {
|
|
406
|
+
transform: translateY(0);
|
|
407
|
+
opacity: 0.7;
|
|
408
|
+
}
|
|
409
|
+
30% {
|
|
410
|
+
transform: translateY(-10px);
|
|
411
|
+
opacity: 1;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
`))),
|
|
415
|
+
React.createElement(ReactMarkdown, null, m.content),
|
|
416
|
+
m.role === 'assistant' && (() => {
|
|
417
|
+
console.log(`🔍 Button visibility for message ${m.id}:`, {
|
|
418
|
+
hasToolCalls: !!m.toolCalls,
|
|
419
|
+
toolCallsLength: m.toolCalls?.length || 0,
|
|
420
|
+
toolCalls: m.toolCalls,
|
|
421
|
+
animationComplete: m.animationComplete,
|
|
422
|
+
shouldShow: !!(m.toolCalls && m.toolCalls.length > 0 && m.animationComplete)
|
|
423
|
+
});
|
|
424
|
+
return null;
|
|
425
|
+
})(),
|
|
426
|
+
m.toolCalls && m.toolCalls.length > 0 && m.animationComplete && (React.createElement("div", { className: "tool-actions", style: { marginTop: '12px', display: 'flex', gap: '8px', flexWrap: 'wrap' } }, m.toolCalls.map((tool, idx) => (React.createElement("button", { key: idx, onClick: () => {
|
|
427
|
+
const handler = TOOL_HANDLERS[tool.tool];
|
|
428
|
+
if (handler && tool.data)
|
|
429
|
+
handler(tool.data);
|
|
430
|
+
}, style: {
|
|
431
|
+
background: 'linear-gradient(135deg, #6366f1 0%, #4f46e5 100%)',
|
|
432
|
+
border: 'none',
|
|
433
|
+
padding: '8px 16px',
|
|
434
|
+
borderRadius: '8px',
|
|
435
|
+
color: 'white',
|
|
436
|
+
fontSize: '0.85rem',
|
|
437
|
+
fontWeight: 500,
|
|
438
|
+
cursor: 'pointer',
|
|
439
|
+
display: 'flex',
|
|
440
|
+
alignItems: 'center',
|
|
441
|
+
gap: '6px',
|
|
442
|
+
boxShadow: '0 4px 6px -1px rgba(99, 102, 241, 0.3)',
|
|
443
|
+
transition: 'transform 0.2s, box-shadow 0.2s'
|
|
444
|
+
}, onMouseOver: (e) => { e.currentTarget.style.transform = 'translateY(-1px)'; }, onMouseOut: (e) => { e.currentTarget.style.transform = 'translateY(0)'; } },
|
|
445
|
+
React.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
446
|
+
React.createElement("path", { d: "M22 11.08V12a10 10 0 1 1-5.93-9.14" }),
|
|
447
|
+
React.createElement("polyline", { points: "22 4 12 14.01 9 11.01" })),
|
|
448
|
+
"View ",
|
|
449
|
+
tool.tool === 'generate_checklist' ? 'Checklist' : 'Result'))))),
|
|
450
|
+
m.status && (React.createElement("div", { className: "agent-status-indicator", style: {
|
|
451
|
+
marginTop: '8px',
|
|
452
|
+
fontSize: '0.8rem',
|
|
453
|
+
color: '#64748b',
|
|
454
|
+
display: 'flex',
|
|
455
|
+
alignItems: 'center',
|
|
456
|
+
gap: '6px',
|
|
457
|
+
fontStyle: 'italic'
|
|
458
|
+
} },
|
|
459
|
+
React.createElement("span", { className: "pulsing-dot", style: {
|
|
460
|
+
width: '6px',
|
|
461
|
+
height: '6px',
|
|
462
|
+
backgroundColor: '#6366f1',
|
|
463
|
+
borderRadius: '50%',
|
|
464
|
+
display: 'inline-block',
|
|
465
|
+
animation: 'pulse 1.5s infinite'
|
|
466
|
+
} }),
|
|
467
|
+
m.status,
|
|
468
|
+
React.createElement("style", null, `
|
|
469
|
+
@keyframes pulse {
|
|
470
|
+
0% { transform: scale(0.95); opacity: 0.7; }
|
|
471
|
+
50% { transform: scale(1.15); opacity: 1; }
|
|
472
|
+
100% { transform: scale(0.95); opacity: 0.7; }
|
|
473
|
+
}
|
|
474
|
+
`)))))))));
|
|
475
|
+
})),
|
|
476
|
+
React.createElement("div", { ref: scrollEndRef })),
|
|
477
|
+
React.createElement("div", { className: "input-area-container" },
|
|
478
|
+
userScrolledUp && messages.length > 0 && (React.createElement("button", { className: "scroll-bottom-btn", onClick: handleScrollToBottom },
|
|
479
|
+
React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
480
|
+
React.createElement("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
|
|
481
|
+
React.createElement("polyline", { points: "19 12 12 19 5 12" })))),
|
|
482
|
+
messages.length > 0 && (React.createElement("div", { className: "new-chat-floater" },
|
|
483
|
+
React.createElement("button", { className: "new-chat-btn", onClick: () => {
|
|
484
|
+
setMessages([]);
|
|
485
|
+
charBufferRef.current = "";
|
|
486
|
+
setDisplayedChars("");
|
|
487
|
+
setStreamingComplete(false);
|
|
488
|
+
setAnimatingMessageId(null);
|
|
489
|
+
setUserScrolledUp(false);
|
|
490
|
+
conversationIdRef.current = uuidv4();
|
|
491
|
+
}, title: "Start new chat" },
|
|
492
|
+
React.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
493
|
+
React.createElement("path", { d: "M12 5v14M5 12h14" })),
|
|
494
|
+
React.createElement("span", null, "New Chat")))),
|
|
495
|
+
React.createElement("div", { className: "input-wrapper" },
|
|
496
|
+
React.createElement("div", { className: "input-box user-specific-design" },
|
|
497
|
+
React.createElement("div", { className: "input-top-row" },
|
|
498
|
+
React.createElement("textarea", { ref: textareaRef, rows: 1, placeholder: "Ask anything (Ctrl+L), @ to mention, / for workflows", value: input, onChange: (e) => setInput(e.target.value), disabled: isStreaming || animatingMessageId !== null, onKeyDown: (e) => {
|
|
499
|
+
if (e.key === "Enter" && !e.shiftKey && !isStreaming && !animatingMessageId) {
|
|
500
|
+
e.preventDefault();
|
|
501
|
+
handleSend(input);
|
|
502
|
+
}
|
|
503
|
+
} })),
|
|
504
|
+
React.createElement("div", { className: "input-bottom-row" },
|
|
505
|
+
React.createElement("div", { className: "left-controls" },
|
|
506
|
+
React.createElement("div", { className: "tools-section" },
|
|
507
|
+
React.createElement("div", { className: `tools-menu custom-dropdown-menu ${activeDropdown === 'tools' ? 'show' : ''}` },
|
|
508
|
+
React.createElement("div", { className: "tool-option", onClick: () => setActiveDropdown(null) },
|
|
509
|
+
React.createElement("span", { className: "icon-box purple" },
|
|
510
|
+
React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" },
|
|
511
|
+
React.createElement("path", { d: "M9 11l3 3L22 4" }),
|
|
512
|
+
React.createElement("path", { d: "M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11" }))),
|
|
513
|
+
React.createElement("div", { className: "text" },
|
|
514
|
+
React.createElement("span", { className: "title" }, "Checklist"))),
|
|
515
|
+
React.createElement("div", { className: "tool-option", onClick: () => setActiveDropdown(null) },
|
|
516
|
+
React.createElement("span", { className: "icon-box blue" },
|
|
517
|
+
React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2" },
|
|
518
|
+
React.createElement("circle", { cx: "12", cy: "12", r: "10" }),
|
|
519
|
+
React.createElement("line", { x1: "2", y1: "12", x2: "22", y2: "12" }),
|
|
520
|
+
React.createElement("path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" }))),
|
|
521
|
+
React.createElement("div", { className: "text" },
|
|
522
|
+
React.createElement("span", { className: "title" }, "Translate"))),
|
|
523
|
+
React.createElement("div", { className: "tool-option", onClick: () => setActiveDropdown(null) },
|
|
524
|
+
React.createElement("div", { className: "text", style: { paddingLeft: '4px', fontSize: '11px', color: '#666' } }, "More coming soon..."))),
|
|
525
|
+
React.createElement("button", { className: `control-btn plus-btn dropdown-trigger ${activeDropdown === 'tools' ? 'active' : ''}`, onClick: () => setActiveDropdown(activeDropdown === 'tools' ? null : 'tools'), title: "Add attachment / Tools" },
|
|
526
|
+
React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
527
|
+
React.createElement("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
|
|
528
|
+
React.createElement("line", { x1: "5", y1: "12", x2: "19", y2: "12" })))),
|
|
529
|
+
React.createElement("div", { className: "tools-section" },
|
|
530
|
+
React.createElement("div", { className: `tools-menu custom-dropdown-menu ${activeDropdown === 'mode' ? 'show' : ''}`, style: { width: '120px' } },
|
|
531
|
+
React.createElement("div", { className: "tool-option", onClick: () => setActiveDropdown(null) },
|
|
532
|
+
React.createElement("div", { className: "text" },
|
|
533
|
+
React.createElement("span", { className: "title" }, "Fast"))),
|
|
534
|
+
React.createElement("div", { className: "tool-option", onClick: () => setActiveDropdown(null) },
|
|
535
|
+
React.createElement("div", { className: "text" },
|
|
536
|
+
React.createElement("span", { className: "title" }, "Balanced")))),
|
|
537
|
+
React.createElement("button", { className: `mode-pill-btn dropdown-trigger ${activeDropdown === 'mode' ? 'active-mode' : ''}`, onClick: () => setActiveDropdown(activeDropdown === 'mode' ? null : 'mode') },
|
|
538
|
+
React.createElement("span", { className: "chevron" },
|
|
539
|
+
React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
540
|
+
React.createElement("polyline", { points: "18 15 12 9 6 15" }))),
|
|
541
|
+
React.createElement("span", null, "Fast"))),
|
|
542
|
+
React.createElement("div", { className: "tools-section" },
|
|
543
|
+
React.createElement("div", { className: `tools-menu custom-dropdown-menu ${activeDropdown === 'model' ? 'show' : ''}`, style: { width: '200px' } },
|
|
544
|
+
React.createElement("div", { className: "tool-option", onClick: () => setActiveDropdown(null) },
|
|
545
|
+
React.createElement("div", { className: "text" },
|
|
546
|
+
React.createElement("span", { className: "title" }, "GPT 4o-mini"))),
|
|
547
|
+
React.createElement("div", { className: "tool-option", onClick: () => setActiveDropdown(null) },
|
|
548
|
+
React.createElement("div", { className: "text" },
|
|
549
|
+
React.createElement("span", { className: "title" }, "GPT 4o"))),
|
|
550
|
+
React.createElement("div", { className: "tool-option", onClick: () => setActiveDropdown(null) },
|
|
551
|
+
React.createElement("div", { className: "text" },
|
|
552
|
+
React.createElement("span", { className: "title" }, "Gemini Pro 1.5")))),
|
|
553
|
+
React.createElement("button", { className: `mode-pill-btn active-mode dropdown-trigger ${activeDropdown === 'model' ? 'active-mode' : ''}`, onClick: () => setActiveDropdown(activeDropdown === 'model' ? null : 'model') },
|
|
554
|
+
React.createElement("span", { className: "chevron" },
|
|
555
|
+
React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
556
|
+
React.createElement("polyline", { points: "18 15 12 9 6 15" }))),
|
|
557
|
+
React.createElement("span", null, "GPT 4o-mini (High)")))),
|
|
558
|
+
React.createElement("div", { className: "right-controls" },
|
|
559
|
+
React.createElement("button", { className: `send-btn-circle ${input.trim() || isStreaming || animatingMessageId ? 'active' : ''}`, onClick: (isStreaming || animatingMessageId) ? handleStop : () => handleSend(input), disabled: (!input.trim() && !isStreaming && !animatingMessageId) }, (isStreaming || animatingMessageId) ? (
|
|
560
|
+
// Stop Square
|
|
561
|
+
React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor" },
|
|
562
|
+
React.createElement("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }))) : (
|
|
563
|
+
// Right Arrow
|
|
564
|
+
React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
565
|
+
React.createElement("line", { x1: "5", y1: "12", x2: "19", y2: "12" }),
|
|
566
|
+
React.createElement("polyline", { points: "12 5 19 12 12 19" })))))))),
|
|
567
|
+
React.createElement("div", { className: "footer-text" }, "Allowed to generate up to 2000 tokens per request."))));
|
|
568
|
+
};
|
|
569
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../views/fullscreen/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChecklistPreview.d.ts","sourceRoot":"","sources":["../../../views/tools/ChecklistPreview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,QAAA,MAAM,gBAAgB,yBAuCrB,CAAA;AAED,eAAe,gBAAgB,CAAA"}
|