@truefoundry/agent-ui-sdk 0.0.4 → 0.0.5
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/README.md +35 -1
- package/dist/index.d.ts +6 -14
- package/dist/index.js +97 -157
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +8 -7
package/dist/index.js
CHANGED
|
@@ -84,9 +84,9 @@ import {
|
|
|
84
84
|
|
|
85
85
|
// src/theme/defaultSlots.ts
|
|
86
86
|
import {
|
|
87
|
-
Accordion as
|
|
88
|
-
AccordionDetails as
|
|
89
|
-
AccordionSummary as
|
|
87
|
+
Accordion as Accordion2,
|
|
88
|
+
AccordionDetails as AccordionDetails2,
|
|
89
|
+
AccordionSummary as AccordionSummary2
|
|
90
90
|
} from "tfy-web-components/components/atoms/Accordion";
|
|
91
91
|
import Button2 from "tfy-web-components/components/atoms/Button";
|
|
92
92
|
import IconButton4 from "tfy-web-components/components/atoms/IconButton";
|
|
@@ -122,6 +122,15 @@ function ReasoningCard(props) {
|
|
|
122
122
|
return /* @__PURE__ */ jsx9(TfyReasoningCard, { ...props });
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
// src/atoms/adapters/AgentStepsCardAdapter.tsx
|
|
126
|
+
import {
|
|
127
|
+
AgentStepsCard as TfyAgentStepsCard
|
|
128
|
+
} from "tfy-web-components/components/molecules/agent-chat";
|
|
129
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
130
|
+
function AgentStepsCard(props) {
|
|
131
|
+
return /* @__PURE__ */ jsx10(TfyAgentStepsCard, { ...props });
|
|
132
|
+
}
|
|
133
|
+
|
|
125
134
|
// src/atoms/primitives/Avatar.tsx
|
|
126
135
|
import "react";
|
|
127
136
|
import TfyAvatar, {
|
|
@@ -137,12 +146,12 @@ function cn(...inputs) {
|
|
|
137
146
|
}
|
|
138
147
|
|
|
139
148
|
// src/atoms/primitives/Avatar.tsx
|
|
140
|
-
import { jsx as
|
|
149
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
141
150
|
var AvatarRoot = TfyAvatar;
|
|
142
151
|
var AvatarImagePrimitive = TfyAvatarImage;
|
|
143
152
|
var AvatarFallbackPrimitive = TfyAvatarFallback;
|
|
144
153
|
function Avatar({ className, size = "default", ...props }) {
|
|
145
|
-
return /* @__PURE__ */
|
|
154
|
+
return /* @__PURE__ */ jsx11(
|
|
146
155
|
AvatarRoot,
|
|
147
156
|
{
|
|
148
157
|
"data-slot": "avatar",
|
|
@@ -154,15 +163,15 @@ function Avatar({ className, size = "default", ...props }) {
|
|
|
154
163
|
);
|
|
155
164
|
}
|
|
156
165
|
function AvatarImage({ className, ...props }) {
|
|
157
|
-
return /* @__PURE__ */
|
|
166
|
+
return /* @__PURE__ */ jsx11(AvatarImagePrimitive, { "data-slot": "avatar-image", className: cn(className), ...props });
|
|
158
167
|
}
|
|
159
168
|
function AvatarFallback({ className, ...props }) {
|
|
160
|
-
return /* @__PURE__ */
|
|
169
|
+
return /* @__PURE__ */ jsx11(AvatarFallbackPrimitive, { "data-slot": "avatar-fallback", className: cn(className), ...props });
|
|
161
170
|
}
|
|
162
171
|
|
|
163
172
|
// src/atoms/UserMessageBubble.tsx
|
|
164
173
|
import { UserMessage } from "tfy-web-components/components/molecules/agent-chat";
|
|
165
|
-
import { jsx as
|
|
174
|
+
import { jsx as jsx12, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
166
175
|
function UserMessageBubble({ text, attachments, editAction, className }) {
|
|
167
176
|
return /* @__PURE__ */ jsxs3(
|
|
168
177
|
"div",
|
|
@@ -171,7 +180,7 @@ function UserMessageBubble({ text, attachments, editAction, className }) {
|
|
|
171
180
|
className: cn("fade-in slide-in-from-bottom-1 animate-in duration-150", className),
|
|
172
181
|
children: [
|
|
173
182
|
attachments,
|
|
174
|
-
/* @__PURE__ */
|
|
183
|
+
/* @__PURE__ */ jsx12(UserMessage, { text, editAction })
|
|
175
184
|
]
|
|
176
185
|
}
|
|
177
186
|
);
|
|
@@ -180,9 +189,9 @@ function UserMessageBubble({ text, attachments, editAction, className }) {
|
|
|
180
189
|
// src/atoms/UserMessageEdit.tsx
|
|
181
190
|
import { forwardRef } from "react";
|
|
182
191
|
import TfyUserMessageEdit from "tfy-web-components/components/molecules/agent-chat/UserMessageEdit";
|
|
183
|
-
import { jsx as
|
|
192
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
184
193
|
var UserMessageEdit = forwardRef(function UserMessageEdit2({ timestamp, attachments, input, footer, className, ...rest }, ref) {
|
|
185
|
-
return /* @__PURE__ */
|
|
194
|
+
return /* @__PURE__ */ jsx13(
|
|
186
195
|
TfyUserMessageEdit,
|
|
187
196
|
{
|
|
188
197
|
ref,
|
|
@@ -201,10 +210,10 @@ var UserMessageEdit = forwardRef(function UserMessageEdit2({ timestamp, attachme
|
|
|
201
210
|
import {
|
|
202
211
|
ToolCallCard as TfyToolCallCard
|
|
203
212
|
} from "tfy-web-components/components/molecules/agent-chat";
|
|
204
|
-
import { jsx as
|
|
213
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
205
214
|
function ToolCallCard(props) {
|
|
206
215
|
const { mcpServerName, ...tfyProps } = props;
|
|
207
|
-
return /* @__PURE__ */
|
|
216
|
+
return /* @__PURE__ */ jsx14(
|
|
208
217
|
TfyToolCallCard,
|
|
209
218
|
{
|
|
210
219
|
...tfyProps,
|
|
@@ -217,14 +226,14 @@ function ToolCallCard(props) {
|
|
|
217
226
|
import {
|
|
218
227
|
ToolCallContentBlock as TfyToolCallContentBlock
|
|
219
228
|
} from "tfy-web-components/components/molecules/agent-chat";
|
|
220
|
-
import { jsx as
|
|
229
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
221
230
|
function ToolCallContentBlock(props) {
|
|
222
|
-
return /* @__PURE__ */
|
|
231
|
+
return /* @__PURE__ */ jsx15(TfyToolCallContentBlock, { ...props });
|
|
223
232
|
}
|
|
224
233
|
|
|
225
234
|
// src/atoms/SubAgentCard.tsx
|
|
226
235
|
import { SubAgentCard as TfySubAgentCard } from "tfy-web-components/components/molecules/agent-chat";
|
|
227
|
-
import { jsx as
|
|
236
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
228
237
|
function SubAgentCard({
|
|
229
238
|
agentName,
|
|
230
239
|
instruction,
|
|
@@ -237,7 +246,7 @@ function SubAgentCard({
|
|
|
237
246
|
className
|
|
238
247
|
}) {
|
|
239
248
|
const Markdown2 = useSlot("Markdown");
|
|
240
|
-
return /* @__PURE__ */
|
|
249
|
+
return /* @__PURE__ */ jsx16(
|
|
241
250
|
TfySubAgentCard,
|
|
242
251
|
{
|
|
243
252
|
agentName,
|
|
@@ -247,7 +256,7 @@ function SubAgentCard({
|
|
|
247
256
|
expanded,
|
|
248
257
|
onToggle,
|
|
249
258
|
durationText,
|
|
250
|
-
renderInstruction: (content) => /* @__PURE__ */
|
|
259
|
+
renderInstruction: (content) => /* @__PURE__ */ jsx16(Markdown2, { content }),
|
|
251
260
|
className: cn("aui-sub-agent-card", className),
|
|
252
261
|
children
|
|
253
262
|
}
|
|
@@ -259,7 +268,7 @@ import {
|
|
|
259
268
|
SandboxToolCall,
|
|
260
269
|
ToolCallCard as TfyToolCallCard2
|
|
261
270
|
} from "tfy-web-components/components/molecules/agent-chat";
|
|
262
|
-
import { jsx as
|
|
271
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
263
272
|
function SandboxToolCallCard({
|
|
264
273
|
name,
|
|
265
274
|
intent,
|
|
@@ -278,7 +287,7 @@ function SandboxToolCallCard({
|
|
|
278
287
|
className
|
|
279
288
|
}) {
|
|
280
289
|
const awaiting = status === "running";
|
|
281
|
-
const sandboxContent = /* @__PURE__ */
|
|
290
|
+
const sandboxContent = /* @__PURE__ */ jsx17(
|
|
282
291
|
SandboxToolCall,
|
|
283
292
|
{
|
|
284
293
|
command,
|
|
@@ -291,7 +300,7 @@ function SandboxToolCallCard({
|
|
|
291
300
|
onViewModeChange
|
|
292
301
|
}
|
|
293
302
|
);
|
|
294
|
-
return /* @__PURE__ */
|
|
303
|
+
return /* @__PURE__ */ jsx17(
|
|
295
304
|
TfyToolCallCard2,
|
|
296
305
|
{
|
|
297
306
|
toolName: intent || name,
|
|
@@ -312,9 +321,9 @@ function SandboxToolCallCard({
|
|
|
312
321
|
import {
|
|
313
322
|
ToolApprovalBlock
|
|
314
323
|
} from "tfy-web-components/components/molecules/agent-chat";
|
|
315
|
-
import { jsx as
|
|
324
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
316
325
|
function ToolApprovalBar({ className, ...props }) {
|
|
317
|
-
return /* @__PURE__ */
|
|
326
|
+
return /* @__PURE__ */ jsx18(
|
|
318
327
|
ToolApprovalBlock,
|
|
319
328
|
{
|
|
320
329
|
...props,
|
|
@@ -326,7 +335,7 @@ function ToolApprovalBar({ className, ...props }) {
|
|
|
326
335
|
// src/atoms/ToolGroupCard.tsx
|
|
327
336
|
import { ChevronDownIcon, LoaderIcon } from "lucide-react";
|
|
328
337
|
import { Accordion, AccordionDetails, AccordionSummary } from "tfy-web-components/components/atoms/Accordion";
|
|
329
|
-
import { jsx as
|
|
338
|
+
import { jsx as jsx19, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
330
339
|
function ToolGroupCard({
|
|
331
340
|
toolCallCount,
|
|
332
341
|
expanded,
|
|
@@ -346,7 +355,7 @@ function ToolGroupCard({
|
|
|
346
355
|
className: cn("aui-tool-group-card group/tool-group w-full", className),
|
|
347
356
|
sx: { margin: 0, border: "none", boxShadow: "none" },
|
|
348
357
|
children: [
|
|
349
|
-
/* @__PURE__ */
|
|
358
|
+
/* @__PURE__ */ jsx19(
|
|
350
359
|
AccordionSummary,
|
|
351
360
|
{
|
|
352
361
|
hideIcon: true,
|
|
@@ -359,9 +368,9 @@ function ToolGroupCard({
|
|
|
359
368
|
"& .MuiAccordionSummary-content": { margin: 0, width: "100%" }
|
|
360
369
|
},
|
|
361
370
|
children: /* @__PURE__ */ jsxs4("div", { className: "text-muted-foreground hover:text-foreground flex origin-left items-center gap-2 py-1.5 text-sm transition-[color,scale] active:scale-[0.98]", children: [
|
|
362
|
-
active && /* @__PURE__ */
|
|
363
|
-
/* @__PURE__ */
|
|
364
|
-
/* @__PURE__ */
|
|
371
|
+
active && /* @__PURE__ */ jsx19(LoaderIcon, { className: "size-3 shrink-0 animate-spin [animation-duration:0.6s]" }),
|
|
372
|
+
/* @__PURE__ */ jsx19("span", { className: "text-xs font-medium", children: label }),
|
|
373
|
+
/* @__PURE__ */ jsx19(
|
|
365
374
|
ChevronDownIcon,
|
|
366
375
|
{
|
|
367
376
|
className: cn(
|
|
@@ -373,76 +382,7 @@ function ToolGroupCard({
|
|
|
373
382
|
] })
|
|
374
383
|
}
|
|
375
384
|
),
|
|
376
|
-
/* @__PURE__ */
|
|
377
|
-
]
|
|
378
|
-
}
|
|
379
|
-
);
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
// src/atoms/AgentStepsCard.tsx
|
|
383
|
-
import { LoaderIcon as LoaderIcon2 } from "lucide-react";
|
|
384
|
-
import { Accordion as Accordion2, AccordionDetails as AccordionDetails2, AccordionSummary as AccordionSummary2 } from "tfy-web-components/components/atoms/Accordion";
|
|
385
|
-
import IconProvider from "tfy-web-components/components/atoms/IconProvider";
|
|
386
|
-
import { jsx as jsx19, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
387
|
-
function AgentStepsCard({
|
|
388
|
-
toolCount,
|
|
389
|
-
thinkingCount,
|
|
390
|
-
expanded,
|
|
391
|
-
active = false,
|
|
392
|
-
onToggle,
|
|
393
|
-
children,
|
|
394
|
-
className
|
|
395
|
-
}) {
|
|
396
|
-
const toolLabel = `${toolCount} tool ${toolCount === 1 ? "call" : "calls"}`;
|
|
397
|
-
const thinkingLabel = thinkingCount > 0 ? ` \xB7 ${thinkingCount} thought${thinkingCount === 1 ? "" : "s"}` : "";
|
|
398
|
-
return /* @__PURE__ */ jsxs5(
|
|
399
|
-
Accordion2,
|
|
400
|
-
{
|
|
401
|
-
"data-slot": "agent-steps-card",
|
|
402
|
-
expanded,
|
|
403
|
-
onChange: () => onToggle(),
|
|
404
|
-
background: "transparent",
|
|
405
|
-
className: cn("aui-agent-steps-card rounded-lg border border-border/50 bg-secondary/20", className),
|
|
406
|
-
sx: { margin: 0, boxShadow: "none" },
|
|
407
|
-
children: [
|
|
408
|
-
/* @__PURE__ */ jsx19(
|
|
409
|
-
AccordionSummary2,
|
|
410
|
-
{
|
|
411
|
-
hideIcon: true,
|
|
412
|
-
disableRipple: true,
|
|
413
|
-
sx: {
|
|
414
|
-
padding: 0,
|
|
415
|
-
minHeight: 0,
|
|
416
|
-
"&.Mui-expanded": { minHeight: 0 },
|
|
417
|
-
"& .MuiAccordionSummary-content": { margin: 0, width: "100%" }
|
|
418
|
-
},
|
|
419
|
-
children: /* @__PURE__ */ jsxs5(
|
|
420
|
-
"button",
|
|
421
|
-
{
|
|
422
|
-
type: "button",
|
|
423
|
-
className: "flex w-full items-center gap-2 rounded-t-lg py-2 px-2.5 text-left text-xs transition-colors hover:bg-secondary/40",
|
|
424
|
-
children: [
|
|
425
|
-
/* @__PURE__ */ jsx19(
|
|
426
|
-
IconProvider,
|
|
427
|
-
{
|
|
428
|
-
icon: expanded ? "chevron-down" : "chevron-right",
|
|
429
|
-
size: 0.75,
|
|
430
|
-
className: "shrink-0 text-muted-foreground"
|
|
431
|
-
}
|
|
432
|
-
),
|
|
433
|
-
/* @__PURE__ */ jsx19("span", { className: "font-semibold text-foreground/90", children: "Agent steps" }),
|
|
434
|
-
/* @__PURE__ */ jsxs5("span", { className: "text-muted-foreground", children: [
|
|
435
|
-
"\xB7 ",
|
|
436
|
-
toolLabel,
|
|
437
|
-
thinkingLabel
|
|
438
|
-
] }),
|
|
439
|
-
active && /* @__PURE__ */ jsx19(LoaderIcon2, { className: "ml-auto size-3 shrink-0 animate-spin text-primary" })
|
|
440
|
-
]
|
|
441
|
-
}
|
|
442
|
-
)
|
|
443
|
-
}
|
|
444
|
-
),
|
|
445
|
-
/* @__PURE__ */ jsx19(AccordionDetails2, { sx: { padding: 0 }, children: /* @__PURE__ */ jsx19("div", { className: "space-y-3 border-t border-border/50 px-1.5 py-1.5 pt-3", children }) })
|
|
385
|
+
/* @__PURE__ */ jsx19(AccordionDetails, { sx: { padding: 0 }, children: /* @__PURE__ */ jsx19("div", { className: "mt-1 flex flex-col gap-2 text-foreground", children }) })
|
|
446
386
|
]
|
|
447
387
|
}
|
|
448
388
|
);
|
|
@@ -450,9 +390,9 @@ function AgentStepsCard({
|
|
|
450
390
|
|
|
451
391
|
// src/atoms/Skeletons.tsx
|
|
452
392
|
import Skeleton from "tfy-web-components/components/atoms/Skeleton";
|
|
453
|
-
import { jsx as jsx20, jsxs as
|
|
393
|
+
import { jsx as jsx20, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
454
394
|
function MessageListSkeleton({ className }) {
|
|
455
|
-
return /* @__PURE__ */
|
|
395
|
+
return /* @__PURE__ */ jsxs5(
|
|
456
396
|
"div",
|
|
457
397
|
{
|
|
458
398
|
role: "status",
|
|
@@ -461,7 +401,7 @@ function MessageListSkeleton({ className }) {
|
|
|
461
401
|
className: cn("mb-14 flex flex-col gap-y-6", className),
|
|
462
402
|
children: [
|
|
463
403
|
/* @__PURE__ */ jsx20("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx20(Skeleton, { className: "h-10 w-[min(85%,20rem)] rounded-xl" }) }),
|
|
464
|
-
/* @__PURE__ */
|
|
404
|
+
/* @__PURE__ */ jsxs5("div", { className: "flex flex-col gap-2 px-2", children: [
|
|
465
405
|
/* @__PURE__ */ jsx20(Skeleton, { className: "h-4 w-full max-w-md" }),
|
|
466
406
|
/* @__PURE__ */ jsx20(Skeleton, { className: "h-4 w-full max-w-sm" }),
|
|
467
407
|
/* @__PURE__ */ jsx20(Skeleton, { className: "h-4 w-2/3 max-w-xs" })
|
|
@@ -472,7 +412,7 @@ function MessageListSkeleton({ className }) {
|
|
|
472
412
|
}
|
|
473
413
|
|
|
474
414
|
// src/atoms/ComposerShell.tsx
|
|
475
|
-
import { jsx as jsx21, jsxs as
|
|
415
|
+
import { jsx as jsx21, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
476
416
|
function ComposerShell({
|
|
477
417
|
value,
|
|
478
418
|
placeholder,
|
|
@@ -491,7 +431,7 @@ function ComposerShell({
|
|
|
491
431
|
const ComposerLeftSection2 = useSlot("ComposerLeftSection");
|
|
492
432
|
const ComposerRightSection2 = useSlot("ComposerRightSection");
|
|
493
433
|
const ComposerSendButton2 = useSlot("ComposerSendButton");
|
|
494
|
-
return /* @__PURE__ */
|
|
434
|
+
return /* @__PURE__ */ jsxs6(
|
|
495
435
|
"div",
|
|
496
436
|
{
|
|
497
437
|
"data-slot": "aui_composer-shell",
|
|
@@ -519,8 +459,8 @@ function ComposerShell({
|
|
|
519
459
|
className: "placeholder:text-muted-foreground/80 max-h-32 min-h-10 w-full resize-none rounded-lg bg-transparent px-2.5 py-1 text-base outline-none"
|
|
520
460
|
}
|
|
521
461
|
),
|
|
522
|
-
/* @__PURE__ */
|
|
523
|
-
/* @__PURE__ */
|
|
462
|
+
/* @__PURE__ */ jsxs6("div", { className: "flex items-center justify-between px-1", children: [
|
|
463
|
+
/* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2", children: [
|
|
524
464
|
/* @__PURE__ */ jsx21(
|
|
525
465
|
ComposerLeftSection2,
|
|
526
466
|
{
|
|
@@ -531,8 +471,8 @@ function ComposerShell({
|
|
|
531
471
|
),
|
|
532
472
|
connectorStatusLabel && /* @__PURE__ */ jsx21("span", { className: "text-muted-foreground text-xs", children: connectorStatusLabel })
|
|
533
473
|
] }),
|
|
534
|
-
/* @__PURE__ */
|
|
535
|
-
modelLabel && /* @__PURE__ */
|
|
474
|
+
/* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2", children: [
|
|
475
|
+
modelLabel && /* @__PURE__ */ jsxs6("span", { className: "bg-muted text-muted-foreground flex items-center gap-1 rounded-full px-2 py-0.5 text-xs", children: [
|
|
536
476
|
modelIcon,
|
|
537
477
|
modelLabel
|
|
538
478
|
] }),
|
|
@@ -556,7 +496,7 @@ function ComposerShell({
|
|
|
556
496
|
|
|
557
497
|
// src/atoms/ComposerSections.tsx
|
|
558
498
|
import Spinner from "tfy-web-components/components/atoms/Spinner";
|
|
559
|
-
import { Fragment, jsx as jsx22, jsxs as
|
|
499
|
+
import { Fragment, jsx as jsx22, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
560
500
|
function ComposerLeftSection({ onAttach }) {
|
|
561
501
|
const IconButton5 = useSlot("IconButton");
|
|
562
502
|
if (!onAttach) return null;
|
|
@@ -578,7 +518,7 @@ function ComposerSendButton({
|
|
|
578
518
|
{
|
|
579
519
|
disabled: !onCancel,
|
|
580
520
|
onClick: onCancel,
|
|
581
|
-
text: /* @__PURE__ */
|
|
521
|
+
text: /* @__PURE__ */ jsxs7(Fragment, { children: [
|
|
582
522
|
/* @__PURE__ */ jsx22(Spinner, { small: true }),
|
|
583
523
|
"Cancel"
|
|
584
524
|
] })
|
|
@@ -606,7 +546,7 @@ import { FileTextIcon } from "lucide-react";
|
|
|
606
546
|
var USER_MESSAGE_ATTACHMENT_PREVIEW_REM = 12;
|
|
607
547
|
|
|
608
548
|
// src/atoms/AttachmentCard.tsx
|
|
609
|
-
import { jsx as jsx23, jsxs as
|
|
549
|
+
import { jsx as jsx23, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
610
550
|
function AttachmentCard({
|
|
611
551
|
name,
|
|
612
552
|
previewSrc,
|
|
@@ -636,7 +576,7 @@ function AttachmentCard({
|
|
|
636
576
|
}
|
|
637
577
|
);
|
|
638
578
|
}
|
|
639
|
-
return /* @__PURE__ */
|
|
579
|
+
return /* @__PURE__ */ jsxs8(
|
|
640
580
|
"div",
|
|
641
581
|
{
|
|
642
582
|
"data-slot": "aui_attachment-chip",
|
|
@@ -646,7 +586,7 @@ function AttachmentCard({
|
|
|
646
586
|
className
|
|
647
587
|
),
|
|
648
588
|
children: [
|
|
649
|
-
/* @__PURE__ */ jsx23("div", { className: "bg-background flex size-7 shrink-0 items-center justify-center overflow-hidden rounded-md border", children: isImage && previewSrc ? /* @__PURE__ */
|
|
589
|
+
/* @__PURE__ */ jsx23("div", { className: "bg-background flex size-7 shrink-0 items-center justify-center overflow-hidden rounded-md border", children: isImage && previewSrc ? /* @__PURE__ */ jsxs8(Avatar2, { className: "size-7 rounded-none", children: [
|
|
650
590
|
/* @__PURE__ */ jsx23(AvatarImage2, { src: previewSrc, alt: name, className: "object-cover" }),
|
|
651
591
|
/* @__PURE__ */ jsx23(AvatarFallback2, { children: /* @__PURE__ */ jsx23(FileTextIcon, { className: "text-muted-foreground size-4" }) })
|
|
652
592
|
] }) : /* @__PURE__ */ jsx23(FileTextIcon, { className: "text-muted-foreground size-4" }) }),
|
|
@@ -683,12 +623,12 @@ function AttachmentPickerButton(props) {
|
|
|
683
623
|
// src/atoms/AttachmentPreviewDialog.tsx
|
|
684
624
|
import { useState } from "react";
|
|
685
625
|
import Modal from "tfy-web-components/components/atoms/Modal";
|
|
686
|
-
import { Fragment as Fragment2, jsx as jsx25, jsxs as
|
|
626
|
+
import { Fragment as Fragment2, jsx as jsx25, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
687
627
|
function AttachmentPreviewDialog({ previewSrc, children }) {
|
|
688
628
|
const IconButton5 = useSlot("IconButton");
|
|
689
629
|
const [open, setOpen] = useState(false);
|
|
690
630
|
if (!previewSrc) return /* @__PURE__ */ jsx25(Fragment2, { children });
|
|
691
|
-
return /* @__PURE__ */
|
|
631
|
+
return /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
692
632
|
/* @__PURE__ */ jsx25(
|
|
693
633
|
"div",
|
|
694
634
|
{
|
|
@@ -705,7 +645,7 @@ function AttachmentPreviewDialog({ previewSrc, children }) {
|
|
|
705
645
|
children
|
|
706
646
|
}
|
|
707
647
|
),
|
|
708
|
-
/* @__PURE__ */ jsx25(Modal, { open, onClose: () => setOpen(false), children: /* @__PURE__ */
|
|
648
|
+
/* @__PURE__ */ jsx25(Modal, { open, onClose: () => setOpen(false), children: /* @__PURE__ */ jsxs9("div", { className: "bg-popover fixed top-1/2 left-1/2 z-50 w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 rounded-xl p-2 outline-none sm:max-w-3xl", children: [
|
|
709
649
|
/* @__PURE__ */ jsx25("span", { className: "absolute top-2 right-2 z-10 inline-flex", children: /* @__PURE__ */ jsx25(IconButton5, { icon: "xmark", tooltip: "Close", onClick: () => setOpen(false) }) }),
|
|
710
650
|
/* @__PURE__ */ jsx25("div", { className: "bg-background relative mx-auto flex max-h-[80dvh] w-full items-center justify-center overflow-hidden", children: /* @__PURE__ */ jsx25(
|
|
711
651
|
"img",
|
|
@@ -751,12 +691,12 @@ var ScrollToBottomButton = forwardRef2(
|
|
|
751
691
|
ScrollToBottomButton.displayName = "ScrollToBottomButton";
|
|
752
692
|
|
|
753
693
|
// src/atoms/ThreadListRow.tsx
|
|
754
|
-
import
|
|
694
|
+
import IconProvider from "tfy-web-components/components/atoms/IconProvider";
|
|
755
695
|
import IconButton3 from "tfy-web-components/components/atoms/IconButton";
|
|
756
696
|
import DropdownMenu from "tfy-web-components/components/molecules/DropdownMenu";
|
|
757
|
-
import { jsx as jsx27, jsxs as
|
|
697
|
+
import { jsx as jsx27, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
758
698
|
function ThreadListRow({ title, active, onSelect, onArchive, onDelete, className }) {
|
|
759
|
-
return /* @__PURE__ */
|
|
699
|
+
return /* @__PURE__ */ jsxs10(
|
|
760
700
|
"div",
|
|
761
701
|
{
|
|
762
702
|
"data-slot": "aui_thread-list-item",
|
|
@@ -776,7 +716,7 @@ function ThreadListRow({ title, active, onSelect, onArchive, onDelete, className
|
|
|
776
716
|
children: /* @__PURE__ */ jsx27("span", { className: "min-w-0 flex-1 truncate", children: title })
|
|
777
717
|
}
|
|
778
718
|
),
|
|
779
|
-
(onArchive || onDelete) && /* @__PURE__ */ jsx27("div", { className: "absolute end-1.5 top-1/2 inline-flex -translate-y-1/2 opacity-0 group-hover:opacity-100", children: /* @__PURE__ */
|
|
719
|
+
(onArchive || onDelete) && /* @__PURE__ */ jsx27("div", { className: "absolute end-1.5 top-1/2 inline-flex -translate-y-1/2 opacity-0 group-hover:opacity-100", children: /* @__PURE__ */ jsxs10(
|
|
780
720
|
DropdownMenu,
|
|
781
721
|
{
|
|
782
722
|
trigger: /* @__PURE__ */ jsx27(
|
|
@@ -790,12 +730,12 @@ function ThreadListRow({ title, active, onSelect, onArchive, onDelete, className
|
|
|
790
730
|
side: "right",
|
|
791
731
|
align: "start",
|
|
792
732
|
children: [
|
|
793
|
-
onArchive && /* @__PURE__ */
|
|
794
|
-
/* @__PURE__ */ jsx27(
|
|
733
|
+
onArchive && /* @__PURE__ */ jsxs10(DropdownMenu.Item, { onClick: onArchive, children: [
|
|
734
|
+
/* @__PURE__ */ jsx27(IconProvider, { icon: "box-archive", size: 0.75 }),
|
|
795
735
|
"Archive"
|
|
796
736
|
] }),
|
|
797
|
-
onDelete && /* @__PURE__ */
|
|
798
|
-
/* @__PURE__ */ jsx27(
|
|
737
|
+
onDelete && /* @__PURE__ */ jsxs10(DropdownMenu.Item, { onClick: onDelete, className: "text-destructive hover:bg-destructive/10", children: [
|
|
738
|
+
/* @__PURE__ */ jsx27(IconProvider, { icon: "trash", size: 0.75 }),
|
|
799
739
|
"Delete"
|
|
800
740
|
] })
|
|
801
741
|
]
|
|
@@ -809,7 +749,7 @@ function ThreadListRow({ title, active, onSelect, onArchive, onDelete, className
|
|
|
809
749
|
// src/atoms/ThreadListMisc.tsx
|
|
810
750
|
import Button from "tfy-web-components/components/atoms/Button";
|
|
811
751
|
import Skeleton2 from "tfy-web-components/components/atoms/Skeleton";
|
|
812
|
-
import { jsx as jsx28, jsxs as
|
|
752
|
+
import { jsx as jsx28, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
813
753
|
function ThreadListNewButton({ className, ...rest }) {
|
|
814
754
|
return /* @__PURE__ */ jsx28(
|
|
815
755
|
Button.Ghost,
|
|
@@ -829,18 +769,18 @@ function ThreadListEmptyState({ message = "No threads yet", className }) {
|
|
|
829
769
|
return /* @__PURE__ */ jsx28("div", { className: cn("text-muted-foreground flex flex-1 items-center justify-center px-4 text-center text-sm", className), children: message });
|
|
830
770
|
}
|
|
831
771
|
function ThreadListShell({ header, children, className }) {
|
|
832
|
-
return /* @__PURE__ */
|
|
772
|
+
return /* @__PURE__ */ jsxs11("div", { className: cn("font-sans-flex flex min-h-0 flex-1 flex-col gap-1 overflow-hidden p-3", className), children: [
|
|
833
773
|
header,
|
|
834
774
|
/* @__PURE__ */ jsx28("div", { className: "flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto pb-1", children })
|
|
835
775
|
] });
|
|
836
776
|
}
|
|
837
777
|
|
|
838
778
|
// src/atoms/MessageActionBar.tsx
|
|
839
|
-
import { jsx as jsx29, jsxs as
|
|
779
|
+
import { jsx as jsx29, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
840
780
|
function MessageActionBar({ isCopied, onCopy, className }) {
|
|
841
781
|
const MessageTimestamp2 = useSlot("MessageTimestamp");
|
|
842
782
|
const IconButton5 = useSlot("IconButton");
|
|
843
|
-
return /* @__PURE__ */
|
|
783
|
+
return /* @__PURE__ */ jsxs12(
|
|
844
784
|
"div",
|
|
845
785
|
{
|
|
846
786
|
className: cn(
|
|
@@ -1012,7 +952,7 @@ function MessageTimestamp({ className }) {
|
|
|
1012
952
|
import { ActionBarPrimitive, useAuiState as useAuiState2 } from "@assistant-ui/react";
|
|
1013
953
|
import { useActionBarCopy, useActionBarEdit } from "@assistant-ui/core/react";
|
|
1014
954
|
import { useTrueFoundryResetFromTurn } from "@truefoundry/assistant-ui-runtime";
|
|
1015
|
-
import { jsx as jsx36, jsxs as
|
|
955
|
+
import { jsx as jsx36, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1016
956
|
function parseTurnIdFromMessageId(messageId) {
|
|
1017
957
|
return messageId.replace(/-user$/, "");
|
|
1018
958
|
}
|
|
@@ -1026,7 +966,7 @@ function UserMessageActionBar({ className }) {
|
|
|
1026
966
|
const { copy, isCopied } = useActionBarCopy({
|
|
1027
967
|
copyToClipboard: (text) => navigator.clipboard.writeText(text)
|
|
1028
968
|
});
|
|
1029
|
-
return /* @__PURE__ */
|
|
969
|
+
return /* @__PURE__ */ jsxs13(
|
|
1030
970
|
ActionBarPrimitive.Root,
|
|
1031
971
|
{
|
|
1032
972
|
hideWhenRunning: true,
|
|
@@ -1147,10 +1087,10 @@ function WelcomeScreen({ heading = "How can I help you today?", className }) {
|
|
|
1147
1087
|
|
|
1148
1088
|
// src/atoms/Toast.tsx
|
|
1149
1089
|
import { XIcon } from "lucide-react";
|
|
1150
|
-
import { jsx as jsx39, jsxs as
|
|
1090
|
+
import { jsx as jsx39, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1151
1091
|
function Toast({ title, description, open, onOpenChange, className }) {
|
|
1152
1092
|
if (!open) return null;
|
|
1153
|
-
return /* @__PURE__ */
|
|
1093
|
+
return /* @__PURE__ */ jsxs14(
|
|
1154
1094
|
"div",
|
|
1155
1095
|
{
|
|
1156
1096
|
className: cn(
|
|
@@ -1159,11 +1099,11 @@ function Toast({ title, description, open, onOpenChange, className }) {
|
|
|
1159
1099
|
className
|
|
1160
1100
|
),
|
|
1161
1101
|
children: [
|
|
1162
|
-
/* @__PURE__ */
|
|
1102
|
+
/* @__PURE__ */ jsxs14("div", { className: "grid min-h-0 min-w-0 flex-1 gap-1 overflow-y-auto pe-6", children: [
|
|
1163
1103
|
/* @__PURE__ */ jsx39("div", { className: "text-sm leading-none font-semibold", children: title }),
|
|
1164
1104
|
/* @__PURE__ */ jsx39("div", { className: "font-mono text-sm break-words whitespace-pre-wrap", children: description })
|
|
1165
1105
|
] }),
|
|
1166
|
-
/* @__PURE__ */
|
|
1106
|
+
/* @__PURE__ */ jsxs14(
|
|
1167
1107
|
"button",
|
|
1168
1108
|
{
|
|
1169
1109
|
onClick: () => onOpenChange(false),
|
|
@@ -1190,9 +1130,9 @@ var defaultSlots = {
|
|
|
1190
1130
|
LightTooltip,
|
|
1191
1131
|
Modal: Modal2,
|
|
1192
1132
|
Dialog,
|
|
1193
|
-
Accordion:
|
|
1194
|
-
AccordionSummary:
|
|
1195
|
-
AccordionDetails:
|
|
1133
|
+
Accordion: Accordion2,
|
|
1134
|
+
AccordionSummary: AccordionSummary2,
|
|
1135
|
+
AccordionDetails: AccordionDetails2,
|
|
1196
1136
|
Skeleton: Skeleton3,
|
|
1197
1137
|
ReasoningCard,
|
|
1198
1138
|
AskUserPrompt,
|
|
@@ -1344,9 +1284,9 @@ import { LightTooltip as LightTooltip2 } from "tfy-web-components/components/ato
|
|
|
1344
1284
|
import { default as default4 } from "tfy-web-components/components/atoms/Modal";
|
|
1345
1285
|
import { default as default5 } from "tfy-web-components/components/molecules/Dialog";
|
|
1346
1286
|
import {
|
|
1347
|
-
Accordion as
|
|
1348
|
-
AccordionSummary as
|
|
1349
|
-
AccordionDetails as
|
|
1287
|
+
Accordion as Accordion3,
|
|
1288
|
+
AccordionSummary as AccordionSummary3,
|
|
1289
|
+
AccordionDetails as AccordionDetails3
|
|
1350
1290
|
} from "tfy-web-components/components/atoms/Accordion";
|
|
1351
1291
|
import { default as default6 } from "tfy-web-components/components/atoms/Skeleton";
|
|
1352
1292
|
|
|
@@ -1452,7 +1392,7 @@ import { useTrueFoundryDownloadSandboxFile } from "@truefoundry/assistant-ui-run
|
|
|
1452
1392
|
// src/containers/ErrorToasterContainer.tsx
|
|
1453
1393
|
import { createContext as createContext4, useCallback as useCallback2, useContext as useContext4, useMemo as useMemo2, useState as useState3 } from "react";
|
|
1454
1394
|
import { TrueFoundryGatewayError } from "truefoundry-gateway-sdk";
|
|
1455
|
-
import { jsx as jsx41, jsxs as
|
|
1395
|
+
import { jsx as jsx41, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1456
1396
|
var ErrorToasterContext = createContext4(null);
|
|
1457
1397
|
function formatErrorBody(body) {
|
|
1458
1398
|
if (body == null) return void 0;
|
|
@@ -1485,7 +1425,7 @@ function ErrorToasterProvider({ children }) {
|
|
|
1485
1425
|
setOpen(true);
|
|
1486
1426
|
}, []);
|
|
1487
1427
|
const value = useMemo2(() => ({ showError }), [showError]);
|
|
1488
|
-
return /* @__PURE__ */
|
|
1428
|
+
return /* @__PURE__ */ jsxs15(ErrorToasterContext.Provider, { value, children: [
|
|
1489
1429
|
children,
|
|
1490
1430
|
/* @__PURE__ */ jsx41(ToastStack2, { children: toast != null && /* @__PURE__ */ jsx41(Toast2, { title: toast.title, description: toast.description, open, onOpenChange: setOpen }) })
|
|
1491
1431
|
] });
|
|
@@ -1611,7 +1551,7 @@ function ReasoningContainer({ group }) {
|
|
|
1611
1551
|
const reasoningTimeText = null;
|
|
1612
1552
|
const previewText = content.replace(/\s+/g, " ").trim();
|
|
1613
1553
|
const isShortText = !streaming && content.length > 0 && !isMultiLine;
|
|
1614
|
-
const headingText =
|
|
1554
|
+
const headingText = "Reasoning";
|
|
1615
1555
|
return /* @__PURE__ */ jsx44(
|
|
1616
1556
|
ReasoningCard2,
|
|
1617
1557
|
{
|
|
@@ -2485,7 +2425,7 @@ function ComposerAttachmentPickerContainer() {
|
|
|
2485
2425
|
}
|
|
2486
2426
|
|
|
2487
2427
|
// src/containers/UserEditComposerContainer.tsx
|
|
2488
|
-
import { jsx as jsx53, jsxs as
|
|
2428
|
+
import { jsx as jsx53, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2489
2429
|
function ReadOnlyMessageAttachments() {
|
|
2490
2430
|
const hasAttachments = useAuiState9(
|
|
2491
2431
|
(s) => (s.message.attachments?.length ?? 0) > 0
|
|
@@ -2519,7 +2459,7 @@ function UserEditComposerContainer() {
|
|
|
2519
2459
|
className: "max-h-32 min-h-10 w-full resize-none border-none bg-transparent p-0 text-base leading-[1.34] outline-none focus:shadow-none"
|
|
2520
2460
|
}
|
|
2521
2461
|
) }),
|
|
2522
|
-
footer: /* @__PURE__ */
|
|
2462
|
+
footer: /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-end gap-2", children: [
|
|
2523
2463
|
/* @__PURE__ */ jsx53(
|
|
2524
2464
|
Button4.Secondary,
|
|
2525
2465
|
{
|
|
@@ -2567,7 +2507,7 @@ function UserMessageContainer() {
|
|
|
2567
2507
|
}
|
|
2568
2508
|
|
|
2569
2509
|
// src/containers/ThreadContainer.tsx
|
|
2570
|
-
import { Fragment as Fragment3, jsx as jsx55, jsxs as
|
|
2510
|
+
import { Fragment as Fragment3, jsx as jsx55, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2571
2511
|
var isNewChatView = (s) => s.thread.messages.length === 0 && (!s.thread.isLoading || s.threads.isLoading);
|
|
2572
2512
|
function ThreadMessage({ isEditing }) {
|
|
2573
2513
|
const role = useAuiState11((s) => s.message.role);
|
|
@@ -2592,10 +2532,10 @@ function ThreadContainer({ composer }) {
|
|
|
2592
2532
|
const ScrollToBottomButton2 = useSlot("ScrollToBottomButton");
|
|
2593
2533
|
const isEmpty = useAuiState11(isNewChatView);
|
|
2594
2534
|
const isLoading = useAuiState11((s) => s.thread.isLoading);
|
|
2595
|
-
return /* @__PURE__ */ jsx55(ComposerBusyProvider, { children: /* @__PURE__ */ jsx55(ThreadPrimitive.Root, { asChild: true, children: /* @__PURE__ */
|
|
2596
|
-
/* @__PURE__ */ jsx55(ThreadPrimitive.Viewport, { asChild: true, turnAnchor: "top", autoScroll: true, children: /* @__PURE__ */
|
|
2535
|
+
return /* @__PURE__ */ jsx55(ComposerBusyProvider, { children: /* @__PURE__ */ jsx55(ThreadPrimitive.Root, { asChild: true, children: /* @__PURE__ */ jsxs17(ThreadRootShell2, { children: [
|
|
2536
|
+
/* @__PURE__ */ jsx55(ThreadPrimitive.Viewport, { asChild: true, turnAnchor: "top", autoScroll: true, children: /* @__PURE__ */ jsxs17(ThreadViewportShell2, { isEmpty, children: [
|
|
2597
2537
|
isEmpty && /* @__PURE__ */ jsx55(WelcomeScreen2, {}),
|
|
2598
|
-
isLoading ? /* @__PURE__ */ jsx55(MessageListSkeleton2, {}) : /* @__PURE__ */
|
|
2538
|
+
isLoading ? /* @__PURE__ */ jsx55(MessageListSkeleton2, {}) : /* @__PURE__ */ jsxs17(Fragment3, { children: [
|
|
2599
2539
|
/* @__PURE__ */ jsx55(HistoryLoaderContainer, {}),
|
|
2600
2540
|
/* @__PURE__ */ jsx55(MessageGroup2, { children: /* @__PURE__ */ jsx55(ThreadPrimitive.Messages, { children: ({ message }) => /* @__PURE__ */ jsx55(
|
|
2601
2541
|
ThreadMessage,
|
|
@@ -2605,7 +2545,7 @@ function ThreadContainer({ composer }) {
|
|
|
2605
2545
|
) }) })
|
|
2606
2546
|
] })
|
|
2607
2547
|
] }) }),
|
|
2608
|
-
!isLoading && /* @__PURE__ */
|
|
2548
|
+
!isLoading && /* @__PURE__ */ jsxs17(ThreadComposerAreaShell2, { isEmpty, children: [
|
|
2609
2549
|
!isEmpty && /* @__PURE__ */ jsx55(ThreadPrimitive.ScrollToBottom, { asChild: true, children: /* @__PURE__ */ jsx55(ScrollToBottomButton2, {}) }),
|
|
2610
2550
|
composer
|
|
2611
2551
|
] })
|
|
@@ -2794,7 +2734,7 @@ function McpAuthContainer() {
|
|
|
2794
2734
|
}
|
|
2795
2735
|
|
|
2796
2736
|
// src/containers/ComposerContainer.tsx
|
|
2797
|
-
import { Fragment as Fragment4, jsx as jsx59, jsxs as
|
|
2737
|
+
import { Fragment as Fragment4, jsx as jsx59, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2798
2738
|
function ComposerContainer({
|
|
2799
2739
|
placeholder = "Ask anything... (Shift+Enter for new line)"
|
|
2800
2740
|
}) {
|
|
@@ -2811,7 +2751,7 @@ function ComposerContainer({
|
|
|
2811
2751
|
if (pauseView.kind === "ask-user") {
|
|
2812
2752
|
return /* @__PURE__ */ jsx59(AskUserContainer, {});
|
|
2813
2753
|
}
|
|
2814
|
-
return /* @__PURE__ */
|
|
2754
|
+
return /* @__PURE__ */ jsxs18(Fragment4, { children: [
|
|
2815
2755
|
/* @__PURE__ */ jsx59(
|
|
2816
2756
|
"input",
|
|
2817
2757
|
{
|
|
@@ -2853,7 +2793,7 @@ function ComposerContainer({
|
|
|
2853
2793
|
// src/containers/ThreadListContainer.tsx
|
|
2854
2794
|
import { useAui as useAui3, useAuiState as useAuiState15 } from "@assistant-ui/react";
|
|
2855
2795
|
import { useEffect as useEffect8, useRef as useRef6 } from "react";
|
|
2856
|
-
import { Fragment as Fragment5, jsx as jsx60, jsxs as
|
|
2796
|
+
import { Fragment as Fragment5, jsx as jsx60, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2857
2797
|
function ThreadListContainer() {
|
|
2858
2798
|
const ThreadListShell2 = useSlot("ThreadListShell");
|
|
2859
2799
|
const ThreadListNewButton2 = useSlot("ThreadListNewButton");
|
|
@@ -2880,7 +2820,7 @@ function ThreadListContainer() {
|
|
|
2880
2820
|
return () => observer.disconnect();
|
|
2881
2821
|
}, [aui, hasMore, isLoadingMore]);
|
|
2882
2822
|
const itemsById = new Map(threadItems.map((item) => [item.id, item]));
|
|
2883
|
-
return /* @__PURE__ */
|
|
2823
|
+
return /* @__PURE__ */ jsxs19(ThreadListShell2, { header: /* @__PURE__ */ jsx60(ThreadListNewButton2, { onClick: () => aui.threads().switchToNewThread() }), children: [
|
|
2884
2824
|
isLoading ? /* @__PURE__ */ jsx60(ThreadListRowSkeleton2, {}) : threadIds.length === 0 ? /* @__PURE__ */ jsx60(ThreadListEmptyState2, {}) : threadIds.map((id) => {
|
|
2885
2825
|
const item = itemsById.get(id);
|
|
2886
2826
|
return /* @__PURE__ */ jsx60(
|
|
@@ -2895,7 +2835,7 @@ function ThreadListContainer() {
|
|
|
2895
2835
|
id
|
|
2896
2836
|
);
|
|
2897
2837
|
}),
|
|
2898
|
-
!isLoading && hasMore && /* @__PURE__ */
|
|
2838
|
+
!isLoading && hasMore && /* @__PURE__ */ jsxs19(Fragment5, { children: [
|
|
2899
2839
|
isLoadingMore && /* @__PURE__ */ jsx60(ThreadListRowSkeleton2, { count: 1 }),
|
|
2900
2840
|
/* @__PURE__ */ jsx60("div", { ref: sentinelRef, "aria-hidden": true })
|
|
2901
2841
|
] })
|
|
@@ -2908,9 +2848,9 @@ function Thread() {
|
|
|
2908
2848
|
return /* @__PURE__ */ jsx61(ThreadContainer, { composer: /* @__PURE__ */ jsx61(ComposerContainer, {}) });
|
|
2909
2849
|
}
|
|
2910
2850
|
export {
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2851
|
+
Accordion3 as Accordion,
|
|
2852
|
+
AccordionDetails3 as AccordionDetails,
|
|
2853
|
+
AccordionSummary3 as AccordionSummary,
|
|
2914
2854
|
AgentStepsCard,
|
|
2915
2855
|
AgentStepsContainer,
|
|
2916
2856
|
AskUserContainer,
|