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.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +218 -0
  3. package/dist/assets/data/types/index.d.ts +2 -0
  4. package/dist/assets/data/types/index.d.ts.map +1 -0
  5. package/dist/assets/data/types/index.js +2 -0
  6. package/dist/assets/data/types/index.js.map +1 -0
  7. package/dist/assets/data/types/redux/action.d.ts +8 -0
  8. package/dist/assets/data/types/redux/action.d.ts.map +1 -0
  9. package/dist/assets/data/types/redux/action.js +9 -0
  10. package/dist/assets/data/types/redux/action.js.map +1 -0
  11. package/dist/assets/data/types/redux/index.d.ts +2 -0
  12. package/dist/assets/data/types/redux/index.d.ts.map +1 -0
  13. package/dist/assets/data/types/redux/index.js +2 -0
  14. package/dist/assets/data/types/redux/index.js.map +1 -0
  15. package/dist/assets/data/types/vm/chatbot.d.ts +5 -0
  16. package/dist/assets/data/types/vm/chatbot.d.ts.map +1 -0
  17. package/dist/assets/data/types/vm/chatbot.js +8 -0
  18. package/dist/assets/data/types/vm/chatbot.js.map +1 -0
  19. package/dist/assets/data/types/vm/index.d.ts +2 -0
  20. package/dist/assets/data/types/vm/index.d.ts.map +1 -0
  21. package/dist/assets/data/types/vm/index.js +2 -0
  22. package/dist/assets/data/types/vm/index.js.map +1 -0
  23. package/dist/index.d.ts +14 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +20 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/redux/Provider.d.ts +11 -0
  28. package/dist/redux/Provider.d.ts.map +1 -0
  29. package/dist/redux/Provider.js +12 -0
  30. package/dist/redux/Provider.js.map +1 -0
  31. package/dist/redux/actions/index.d.ts +8 -0
  32. package/dist/redux/actions/index.d.ts.map +1 -0
  33. package/dist/redux/actions/index.js +73 -0
  34. package/dist/redux/actions/index.js.map +1 -0
  35. package/dist/redux/hooks.d.ts +6 -0
  36. package/dist/redux/hooks.d.ts.map +1 -0
  37. package/dist/redux/hooks.js +27 -0
  38. package/dist/redux/hooks.js.map +1 -0
  39. package/dist/redux/reducers/actions/general.d.ts +7 -0
  40. package/dist/redux/reducers/actions/general.d.ts.map +1 -0
  41. package/dist/redux/reducers/actions/general.js +16 -0
  42. package/dist/redux/reducers/actions/general.js.map +1 -0
  43. package/dist/redux/reducers/actions/index.d.ts +5 -0
  44. package/dist/redux/reducers/actions/index.d.ts.map +1 -0
  45. package/dist/redux/reducers/actions/index.js +8 -0
  46. package/dist/redux/reducers/actions/index.js.map +1 -0
  47. package/dist/redux/reducers/index.d.ts +4 -0
  48. package/dist/redux/reducers/index.d.ts.map +1 -0
  49. package/dist/redux/reducers/index.js +15 -0
  50. package/dist/redux/reducers/index.js.map +1 -0
  51. package/dist/redux/store.d.ts +11 -0
  52. package/dist/redux/store.d.ts.map +1 -0
  53. package/dist/redux/store.js +20 -0
  54. package/dist/redux/store.js.map +1 -0
  55. package/dist/styles.css +434 -0
  56. package/dist/utilities/API.d.ts +17 -0
  57. package/dist/utilities/API.d.ts.map +1 -0
  58. package/dist/utilities/API.js +71 -0
  59. package/dist/utilities/API.js.map +1 -0
  60. package/dist/utilities/external-tools.d.ts +19 -0
  61. package/dist/utilities/external-tools.d.ts.map +1 -0
  62. package/dist/utilities/external-tools.js +27 -0
  63. package/dist/utilities/external-tools.js.map +1 -0
  64. package/dist/views/fullscreen/index.d.ts +20 -0
  65. package/dist/views/fullscreen/index.d.ts.map +1 -0
  66. package/dist/views/fullscreen/index.functions.d.ts +38 -0
  67. package/dist/views/fullscreen/index.functions.d.ts.map +1 -0
  68. package/dist/views/fullscreen/index.functions.js +484 -0
  69. package/dist/views/fullscreen/index.functions.js.map +1 -0
  70. package/dist/views/fullscreen/index.js +569 -0
  71. package/dist/views/fullscreen/index.js.map +1 -0
  72. package/dist/views/tools/ChecklistPreview.d.ts +4 -0
  73. package/dist/views/tools/ChecklistPreview.d.ts.map +1 -0
  74. package/dist/views/tools/ChecklistPreview.js +29 -0
  75. package/dist/views/tools/ChecklistPreview.js.map +1 -0
  76. package/dist/views/tools/index.d.ts +6 -0
  77. package/dist/views/tools/index.d.ts.map +1 -0
  78. package/dist/views/tools/index.js +8 -0
  79. package/dist/views/tools/index.js.map +1 -0
  80. 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,4 @@
1
+ import React from 'react';
2
+ declare const ChecklistPreview: () => React.JSX.Element;
3
+ export default ChecklistPreview;
4
+ //# sourceMappingURL=ChecklistPreview.d.ts.map
@@ -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"}