@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/dist/index.js CHANGED
@@ -84,9 +84,9 @@ import {
84
84
 
85
85
  // src/theme/defaultSlots.ts
86
86
  import {
87
- Accordion as Accordion3,
88
- AccordionDetails as AccordionDetails3,
89
- AccordionSummary as AccordionSummary3
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 jsx10 } from "react/jsx-runtime";
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__ */ jsx10(
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__ */ jsx10(AvatarImagePrimitive, { "data-slot": "avatar-image", className: cn(className), ...props });
166
+ return /* @__PURE__ */ jsx11(AvatarImagePrimitive, { "data-slot": "avatar-image", className: cn(className), ...props });
158
167
  }
159
168
  function AvatarFallback({ className, ...props }) {
160
- return /* @__PURE__ */ jsx10(AvatarFallbackPrimitive, { "data-slot": "avatar-fallback", className: cn(className), ...props });
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 jsx11, jsxs as jsxs3 } from "react/jsx-runtime";
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__ */ jsx11(UserMessage, { text, editAction })
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 jsx12 } from "react/jsx-runtime";
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__ */ jsx12(
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 jsx13 } from "react/jsx-runtime";
213
+ import { jsx as jsx14 } from "react/jsx-runtime";
205
214
  function ToolCallCard(props) {
206
215
  const { mcpServerName, ...tfyProps } = props;
207
- return /* @__PURE__ */ jsx13(
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 jsx14 } from "react/jsx-runtime";
229
+ import { jsx as jsx15 } from "react/jsx-runtime";
221
230
  function ToolCallContentBlock(props) {
222
- return /* @__PURE__ */ jsx14(TfyToolCallContentBlock, { ...props });
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 jsx15 } from "react/jsx-runtime";
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__ */ jsx15(
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__ */ jsx15(Markdown2, { content }),
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 jsx16 } from "react/jsx-runtime";
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__ */ jsx16(
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__ */ jsx16(
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 jsx17 } from "react/jsx-runtime";
324
+ import { jsx as jsx18 } from "react/jsx-runtime";
316
325
  function ToolApprovalBar({ className, ...props }) {
317
- return /* @__PURE__ */ jsx17(
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 jsx18, jsxs as jsxs4 } from "react/jsx-runtime";
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__ */ jsx18(
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__ */ jsx18(LoaderIcon, { className: "size-3 shrink-0 animate-spin [animation-duration:0.6s]" }),
363
- /* @__PURE__ */ jsx18("span", { className: "text-xs font-medium", children: label }),
364
- /* @__PURE__ */ jsx18(
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__ */ jsx18(AccordionDetails, { sx: { padding: 0 }, children: /* @__PURE__ */ jsx18("div", { className: "mt-1 flex flex-col gap-2 text-foreground", children }) })
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 jsxs6 } from "react/jsx-runtime";
393
+ import { jsx as jsx20, jsxs as jsxs5 } from "react/jsx-runtime";
454
394
  function MessageListSkeleton({ className }) {
455
- return /* @__PURE__ */ jsxs6(
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__ */ jsxs6("div", { className: "flex flex-col gap-2 px-2", children: [
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 jsxs7 } from "react/jsx-runtime";
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__ */ jsxs7(
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__ */ jsxs7("div", { className: "flex items-center justify-between px-1", children: [
523
- /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2", children: [
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__ */ jsxs7("div", { className: "flex items-center gap-2", children: [
535
- modelLabel && /* @__PURE__ */ jsxs7("span", { className: "bg-muted text-muted-foreground flex items-center gap-1 rounded-full px-2 py-0.5 text-xs", children: [
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 jsxs8 } from "react/jsx-runtime";
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__ */ jsxs8(Fragment, { children: [
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 jsxs9 } from "react/jsx-runtime";
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__ */ jsxs9(
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__ */ jsxs9(Avatar2, { className: "size-7 rounded-none", children: [
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 jsxs10 } from "react/jsx-runtime";
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__ */ jsxs10(Fragment2, { children: [
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__ */ jsxs10("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: [
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 IconProvider2 from "tfy-web-components/components/atoms/IconProvider";
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 jsxs11 } from "react/jsx-runtime";
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__ */ jsxs11(
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__ */ jsxs11(
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__ */ jsxs11(DropdownMenu.Item, { onClick: onArchive, children: [
794
- /* @__PURE__ */ jsx27(IconProvider2, { icon: "box-archive", size: 0.75 }),
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__ */ jsxs11(DropdownMenu.Item, { onClick: onDelete, className: "text-destructive hover:bg-destructive/10", children: [
798
- /* @__PURE__ */ jsx27(IconProvider2, { icon: "trash", size: 0.75 }),
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 jsxs12 } from "react/jsx-runtime";
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__ */ jsxs12("div", { className: cn("font-sans-flex flex min-h-0 flex-1 flex-col gap-1 overflow-hidden p-3", className), children: [
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 jsxs13 } from "react/jsx-runtime";
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__ */ jsxs13(
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 jsxs14 } from "react/jsx-runtime";
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__ */ jsxs14(
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 jsxs15 } from "react/jsx-runtime";
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__ */ jsxs15(
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__ */ jsxs15("div", { className: "grid min-h-0 min-w-0 flex-1 gap-1 overflow-y-auto pe-6", children: [
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__ */ jsxs15(
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: Accordion3,
1194
- AccordionSummary: AccordionSummary3,
1195
- AccordionDetails: AccordionDetails3,
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 Accordion4,
1348
- AccordionSummary as AccordionSummary4,
1349
- AccordionDetails as AccordionDetails4
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 jsxs16 } from "react/jsx-runtime";
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__ */ jsxs16(ErrorToasterContext.Provider, { value, children: [
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 = streaming && !content ? expanded ? "Reasoning" : "Show Reasoning" : reasoningTimeText ?? (expanded ? "Hide Reasoning" : "Show Reasoning");
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 jsxs17 } from "react/jsx-runtime";
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__ */ jsxs17("div", { className: "flex items-center justify-end gap-2", children: [
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 jsxs18 } from "react/jsx-runtime";
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__ */ jsxs18(ThreadRootShell2, { children: [
2596
- /* @__PURE__ */ jsx55(ThreadPrimitive.Viewport, { asChild: true, turnAnchor: "top", autoScroll: true, children: /* @__PURE__ */ jsxs18(ThreadViewportShell2, { isEmpty, children: [
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__ */ jsxs18(Fragment3, { children: [
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__ */ jsxs18(ThreadComposerAreaShell2, { isEmpty, children: [
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 jsxs19 } from "react/jsx-runtime";
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__ */ jsxs19(Fragment4, { children: [
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 jsxs20 } from "react/jsx-runtime";
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__ */ jsxs20(ThreadListShell2, { header: /* @__PURE__ */ jsx60(ThreadListNewButton2, { onClick: () => aui.threads().switchToNewThread() }), children: [
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__ */ jsxs20(Fragment5, { children: [
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
- Accordion4 as Accordion,
2912
- AccordionDetails4 as AccordionDetails,
2913
- AccordionSummary4 as AccordionSummary,
2851
+ Accordion3 as Accordion,
2852
+ AccordionDetails3 as AccordionDetails,
2853
+ AccordionSummary3 as AccordionSummary,
2914
2854
  AgentStepsCard,
2915
2855
  AgentStepsContainer,
2916
2856
  AskUserContainer,